commandmate 0.49.2 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +476 -423
- package/.next/app-path-routes-manifest.json +28 -21
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +40 -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/release-notes/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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -103
- 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.js.nft.json +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.js.nft.json +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 +4 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/resolve/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/relays/[relayId]/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +4 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route.js +2 -2
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/role-defaults/route.js +1 -0
- package/.next/server/app/api/repositories/[id]/role-defaults/route.js.nft.json +1 -0
- package/.next/server/app/api/repositories/[id]/role-defaults/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/repositories/[id]/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.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roles/[id]/route.js +1 -0
- package/.next/server/app/api/roles/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/roles/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/roles/route.js +1 -0
- package/.next/server/app/api/roles/route.js.nft.json +1 -0
- package/.next/server/app/api/roles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route.js +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/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 +3 -3
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +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]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/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 +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +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/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/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]/instances/roles/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -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 +1 -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]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/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 +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +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 +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +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 -144
- 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 +3 -104
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +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 +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +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 -103
- 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_client-reference-manifest.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.js.nft.json +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.js.nft.json +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/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +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 +10 -10
- 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 +28 -21
- package/.next/server/chunks/1184.js +5 -0
- package/.next/server/chunks/1501.js +5 -5
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/1957.js +2 -2
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2819.js +1 -0
- package/.next/server/chunks/2897.js +1 -1
- package/.next/server/chunks/3042.js +2 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3294.js +3 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3505.js +2 -6
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3801.js +7 -7
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/454.js +1 -0
- package/.next/server/chunks/4645.js +1 -0
- package/.next/server/chunks/4911.js +1 -1
- package/.next/server/chunks/5209.js +2 -2
- package/.next/server/chunks/5350.js +216 -0
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/6009.js +12 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +2 -2
- package/.next/server/chunks/6569.js +1 -0
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +4 -4
- package/.next/server/chunks/696.js +3 -0
- package/.next/server/chunks/7023.js +3 -3
- package/.next/server/chunks/7083.js +1 -0
- package/.next/server/chunks/741.js +1 -0
- package/.next/server/chunks/7662.js +1 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8143.js +33 -0
- package/.next/server/chunks/8581.js +6 -6
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8807.js +181 -93
- package/.next/server/chunks/8918.js +3 -105
- package/.next/server/chunks/8955.js +1 -0
- package/.next/server/chunks/9169.js +1 -0
- package/.next/server/chunks/923.js +1 -0
- package/.next/server/chunks/9390.js +2 -2
- package/.next/server/chunks/9627.js +9 -9
- package/.next/server/chunks/973.js +1 -0
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2314-2c9d587a27e8f731.js +1 -0
- package/.next/static/chunks/2407-ee881c99e218975b.js +1 -0
- package/.next/static/chunks/3931-24d7e245a93feb25.js +1 -0
- package/.next/static/chunks/4548-9afa02fd18afa6c7.js +1 -0
- package/.next/static/chunks/{5794-7975b8e51e731b19.js → 5794-38b3b504b3d97e04.js} +1 -1
- package/.next/static/chunks/{6966-d8dc6032410ffaba.js → 6966-dbfa4a43397f8c6d.js} +1 -1
- package/.next/static/chunks/7090-28e83f5a0efdb3b4.js +1 -0
- package/.next/static/chunks/7229.016d007c467a3600.js +1 -0
- package/.next/static/chunks/{8407-35bbfc84793d7004.js → 8407-dd6a8062fc449899.js} +1 -1
- package/.next/static/chunks/app/api/agents/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/role-defaults/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/roles/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/roles/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/agent-role-defaults/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/templates/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/settle/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/layout-7bf800fcc5e025b1.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/more/{page-ff5af5ca48774c89.js → page-e8f5780f6e4fb657.js} +1 -1
- package/.next/static/chunks/app/{page-b4863bfe0452e09d.js → page-869f353a4ac4e15b.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/repositories/page-bedb505687010f18.js +1 -0
- package/.next/static/chunks/app/review/page-87c4a9b0de50fa80.js +1 -0
- package/.next/static/chunks/app/sessions/{page-c6eb7c02db2f4c80.js → page-82ca46793789fce4.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-570eb79fbbd1a934.js +1 -0
- package/.next/static/chunks/{webpack-838df0273b03af19.js → webpack-16b1a3143fa42ca0.js} +1 -1
- package/.next/static/css/d4f2c9522cf1b449.css +1 -0
- package/.next/static/z4d8-5MaLkoD-4EhueZwk/_buildManifest.js +1 -0
- package/.next/trace +14 -13
- package/.next/types/app/api/relays/[relayId]/resolve/route.ts +347 -0
- package/.next/types/app/api/repositories/[id]/role-defaults/route.ts +347 -0
- package/.next/types/app/api/roles/[id]/route.ts +347 -0
- package/.next/types/app/api/roles/route.ts +347 -0
- package/.next/types/app/api/settings/agent-role-defaults/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/instances/roles/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/instances/roles/settle/route.ts +347 -0
- package/.next/types/routes.d.ts +8 -1
- package/.next/types/validator.ts +63 -0
- package/dist/cli/commands/instances.d.ts +1 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +290 -33
- package/dist/cli/commands/message-dispatch.d.ts +25 -3
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +26 -6
- package/dist/cli/commands/prompt.d.ts.map +1 -1
- package/dist/cli/commands/prompt.js +2 -1
- package/dist/cli/commands/relays.d.ts +7 -0
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +179 -6
- package/dist/cli/commands/report.d.ts +7 -2
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +19 -6
- package/dist/cli/commands/respond-strict.d.ts.map +1 -1
- package/dist/cli/commands/respond-strict.js +9 -2
- package/dist/cli/commands/roles.d.ts +11 -0
- package/dist/cli/commands/roles.d.ts.map +1 -0
- package/dist/cli/commands/roles.js +392 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +526 -38
- package/dist/cli/commands/task.d.ts +22 -0
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +26 -18
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +91 -3
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/types/api-responses.d.ts +106 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +38 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +15 -1
- package/dist/cli/utils/agent-instances.d.ts +29 -1
- package/dist/cli/utils/agent-instances.d.ts.map +1 -1
- package/dist/cli/utils/agent-instances.js +67 -7
- package/dist/cli/utils/agent-roles.d.ts +75 -0
- package/dist/cli/utils/agent-roles.d.ts.map +1 -0
- package/dist/cli/utils/agent-roles.js +238 -0
- package/dist/cli/utils/api-client-deadline.d.ts +28 -0
- package/dist/cli/utils/api-client-deadline.d.ts.map +1 -0
- package/dist/cli/utils/api-client-deadline.js +46 -0
- package/dist/cli/utils/api-client-errors.d.ts +140 -0
- package/dist/cli/utils/api-client-errors.d.ts.map +1 -0
- package/dist/cli/utils/api-client-errors.js +222 -0
- package/dist/cli/utils/api-client.d.ts +9 -131
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +43 -258
- package/dist/cli/utils/role-failure.d.ts +31 -0
- package/dist/cli/utils/role-failure.d.ts.map +1 -0
- package/dist/cli/utils/role-failure.js +90 -0
- package/dist/cli/utils/role-input.d.ts +16 -0
- package/dist/cli/utils/role-input.d.ts.map +1 -0
- package/dist/cli/utils/role-input.js +78 -0
- package/dist/cli/utils/security-logger.d.ts +17 -0
- package/dist/cli/utils/security-logger.d.ts.map +1 -1
- package/dist/cli/utils/security-logger.js +44 -5
- package/dist/lib/cli-tools/types.d.ts +6 -0
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.d.ts +16 -0
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +16 -0
- package/dist/lib/session/send-attempt-types.d.ts +4 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.d.ts +22 -0
- package/dist/lib/verification/verify-config.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.js +32 -2
- package/dist/server/locales/en/worktree.json +30 -4
- package/dist/server/locales/ja/worktree.json +30 -4
- package/dist/server/src/config/safe-directory.js +30 -0
- package/dist/server/src/lib/agent-roles/adapters.js +174 -0
- package/dist/server/src/lib/agent-roles/artifacts.js +638 -0
- package/dist/server/src/lib/agent-roles/composition.js +222 -0
- package/dist/server/src/lib/agent-roles/fingerprint.js +21 -0
- package/dist/server/src/lib/agent-roles/jsonc.js +85 -0
- package/dist/server/src/lib/agent-roles/launch-errors.js +58 -0
- package/dist/server/src/lib/agent-roles/pane-env.js +63 -0
- package/dist/server/src/lib/agent-roles/resolve.js +375 -0
- package/dist/server/src/lib/agent-roles/toml-basic.js +140 -0
- package/dist/server/src/lib/agent-roles/unicode.js +16 -0
- package/dist/server/src/lib/agent-roles/validation.js +61 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +39 -6
- package/dist/server/src/lib/cli-tools/base.js +63 -5
- package/dist/server/src/lib/cli-tools/claude-auto-default-nudge.js +141 -0
- package/dist/server/src/lib/cli-tools/claude.js +15 -3
- package/dist/server/src/lib/cli-tools/codex.js +134 -21
- package/dist/server/src/lib/cli-tools/command-code.js +28 -13
- package/dist/server/src/lib/cli-tools/copilot.js +189 -31
- package/dist/server/src/lib/cli-tools/gemini.js +37 -3
- package/dist/server/src/lib/cli-tools/launch-answer-skips.js +76 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +10 -0
- package/dist/server/src/lib/cli-tools/opencode.js +214 -12
- package/dist/server/src/lib/cli-tools/prompt-wait-dialog.js +115 -0
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +65 -12
- package/dist/server/src/lib/cli-tools/submit-verified-sender-composer.js +78 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-lock.js +116 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-report.js +250 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-shared.js +106 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +94 -295
- package/dist/server/src/lib/cli-tools/vibe-local.js +111 -0
- package/dist/server/src/lib/db/agent-instances-db.js +53 -0
- package/dist/server/src/lib/db/agent-roles-db.js +409 -0
- package/dist/server/src/lib/db/agent-session-cost-sampler.js +3 -2
- package/dist/server/src/lib/db/chat-db.js +14 -1
- package/dist/server/src/lib/db/db-instance.js +84 -2
- package/dist/server/src/lib/db/migrations/index.js +6 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v63-session-relays-delivery-attempt.js +61 -0
- package/dist/server/src/lib/db/migrations/v64-agent-roles.js +123 -0
- package/dist/server/src/lib/db/migrations/v65-agent-instance-creation-keys.js +42 -0
- package/dist/server/src/lib/db/relay-bind-db-base.js +89 -0
- package/dist/server/src/lib/db/relay-bind-db-delivery.js +223 -0
- package/dist/server/src/lib/db/relay-bind-db-pending.js +183 -0
- package/dist/server/src/lib/db/relay-bind-db.js +88 -167
- package/dist/server/src/lib/db/relay-db-base.js +20 -0
- package/dist/server/src/lib/db/relay-db-count.js +49 -0
- package/dist/server/src/lib/db/relay-db-delivery.js +104 -0
- package/dist/server/src/lib/db/relay-db-hold.js +250 -0
- package/dist/server/src/lib/db/relay-db.js +68 -92
- package/dist/server/src/lib/detection/cli-patterns.js +13 -3
- package/dist/server/src/lib/detection/model-info-extractor.js +1 -1
- package/dist/server/src/lib/detection/tools/claude/patterns.js +76 -0
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +5 -0
- package/dist/server/src/lib/detection/tools/codex/detect.js +5 -1
- package/dist/server/src/lib/detection/tools/codex/patterns.js +52 -2
- package/dist/server/src/lib/detection/tools/codex/prompt.js +23 -3
- package/dist/server/src/lib/detection/tools/opencode/composer-own-text.js +119 -0
- package/dist/server/src/lib/detection/tools/opencode/detect.js +30 -15
- package/dist/server/src/lib/detection/tools/opencode/patterns.js +268 -7
- package/dist/server/src/lib/detection/tools/opencode/readiness.js +71 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +51 -15
- package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +195 -11
- package/dist/server/src/lib/detection/tools/run-detection.js +5 -2
- package/dist/server/src/lib/detection/tools/verified-against.js +16 -0
- package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +92 -0
- package/dist/server/src/lib/git/git-common-dir.js +192 -0
- package/dist/server/src/lib/hooks/hook-settings-generator.js +8 -2
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +31 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +31 -8
- package/dist/server/src/lib/hooks/sources/opencode/client.js +20 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +24 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +208 -35
- package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +7 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +117 -2
- package/dist/server/src/lib/job-executor.js +18 -1
- package/dist/server/src/lib/polling/response-checker-extraction-steps.js +58 -4
- package/dist/server/src/lib/polling/response-checker.js +32 -7
- package/dist/server/src/lib/relay/relay-bound-reply.js +20 -9
- package/dist/server/src/lib/relay/relay-delivery-block.js +150 -0
- package/dist/server/src/lib/relay/relay-delivery.js +416 -79
- package/dist/server/src/lib/relay/relay-messages.js +13 -0
- package/dist/server/src/lib/relay/relay-system-line.js +28 -15
- package/dist/server/src/lib/relay/types.js +14 -2
- package/dist/server/src/lib/response-cleaner.js +13 -3
- package/dist/server/src/lib/response-extractor.js +38 -3
- package/dist/server/src/lib/session/agent-session-lifecycle.js +9 -1
- package/dist/server/src/lib/session/claude-executor.js +13 -1
- package/dist/server/src/lib/session/claude-session.js +113 -14
- package/dist/server/src/lib/session/current-output-builder.js +7 -5
- package/dist/server/src/lib/session/instance-input-lock.js +140 -6
- package/dist/server/src/lib/session/prompt-submit-receipt.js +87 -18
- package/dist/server/src/lib/session/prompt-waiting-guard.js +8 -2
- package/dist/server/src/lib/session/respond-target.js +82 -0
- package/dist/server/src/lib/session/role-launch.js +722 -0
- package/dist/server/src/lib/session/send-attempt-state.js +137 -3
- package/dist/server/src/lib/session/send-user-message.js +84 -7
- package/dist/server/src/lib/session/session-generation-archive.js +7 -8
- package/dist/server/src/lib/session/session-launch-flight.js +33 -1
- package/dist/server/src/lib/session/structured-prompt.js +12 -7
- package/dist/server/src/lib/session/worktree-session-reconcile.js +15 -0
- package/dist/server/src/lib/session-key-sender.js +6 -1
- package/dist/server/src/lib/test-run-detection.js +53 -0
- package/dist/server/src/lib/tmux/read-mode.js +4 -0
- package/dist/server/src/lib/tmux/session-hook-scripts.js +36 -4
- package/dist/server/src/lib/tui-accumulator.js +14 -5
- package/dist/server/src/lib/verification/env-clean-gate.js +117 -12
- package/dist/server/src/lib/verification/gate-runner.js +9 -8
- package/dist/server/src/lib/verification/verify-config.js +32 -2
- package/dist/server/src/types/agent-roles.js +56 -0
- package/dist/types/agent-roles.d.ts +351 -0
- package/dist/types/agent-roles.d.ts.map +1 -0
- package/dist/types/agent-roles.js +56 -0
- package/docs/en/user-guide/webapp-guide.md +16 -0
- package/package.json +2 -1
- package/release-notes/0.49.3.json +52 -0
- package/release-notes/0.50.0.json +113 -0
- package/.next/server/chunks/1062.js +0 -1
- package/.next/server/chunks/110.js +0 -1
- package/.next/server/chunks/2422.js +0 -1
- package/.next/server/chunks/3756.js +0 -1
- package/.next/server/chunks/4936.js +0 -1
- package/.next/server/chunks/5630.js +0 -1
- package/.next/server/chunks/610.js +0 -1
- package/.next/server/chunks/6119.js +0 -1
- package/.next/server/chunks/6808.js +0 -4
- package/.next/server/chunks/7491.js +0 -3
- package/.next/server/chunks/9198.js +0 -144
- package/.next/server/chunks/9360.js +0 -2
- package/.next/server/chunks/9584.js +0 -1
- package/.next/static/chunks/2407-07a237575e1ceb9e.js +0 -1
- package/.next/static/chunks/344-e1cefd00787060e4.js +0 -1
- package/.next/static/chunks/3931-61ad1a4fc0208d0e.js +0 -1
- package/.next/static/chunks/7229.7f0f5a7032b612b4.js +0 -1
- package/.next/static/chunks/8165-263172c17ae8e8c3.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/layout-4f64316957b0a8e5.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +0 -1
- package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-33afc6aa96289fb0.js +0 -1
- package/.next/static/css/c1e307d05daf93b6.css +0 -1
- package/.next/static/yGatWDsS532awSs51kXyd/_buildManifest.js +0 -1
- /package/.next/static/{yGatWDsS532awSs51kXyd → z4d8-5MaLkoD-4EhueZwk}/_ssgManifest.js +0 -0
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* chat surface, the History tab and any transcript that happens to be open,
|
|
9
9
|
* without a fourth history surface being invented for four sentences.
|
|
10
10
|
*
|
|
11
|
-
* Idempotent: the request id is `relay-sys:<relayId>:<kind>`
|
|
12
|
-
*
|
|
11
|
+
* Idempotent: the request id is `relay-sys:<relayId>:<kind>` (Issue #4082:
|
|
12
|
+
* `…:<kind>:<scope>` for a line written once per payload attempt) and each row
|
|
13
|
+
* is probed for before it is written, in the same transaction, so a delivery that is retried — which the
|
|
13
14
|
* pump does by design — does not stack four "waiting for the reply" lines.
|
|
14
15
|
*
|
|
15
16
|
* Never throws. A transcript line is the least important of a relay's three
|
|
@@ -35,23 +36,35 @@ const logger = (0, logger_1.createLogger)('relay-system-line');
|
|
|
35
36
|
* @param subject - Whose name the sentence carries (always the worker, B)
|
|
36
37
|
* @param at - Epoch ms
|
|
37
38
|
* @param detail - Issue #3957: the overlap and hold reason a `replied` line names
|
|
39
|
+
* @param scope - Issue #4082: what makes this line one of several of its kind on
|
|
40
|
+
* the relay (`<payloadId>:<attemptId>` for `held`); null for the once-per-relay lines
|
|
38
41
|
* @returns Whether a row was written by this call
|
|
39
42
|
*/
|
|
40
|
-
function writeRelaySystemLine(db, relayId, kind, target, subject, at = Date.now(), detail = {}) {
|
|
41
|
-
|
|
43
|
+
function writeRelaySystemLine(db, relayId, kind, target, subject, at = Date.now(), detail = {}, scope = null) {
|
|
44
|
+
// Issue #4082: the probe and the write key the line through the same builder.
|
|
45
|
+
const requestId = (0, chat_db_1.relaySystemRequestId)(relayId, kind, scope);
|
|
42
46
|
try {
|
|
43
|
-
|
|
47
|
+
// Probe and write in one IMMEDIATE transaction: a second connection (or a
|
|
48
|
+
// second server on the same file) cannot slip its own copy in between.
|
|
49
|
+
const message = db
|
|
50
|
+
.transaction(() => {
|
|
51
|
+
if ((0, chat_db_1.findMessageByRequestId)(db, target.worktreeId, requestId))
|
|
52
|
+
return null;
|
|
53
|
+
const locale = (0, model_change_push_notifier_1.resolveReadersLocale)(db);
|
|
54
|
+
return (0, chat_db_1.createRelaySystemMessage)(db, {
|
|
55
|
+
worktreeId: target.worktreeId,
|
|
56
|
+
cliToolId: target.cliToolId,
|
|
57
|
+
instanceId: target.instanceId,
|
|
58
|
+
content: (0, relay_messages_1.buildRelaySystemLine)(locale, kind, subject.alias, detail),
|
|
59
|
+
relayId,
|
|
60
|
+
kind,
|
|
61
|
+
scope,
|
|
62
|
+
at,
|
|
63
|
+
});
|
|
64
|
+
})
|
|
65
|
+
.immediate();
|
|
66
|
+
if (message === null)
|
|
44
67
|
return false;
|
|
45
|
-
const locale = (0, model_change_push_notifier_1.resolveReadersLocale)(db);
|
|
46
|
-
const message = (0, chat_db_1.createRelaySystemMessage)(db, {
|
|
47
|
-
worktreeId: target.worktreeId,
|
|
48
|
-
cliToolId: target.cliToolId,
|
|
49
|
-
instanceId: target.instanceId,
|
|
50
|
-
content: (0, relay_messages_1.buildRelaySystemLine)(locale, kind, subject.alias, detail),
|
|
51
|
-
relayId,
|
|
52
|
-
kind,
|
|
53
|
-
at,
|
|
54
|
-
});
|
|
55
68
|
try {
|
|
56
69
|
(0, ws_server_1.broadcastMessage)('message', {
|
|
57
70
|
worktreeId: target.worktreeId,
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* @module lib/relay/types
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.LEGACY_RELAY_BINDING_FIELDS = exports.OPEN_RELAY_STATES = void 0;
|
|
13
|
+
exports.LEGACY_RELAY_BINDING_FIELDS = exports.RELAY_HOLD_ACTIONS = exports.OPEN_RELAY_STATES = void 0;
|
|
14
14
|
exports.isOpenRelayState = isOpenRelayState;
|
|
15
|
+
exports.relayRequesterPaneCommand = relayRequesterPaneCommand;
|
|
15
16
|
exports.emptyRelayCounts = emptyRelayCounts;
|
|
16
17
|
/** The states from which a relay can still produce a delivery. */
|
|
17
18
|
exports.OPEN_RELAY_STATES = ['pending', 'prompt'];
|
|
@@ -19,7 +20,17 @@ exports.OPEN_RELAY_STATES = ['pending', 'prompt'];
|
|
|
19
20
|
function isOpenRelayState(state) {
|
|
20
21
|
return exports.OPEN_RELAY_STATES.includes(state);
|
|
21
22
|
}
|
|
22
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The `capture` that shows the requester's pane — where a held relay payload
|
|
25
|
+
* went (Issue #4064). The exact instance, so an alias or a worktree default
|
|
26
|
+
* cannot point at another pane.
|
|
27
|
+
*/
|
|
28
|
+
function relayRequesterPaneCommand(requester) {
|
|
29
|
+
return `commandmate capture ${requester.worktreeId} --instance ${requester.instanceId} --pane`;
|
|
30
|
+
}
|
|
31
|
+
/** Every {@link RelayHoldAction}, for validation. */
|
|
32
|
+
exports.RELAY_HOLD_ACTIONS = ['confirm', 'retry', 'discard'];
|
|
33
|
+
/** The v62 fields of a row with no binding, as a legacy relay reads (Issue #3957), and no delivery hold (#4064). */
|
|
23
34
|
exports.LEGACY_RELAY_BINDING_FIELDS = {
|
|
24
35
|
bindMode: 'legacy',
|
|
25
36
|
sendState: null,
|
|
@@ -29,6 +40,7 @@ exports.LEGACY_RELAY_BINDING_FIELDS = {
|
|
|
29
40
|
obsState: null,
|
|
30
41
|
holdReason: null,
|
|
31
42
|
overlap: null,
|
|
43
|
+
deliveryHold: null,
|
|
32
44
|
};
|
|
33
45
|
/** An empty {@link RelayCounts}. */
|
|
34
46
|
function emptyRelayCounts() {
|
|
@@ -368,16 +368,26 @@ function cleanCopilotResponse(response) {
|
|
|
368
368
|
* with a Build marker. Without this trimming, savePendingAssistantResponse
|
|
369
369
|
* and Layer 2 accumulator would include previous Q&As in the response.
|
|
370
370
|
* 3. Skip empty lines
|
|
371
|
-
* 4. Skip lines matching any
|
|
371
|
+
* 4. Skip lines matching any of `skipPatterns` (TUI artifacts)
|
|
372
372
|
* 5. Skip Build summary line (OPENCODE_RESPONSE_COMPLETE, the completion indicator)
|
|
373
373
|
* 6. Join remaining lines
|
|
374
374
|
*
|
|
375
|
+
* Issue #4188: the skip list is the caller's. The default is the whole
|
|
376
|
+
* `OPENCODE_SKIP_PATTERNS`, which reads the rows only the chrome draws
|
|
377
|
+
* (`esc interrupt`, `Ask anything...`, `tab agents ctrl+p commands`, the spinner
|
|
378
|
+
* run) by their words, wherever they sit. A caller whose rows are known to lie
|
|
379
|
+
* above the located chrome — the poller's save of an extracted turn and of the
|
|
380
|
+
* Layer-2 accumulator — passes `OPENCODE_TRANSCRIPT_SKIP_PATTERNS`, so a reply
|
|
381
|
+
* quoting those rows keeps them. (This replaced `cleanOpenCodeTurnResponse`, a
|
|
382
|
+
* copy of this function that differed only in that list.)
|
|
383
|
+
*
|
|
375
384
|
* @param response - Raw OpenCode response (may contain TUI decoration)
|
|
385
|
+
* @param skipPatterns - Rows to drop; defaults to `OPENCODE_SKIP_PATTERNS`
|
|
376
386
|
* @returns Cleaned response with TUI artifacts removed
|
|
377
387
|
*
|
|
378
388
|
* @internal Exported for unit testing (response-poller-opencode.test.ts)
|
|
379
389
|
*/
|
|
380
|
-
function cleanOpenCodeResponse(response) {
|
|
390
|
+
function cleanOpenCodeResponse(response, skipPatterns = cli_patterns_1.OPENCODE_SKIP_PATTERNS) {
|
|
381
391
|
const lines = response.split('\n');
|
|
382
392
|
// Step 2: Trim to latest response by finding Build markers.
|
|
383
393
|
// Each Q&A exchange ends with "square Build . model . time".
|
|
@@ -401,7 +411,7 @@ function cleanOpenCodeResponse(response) {
|
|
|
401
411
|
if (!cleanLine)
|
|
402
412
|
continue;
|
|
403
413
|
// Skip lines matching any OpenCode skip pattern
|
|
404
|
-
const shouldSkip =
|
|
414
|
+
const shouldSkip = skipPatterns.some(pattern => pattern.test(cleanLine));
|
|
405
415
|
if (shouldSkip)
|
|
406
416
|
continue;
|
|
407
417
|
// Skip the Build summary line (completion indicator)
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.resolveOpenCodeTurnRegion = resolveOpenCodeTurnRegion;
|
|
11
11
|
exports.sliceOpenCodeTurn = sliceOpenCodeTurn;
|
|
12
|
+
exports.sliceOpenCodeTurnWithSkip = sliceOpenCodeTurnWithSkip;
|
|
12
13
|
exports.isOpenCodeComplete = isOpenCodeComplete;
|
|
13
14
|
exports.resolveExtractionStartIndex = resolveExtractionStartIndex;
|
|
14
15
|
const cli_patterns_1 = require("./detection/cli-patterns");
|
|
@@ -59,11 +60,35 @@ function resolveOpenCodeTurnRegion(lines) {
|
|
|
59
60
|
* on screen yet.
|
|
60
61
|
*/
|
|
61
62
|
function sliceOpenCodeTurn(output) {
|
|
63
|
+
return sliceOpenCodeTurnWithSkip(output).turn;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* {@link sliceOpenCodeTurn} plus the skip list its rows may be cleaned with
|
|
67
|
+
* (Issue #4188).
|
|
68
|
+
*
|
|
69
|
+
* When the chrome was located, the slice ends above it by position, so a row of
|
|
70
|
+
* the slice with the words only the chrome draws (`esc interrupt`,
|
|
71
|
+
* `Ask anything...`, `tab agents ctrl+p commands`, the spinner run) is a reply's
|
|
72
|
+
* row quoting them: {@link OPENCODE_TRANSCRIPT_SKIP_PATTERNS} keeps it. With no
|
|
73
|
+
* chrome boundary the slice runs to the end of the pane and the words are the
|
|
74
|
+
* only reading left: the whole {@link OPENCODE_SKIP_PATTERNS}.
|
|
75
|
+
*
|
|
76
|
+
* The Layer-2 accumulator is the caller: its rows reach the save
|
|
77
|
+
* (`turnHeadTruncated`) one at a time with no position, so the position has to
|
|
78
|
+
* be read here, where the frame still is.
|
|
79
|
+
*
|
|
80
|
+
* @param output - Raw `capture-pane` output.
|
|
81
|
+
* @returns The region's rows (`''` when none) and the skip list for them
|
|
82
|
+
*
|
|
83
|
+
* @internal Exported for unit testing
|
|
84
|
+
*/
|
|
85
|
+
function sliceOpenCodeTurnWithSkip(output) {
|
|
62
86
|
const rawLines = output.split('\n');
|
|
63
87
|
const region = resolveOpenCodeTurnRegion(rawLines.map(cli_patterns_1.stripAnsi));
|
|
88
|
+
const skipPatterns = region.chromeStart >= 0 ? cli_patterns_1.OPENCODE_TRANSCRIPT_SKIP_PATTERNS : cli_patterns_1.OPENCODE_SKIP_PATTERNS;
|
|
64
89
|
if (region.start >= region.end)
|
|
65
|
-
return '';
|
|
66
|
-
return rawLines.slice(region.start, region.end).join('\n');
|
|
90
|
+
return { turn: '', skipPatterns };
|
|
91
|
+
return { turn: rawLines.slice(region.start, region.end).join('\n'), skipPatterns };
|
|
67
92
|
}
|
|
68
93
|
/**
|
|
69
94
|
* Check if OpenCode has completed its response.
|
|
@@ -119,8 +144,13 @@ function isOpenCodeComplete(output) {
|
|
|
119
144
|
// processing, and must NOT be blocked on a permission dialog. The last two are
|
|
120
145
|
// read from the WHOLE frame: both live in the chrome the region excludes.
|
|
121
146
|
// The "esc interrupt" indicator appears in the TUI footer during model processing.
|
|
147
|
+
//
|
|
148
|
+
// Issue #4188: the hint by position — under the composer's bottom border, where
|
|
149
|
+
// every measured running frame draws it — as the status reader has read it since
|
|
150
|
+
// #4175. A reply quoting the hint row whole sits above the border, and kept its
|
|
151
|
+
// turn from ever completing.
|
|
122
152
|
return (cli_patterns_1.OPENCODE_TURN_COMPLETE_PATTERN.test(turnRegion) &&
|
|
123
|
-
!cli_patterns_1.
|
|
153
|
+
!(0, cli_patterns_1.isOpencodeProcessingFooter)(output) &&
|
|
124
154
|
!cli_patterns_1.OPENCODE_PERMISSION_PATTERN.test(output));
|
|
125
155
|
}
|
|
126
156
|
/**
|
|
@@ -173,6 +203,11 @@ function resolveExtractionStartIndex(lastCapturedLine, totalLines, bufferReset,
|
|
|
173
203
|
// doesn't grow -- it's always ~PANE_HEIGHT lines. bufferWasReset is often true because
|
|
174
204
|
// lastCapturedLine = totalLines. Must execute BEFORE Branch 1 to avoid Branch 1's small
|
|
175
205
|
// window (40 lines) which fails to find the second-to-last Build marker in a 200-line pane.
|
|
206
|
+
// Issue #4187: opencode-v2 is an alternate-screen TUI too, but it is not added here
|
|
207
|
+
// on purpose. The screen reading never saves a V2 reply (V2 has no rule in
|
|
208
|
+
// `isTurnComplete`; its replies are written from its own server's document,
|
|
209
|
+
// `lib/hooks/sources/opencode-v2/history`), so it never reaches a completed
|
|
210
|
+
// extraction that would read this start.
|
|
176
211
|
if (cliToolId === 'opencode' || cliToolId === 'copilot') {
|
|
177
212
|
const foundUserPrompt = findRecentUserPromptIndex(totalLines);
|
|
178
213
|
return foundUserPrompt >= 0 ? foundUserPrompt + 1 : 0;
|
|
@@ -47,6 +47,7 @@ const session_starting_state_1 = require("../../lib/session/session-starting-sta
|
|
|
47
47
|
const auto_yes_enter_fallback_state_1 = require("../../lib/polling/auto-yes-enter-fallback-state");
|
|
48
48
|
const instance_input_lock_1 = require("../../lib/session/instance-input-lock");
|
|
49
49
|
const prompt_submit_receipt_1 = require("../../lib/session/prompt-submit-receipt");
|
|
50
|
+
const role_launch_1 = require("../../lib/session/role-launch");
|
|
50
51
|
const session_name_1 = require("../../lib/cli-tools/session-name");
|
|
51
52
|
const logger_1 = require("../../lib/logger");
|
|
52
53
|
const logger = (0, logger_1.createLogger)('lib/session/agent-session-lifecycle');
|
|
@@ -81,6 +82,9 @@ function beginAgentSession(target, at = Date.now()) {
|
|
|
81
82
|
// its own. A second call from the same launch (codex's
|
|
82
83
|
// `relaunchIntoSamePane`) rewrites the same launch's record.
|
|
83
84
|
(0, session_starting_state_1.markSessionStarting)(target.worktreeId, target.cliToolId, target.instanceId, at);
|
|
85
|
+
// Issue #4115: a second call from one launch means its process was replaced,
|
|
86
|
+
// so the role's generation moves on with it. The role itself does not change.
|
|
87
|
+
(0, role_launch_1.noteLaunchProcessReplaced)(target);
|
|
84
88
|
const before = (0, agent_event_state_1.getAgentEventDropCounts)(target.worktreeId, target.cliToolId, target.instanceId).decisionEvicted;
|
|
85
89
|
(0, agent_event_state_1.beginAgentEventGeneration)(target.worktreeId, target.cliToolId, target.instanceId, at);
|
|
86
90
|
// Issue #3397: Auto-Yes's Enter belongs to the process whose screen it went
|
|
@@ -178,7 +182,11 @@ function prepareAgentLaunch(context) {
|
|
|
178
182
|
*
|
|
179
183
|
* @param context - The instance, its executable, and the worktree it runs in
|
|
180
184
|
* @returns `NAME='value' … command`, ready for `sendKeys`
|
|
185
|
+
* @throws {RoleLaunchRefusedError} This launch's role cannot be applied (Issue #4115)
|
|
181
186
|
*/
|
|
182
187
|
function buildAgentLaunchCommandLine(context) {
|
|
183
|
-
|
|
188
|
+
// Issue #4115: the role, when this runs inside a launch that has one. Applied
|
|
189
|
+
// here because every driver gets its line here, and outside `prepareLaunch`
|
|
190
|
+
// because that one fails open, and a role must not.
|
|
191
|
+
return (0, role_launch_1.renderLaunchCommandWithRole)(context, prepareAgentLaunch(context));
|
|
184
192
|
}
|
|
@@ -133,6 +133,16 @@ function truncateOutput(output) {
|
|
|
133
133
|
* @returns Array of CLI arguments
|
|
134
134
|
*/
|
|
135
135
|
function buildCliArgs(message, cliToolId, permission, options) {
|
|
136
|
+
const args = buildCliArgsWithoutRole(message, cliToolId, permission, options);
|
|
137
|
+
const role = options?.role;
|
|
138
|
+
if (!role || role.args.length === 0)
|
|
139
|
+
return args;
|
|
140
|
+
if (role.headlessPosition === 'trailing')
|
|
141
|
+
return [...args, ...role.args];
|
|
142
|
+
// `gh copilot` is the executable's first word, so the role goes after it.
|
|
143
|
+
return cliToolId === 'copilot' ? [args[0], ...role.args, ...args.slice(1)] : [...role.args, ...args];
|
|
144
|
+
}
|
|
145
|
+
function buildCliArgsWithoutRole(message, cliToolId, permission, options) {
|
|
136
146
|
switch (cliToolId) {
|
|
137
147
|
case 'codex':
|
|
138
148
|
return ['exec', message, '--sandbox', permission ?? 'workspace-write'];
|
|
@@ -872,9 +882,11 @@ async function executeClaudeCommand(message, cwd, cliToolId = 'claude', permissi
|
|
|
872
882
|
// `opencode.json` read was the one under `PWD`. `opencode2 run` has no `--dir`
|
|
873
883
|
// (v1 has), so the child's `PWD` is set to `cwd`. Other tools keep the
|
|
874
884
|
// environment they had.
|
|
875
|
-
const
|
|
885
|
+
const baseEnv = cliToolId === 'opencode-v2'
|
|
876
886
|
? { ...(0, env_sanitizer_1.sanitizeEnvForChildProcess)(), PWD: cwd }
|
|
877
887
|
: (0, env_sanitizer_1.sanitizeEnvForChildProcess)();
|
|
888
|
+
// Issue #4115: composed by the caller from this same sanitized environment.
|
|
889
|
+
const env = options?.role ? { ...baseEnv, ...options.role.env } : baseEnv;
|
|
878
890
|
return new Promise((resolve) => {
|
|
879
891
|
const child = (0, child_process_1.execFile)(command, args, {
|
|
880
892
|
cwd,
|
|
@@ -25,6 +25,7 @@ const child_process_1 = require("child_process");
|
|
|
25
25
|
const util_1 = require("util");
|
|
26
26
|
const promises_1 = require("fs/promises");
|
|
27
27
|
const logger_1 = require("../../lib/logger");
|
|
28
|
+
const claude_auto_default_nudge_1 = require("../../lib/cli-tools/claude-auto-default-nudge");
|
|
28
29
|
const session_ownership_1 = require("../../lib/cli-tools/session-ownership");
|
|
29
30
|
const session_name_1 = require("../../lib/cli-tools/session-name");
|
|
30
31
|
const sources_1 = require("../../lib/hooks/sources");
|
|
@@ -35,6 +36,7 @@ const agent_event_state_1 = require("../../lib/session/agent-event-state");
|
|
|
35
36
|
const session_start_error_1 = require("../../lib/session/session-start-error");
|
|
36
37
|
const launch_screen_1 = require("../../lib/session/launch-screen");
|
|
37
38
|
const instance_input_lock_1 = require("../../lib/session/instance-input-lock");
|
|
39
|
+
const launch_answer_skips_1 = require("../../lib/cli-tools/launch-answer-skips");
|
|
38
40
|
const session_launch_flight_1 = require("../../lib/session/session-launch-flight");
|
|
39
41
|
const launch_keys_1 = require("../../lib/cli-tools/launch-keys");
|
|
40
42
|
const logger = (0, logger_1.createLogger)('claude-session');
|
|
@@ -156,6 +158,69 @@ const TRUST_DIALOG_MAX_MOVES = 20;
|
|
|
156
158
|
exports.CLAUDE_TRUST_DIALOG_CURSOR_STUCK = 'trust dialog: cursor did not reach "Yes, I trust this folder"';
|
|
157
159
|
/** Reported when Claude Code quit from the trust dialog (Issue #3089). A fixed string, never captured output. */
|
|
158
160
|
exports.CLAUDE_TRUST_DIALOG_EXITED = 'trust dialog: Claude Code exited to the shell';
|
|
161
|
+
/** The log event of a trust-dialog key that did not go out (Issue #4149). */
|
|
162
|
+
const TRUST_KEY_SKIPPED = 'trust-dialog-key-skipped';
|
|
163
|
+
/**
|
|
164
|
+
* The start budget ran out with a startup dialog on the screen (Issue #4149).
|
|
165
|
+
*
|
|
166
|
+
* Nothing about that is slow, so {@link SessionStartTimeoutError}'s sentence would send
|
|
167
|
+
* the reader off to wait. Still that error to everything that reads it (`code`): the
|
|
168
|
+
* session is left alive, nothing was typed, the answer is a 503 and no push is sent. The
|
|
169
|
+
* message follows the module's rule (SEC-SF-002): built only from fixed strings, the
|
|
170
|
+
* session name, a number and {@link TrustDialogKeySkip}, never captured output.
|
|
171
|
+
*/
|
|
172
|
+
class ClaudeStartupDialogStalledError extends session_start_error_1.SessionStartTimeoutError {
|
|
173
|
+
/**
|
|
174
|
+
* @param where - Says what the session is stopped on, and what became of the keys
|
|
175
|
+
* @param next - What the reader can do: a send to a running process answers only some dialogs
|
|
176
|
+
*/
|
|
177
|
+
constructor(sessionName, timeoutMs, where, next) {
|
|
178
|
+
super('Claude Code', sessionName, timeoutMs);
|
|
179
|
+
this.message =
|
|
180
|
+
`Claude Code did not reach its input prompt within ${Math.round(timeoutMs / 1000)}s (initialization timeout): ` +
|
|
181
|
+
`the tmux session '${sessionName}' is stopped on ${where} This is not a slow start, so waiting will not ` +
|
|
182
|
+
`move it. The message was not delivered. ${next}`;
|
|
183
|
+
this.name = 'ClaudeStartupDialogStalledError';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The error for a start whose budget ran out, by what its last screen shows.
|
|
188
|
+
*
|
|
189
|
+
* @param lastScreen - The last pane output read, or null when none could be
|
|
190
|
+
*/
|
|
191
|
+
function startTimeoutError(sessionName, lastScreen, trust) {
|
|
192
|
+
if (lastScreen !== null && (0, cli_patterns_1.isClaudeTrustDialogOpen)(lastScreen)) {
|
|
193
|
+
const keys = trust.answers + trust.moves;
|
|
194
|
+
const fate = keys === 0
|
|
195
|
+
? `no key reached it (${trust.lastSkip ?? 'no key was due'})`
|
|
196
|
+
: `it stayed open after ${keys} keys`;
|
|
197
|
+
return new ClaudeStartupDialogStalledError(sessionName, exports.CLAUDE_INIT_TIMEOUT, `the folder-trust dialog, and ${fate}. Enter is never pressed while the cursor is on "No, exit".`,
|
|
198
|
+
// The process stays, and a send to a running one reuses it without answering this dialog.
|
|
199
|
+
'A send on its own does not answer this dialog: run `commandmate capture <worktree-id>` to see it, ' +
|
|
200
|
+
'clear it in a terminal with `commandmate attach <worktree-id>` (each with --instance for a named instance), ' +
|
|
201
|
+
'then send the message again. A retry before that will not get through.');
|
|
202
|
+
}
|
|
203
|
+
if (lastScreen !== null && (0, cli_patterns_1.isClaudeAutoDefaultNudgeOpen)(lastScreen)) {
|
|
204
|
+
return new ClaudeStartupDialogStalledError(sessionName, exports.CLAUDE_INIT_TIMEOUT, '"Make auto mode your default permission mode?", which did not take its keys. No keeps the current mode.',
|
|
205
|
+
// A send answers this one first (answerClaudeAutoDefaultNudgeBeforeSend).
|
|
206
|
+
'Send it again, or run `commandmate capture <worktree-id>` to see the dialog.');
|
|
207
|
+
}
|
|
208
|
+
return new session_start_error_1.SessionStartTimeoutError('Claude Code', sessionName, exports.CLAUDE_INIT_TIMEOUT);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Record a key that did not go out, at warn (Issue #4149: at info an ERROR-only setting
|
|
212
|
+
* hid the only trace of a start that sent nothing). Once per reason in a row: a key that
|
|
213
|
+
* cannot go out is due again on every poll.
|
|
214
|
+
*
|
|
215
|
+
* Issue #4211: the record is the wait's {@link LaunchAnswerSkips} (#4189), which is
|
|
216
|
+
* also the lock's `repeatScope`: a key that went out ends the streak, and a session
|
|
217
|
+
* made again (`invalidateInstanceInput`) is a new one. `startedIn` is the life taken
|
|
218
|
+
* before the key's await, as the nudge and the other tools take it.
|
|
219
|
+
*/
|
|
220
|
+
function noteTrustKeySkipped(sessionName, state, key, reason, startedIn) {
|
|
221
|
+
(0, launch_answer_skips_1.noteLaunchAnswerSkipped)(logger, state.skips, TRUST_KEY_SKIPPED, { sessionName, key, reason }, startedIn);
|
|
222
|
+
state.lastSkip = reason;
|
|
223
|
+
}
|
|
159
224
|
/**
|
|
160
225
|
* One poll's answer to the folder-trust dialog (Issue #201 / #3078 / #3089).
|
|
161
226
|
*
|
|
@@ -178,9 +243,12 @@ exports.CLAUDE_TRUST_DIALOG_EXITED = 'trust dialog: Claude Code exited to the sh
|
|
|
178
243
|
* @param dialogScreen - ANSI-stripped pane output when the dialog is open, else null
|
|
179
244
|
* @param state - Mutated in place
|
|
180
245
|
* @param readMark - {@link instanceInputLaunchReadMark} taken before `dialogScreen` was captured
|
|
246
|
+
* @param screenLife - {@link instanceInputAnswerSkipLife} taken before `dialogScreen` was captured
|
|
247
|
+
* (review 4211 P2): a decline judged on that screen alone (`cursor-unreadable`) is
|
|
248
|
+
* recorded in the life it was read in, not the one after this function's awaits
|
|
181
249
|
* @throws {SessionStartFailedError} When the move budget is spent
|
|
182
250
|
*/
|
|
183
|
-
async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)()) {
|
|
251
|
+
async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)(), screenLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName)) {
|
|
184
252
|
if (state.pollsSinceAnswer !== null)
|
|
185
253
|
state.pollsSinceAnswer++;
|
|
186
254
|
if (state.pollsSinceMove !== null)
|
|
@@ -192,23 +260,34 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
|
|
|
192
260
|
state.shellTellsExit = await paneCommandIsAgent(sessionName);
|
|
193
261
|
}
|
|
194
262
|
const keys = (0, cli_patterns_1.resolveClaudeTrustDialogKeys)(dialogScreen);
|
|
195
|
-
if (keys === null)
|
|
263
|
+
if (keys === null) {
|
|
264
|
+
// Review 4211 P2: the screen's life, taken before `paneCommandIsAgent`'s await. A
|
|
265
|
+
// session made again meanwhile makes this an old life's decline: its warn, no record.
|
|
266
|
+
noteTrustKeySkipped(sessionName, state, null, 'cursor-unreadable', screenLife);
|
|
196
267
|
return;
|
|
268
|
+
}
|
|
197
269
|
if (keys.length === 1) {
|
|
198
270
|
// Cursor on Yes, on this very screen: the Issue #201 Enter.
|
|
199
271
|
const due = state.pollsSinceAnswer === null ||
|
|
200
272
|
(state.pollsSinceAnswer >= TRUST_DIALOG_REANSWER_POLLS && state.answers < TRUST_DIALOG_MAX_ANSWERS);
|
|
201
273
|
if (!due)
|
|
202
274
|
return;
|
|
275
|
+
// Issue #4211: the life the answer starts in, before its await.
|
|
276
|
+
const answerLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
|
|
203
277
|
try {
|
|
204
|
-
|
|
278
|
+
const skipped = await sendTrustDialogKey(sessionName, readMark, 'Enter', state.skips);
|
|
279
|
+
if (skipped !== null) {
|
|
280
|
+
noteTrustKeySkipped(sessionName, state, 'Enter', skipped, answerLife);
|
|
205
281
|
return;
|
|
282
|
+
}
|
|
283
|
+
(0, launch_answer_skips_1.forgetLaunchAnswerSkip)(state.skips, TRUST_KEY_SKIPPED);
|
|
206
284
|
state.pollsSinceAnswer = 0;
|
|
207
285
|
state.answers++;
|
|
208
286
|
logger.info('trust-dialog-detected', { keys: 'Enter', attempt: state.answers });
|
|
209
287
|
}
|
|
210
288
|
catch {
|
|
211
289
|
// Left unhandled so a later poll answers the dialog again
|
|
290
|
+
noteTrustKeySkipped(sessionName, state, 'Enter', 'send-failed', answerLife);
|
|
212
291
|
}
|
|
213
292
|
return;
|
|
214
293
|
}
|
|
@@ -218,15 +297,22 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
|
|
|
218
297
|
if (state.moves >= TRUST_DIALOG_MAX_MOVES) {
|
|
219
298
|
throw new session_start_error_1.SessionStartFailedError('Claude Code', sessionName, exports.CLAUDE_TRUST_DIALOG_CURSOR_STUCK);
|
|
220
299
|
}
|
|
300
|
+
// Issue #4211: the life the answer starts in, before its await.
|
|
301
|
+
const answerLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
|
|
221
302
|
try {
|
|
222
|
-
|
|
303
|
+
const skipped = await sendTrustDialogKey(sessionName, readMark, keys[0], state.skips);
|
|
304
|
+
if (skipped !== null) {
|
|
305
|
+
noteTrustKeySkipped(sessionName, state, keys[0], skipped, answerLife);
|
|
223
306
|
return;
|
|
307
|
+
}
|
|
308
|
+
(0, launch_answer_skips_1.forgetLaunchAnswerSkip)(state.skips, TRUST_KEY_SKIPPED);
|
|
224
309
|
state.pollsSinceMove = 0;
|
|
225
310
|
state.moves++;
|
|
226
311
|
logger.info('trust-dialog-cursor-move', { key: keys[0], attempt: state.moves });
|
|
227
312
|
}
|
|
228
313
|
catch {
|
|
229
314
|
// Left unhandled so a later poll moves the cursor again
|
|
315
|
+
noteTrustKeySkipped(sessionName, state, keys[0], 'send-failed', answerLife);
|
|
230
316
|
}
|
|
231
317
|
}
|
|
232
318
|
/**
|
|
@@ -235,9 +321,13 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
|
|
|
235
321
|
* the read the key was decided on (`readMark`) and the lock, the dialog is read
|
|
236
322
|
* again and the key goes out only if that screen still calls for it.
|
|
237
323
|
*
|
|
238
|
-
*
|
|
324
|
+
* Issue #4211: `repeatScope` is the wait's record, so the lock's own warn of a
|
|
325
|
+
* decline (`instance-input-answer-*`) is once per streak, as the nudge's is (#4189).
|
|
326
|
+
*
|
|
327
|
+
* @param repeatScope - The wait's {@link LaunchAnswerSkips}
|
|
328
|
+
* @returns null when the key was sent, otherwise why not (the next poll decides again)
|
|
239
329
|
*/
|
|
240
|
-
async function sendTrustDialogKey(sessionName, readMark, key) {
|
|
330
|
+
async function sendTrustDialogKey(sessionName, readMark, key, repeatScope) {
|
|
241
331
|
const outcome = await (0, instance_input_lock_1.answerUnderInstanceInputLock)(sessionName, readMark, async () => {
|
|
242
332
|
const screen = await getCleanPaneOutput(sessionName);
|
|
243
333
|
if (!(0, cli_patterns_1.isClaudeTrustDialogOpen)(screen))
|
|
@@ -246,10 +336,8 @@ async function sendTrustDialogKey(sessionName, readMark, key) {
|
|
|
246
336
|
if (keys === null)
|
|
247
337
|
return false;
|
|
248
338
|
return key === 'Enter' ? keys.length === 1 : keys.length > 1 && keys[0] === key;
|
|
249
|
-
}, () => (key === 'Enter' ? (0, tmux_1.sendKeys)(sessionName, '', true) : (0, tmux_1.sendSpecialKeys)(sessionName, [key])), { mode: 'exclusive' });
|
|
250
|
-
|
|
251
|
-
logger.info('trust-dialog-key-skipped', { key, reason: outcome.reason });
|
|
252
|
-
return outcome.answered;
|
|
339
|
+
}, () => (key === 'Enter' ? (0, tmux_1.sendKeys)(sessionName, '', true) : (0, tmux_1.sendSpecialKeys)(sessionName, [key])), { mode: 'exclusive', repeatScope });
|
|
340
|
+
return outcome.answered ? null : outcome.reason;
|
|
253
341
|
}
|
|
254
342
|
/**
|
|
255
343
|
* Whether the pane's foreground process is a shell again (Issue #3089). A
|
|
@@ -711,13 +799,17 @@ async function startClaudeSession(options) {
|
|
|
711
799
|
const startTime = Date.now();
|
|
712
800
|
let initialized = false;
|
|
713
801
|
// Issue #3078 / #3089: the trust dialog's progress this start.
|
|
714
|
-
const trust = { pollsSinceAnswer: null, pollsSinceMove: null, answers: 0, moves: 0, seen: false, shellTellsExit: false };
|
|
802
|
+
const trust = { pollsSinceAnswer: null, pollsSinceMove: null, answers: 0, moves: 0, lastSkip: null, skips: (0, launch_answer_skips_1.newLaunchAnswerSkips)(), seen: false, shellTellsExit: false };
|
|
803
|
+
// Issue #4149: what the budget ran out on.
|
|
804
|
+
let lastScreen = null;
|
|
715
805
|
while (Date.now() - startTime < maxWaitTime) {
|
|
716
806
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
717
807
|
// SF-001: Use getCleanPaneOutput helper (DRY)
|
|
718
808
|
let cleanOutput = null;
|
|
719
809
|
// Issue #3975: before the read the trust keys are decided on.
|
|
720
810
|
const readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)();
|
|
811
|
+
// Review 4211 P2: the life the screen is read in, for a decline judged on it alone.
|
|
812
|
+
const screenLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
|
|
721
813
|
try {
|
|
722
814
|
cleanOutput = await getCleanPaneOutput(sessionName);
|
|
723
815
|
}
|
|
@@ -727,11 +819,12 @@ async function startClaudeSession(options) {
|
|
|
727
819
|
if (cleanOutput === null) {
|
|
728
820
|
continue;
|
|
729
821
|
}
|
|
822
|
+
lastScreen = cleanOutput;
|
|
730
823
|
// Issue #201 / #3078 / #3089: answer the folder-trust dialog. Checked
|
|
731
824
|
// BEFORE the prompt: the dialog's cursor row (`❯ No, exit`) wears the
|
|
732
825
|
// prompt glyph, so an open dialog is never read as a ready prompt.
|
|
733
826
|
const trustDialogOpen = (0, cli_patterns_1.isClaudeTrustDialogOpen)(cleanOutput);
|
|
734
|
-
await answerTrustDialog(sessionName, trustDialogOpen ? cleanOutput : null, trust, readMark);
|
|
827
|
+
await answerTrustDialog(sessionName, trustDialogOpen ? cleanOutput : null, trust, readMark, screenLife);
|
|
735
828
|
// Claude is ready when we see the prompt (DRY-001)
|
|
736
829
|
// Use CLAUDE_PROMPT_PATTERN from cli-patterns.ts for consistency
|
|
737
830
|
// Note: CLAUDE_SEPARATOR_PATTERN was removed from initialization check (Issue #187, P1-1)
|
|
@@ -775,7 +868,7 @@ async function startClaudeSession(options) {
|
|
|
775
868
|
// carried to the caller by the error type rather than lost in a generic
|
|
776
869
|
// message (CONS-005, IMP-001).
|
|
777
870
|
if (!initialized) {
|
|
778
|
-
throw
|
|
871
|
+
throw startTimeoutError(sessionName, lastScreen, trust);
|
|
779
872
|
}
|
|
780
873
|
logger.info('started-claude-session');
|
|
781
874
|
}
|
|
@@ -815,7 +908,13 @@ async function sendMessageToClaude(worktreeId, message, instanceId) {
|
|
|
815
908
|
// (`❯ ` can pass for Claude's prompt) — wait for that launch, or, holding the
|
|
816
909
|
// input lock as the send service does, refuse with nothing typed (R1).
|
|
817
910
|
await (0, session_launch_flight_1.settleSessionLaunch)(sessionName, 'Claude Code');
|
|
818
|
-
|
|
911
|
+
// Issue #4134: a process already parked on this dialog starts no launch, so
|
|
912
|
+
// nothing else answers it and the prompt wait below could only time out.
|
|
913
|
+
await (0, claude_auto_default_nudge_1.answerClaudeAutoDefaultNudgeBeforeSend)(sessionName);
|
|
914
|
+
await (0, session_key_sender_1.sendMessageToSession)(sessionName, message, exports.CLAUDE_POST_PROMPT_DELAY, exports.CLAUDE_SEND_PROMPT_WAIT_TIMEOUT,
|
|
915
|
+
// Issue #4048: the instance this send is for, so the first prompt's hook
|
|
916
|
+
// check reads that instance's entry — the same one the name resolves to.
|
|
917
|
+
{ worktreeId, instanceId });
|
|
819
918
|
}
|
|
820
919
|
/**
|
|
821
920
|
* Capture Claude session output
|
|
@@ -237,7 +237,7 @@ function readAgentEvents(worktreeId, cliToolId, instanceId, resolvedInstanceId)
|
|
|
237
237
|
* every value below is derived from the arguments, and nothing is assigned
|
|
238
238
|
* outside this function.
|
|
239
239
|
*/
|
|
240
|
-
function composePromptData({ worktreeId, cliToolId,
|
|
240
|
+
function composePromptData({ worktreeId, cliToolId, respondInstanceId, output, captureWindowLines, statusResult, startingSince, promptWaiting, askUserQuestion, eventSource, }) {
|
|
241
241
|
const scraperPromptWaiting = statusResult.hasActivePrompt;
|
|
242
242
|
// Issue #1726: the agent's own account of what it asked. It contributes only
|
|
243
243
|
// where some other layer has already established that a dialog is on screen —
|
|
@@ -338,9 +338,9 @@ function composePromptData({ worktreeId, cliToolId, instanceId, output, captureW
|
|
|
338
338
|
: scraperPromptWaiting
|
|
339
339
|
? correctedPromptData ??
|
|
340
340
|
scraperPromptData ??
|
|
341
|
-
(structuredFacts ? (0, structured_prompt_1.buildStructuredPromptData)(worktreeId, structuredFacts,
|
|
341
|
+
(structuredFacts ? (0, structured_prompt_1.buildStructuredPromptData)(worktreeId, structuredFacts, respondInstanceId) : null)
|
|
342
342
|
: structuredFacts
|
|
343
|
-
? (0, structured_prompt_1.buildStructuredPromptData)(worktreeId, structuredFacts,
|
|
343
|
+
? (0, structured_prompt_1.buildStructuredPromptData)(worktreeId, structuredFacts, respondInstanceId)
|
|
344
344
|
: null;
|
|
345
345
|
// Issue #2870: whether `/prompt-response` would answer the prompt published
|
|
346
346
|
// above, read by the SAME function it re-verifies with. In #2868 `promptData`
|
|
@@ -813,7 +813,7 @@ async function buildPayload(db, worktreeId, cliToolId, instanceId) {
|
|
|
813
813
|
const { structuredFacts, promptData, promptAnswerable } = composePromptData({
|
|
814
814
|
worktreeId,
|
|
815
815
|
cliToolId,
|
|
816
|
-
|
|
816
|
+
respondInstanceId: resolvedInstanceId,
|
|
817
817
|
output,
|
|
818
818
|
captureWindowLines,
|
|
819
819
|
statusResult,
|
|
@@ -921,7 +921,9 @@ async function buildPayload(db, worktreeId, cliToolId, instanceId) {
|
|
|
921
921
|
worktreeId,
|
|
922
922
|
cliToolId,
|
|
923
923
|
instanceId: resolvedInstanceId,
|
|
924
|
-
|
|
924
|
+
// Issue #4063: the instance the live payload's question names, so the
|
|
925
|
+
// row says the same `respond` whichever caller wrote it.
|
|
926
|
+
respondInstanceId: resolvedInstanceId,
|
|
925
927
|
state: promptWaiting,
|
|
926
928
|
facts: structuredFacts,
|
|
927
929
|
});
|