fix(ax): continue AX naming cleanup
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
da25b6f79f
commit
5e5e19d6de
9 changed files with 59 additions and 59 deletions
|
|
@ -13,7 +13,7 @@ import (
|
|||
|
||||
// registerCommands adds agentic CLI commands to Core's command tree.
|
||||
func (s *PrepSubsystem) registerCommands(ctx context.Context) {
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
c := s.Core()
|
||||
c.Command("run/task", core.Command{Description: "Run a single task end-to-end", Action: s.cmdRunTask})
|
||||
c.Command("run/orchestrator", core.Command{Description: "Run the queue orchestrator (standalone, no MCP)", Action: s.cmdOrchestrator})
|
||||
|
|
@ -28,8 +28,8 @@ func (s *PrepSubsystem) registerCommands(ctx context.Context) {
|
|||
// ctx := s.commandContext()
|
||||
// _ = ctx.Err()
|
||||
func (s *PrepSubsystem) commandContext() context.Context {
|
||||
if s.commandCtx != nil {
|
||||
return s.commandCtx
|
||||
if s.startupContext != nil {
|
||||
return s.startupContext
|
||||
}
|
||||
return context.Background()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ func (s *PrepSubsystem) cmdIssueCreate(options core.Options) core.Result {
|
|||
return core.Result{Value: core.E("agentic.cmdIssueCreate", "repo and title are required", nil), OK: false}
|
||||
}
|
||||
|
||||
createOpts := &forge_types.CreateIssueOption{Title: title, Body: body, Ref: ref}
|
||||
createOptions := &forge_types.CreateIssueOption{Title: title, Body: body, Ref: ref}
|
||||
|
||||
if milestone != "" {
|
||||
var milestones []forge_types.Milestone
|
||||
|
|
@ -184,14 +184,14 @@ func (s *PrepSubsystem) cmdIssueCreate(options core.Options) core.Result {
|
|||
if err == nil {
|
||||
for _, m := range milestones {
|
||||
if m.Title == milestone {
|
||||
createOpts.Milestone = m.ID
|
||||
createOptions.Milestone = m.ID
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if assignee != "" {
|
||||
createOpts.Assignees = []string{assignee}
|
||||
createOptions.Assignees = []string{assignee}
|
||||
}
|
||||
if labels != "" {
|
||||
labelNames := core.Split(labels, ",")
|
||||
|
|
@ -201,7 +201,7 @@ func (s *PrepSubsystem) cmdIssueCreate(options core.Options) core.Result {
|
|||
name = core.Trim(name)
|
||||
for _, l := range allLabels {
|
||||
if l.Name == name {
|
||||
createOpts.Labels = append(createOpts.Labels, l.ID)
|
||||
createOptions.Labels = append(createOptions.Labels, l.ID)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
@ -209,7 +209,7 @@ func (s *PrepSubsystem) cmdIssueCreate(options core.Options) core.Result {
|
|||
}
|
||||
}
|
||||
|
||||
issue, err := s.forge.Issues.Create(ctx, forge.Params{"owner": org, "repo": repo}, createOpts)
|
||||
issue, err := s.forge.Issues.Create(ctx, forge.Params{"owner": org, "repo": repo}, createOptions)
|
||||
if err != nil {
|
||||
core.Print(nil, "error: %v", err)
|
||||
return core.Result{Value: err, OK: false}
|
||||
|
|
|
|||
|
|
@ -660,7 +660,7 @@ func TestCommands_CmdRunTask_Bad_MissingArgs(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdRunTask(core.NewOptions())
|
||||
assert.False(t, r.OK)
|
||||
}
|
||||
|
|
@ -669,7 +669,7 @@ func TestCommands_CmdRunTask_Bad_MissingTask(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdRunTask(core.NewOptions(core.Option{Key: "repo", Value: "go-io"}))
|
||||
assert.False(t, r.OK)
|
||||
}
|
||||
|
|
@ -678,7 +678,7 @@ func TestCommands_CmdOrchestrator_Good_CancelledCtx(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel() // cancel immediately
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdOrchestrator(core.NewOptions())
|
||||
assert.True(t, r.OK)
|
||||
}
|
||||
|
|
@ -742,7 +742,7 @@ func TestCommands_CmdOrchestrator_Bad_DoneContext(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(-1*time.Second))
|
||||
defer cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdOrchestrator(core.NewOptions())
|
||||
assert.True(t, r.OK) // returns OK after ctx.Done()
|
||||
}
|
||||
|
|
@ -751,7 +751,7 @@ func TestCommands_CmdOrchestrator_Ugly_CancelledImmediately(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdOrchestrator(core.NewOptions())
|
||||
assert.True(t, r.OK) // exits immediately when context is already cancelled
|
||||
}
|
||||
|
|
@ -795,7 +795,7 @@ func TestCommands_CmdRunTask_Good_DefaultsApplied(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
// Provide repo + task but omit agent + org — tests that defaults (codex, core) are applied
|
||||
r := s.cmdRunTask(core.NewOptions(
|
||||
core.Option{Key: "repo", Value: "go-io"},
|
||||
|
|
@ -809,7 +809,7 @@ func TestCommands_CmdRunTask_Ugly_MixedIssueString(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdRunTask(core.NewOptions(
|
||||
core.Option{Key: "repo", Value: "go-io"},
|
||||
core.Option{Key: "task", Value: "fix it"},
|
||||
|
|
@ -839,7 +839,7 @@ func TestCommands_CommandContext_Ugly_CancelledStartupContext(t *testing.T) {
|
|||
s, _ := testPrepWithCore(t, nil)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel() // pre-cancelled
|
||||
s.commandCtx = ctx
|
||||
s.startupContext = ctx
|
||||
r := s.cmdOrchestrator(core.NewOptions())
|
||||
assert.True(t, r.OK)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@ func (s *PrepSubsystem) DispatchSync(ctx context.Context, input DispatchSyncInpu
|
|||
Issue: input.Issue,
|
||||
}
|
||||
|
||||
prepCtx, cancel := context.WithTimeout(ctx, 5*time.Minute)
|
||||
prepContext, cancel := context.WithTimeout(ctx, 5*time.Minute)
|
||||
defer cancel()
|
||||
|
||||
_, prepOut, err := s.prepWorkspace(prepCtx, nil, prepInput)
|
||||
_, prepOut, err := s.prepWorkspace(prepContext, nil, prepInput)
|
||||
if err != nil {
|
||||
return DispatchSyncResult{Err: core.E("agentic.DispatchSync", "prep workspace failed", err)}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,20 +29,20 @@ type AgentOptions struct{}
|
|||
// core.New(core.WithService(agentic.Register))
|
||||
type PrepSubsystem struct {
|
||||
*core.ServiceRuntime[AgentOptions]
|
||||
forge *forge.Forge
|
||||
forgeURL string
|
||||
forgeToken string
|
||||
brainURL string
|
||||
brainKey string
|
||||
codePath string
|
||||
commandCtx context.Context
|
||||
dispatchMu sync.Mutex // serialises concurrency check + spawn
|
||||
drainMu sync.Mutex
|
||||
pokeCh chan struct{}
|
||||
frozen bool
|
||||
backoff map[string]time.Time // pool → paused until
|
||||
failCount map[string]int // pool → consecutive fast failures
|
||||
workspaces *core.Registry[*WorkspaceStatus] // in-memory workspace state
|
||||
forge *forge.Forge
|
||||
forgeURL string
|
||||
forgeToken string
|
||||
brainURL string
|
||||
brainKey string
|
||||
codePath string
|
||||
startupContext context.Context
|
||||
dispatchMu sync.Mutex // serialises concurrency check + spawn
|
||||
drainMu sync.Mutex
|
||||
pokeCh chan struct{}
|
||||
frozen bool
|
||||
backoff map[string]time.Time // pool → paused until
|
||||
failCount map[string]int // pool → consecutive fast failures
|
||||
workspaces *core.Registry[*WorkspaceStatus] // in-memory workspace state
|
||||
}
|
||||
|
||||
var _ coremcp.Subsystem = (*PrepSubsystem)(nil)
|
||||
|
|
@ -822,8 +822,8 @@ func (s *PrepSubsystem) pullWikiContent(ctx context.Context, org, repo string) s
|
|||
if name == "" {
|
||||
name = meta.Title
|
||||
}
|
||||
page, pErr := s.forge.Wiki.GetPage(ctx, org, repo, name)
|
||||
if pErr != nil || page.ContentBase64 == "" {
|
||||
page, pageErr := s.forge.Wiki.GetPage(ctx, org, repo, name)
|
||||
if pageErr != nil || page.ContentBase64 == "" {
|
||||
continue
|
||||
}
|
||||
content, _ := base64.StdEncoding.DecodeString(page.ContentBase64)
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ func (s *PrepSubsystem) dispatchRemote(ctx context.Context, _ *mcp.CallToolReque
|
|||
callParams["variables"] = input.Variables
|
||||
}
|
||||
|
||||
rpcReq := map[string]any{
|
||||
rpcRequest := map[string]any{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/call",
|
||||
|
|
@ -91,7 +91,7 @@ func (s *PrepSubsystem) dispatchRemote(ctx context.Context, _ *mcp.CallToolReque
|
|||
"arguments": callParams,
|
||||
},
|
||||
}
|
||||
body := []byte(core.JSONMarshalString(rpcReq))
|
||||
body := []byte(core.JSONMarshalString(rpcRequest))
|
||||
|
||||
url := core.Sprintf("http://%s/mcp", addr)
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ func (s *PrepSubsystem) dispatchRemote(ctx context.Context, _ *mcp.CallToolReque
|
|||
Agent: input.Agent,
|
||||
}
|
||||
|
||||
var rpcResp struct {
|
||||
var rpcResponse struct {
|
||||
Result struct {
|
||||
Content []struct {
|
||||
Text string `json:"text"`
|
||||
|
|
@ -154,13 +154,13 @@ func (s *PrepSubsystem) dispatchRemote(ctx context.Context, _ *mcp.CallToolReque
|
|||
Message string `json:"message"`
|
||||
} `json:"error"`
|
||||
}
|
||||
if r := core.JSONUnmarshal(result, &rpcResp); r.OK {
|
||||
if rpcResp.Error != nil {
|
||||
if r := core.JSONUnmarshal(result, &rpcResponse); r.OK {
|
||||
if rpcResponse.Error != nil {
|
||||
output.Success = false
|
||||
output.Error = rpcResp.Error.Message
|
||||
} else if len(rpcResp.Result.Content) > 0 {
|
||||
output.Error = rpcResponse.Error.Message
|
||||
} else if len(rpcResponse.Result.Content) > 0 {
|
||||
var dispatchOut DispatchOutput
|
||||
if r := core.JSONUnmarshalString(rpcResp.Result.Content[0].Text, &dispatchOut); r.OK {
|
||||
if r := core.JSONUnmarshalString(rpcResponse.Result.Content[0].Text, &dispatchOut); r.OK {
|
||||
output.Success = dispatchOut.Success
|
||||
output.WorkspaceDir = dispatchOut.WorkspaceDir
|
||||
output.PID = dispatchOut.PID
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ func (s *PrepSubsystem) statusRemote(ctx context.Context, _ *mcp.CallToolRequest
|
|||
}, nil
|
||||
}
|
||||
|
||||
rpcReq := map[string]any{
|
||||
rpcRequest := map[string]any{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 2,
|
||||
"method": "tools/call",
|
||||
|
|
@ -72,7 +72,7 @@ func (s *PrepSubsystem) statusRemote(ctx context.Context, _ *mcp.CallToolRequest
|
|||
"arguments": map[string]any{},
|
||||
},
|
||||
}
|
||||
body := []byte(core.JSONMarshalString(rpcReq))
|
||||
body := []byte(core.JSONMarshalString(rpcRequest))
|
||||
|
||||
callResult := mcpCallResult(ctx, url, token, sessionID, body)
|
||||
if !callResult.OK {
|
||||
|
|
@ -99,7 +99,7 @@ func (s *PrepSubsystem) statusRemote(ctx context.Context, _ *mcp.CallToolRequest
|
|||
Host: input.Host,
|
||||
}
|
||||
|
||||
var rpcResp struct {
|
||||
var rpcResponse struct {
|
||||
Result struct {
|
||||
Content []struct {
|
||||
Text string `json:"text"`
|
||||
|
|
@ -110,19 +110,19 @@ func (s *PrepSubsystem) statusRemote(ctx context.Context, _ *mcp.CallToolRequest
|
|||
Message string `json:"message"`
|
||||
} `json:"error"`
|
||||
}
|
||||
if r := core.JSONUnmarshal(result, &rpcResp); !r.OK {
|
||||
if r := core.JSONUnmarshal(result, &rpcResponse); !r.OK {
|
||||
output.Success = false
|
||||
output.Error = "failed to parse response"
|
||||
return nil, output, nil
|
||||
}
|
||||
if rpcResp.Error != nil {
|
||||
if rpcResponse.Error != nil {
|
||||
output.Success = false
|
||||
output.Error = rpcResp.Error.Message
|
||||
output.Error = rpcResponse.Error.Message
|
||||
return nil, output, nil
|
||||
}
|
||||
if len(rpcResp.Result.Content) > 0 {
|
||||
if len(rpcResponse.Result.Content) > 0 {
|
||||
var statusOut StatusOutput
|
||||
if r := core.JSONUnmarshalString(rpcResp.Result.Content[0].Text, &statusOut); r.OK {
|
||||
if r := core.JSONUnmarshalString(rpcResponse.Result.Content[0].Text, &statusOut); r.OK {
|
||||
output.Stats = statusOut
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ func mcpInitialize(ctx context.Context, url, token string) (string, error) {
|
|||
}
|
||||
|
||||
func mcpInitializeResult(ctx context.Context, url, token string) core.Result {
|
||||
initReq := map[string]any{
|
||||
initializeRequest := map[string]any{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "initialize",
|
||||
|
|
@ -245,7 +245,7 @@ func mcpInitializeResult(ctx context.Context, url, token string) core.Result {
|
|||
},
|
||||
}
|
||||
|
||||
body := core.JSONMarshalString(initReq)
|
||||
body := core.JSONMarshalString(initializeRequest)
|
||||
req, err := http.NewRequestWithContext(ctx, "POST", url, core.NewReader(body))
|
||||
if err != nil {
|
||||
return core.Result{Value: core.E("mcpInitialize", "create request", err), OK: false}
|
||||
|
|
@ -268,18 +268,18 @@ func mcpInitializeResult(ctx context.Context, url, token string) core.Result {
|
|||
drainSSE(resp)
|
||||
|
||||
// Send initialised notification
|
||||
notif := core.JSONMarshalString(map[string]any{
|
||||
notification := core.JSONMarshalString(map[string]any{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "notifications/initialized",
|
||||
})
|
||||
notifReq, err := http.NewRequestWithContext(ctx, "POST", url, core.NewReader(notif))
|
||||
notificationRequest, err := http.NewRequestWithContext(ctx, "POST", url, core.NewReader(notification))
|
||||
if err != nil {
|
||||
return core.Result{Value: core.E("mcpInitialize", "create notification request", err), OK: false}
|
||||
}
|
||||
mcpHeaders(notifReq, token, sessionID)
|
||||
notifResp, err := defaultClient.Do(notifReq)
|
||||
mcpHeaders(notificationRequest, token, sessionID)
|
||||
notificationResponse, err := defaultClient.Do(notificationRequest)
|
||||
if err == nil {
|
||||
notifResp.Body.Close()
|
||||
notificationResponse.Body.Close()
|
||||
}
|
||||
|
||||
return core.Result{Value: sessionID, OK: true}
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ func (m *Subsystem) RegisterTools(server *mcp.Server) {
|
|||
|
||||
// service.Start(ctx)
|
||||
func (m *Subsystem) Start(ctx context.Context) {
|
||||
loopCtx, cancel := context.WithCancel(ctx)
|
||||
loopContext, cancel := context.WithCancel(ctx)
|
||||
m.cancel = cancel
|
||||
|
||||
core.Info("monitor: started (interval=%s)", m.interval)
|
||||
|
|
@ -168,7 +168,7 @@ func (m *Subsystem) Start(ctx context.Context) {
|
|||
m.wg.Add(1)
|
||||
go func() {
|
||||
defer m.wg.Done()
|
||||
m.loop(loopCtx)
|
||||
m.loop(loopContext)
|
||||
}()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue