commandmate 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +425 -310
- package/.next/app-path-routes-manifest.json +35 -20
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +15 -15
- package/.next/react-loadable-manifest.json +11 -11
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +72 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +3 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -0
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -0
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/hooks/claude-done/route.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +37 -0
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -0
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +23 -0
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/operations/route.js +13 -0
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/reindex/route.js +23 -0
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +4 -0
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[taskId]/route.js +4 -0
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/templates/[id]/route.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -0
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -0
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/verification/runs/route.js +1 -0
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +18 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +6 -0
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +4 -0
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -0
- package/.next/server/app/skills/installed/page.js.nft.json +1 -0
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -0
- package/.next/server/app/skills/page.js +2 -2
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +4 -4
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +35 -20
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1117.js +1 -1
- package/.next/server/chunks/1185.js +1 -0
- package/.next/server/chunks/1239.js +1 -0
- package/.next/server/chunks/1503.js +2 -0
- package/.next/server/chunks/22.js +1 -1
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2366.js +1 -0
- package/.next/server/chunks/2710.js +2 -0
- package/.next/server/chunks/28.js +35 -0
- package/.next/server/chunks/3042.js +1 -2
- package/.next/server/chunks/3736.js +1 -1
- package/.next/server/chunks/4440.js +2 -0
- package/.next/server/chunks/4444.js +1 -1
- package/.next/server/chunks/4548.js +1 -0
- package/.next/server/chunks/4689.js +25 -0
- package/.next/server/chunks/5064.js +1 -1
- package/.next/server/chunks/5381.js +50 -10
- package/.next/server/chunks/5456.js +1 -1
- package/.next/server/chunks/5737.js +1 -0
- package/.next/server/chunks/5793.js +1 -0
- package/.next/server/chunks/5959.js +3 -3
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6274.js +13 -0
- package/.next/server/chunks/646.js +1 -1
- package/.next/server/chunks/8681.js +1 -1
- package/.next/server/chunks/8807.js +255 -51
- package/.next/server/chunks/8856.js +4 -0
- package/.next/server/chunks/9051.js +1 -0
- package/.next/server/chunks/9687.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2751-7fabd91275b14ca3.js +1 -0
- package/.next/static/chunks/{4459.03172449db395039.js → 4459.a94b52985a76509a.js} +1 -1
- package/.next/static/chunks/{4560-8ffb0bb19f2ba998.js → 4560-0917ae2e6a0e5400.js} +1 -1
- package/.next/static/chunks/{6488-93870a55f4a3e3cd.js → 6488-f4e447464c9e0e22.js} +1 -1
- package/.next/static/chunks/{7485.43871aedf3dbb980.js → 7485.442b21101fca7257.js} +1 -1
- package/.next/static/chunks/8562-6e2ab32452f4fa5b.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/more/{page-082d4ae496f9a36e.js → page-1619018cac999bbc.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +1 -0
- package/.next/static/chunks/app/review/{page-f431d630097c2e85.js → page-b559bfb11c46931b.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-20f07a99db64d2ca.js → page-3fa7e767d0ab3889.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +1 -0
- package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +1 -0
- package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-5ffc84094830babb.js +1 -0
- package/.next/static/chunks/{webpack-6b35d37d50302d27.js → webpack-180bebdee221b6f4.js} +1 -1
- package/.next/static/css/{5127edd9aa8f3b49.css → d3453a6876553d32.css} +1 -1
- package/.next/static/gR8Sh86RrTynJON8SWkWK/_buildManifest.js +1 -0
- package/.next/trace +12 -11
- package/.next/types/app/api/hooks/agent-event/route.ts +347 -0
- package/.next/types/app/api/metrics/vibe/route.ts +347 -0
- package/.next/types/app/api/skills/installations/route.ts +347 -0
- package/.next/types/app/api/skills/operations/route.ts +347 -0
- package/.next/types/app/api/skills/reindex/route.ts +347 -0
- package/.next/types/app/api/tasks/[taskId]/cancel/route.ts +347 -0
- package/.next/types/app/api/tasks/[taskId]/route.ts +347 -0
- package/.next/types/app/api/verification/runs/[runId]/route.ts +347 -0
- package/.next/types/app/api/verification/runs/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/tasks/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/runs/route.ts +347 -0
- package/.next/types/app/skills/installed/page.ts +84 -0
- package/.next/types/routes.d.ts +17 -2
- package/.next/types/validator.ts +135 -0
- package/dist/cli/commands/report.d.ts +1 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +54 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +86 -3
- package/dist/cli/commands/skill.d.ts +2 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +136 -2
- package/dist/cli/commands/task.d.ts +11 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +126 -0
- package/dist/cli/commands/verify.d.ts +19 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +229 -0
- package/dist/cli/commands/wait.d.ts +2 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +78 -13
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +92 -3
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -0
- package/dist/cli/types/api-responses.d.ts +210 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +88 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +30 -1
- package/dist/cli/utils/api-client.d.ts +8 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.d.ts +57 -0
- package/dist/cli/utils/verify-runner.d.ts.map +1 -0
- package/dist/cli/utils/verify-runner.js +174 -0
- package/dist/server/server.js +15 -0
- package/dist/server/src/config/auto-yes-config.js +22 -0
- package/dist/server/src/lib/auto-yes-poller.js +34 -2
- package/dist/server/src/lib/auto-yes-state.js +6 -19
- package/dist/server/src/lib/db/db.js +34 -1
- package/dist/server/src/lib/db/migrations/index.js +8 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v48-skill-operations-audit-index.js +117 -0
- package/dist/server/src/lib/db/migrations/v49-verification-runs.js +86 -0
- package/dist/server/src/lib/db/migrations/v50-tasks.js +68 -0
- package/dist/server/src/lib/db/migrations/v51-task-events.js +58 -0
- package/dist/server/src/lib/db/task-events-db.js +59 -0
- package/dist/server/src/lib/db/tasks-db.js +218 -0
- package/dist/server/src/lib/db/verification-db.js +272 -0
- package/dist/server/src/lib/polling/auto-yes-policy.js +117 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +144 -4
- package/dist/server/src/lib/polling/response-checker.js +8 -0
- package/dist/server/src/lib/session/agent-event-state.js +46 -0
- package/dist/server/src/lib/session/current-output-builder.js +4 -0
- package/dist/server/src/lib/session/status-mapping.js +146 -0
- package/dist/server/src/lib/skills/compatibility-matrix.js +256 -0
- package/dist/server/src/lib/skills/compatibility.js +132 -11
- package/dist/server/src/lib/skills/operation-audit.js +85 -15
- package/dist/server/src/lib/skills/operation-journal.js +14 -1
- package/dist/server/src/lib/tasks/contract-parser.js +385 -0
- package/dist/server/src/lib/tasks/task-state-machine.js +183 -0
- package/dist/server/src/lib/tasks/task-transition-service.js +106 -0
- package/dist/server/src/lib/verification/verification-reconciler.js +49 -0
- package/dist/server/src/types/sidebar.js +7 -20
- package/package.json +5 -2
- package/scripts/hooks/cmate-agent-event.sh +175 -0
- package/.next/server/chunks/1808.js +0 -1
- package/.next/server/chunks/2064.js +0 -2
- package/.next/server/chunks/5226.js +0 -28
- package/.next/server/chunks/5306.js +0 -2
- package/.next/server/chunks/593.js +0 -1
- package/.next/server/chunks/9192.js +0 -1
- package/.next/static/MqlW91_Se_kEW6mtm-1x0/_buildManifest.js +0 -1
- package/.next/static/chunks/3418-7e47651340d940b0.js +0 -1
- package/.next/static/chunks/9142-41b13a2f278529cc.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/skills/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/templates/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/repositories/page-3c4fb889da48ce24.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-8c40c9683f242207.js +0 -1
- package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-6da38f0a06dfd9db.js +0 -1
- /package/.next/static/{MqlW91_Se_kEW6mtm-1x0 → gR8Sh86RrTynJON8SWkWK}/_ssgManifest.js +0 -0
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* commandmate skill list [--json]
|
|
7
7
|
* commandmate skill info <skill-id> [--version <v>] [--json]
|
|
8
8
|
* commandmate skill plan <skill-id> --worktree <id> [--version <v>] [--json]
|
|
9
|
-
* commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>]
|
|
9
|
+
* commandmate skill install <skill-id> --worktree <id> --version <exact> [--dry-run] [--yes] [--ack-risk <id>@<version>] [--git current|dedicated] [--push] [--pr]
|
|
10
10
|
* commandmate skill uninstall <skill-id> --worktree <id> [--dry-run] [--yes] [--json]
|
|
11
11
|
* commandmate skill status <skill-id> --worktree <id> [--json]
|
|
12
|
+
* commandmate skill reindex [--json]
|
|
12
13
|
*
|
|
13
14
|
* The CLI never downloads, extracts, writes or deletes anything: it asks the
|
|
14
15
|
* server for a plan, shows it, and presents the token the server issued back to
|
|
@@ -137,6 +138,103 @@ async function showStatus(skillId, options) {
|
|
|
137
138
|
`Removable: ${plan.removable ? 'yes' : 'no'}`,
|
|
138
139
|
].join('\n'));
|
|
139
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Rebuild the installed-Skill index from the receipts on disk (Issue #1248).
|
|
143
|
+
*
|
|
144
|
+
* Like every other subcommand this is a thin client: the server decides which
|
|
145
|
+
* worktrees to visit and reads the receipts itself. The CLI supplies no path and
|
|
146
|
+
* reconstructs nothing, so there is no way for it to index something the API
|
|
147
|
+
* would have refused.
|
|
148
|
+
*/
|
|
149
|
+
async function reindexSkills(options) {
|
|
150
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
151
|
+
const response = await client.post('/api/skills/reindex');
|
|
152
|
+
const body = (0, api_client_1.assertResponseShape)(response, ['scannedWorktrees', 'indexed', 'removed', 'skipped'], 'POST /api/skills/reindex');
|
|
153
|
+
if (options.json) {
|
|
154
|
+
console.log(JSON.stringify(body, null, 2));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
console.log([
|
|
158
|
+
`Scanned ${body.scannedWorktrees} worktree(s).`,
|
|
159
|
+
`Indexed: ${body.indexed}`,
|
|
160
|
+
`Removed: ${body.removed}`,
|
|
161
|
+
`Skipped: ${body.skipped.length}`,
|
|
162
|
+
].join('\n'));
|
|
163
|
+
for (const skip of body.skipped) {
|
|
164
|
+
console.error(` skipped ${skip.worktreeId}/${skip.root}: ${skip.reason}`);
|
|
165
|
+
}
|
|
166
|
+
for (const worktreeId of body.unreadableWorktreeIds) {
|
|
167
|
+
console.error(` not scanned (worktree directory missing): ${worktreeId}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// =============================================================================
|
|
171
|
+
// Git workflow (Issue #1247)
|
|
172
|
+
// =============================================================================
|
|
173
|
+
/** How `--git` maps onto the API's mode. Absent means no Git side effects at all. */
|
|
174
|
+
const GIT_MODES = {
|
|
175
|
+
current: 'current_branch',
|
|
176
|
+
dedicated: 'dedicated_branch',
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Read the Git side effects off the flags, or null when none were asked for.
|
|
180
|
+
*
|
|
181
|
+
* `--git` has no default: committing to the user's branch is a consequence they
|
|
182
|
+
* must name, which is the same rule the API enforces (UX-09). `--pr` implies
|
|
183
|
+
* `--push` because a pull request for an unpushed branch cannot exist.
|
|
184
|
+
*/
|
|
185
|
+
function resolveGitChoice(options) {
|
|
186
|
+
if (!options.git) {
|
|
187
|
+
if (options.push || options.pr) {
|
|
188
|
+
(0, skill_guards_1.refuse)('--push / --pr require --git <current|dedicated>.', types_1.ExitCode.CONFIG_ERROR);
|
|
189
|
+
return 'invalid';
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
const mode = GIT_MODES[options.git];
|
|
194
|
+
if (!mode) {
|
|
195
|
+
(0, skill_guards_1.refuse)('--git must be `current` or `dedicated`.', types_1.ExitCode.CONFIG_ERROR);
|
|
196
|
+
return 'invalid';
|
|
197
|
+
}
|
|
198
|
+
const createPullRequest = options.pr === true;
|
|
199
|
+
return { mode, push: createPullRequest || options.push === true, createPullRequest };
|
|
200
|
+
}
|
|
201
|
+
function gitWorkflowPath(target) {
|
|
202
|
+
return `/api/worktrees/${encodeURIComponent(target.worktreeId)}/skills/${encodeURIComponent(target.skillId)}/git-workflow`;
|
|
203
|
+
}
|
|
204
|
+
/** Fix the branch before the plan exists, so the plan is never stale by construction. */
|
|
205
|
+
async function prepareGitWorkflow(client, target, version, choice) {
|
|
206
|
+
const response = await client.post(gitWorkflowPath(target), {
|
|
207
|
+
phase: 'prepare',
|
|
208
|
+
mode: choice.mode,
|
|
209
|
+
version,
|
|
210
|
+
push: choice.push,
|
|
211
|
+
});
|
|
212
|
+
return (0, api_client_1.assertResponseShape)(response, ['workflowToken', 'target'], 'POST .../skills/git-workflow (prepare)');
|
|
213
|
+
}
|
|
214
|
+
async function applyGitWorkflow(client, target, workflowToken, choice) {
|
|
215
|
+
const response = await client.post(gitWorkflowPath(target), {
|
|
216
|
+
phase: 'apply',
|
|
217
|
+
workflowToken,
|
|
218
|
+
push: choice.push,
|
|
219
|
+
createPullRequest: choice.createPullRequest,
|
|
220
|
+
});
|
|
221
|
+
return (0, api_client_1.assertResponseShape)(response, ['result'], 'POST .../skills/git-workflow (apply)');
|
|
222
|
+
}
|
|
223
|
+
function describeGitOutcome(result) {
|
|
224
|
+
const lines = [
|
|
225
|
+
result.committed
|
|
226
|
+
? `Committed ${result.changedPaths.length} file(s) to ${result.branch} (${result.commitSha.slice(0, 12)})`
|
|
227
|
+
: `Already committed on ${result.branch} (${result.commitSha.slice(0, 12)})`,
|
|
228
|
+
];
|
|
229
|
+
if (result.pushed)
|
|
230
|
+
lines.push(`Pushed ${result.branch}`);
|
|
231
|
+
if (result.pullRequestUrl) {
|
|
232
|
+
lines.push(result.pullRequestExisted
|
|
233
|
+
? `Pull request already open: ${result.pullRequestUrl}`
|
|
234
|
+
: `Draft pull request: ${result.pullRequestUrl}`);
|
|
235
|
+
}
|
|
236
|
+
return lines.join('\n');
|
|
237
|
+
}
|
|
140
238
|
// =============================================================================
|
|
141
239
|
// Write commands
|
|
142
240
|
// =============================================================================
|
|
@@ -148,8 +246,11 @@ async function installSkill(skillId, options) {
|
|
|
148
246
|
(0, skill_guards_1.refuse)('--version <exact> is required for install. Inspect published versions with: commandmate skill info ' + skillId, types_1.ExitCode.CONFIG_ERROR);
|
|
149
247
|
return;
|
|
150
248
|
}
|
|
249
|
+
const gitChoice = resolveGitChoice(options);
|
|
250
|
+
if (gitChoice === 'invalid')
|
|
251
|
+
return;
|
|
151
252
|
const client = new api_client_1.ApiClient({ token: options.token });
|
|
152
|
-
|
|
253
|
+
let plan = await requestInstallPlan(client, target, options);
|
|
153
254
|
// --dry-run stops here by construction: the plan is the whole output and no
|
|
154
255
|
// token is ever presented back to the server.
|
|
155
256
|
if (options.dryRun) {
|
|
@@ -179,6 +280,19 @@ async function installSkill(skillId, options) {
|
|
|
179
280
|
(0, skill_guards_1.refuse)('Install declined; nothing was written.', types_1.SkillExitCode.CONFIRMATION_REQUIRED);
|
|
180
281
|
return;
|
|
181
282
|
}
|
|
283
|
+
// The branch is fixed only once the user has agreed to the install, and the
|
|
284
|
+
// plan shown above is then discarded: a plan is bound to the branch and HEAD
|
|
285
|
+
// it was built against, so re-planning is what keeps the checkout from making
|
|
286
|
+
// SKILL_PLAN_STALE the guaranteed outcome (Issue #1247).
|
|
287
|
+
let workflowToken = null;
|
|
288
|
+
if (gitChoice !== null) {
|
|
289
|
+
const prepared = await prepareGitWorkflow(client, target, plan.skill.version, gitChoice);
|
|
290
|
+
workflowToken = prepared.workflowToken;
|
|
291
|
+
console.error(prepared.target.branchCreated
|
|
292
|
+
? `Created branch ${prepared.target.branch} from ${prepared.target.baseBranch ?? 'HEAD'}`
|
|
293
|
+
: `Committing to the current branch ${prepared.target.branch}`);
|
|
294
|
+
plan = await requestInstallPlan(client, target, { ...options, version: plan.skill.version });
|
|
295
|
+
}
|
|
182
296
|
const response = await client.post(`/api/worktrees/${encodeURIComponent(target.worktreeId)}/skills/${encodeURIComponent(target.skillId)}/install`, {
|
|
183
297
|
planToken: plan.token,
|
|
184
298
|
version: plan.skill.version,
|
|
@@ -197,6 +311,10 @@ async function installSkill(skillId, options) {
|
|
|
197
311
|
console.error(`Warning: the files landed but the operation did not finish cleanly (${body.operation.nextActionKey}). Reconciliation will converge it.`);
|
|
198
312
|
process.exit(types_1.SkillExitCode.COMMITTED_RECONCILING);
|
|
199
313
|
}
|
|
314
|
+
if (workflowToken !== null && gitChoice !== null) {
|
|
315
|
+
const git = await applyGitWorkflow(client, target, workflowToken, gitChoice);
|
|
316
|
+
console.log(describeGitOutcome(git.result));
|
|
317
|
+
}
|
|
200
318
|
}
|
|
201
319
|
async function uninstallSkill(skillId, options) {
|
|
202
320
|
const target = resolveTarget(skillId, options.worktree);
|
|
@@ -302,6 +420,9 @@ function createSkillCommand() {
|
|
|
302
420
|
.option('--dry-run', 'Build and print the plan, then stop without writing')
|
|
303
421
|
.option('-y, --yes', 'Skip the confirmation prompt (required for non-interactive use)')
|
|
304
422
|
.option('--ack-risk <skill-id@version>', 'Explicitly acknowledge a high-risk Skill. Required in addition to --yes.')
|
|
423
|
+
.option('--git <mode>', 'Commit the install: `current` (this branch) or `dedicated` (a new Skill branch)')
|
|
424
|
+
.option('--push', 'Push the commit to origin (requires --git)')
|
|
425
|
+
.option('--pr', 'Open a draft pull request for the pushed branch (implies --push)')
|
|
305
426
|
.option('--json', 'JSON output (the API response body, verbatim)')
|
|
306
427
|
.option('--prerelease', 'Allow a prerelease --version')
|
|
307
428
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
@@ -345,6 +466,19 @@ function createSkillCommand() {
|
|
|
345
466
|
(0, skill_guards_1.handleSkillCommandError)(error);
|
|
346
467
|
}
|
|
347
468
|
});
|
|
469
|
+
skill
|
|
470
|
+
.command('reindex')
|
|
471
|
+
.description('Rebuild the installed-Skill index from the receipts on disk')
|
|
472
|
+
.option('--json', 'JSON output')
|
|
473
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
474
|
+
.action(async (options) => {
|
|
475
|
+
try {
|
|
476
|
+
await reindexSkills(options);
|
|
477
|
+
}
|
|
478
|
+
catch (error) {
|
|
479
|
+
(0, skill_guards_1.handleSkillCommandError)(error);
|
|
480
|
+
}
|
|
481
|
+
});
|
|
348
482
|
skill.addHelpText('after', `
|
|
349
483
|
Confirmation contract:
|
|
350
484
|
- Writes (install, uninstall) always build a plan first and print it.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* task Command - Inspect execution contracts and their outcomes
|
|
3
|
+
* Issue #1545 (Phase 2-1)
|
|
4
|
+
*
|
|
5
|
+
* `task list` answers "what was this worktree asked to do", `task show` answers
|
|
6
|
+
* "what did the gates say about it" — the two halves of a contract that used to
|
|
7
|
+
* exist only inside the message text.
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function createTaskCommand(): Command;
|
|
11
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAmH3C"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* task Command - Inspect execution contracts and their outcomes
|
|
4
|
+
* Issue #1545 (Phase 2-1)
|
|
5
|
+
*
|
|
6
|
+
* `task list` answers "what was this worktree asked to do", `task show` answers
|
|
7
|
+
* "what did the gates say about it" — the two halves of a contract that used to
|
|
8
|
+
* exist only inside the message text.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createTaskCommand = createTaskCommand;
|
|
12
|
+
const commander_1 = require("commander");
|
|
13
|
+
const types_1 = require("../types");
|
|
14
|
+
const api_client_1 = require("../utils/api-client");
|
|
15
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
16
|
+
const MAX_LIST_LIMIT = 100;
|
|
17
|
+
/** crypto.randomUUID() output; mirrors TASK_ID_PATTERN in the API route. */
|
|
18
|
+
const TASK_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
19
|
+
function formatTimestamp(value) {
|
|
20
|
+
return value ?? '-';
|
|
21
|
+
}
|
|
22
|
+
function printTaskLine(task) {
|
|
23
|
+
const gates = task.contract.verify.gates;
|
|
24
|
+
console.log([
|
|
25
|
+
task.id,
|
|
26
|
+
task.status,
|
|
27
|
+
task.cliToolId + (task.instanceId ? `/${task.instanceId}` : ''),
|
|
28
|
+
gates ? gates.join('+') : 'all-gates',
|
|
29
|
+
task.title,
|
|
30
|
+
].join('\t'));
|
|
31
|
+
}
|
|
32
|
+
function createTaskCommand() {
|
|
33
|
+
const cmd = new commander_1.Command('task');
|
|
34
|
+
cmd.description('List and inspect execution contracts (tasks)');
|
|
35
|
+
// ---- task list ----
|
|
36
|
+
cmd
|
|
37
|
+
.command('list')
|
|
38
|
+
.description('List tasks for a worktree, newest first')
|
|
39
|
+
.argument('<worktree-id>', 'Worktree ID')
|
|
40
|
+
.option('--limit <n>', `Maximum tasks to list (1..${MAX_LIST_LIMIT})`, parseInt)
|
|
41
|
+
.option('--json', 'JSON output')
|
|
42
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
43
|
+
.action(async (worktreeId, options) => {
|
|
44
|
+
try {
|
|
45
|
+
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
46
|
+
console.error('Error: Invalid worktree ID format.');
|
|
47
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (options.limit !== undefined &&
|
|
51
|
+
(!Number.isInteger(options.limit) || options.limit < 1 || options.limit > MAX_LIST_LIMIT)) {
|
|
52
|
+
console.error(`Error: --limit must be an integer 1..${MAX_LIST_LIMIT}.`);
|
|
53
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
57
|
+
const query = options.limit === undefined ? '' : `?limit=${options.limit}`;
|
|
58
|
+
const response = await client.get(`/api/worktrees/${worktreeId}/tasks${query}`);
|
|
59
|
+
const { tasks } = (0, api_client_1.assertResponseShape)(response, ['tasks'], 'GET /api/worktrees/:id/tasks');
|
|
60
|
+
if (options.json) {
|
|
61
|
+
console.log(JSON.stringify(tasks));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (tasks.length === 0) {
|
|
65
|
+
console.error(`No tasks recorded for worktree '${worktreeId}'.`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
tasks.forEach(printTaskLine);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// ---- task show ----
|
|
75
|
+
cmd
|
|
76
|
+
.command('show')
|
|
77
|
+
.description('Show one task with the verification run that last judged it')
|
|
78
|
+
.argument('<task-id>', 'Task ID')
|
|
79
|
+
.option('--json', 'JSON output')
|
|
80
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
81
|
+
.action(async (taskId, options) => {
|
|
82
|
+
try {
|
|
83
|
+
if (!TASK_ID_PATTERN.test(taskId)) {
|
|
84
|
+
console.error('Error: Invalid task ID format.');
|
|
85
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
89
|
+
const response = await client.get(`/api/tasks/${taskId}`);
|
|
90
|
+
const detail = (0, api_client_1.assertResponseShape)(response, ['task', 'lastVerificationRun'], 'GET /api/tasks/:taskId');
|
|
91
|
+
if (options.json) {
|
|
92
|
+
console.log(JSON.stringify(detail));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const { task, lastVerificationRun } = detail;
|
|
96
|
+
console.log(`ID: ${task.id}`);
|
|
97
|
+
console.log(`STATUS: ${task.status}`);
|
|
98
|
+
console.log(`WORKTREE: ${task.worktreeId}`);
|
|
99
|
+
console.log(`AGENT: ${task.cliToolId}${task.instanceId ? `/${task.instanceId}` : ''}`);
|
|
100
|
+
console.log(`TITLE: ${task.title}`);
|
|
101
|
+
console.log(`CONTRACT: ${task.contractPath ?? '-'}`);
|
|
102
|
+
console.log(`SCOPE: ${task.contract.scope.allow.join(', ') || '-'}`);
|
|
103
|
+
if (task.contract.scope.deny.length > 0) {
|
|
104
|
+
console.log(`DENY: ${task.contract.scope.deny.join(', ')}`);
|
|
105
|
+
}
|
|
106
|
+
console.log(`GATES: ${task.contract.verify.gates?.join(', ') ?? 'all-gates'}`);
|
|
107
|
+
console.log(`AUTO-YES: ${task.contract.autoYes.mode ?? 'unset'}`);
|
|
108
|
+
console.log(`CREATED: ${task.createdAt}`);
|
|
109
|
+
console.log(`STARTED: ${formatTimestamp(task.startedAt)}`);
|
|
110
|
+
console.log(`FINISHED: ${formatTimestamp(task.finishedAt)}`);
|
|
111
|
+
if (!lastVerificationRun) {
|
|
112
|
+
console.log('VERIFY: (no verification run yet)');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
console.log(`VERIFY: run ${lastVerificationRun.id} ${lastVerificationRun.status}`);
|
|
116
|
+
for (const gate of lastVerificationRun.gates) {
|
|
117
|
+
const exit = gate.exitCode === null ? '-' : String(gate.exitCode);
|
|
118
|
+
console.log(` GATE ${gate.gateId} ${gate.status} (exit=${exit})`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return cmd;
|
|
126
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* verify Command - Run the repository verification gates for a worktree
|
|
3
|
+
* Issue #1544
|
|
4
|
+
*
|
|
5
|
+
* Exit codes:
|
|
6
|
+
* - 0: SUCCESS (every gate passed)
|
|
7
|
+
* - 20: VERIFY_FAILED (a gate failed, timed out, or errored)
|
|
8
|
+
* - 21: NOT_STARTED (work-evidence found nothing to verify)
|
|
9
|
+
* - 124: TIMEOUT (--timeout elapsed before the run reached a verdict)
|
|
10
|
+
* Infrastructure errors and verdict-less runs use ExitCode (1, 2, 99).
|
|
11
|
+
*
|
|
12
|
+
* Issue #1593 adds two read-only subcommands, `history` and `show`. They never
|
|
13
|
+
* return 20/21: those codes mean "this working tree failed verification", and a
|
|
14
|
+
* query about past runs is not a verdict on the current one. A read that
|
|
15
|
+
* succeeds exits 0 even when it finds nothing.
|
|
16
|
+
*/
|
|
17
|
+
import { Command } from 'commander';
|
|
18
|
+
export declare function createVerifyCommand(): Command;
|
|
19
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC,wBAAgB,mBAAmB,IAAI,OAAO,CA0D7C"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* verify Command - Run the repository verification gates for a worktree
|
|
4
|
+
* Issue #1544
|
|
5
|
+
*
|
|
6
|
+
* Exit codes:
|
|
7
|
+
* - 0: SUCCESS (every gate passed)
|
|
8
|
+
* - 20: VERIFY_FAILED (a gate failed, timed out, or errored)
|
|
9
|
+
* - 21: NOT_STARTED (work-evidence found nothing to verify)
|
|
10
|
+
* - 124: TIMEOUT (--timeout elapsed before the run reached a verdict)
|
|
11
|
+
* Infrastructure errors and verdict-less runs use ExitCode (1, 2, 99).
|
|
12
|
+
*
|
|
13
|
+
* Issue #1593 adds two read-only subcommands, `history` and `show`. They never
|
|
14
|
+
* return 20/21: those codes mean "this working tree failed verification", and a
|
|
15
|
+
* query about past runs is not a verdict on the current one. A read that
|
|
16
|
+
* succeeds exits 0 even when it finds nothing.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.createVerifyCommand = createVerifyCommand;
|
|
20
|
+
const commander_1 = require("commander");
|
|
21
|
+
const types_1 = require("../types");
|
|
22
|
+
const api_client_1 = require("../utils/api-client");
|
|
23
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
24
|
+
const verify_runner_1 = require("../utils/verify-runner");
|
|
25
|
+
/** Mirrors MAX_RUN_HISTORY_DAYS / MAX_RUN_HISTORY_LIMIT in verification-db.ts. */
|
|
26
|
+
const MAX_HISTORY_DAYS = 90;
|
|
27
|
+
const MAX_HISTORY_LIMIT = 500;
|
|
28
|
+
/** Gate statuses that mean the gate did not pass. `skipped` is not a failure. */
|
|
29
|
+
const FAILED_GATE_STATUSES = new Set(['failed', 'timeout', 'error']);
|
|
30
|
+
function formatSeconds(durationMs) {
|
|
31
|
+
return durationMs === null ? 'n/a' : `${(durationMs / 1000).toFixed(1)}s`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read a flag that `verify` and its read subcommands both declare.
|
|
35
|
+
*
|
|
36
|
+
* Commander binds a flag to whichever command in the chain declared it and
|
|
37
|
+
* reached it first, so in `verify history --json` the parent's own `--json`
|
|
38
|
+
* (used by the run mode) swallows the flag before `history` ever sees it.
|
|
39
|
+
* Falling back to the parent's options is what makes `--json` work where users
|
|
40
|
+
* actually type it, without changing the root program's option scoping.
|
|
41
|
+
*/
|
|
42
|
+
function inheritedFlag(own, command, key) {
|
|
43
|
+
if (own !== undefined)
|
|
44
|
+
return own;
|
|
45
|
+
return command.parent?.opts()[key];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* One run per line.
|
|
49
|
+
*
|
|
50
|
+
* The run id leads the line even though it is not in the requested field list:
|
|
51
|
+
* without it there is no way to reach `verify show`, which is the only reason
|
|
52
|
+
* to read this listing in the first place.
|
|
53
|
+
*/
|
|
54
|
+
function formatHistoryLine(run) {
|
|
55
|
+
const failed = run.gates
|
|
56
|
+
.filter((gate) => FAILED_GATE_STATUSES.has(gate.status))
|
|
57
|
+
.map((gate) => gate.gateId);
|
|
58
|
+
const suffix = failed.length > 0 ? ` failed: ${failed.join(',')}` : '';
|
|
59
|
+
return `#${run.id} ${run.startedAt} ${run.worktreeId} ${run.trigger} ${run.status}${suffix}`;
|
|
60
|
+
}
|
|
61
|
+
function createVerifyCommand() {
|
|
62
|
+
const cmd = new commander_1.Command('verify');
|
|
63
|
+
cmd
|
|
64
|
+
.description('Run the verification gates declared in .commandmate/verify.yaml for a worktree')
|
|
65
|
+
.argument('<worktree-id>', 'Worktree ID to verify')
|
|
66
|
+
.option('--instance <id>', 'Agent instance ID the run is attributed to (e.g. codex-2)')
|
|
67
|
+
.option('--gates <ids>', 'Comma-separated gate ids to run (default: work-evidence plus every declared gate)')
|
|
68
|
+
.option('--json', 'Print the run and its gate results as JSON on stdout')
|
|
69
|
+
.option('--timeout <seconds>', 'Stop polling after this many seconds (exit 124)', parseInt)
|
|
70
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
71
|
+
.action(async (worktreeId, options) => {
|
|
72
|
+
try {
|
|
73
|
+
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
74
|
+
console.error(`Error: Invalid worktree ID format: ${worktreeId}`);
|
|
75
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (options.instance && !(0, api_client_1.isValidInstanceId)(options.instance)) {
|
|
79
|
+
console.error('Error: Invalid --instance. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
|
|
80
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const gateIds = (0, verify_runner_1.parseGateIds)(options.gates);
|
|
84
|
+
if (gateIds === null) {
|
|
85
|
+
console.error('Error: --gates must name at least one gate id.');
|
|
86
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
90
|
+
const outcome = await (0, verify_runner_1.runVerification)(client, {
|
|
91
|
+
worktreeId,
|
|
92
|
+
trigger: 'manual',
|
|
93
|
+
instanceId: options.instance,
|
|
94
|
+
gateIds,
|
|
95
|
+
timeoutSec: options.timeout,
|
|
96
|
+
suppressResultLine: options.json,
|
|
97
|
+
});
|
|
98
|
+
if (options.json && outcome.run) {
|
|
99
|
+
console.log(JSON.stringify(outcome.run));
|
|
100
|
+
}
|
|
101
|
+
process.exit(outcome.exitCode);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
addHistoryCommand(cmd);
|
|
108
|
+
addShowCommand(cmd);
|
|
109
|
+
return cmd;
|
|
110
|
+
}
|
|
111
|
+
/** `commandmate verify history [--worktree <id>] [--days N] [--limit N] [--json]` */
|
|
112
|
+
function addHistoryCommand(parent) {
|
|
113
|
+
parent
|
|
114
|
+
.command('history')
|
|
115
|
+
.description('List past verification runs, newest first')
|
|
116
|
+
.option('--worktree <id>', 'Restrict to one worktree (default: every worktree)')
|
|
117
|
+
.option('--days <days>', `Look back this many days (1..${MAX_HISTORY_DAYS})`, parseInt)
|
|
118
|
+
.option('--limit <n>', `Maximum runs to list (1..${MAX_HISTORY_LIMIT}, default 50)`, parseInt)
|
|
119
|
+
.option('--json', 'Print the runs as a JSON array on stdout')
|
|
120
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
121
|
+
.action(async (options, command) => {
|
|
122
|
+
try {
|
|
123
|
+
const json = inheritedFlag(options.json, command, 'json');
|
|
124
|
+
const token = inheritedFlag(options.token, command, 'token');
|
|
125
|
+
if (options.worktree !== undefined && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
|
|
126
|
+
console.error(`Error: Invalid worktree ID format: ${options.worktree}`);
|
|
127
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (options.days !== undefined &&
|
|
131
|
+
(!Number.isInteger(options.days) || options.days < 1 || options.days > MAX_HISTORY_DAYS)) {
|
|
132
|
+
console.error(`Error: --days must be an integer between 1 and ${MAX_HISTORY_DAYS}.`);
|
|
133
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (options.limit !== undefined &&
|
|
137
|
+
(!Number.isInteger(options.limit) ||
|
|
138
|
+
options.limit < 1 ||
|
|
139
|
+
options.limit > MAX_HISTORY_LIMIT)) {
|
|
140
|
+
console.error(`Error: --limit must be an integer between 1 and ${MAX_HISTORY_LIMIT}.`);
|
|
141
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const query = [];
|
|
145
|
+
if (options.worktree !== undefined) {
|
|
146
|
+
query.push(`worktreeId=${encodeURIComponent(options.worktree)}`);
|
|
147
|
+
}
|
|
148
|
+
if (options.days !== undefined)
|
|
149
|
+
query.push(`days=${options.days}`);
|
|
150
|
+
if (options.limit !== undefined)
|
|
151
|
+
query.push(`limit=${options.limit}`);
|
|
152
|
+
const suffix = query.length > 0 ? `?${query.join('&')}` : '';
|
|
153
|
+
const client = new api_client_1.ApiClient({ token });
|
|
154
|
+
const data = await client.get(`/api/verification/runs${suffix}`);
|
|
155
|
+
const runs = data.runs ?? [];
|
|
156
|
+
if (json) {
|
|
157
|
+
// Always valid JSON, including the empty case: a consumer piping this
|
|
158
|
+
// into jq must not have to special-case "no runs".
|
|
159
|
+
console.log(JSON.stringify(runs, null, 2));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (runs.length === 0) {
|
|
163
|
+
console.error('No verification runs found.');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
for (const run of runs) {
|
|
167
|
+
console.log(formatHistoryLine(run));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/** `commandmate verify show <run-id> [--json]` */
|
|
176
|
+
function addShowCommand(parent) {
|
|
177
|
+
parent
|
|
178
|
+
.command('show')
|
|
179
|
+
.description('Show one verification run with its gate results and log tails')
|
|
180
|
+
.argument('<run-id>', 'Verification run ID (from `verify history`)')
|
|
181
|
+
.option('--json', 'Print the run as JSON on stdout')
|
|
182
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
183
|
+
.action(async (runId, options, command) => {
|
|
184
|
+
try {
|
|
185
|
+
const json = inheritedFlag(options.json, command, 'json');
|
|
186
|
+
const token = inheritedFlag(options.token, command, 'token');
|
|
187
|
+
if (!/^[1-9]\d*$/.test(runId)) {
|
|
188
|
+
console.error(`Error: Invalid run ID: ${runId}. Expected a positive integer.`);
|
|
189
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const client = new api_client_1.ApiClient({ token });
|
|
193
|
+
let data;
|
|
194
|
+
try {
|
|
195
|
+
data = await client.get(`/api/verification/runs/${runId}`);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
// The generic 404 message names the worktree id, which this command
|
|
199
|
+
// never takes. Say what was actually not found.
|
|
200
|
+
if (error instanceof api_client_1.ApiError && error.statusCode === 404) {
|
|
201
|
+
console.error(`Verification run ${runId} not found.`);
|
|
202
|
+
process.exit(error.exitCode);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
const run = data.run;
|
|
208
|
+
if (json) {
|
|
209
|
+
console.log(JSON.stringify(run, null, 2));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
console.log(`run #${run.id} ${run.status} worktree=${run.worktreeId} trigger=${run.trigger}`);
|
|
213
|
+
console.log(`started=${run.startedAt} finished=${run.finishedAt ?? '-'}`);
|
|
214
|
+
console.log(`baseRef=${run.baseRef ?? '-'} instance=${run.instanceId ?? '-'} task=${run.taskId ?? '-'}`);
|
|
215
|
+
for (const gate of run.gates) {
|
|
216
|
+
const exit = gate.exitCode === null ? 'n/a' : String(gate.exitCode);
|
|
217
|
+
console.log(` ${gate.gateId} ${gate.status} exit=${exit} ${formatSeconds(gate.durationMs)}`);
|
|
218
|
+
if (gate.logTail) {
|
|
219
|
+
for (const line of gate.logTail.split('\n')) {
|
|
220
|
+
console.log(` | ${line}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* - 0: SUCCESS (agent completed)
|
|
7
7
|
* - 10: PROMPT_DETECTED (agent waiting for user input)
|
|
8
8
|
* - 124: TIMEOUT (--timeout exceeded)
|
|
9
|
+
* Issue #1544 adds --verify / --require-work, which can turn a detected
|
|
10
|
+
* completion into 20 (VERIFY_FAILED) or 21 (NOT_STARTED).
|
|
9
11
|
* Infrastructure errors use ExitCode (1, 2, 99)
|
|
10
12
|
*/
|
|
11
13
|
import { Command } from 'commander';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkKpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6F3C"}
|