commandmate 0.31.3 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +487 -473
- package/.next/app-path-routes-manifest.json +37 -35
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- 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_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_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 +37 -35
- 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/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/UIUPchtWvcEuQgcbGJv4g/_buildManifest.js +1 -0
- package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
- package/.next/static/chunks/4718-0053d42fb635e700.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-06e1ff5ce2d126fd.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/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 +103 -7
- 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 +196 -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 +109 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +271 -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/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/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/polling/response-checker.js +45 -8
- 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 +400 -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 → UIUPchtWvcEuQgcbGJv4g}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* peers Command - the other agent sessions this one can talk to (Issue #2376)
|
|
4
|
+
*
|
|
5
|
+
* commandmate peers [--json]
|
|
6
|
+
*
|
|
7
|
+
* ## Why `ls` + `instances` was not enough
|
|
8
|
+
*
|
|
9
|
+
* The two ids `ask` needs live in two different commands and neither one knows
|
|
10
|
+
* the caller. `ls` lists every worktree on the machine — including the dozen
|
|
11
|
+
* belonging to repositories this session has nothing to do with — and
|
|
12
|
+
* `instances` needs a worktree id per call. So working out "who can I ask?" was
|
|
13
|
+
* a fan-out plus a filter the agent had to invent, and inventing it is what
|
|
14
|
+
* produced the wrong `--instance` values this Issue exists to stop.
|
|
15
|
+
*
|
|
16
|
+
* This is that fan-out, done once, narrowed to the caller's own repository, with
|
|
17
|
+
* the caller's own row marked `(you)` and a ready-to-run `ask` line against
|
|
18
|
+
* every other row. The listing is the answer AND the example: the acceptance
|
|
19
|
+
* criterion for this command is that a line pasted out of it works.
|
|
20
|
+
*
|
|
21
|
+
* Scoped to the repository rather than to everything because that is the unit a
|
|
22
|
+
* delegation is about — sibling worktrees of one project, which is what
|
|
23
|
+
* `/worktree-setup` produces — and because a global listing is what `ls`
|
|
24
|
+
* already is.
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.buildPeerRows = buildPeerRows;
|
|
28
|
+
exports.createPeersCommand = createPeersCommand;
|
|
29
|
+
const commander_1 = require("commander");
|
|
30
|
+
const api_client_1 = require("../utils/api-client");
|
|
31
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
32
|
+
const command_reference_1 = require("../../lib/cli/command-reference");
|
|
33
|
+
const whoami_1 = require("./whoami");
|
|
34
|
+
/**
|
|
35
|
+
* The four-word status vocabulary, derived exactly as `ls` derives it.
|
|
36
|
+
*
|
|
37
|
+
* Duplicated from `ls.ts` rather than shared: this is three lines of precedence
|
|
38
|
+
* over three booleans, and the alternative — exporting `deriveStatus` from a
|
|
39
|
+
* command module so another command module can import it — couples two
|
|
40
|
+
* commands to save nothing. The vocabulary itself is pinned by `ls`'s own tests.
|
|
41
|
+
*/
|
|
42
|
+
function deriveStatus(wt) {
|
|
43
|
+
if (wt.isWaitingForResponse)
|
|
44
|
+
return 'waiting';
|
|
45
|
+
if (wt.isProcessing)
|
|
46
|
+
return 'running';
|
|
47
|
+
if (wt.isSessionRunning)
|
|
48
|
+
return 'ready';
|
|
49
|
+
return 'idle';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Whether `wt` belongs to the same repository as `self`.
|
|
53
|
+
*
|
|
54
|
+
* `repositoryPath` is the identity — two checkouts of the same upstream have the
|
|
55
|
+
* same `repositoryName` and are not the same repository — and the name is the
|
|
56
|
+
* fallback for a row that predates the field. A row with neither is excluded
|
|
57
|
+
* rather than assumed: a listing that quietly widened to the whole machine
|
|
58
|
+
* would put a `--instance` for somebody else's project in front of an agent.
|
|
59
|
+
*
|
|
60
|
+
* @param wt - Candidate worktree
|
|
61
|
+
* @param self - The caller's own worktree row
|
|
62
|
+
*/
|
|
63
|
+
function sameRepository(wt, self) {
|
|
64
|
+
if (self.repositoryPath && wt.repositoryPath) {
|
|
65
|
+
return wt.repositoryPath === self.repositoryPath;
|
|
66
|
+
}
|
|
67
|
+
if (self.repositoryName && wt.repositoryName) {
|
|
68
|
+
return wt.repositoryName === self.repositoryName;
|
|
69
|
+
}
|
|
70
|
+
// Neither side declares one: the caller's own worktree is still a peer group
|
|
71
|
+
// of one, and nothing else can be shown to belong to it.
|
|
72
|
+
return wt.id === self.id;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The roster of a worktree as the list API sent it.
|
|
76
|
+
*
|
|
77
|
+
* A worktree with no roster still has its primary instance — that is what
|
|
78
|
+
* `--instance` resolves to with no roster row at all (#868) — so an empty
|
|
79
|
+
* roster is reported as the worktree's own CLI tool rather than as no sessions.
|
|
80
|
+
*
|
|
81
|
+
* A worktree that declares no CLI tool either contributes NO rows, rather than
|
|
82
|
+
* a row for the agent it is statistically most likely to be running. An `ask`
|
|
83
|
+
* line naming the wrong tool is a message typed into a session that was never
|
|
84
|
+
* started, and the whole point of this listing is that its lines run.
|
|
85
|
+
*/
|
|
86
|
+
function rosterOf(wt) {
|
|
87
|
+
if (wt.agentInstances && wt.agentInstances.length > 0)
|
|
88
|
+
return wt.agentInstances;
|
|
89
|
+
if (!wt.cliToolId)
|
|
90
|
+
return [];
|
|
91
|
+
return [{ id: wt.cliToolId, cliTool: wt.cliToolId, alias: wt.cliToolId, order: 0 }];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Quote an argument for the `ask` example when it needs it.
|
|
95
|
+
*
|
|
96
|
+
* Instance ids never do (`isValidInstanceId` allows no shell metacharacter) but
|
|
97
|
+
* this command prints ids, not aliases, precisely so the line is paste-safe.
|
|
98
|
+
* The guard is here so a future id shape cannot silently produce a line that
|
|
99
|
+
* means something else in a shell.
|
|
100
|
+
*/
|
|
101
|
+
function shellArg(value) {
|
|
102
|
+
return /^[A-Za-z0-9_.:@+-]+$/.test(value) ? value : JSON.stringify(value);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Build the listing.
|
|
106
|
+
*
|
|
107
|
+
* @param worktrees - Every worktree the server knows
|
|
108
|
+
* @param identity - Who is asking
|
|
109
|
+
* @param binary - The command name to spell the examples with
|
|
110
|
+
*/
|
|
111
|
+
function buildPeerRows(worktrees, identity, binary) {
|
|
112
|
+
const self = worktrees.find((wt) => wt.id === identity.worktreeId);
|
|
113
|
+
const scoped = self ? worktrees.filter((wt) => sameRepository(wt, self)) : [];
|
|
114
|
+
const rows = [];
|
|
115
|
+
for (const wt of scoped) {
|
|
116
|
+
const status = deriveStatus(wt);
|
|
117
|
+
for (const inst of rosterOf(wt)) {
|
|
118
|
+
const isSelf = wt.id === identity.worktreeId && inst.id === identity.instanceId;
|
|
119
|
+
rows.push({
|
|
120
|
+
worktreeId: wt.id,
|
|
121
|
+
instanceId: inst.id,
|
|
122
|
+
cliTool: inst.cliTool,
|
|
123
|
+
alias: inst.alias,
|
|
124
|
+
status,
|
|
125
|
+
isSelf,
|
|
126
|
+
ask: isSelf
|
|
127
|
+
? null
|
|
128
|
+
: `${binary} ask ${shellArg(wt.id)} --instance ${shellArg(inst.id)} "<request>"`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return rows;
|
|
133
|
+
}
|
|
134
|
+
/** Render the listing for a terminal. */
|
|
135
|
+
function formatPeers(rows) {
|
|
136
|
+
if (rows.length === 0)
|
|
137
|
+
return 'No peer sessions found.';
|
|
138
|
+
return rows
|
|
139
|
+
.map((row) => {
|
|
140
|
+
const head = `${row.worktreeId} / ${row.instanceId}`;
|
|
141
|
+
const marker = row.isSelf ? ' (you)' : '';
|
|
142
|
+
const lines = [
|
|
143
|
+
`${head}${marker}`,
|
|
144
|
+
` alias: ${row.alias} tool: ${row.cliTool} status: ${row.status}`,
|
|
145
|
+
];
|
|
146
|
+
if (row.ask)
|
|
147
|
+
lines.push(` ${row.ask}`);
|
|
148
|
+
return lines.join('\n');
|
|
149
|
+
})
|
|
150
|
+
.join('\n');
|
|
151
|
+
}
|
|
152
|
+
function createPeersCommand() {
|
|
153
|
+
const cmd = new commander_1.Command('peers');
|
|
154
|
+
cmd
|
|
155
|
+
.description('List the other agent sessions in this repository, with a ready-to-run `ask` line each')
|
|
156
|
+
.option('--json', 'JSON output')
|
|
157
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
158
|
+
.action(async (options) => {
|
|
159
|
+
try {
|
|
160
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
161
|
+
const identity = await (0, whoami_1.resolveSessionIdentity)(client);
|
|
162
|
+
if (!identity) {
|
|
163
|
+
console.error(whoami_1.NOT_IN_SESSION_MESSAGE);
|
|
164
|
+
process.exit(whoami_1.NOT_IN_SESSION);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const response = await client.get('/api/worktrees');
|
|
168
|
+
const worktrees = (response.worktrees ?? []);
|
|
169
|
+
// The same rule the GUI's panel and brief use (Issue #2120), from the
|
|
170
|
+
// same function: `CM_LAUNCHED_BY` is stamped by `commandmate start` on
|
|
171
|
+
// the server it spawns, and an agent pane inherits it — so a session
|
|
172
|
+
// started by the installed CLI is told `commandmate` and one started
|
|
173
|
+
// from a checkout is told `commandmatedev`, which is the name that
|
|
174
|
+
// actually exists on that PATH. A literal here would be a second
|
|
175
|
+
// authority on the one string the caller pastes into a shell.
|
|
176
|
+
const binary = (0, command_reference_1.resolveCommandMateBinary)();
|
|
177
|
+
const rows = buildPeerRows(worktrees, identity, binary);
|
|
178
|
+
if (options.json) {
|
|
179
|
+
console.log(JSON.stringify({
|
|
180
|
+
self: {
|
|
181
|
+
worktreeId: identity.worktreeId,
|
|
182
|
+
instanceId: identity.instanceId,
|
|
183
|
+
cliToolId: identity.cliToolId,
|
|
184
|
+
},
|
|
185
|
+
peers: rows,
|
|
186
|
+
}, null, 2));
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
console.log(formatPeers(rows));
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
return cmd;
|
|
196
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* relays Command - the standing delegations this machine is holding (#2377)
|
|
3
|
+
*
|
|
4
|
+
* commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
|
|
5
|
+
* commandmate relays cancel <relay-id>
|
|
6
|
+
*
|
|
7
|
+
* ## Why a command and not a flag on `ls`
|
|
8
|
+
*
|
|
9
|
+
* A relay is the one piece of state in CommandMate that belongs to TWO sessions
|
|
10
|
+
* at once: session A is owed an answer, session B owes one, and neither
|
|
11
|
+
* worktree's own listing can show that without inventing a column for the other
|
|
12
|
+
* side. So the listing is its own thing, and it prints the pair — `from` and
|
|
13
|
+
* `to`, `→` between them — rather than a status word per row.
|
|
14
|
+
*
|
|
15
|
+
* With no `--worktree` it asks the session it is running inside (`whoami`'s
|
|
16
|
+
* resolution) and prints that session's two sides. That is the shape an agent
|
|
17
|
+
* uses: "what am I waiting for, and what do I owe?" is a question about the
|
|
18
|
+
* caller, and making the caller name itself is what #2376 exists to stop.
|
|
19
|
+
*
|
|
20
|
+
* ## What this module exports besides the command
|
|
21
|
+
*
|
|
22
|
+
* The `--reply-to` plumbing, because `send` and `ask` both take that flag and
|
|
23
|
+
* both have to turn one string into the two ids the ledger stores. Keeping
|
|
24
|
+
* {@link resolveRelayEndpoint} here rather than in `send.ts` is what stops the
|
|
25
|
+
* two commands from resolving `self` two different ways.
|
|
26
|
+
*/
|
|
27
|
+
import { Command } from 'commander';
|
|
28
|
+
import { ApiClient } from '../utils/api-client';
|
|
29
|
+
/**
|
|
30
|
+
* The codes `POST /api/relays` refuses with.
|
|
31
|
+
*
|
|
32
|
+
* Mirrors `RelayRefusalCode` in `lib/relay/relay-policy` plus the route's own
|
|
33
|
+
* not-found; duplicated rather than imported so the CLI bundle does not pull the
|
|
34
|
+
* server's database graph in for four strings.
|
|
35
|
+
*/
|
|
36
|
+
export declare const RELAY_REFUSAL_CODES: Set<string>;
|
|
37
|
+
/** One end of a relay, as the API wants it. */
|
|
38
|
+
export interface RelayEndpointArg {
|
|
39
|
+
worktreeId: string;
|
|
40
|
+
instanceId: string;
|
|
41
|
+
}
|
|
42
|
+
/** The text `--reply-to` is documented with, shared by `send` and `ask`. */
|
|
43
|
+
export declare const REPLY_TO_OPTION_DESCRIPTION: string;
|
|
44
|
+
/** The text `--allow-relay-chain` is documented with. */
|
|
45
|
+
export declare const ALLOW_RELAY_CHAIN_DESCRIPTION: string;
|
|
46
|
+
/**
|
|
47
|
+
* Turn one `--reply-to` value into the two ids the ledger stores.
|
|
48
|
+
*
|
|
49
|
+
* Exits 2 rather than throwing: every failure here is a bad option value or a
|
|
50
|
+
* shell that is not inside a CommandMate session, and both are things the
|
|
51
|
+
* operator fixes on the command line.
|
|
52
|
+
*
|
|
53
|
+
* @param client - API client
|
|
54
|
+
* @param spec - The raw `--reply-to` value
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveRelayEndpoint(client: ApiClient, spec: string): Promise<RelayEndpointArg>;
|
|
57
|
+
/**
|
|
58
|
+
* The resolved endpoint for a worktree, with or without a named instance.
|
|
59
|
+
*
|
|
60
|
+
* Also what `send` / `ask` use for the relay's OTHER end — the session being
|
|
61
|
+
* asked — because the ledger stores a resolved id at both ends and the send's
|
|
62
|
+
* own `--instance` may have been omitted (meaning "the primary one", which only
|
|
63
|
+
* the server can name).
|
|
64
|
+
*
|
|
65
|
+
* @param client - API client
|
|
66
|
+
* @param worktreeId - Worktree ID
|
|
67
|
+
* @param selector - An instance id or roster alias, or undefined
|
|
68
|
+
* @param requestedAgent - The `--agent` value, if the caller gave one
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveEndpointForWorktree(client: ApiClient, worktreeId: string, selector: string | undefined, requestedAgent?: string): Promise<RelayEndpointArg>;
|
|
71
|
+
/** What {@link registerRelay} needs. */
|
|
72
|
+
export interface RegisterRelayInput {
|
|
73
|
+
/** The session that will receive the reply. */
|
|
74
|
+
from: RelayEndpointArg;
|
|
75
|
+
/** The session being asked. */
|
|
76
|
+
to: RelayEndpointArg;
|
|
77
|
+
allowRelayChain?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Open a relay, printing the server's own refusal and exiting 2 on one.
|
|
81
|
+
*
|
|
82
|
+
* Exit 2 and not a bespoke code: every refusal is a decision the operator can
|
|
83
|
+
* change (drop the flag, cancel the other relay, stop forwarding), which is what
|
|
84
|
+
* `CONFIG_ERROR` means everywhere else in this CLI.
|
|
85
|
+
*
|
|
86
|
+
* @returns The relay id
|
|
87
|
+
*/
|
|
88
|
+
export declare function registerRelay(client: ApiClient, input: RegisterRelayInput): Promise<string>;
|
|
89
|
+
/** Withdraw a relay, best effort. Used when the send it accompanied failed. */
|
|
90
|
+
export declare function cancelRelayQuietly(client: ApiClient, relayId: string): Promise<void>;
|
|
91
|
+
export declare function createRelaysCommand(): Command;
|
|
92
|
+
//# sourceMappingURL=relays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relays.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/relays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AAgB7E;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAM9B,CAAC;AAEH,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAEiD,CAAC;AAE1F,yDAAyD;AACzD,eAAO,MAAM,6BAA6B,QAER,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,EAAE,gBAAgB,CAAC;IACvB,+BAA+B;IAC/B,EAAE,EAAE,gBAAgB,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,+EAA+E;AAC/E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1F;AAyBD,wBAAgB,mBAAmB,IAAI,OAAO,CA8H7C"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* relays Command - the standing delegations this machine is holding (#2377)
|
|
4
|
+
*
|
|
5
|
+
* commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
|
|
6
|
+
* commandmate relays cancel <relay-id>
|
|
7
|
+
*
|
|
8
|
+
* ## Why a command and not a flag on `ls`
|
|
9
|
+
*
|
|
10
|
+
* A relay is the one piece of state in CommandMate that belongs to TWO sessions
|
|
11
|
+
* at once: session A is owed an answer, session B owes one, and neither
|
|
12
|
+
* worktree's own listing can show that without inventing a column for the other
|
|
13
|
+
* side. So the listing is its own thing, and it prints the pair — `from` and
|
|
14
|
+
* `to`, `→` between them — rather than a status word per row.
|
|
15
|
+
*
|
|
16
|
+
* With no `--worktree` it asks the session it is running inside (`whoami`'s
|
|
17
|
+
* resolution) and prints that session's two sides. That is the shape an agent
|
|
18
|
+
* uses: "what am I waiting for, and what do I owe?" is a question about the
|
|
19
|
+
* caller, and making the caller name itself is what #2376 exists to stop.
|
|
20
|
+
*
|
|
21
|
+
* ## What this module exports besides the command
|
|
22
|
+
*
|
|
23
|
+
* The `--reply-to` plumbing, because `send` and `ask` both take that flag and
|
|
24
|
+
* both have to turn one string into the two ids the ledger stores. Keeping
|
|
25
|
+
* {@link resolveRelayEndpoint} here rather than in `send.ts` is what stops the
|
|
26
|
+
* two commands from resolving `self` two different ways.
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
|
|
30
|
+
exports.resolveRelayEndpoint = resolveRelayEndpoint;
|
|
31
|
+
exports.resolveEndpointForWorktree = resolveEndpointForWorktree;
|
|
32
|
+
exports.registerRelay = registerRelay;
|
|
33
|
+
exports.cancelRelayQuietly = cancelRelayQuietly;
|
|
34
|
+
exports.createRelaysCommand = createRelaysCommand;
|
|
35
|
+
const commander_1 = require("commander");
|
|
36
|
+
const types_1 = require("../types");
|
|
37
|
+
const api_client_1 = require("../utils/api-client");
|
|
38
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
39
|
+
const session_target_1 = require("../utils/session-target");
|
|
40
|
+
const instances_1 = require("./instances");
|
|
41
|
+
const whoami_1 = require("./whoami");
|
|
42
|
+
/** crypto.randomUUID() output; mirrors RELAY_ID_PATTERN in the API route. */
|
|
43
|
+
const RELAY_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
44
|
+
/** The `--reply-to` values that mean "the session running this command". */
|
|
45
|
+
const SELF_SELECTORS = new Set(['self', 'me']);
|
|
46
|
+
/**
|
|
47
|
+
* The codes `POST /api/relays` refuses with.
|
|
48
|
+
*
|
|
49
|
+
* Mirrors `RelayRefusalCode` in `lib/relay/relay-policy` plus the route's own
|
|
50
|
+
* not-found; duplicated rather than imported so the CLI bundle does not pull the
|
|
51
|
+
* server's database graph in for four strings.
|
|
52
|
+
*/
|
|
53
|
+
exports.RELAY_REFUSAL_CODES = new Set([
|
|
54
|
+
'RELAY_CHAIN_BLOCKED',
|
|
55
|
+
'RELAY_HOPS_EXCEEDED',
|
|
56
|
+
'RELAY_DUPLICATE_PENDING',
|
|
57
|
+
'RELAY_SELF_TARGET',
|
|
58
|
+
'RELAY_WORKTREE_NOT_FOUND',
|
|
59
|
+
]);
|
|
60
|
+
/** The text `--reply-to` is documented with, shared by `send` and `ask`. */
|
|
61
|
+
exports.REPLY_TO_OPTION_DESCRIPTION = 'Deliver the target\'s reply to this session when it finishes: '
|
|
62
|
+
+ '<worktree-id>[@<instance-id|alias>], or `self` for the session running this command';
|
|
63
|
+
/** The text `--allow-relay-chain` is documented with. */
|
|
64
|
+
exports.ALLOW_RELAY_CHAIN_DESCRIPTION = 'Permit a relay opened while answering a relayed message (refused by default; '
|
|
65
|
+
+ 'chains still stop at 3 hops)';
|
|
66
|
+
/**
|
|
67
|
+
* Turn one `--reply-to` value into the two ids the ledger stores.
|
|
68
|
+
*
|
|
69
|
+
* Exits 2 rather than throwing: every failure here is a bad option value or a
|
|
70
|
+
* shell that is not inside a CommandMate session, and both are things the
|
|
71
|
+
* operator fixes on the command line.
|
|
72
|
+
*
|
|
73
|
+
* @param client - API client
|
|
74
|
+
* @param spec - The raw `--reply-to` value
|
|
75
|
+
*/
|
|
76
|
+
async function resolveRelayEndpoint(client, spec) {
|
|
77
|
+
if (SELF_SELECTORS.has(spec.trim().toLowerCase())) {
|
|
78
|
+
const identity = await (0, whoami_1.resolveSessionIdentity)(client);
|
|
79
|
+
if (!identity) {
|
|
80
|
+
console.error(whoami_1.NOT_IN_SESSION_MESSAGE);
|
|
81
|
+
console.error(' --reply-to self needs an identity; name the session explicitly instead.');
|
|
82
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
83
|
+
}
|
|
84
|
+
return { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
|
|
85
|
+
}
|
|
86
|
+
const at = spec.indexOf('@');
|
|
87
|
+
const worktreeId = at === -1 ? spec : spec.slice(0, at);
|
|
88
|
+
const selector = at === -1 ? undefined : spec.slice(at + 1);
|
|
89
|
+
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
90
|
+
console.error('Error: --reply-to must start with a valid worktree ID.');
|
|
91
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
92
|
+
}
|
|
93
|
+
if (selector !== undefined && !(0, instances_1.isInstanceSelector)(selector)) {
|
|
94
|
+
console.error(`Error: --reply-to instance part: ${instances_1.INSTANCE_SELECTOR_ERROR}`);
|
|
95
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
96
|
+
}
|
|
97
|
+
return resolveEndpointForWorktree(client, worktreeId, selector);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The resolved endpoint for a worktree, with or without a named instance.
|
|
101
|
+
*
|
|
102
|
+
* Also what `send` / `ask` use for the relay's OTHER end — the session being
|
|
103
|
+
* asked — because the ledger stores a resolved id at both ends and the send's
|
|
104
|
+
* own `--instance` may have been omitted (meaning "the primary one", which only
|
|
105
|
+
* the server can name).
|
|
106
|
+
*
|
|
107
|
+
* @param client - API client
|
|
108
|
+
* @param worktreeId - Worktree ID
|
|
109
|
+
* @param selector - An instance id or roster alias, or undefined
|
|
110
|
+
* @param requestedAgent - The `--agent` value, if the caller gave one
|
|
111
|
+
*/
|
|
112
|
+
async function resolveEndpointForWorktree(client, worktreeId, selector, requestedAgent) {
|
|
113
|
+
if (selector !== undefined) {
|
|
114
|
+
const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, selector, requestedAgent);
|
|
115
|
+
const instanceId = target.instanceId;
|
|
116
|
+
if (!instanceId) {
|
|
117
|
+
console.error(`Error: could not resolve instance '${selector}' in ${worktreeId}.`);
|
|
118
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
119
|
+
}
|
|
120
|
+
return { worktreeId, instanceId };
|
|
121
|
+
}
|
|
122
|
+
// No instance named: the server's own default for the worktree, which for a
|
|
123
|
+
// roster of one is that tool's primary instance. Asked rather than assumed —
|
|
124
|
+
// the CLI guessing `claude` is exactly the second authority #1925 removed.
|
|
125
|
+
const target = await (0, session_target_1.resolveSessionTarget)(client, worktreeId, {
|
|
126
|
+
requestedCliTool: requestedAgent,
|
|
127
|
+
});
|
|
128
|
+
const instanceId = target.instanceId ?? target.cliToolId;
|
|
129
|
+
if (!instanceId) {
|
|
130
|
+
console.error(`Error: ${worktreeId} declares no agent, so --reply-to cannot name one of its sessions. `
|
|
131
|
+
+ 'Use <worktree-id>@<instance-id>.');
|
|
132
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
133
|
+
}
|
|
134
|
+
return { worktreeId, instanceId };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Open a relay, printing the server's own refusal and exiting 2 on one.
|
|
138
|
+
*
|
|
139
|
+
* Exit 2 and not a bespoke code: every refusal is a decision the operator can
|
|
140
|
+
* change (drop the flag, cancel the other relay, stop forwarding), which is what
|
|
141
|
+
* `CONFIG_ERROR` means everywhere else in this CLI.
|
|
142
|
+
*
|
|
143
|
+
* @returns The relay id
|
|
144
|
+
*/
|
|
145
|
+
async function registerRelay(client, input) {
|
|
146
|
+
try {
|
|
147
|
+
const response = await client.post('/api/relays', {
|
|
148
|
+
from: input.from,
|
|
149
|
+
to: input.to,
|
|
150
|
+
allowRelayChain: input.allowRelayChain === true,
|
|
151
|
+
});
|
|
152
|
+
return response.relay.id;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
|
|
156
|
+
console.error(`Error: ${error.payload?.error ?? error.apiCode}`);
|
|
157
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Withdraw a relay, best effort. Used when the send it accompanied failed. */
|
|
163
|
+
async function cancelRelayQuietly(client, relayId) {
|
|
164
|
+
try {
|
|
165
|
+
await client.post(`/api/relays/${relayId}/cancel`);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
console.error(`Warning: could not withdraw relay ${relayId}; it will expire on its own.`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function endpointLabel(endpoint) {
|
|
172
|
+
return `${endpoint.worktreeId}/${endpoint.instanceId}`;
|
|
173
|
+
}
|
|
174
|
+
function printRelayLine(relay) {
|
|
175
|
+
console.log([
|
|
176
|
+
relay.id,
|
|
177
|
+
relay.state,
|
|
178
|
+
`${endpointLabel(relay.from)} <- ${endpointLabel(relay.to)}`,
|
|
179
|
+
`hops=${relay.hops}`,
|
|
180
|
+
`expires=${new Date(relay.expiresAt).toISOString()}`,
|
|
181
|
+
].join('\t'));
|
|
182
|
+
}
|
|
183
|
+
function createRelaysCommand() {
|
|
184
|
+
const cmd = new commander_1.Command('relays');
|
|
185
|
+
cmd
|
|
186
|
+
.description('List the open relays this session is waiting on and owes')
|
|
187
|
+
.option('--worktree <id>', 'Worktree to list (defaults to the session running this command)')
|
|
188
|
+
.option('--instance <id>', 'Agent instance inside --worktree (id or roster alias)')
|
|
189
|
+
.option('--json', 'JSON output')
|
|
190
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
191
|
+
.addHelpText('after', `
|
|
192
|
+
Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
|
|
193
|
+
|
|
194
|
+
States: pending (the worker has not finished), prompt (it stopped on a
|
|
195
|
+
confirmation and the requester was told), delivered / expired / cancelled.
|
|
196
|
+
|
|
197
|
+
Withdraw one with \`commandmate relays cancel <relay-id>\`.
|
|
198
|
+
`)
|
|
199
|
+
.action(async (options) => {
|
|
200
|
+
try {
|
|
201
|
+
if (options.worktree && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
|
|
202
|
+
console.error('Error: Invalid worktree ID format.');
|
|
203
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
204
|
+
}
|
|
205
|
+
if (options.instance && !(0, instances_1.isInstanceSelector)(options.instance)) {
|
|
206
|
+
console.error(instances_1.INSTANCE_SELECTOR_ERROR);
|
|
207
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
208
|
+
}
|
|
209
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
210
|
+
let endpoint = null;
|
|
211
|
+
if (options.worktree) {
|
|
212
|
+
endpoint = await resolveEndpointForWorktree(client, options.worktree, options.instance);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const identity = await (0, whoami_1.resolveSessionIdentity)(client);
|
|
216
|
+
if (identity) {
|
|
217
|
+
endpoint = { worktreeId: identity.worktreeId, instanceId: identity.instanceId };
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const query = new URLSearchParams();
|
|
221
|
+
if (endpoint) {
|
|
222
|
+
query.set('worktree', endpoint.worktreeId);
|
|
223
|
+
query.set('instance', endpoint.instanceId);
|
|
224
|
+
}
|
|
225
|
+
const qs = query.toString();
|
|
226
|
+
const response = await client.get(`/api/relays${qs ? `?${qs}` : ''}`);
|
|
227
|
+
if (options.json) {
|
|
228
|
+
console.log(JSON.stringify(response, null, 2));
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (!endpoint) {
|
|
232
|
+
console.error('Not inside a CommandMate agent session and no --worktree given; '
|
|
233
|
+
+ 'printing counts only.');
|
|
234
|
+
}
|
|
235
|
+
const { counts } = response;
|
|
236
|
+
console.error(`relays: pending=${counts.pending} prompt=${counts.prompt} `
|
|
237
|
+
+ `delivered=${counts.delivered} expired=${counts.expired} cancelled=${counts.cancelled}`);
|
|
238
|
+
if (response.awaiting.length === 0 && response.owed.length === 0) {
|
|
239
|
+
console.error('No open relays.');
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (response.awaiting.length > 0) {
|
|
243
|
+
console.error(`# waiting for (${response.awaiting.length})`);
|
|
244
|
+
response.awaiting.forEach(printRelayLine);
|
|
245
|
+
}
|
|
246
|
+
if (response.owed.length > 0) {
|
|
247
|
+
console.error(`# owed by me (${response.owed.length})`);
|
|
248
|
+
response.owed.forEach(printRelayLine);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
cmd
|
|
256
|
+
.command('cancel')
|
|
257
|
+
.description('Withdraw an open relay so its reply is never delivered')
|
|
258
|
+
.argument('<relay-id>', 'Relay ID')
|
|
259
|
+
.option('--json', 'JSON output')
|
|
260
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
261
|
+
.action(async (relayId, options) => {
|
|
262
|
+
try {
|
|
263
|
+
if (!RELAY_ID_PATTERN.test(relayId)) {
|
|
264
|
+
console.error('Error: Invalid relay ID format.');
|
|
265
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
266
|
+
}
|
|
267
|
+
const client = new api_client_1.ApiClient({ token: options.token });
|
|
268
|
+
try {
|
|
269
|
+
const response = await client.post(`/api/relays/${relayId}/cancel`);
|
|
270
|
+
if (options.json) {
|
|
271
|
+
console.log(JSON.stringify(response, null, 2));
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
console.error(`Relay ${relayId} cancelled.`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
// A relay that already delivered is not a failure to report as one:
|
|
279
|
+
// saying "cancelled" would tell the caller they stopped a delivery
|
|
280
|
+
// that in fact happened.
|
|
281
|
+
if (error instanceof api_client_1.ApiError && error.apiCode === 'RELAY_ALREADY_CLOSED') {
|
|
282
|
+
console.error(`Error: ${error.payload?.error ?? 'Relay is already closed.'}`);
|
|
283
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
284
|
+
}
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
(0, command_helpers_1.handleCommandError)(error);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
return cmd;
|
|
293
|
+
}
|
|
@@ -4,5 +4,8 @@
|
|
|
4
4
|
* Issue #1551: report metrics (Eval metrics)
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
|
+
import type { RelayCountsResponse } from '../types/api-responses';
|
|
8
|
+
/** The relay line, in the same shape as the four above it. */
|
|
9
|
+
export declare function formatRelayCounts(counts: RelayCountsResponse): string;
|
|
7
10
|
export declare function createReportCommand(): Command;
|
|
8
11
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAGV,mBAAmB,EAKpB,MAAM,wBAAwB,CAAC;AA+EhC,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAKrE;AAmBD,wBAAgB,mBAAmB,IAAI,OAAO,CAiL7C"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Issue #1551: report metrics (Eval metrics)
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.formatRelayCounts = formatRelayCounts;
|
|
8
9
|
exports.createReportCommand = createReportCommand;
|
|
9
10
|
const commander_1 = require("commander");
|
|
10
11
|
const types_1 = require("../types");
|
|
@@ -59,6 +60,28 @@ const MAX_METRICS_DAYS = 90;
|
|
|
59
60
|
function formatRate(value) {
|
|
60
61
|
return value === null ? 'n/a' : `${(value * 100).toFixed(1)}%`;
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Relay counts over the same window, or null when the daemon has no ledger.
|
|
65
|
+
*
|
|
66
|
+
* Best effort and separate from the vibe metrics on purpose: `/api/metrics/vibe`
|
|
67
|
+
* is computed from tasks and verification runs, and a relay is neither. A daemon
|
|
68
|
+
* that predates Issue #2377 answers 404 here, which is a reason to print the
|
|
69
|
+
* metrics without the relay line, not a reason to fail the command.
|
|
70
|
+
*/
|
|
71
|
+
async function readRelayCounts(client, days) {
|
|
72
|
+
try {
|
|
73
|
+
const response = await client.get(`/api/relays?days=${encodeURIComponent(String(days))}`);
|
|
74
|
+
return response.counts ?? null;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** The relay line, in the same shape as the four above it. */
|
|
81
|
+
function formatRelayCounts(counts) {
|
|
82
|
+
return (`Relays: ${counts.delivered} delivered / ${counts.prompt} waiting on a prompt `
|
|
83
|
+
+ `/ ${counts.expired} expired (${counts.pending} still open, ${counts.cancelled} cancelled)`);
|
|
84
|
+
}
|
|
62
85
|
function formatVibeMetrics(m) {
|
|
63
86
|
const { tasks, verification, intervention } = m;
|
|
64
87
|
const topFails = verification.gateFailBreakdown
|
|
@@ -215,11 +238,16 @@ function createReportCommand() {
|
|
|
215
238
|
}
|
|
216
239
|
const client = new api_client_1.ApiClient({ token: options.token });
|
|
217
240
|
const data = await client.get(`/api/metrics/vibe?days=${encodeURIComponent(String(days))}`);
|
|
241
|
+
// Issue #2377: delegation between sessions is work this harness did, and
|
|
242
|
+
// until now it was the only kind that left no mark on the metrics.
|
|
243
|
+
const relays = await readRelayCounts(client, days);
|
|
218
244
|
if (options.json) {
|
|
219
|
-
console.log(JSON.stringify(data.metrics, null, 2));
|
|
245
|
+
console.log(JSON.stringify({ ...data.metrics, relays }, null, 2));
|
|
220
246
|
}
|
|
221
247
|
else {
|
|
222
248
|
console.log(formatVibeMetrics(data.metrics));
|
|
249
|
+
if (relays)
|
|
250
|
+
console.log(formatRelayCounts(relays));
|
|
223
251
|
}
|
|
224
252
|
}
|
|
225
253
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2JpC,wBAAgB,oBAAoB,IAAI,OAAO,CAwK9C"}
|