commandmate 0.31.3 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +498 -484
- package/.next/app-path-routes-manifest.json +44 -42
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -32
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +2 -33
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/relays/route.js +1 -0
- package/.next/server/app/api/relays/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +103 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +44 -42
- package/.next/server/chunks/1210.js +1 -0
- package/.next/server/chunks/153.js +1 -0
- package/.next/server/chunks/1886.js +1 -1
- package/.next/server/chunks/21.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3077.js +67 -0
- package/.next/server/chunks/3086.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3270.js +1 -0
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3730.js +1 -0
- package/.next/server/chunks/3925.js +1 -0
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4443.js +2 -1
- package/.next/server/chunks/5043.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5220.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/595.js +3 -3
- package/.next/server/chunks/6286.js +48 -0
- package/.next/server/chunks/6306.js +1 -0
- package/.next/server/chunks/6363.js +1 -0
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6491.js +103 -0
- package/.next/server/chunks/{9798.js → 6661.js} +1 -2
- package/.next/server/chunks/6838.js +1 -0
- package/.next/server/chunks/7875.js +25 -0
- package/.next/server/chunks/7890.js +1 -0
- package/.next/server/chunks/8063.js +32 -0
- package/.next/server/chunks/8118.js +1 -1
- package/.next/server/chunks/{7587.js → 8554.js} +1 -1
- package/.next/server/chunks/8687.js +1 -0
- package/.next/server/chunks/8807.js +37 -3
- package/.next/server/chunks/8918.js +6 -4
- package/.next/server/chunks/9123.js +2 -2
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +21 -5
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Lno4w_zWXdGdlfXg06Vp8/_buildManifest.js +1 -0
- package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
- package/.next/static/chunks/4718-9d63107c612a065d.js +1 -0
- package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
- package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
- package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
- package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
- package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
- package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
- package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
- package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
- package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
- package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-3d82a9355d5612d9.js +1 -0
- package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
- package/.next/static/css/96d94a4ba771efc3.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
- package/.next/types/app/api/relays/route.ts +347 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/README.md +6 -2
- package/dist/cli/commands/ask.d.ts +34 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +494 -0
- package/dist/cli/commands/capture.d.ts +20 -0
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +80 -30
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +47 -4
- package/dist/cli/commands/instances.d.ts +67 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +147 -22
- package/dist/cli/commands/peers.d.ts +64 -0
- package/dist/cli/commands/peers.d.ts.map +1 -0
- package/dist/cli/commands/peers.js +208 -0
- package/dist/cli/commands/relays.d.ts +92 -0
- package/dist/cli/commands/relays.d.ts.map +1 -0
- package/dist/cli/commands/relays.js +293 -0
- package/dist/cli/commands/report.d.ts +3 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +29 -1
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +13 -10
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +66 -20
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +30 -0
- package/dist/cli/commands/wait.d.ts +20 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +55 -6
- package/dist/cli/commands/whoami.d.ts +176 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +377 -0
- package/dist/cli/docs/agent-operations.d.ts +25 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +184 -1
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +25 -1
- package/dist/cli/types/api-responses.d.ts +93 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +16 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +30 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +28 -5
- package/dist/lib/cli/command-reference.d.ts +179 -0
- package/dist/lib/cli/command-reference.d.ts.map +1 -0
- package/dist/lib/cli/command-reference.js +210 -0
- package/dist/lib/detection/ansi.d.ts +14 -1
- package/dist/lib/detection/ansi.d.ts.map +1 -1
- package/dist/lib/detection/ansi.js +40 -3
- package/dist/lib/detection/status-reason.d.ts +28 -0
- package/dist/lib/detection/status-reason.d.ts.map +1 -1
- package/dist/lib/detection/status-reason.js +28 -0
- package/dist/server/locales/en/worktree.json +23 -0
- package/dist/server/locales/ja/worktree.json +23 -0
- package/dist/server/src/lib/auto-yes-poller.js +26 -11
- package/dist/server/src/lib/db/chat-db.js +161 -7
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v60-session-relays.js +110 -0
- package/dist/server/src/lib/db/relay-db.js +343 -0
- package/dist/server/src/lib/detection/ansi.js +40 -3
- package/dist/server/src/lib/detection/cli-patterns.js +206 -2
- package/dist/server/src/lib/detection/selection-shape.js +72 -1
- package/dist/server/src/lib/detection/status-reason.js +28 -0
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +13 -7
- package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
- package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
- package/dist/server/src/lib/hooks/agent-event-service.js +27 -5
- package/dist/server/src/lib/hooks/sources/codex/history.js +63 -3
- package/dist/server/src/lib/hooks/sources/codex/transcript.js +53 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +112 -15
- package/dist/server/src/lib/hooks/stop-history-capture.js +252 -50
- package/dist/server/src/lib/polling/response-checker.js +174 -13
- package/dist/server/src/lib/polling/response-dedup.js +136 -0
- package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
- package/dist/server/src/lib/realtime/waiting-broadcast.js +12 -0
- package/dist/server/src/lib/relay/relay-delivery.js +554 -0
- package/dist/server/src/lib/relay/relay-messages.js +144 -0
- package/dist/server/src/lib/relay/relay-policy.js +127 -0
- package/dist/server/src/lib/relay/relay-readiness.js +63 -0
- package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
- package/dist/server/src/lib/relay/relay-system-line.js +79 -0
- package/dist/server/src/lib/relay/relay-triggers.js +177 -0
- package/dist/server/src/lib/relay/types.js +25 -0
- package/dist/server/src/lib/session/current-output-builder.js +18 -0
- package/dist/server/src/lib/session/send-user-message.js +1 -0
- package/package.json +1 -1
- package/.next/server/chunks/1058.js +0 -1
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/261.js +0 -1
- package/.next/server/chunks/2739.js +0 -1
- package/.next/server/chunks/2839.js +0 -1
- package/.next/server/chunks/3484.js +0 -1
- package/.next/server/chunks/358.js +0 -1
- package/.next/server/chunks/3869.js +0 -1
- package/.next/server/chunks/4325.js +0 -1
- package/.next/server/chunks/4393.js +0 -1
- package/.next/server/chunks/5017.js +0 -1
- package/.next/server/chunks/5120.js +0 -1
- package/.next/server/chunks/552.js +0 -25
- package/.next/server/chunks/6130.js +0 -1
- package/.next/server/chunks/7836.js +0 -1
- package/.next/server/chunks/7859.js +0 -21
- package/.next/server/chunks/9696.js +0 -3
- package/.next/static/0hTIackGXw6v7diXJS6yN/_buildManifest.js +0 -1
- package/.next/static/chunks/2813-de885de8a4b11910.js +0 -1
- package/.next/static/chunks/4718-07ec4e10186928db.js +0 -1
- package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
- package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
- package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-91b639c90795baa9.js +0 -1
- package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
- package/.next/static/css/acc4b9c3feb04287.css +0 -1
- /package/.next/static/{0hTIackGXw6v7diXJS6yN → Lno4w_zWXdGdlfXg06Vp8}/_ssgManifest.js +0 -0
|
@@ -61,6 +61,34 @@ export declare const STATUS_REASON: {
|
|
|
61
61
|
* `Type to search models...` box.
|
|
62
62
|
*/
|
|
63
63
|
readonly COMMAND_CODE_SELECTION_LIST: "command_code_selection_list";
|
|
64
|
+
/**
|
|
65
|
+
* Issue #2369: a Command Code overlay that only Esc leaves.
|
|
66
|
+
*
|
|
67
|
+
* `/usage` opens a read-only panel — a plan header, two usage meters, a
|
|
68
|
+
* breakdown URL — whose last row is `Press Esc to close`. There is no
|
|
69
|
+
* highlight to move, no numbered option and no confirm key; the ONE thing the
|
|
70
|
+
* screen accepts is the dismiss.
|
|
71
|
+
*
|
|
72
|
+
* Distinct from {@link STATUS_REASON.COMMAND_CODE_SELECTION_LIST} because the
|
|
73
|
+
* two screens want different controls, and that is the whole of this Issue:
|
|
74
|
+
* before it, this panel matched no rule at all, reached the `default` floor
|
|
75
|
+
* and so raised `isUnclassifiedActive` — which the chat surface answers with
|
|
76
|
+
* `TerminalEscapeHatch` plus `PromptAnswerKeys`, eighteen buttons (arrows,
|
|
77
|
+
* Enter, Esc, `1`-`9`, `y`, `n`) of which exactly one does anything. Reporting
|
|
78
|
+
* the selection-list token instead would put the arrow pad on the card and
|
|
79
|
+
* tell an operator reading `capture --json` that a moving highlight had been
|
|
80
|
+
* read off a panel that has none.
|
|
81
|
+
*
|
|
82
|
+
* Deliberately NOT a member of `SELECTION_LIST_REASONS`
|
|
83
|
+
* (`lib/detection/status-detector.ts`): that set is what `isSelectionListActive`
|
|
84
|
+
* — and therefore the arrow pad — is derived from. The flag this one feeds is
|
|
85
|
+
* `isDismissablePanelActive`, published beside it.
|
|
86
|
+
*
|
|
87
|
+
* The vocabulary is Command Code's alone for now (方針書 §4 D2's tool-by-tool
|
|
88
|
+
* rule): the SHAPE "an overlay whose footer offers only a dismiss" is general,
|
|
89
|
+
* the sentence that identifies it was measured on one tool.
|
|
90
|
+
*/
|
|
91
|
+
readonly COMMAND_CODE_DISMISSABLE_PANEL: "command_code_dismissable_panel";
|
|
64
92
|
readonly COPILOT_SELECTION_LIST: "copilot_selection_list";
|
|
65
93
|
readonly CODEX_SELECTION_LIST: "codex_selection_list";
|
|
66
94
|
/** Issue #1017: Codex pager / edit-previous (transcript) mode. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-reason.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/status-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;IAKxB;;;;;;;;;;;;;;;;;;OAkBG;;IAEH,6EAA6E;;;IAG7E;;;;;;;;;;;;;;;;OAgBG;;;;IAIH,kEAAkE;;IAElE,6EAA6E;;;;;;IAM7E;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;;;;;;;;;OAeG;;;CAGK,CAAC"}
|
|
1
|
+
{"version":3,"file":"status-reason.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/status-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;IAKxB;;;;;;;;;;;;;;;;;;OAkBG;;IAEH,6EAA6E;;;IAG7E;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;;;;IAIH,kEAAkE;;IAElE,6EAA6E;;;;;;IAM7E;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;;;;;;;;;OAeG;;;CAGK,CAAC"}
|
|
@@ -64,6 +64,34 @@ exports.STATUS_REASON = {
|
|
|
64
64
|
* `Type to search models...` box.
|
|
65
65
|
*/
|
|
66
66
|
COMMAND_CODE_SELECTION_LIST: 'command_code_selection_list',
|
|
67
|
+
/**
|
|
68
|
+
* Issue #2369: a Command Code overlay that only Esc leaves.
|
|
69
|
+
*
|
|
70
|
+
* `/usage` opens a read-only panel — a plan header, two usage meters, a
|
|
71
|
+
* breakdown URL — whose last row is `Press Esc to close`. There is no
|
|
72
|
+
* highlight to move, no numbered option and no confirm key; the ONE thing the
|
|
73
|
+
* screen accepts is the dismiss.
|
|
74
|
+
*
|
|
75
|
+
* Distinct from {@link STATUS_REASON.COMMAND_CODE_SELECTION_LIST} because the
|
|
76
|
+
* two screens want different controls, and that is the whole of this Issue:
|
|
77
|
+
* before it, this panel matched no rule at all, reached the `default` floor
|
|
78
|
+
* and so raised `isUnclassifiedActive` — which the chat surface answers with
|
|
79
|
+
* `TerminalEscapeHatch` plus `PromptAnswerKeys`, eighteen buttons (arrows,
|
|
80
|
+
* Enter, Esc, `1`-`9`, `y`, `n`) of which exactly one does anything. Reporting
|
|
81
|
+
* the selection-list token instead would put the arrow pad on the card and
|
|
82
|
+
* tell an operator reading `capture --json` that a moving highlight had been
|
|
83
|
+
* read off a panel that has none.
|
|
84
|
+
*
|
|
85
|
+
* Deliberately NOT a member of `SELECTION_LIST_REASONS`
|
|
86
|
+
* (`lib/detection/status-detector.ts`): that set is what `isSelectionListActive`
|
|
87
|
+
* — and therefore the arrow pad — is derived from. The flag this one feeds is
|
|
88
|
+
* `isDismissablePanelActive`, published beside it.
|
|
89
|
+
*
|
|
90
|
+
* The vocabulary is Command Code's alone for now (方針書 §4 D2's tool-by-tool
|
|
91
|
+
* rule): the SHAPE "an overlay whose footer offers only a dismiss" is general,
|
|
92
|
+
* the sentence that identifies it was measured on one tool.
|
|
93
|
+
*/
|
|
94
|
+
COMMAND_CODE_DISMISSABLE_PANEL: 'command_code_dismissable_panel',
|
|
67
95
|
COPILOT_SELECTION_LIST: 'copilot_selection_list',
|
|
68
96
|
CODEX_SELECTION_LIST: 'codex_selection_list',
|
|
69
97
|
/** Issue #1017: Codex pager / edit-previous (transcript) mode. */
|
|
@@ -459,6 +459,7 @@
|
|
|
459
459
|
"bannerLabel": "You can act on this here",
|
|
460
460
|
"reasonPager": "A pager is open. Scroll it and quit it from here, with the screen below in view.",
|
|
461
461
|
"reasonSelectionList": "A selection list is open. Move and confirm from here, with the screen below in view.",
|
|
462
|
+
"reasonDismissablePanel": "This screen only closes. Press Esc here, with it in view below.",
|
|
462
463
|
"reasonUnclassified": "Chat can't tell what this screen is. It is shown as-is below, so you can drive it with the keys here.",
|
|
463
464
|
"reasonPromptUnreadable": "Waiting for an answer, and the options couldn't be read. Read the screen below and answer with a number or y/n.",
|
|
464
465
|
"openTerminal": "Open terminal",
|
|
@@ -919,6 +920,11 @@
|
|
|
919
920
|
"toolbarLabel": "Dialog answer keys",
|
|
920
921
|
"caption": "Answer"
|
|
921
922
|
},
|
|
923
|
+
"dismissPanelKeys": {
|
|
924
|
+
"toolbarLabel": "Close this screen",
|
|
925
|
+
"close": "Close (Esc)",
|
|
926
|
+
"closeAria": "Close this screen (Esc)"
|
|
927
|
+
},
|
|
922
928
|
"selectionKeys": {
|
|
923
929
|
"numbersToolbarLabel": "Option number keys",
|
|
924
930
|
"numbersCaption": "Pick",
|
|
@@ -1018,6 +1024,23 @@
|
|
|
1018
1024
|
"degradedTitle": "Structured events are not arriving",
|
|
1019
1025
|
"healthyTitle": "Receiving structured events"
|
|
1020
1026
|
},
|
|
1027
|
+
"relay": {
|
|
1028
|
+
"badgeOwed": "Reply due to {alias}",
|
|
1029
|
+
"badgeOwedMany": "Replies due ({count})",
|
|
1030
|
+
"badgeAwaiting": "Waiting on {alias}",
|
|
1031
|
+
"badgeAwaitingMany": "Waiting on {count} replies",
|
|
1032
|
+
"badgePrompt": "Confirmation reported",
|
|
1033
|
+
"owedTitle": "This session owes a delegated reply. It is delivered automatically when the turn ends.",
|
|
1034
|
+
"awaitingTitle": "This session is waiting for a delegated reply. It arrives in the composer as a relay message.",
|
|
1035
|
+
"promptTitle": "The other session stopped on a confirmation; the requester has been told.",
|
|
1036
|
+
"stripAwaiting": "Delegated to {alias}; waiting for the reply.",
|
|
1037
|
+
"stripAwaitingMany": "Waiting for {count} delegated replies.",
|
|
1038
|
+
"stripPrompt": "{alias} is waiting for a confirmation.",
|
|
1039
|
+
"stripOwed": "Owed to {alias}: this session's reply is delivered when the turn ends.",
|
|
1040
|
+
"historyBadge": "relay",
|
|
1041
|
+
"historyBadgeTitle": "Delivered by another agent session (Issue #2377 relay).",
|
|
1042
|
+
"historyCount": "{count} relayed message(s) in view"
|
|
1043
|
+
},
|
|
1021
1044
|
"agentModel": {
|
|
1022
1045
|
"label": "Model",
|
|
1023
1046
|
"modelLabel": "Model: {model}",
|
|
@@ -459,6 +459,7 @@
|
|
|
459
459
|
"bannerLabel": "ここで操作できます",
|
|
460
460
|
"reasonPager": "ページャ表示中です。下の画面を見ながら、ここでスクロールと終了ができます。",
|
|
461
461
|
"reasonSelectionList": "選択リストが開いています。下の画面を見ながら、ここで項目の移動と決定ができます。",
|
|
462
|
+
"reasonDismissablePanel": "閉じるだけの画面です。下の画面を見ながら、ここで Esc を押せます。",
|
|
462
463
|
"reasonUnclassified": "チャットでは種類を判別できない画面です。下にそのまま表示しているので、ここでキーを送って操作できます。",
|
|
463
464
|
"reasonPromptUnreadable": "応答待ちですが選択肢を読み取れませんでした。下の画面を見て、番号か y/n で答えられます。",
|
|
464
465
|
"openTerminal": "ターミナルで確認",
|
|
@@ -919,6 +920,11 @@
|
|
|
919
920
|
"toolbarLabel": "ダイアログへの回答キー",
|
|
920
921
|
"caption": "回答"
|
|
921
922
|
},
|
|
923
|
+
"dismissPanelKeys": {
|
|
924
|
+
"toolbarLabel": "この画面を閉じる",
|
|
925
|
+
"close": "閉じる (Esc)",
|
|
926
|
+
"closeAria": "この画面を閉じる (Esc)"
|
|
927
|
+
},
|
|
922
928
|
"selectionKeys": {
|
|
923
929
|
"numbersToolbarLabel": "選択肢の番号キー",
|
|
924
930
|
"numbersCaption": "選択",
|
|
@@ -1018,6 +1024,23 @@
|
|
|
1018
1024
|
"degradedTitle": "構造化イベントが届いていません",
|
|
1019
1025
|
"healthyTitle": "構造化イベントを受信中"
|
|
1020
1026
|
},
|
|
1027
|
+
"relay": {
|
|
1028
|
+
"badgeOwed": "{alias} へ返信予定",
|
|
1029
|
+
"badgeOwedMany": "返信予定 {count} 件",
|
|
1030
|
+
"badgeAwaiting": "{alias} の返信待ち",
|
|
1031
|
+
"badgeAwaitingMany": "返信待ち {count} 件",
|
|
1032
|
+
"badgePrompt": "確認待ちを通知済み",
|
|
1033
|
+
"owedTitle": "このセッションは委任された返信を抱えています。ターン完了時に自動で届きます。",
|
|
1034
|
+
"awaitingTitle": "このセッションは委任した返信を待っています。届くとコンポーザーに relay メッセージとして入ります。",
|
|
1035
|
+
"promptTitle": "相手セッションが確認待ちで止まり、依頼元へ通知済みです。",
|
|
1036
|
+
"stripAwaiting": "{alias} へ委任、返信待ち",
|
|
1037
|
+
"stripAwaitingMany": "返信待ち {count} 件",
|
|
1038
|
+
"stripPrompt": "{alias} が確認待ち",
|
|
1039
|
+
"stripOwed": "{alias} へ返信予定: ターン完了時に届きます",
|
|
1040
|
+
"historyBadge": "relay",
|
|
1041
|
+
"historyBadgeTitle": "別のエージェントセッションから届いたメッセージです(Issue #2377 relay)。",
|
|
1042
|
+
"historyCount": "表示範囲に relay メッセージが {count} 件"
|
|
1043
|
+
},
|
|
1021
1044
|
"agentModel": {
|
|
1022
1045
|
"label": "モデル",
|
|
1023
1046
|
"modelLabel": "モデル: {model}",
|
|
@@ -59,7 +59,7 @@ exports.getAutoYesPollerCompositeKeys = getAutoYesPollerCompositeKeys;
|
|
|
59
59
|
exports.stopAutoYesPollingByWorktree = stopAutoYesPollingByWorktree;
|
|
60
60
|
exports.isAnyPollerActiveForWorktree = isAnyPollerActiveForWorktree;
|
|
61
61
|
const cli_session_1 = require("./session/cli-session");
|
|
62
|
-
const
|
|
62
|
+
const response_checker_1 = require("./polling/response-checker");
|
|
63
63
|
const auto_yes_resolver_1 = require("./polling/auto-yes-resolver");
|
|
64
64
|
const auto_yes_policy_1 = require("./polling/auto-yes-policy");
|
|
65
65
|
const auto_yes_suppression_state_1 = require("./polling/auto-yes-suppression-state");
|
|
@@ -281,12 +281,27 @@ function processStopConditionDelta(compositeKey, pollerState, cleanOutput) {
|
|
|
281
281
|
async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, cleanOutput, precomputedLines, instanceId) {
|
|
282
282
|
const compositeKey = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId);
|
|
283
283
|
try {
|
|
284
|
-
// 1. Detect prompt
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
// 1. Detect prompt.
|
|
285
|
+
//
|
|
286
|
+
// Issue #2368: through `detectPromptOnCleanFrame`, the entry the status
|
|
287
|
+
// path and the response poller already read frames on — NOT the generic
|
|
288
|
+
// `detectPrompt` this used to call. #2364 gave agy its own dialog reader and
|
|
289
|
+
// wired it into three of the four consumers of one frame; this poller was
|
|
290
|
+
// the fourth, and it stayed on the generic multiple-choice parser. That
|
|
291
|
+
// parser folds a wrapped option label only when the continuation row is
|
|
292
|
+
// indented, short or path-shaped (#372, for codex prose), and agy prints the
|
|
293
|
+
// approved command INSIDE the label and wraps it at column 0 — so every
|
|
294
|
+
// Bash approval read as `isPrompt: false` here and Auto-Yes answered
|
|
295
|
+
// nothing, while `/current-output` published the same screen as a waiting
|
|
296
|
+
// four-option prompt. Everything after this point is unchanged: the
|
|
297
|
+
// duplicate key (#306), codex's launch dialogs (#1829), the dialog gate
|
|
298
|
+
// (#1928) and the contract policy (#1547) all still run. What changed is
|
|
299
|
+
// only whether the frame can be READ.
|
|
300
|
+
//
|
|
301
|
+
// `cleanOutput` is handed over already stripped, and the clean-frame entry
|
|
302
|
+
// is the one that does not strip again (`stripBoxDrawing` is not
|
|
303
|
+
// idempotent), so this poller and the response poller judge identical text.
|
|
304
|
+
const promptDetection = (0, response_checker_1.detectPromptOnCleanFrame)(cleanOutput, cliToolId, precomputedLines);
|
|
290
305
|
if (!promptDetection.isPrompt || !promptDetection.promptData) {
|
|
291
306
|
pollerState.lastAnsweredPromptKey = null;
|
|
292
307
|
pollerState.lastAnsweredAt = null;
|
|
@@ -312,7 +327,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
312
327
|
// '2', '1' — each without a trailing Enter), but only during startSession,
|
|
313
328
|
// while this poller runs on its own 2s phase for the life of the session.
|
|
314
329
|
// Whichever sees the dialog first decides, so the fix is to leave them all
|
|
315
|
-
// to the tool. Auto-answer layer only:
|
|
330
|
+
// to the tool. Auto-answer layer only: the detection above still reports the
|
|
316
331
|
// prompt, so the human keeps seeing the screen and the response poller
|
|
317
332
|
// still notifies them about it.
|
|
318
333
|
const launchDialog = cliToolId === 'codex' ? (0, cli_patterns_1.getCodexLifecycleDialog)(cleanOutput) : null;
|
|
@@ -334,7 +349,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
334
349
|
return 'no_answer';
|
|
335
350
|
}
|
|
336
351
|
// 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
|
|
337
|
-
// not enough to send an answer.
|
|
352
|
+
// not enough to send an answer. The detection above judges the ROWS, and the
|
|
338
353
|
// rows of an agent's own reply can be indistinguishable from a dialog's --
|
|
339
354
|
// opencode 1.18 answering "list three options and ask which one" is the
|
|
340
355
|
// reported case (#1896), and the `1` this poller sent in reply was not
|
|
@@ -369,8 +384,8 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
369
384
|
return 'no_answer';
|
|
370
385
|
}
|
|
371
386
|
// 4. Resolve auto answer under the execution contract's policy (Issue #1547).
|
|
372
|
-
// Auto-Yes
|
|
373
|
-
//
|
|
387
|
+
// Auto-Yes reads the frame itself instead of going through status-detector
|
|
388
|
+
// (it shares the reader, not the verdict), so this is the only place the policy can gate an
|
|
374
389
|
// auto-answer: a prompt the policy withholds is left for a human, and the
|
|
375
390
|
// response poller's prompt path (WS broadcast + Web Push, see
|
|
376
391
|
// polling/response-checker.ts) is what tells them it is waiting.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Issue #479: Extracted from db.ts for single-responsibility separation
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.MODEL_CHANGE_REQUEST_ID_PREFIX = exports.
|
|
9
|
+
exports.RELAY_SYSTEM_REQUEST_ID_PREFIX = exports.RELAY_REQUEST_ID_PREFIX = exports.MODEL_CHANGE_REQUEST_ID_PREFIX = exports.USER_TURN_CANDIDATE_LIMIT = exports.ACTIVE_FILTER = void 0;
|
|
10
10
|
exports.getLastAssistantMessageAt = getLastAssistantMessageAt;
|
|
11
11
|
exports.createMessage = createMessage;
|
|
12
12
|
exports.updateMessageContent = updateMessageContent;
|
|
@@ -29,6 +29,11 @@ exports.updatePromptData = updatePromptData;
|
|
|
29
29
|
exports.markPendingPromptsAsAnswered = markPendingPromptsAsAnswered;
|
|
30
30
|
exports.recordAnsweredPrompt = recordAnsweredPrompt;
|
|
31
31
|
exports.createModelChangeMessage = createModelChangeMessage;
|
|
32
|
+
exports.relayRequestId = relayRequestId;
|
|
33
|
+
exports.parseRelayRequestId = parseRelayRequestId;
|
|
34
|
+
exports.getLastUserMessageForInstance = getLastUserMessageForInstance;
|
|
35
|
+
exports.getLatestOpenPromptMessage = getLatestOpenPromptMessage;
|
|
36
|
+
exports.createRelaySystemMessage = createRelaySystemMessage;
|
|
32
37
|
const crypto_1 = require("crypto");
|
|
33
38
|
const logger_1 = require("../../lib/logger");
|
|
34
39
|
const logger = (0, logger_1.createLogger)('chat-db');
|
|
@@ -245,16 +250,17 @@ function findMessageByRequestId(db, worktreeId, requestId) {
|
|
|
245
250
|
return row ? mapChatMessage(row) : null;
|
|
246
251
|
}
|
|
247
252
|
/**
|
|
248
|
-
* How many candidate rows
|
|
253
|
+
* How many candidate rows a user-row candidate lookup returns.
|
|
249
254
|
*
|
|
250
255
|
* The caller compares content in JavaScript, so this bounds the work rather than
|
|
251
256
|
* the correctness. Twenty is far above the number of user rows one instance can
|
|
252
257
|
* accumulate inside the caller's few-minute window and still small enough that
|
|
253
258
|
* the query is never the expensive part of a poll.
|
|
254
259
|
*/
|
|
255
|
-
exports.
|
|
260
|
+
exports.USER_TURN_CANDIDATE_LIMIT = 20;
|
|
256
261
|
/**
|
|
257
|
-
* User rows for one instance that no producer has claimed yet (Issue #2196)
|
|
262
|
+
* User rows for one instance that no producer has claimed yet (Issue #2196) —
|
|
263
|
+
* and, on request, the one keyed row that is a duplicate of one (Issue #2392).
|
|
258
264
|
*
|
|
259
265
|
* The lookup behind "the operator's input is already in History — `/send` put it
|
|
260
266
|
* there". A row qualifies when it is this instance's, is a `user` row, sits in
|
|
@@ -278,15 +284,40 @@ exports.UNKEYED_USER_MESSAGE_LIMIT = 20;
|
|
|
278
284
|
* `ACTIVE_FILTER` applies: an archived row has been cleared out of History, and
|
|
279
285
|
* adopting one would key a turn to a row nobody can see.
|
|
280
286
|
*
|
|
287
|
+
* ## The one keyed row this will hand back, and only when asked
|
|
288
|
+
*
|
|
289
|
+
* Issue #2392. `relay-delivery` writes the answer it types into the requesting
|
|
290
|
+
* session's composer as a `relay` user row keyed `relay:<ledgerId>`, and that
|
|
291
|
+
* session's own transcript reader then reads the delivered body back as a prompt
|
|
292
|
+
* it was handed — 662ms later, measured — and duplicated it, because the row it
|
|
293
|
+
* should have recognised was keyed and therefore invisible here.
|
|
294
|
+
*
|
|
295
|
+
* `includeRelayDelivered` widens the predicate to `request_id IS NULL OR (a
|
|
296
|
+
* relay row keyed `relay:…`)`. It is an OR and an opt-in, so no existing caller
|
|
297
|
+
* sees a row it did not see before; `message_type` and the key prefix are both
|
|
298
|
+
* required, because a relay *prompt* delivery is a `relay` row with no key at
|
|
299
|
+
* all and stays an ordinary unkeyed candidate, while a `relay-sys:` row is
|
|
300
|
+
* transcript furniture that is not the delivery.
|
|
301
|
+
*
|
|
302
|
+
* **A row that comes back with a `requestId` must not be claimed.** That key is
|
|
303
|
+
* how `relay-service`'s `findParentRelayHops` reads the ledger back out of the
|
|
304
|
+
* row (#2387), so re-pointing one at a transcript key would silently un-chain
|
|
305
|
+
* every relay opened from the session. {@link setMessageRequestId}'s
|
|
306
|
+
* `request_id IS NULL` predicate refuses the write in any case; the caller is
|
|
307
|
+
* expected to branch on `requestId` rather than rely on that.
|
|
308
|
+
*
|
|
281
309
|
* @returns Candidate rows, newest first
|
|
282
310
|
*/
|
|
283
311
|
function findUnkeyedUserMessages(db, query) {
|
|
312
|
+
const keyFilter = query.includeRelayDelivered
|
|
313
|
+
? `AND (request_id IS NULL OR (message_type = 'relay' AND request_id LIKE ?))`
|
|
314
|
+
: 'AND request_id IS NULL';
|
|
284
315
|
const stmt = db.prepare(`
|
|
285
316
|
SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
|
|
286
317
|
FROM chat_messages
|
|
287
318
|
WHERE worktree_id = ?
|
|
288
319
|
AND role = 'user'
|
|
289
|
-
|
|
320
|
+
${keyFilter}
|
|
290
321
|
AND COALESCE(cli_tool_id, 'claude') = ?
|
|
291
322
|
AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
|
|
292
323
|
AND timestamp >= ? AND timestamp <= ?
|
|
@@ -294,8 +325,14 @@ function findUnkeyedUserMessages(db, query) {
|
|
|
294
325
|
ORDER BY timestamp DESC
|
|
295
326
|
LIMIT ?
|
|
296
327
|
`);
|
|
297
|
-
const rows = stmt.all(query.worktreeId, query.cliToolId, query.instanceId, query.fromMs, query.toMs, query.limit ?? exports.
|
|
298
|
-
|
|
328
|
+
const rows = stmt.all(query.worktreeId, ...(query.includeRelayDelivered ? [`${exports.RELAY_REQUEST_ID_PREFIX}%`] : []), query.cliToolId, query.instanceId, query.fromMs, query.toMs, query.limit ?? exports.USER_TURN_CANDIDATE_LIMIT);
|
|
329
|
+
// A bare `relay:` names no ledger entry and so is not a delivery — the rule
|
|
330
|
+
// `parseRelayRequestId` already states for the loop guard, applied here so the
|
|
331
|
+
// two readers cannot disagree about what counts as one. A no-op without the
|
|
332
|
+
// option, where nothing that comes back is keyed at all.
|
|
333
|
+
return rows
|
|
334
|
+
.map(mapChatMessage)
|
|
335
|
+
.filter((message) => !message.requestId || parseRelayRequestId(message.requestId) !== null);
|
|
299
336
|
}
|
|
300
337
|
/**
|
|
301
338
|
* Claim an unkeyed row for a producer, without touching anything else on it
|
|
@@ -697,3 +734,120 @@ function createModelChangeMessage(db, params) {
|
|
|
697
734
|
instanceId: params.instanceId ?? params.cliToolId,
|
|
698
735
|
});
|
|
699
736
|
}
|
|
737
|
+
// ===========================================================================
|
|
738
|
+
// Relay rows (Issue #2377)
|
|
739
|
+
// ===========================================================================
|
|
740
|
+
/**
|
|
741
|
+
* The `request_id` prefix a RELAYED message carries.
|
|
742
|
+
*
|
|
743
|
+
* The delivered body is an ordinary user row — session B's answer, typed into
|
|
744
|
+
* session A's composer — and `relay:<relayId>` is what turns that row back into
|
|
745
|
+
* a pointer at the ledger entry that produced it. Two readers depend on that
|
|
746
|
+
* direction:
|
|
747
|
+
*
|
|
748
|
+
* - the ledger's own idempotency, because the id is also
|
|
749
|
+
* `session_relays.sent_request_id` and that column carries a UNIQUE index;
|
|
750
|
+
* - the loop guard, which asks "was the last thing this session was told a
|
|
751
|
+
* relayed message, and if so, whose?" — the answer is the parent relay, and
|
|
752
|
+
* its `hops` is what the new relay's depth is measured from.
|
|
753
|
+
*
|
|
754
|
+
* Same shape and same reasoning as {@link MODEL_CHANGE_REQUEST_ID_PREFIX}: a
|
|
755
|
+
* prefix rather than a wording, because the wording is localized at write time.
|
|
756
|
+
*/
|
|
757
|
+
exports.RELAY_REQUEST_ID_PREFIX = 'relay:';
|
|
758
|
+
/** The `request_id` prefix a relay SYSTEM row carries (`relay-sys:<relayId>:<kind>`). */
|
|
759
|
+
exports.RELAY_SYSTEM_REQUEST_ID_PREFIX = 'relay-sys:';
|
|
760
|
+
/** Build the relay message's request id from the ledger id. */
|
|
761
|
+
function relayRequestId(relayId) {
|
|
762
|
+
return `${exports.RELAY_REQUEST_ID_PREFIX}${relayId}`;
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* The ledger id inside a relayed row's request id, or null.
|
|
766
|
+
*
|
|
767
|
+
* Null for every other row, including a relay SYSTEM row: those are transcript
|
|
768
|
+
* furniture, not the delivery, and treating one as the delivery would let a
|
|
769
|
+
* session's own "delegated, waiting" line count as an inbound relay.
|
|
770
|
+
*/
|
|
771
|
+
function parseRelayRequestId(requestId) {
|
|
772
|
+
if (!requestId || !requestId.startsWith(exports.RELAY_REQUEST_ID_PREFIX))
|
|
773
|
+
return null;
|
|
774
|
+
const id = requestId.slice(exports.RELAY_REQUEST_ID_PREFIX.length);
|
|
775
|
+
return id === '' ? null : id;
|
|
776
|
+
}
|
|
777
|
+
/**
|
|
778
|
+
* The newest user-authored row for ONE agent instance.
|
|
779
|
+
*
|
|
780
|
+
* {@link getLastUserMessage} answers the same question for a whole worktree,
|
|
781
|
+
* which is the wrong scope for the loop guard: a worktree runs several sessions
|
|
782
|
+
* and "was I asked this by a relay?" is a question about one of them.
|
|
783
|
+
*
|
|
784
|
+
* `matchResolvedInstance`'s expression is spelled out here rather than reused
|
|
785
|
+
* through `getMessages` because this read wants the newest USER row and
|
|
786
|
+
* `getMessages` bounds by rows of every role — a turn with thirty assistant
|
|
787
|
+
* rows in it would push the user row out of any sane limit.
|
|
788
|
+
*/
|
|
789
|
+
function getLastUserMessageForInstance(db, worktreeId, cliToolId, instanceId) {
|
|
790
|
+
const stmt = db.prepare(`
|
|
791
|
+
SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
|
|
792
|
+
FROM chat_messages
|
|
793
|
+
WHERE worktree_id = ? AND role = 'user' ${exports.ACTIVE_FILTER}
|
|
794
|
+
AND COALESCE(cli_tool_id, 'claude') = ?
|
|
795
|
+
AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
|
|
796
|
+
ORDER BY timestamp DESC
|
|
797
|
+
LIMIT 1
|
|
798
|
+
`);
|
|
799
|
+
const row = stmt.get(worktreeId, cliToolId, instanceId);
|
|
800
|
+
return row ? mapChatMessage(row) : null;
|
|
801
|
+
}
|
|
802
|
+
/**
|
|
803
|
+
* The newest unanswered prompt row for one agent instance, or null.
|
|
804
|
+
*
|
|
805
|
+
* What the confirmation notice is written from. `promptData.status` is the
|
|
806
|
+
* only thing consulted — the row's own wording is what the notice quotes — and
|
|
807
|
+
* a row whose data is one of #1738's degraded records simply yields no options,
|
|
808
|
+
* which the notice renders as a question with no choices rather than dropping.
|
|
809
|
+
*/
|
|
810
|
+
function getLatestOpenPromptMessage(db, worktreeId, cliToolId, instanceId) {
|
|
811
|
+
const stmt = db.prepare(`
|
|
812
|
+
SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id, instance_id, archived
|
|
813
|
+
FROM chat_messages
|
|
814
|
+
WHERE worktree_id = ? AND message_type = 'prompt' ${exports.ACTIVE_FILTER}
|
|
815
|
+
AND COALESCE(cli_tool_id, 'claude') = ?
|
|
816
|
+
AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
|
|
817
|
+
ORDER BY timestamp DESC
|
|
818
|
+
LIMIT 1
|
|
819
|
+
`);
|
|
820
|
+
const row = stmt.get(worktreeId, cliToolId, instanceId);
|
|
821
|
+
if (!row)
|
|
822
|
+
return null;
|
|
823
|
+
const message = mapChatMessage(row);
|
|
824
|
+
return message.promptData?.status === 'answered' ? null : message;
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Persist "this session delegated / got an answer" into the transcript (#2377).
|
|
828
|
+
*
|
|
829
|
+
* An assistant row with a marker request id, exactly as
|
|
830
|
+
* {@link createModelChangeMessage} writes the model-change line, and for the
|
|
831
|
+
* same reasons: `chat_messages` has no `system` role, the transcript groups a
|
|
832
|
+
* leading assistant row as a standalone reply, and the row is `normal` so
|
|
833
|
+
* nothing scanning for open dialogs mistakes it for one. Writing it here rather
|
|
834
|
+
* than inventing a fourth history surface is what puts the line in the chat
|
|
835
|
+
* pane AND the History tab from one write.
|
|
836
|
+
*
|
|
837
|
+
* Idempotent by construction at the call site: the request id is
|
|
838
|
+
* `relay-sys:<relayId>:<kind>` and the callers probe
|
|
839
|
+
* {@link findMessageByRequestId} before writing, so a retried delivery does not
|
|
840
|
+
* leave two "waiting for the reply" lines in one transcript.
|
|
841
|
+
*/
|
|
842
|
+
function createRelaySystemMessage(db, params) {
|
|
843
|
+
return createMessage(db, {
|
|
844
|
+
worktreeId: params.worktreeId,
|
|
845
|
+
role: 'assistant',
|
|
846
|
+
content: params.content,
|
|
847
|
+
messageType: 'normal',
|
|
848
|
+
timestamp: new Date(params.at),
|
|
849
|
+
requestId: `${exports.RELAY_SYSTEM_REQUEST_ID_PREFIX}${params.relayId}:${params.kind}`,
|
|
850
|
+
cliToolId: params.cliToolId,
|
|
851
|
+
instanceId: params.instanceId ?? params.cliToolId,
|
|
852
|
+
});
|
|
853
|
+
}
|
|
@@ -43,6 +43,7 @@ const v56_gate_result_source_1 = require("./v56-gate-result-source");
|
|
|
43
43
|
const v57_push_subscription_defaults_notice_1 = require("./v57-push-subscription-defaults-notice");
|
|
44
44
|
const v58_agent_session_costs_1 = require("./v58-agent-session-costs");
|
|
45
45
|
const v59_opencode_instance_settings_1 = require("./v59-opencode-instance-settings");
|
|
46
|
+
const v60_session_relays_1 = require("./v60-session-relays");
|
|
46
47
|
/**
|
|
47
48
|
* Complete ordered list of all migrations.
|
|
48
49
|
* Used internally by the barrel file (db-migrations.ts); NOT exported from the barrel (DR2-004).
|
|
@@ -89,4 +90,5 @@ exports.migrations = [
|
|
|
89
90
|
...v57_push_subscription_defaults_notice_1.v57_migrations,
|
|
90
91
|
...v58_agent_session_costs_1.v58_migrations,
|
|
91
92
|
...v59_opencode_instance_settings_1.v59_migrations,
|
|
93
|
+
...v60_session_relays_1.v60_migrations,
|
|
92
94
|
];
|
|
@@ -17,7 +17,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
17
17
|
* Current schema version
|
|
18
18
|
* Increment this when adding new migrations
|
|
19
19
|
*/
|
|
20
|
-
exports.CURRENT_SCHEMA_VERSION =
|
|
20
|
+
exports.CURRENT_SCHEMA_VERSION = 60;
|
|
21
21
|
/**
|
|
22
22
|
* Get current schema version from database
|
|
23
23
|
*/
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration v60: the relay ledger (Issue #2377).
|
|
4
|
+
*
|
|
5
|
+
* ## What a row is
|
|
6
|
+
*
|
|
7
|
+
* One row is one standing instruction: "when session B finishes the turn it is
|
|
8
|
+
* working on, put its answer into session A's composer". Until this Issue that
|
|
9
|
+
* instruction existed only as a shape in session A's own control flow — `send`,
|
|
10
|
+
* then `wait`, then `capture` — which is why A had to stay blocked to collect a
|
|
11
|
+
* reply it had already asked for. A ledger row is the same intent written down
|
|
12
|
+
* somewhere the server can act on, so A can go and do something else.
|
|
13
|
+
*
|
|
14
|
+
* ## Why `from` is the requester and `to` is the worker
|
|
15
|
+
*
|
|
16
|
+
* The row is named after the DELEGATION, not after the delivery: `from` is the
|
|
17
|
+
* session that asked (and is therefore owed the answer), `to` is the session
|
|
18
|
+
* that was asked. So `commandmate relays` reads "mine, out" as
|
|
19
|
+
* `from = me` and "mine, in" as `to = me`, and the badges the Agent pane draws
|
|
20
|
+
* read the same way round — B's row says it owes A a reply, A's row says it is
|
|
21
|
+
* waiting on n of them.
|
|
22
|
+
*
|
|
23
|
+
* ## The columns that are not just bookkeeping
|
|
24
|
+
*
|
|
25
|
+
* - **`sent_request_id`** is the idempotency key the Issue asks for. The turn's
|
|
26
|
+
* end is judged by two independent producers (the Stop hook and the poller,
|
|
27
|
+
* see `lib/polling/structured-history-gate`), so the delivery has to be
|
|
28
|
+
* claimable exactly once. It carries the `relay:<id>` request id of the row
|
|
29
|
+
* written into A's history, which is also what makes the delivered message
|
|
30
|
+
* findable from the ledger and the ledger findable from the message — that
|
|
31
|
+
* second direction is what the loop guard reads.
|
|
32
|
+
* - **`pending_kind` / `pending_body`** hold a delivery that has been decided
|
|
33
|
+
* but not yet made. A is frequently mid-turn when B finishes, and typing into
|
|
34
|
+
* a running composer interrupts it (#1737's problem, one layer up), so the
|
|
35
|
+
* body waits in the ledger — durable across a restart — and the pump retries.
|
|
36
|
+
* `pending_kind IS NULL` is also the "nobody has captured this turn yet"
|
|
37
|
+
* guard that makes the two producers cost one delivery.
|
|
38
|
+
* - **`prompt_signature`** dedupes the confirmation notice. A wait that lasts
|
|
39
|
+
* twenty minutes must reach A once, not once per poll.
|
|
40
|
+
* - **`hops`** is the chain depth. 1 for a relay a human or an unrelated turn
|
|
41
|
+
* started; n+1 for one created while answering a relay-delivered message.
|
|
42
|
+
*
|
|
43
|
+
* `state` is CHECK-constrained for the reason v50's `tasks.status` is: the five
|
|
44
|
+
* words are the point of the table, and a typo landing as a sixth would create
|
|
45
|
+
* a bucket nothing queries.
|
|
46
|
+
*
|
|
47
|
+
* Both worktree columns declare a foreign key so `getWorktreeChildTables()`
|
|
48
|
+
* finds them by introspection — the pair follows a worktree id rename (v54/v55)
|
|
49
|
+
* and is swept when either side is deleted, which is the right lifetime: a relay
|
|
50
|
+
* whose requester or whose worker is gone can never be delivered.
|
|
51
|
+
*
|
|
52
|
+
* Timestamps are epoch milliseconds (INTEGER), matching v44 onward.
|
|
53
|
+
*/
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.v60_migrations = void 0;
|
|
56
|
+
exports.v60_migrations = [
|
|
57
|
+
{
|
|
58
|
+
version: 60,
|
|
59
|
+
name: 'session-relays',
|
|
60
|
+
up: (db) => {
|
|
61
|
+
db.exec(`
|
|
62
|
+
CREATE TABLE IF NOT EXISTS session_relays (
|
|
63
|
+
id TEXT PRIMARY KEY,
|
|
64
|
+
from_worktree_id TEXT NOT NULL,
|
|
65
|
+
from_instance_id TEXT NOT NULL,
|
|
66
|
+
to_worktree_id TEXT NOT NULL,
|
|
67
|
+
to_instance_id TEXT NOT NULL,
|
|
68
|
+
state TEXT NOT NULL CHECK (state IN ('pending','delivered','prompt','expired','cancelled')),
|
|
69
|
+
hops INTEGER NOT NULL DEFAULT 1,
|
|
70
|
+
sent_request_id TEXT,
|
|
71
|
+
pending_kind TEXT,
|
|
72
|
+
pending_body TEXT,
|
|
73
|
+
prompt_signature TEXT,
|
|
74
|
+
created_at INTEGER NOT NULL,
|
|
75
|
+
updated_at INTEGER NOT NULL,
|
|
76
|
+
expires_at INTEGER NOT NULL,
|
|
77
|
+
delivered_at INTEGER,
|
|
78
|
+
|
|
79
|
+
FOREIGN KEY (from_worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE,
|
|
80
|
+
FOREIGN KEY (to_worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
|
|
81
|
+
);
|
|
82
|
+
`);
|
|
83
|
+
// The idempotency key, enforced rather than merely intended. Partial so
|
|
84
|
+
// the many rows that have not been delivered yet do not collide on NULL.
|
|
85
|
+
db.exec(`
|
|
86
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_session_relays_sent_request
|
|
87
|
+
ON session_relays(sent_request_id)
|
|
88
|
+
WHERE sent_request_id IS NOT NULL;
|
|
89
|
+
`);
|
|
90
|
+
// The two lookups every reader makes: "what does this session owe" and
|
|
91
|
+
// "what is this session waiting for".
|
|
92
|
+
db.exec(`
|
|
93
|
+
CREATE INDEX IF NOT EXISTS idx_session_relays_to
|
|
94
|
+
ON session_relays(to_worktree_id, to_instance_id, state);
|
|
95
|
+
`);
|
|
96
|
+
db.exec(`
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_session_relays_from
|
|
98
|
+
ON session_relays(from_worktree_id, from_instance_id, state);
|
|
99
|
+
`);
|
|
100
|
+
// The sweep's own read: everything still open, oldest deadline first.
|
|
101
|
+
db.exec(`
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_session_relays_open
|
|
103
|
+
ON session_relays(state, expires_at);
|
|
104
|
+
`);
|
|
105
|
+
},
|
|
106
|
+
down: (db) => {
|
|
107
|
+
db.exec('DROP TABLE IF EXISTS session_relays;');
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
];
|