commandmate 0.31.3 → 0.32.1
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 +498 -484
- package/.next/app-path-routes-manifest.json +44 -42
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_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.js.nft.json +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 -32
- 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 +2 -33
- 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/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- 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/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/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.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/relays/route.js +1 -0
- package/.next/server/app/api/relays/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/remote/pair/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/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/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.js.nft.json +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 +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.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 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- 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]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/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]/env/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/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 +1 -1
- 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/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]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/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]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/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 +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.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 +103 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +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_client-reference-manifest.js +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/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- 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.js.nft.json +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]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- 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/apply-default-agents/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.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +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 +2 -2
- package/.next/server/app/more/page.js.nft.json +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.js +1 -1
- package/.next/server/app/page.js.nft.json +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 +2 -2
- package/.next/server/app/repositories/page.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- 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 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- 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 +11 -11
- 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 +44 -42
- package/.next/server/chunks/1210.js +1 -0
- package/.next/server/chunks/153.js +1 -0
- package/.next/server/chunks/1886.js +1 -1
- package/.next/server/chunks/21.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3077.js +67 -0
- package/.next/server/chunks/3086.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3270.js +1 -0
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3730.js +1 -0
- package/.next/server/chunks/3925.js +1 -0
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4443.js +2 -1
- package/.next/server/chunks/5043.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5220.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/595.js +3 -3
- package/.next/server/chunks/6286.js +48 -0
- package/.next/server/chunks/6306.js +1 -0
- package/.next/server/chunks/6363.js +1 -0
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6491.js +103 -0
- package/.next/server/chunks/{9798.js → 6661.js} +1 -2
- package/.next/server/chunks/6838.js +1 -0
- package/.next/server/chunks/7875.js +25 -0
- package/.next/server/chunks/7890.js +1 -0
- package/.next/server/chunks/8063.js +32 -0
- package/.next/server/chunks/8118.js +1 -1
- package/.next/server/chunks/{7587.js → 8554.js} +1 -1
- package/.next/server/chunks/8687.js +1 -0
- package/.next/server/chunks/8807.js +37 -3
- package/.next/server/chunks/8918.js +6 -4
- package/.next/server/chunks/9123.js +2 -2
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +21 -5
- 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/Lno4w_zWXdGdlfXg06Vp8/_buildManifest.js +1 -0
- package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
- package/.next/static/chunks/4718-9d63107c612a065d.js +1 -0
- package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
- package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
- package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
- package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
- package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
- package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
- package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
- package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
- package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
- package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-3d82a9355d5612d9.js +1 -0
- package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
- package/.next/static/css/96d94a4ba771efc3.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
- package/.next/types/app/api/relays/route.ts +347 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/README.md +6 -2
- package/dist/cli/commands/ask.d.ts +34 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +494 -0
- package/dist/cli/commands/capture.d.ts +20 -0
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +80 -30
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +47 -4
- package/dist/cli/commands/instances.d.ts +67 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +147 -22
- package/dist/cli/commands/peers.d.ts +64 -0
- package/dist/cli/commands/peers.d.ts.map +1 -0
- package/dist/cli/commands/peers.js +208 -0
- package/dist/cli/commands/relays.d.ts +92 -0
- package/dist/cli/commands/relays.d.ts.map +1 -0
- package/dist/cli/commands/relays.js +293 -0
- package/dist/cli/commands/report.d.ts +3 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +29 -1
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +13 -10
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +66 -20
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +30 -0
- package/dist/cli/commands/wait.d.ts +20 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +55 -6
- package/dist/cli/commands/whoami.d.ts +176 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +377 -0
- package/dist/cli/docs/agent-operations.d.ts +25 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +184 -1
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +25 -1
- package/dist/cli/types/api-responses.d.ts +93 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +16 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +30 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +28 -5
- package/dist/lib/cli/command-reference.d.ts +179 -0
- package/dist/lib/cli/command-reference.d.ts.map +1 -0
- package/dist/lib/cli/command-reference.js +210 -0
- package/dist/lib/detection/ansi.d.ts +14 -1
- package/dist/lib/detection/ansi.d.ts.map +1 -1
- package/dist/lib/detection/ansi.js +40 -3
- package/dist/lib/detection/status-reason.d.ts +28 -0
- package/dist/lib/detection/status-reason.d.ts.map +1 -1
- package/dist/lib/detection/status-reason.js +28 -0
- package/dist/server/locales/en/worktree.json +23 -0
- package/dist/server/locales/ja/worktree.json +23 -0
- package/dist/server/src/lib/auto-yes-poller.js +26 -11
- package/dist/server/src/lib/db/chat-db.js +161 -7
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v60-session-relays.js +110 -0
- package/dist/server/src/lib/db/relay-db.js +343 -0
- package/dist/server/src/lib/detection/ansi.js +40 -3
- package/dist/server/src/lib/detection/cli-patterns.js +206 -2
- package/dist/server/src/lib/detection/selection-shape.js +72 -1
- package/dist/server/src/lib/detection/status-reason.js +28 -0
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +13 -7
- package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
- package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
- package/dist/server/src/lib/hooks/agent-event-service.js +27 -5
- package/dist/server/src/lib/hooks/sources/codex/history.js +63 -3
- package/dist/server/src/lib/hooks/sources/codex/transcript.js +53 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +112 -15
- package/dist/server/src/lib/hooks/stop-history-capture.js +252 -50
- package/dist/server/src/lib/polling/response-checker.js +174 -13
- package/dist/server/src/lib/polling/response-dedup.js +136 -0
- package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
- package/dist/server/src/lib/realtime/waiting-broadcast.js +12 -0
- package/dist/server/src/lib/relay/relay-delivery.js +554 -0
- package/dist/server/src/lib/relay/relay-messages.js +144 -0
- package/dist/server/src/lib/relay/relay-policy.js +127 -0
- package/dist/server/src/lib/relay/relay-readiness.js +63 -0
- package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
- package/dist/server/src/lib/relay/relay-system-line.js +79 -0
- package/dist/server/src/lib/relay/relay-triggers.js +177 -0
- package/dist/server/src/lib/relay/types.js +25 -0
- package/dist/server/src/lib/session/current-output-builder.js +18 -0
- package/dist/server/src/lib/session/send-user-message.js +1 -0
- package/package.json +1 -1
- package/.next/server/chunks/1058.js +0 -1
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/261.js +0 -1
- package/.next/server/chunks/2739.js +0 -1
- package/.next/server/chunks/2839.js +0 -1
- package/.next/server/chunks/3484.js +0 -1
- package/.next/server/chunks/358.js +0 -1
- package/.next/server/chunks/3869.js +0 -1
- package/.next/server/chunks/4325.js +0 -1
- package/.next/server/chunks/4393.js +0 -1
- package/.next/server/chunks/5017.js +0 -1
- package/.next/server/chunks/5120.js +0 -1
- package/.next/server/chunks/552.js +0 -25
- package/.next/server/chunks/6130.js +0 -1
- package/.next/server/chunks/7836.js +0 -1
- package/.next/server/chunks/7859.js +0 -21
- package/.next/server/chunks/9696.js +0 -3
- package/.next/static/0hTIackGXw6v7diXJS6yN/_buildManifest.js +0 -1
- package/.next/static/chunks/2813-de885de8a4b11910.js +0 -1
- package/.next/static/chunks/4718-07ec4e10186928db.js +0 -1
- package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
- package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
- package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-91b639c90795baa9.js +0 -1
- package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
- package/.next/static/css/acc4b9c3feb04287.css +0 -1
- /package/.next/static/{0hTIackGXw6v7diXJS6yN → Lno4w_zWXdGdlfXg06Vp8}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* relays Command - the standing delegations this machine is holding (#2377)
|
|
4
|
+
*
|
|
5
|
+
* commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
|
|
6
|
+
* commandmate relays cancel <relay-id>
|
|
7
|
+
*
|
|
8
|
+
* ## Why a command and not a flag on `ls`
|
|
9
|
+
*
|
|
10
|
+
* A relay is the one piece of state in CommandMate that belongs to TWO sessions
|
|
11
|
+
* at once: session A is owed an answer, session B owes one, and neither
|
|
12
|
+
* worktree's own listing can show that without inventing a column for the other
|
|
13
|
+
* side. So the listing is its own thing, and it prints the pair — `from` and
|
|
14
|
+
* `to`, `→` between them — rather than a status word per row.
|
|
15
|
+
*
|
|
16
|
+
* With no `--worktree` it asks the session it is running inside (`whoami`'s
|
|
17
|
+
* resolution) and prints that session's two sides. That is the shape an agent
|
|
18
|
+
* uses: "what am I waiting for, and what do I owe?" is a question about the
|
|
19
|
+
* caller, and making the caller name itself is what #2376 exists to stop.
|
|
20
|
+
*
|
|
21
|
+
* ## What this module exports besides the command
|
|
22
|
+
*
|
|
23
|
+
* The `--reply-to` plumbing, because `send` and `ask` both take that flag and
|
|
24
|
+
* both have to turn one string into the two ids the ledger stores. Keeping
|
|
25
|
+
* {@link resolveRelayEndpoint} here rather than in `send.ts` is what stops the
|
|
26
|
+
* two commands from resolving `self` two different ways.
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
|
|
30
|
+
exports.resolveRelayEndpoint = resolveRelayEndpoint;
|
|
31
|
+
exports.resolveEndpointForWorktree = resolveEndpointForWorktree;
|
|
32
|
+
exports.registerRelay = registerRelay;
|
|
33
|
+
exports.cancelRelayQuietly = cancelRelayQuietly;
|
|
34
|
+
exports.createRelaysCommand = createRelaysCommand;
|
|
35
|
+
const commander_1 = require("commander");
|
|
36
|
+
const types_1 = require("../types");
|
|
37
|
+
const api_client_1 = require("../utils/api-client");
|
|
38
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
39
|
+
const session_target_1 = require("../utils/session-target");
|
|
40
|
+
const instances_1 = require("./instances");
|
|
41
|
+
const whoami_1 = require("./whoami");
|
|
42
|
+
/** crypto.randomUUID() output; mirrors RELAY_ID_PATTERN in the API route. */
|
|
43
|
+
const RELAY_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
44
|
+
/** The `--reply-to` values that mean "the session running this command". */
|
|
45
|
+
const SELF_SELECTORS = new Set(['self', 'me']);
|
|
46
|
+
/**
|
|
47
|
+
* The codes `POST /api/relays` refuses with.
|
|
48
|
+
*
|
|
49
|
+
* Mirrors `RelayRefusalCode` in `lib/relay/relay-policy` plus the route's own
|
|
50
|
+
* not-found; duplicated rather than imported so the CLI bundle does not pull the
|
|
51
|
+
* server's database graph in for four strings.
|
|
52
|
+
*/
|
|
53
|
+
exports.RELAY_REFUSAL_CODES = new Set([
|
|
54
|
+
'RELAY_CHAIN_BLOCKED',
|
|
55
|
+
'RELAY_HOPS_EXCEEDED',
|
|
56
|
+
'RELAY_DUPLICATE_PENDING',
|
|
57
|
+
'RELAY_SELF_TARGET',
|
|
58
|
+
'RELAY_WORKTREE_NOT_FOUND',
|
|
59
|
+
]);
|
|
60
|
+
/** The text `--reply-to` is documented with, shared by `send` and `ask`. */
|
|
61
|
+
exports.REPLY_TO_OPTION_DESCRIPTION = 'Deliver the target\'s reply to this session when it finishes: '
|
|
62
|
+
+ '<worktree-id>[@<instance-id|alias>], or `self` for the session running this command';
|
|
63
|
+
/** The text `--allow-relay-chain` is documented with. */
|
|
64
|
+
exports.ALLOW_RELAY_CHAIN_DESCRIPTION = 'Permit a relay opened while answering a relayed message (refused by default; '
|
|
65
|
+
+ 'chains still stop at 3 hops)';
|
|
66
|
+
/**
|
|
67
|
+
* Turn one `--reply-to` value into the two ids the ledger stores.
|
|
68
|
+
*
|
|
69
|
+
* Exits 2 rather than throwing: every failure here is a bad option value or a
|
|
70
|
+
* shell that is not inside a CommandMate session, and both are things the
|
|
71
|
+
* operator fixes on the command line.
|
|
72
|
+
*
|
|
73
|
+
* @param client - API client
|
|
74
|
+
* @param spec - The raw `--reply-to` value
|
|
75
|
+
*/
|
|
76
|
+
async function resolveRelayEndpoint(client, spec) {
|
|
77
|
+
if (SELF_SELECTORS.has(spec.trim().toLowerCase())) {
|
|
78
|
+
const identity = await (0, whoami_1.resolveSessionIdentity)(client);
|
|
79
|
+
if (!identity) {
|
|
80
|
+
console.error(whoami_1.NOT_IN_SESSION_MESSAGE);
|
|
81
|
+
console.error(' --reply-to self needs an identity; name the session explicitly instead.');
|
|
82
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
83
|
+
}
|
|
84
|
+
return { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
|
|
85
|
+
}
|
|
86
|
+
const at = spec.indexOf('@');
|
|
87
|
+
const worktreeId = at === -1 ? spec : spec.slice(0, at);
|
|
88
|
+
const selector = at === -1 ? undefined : spec.slice(at + 1);
|
|
89
|
+
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
90
|
+
console.error('Error: --reply-to must start with a valid worktree ID.');
|
|
91
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
92
|
+
}
|
|
93
|
+
if (selector !== undefined && !(0, instances_1.isInstanceSelector)(selector)) {
|
|
94
|
+
console.error(`Error: --reply-to instance part: ${instances_1.INSTANCE_SELECTOR_ERROR}`);
|
|
95
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
96
|
+
}
|
|
97
|
+
return resolveEndpointForWorktree(client, worktreeId, selector);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The resolved endpoint for a worktree, with or without a named instance.
|
|
101
|
+
*
|
|
102
|
+
* Also what `send` / `ask` use for the relay's OTHER end — the session being
|
|
103
|
+
* asked — because the ledger stores a resolved id at both ends and the send's
|
|
104
|
+
* own `--instance` may have been omitted (meaning "the primary one", which only
|
|
105
|
+
* the server can name).
|
|
106
|
+
*
|
|
107
|
+
* @param client - API client
|
|
108
|
+
* @param worktreeId - Worktree ID
|
|
109
|
+
* @param selector - An instance id or roster alias, or undefined
|
|
110
|
+
* @param requestedAgent - The `--agent` value, if the caller gave one
|
|
111
|
+
*/
|
|
112
|
+
async function resolveEndpointForWorktree(client, worktreeId, selector, requestedAgent) {
|
|
113
|
+
if (selector !== undefined) {
|
|
114
|
+
const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, selector, requestedAgent);
|
|
115
|
+
const instanceId = target.instanceId;
|
|
116
|
+
if (!instanceId) {
|
|
117
|
+
console.error(`Error: could not resolve instance '${selector}' in ${worktreeId}.`);
|
|
118
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
119
|
+
}
|
|
120
|
+
return { worktreeId, instanceId };
|
|
121
|
+
}
|
|
122
|
+
// No instance named: the server's own default for the worktree, which for a
|
|
123
|
+
// roster of one is that tool's primary instance. Asked rather than assumed —
|
|
124
|
+
// the CLI guessing `claude` is exactly the second authority #1925 removed.
|
|
125
|
+
const target = await (0, session_target_1.resolveSessionTarget)(client, worktreeId, {
|
|
126
|
+
requestedCliTool: requestedAgent,
|
|
127
|
+
});
|
|
128
|
+
const instanceId = target.instanceId ?? target.cliToolId;
|
|
129
|
+
if (!instanceId) {
|
|
130
|
+
console.error(`Error: ${worktreeId} declares no agent, so --reply-to cannot name one of its sessions. `
|
|
131
|
+
+ 'Use <worktree-id>@<instance-id>.');
|
|
132
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
133
|
+
}
|
|
134
|
+
return { worktreeId, instanceId };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Open a relay, printing the server's own refusal and exiting 2 on one.
|
|
138
|
+
*
|
|
139
|
+
* Exit 2 and not a bespoke code: every refusal is a decision the operator can
|
|
140
|
+
* change (drop the flag, cancel the other relay, stop forwarding), which is what
|
|
141
|
+
* `CONFIG_ERROR` means everywhere else in this CLI.
|
|
142
|
+
*
|
|
143
|
+
* @returns The relay id
|
|
144
|
+
*/
|
|
145
|
+
async function registerRelay(client, input) {
|
|
146
|
+
try {
|
|
147
|
+
const response = await client.post('/api/relays', {
|
|
148
|
+
from: input.from,
|
|
149
|
+
to: input.to,
|
|
150
|
+
allowRelayChain: input.allowRelayChain === true,
|
|
151
|
+
});
|
|
152
|
+
return response.relay.id;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
|
|
156
|
+
console.error(`Error: ${error.payload?.error ?? error.apiCode}`);
|
|
157
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Withdraw a relay, best effort. Used when the send it accompanied failed. */
|
|
163
|
+
async function cancelRelayQuietly(client, relayId) {
|
|
164
|
+
try {
|
|
165
|
+
await client.post(`/api/relays/${relayId}/cancel`);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
console.error(`Warning: could not withdraw relay ${relayId}; it will expire on its own.`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function endpointLabel(endpoint) {
|
|
172
|
+
return `${endpoint.worktreeId}/${endpoint.instanceId}`;
|
|
173
|
+
}
|
|
174
|
+
function printRelayLine(relay) {
|
|
175
|
+
console.log([
|
|
176
|
+
relay.id,
|
|
177
|
+
relay.state,
|
|
178
|
+
`${endpointLabel(relay.from)} <- ${endpointLabel(relay.to)}`,
|
|
179
|
+
`hops=${relay.hops}`,
|
|
180
|
+
`expires=${new Date(relay.expiresAt).toISOString()}`,
|
|
181
|
+
].join('\t'));
|
|
182
|
+
}
|
|
183
|
+
function createRelaysCommand() {
|
|
184
|
+
const cmd = new commander_1.Command('relays');
|
|
185
|
+
cmd
|
|
186
|
+
.description('List the open relays this session is waiting on and owes')
|
|
187
|
+
.option('--worktree <id>', 'Worktree to list (defaults to the session running this command)')
|
|
188
|
+
.option('--instance <id>', 'Agent instance inside --worktree (id or roster alias)')
|
|
189
|
+
.option('--json', 'JSON output')
|
|
190
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
191
|
+
.addHelpText('after', `
|
|
192
|
+
Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
|
|
193
|
+
|
|
194
|
+
States: pending (the worker has not finished), prompt (it stopped on a
|
|
195
|
+
confirmation and the requester was told), delivered / expired / cancelled.
|
|
196
|
+
|
|
197
|
+
Withdraw one with \`commandmate relays cancel <relay-id>\`.
|
|
198
|
+
`)
|
|
199
|
+
.action(async (options) => {
|
|
200
|
+
try {
|
|
201
|
+
if (options.worktree && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
|
|
202
|
+
console.error('Error: Invalid worktree ID format.');
|
|
203
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
204
|
+
}
|
|
205
|
+
if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
|
|
206
|
+
console.error(instances_1.INSTANCE_SELECTOR_ERROR);
|
|
207
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
208
|
+
}
|
|
209
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
210
|
+
let endpoint = null;
|
|
211
|
+
if (options.worktree) {
|
|
212
|
+
endpoint = await resolveEndpointForWorktree(client, options.worktree, options.instance);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const identity = await (0, whoami_1.resolveSessionIdentity)(client);
|
|
216
|
+
if (identity) {
|
|
217
|
+
endpoint = { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const query = new URLSearchParams();
|
|
221
|
+
if (endpoint) {
|
|
222
|
+
query.set('worktree', endpoint.worktreeId);
|
|
223
|
+
query.set('instance', endpoint.instanceId);
|
|
224
|
+
}
|
|
225
|
+
const qs = query.toString();
|
|
226
|
+
const response = await client.get(`/api/relays${qs ? `?${qs}` : ''}`);
|
|
227
|
+
if (options.json) {
|
|
228
|
+
console.log(JSON.stringify(response, null, 2));
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (!endpoint) {
|
|
232
|
+
console.error('Not inside a CommandMate agent session and no --worktree given; '
|
|
233
|
+
+ 'printing counts only.');
|
|
234
|
+
}
|
|
235
|
+
const { counts } = response;
|
|
236
|
+
console.error(`relays: pending=${counts.pending} prompt=${counts.prompt} `
|
|
237
|
+
+ `delivered=${counts.delivered} expired=${counts.expired} cancelled=${counts.cancelled}`);
|
|
238
|
+
if (response.awaiting.length === 0 && response.owed.length === 0) {
|
|
239
|
+
console.error('No open relays.');
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (response.awaiting.length > 0) {
|
|
243
|
+
console.error(`# waiting for (${response.awaiting.length})`);
|
|
244
|
+
response.awaiting.forEach(printRelayLine);
|
|
245
|
+
}
|
|
246
|
+
if (response.owed.length > 0) {
|
|
247
|
+
console.error(`# owed by me (${response.owed.length})`);
|
|
248
|
+
response.owed.forEach(printRelayLine);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
cmd
|
|
256
|
+
.command('cancel')
|
|
257
|
+
.description('Withdraw an open relay so its reply is never delivered')
|
|
258
|
+
.argument('<relay-id>', 'Relay ID')
|
|
259
|
+
.option('--json', 'JSON output')
|
|
260
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
261
|
+
.action(async (relayId, options) => {
|
|
262
|
+
try {
|
|
263
|
+
if (!RELAY_ID_PATTERN.test(relayId)) {
|
|
264
|
+
console.error('Error: Invalid relay ID format.');
|
|
265
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
266
|
+
}
|
|
267
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
268
|
+
try {
|
|
269
|
+
const response = await client.post(`/api/relays/${relayId}/cancel`);
|
|
270
|
+
if (options.json) {
|
|
271
|
+
console.log(JSON.stringify(response, null, 2));
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
console.error(`Relay ${relayId} cancelled.`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
// A relay that already delivered is not a failure to report as one:
|
|
279
|
+
// saying "cancelled" would tell the caller they stopped a delivery
|
|
280
|
+
// that in fact happened.
|
|
281
|
+
if (error instanceof api_client_1.ApiError && error.apiCode === 'RELAY_ALREADY_CLOSED') {
|
|
282
|
+
console.error(`Error: ${error.payload?.error ?? 'Relay is already closed.'}`);
|
|
283
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
284
|
+
}
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
return cmd;
|
|
293
|
+
}
|
|
@@ -4,5 +4,8 @@
|
|
|
4
4
|
* Issue #1551: report metrics (Eval metrics)
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
|
+
import type { RelayCountsResponse } from '../types/api-responses';
|
|
8
|
+
/** The relay line, in the same shape as the four above it. */
|
|
9
|
+
export declare function formatRelayCounts(counts: RelayCountsResponse): string;
|
|
7
10
|
export declare function createReportCommand(): Command;
|
|
8
11
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAGV,mBAAmB,EAKpB,MAAM,wBAAwB,CAAC;AA+EhC,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAKrE;AAmBD,wBAAgB,mBAAmB,IAAI,OAAO,CAiL7C"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Issue #1551: report metrics (Eval metrics)
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.formatRelayCounts = formatRelayCounts;
|
|
8
9
|
exports.createReportCommand = createReportCommand;
|
|
9
10
|
const commander_1 = require("commander");
|
|
10
11
|
const types_1 = require("../types");
|
|
@@ -59,6 +60,28 @@ const MAX_METRICS_DAYS = 90;
|
|
|
59
60
|
function formatRate(value) {
|
|
60
61
|
return value === null ? 'n/a' : `${(value * 100).toFixed(1)}%`;
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Relay counts over the same window, or null when the daemon has no ledger.
|
|
65
|
+
*
|
|
66
|
+
* Best effort and separate from the vibe metrics on purpose: `/api/metrics/vibe`
|
|
67
|
+
* is computed from tasks and verification runs, and a relay is neither. A daemon
|
|
68
|
+
* that predates Issue #2377 answers 404 here, which is a reason to print the
|
|
69
|
+
* metrics without the relay line, not a reason to fail the command.
|
|
70
|
+
*/
|
|
71
|
+
async function readRelayCounts(client, days) {
|
|
72
|
+
try {
|
|
73
|
+
const response = await client.get(`/api/relays?days=${encodeURIComponent(String(days))}`);
|
|
74
|
+
return response.counts ?? null;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** The relay line, in the same shape as the four above it. */
|
|
81
|
+
function formatRelayCounts(counts) {
|
|
82
|
+
return (`Relays: ${counts.delivered} delivered / ${counts.prompt} waiting on a prompt `
|
|
83
|
+
+ `/ ${counts.expired} expired (${counts.pending} still open, ${counts.cancelled} cancelled)`);
|
|
84
|
+
}
|
|
62
85
|
function formatVibeMetrics(m) {
|
|
63
86
|
const { tasks, verification, intervention } = m;
|
|
64
87
|
const topFails = verification.gateFailBreakdown
|
|
@@ -215,11 +238,16 @@ function createReportCommand() {
|
|
|
215
238
|
}
|
|
216
239
|
const client = new api_client_1.ApiClient({ token: options.token });
|
|
217
240
|
const data = await client.get(`/api/metrics/vibe?days=${encodeURIComponent(String(days))}`);
|
|
241
|
+
// Issue #2377: delegation between sessions is work this harness did, and
|
|
242
|
+
// until now it was the only kind that left no mark on the metrics.
|
|
243
|
+
const relays = await readRelayCounts(client, days);
|
|
218
244
|
if (options.json) {
|
|
219
|
-
console.log(JSON.stringify(data.metrics, null, 2));
|
|
245
|
+
console.log(JSON.stringify({ ...data.metrics, relays }, null, 2));
|
|
220
246
|
}
|
|
221
247
|
else {
|
|
222
248
|
console.log(formatVibeMetrics(data.metrics));
|
|
249
|
+
if (relays)
|
|
250
|
+
console.log(formatRelayCounts(relays));
|
|
223
251
|
}
|
|
224
252
|
}
|
|
225
253
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2JpC,wBAAgB,oBAAoB,IAAI,OAAO,CAwK9C"}
|
|
@@ -127,7 +127,7 @@ function createRespondCommand() {
|
|
|
127
127
|
.argument('<worktree-id>', 'Worktree ID')
|
|
128
128
|
.argument('[answer]', 'Response answer (yes, no, number, or free text)')
|
|
129
129
|
.option('--default', "Select the prompt's default option (mutually exclusive with <answer>)")
|
|
130
|
-
.option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
|
|
130
|
+
.option('--instance <id>', `${agent_target_options_1.INSTANCE_OPTION_DESCRIPTION} ${instances_1.INSTANCE_ALIAS_HELP_SUFFIX}`)
|
|
131
131
|
.option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
|
|
132
132
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
133
133
|
.action(async (worktreeId, answer, options) => {
|
|
@@ -142,9 +142,9 @@ function createRespondCommand() {
|
|
|
142
142
|
console.error('Error: Invalid agent.');
|
|
143
143
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
144
144
|
}
|
|
145
|
-
// Issue #868:
|
|
146
|
-
if (options.instance && !(0,
|
|
147
|
-
console.error(
|
|
145
|
+
// Issue #868 / #2376: an instance id or a roster alias.
|
|
146
|
+
if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
|
|
147
|
+
console.error(instances_1.INSTANCE_SELECTOR_ERROR);
|
|
148
148
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
149
149
|
}
|
|
150
150
|
// Issue #1681: exactly one of <answer> / --default
|
|
@@ -162,17 +162,20 @@ function createRespondCommand() {
|
|
|
162
162
|
// and falls back to the worktree default, so `--instance codex` alone
|
|
163
163
|
// answered into a session that was never started. Resolve the tool the
|
|
164
164
|
// instance is registered under first.
|
|
165
|
-
const
|
|
166
|
-
? await (0, instances_1.
|
|
167
|
-
:
|
|
165
|
+
const target = options.instance
|
|
166
|
+
? await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, options.agent)
|
|
167
|
+
: null;
|
|
168
|
+
const agent = target ? target.cliToolId : options.agent;
|
|
169
|
+
// Issue #2376: the resolved id. /prompt-response reads instance ids.
|
|
170
|
+
const instanceId = target?.instanceId;
|
|
168
171
|
// [DR2-06] Use prompt-response API with cliTool (not cliToolId)
|
|
169
172
|
const body = useDefault ? { useDefault: true } : { answer };
|
|
170
173
|
if (agent) {
|
|
171
174
|
body.cliTool = agent;
|
|
172
175
|
}
|
|
173
176
|
// Issue #868: target a specific agent instance
|
|
174
|
-
if (
|
|
175
|
-
body.instanceId =
|
|
177
|
+
if (instanceId) {
|
|
178
|
+
body.instanceId = instanceId;
|
|
176
179
|
}
|
|
177
180
|
// Issue #2040: for an agent that publishes per-decision ids (opencode
|
|
178
181
|
// today, and only opencode), a bare `respond <worktree> 3` names the ONE
|
|
@@ -186,7 +189,7 @@ function createRespondCommand() {
|
|
|
186
189
|
// the structured path refuses it (`answerStructuredDecision` says so in
|
|
187
190
|
// as many words) — while Enter at a `keys` dialog is a real answer that
|
|
188
191
|
// this command has always been able to give.
|
|
189
|
-
const structured = !useDefault && (await addressesDecisionsById(client, worktreeId, agent,
|
|
192
|
+
const structured = !useDefault && (await addressesDecisionsById(client, worktreeId, agent, instanceId));
|
|
190
193
|
let result = null;
|
|
191
194
|
if (structured) {
|
|
192
195
|
const outcome = await answerSolePendingDecision(client, worktreeId, body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoMpC,wBAAgB,iBAAiB,IAAI,OAAO,CAkP3C"}
|
|
@@ -15,6 +15,7 @@ const agent_target_options_1 = require("../config/agent-target-options");
|
|
|
15
15
|
const model_validation_1 = require("../config/model-validation");
|
|
16
16
|
const agent_instances_1 = require("../utils/agent-instances");
|
|
17
17
|
const instances_1 = require("./instances");
|
|
18
|
+
const relays_1 = require("./relays");
|
|
18
19
|
/** Auto-yes duration used when --duration is omitted. */
|
|
19
20
|
const DEFAULT_AUTO_YES_DURATION = '1h';
|
|
20
21
|
/**
|
|
@@ -58,7 +59,7 @@ function resolveAutoYesDurationMs(duration) {
|
|
|
58
59
|
* @param durationMs - Duration already validated by resolveAutoYesDurationMs()
|
|
59
60
|
* @param agent - CLI tool resolved for --instance (Issue #1629), else --agent
|
|
60
61
|
*/
|
|
61
|
-
async function enableAutoYes(client, worktreeId, options, durationMs, agent) {
|
|
62
|
+
async function enableAutoYes(client, worktreeId, options, durationMs, agent, instanceId) {
|
|
62
63
|
const autoYesBody = {
|
|
63
64
|
enabled: true,
|
|
64
65
|
duration: durationMs,
|
|
@@ -69,8 +70,8 @@ async function enableAutoYes(client, worktreeId, options, durationMs, agent) {
|
|
|
69
70
|
// Issue #896: per-instance auto-yes. When --instance is given, the poller keys
|
|
70
71
|
// on worktreeId:cliToolId:instanceId so the targeted instance is auto-answered
|
|
71
72
|
// independently of other instances of the same agent.
|
|
72
|
-
if (
|
|
73
|
-
autoYesBody.instanceId =
|
|
73
|
+
if (instanceId) {
|
|
74
|
+
autoYesBody.instanceId = instanceId;
|
|
74
75
|
}
|
|
75
76
|
if (options.stopPattern) {
|
|
76
77
|
autoYesBody.stopPattern = options.stopPattern;
|
|
@@ -104,13 +105,13 @@ async function registerInstance(client, worktreeId, instanceId, cliTool) {
|
|
|
104
105
|
* from that worktree's verify.yaml. Every violation the server found is printed
|
|
105
106
|
* before exiting, so a broken contract is fixed in one pass (Issue #1545).
|
|
106
107
|
*/
|
|
107
|
-
async function createContractTask(client, worktreeId, options, agent) {
|
|
108
|
+
async function createContractTask(client, worktreeId, options, agent, instanceId) {
|
|
108
109
|
const body = { contractPath: options.contract };
|
|
109
110
|
if (agent) {
|
|
110
111
|
body.cliToolId = agent;
|
|
111
112
|
}
|
|
112
|
-
if (
|
|
113
|
-
body.instanceId =
|
|
113
|
+
if (instanceId) {
|
|
114
|
+
body.instanceId = instanceId;
|
|
114
115
|
}
|
|
115
116
|
try {
|
|
116
117
|
const response = await client.post(`/api/worktrees/${worktreeId}/tasks`, body);
|
|
@@ -149,7 +150,7 @@ function createSendCommand() {
|
|
|
149
150
|
.description('Send a message to a worktree agent')
|
|
150
151
|
.argument('<worktree-id>', 'Worktree ID')
|
|
151
152
|
.argument('[message]', 'Message to send (omit when using --contract)')
|
|
152
|
-
.option('--instance <id>', agent_target_options_1.INSTANCE_OPTION_DESCRIPTION)
|
|
153
|
+
.option('--instance <id>', `${agent_target_options_1.INSTANCE_OPTION_DESCRIPTION} ${instances_1.INSTANCE_ALIAS_HELP_SUFFIX}`)
|
|
153
154
|
.option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
|
|
154
155
|
.option('--register', 'Register the --instance session into the agent-instance roster (needs --agent unless the instance id is itself a CLI tool id)')
|
|
155
156
|
.option('--model <model>', 'Specify AI model for Copilot or Antigravity agent')
|
|
@@ -158,7 +159,20 @@ function createSendCommand() {
|
|
|
158
159
|
.option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex). Matched against terminal output; cannot block commands (use the task contract\'s autoYes.denyPatterns for that)')
|
|
159
160
|
.option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
|
|
160
161
|
.option('--ignore-structured-prompt', 'Send even if only the agent\'s hooks report an open dialog (Issue #1737). Use when the pane looks idle but sends are refused; a prompt visible in the terminal is still refused.')
|
|
162
|
+
.option('--reply-to <target>', relays_1.REPLY_TO_OPTION_DESCRIPTION)
|
|
163
|
+
.option('--allow-relay-chain', relays_1.ALLOW_RELAY_CHAIN_DESCRIPTION)
|
|
161
164
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
165
|
+
.addHelpText('after', `
|
|
166
|
+
--reply-to registers a relay: when the target session finishes this turn,
|
|
167
|
+
CommandMate puts its answer into the named session's composer, prefixed with
|
|
168
|
+
\`[from <alias> / <worktree>]\`. Nothing blocks — there is no wait to run and
|
|
169
|
+
no pane to scrape. Watch it with \`commandmate relays\`, withdraw it with
|
|
170
|
+
\`commandmate relays cancel <id>\`; it expires after 24h either way.
|
|
171
|
+
|
|
172
|
+
Exit 2 when the relay is refused: you are answering a relayed message already
|
|
173
|
+
(pass --allow-relay-chain), the chain would exceed 3 hops, or an open relay
|
|
174
|
+
between these two sessions exists. Nothing is sent in that case.
|
|
175
|
+
`)
|
|
162
176
|
.action(async (worktreeId, message, options) => {
|
|
163
177
|
try {
|
|
164
178
|
// [SEC4-04] Validate worktree ID
|
|
@@ -181,9 +195,10 @@ function createSendCommand() {
|
|
|
181
195
|
console.error(`Error: Invalid agent. Must be one of: ${cli_tool_ids_1.CLI_TOOL_IDS.join(', ')}`);
|
|
182
196
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
183
197
|
}
|
|
184
|
-
// Issue #868: Validate instance
|
|
185
|
-
|
|
186
|
-
|
|
198
|
+
// Issue #868 / #2376: Validate the instance SELECTOR if provided. An id
|
|
199
|
+
// or an alias — which of the two it is, only the roster knows.
|
|
200
|
+
if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
|
|
201
|
+
console.error(instances_1.INSTANCE_SELECTOR_ERROR);
|
|
187
202
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
188
203
|
}
|
|
189
204
|
// Issue #1000: --register requires --instance, and requires --agent
|
|
@@ -216,9 +231,14 @@ function createSendCommand() {
|
|
|
216
231
|
// the roster is the only place that pairs the two. Resolve it once, up
|
|
217
232
|
// front, so the task row, the send and auto-yes all name the same tool
|
|
218
233
|
// as the session that actually starts.
|
|
219
|
-
const
|
|
220
|
-
? await (0, instances_1.
|
|
221
|
-
:
|
|
234
|
+
const target = options.instance
|
|
235
|
+
? await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, options.agent)
|
|
236
|
+
: null;
|
|
237
|
+
const agent = target ? target.cliToolId : options.agent;
|
|
238
|
+
// Issue #2376: the RESOLVED id, never the string the user typed.
|
|
239
|
+
// `--instance "Codex 2"` has to reach /send as `codex-2`; no route but
|
|
240
|
+
// /resolve-target knows how to read an alias.
|
|
241
|
+
const instanceId = target?.instanceId;
|
|
222
242
|
// Issue #576/#588/#989: Validate --model option via shared validator (DR1-003).
|
|
223
243
|
// Issue #1925: judged against the RESOLVED agent, not against --agent.
|
|
224
244
|
// `--instance copilot-2 --model gpt-5` names a copilot session in the
|
|
@@ -246,7 +266,7 @@ function createSendCommand() {
|
|
|
246
266
|
let taskId;
|
|
247
267
|
let content = message;
|
|
248
268
|
if (options.contract) {
|
|
249
|
-
const task = await createContractTask(client, worktreeId, options, agent);
|
|
269
|
+
const task = await createContractTask(client, worktreeId, options, agent, instanceId);
|
|
250
270
|
taskId = task.taskId;
|
|
251
271
|
content = task.message;
|
|
252
272
|
console.error(`Task created: ${taskId}`);
|
|
@@ -254,7 +274,27 @@ function createSendCommand() {
|
|
|
254
274
|
}
|
|
255
275
|
// --auto-yes: enable auto-yes first (unless --model is specified, then after send) [DR2-02]
|
|
256
276
|
if (options.autoYes && !options.model) {
|
|
257
|
-
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent);
|
|
277
|
+
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
|
|
278
|
+
}
|
|
279
|
+
// Issue #2377: the relay is registered BEFORE the message goes out, so a
|
|
280
|
+
// session that answers immediately cannot finish its turn in the window
|
|
281
|
+
// between the send and the ledger row — the completion trigger reads the
|
|
282
|
+
// ledger, and a row that does not exist yet is a reply nobody collects.
|
|
283
|
+
// A refusal exits 2 here, having sent nothing.
|
|
284
|
+
let relayId;
|
|
285
|
+
if (options.replyTo) {
|
|
286
|
+
const replyEndpoint = await (0, relays_1.resolveRelayEndpoint)(client, options.replyTo);
|
|
287
|
+
const workerEndpoint = await (0, relays_1.resolveEndpointForWorktree)(client, worktreeId, options.instance, options.agent);
|
|
288
|
+
relayId = await (0, relays_1.registerRelay)(client, {
|
|
289
|
+
from: replyEndpoint,
|
|
290
|
+
to: workerEndpoint,
|
|
291
|
+
allowRelayChain: options.allowRelayChain,
|
|
292
|
+
});
|
|
293
|
+
// stderr, not stdout: `--contract` already owns this command's stdout
|
|
294
|
+
// (it prints the task id there), and two commands writing two ids to
|
|
295
|
+
// one stream is how a `$(…)` capture ends up with both. `ask --async`
|
|
296
|
+
// is the form that hands the relay id back on stdout.
|
|
297
|
+
console.error(`Relay registered: ${relayId}`);
|
|
258
298
|
}
|
|
259
299
|
// [DR2-05] Send API uses "content" not "message"
|
|
260
300
|
const sendBody = { content };
|
|
@@ -262,8 +302,8 @@ function createSendCommand() {
|
|
|
262
302
|
sendBody.cliToolId = agent;
|
|
263
303
|
}
|
|
264
304
|
// Issue #868: Include instance ID in send body
|
|
265
|
-
if (
|
|
266
|
-
sendBody.instanceId =
|
|
305
|
+
if (instanceId) {
|
|
306
|
+
sendBody.instanceId = instanceId;
|
|
267
307
|
}
|
|
268
308
|
// Issue #576: Include model in send body
|
|
269
309
|
if (options.model) {
|
|
@@ -284,6 +324,12 @@ function createSendCommand() {
|
|
|
284
324
|
if (taskId) {
|
|
285
325
|
await reportTaskStatus(client, taskId, 'failed');
|
|
286
326
|
}
|
|
327
|
+
// A relay whose message never arrived can never be answered; leaving
|
|
328
|
+
// it open would have the requester waiting 24h for a turn that was
|
|
329
|
+
// never started.
|
|
330
|
+
if (relayId) {
|
|
331
|
+
await (0, relays_1.cancelRelayQuietly)(client, relayId);
|
|
332
|
+
}
|
|
287
333
|
// Issue #1708: the session is sitting on a prompt, so the message
|
|
288
334
|
// would have been typed into the prompt's input line rather than
|
|
289
335
|
// reaching the agent. Reported on its own so an unattended runner sees
|
|
@@ -304,13 +350,13 @@ function createSendCommand() {
|
|
|
304
350
|
}
|
|
305
351
|
// Issue #1000: register the ad-hoc instance into the roster after the
|
|
306
352
|
// session has started, so a follow-up `commandmate instances` lists it.
|
|
307
|
-
if (options.register &&
|
|
308
|
-
await registerInstance(client, worktreeId,
|
|
353
|
+
if (options.register && instanceId) {
|
|
354
|
+
await registerInstance(client, worktreeId, instanceId, options.agent ?? instanceId);
|
|
309
355
|
}
|
|
310
356
|
// Issue #576: Enable auto-yes AFTER send when --model is specified
|
|
311
357
|
// This avoids auto-yes interfering with the /model command interaction
|
|
312
358
|
if (options.autoYes && options.model) {
|
|
313
|
-
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent);
|
|
359
|
+
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
|
|
314
360
|
}
|
|
315
361
|
}
|
|
316
362
|
catch (error) {
|
|
@@ -1 +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;
|
|
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;AA2DpC,wBAAgB,iBAAiB,IAAI,OAAO,CAuI3C"}
|