feat(agentic): show workspace status details

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-01 13:11:48 +00:00
parent 31cc9032bc
commit 96cd2bc1b2
2 changed files with 39 additions and 1 deletions

View file

@ -316,7 +316,18 @@ func (s *PrepSubsystem) cmdStatus(_ core.Options) core.Result {
}
for _, sf := range statusFiles {
core.Print(nil, " %s", WorkspaceName(core.PathDir(sf)))
workspaceDir := core.PathDir(sf)
workspaceName := WorkspaceName(workspaceDir)
result := ReadStatusResult(workspaceDir)
workspaceStatus, ok := workspaceStatusValue(result)
if !ok {
continue
}
core.Print(nil, " %-8s %-8s %-10s %s", workspaceStatus.Status, workspaceStatus.Agent, workspaceStatus.Repo, workspaceName)
if workspaceStatus.Question != "" {
core.Print(nil, " question: %s", workspaceStatus.Question)
}
}
return core.Result{OK: true}
}

View file

@ -718,6 +718,9 @@ func TestCommands_CmdStatus_Good_DeepWorkspace(t *testing.T) {
assert.True(t, r.OK)
})
assert.Contains(t, output, "completed")
assert.Contains(t, output, "codex")
assert.Contains(t, output, "go-io")
assert.Contains(t, output, "core/go-io/task-5")
}
@ -738,9 +741,33 @@ func TestCommands_CmdStatus_Good_BranchWorkspace(t *testing.T) {
assert.True(t, r.OK)
})
assert.Contains(t, output, "completed")
assert.Contains(t, output, "core/go-io/feature/new-ui")
}
func TestCommands_CmdStatus_Good_BlockedQuestion(t *testing.T) {
s, _ := testPrepWithCore(t, nil)
ws := core.JoinPath(WorkspaceRoot(), "core", "go-io", "task-9")
fs.EnsureDir(ws)
fs.Write(core.JoinPath(ws, "status.json"), core.JSONMarshalString(WorkspaceStatus{
Status: "blocked",
Repo: "go-io",
Agent: "gemini",
Question: "Which API version?",
}))
output := captureStdout(t, func() {
r := s.cmdStatus(core.NewOptions())
assert.True(t, r.OK)
})
assert.Contains(t, output, "blocked")
assert.Contains(t, output, "gemini")
assert.Contains(t, output, "go-io")
assert.Contains(t, output, "Which API version?")
}
func TestCommands_CmdPrompt_Bad_MissingRepo(t *testing.T) {
s, _ := testPrepWithCore(t, nil)
r := s.cmdPrompt(core.NewOptions())