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
|
@@ -38,6 +38,22 @@ export interface ApiErrorResult {
|
|
|
38
38
|
message: string;
|
|
39
39
|
exitCode: number;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* What this function knows about the request, beyond its status (Issue #2404).
|
|
43
|
+
*
|
|
44
|
+
* `handleApiError` is a pure classifier over `(status, payload)` and has no way
|
|
45
|
+
* to know which server answered — which is exactly the fact a 404 needs. The
|
|
46
|
+
* caller's `Resource not found. Check the worktree ID.` sent an agent looking
|
|
47
|
+
* for a typo in an id that was correct: the CLI was dialling a *different*
|
|
48
|
+
* CommandMate server than the one that had started its session, and the id it
|
|
49
|
+
* was asking about lived on the other one. Optional so the two callers that
|
|
50
|
+
* classify without a client ({@link ApiClient} aside, `server-capabilities.ts`)
|
|
51
|
+
* keep compiling and keep their wording.
|
|
52
|
+
*/
|
|
53
|
+
export interface ApiErrorContext {
|
|
54
|
+
/** The base URL the failing request was actually sent to. */
|
|
55
|
+
serverUrl?: string;
|
|
56
|
+
}
|
|
41
57
|
/**
|
|
42
58
|
* Classify API errors into user-friendly messages and exit codes.
|
|
43
59
|
* [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
|
|
@@ -47,9 +63,12 @@ export interface ApiErrorResult {
|
|
|
47
63
|
* @param payload - Parsed error body, when the response carried one (Issue #1637).
|
|
48
64
|
* Used for 5xx only: the 4xx messages below are already specific, and are
|
|
49
65
|
* pinned by tests as the CLI's own wording.
|
|
66
|
+
* @param context - Which server answered, when the caller knows (Issue #2404).
|
|
67
|
+
* Read by the 404 branch only; the other messages do not send anyone looking
|
|
68
|
+
* in the wrong place.
|
|
50
69
|
* @returns User-friendly error message and exit code
|
|
51
70
|
*/
|
|
52
|
-
export declare function handleApiError(error: unknown, status?: number, payload?: ApiErrorPayload): ApiErrorResult;
|
|
71
|
+
export declare function handleApiError(error: unknown, status?: number, payload?: ApiErrorPayload, context?: ApiErrorContext): ApiErrorResult;
|
|
53
72
|
/**
|
|
54
73
|
* API Client for CLI HTTP communication.
|
|
55
74
|
* Uses Node.js built-in fetch. Handles auth headers and error mapping.
|
|
@@ -61,6 +80,16 @@ export declare class ApiClient {
|
|
|
61
80
|
baseUrl?: string;
|
|
62
81
|
token?: string;
|
|
63
82
|
});
|
|
83
|
+
/**
|
|
84
|
+
* The base URL this client actually dials (Issue #2404).
|
|
85
|
+
*
|
|
86
|
+
* Resolved once in the constructor through the precedence in
|
|
87
|
+
* `loadClientEnv()` (`--base-url` > exported `CM_PORT` > `~/.commandmate/.env`
|
|
88
|
+
* > 3000), which is why it is read from here rather than re-derived by each
|
|
89
|
+
* caller: a second derivation is a second answer, and "which server did this
|
|
90
|
+
* command talk to" only helps if it is the one the request went to.
|
|
91
|
+
*/
|
|
92
|
+
get serverUrl(): string;
|
|
64
93
|
private getHeaders;
|
|
65
94
|
/**
|
|
66
95
|
* GET without any status handling, for callers that must read the raw response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CA6EhB;AAeD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB1D;;;;;;;;OAQG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ1F;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBtC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvD;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAyBzD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA0BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC,EAAE,MAAM;IACnC,gEAAgE;aAChD,OAAO,CAAC,EAAE,eAAe;gBAJzC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IACnC,gEAAgE;IAChD,OAAO,CAAC,EAAE,eAAe,YAAA;IAM3C,uEAAuE;IACvE,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;CACF;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,CAAC,CAiBH;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASvF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
|
|
@@ -87,6 +87,10 @@ function serverErrorDetail(payload) {
|
|
|
87
87
|
? `${detail.slice(0, MAX_SERVER_ERROR_DETAIL)}…`
|
|
88
88
|
: detail;
|
|
89
89
|
}
|
|
90
|
+
/** Append `(server: <url>)` when the caller named one. */
|
|
91
|
+
function withServerUrl(message, context) {
|
|
92
|
+
return context?.serverUrl ? `${message} (server: ${context.serverUrl})` : message;
|
|
93
|
+
}
|
|
90
94
|
/**
|
|
91
95
|
* Classify API errors into user-friendly messages and exit codes.
|
|
92
96
|
* [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
|
|
@@ -96,9 +100,12 @@ function serverErrorDetail(payload) {
|
|
|
96
100
|
* @param payload - Parsed error body, when the response carried one (Issue #1637).
|
|
97
101
|
* Used for 5xx only: the 4xx messages below are already specific, and are
|
|
98
102
|
* pinned by tests as the CLI's own wording.
|
|
103
|
+
* @param context - Which server answered, when the caller knows (Issue #2404).
|
|
104
|
+
* Read by the 404 branch only; the other messages do not send anyone looking
|
|
105
|
+
* in the wrong place.
|
|
99
106
|
* @returns User-friendly error message and exit code
|
|
100
107
|
*/
|
|
101
|
-
function handleApiError(error, status, payload) {
|
|
108
|
+
function handleApiError(error, status, payload, context) {
|
|
102
109
|
// HTTP status-based errors
|
|
103
110
|
if (status !== undefined) {
|
|
104
111
|
switch (status) {
|
|
@@ -114,8 +121,12 @@ function handleApiError(error, status, payload) {
|
|
|
114
121
|
exitCode: types_1.ExitCode.CONFIG_ERROR,
|
|
115
122
|
};
|
|
116
123
|
case 404:
|
|
124
|
+
// Issue #2404: the sentence stays, so everything matching on it keeps
|
|
125
|
+
// matching; the URL is appended because "check the worktree ID" is
|
|
126
|
+
// advice about the wrong thing whenever the id is fine and the SERVER
|
|
127
|
+
// is the one that is wrong.
|
|
117
128
|
return {
|
|
118
|
-
message: 'Resource not found. Check the worktree ID.',
|
|
129
|
+
message: withServerUrl('Resource not found. Check the worktree ID.', context),
|
|
119
130
|
exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
|
|
120
131
|
};
|
|
121
132
|
case 429:
|
|
@@ -205,6 +216,18 @@ class ApiClient {
|
|
|
205
216
|
console.error('Warning: Connecting to remote server over HTTP. Auth token will be sent in plaintext. Use HTTPS for non-localhost connections.');
|
|
206
217
|
}
|
|
207
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* The base URL this client actually dials (Issue #2404).
|
|
221
|
+
*
|
|
222
|
+
* Resolved once in the constructor through the precedence in
|
|
223
|
+
* `loadClientEnv()` (`--base-url` > exported `CM_PORT` > `~/.commandmate/.env`
|
|
224
|
+
* > 3000), which is why it is read from here rather than re-derived by each
|
|
225
|
+
* caller: a second derivation is a second answer, and "which server did this
|
|
226
|
+
* command talk to" only helps if it is the one the request went to.
|
|
227
|
+
*/
|
|
228
|
+
get serverUrl() {
|
|
229
|
+
return this.baseUrl;
|
|
230
|
+
}
|
|
208
231
|
getHeaders() {
|
|
209
232
|
const headers = {
|
|
210
233
|
'Content-Type': 'application/json',
|
|
@@ -250,7 +273,7 @@ class ApiClient {
|
|
|
250
273
|
// Issue #1637: read the body first — handleApiError needs it to surface
|
|
251
274
|
// the server's reason for a 5xx instead of "check the logs".
|
|
252
275
|
const payload = await readErrorPayload(response);
|
|
253
|
-
const errResult = handleApiError(null, response.status, payload);
|
|
276
|
+
const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
|
|
254
277
|
throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
|
|
255
278
|
}
|
|
256
279
|
return (await response.json());
|
|
@@ -277,7 +300,7 @@ class ApiClient {
|
|
|
277
300
|
// Issue #1637: read the body first — handleApiError needs it to surface
|
|
278
301
|
// the server's reason for a 5xx instead of "check the logs".
|
|
279
302
|
const payload = await readErrorPayload(response);
|
|
280
|
-
const errResult = handleApiError(null, response.status, payload);
|
|
303
|
+
const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
|
|
281
304
|
throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
|
|
282
305
|
}
|
|
283
306
|
// Handle 204 No Content
|
|
@@ -309,7 +332,7 @@ class ApiClient {
|
|
|
309
332
|
// Issue #1637: read the body first — handleApiError needs it to surface
|
|
310
333
|
// the server's reason for a 5xx instead of "check the logs".
|
|
311
334
|
const payload = await readErrorPayload(response);
|
|
312
|
-
const errResult = handleApiError(null, response.status, payload);
|
|
335
|
+
const errResult = handleApiError(null, response.status, payload, { serverUrl: this.baseUrl });
|
|
313
336
|
throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
|
|
314
337
|
}
|
|
315
338
|
const text = await response.text();
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a CommandMate CLI command is spelled — the single source both the
|
|
3
|
+
* assistant context and the GUI read (Issue #2120).
|
|
4
|
+
*
|
|
5
|
+
* ## Why this file exists
|
|
6
|
+
*
|
|
7
|
+
* `resolveCommandMateBinary()` used to be a module-private function inside
|
|
8
|
+
* `src/lib/assistant/context-builder.ts`, where only the assistant prompt could
|
|
9
|
+
* see it. Issue #2120 puts the same four commands on screen in the roster pane,
|
|
10
|
+
* and a second copy of the `commandmate` / `commandmatedev` rule would be a
|
|
11
|
+
* second authority on the one thing the operator pastes into a shell: a
|
|
12
|
+
* development checkout would keep telling the assistant `commandmatedev` while
|
|
13
|
+
* telling the human `commandmate`, and the human's copy would simply not be on
|
|
14
|
+
* their PATH. So the rule moved here and both callers import it.
|
|
15
|
+
*
|
|
16
|
+
* ## Isomorphic on purpose
|
|
17
|
+
*
|
|
18
|
+
* {@link buildInstanceCliCommands} and {@link buildDelegationBrief} are pure
|
|
19
|
+
* functions of strings so the browser can call them.
|
|
20
|
+
* {@link resolveCommandMateBinary} reads an environment and is meant for the
|
|
21
|
+
* server — a client component cannot read `CM_LAUNCHED_BY` (Next.js inlines
|
|
22
|
+
* only `NEXT_PUBLIC_*` into the browser bundle), which is why
|
|
23
|
+
* `GET /api/worktrees/:id/cli-reference` exists to hand the answer down.
|
|
24
|
+
*
|
|
25
|
+
* Nothing here touches a DOM, and that is load-bearing rather than incidental:
|
|
26
|
+
* `commandmate peers` imports {@link resolveCommandMateBinary} from this file,
|
|
27
|
+
* and the CLI build (`tsconfig.cli.json`) has no DOM lib at all. The delegation
|
|
28
|
+
* brief's delivery into a composer therefore lives with the components that
|
|
29
|
+
* deliver it — see `insertIntoVisibleComposer` in
|
|
30
|
+
* `src/components/common/CommandPalette.tsx` (Issue #2376).
|
|
31
|
+
*/
|
|
32
|
+
/** The binary name a globally installed CommandMate puts on PATH. */
|
|
33
|
+
export declare const COMMANDMATE_GLOBAL_BINARY = "commandmate";
|
|
34
|
+
/**
|
|
35
|
+
* The binary name a repository checkout puts on PATH (`npm link` in this repo).
|
|
36
|
+
*
|
|
37
|
+
* Not a fallback in the "we could not tell" sense: `commandmate start` sets
|
|
38
|
+
* `CM_LAUNCHED_BY=commandmate-cli` on itself and on the server child it spawns
|
|
39
|
+
* (`src/cli/commands/start.ts`), so a server that was NOT started that way was
|
|
40
|
+
* started from a checkout, and `commandmatedev` is the command that exists.
|
|
41
|
+
*/
|
|
42
|
+
export declare const COMMANDMATE_DEV_BINARY = "commandmatedev";
|
|
43
|
+
/** The marker `commandmate start` stamps on the server process it launches. */
|
|
44
|
+
export declare const COMMANDMATE_CLI_LAUNCH_MARKER = "commandmate-cli";
|
|
45
|
+
/**
|
|
46
|
+
* The port a copied command does not have to name.
|
|
47
|
+
*
|
|
48
|
+
* `src/lib/env.ts` keeps its own private `DEFAULT_PORT` for the server's own
|
|
49
|
+
* binding; this constant answers a different question — "must the pasted line
|
|
50
|
+
* carry a `CM_PORT=` prefix?" — and is exported because the API route that
|
|
51
|
+
* decides it and the builder that renders it are in different layers.
|
|
52
|
+
*/
|
|
53
|
+
export declare const DEFAULT_SERVER_PORT = 3000;
|
|
54
|
+
/** The binary name to spell CommandMate commands with. */
|
|
55
|
+
export type CommandMateBinary = typeof COMMANDMATE_GLOBAL_BINARY | typeof COMMANDMATE_DEV_BINARY;
|
|
56
|
+
/**
|
|
57
|
+
* Which binary name the CLI commands aimed at THIS server should use.
|
|
58
|
+
*
|
|
59
|
+
* @param env - The environment to read; defaults to the server's own
|
|
60
|
+
* @returns `commandmate` when the server was started by the installed CLI,
|
|
61
|
+
* `commandmatedev` otherwise
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveCommandMateBinary(env?: Readonly<Record<string, string | undefined>>): CommandMateBinary;
|
|
64
|
+
/** The four session-targeting commands the roster pane offers, in display order. */
|
|
65
|
+
export declare const INSTANCE_CLI_COMMAND_IDS: readonly ["send", "wait", "capture", "respond"];
|
|
66
|
+
export type InstanceCliCommandId = (typeof INSTANCE_CLI_COMMAND_IDS)[number];
|
|
67
|
+
/**
|
|
68
|
+
* The answer `respond` is shown with.
|
|
69
|
+
*
|
|
70
|
+
* A NUMBER, never `yes`. `respond` hands its argument to the pane as keystrokes
|
|
71
|
+
* and does not resolve it semantically, so `yes` on a multiple-choice dialog is
|
|
72
|
+
* typed, ignored, and followed by Enter — which picks whatever the DEFAULT
|
|
73
|
+
* option happens to be. The number is the only form that selects what the
|
|
74
|
+
* operator meant. The note beside the command says so; this constant is what
|
|
75
|
+
* keeps the example itself from teaching the wrong habit.
|
|
76
|
+
*/
|
|
77
|
+
export declare const RESPOND_ANSWER_EXAMPLE = "1";
|
|
78
|
+
export interface InstanceCliCommandInput {
|
|
79
|
+
/** From {@link resolveCommandMateBinary}, never hardcoded by the caller. */
|
|
80
|
+
binary: string;
|
|
81
|
+
/** The worktree id as the CLI must be given it. */
|
|
82
|
+
worktreeId: string;
|
|
83
|
+
/**
|
|
84
|
+
* The instance id **as the server resolved it**
|
|
85
|
+
* (`GET /api/worktrees/:id/resolve-target`). Never a roster row read directly:
|
|
86
|
+
* Issue #1925 is the record of what two authorities answering this question
|
|
87
|
+
* cost.
|
|
88
|
+
*/
|
|
89
|
+
instanceId: string;
|
|
90
|
+
/**
|
|
91
|
+
* The port to name in a `CM_PORT=` prefix, or null when this server is on
|
|
92
|
+
* {@link DEFAULT_SERVER_PORT} and the prefix would be noise.
|
|
93
|
+
*
|
|
94
|
+
* There is deliberately no `--port` flag here: `send` / `wait` / `capture` /
|
|
95
|
+
* `respond` do not define one (only `start` / `stop` / `status` do), so a
|
|
96
|
+
* pasted `--port 3135` would be rejected by commander as an unknown option.
|
|
97
|
+
* `CM_PORT=<n> commandmate ls` is the documented way to aim one invocation at
|
|
98
|
+
* a non-default server (see `loadClientEnv()` in `src/cli/utils/server-url.ts`).
|
|
99
|
+
*/
|
|
100
|
+
portPrefix?: number | null;
|
|
101
|
+
/** Localized stand-in for the message body, e.g. `メッセージ`. */
|
|
102
|
+
messagePlaceholder: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Render the four commands that address one agent instance.
|
|
106
|
+
*
|
|
107
|
+
* The message body stays a PLACEHOLDER. Quoting a real body correctly in the
|
|
108
|
+
* browser means getting Japanese text, newlines and embedded quotes past a
|
|
109
|
+
* shell whose dialect this code cannot see, and a near-miss does not fail
|
|
110
|
+
* loudly — it sends a truncated prompt to a live agent.
|
|
111
|
+
*
|
|
112
|
+
* `worktreeId` and `instanceId` need no quoting of their own: both are
|
|
113
|
+
* validated before they can reach a roster row or this route
|
|
114
|
+
* (`isValidWorktreeId` / `isValidInstanceId` allow no shell metacharacter).
|
|
115
|
+
*
|
|
116
|
+
* @param input - Binary, target and presentation details
|
|
117
|
+
* @returns One shell line per command id
|
|
118
|
+
*/
|
|
119
|
+
export declare function buildInstanceCliCommands(input: InstanceCliCommandInput): Record<InstanceCliCommandId, string>;
|
|
120
|
+
/**
|
|
121
|
+
* `--timeout` the brief tells session A to use, in seconds.
|
|
122
|
+
*
|
|
123
|
+
* 30 minutes. Long enough that an ordinary implementation request is not cut
|
|
124
|
+
* off mid-turn, short enough that a session which died in its pane surfaces as
|
|
125
|
+
* an exit 124 in the same sitting rather than at the end of the day. A caller
|
|
126
|
+
* who wants a different one edits the line — it is a brief, not a config.
|
|
127
|
+
*/
|
|
128
|
+
export declare const DELEGATION_ASK_TIMEOUT_SECONDS = 1800;
|
|
129
|
+
/** The locales the brief is written in. Anything else falls back to English. */
|
|
130
|
+
export type DelegationBriefLocale = 'ja' | 'en';
|
|
131
|
+
export interface DelegationBriefInput {
|
|
132
|
+
/** From {@link resolveCommandMateBinary}, never hardcoded by the caller. */
|
|
133
|
+
binary: string;
|
|
134
|
+
/** The worktree id as the CLI must be given it. */
|
|
135
|
+
worktreeId: string;
|
|
136
|
+
/**
|
|
137
|
+
* The instance id **as the server resolved it**
|
|
138
|
+
* (`GET /api/worktrees/:id/resolve-target`) — the same rule
|
|
139
|
+
* {@link InstanceCliCommandInput.instanceId} states, for the same reason.
|
|
140
|
+
*/
|
|
141
|
+
instanceId: string;
|
|
142
|
+
/** The roster alias of the target instance, e.g. `Codex 2`. */
|
|
143
|
+
instanceLabel: string;
|
|
144
|
+
/** Display name of the CLI tool behind the instance, e.g. `Codex`. */
|
|
145
|
+
toolLabel: string;
|
|
146
|
+
/** As {@link InstanceCliCommandInput.portPrefix}. */
|
|
147
|
+
portPrefix?: number | null;
|
|
148
|
+
/** UI locale. Anything but `ja` is written in English. */
|
|
149
|
+
locale: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The paragraph one agent session pastes to another agent session's operator —
|
|
153
|
+
* "here is how you delegate to that session" — in the UI's own language.
|
|
154
|
+
*
|
|
155
|
+
* ## Why it lives beside {@link buildInstanceCliCommands}
|
|
156
|
+
*
|
|
157
|
+
* Both answer the same question (how is a CommandMate command aimed at ONE
|
|
158
|
+
* instance spelled?) from the same two server reads, and Issue #2120 already
|
|
159
|
+
* paid for learning that a second copy of the binary-name rule is a copy that
|
|
160
|
+
* tells the human one thing and the assistant another. The panel and the brief
|
|
161
|
+
* therefore share this module, and neither composes a command from what the
|
|
162
|
+
* browser happens to know.
|
|
163
|
+
*
|
|
164
|
+
* ## Why the text is here rather than in `locales/`
|
|
165
|
+
*
|
|
166
|
+
* It is a PROMPT, not a label. The whole value of it is that the four exit
|
|
167
|
+
* codes, the "do not answer their prompt" rule and the command spellings arrive
|
|
168
|
+
* together and unedited; a translator moving a line between keys, or a key
|
|
169
|
+
* resolving to its own name because the namespace was renamed, produces a brief
|
|
170
|
+
* that still looks like a brief and quietly drops the one clause that stops
|
|
171
|
+
* session A from answering session B's permission dialog. The two languages are
|
|
172
|
+
* written out in full, side by side, so a change to one is visibly a change to
|
|
173
|
+
* the other.
|
|
174
|
+
*
|
|
175
|
+
* @param input - Binary, target and locale
|
|
176
|
+
* @returns The brief, ready to be inserted into a composer
|
|
177
|
+
*/
|
|
178
|
+
export declare function buildDelegationBrief(input: DelegationBriefInput): string;
|
|
179
|
+
//# sourceMappingURL=command-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-reference.d.ts","sourceRoot":"","sources":["../../../src/lib/cli/command-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AAEvD,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GACzB,OAAO,yBAAyB,GAChC,OAAO,sBAAsB,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,iBAAiB,CAInB;AAED,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,iDAAkD,CAAC;AAExF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAmBtC;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAUnD,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAqDxE"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How a CommandMate CLI command is spelled — the single source both the
|
|
4
|
+
* assistant context and the GUI read (Issue #2120).
|
|
5
|
+
*
|
|
6
|
+
* ## Why this file exists
|
|
7
|
+
*
|
|
8
|
+
* `resolveCommandMateBinary()` used to be a module-private function inside
|
|
9
|
+
* `src/lib/assistant/context-builder.ts`, where only the assistant prompt could
|
|
10
|
+
* see it. Issue #2120 puts the same four commands on screen in the roster pane,
|
|
11
|
+
* and a second copy of the `commandmate` / `commandmatedev` rule would be a
|
|
12
|
+
* second authority on the one thing the operator pastes into a shell: a
|
|
13
|
+
* development checkout would keep telling the assistant `commandmatedev` while
|
|
14
|
+
* telling the human `commandmate`, and the human's copy would simply not be on
|
|
15
|
+
* their PATH. So the rule moved here and both callers import it.
|
|
16
|
+
*
|
|
17
|
+
* ## Isomorphic on purpose
|
|
18
|
+
*
|
|
19
|
+
* {@link buildInstanceCliCommands} and {@link buildDelegationBrief} are pure
|
|
20
|
+
* functions of strings so the browser can call them.
|
|
21
|
+
* {@link resolveCommandMateBinary} reads an environment and is meant for the
|
|
22
|
+
* server — a client component cannot read `CM_LAUNCHED_BY` (Next.js inlines
|
|
23
|
+
* only `NEXT_PUBLIC_*` into the browser bundle), which is why
|
|
24
|
+
* `GET /api/worktrees/:id/cli-reference` exists to hand the answer down.
|
|
25
|
+
*
|
|
26
|
+
* Nothing here touches a DOM, and that is load-bearing rather than incidental:
|
|
27
|
+
* `commandmate peers` imports {@link resolveCommandMateBinary} from this file,
|
|
28
|
+
* and the CLI build (`tsconfig.cli.json`) has no DOM lib at all. The delegation
|
|
29
|
+
* brief's delivery into a composer therefore lives with the components that
|
|
30
|
+
* deliver it — see `insertIntoVisibleComposer` in
|
|
31
|
+
* `src/components/common/CommandPalette.tsx` (Issue #2376).
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.DELEGATION_ASK_TIMEOUT_SECONDS = exports.RESPOND_ANSWER_EXAMPLE = exports.INSTANCE_CLI_COMMAND_IDS = exports.DEFAULT_SERVER_PORT = exports.COMMANDMATE_CLI_LAUNCH_MARKER = exports.COMMANDMATE_DEV_BINARY = exports.COMMANDMATE_GLOBAL_BINARY = void 0;
|
|
35
|
+
exports.resolveCommandMateBinary = resolveCommandMateBinary;
|
|
36
|
+
exports.buildInstanceCliCommands = buildInstanceCliCommands;
|
|
37
|
+
exports.buildDelegationBrief = buildDelegationBrief;
|
|
38
|
+
/** The binary name a globally installed CommandMate puts on PATH. */
|
|
39
|
+
exports.COMMANDMATE_GLOBAL_BINARY = 'commandmate';
|
|
40
|
+
/**
|
|
41
|
+
* The binary name a repository checkout puts on PATH (`npm link` in this repo).
|
|
42
|
+
*
|
|
43
|
+
* Not a fallback in the "we could not tell" sense: `commandmate start` sets
|
|
44
|
+
* `CM_LAUNCHED_BY=commandmate-cli` on itself and on the server child it spawns
|
|
45
|
+
* (`src/cli/commands/start.ts`), so a server that was NOT started that way was
|
|
46
|
+
* started from a checkout, and `commandmatedev` is the command that exists.
|
|
47
|
+
*/
|
|
48
|
+
exports.COMMANDMATE_DEV_BINARY = 'commandmatedev';
|
|
49
|
+
/** The marker `commandmate start` stamps on the server process it launches. */
|
|
50
|
+
exports.COMMANDMATE_CLI_LAUNCH_MARKER = 'commandmate-cli';
|
|
51
|
+
/**
|
|
52
|
+
* The port a copied command does not have to name.
|
|
53
|
+
*
|
|
54
|
+
* `src/lib/env.ts` keeps its own private `DEFAULT_PORT` for the server's own
|
|
55
|
+
* binding; this constant answers a different question — "must the pasted line
|
|
56
|
+
* carry a `CM_PORT=` prefix?" — and is exported because the API route that
|
|
57
|
+
* decides it and the builder that renders it are in different layers.
|
|
58
|
+
*/
|
|
59
|
+
exports.DEFAULT_SERVER_PORT = 3000;
|
|
60
|
+
/**
|
|
61
|
+
* Which binary name the CLI commands aimed at THIS server should use.
|
|
62
|
+
*
|
|
63
|
+
* @param env - The environment to read; defaults to the server's own
|
|
64
|
+
* @returns `commandmate` when the server was started by the installed CLI,
|
|
65
|
+
* `commandmatedev` otherwise
|
|
66
|
+
*/
|
|
67
|
+
function resolveCommandMateBinary(env = process.env) {
|
|
68
|
+
return env.CM_LAUNCHED_BY === exports.COMMANDMATE_CLI_LAUNCH_MARKER
|
|
69
|
+
? exports.COMMANDMATE_GLOBAL_BINARY
|
|
70
|
+
: exports.COMMANDMATE_DEV_BINARY;
|
|
71
|
+
}
|
|
72
|
+
/** The four session-targeting commands the roster pane offers, in display order. */
|
|
73
|
+
exports.INSTANCE_CLI_COMMAND_IDS = ['send', 'wait', 'capture', 'respond'];
|
|
74
|
+
/**
|
|
75
|
+
* The answer `respond` is shown with.
|
|
76
|
+
*
|
|
77
|
+
* A NUMBER, never `yes`. `respond` hands its argument to the pane as keystrokes
|
|
78
|
+
* and does not resolve it semantically, so `yes` on a multiple-choice dialog is
|
|
79
|
+
* typed, ignored, and followed by Enter — which picks whatever the DEFAULT
|
|
80
|
+
* option happens to be. The number is the only form that selects what the
|
|
81
|
+
* operator meant. The note beside the command says so; this constant is what
|
|
82
|
+
* keeps the example itself from teaching the wrong habit.
|
|
83
|
+
*/
|
|
84
|
+
exports.RESPOND_ANSWER_EXAMPLE = '1';
|
|
85
|
+
/**
|
|
86
|
+
* Render the four commands that address one agent instance.
|
|
87
|
+
*
|
|
88
|
+
* The message body stays a PLACEHOLDER. Quoting a real body correctly in the
|
|
89
|
+
* browser means getting Japanese text, newlines and embedded quotes past a
|
|
90
|
+
* shell whose dialect this code cannot see, and a near-miss does not fail
|
|
91
|
+
* loudly — it sends a truncated prompt to a live agent.
|
|
92
|
+
*
|
|
93
|
+
* `worktreeId` and `instanceId` need no quoting of their own: both are
|
|
94
|
+
* validated before they can reach a roster row or this route
|
|
95
|
+
* (`isValidWorktreeId` / `isValidInstanceId` allow no shell metacharacter).
|
|
96
|
+
*
|
|
97
|
+
* @param input - Binary, target and presentation details
|
|
98
|
+
* @returns One shell line per command id
|
|
99
|
+
*/
|
|
100
|
+
function buildInstanceCliCommands(input) {
|
|
101
|
+
const { binary, worktreeId, instanceId, messagePlaceholder } = input;
|
|
102
|
+
const prefix = input.portPrefix != null && input.portPrefix !== exports.DEFAULT_SERVER_PORT
|
|
103
|
+
? `CM_PORT=${input.portPrefix} `
|
|
104
|
+
: '';
|
|
105
|
+
const target = `--instance ${instanceId}`;
|
|
106
|
+
const head = `${prefix}${binary}`;
|
|
107
|
+
return {
|
|
108
|
+
send: `${head} send ${worktreeId} "${messagePlaceholder}" ${target}`,
|
|
109
|
+
// `--on-prompt human` is part of the copied line, not an afterthought: the
|
|
110
|
+
// default (`agent`) exits 10 the moment a prompt appears, which is right
|
|
111
|
+
// for a script polling in a loop and useless for the operator who just
|
|
112
|
+
// pasted a wait into their own terminal.
|
|
113
|
+
wait: `${head} wait ${worktreeId} ${target} --on-prompt human`,
|
|
114
|
+
capture: `${head} capture ${worktreeId} ${target}`,
|
|
115
|
+
respond: `${head} respond ${worktreeId} "${exports.RESPOND_ANSWER_EXAMPLE}" ${target}`,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// ===========================================================================
|
|
119
|
+
// Delegation brief (Issue #2376)
|
|
120
|
+
// ===========================================================================
|
|
121
|
+
/**
|
|
122
|
+
* `--timeout` the brief tells session A to use, in seconds.
|
|
123
|
+
*
|
|
124
|
+
* 30 minutes. Long enough that an ordinary implementation request is not cut
|
|
125
|
+
* off mid-turn, short enough that a session which died in its pane surfaces as
|
|
126
|
+
* an exit 124 in the same sitting rather than at the end of the day. A caller
|
|
127
|
+
* who wants a different one edits the line — it is a brief, not a config.
|
|
128
|
+
*/
|
|
129
|
+
exports.DELEGATION_ASK_TIMEOUT_SECONDS = 1800;
|
|
130
|
+
/**
|
|
131
|
+
* Rows of pane transcript the brief's progress-check line asks for.
|
|
132
|
+
*
|
|
133
|
+
* Matches what `capture --pane --tail 60` shows a human: enough to see what the
|
|
134
|
+
* other session is doing, short enough to paste into a report.
|
|
135
|
+
*/
|
|
136
|
+
const DELEGATION_CAPTURE_TAIL = 60;
|
|
137
|
+
/**
|
|
138
|
+
* The paragraph one agent session pastes to another agent session's operator —
|
|
139
|
+
* "here is how you delegate to that session" — in the UI's own language.
|
|
140
|
+
*
|
|
141
|
+
* ## Why it lives beside {@link buildInstanceCliCommands}
|
|
142
|
+
*
|
|
143
|
+
* Both answer the same question (how is a CommandMate command aimed at ONE
|
|
144
|
+
* instance spelled?) from the same two server reads, and Issue #2120 already
|
|
145
|
+
* paid for learning that a second copy of the binary-name rule is a copy that
|
|
146
|
+
* tells the human one thing and the assistant another. The panel and the brief
|
|
147
|
+
* therefore share this module, and neither composes a command from what the
|
|
148
|
+
* browser happens to know.
|
|
149
|
+
*
|
|
150
|
+
* ## Why the text is here rather than in `locales/`
|
|
151
|
+
*
|
|
152
|
+
* It is a PROMPT, not a label. The whole value of it is that the four exit
|
|
153
|
+
* codes, the "do not answer their prompt" rule and the command spellings arrive
|
|
154
|
+
* together and unedited; a translator moving a line between keys, or a key
|
|
155
|
+
* resolving to its own name because the namespace was renamed, produces a brief
|
|
156
|
+
* that still looks like a brief and quietly drops the one clause that stops
|
|
157
|
+
* session A from answering session B's permission dialog. The two languages are
|
|
158
|
+
* written out in full, side by side, so a change to one is visibly a change to
|
|
159
|
+
* the other.
|
|
160
|
+
*
|
|
161
|
+
* @param input - Binary, target and locale
|
|
162
|
+
* @returns The brief, ready to be inserted into a composer
|
|
163
|
+
*/
|
|
164
|
+
function buildDelegationBrief(input) {
|
|
165
|
+
const { binary, worktreeId, instanceId, instanceLabel, toolLabel } = input;
|
|
166
|
+
const prefix = input.portPrefix != null && input.portPrefix !== exports.DEFAULT_SERVER_PORT
|
|
167
|
+
? `CM_PORT=${input.portPrefix} `
|
|
168
|
+
: '';
|
|
169
|
+
const head = `${prefix}${binary}`;
|
|
170
|
+
const target = `--instance ${instanceId}`;
|
|
171
|
+
const locale = input.locale === 'ja' ? 'ja' : 'en';
|
|
172
|
+
const capture = `${head} capture ${worktreeId} ${target} --pane --tail ${DELEGATION_CAPTURE_TAIL}`;
|
|
173
|
+
// Issue #2377: the same delegation without the block. Offered as the SECOND
|
|
174
|
+
// line rather than as a replacement because the two are different jobs: `ask`
|
|
175
|
+
// is right when the answer is the next thing you need, `--async` is right when
|
|
176
|
+
// it is not — and a brief that only taught the asynchronous form would have
|
|
177
|
+
// agents registering relays for questions they are about to sit and wait for
|
|
178
|
+
// anyway.
|
|
179
|
+
const asyncAsk = `${head} ask ${worktreeId} ${target} "<request>" --async`;
|
|
180
|
+
if (locale === 'ja') {
|
|
181
|
+
const ask = `${head} ask ${worktreeId} ${target} "<依頼文>" --timeout ${exports.DELEGATION_ASK_TIMEOUT_SECONDS}`;
|
|
182
|
+
return [
|
|
183
|
+
`## 別セッション「${instanceLabel}」への委任`,
|
|
184
|
+
`- 宛先: worktree \`${worktreeId}\` / instance \`${instanceId}\`(${toolLabel})`,
|
|
185
|
+
`- 依頼: ${ask}`,
|
|
186
|
+
' - exit 0: 標準出力が返答本文',
|
|
187
|
+
' - exit 10: 相手が確認待ち。標準出力のprompt JSONを私に報告して止まる(自分で答えない)',
|
|
188
|
+
' - exit 124: タイムアウト。captureで状況を見て報告',
|
|
189
|
+
`- 待たない依頼: ${asyncAsk}`,
|
|
190
|
+
' - 即座に relay id を返して exit 0。完了時に `[from ...]` 付きで返答が私のコンポーザーに届く',
|
|
191
|
+
` - 状況確認: ${head} relays / 取り消し: ${head} relays cancel <relay-id>`,
|
|
192
|
+
`- 進捗確認: ${capture}`,
|
|
193
|
+
'- 禁止: respondで相手のプロンプトに答える / auto-yesを有効化する',
|
|
194
|
+
].join('\n');
|
|
195
|
+
}
|
|
196
|
+
const ask = `${head} ask ${worktreeId} ${target} "<request>" --timeout ${exports.DELEGATION_ASK_TIMEOUT_SECONDS}`;
|
|
197
|
+
return [
|
|
198
|
+
`## Delegating to session "${instanceLabel}"`,
|
|
199
|
+
`- Target: worktree \`${worktreeId}\` / instance \`${instanceId}\` (${toolLabel})`,
|
|
200
|
+
`- Ask: ${ask}`,
|
|
201
|
+
' - exit 0: stdout is the reply body',
|
|
202
|
+
' - exit 10: they are waiting on a confirmation. Report the prompt JSON on stdout back to me and stop (do not answer it yourself)',
|
|
203
|
+
' - exit 124: timed out. Look with capture and report what you see',
|
|
204
|
+
`- Ask without waiting: ${asyncAsk}`,
|
|
205
|
+
' - exits 0 with a relay id on stdout; the reply lands in my composer prefixed `[from ...]` when the turn ends',
|
|
206
|
+
` - Outstanding: ${head} relays / withdraw: ${head} relays cancel <relay-id>`,
|
|
207
|
+
`- Progress: ${capture}`,
|
|
208
|
+
'- Do not: answer their prompt with respond / turn auto-yes on',
|
|
209
|
+
].join('\n');
|
|
210
|
+
}
|
|
@@ -10,16 +10,29 @@
|
|
|
10
10
|
* Covers:
|
|
11
11
|
* - SGR sequences: ESC[Nm (colors, bold, underline, etc.)
|
|
12
12
|
* - OSC sequences: ESC]...BEL and ESC]...ST (ESC \\) - window title, and the
|
|
13
|
-
* OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912)
|
|
13
|
+
* OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912). Also
|
|
14
|
+
* available on its own as {@link stripOsc} (Issue #2369), for a consumer that
|
|
15
|
+
* renders SGR and must not render OSC.
|
|
14
16
|
* - CSI sequences: ESC[...letter (cursor movement, erase, etc.)
|
|
15
17
|
*
|
|
16
18
|
* Known limitations (SEC-002): 8-bit CSI (0x9B), DEC private modes (ESC[?25h),
|
|
17
19
|
* character-set switching (ESC(0), and some RGB color forms may not match. In
|
|
18
20
|
* practice tmux capture-pane output rarely contains these.
|
|
19
21
|
*/
|
|
22
|
+
/** {@link OSC_SOURCE} as a reusable global pattern. */
|
|
23
|
+
export declare const OSC_PATTERN: RegExp;
|
|
20
24
|
export declare const ANSI_PATTERN: RegExp;
|
|
21
25
|
/** Remove all ANSI escape sequences from a string. */
|
|
22
26
|
export declare function stripAnsi(str: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Remove OSC sequences only, leaving SGR (colour) and CSI untouched.
|
|
29
|
+
*
|
|
30
|
+
* For OSC 8 hyperlinks — `ESC ] 8 ; ; <url> ST <label> ESC ] 8 ; ; ST` — this
|
|
31
|
+
* drops both halves of the pair and keeps `<label>`, which is the text the
|
|
32
|
+
* terminal itself shows. See {@link OSC_PATTERN} for who needs this and why
|
|
33
|
+
* `stripAnsi` is not the answer for them.
|
|
34
|
+
*/
|
|
35
|
+
export declare function stripOsc(str: string): string;
|
|
23
36
|
/**
|
|
24
37
|
* Extract the ANSI escape sequences from a string, in order, discarding all
|
|
25
38
|
* other characters. Reuses the same tested pattern as {@link stripAnsi} so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/ansi.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/ansi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,uDAAuD;AACvD,eAAO,MAAM,WAAW,QAA8B,CAAC;AAEvD,eAAO,MAAM,YAAY,QAGxB,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxD"}
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* Covers:
|
|
12
12
|
* - SGR sequences: ESC[Nm (colors, bold, underline, etc.)
|
|
13
13
|
* - OSC sequences: ESC]...BEL and ESC]...ST (ESC \\) - window title, and the
|
|
14
|
-
* OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912)
|
|
14
|
+
* OSC 8 hyperlinks that claude/codex/copilot emit (Issue #1912). Also
|
|
15
|
+
* available on its own as {@link stripOsc} (Issue #2369), for a consumer that
|
|
16
|
+
* renders SGR and must not render OSC.
|
|
15
17
|
* - CSI sequences: ESC[...letter (cursor movement, erase, etc.)
|
|
16
18
|
*
|
|
17
19
|
* Known limitations (SEC-002): 8-bit CSI (0x9B), DEC private modes (ESC[?25h),
|
|
@@ -19,14 +21,49 @@
|
|
|
19
21
|
* practice tmux capture-pane output rarely contains these.
|
|
20
22
|
*/
|
|
21
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.ANSI_PATTERN = void 0;
|
|
24
|
+
exports.ANSI_PATTERN = exports.OSC_PATTERN = void 0;
|
|
23
25
|
exports.stripAnsi = stripAnsi;
|
|
26
|
+
exports.stripOsc = stripOsc;
|
|
24
27
|
exports.extractAnsiSequences = extractAnsiSequences;
|
|
25
|
-
|
|
28
|
+
/**
|
|
29
|
+
* One OSC sequence: `ESC ]`, a payload, and either terminator (BEL or ST).
|
|
30
|
+
*
|
|
31
|
+
* Split out of {@link ANSI_PATTERN} by Issue #2369 so a second consumer can
|
|
32
|
+
* strip OSC **without** stripping SGR. `sanitizeTerminalOutput`
|
|
33
|
+
* (`lib/security/sanitize.ts`) is that consumer: it hands the frame to
|
|
34
|
+
* `ansi-to-html`, which turns SGR into colour and does not know OSC at all — so
|
|
35
|
+
* before this split, Command Code's `/usage` panel rendered its breakdown link
|
|
36
|
+
* as the literal text `]8;;https://commandcode.ai/…\` beside the label. Calling
|
|
37
|
+
* `stripAnsi` there would have thrown the colour away with it.
|
|
38
|
+
*
|
|
39
|
+
* The payload class excludes ESC as well as BEL (Issue #1912) so a sequence
|
|
40
|
+
* ended by ST cannot run on to a BEL later in the buffer and swallow the visible
|
|
41
|
+
* link text between them. An OSC with no terminator at all matches nothing and
|
|
42
|
+
* is left in place, which is the safe answer: eating the rest of the frame is
|
|
43
|
+
* worse than showing one stray escape.
|
|
44
|
+
*
|
|
45
|
+
* The source is shared with {@link ANSI_PATTERN} rather than restated, so the
|
|
46
|
+
* two cannot drift about which terminators exist.
|
|
47
|
+
*/
|
|
48
|
+
const OSC_SOURCE = '\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)';
|
|
49
|
+
/** {@link OSC_SOURCE} as a reusable global pattern. */
|
|
50
|
+
exports.OSC_PATTERN = new RegExp(OSC_SOURCE, 'g');
|
|
51
|
+
exports.ANSI_PATTERN = new RegExp(`\\x1b\\[[0-9;]*[a-zA-Z]|${OSC_SOURCE}|\\[[0-9;]*m`, 'g');
|
|
26
52
|
/** Remove all ANSI escape sequences from a string. */
|
|
27
53
|
function stripAnsi(str) {
|
|
28
54
|
return str.replace(exports.ANSI_PATTERN, '');
|
|
29
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Remove OSC sequences only, leaving SGR (colour) and CSI untouched.
|
|
58
|
+
*
|
|
59
|
+
* For OSC 8 hyperlinks — `ESC ] 8 ; ; <url> ST <label> ESC ] 8 ; ; ST` — this
|
|
60
|
+
* drops both halves of the pair and keeps `<label>`, which is the text the
|
|
61
|
+
* terminal itself shows. See {@link OSC_PATTERN} for who needs this and why
|
|
62
|
+
* `stripAnsi` is not the answer for them.
|
|
63
|
+
*/
|
|
64
|
+
function stripOsc(str) {
|
|
65
|
+
return str.replace(exports.OSC_PATTERN, '');
|
|
66
|
+
}
|
|
30
67
|
/**
|
|
31
68
|
* Extract the ANSI escape sequences from a string, in order, discarding all
|
|
32
69
|
* other characters. Reuses the same tested pattern as {@link stripAnsi} so the
|