commandmate 0.26.1 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +430 -402
- package/.next/app-path-routes-manifest.json +32 -28
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +6 -6
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +24 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +2 -2
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -0
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -0
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +2 -2
- package/.next/server/app/api/fs/browse/route.js.nft.json +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.js +2 -2
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +19 -1
- 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/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/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.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.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 +2 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +2 -0
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +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_client-reference-manifest.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_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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_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_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]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_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]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -5
- 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 +1 -1
- 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 -6
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +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 +3 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_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]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +3 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +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/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]/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/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +2 -2
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +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 +9 -7
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +32 -28
- package/.next/server/chunks/1029.js +1 -1
- package/.next/server/chunks/1068.js +3 -1
- package/.next/server/chunks/1296.js +1 -1
- package/.next/server/chunks/1538.js +7 -0
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +3 -2
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2546.js +1 -1
- package/.next/server/chunks/2689.js +13 -0
- package/.next/server/chunks/2759.js +8 -0
- package/.next/server/chunks/2839.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3292.js +1 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3480.js +1 -17
- package/.next/server/chunks/4393.js +1 -1
- package/.next/server/chunks/4423.js +1 -0
- package/.next/server/chunks/4444.js +22 -8
- package/.next/server/chunks/4565.js +3 -0
- package/.next/server/chunks/467.js +1 -0
- package/.next/server/chunks/4905.js +5 -0
- package/.next/server/chunks/5017.js +1 -0
- package/.next/server/chunks/5089.js +1 -0
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5220.js +1 -0
- package/.next/server/chunks/5354.js +1 -0
- package/.next/server/chunks/552.js +19 -0
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/5998.js +3 -3
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6274.js +11 -11
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/7472.js +1 -0
- package/.next/server/chunks/7506.js +1 -0
- package/.next/server/chunks/848.js +1 -1
- package/.next/server/chunks/8536.js +1 -1
- package/.next/server/chunks/880.js +1 -1
- package/.next/server/chunks/8807.js +5 -5
- package/.next/server/chunks/9067.js +1 -1
- package/.next/server/chunks/9284.js +1 -0
- package/.next/server/chunks/9358.js +1 -1
- package/.next/server/chunks/9508.js +1 -0
- package/.next/server/chunks/9938.js +1 -0
- 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/9IXgWfBUtnEnRqnbmErTp/_buildManifest.js +1 -0
- package/.next/static/chunks/{2053-dfac2d49227cc942.js → 2053-c0e931eb4391baa1.js} +1 -1
- package/.next/static/chunks/3361-5d6e93fba8a92bc1.js +1 -0
- package/.next/static/chunks/3922.0d2e64daf9f187da.js +1 -0
- package/.next/static/chunks/{5229-35f9acab97a553c5.js → 5229-1f5f19740a8d6c11.js} +1 -1
- package/.next/static/chunks/{6381-0e097c0286155883.js → 6381-8cfe50a5ca5425b1.js} +1 -1
- package/.next/static/chunks/{8649-f551b0010dba4986.js → 8521-c43994fb58501d13.js} +1 -1
- package/.next/static/chunks/app/api/app/update/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/skills/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/templates/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/chat/{page-439b35c9cb90dbe0.js → page-231df45127e876c2.js} +1 -1
- package/.next/static/chunks/app/login/{page-eefd515d8c37e5ee.js → page-adc51f0f7cbb7ac6.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/more/{page-889b7546a8a553dc.js → page-3266dfa945972649.js} +1 -1
- package/.next/static/chunks/app/{page-a8d04ac0e3e4c9fc.js → page-0305431f43195431.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/repositories/{page-f3c4d8839b1ca203.js → page-ae8fa55749976f79.js} +1 -1
- package/.next/static/chunks/app/review/{page-6dc88649fe88ac16.js → page-8f63aff862fee421.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-2c9ed9e969097688.js → page-4d5382b257077c14.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-19beef6121c4c982.js → page-aaf0bcb1dfb558b9.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-d5b9cef6d21fabda.js → page-dafc486410e839b7.js} +1 -1
- package/.next/static/chunks/app/skills/{page-06ef637e07dd9377.js → page-9e3c91da31514893.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-5fed3984fafcd910.js → page-90f96977c741bbf8.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-6add0d88e2828c23.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-f7b3dfbe757dc6b8.js +1 -0
- package/.next/static/chunks/{webpack-9d892a9ff07c289d.js → webpack-6a9668cf54a26eba.js} +1 -1
- package/.next/static/css/928e5a8830fbf997.css +1 -0
- package/.next/trace +13 -12
- package/.next/types/app/api/capabilities/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/clear-composer/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/env/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/resolve-target/route.ts +347 -0
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +40 -2
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +28 -13
- package/dist/cli/commands/instances.d.ts +30 -18
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +32 -36
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +73 -1
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +18 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +21 -15
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +38 -0
- package/dist/cli/commands/wait.d.ts +26 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +390 -43
- package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
- package/dist/cli/config/cli-dependencies.js +16 -0
- package/dist/cli/config/cli-tool-ids.d.ts +11 -0
- package/dist/cli/config/cli-tool-ids.d.ts.map +1 -1
- package/dist/cli/config/cli-tool-ids.js +12 -1
- package/dist/cli/types/api-responses.d.ts +443 -2
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +18 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +22 -0
- package/dist/cli/utils/server-capabilities.d.ts +56 -0
- package/dist/cli/utils/server-capabilities.d.ts.map +1 -0
- package/dist/cli/utils/server-capabilities.js +166 -0
- package/dist/cli/utils/session-target.d.ts +70 -0
- package/dist/cli/utils/session-target.d.ts.map +1 -0
- package/dist/cli/utils/session-target.js +118 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts +79 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts.map +1 -0
- package/dist/lib/cli-tools/copilot-executable.js +155 -0
- package/dist/lib/cli-tools/types.d.ts +61 -0
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/cli-tools/types.js +41 -0
- package/dist/lib/detection/ansi.d.ts +2 -1
- package/dist/lib/detection/ansi.d.ts.map +1 -1
- package/dist/lib/detection/ansi.js +3 -2
- package/dist/lib/detection/tools/verified-against.d.ts +84 -0
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -0
- package/dist/lib/detection/tools/verified-against.js +88 -0
- package/dist/lib/detection/version-probes.d.ts +207 -0
- package/dist/lib/detection/version-probes.d.ts.map +1 -0
- package/dist/lib/detection/version-probes.js +290 -0
- package/dist/lib/security/env-sanitizer.d.ts +198 -0
- package/dist/lib/security/env-sanitizer.d.ts.map +1 -0
- package/dist/lib/security/env-sanitizer.js +232 -0
- package/dist/server/locales/en/notifications.json +17 -6
- package/dist/server/locales/ja/notifications.json +17 -6
- package/dist/server/src/config/activity-bar-config.js +4 -0
- package/dist/server/src/config/cli-tool-timing-config.js +59 -2
- package/dist/server/src/config/copilot-constants.js +11 -1
- package/dist/server/src/config/detection-evidence-config.js +129 -0
- package/dist/server/src/config/schedule-config.js +56 -7
- package/dist/server/src/config/tmux-pane-config.js +18 -1
- package/dist/server/src/lib/auto-yes-poller.js +36 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +4 -2
- package/dist/server/src/lib/cli-tools/base.js +131 -10
- package/dist/server/src/lib/cli-tools/capture-spec.js +56 -0
- package/dist/server/src/lib/cli-tools/claude.js +1 -1
- package/dist/server/src/lib/cli-tools/codex.js +6 -2
- package/dist/server/src/lib/cli-tools/composer-spec.js +96 -0
- package/dist/server/src/lib/cli-tools/copilot-executable.js +155 -0
- package/dist/server/src/lib/cli-tools/copilot.js +307 -81
- package/dist/server/src/lib/cli-tools/gemini.js +8 -6
- package/dist/server/src/lib/cli-tools/graceful-exit.js +181 -0
- package/dist/server/src/lib/cli-tools/index.js +11 -1
- package/dist/server/src/lib/cli-tools/manager.js +56 -4
- package/dist/server/src/lib/cli-tools/opencode-config.js +195 -24
- package/dist/server/src/lib/cli-tools/opencode.js +233 -30
- package/dist/server/src/lib/cli-tools/session-name.js +57 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +213 -30
- package/dist/server/src/lib/cli-tools/types.js +41 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +7 -3
- package/dist/server/src/lib/cmate-cli-tool-parser.js +29 -1
- package/dist/server/src/lib/cmate-parser.js +12 -4
- package/dist/server/src/lib/db/db.js +5 -1
- package/dist/server/src/lib/db/migrations/v41-push-subscriptions.js +11 -0
- package/dist/server/src/lib/db/push-subscriptions-db.js +60 -3
- package/dist/server/src/lib/detection/ansi.js +3 -2
- package/dist/server/src/lib/detection/cli-patterns.js +901 -67
- package/dist/server/src/lib/detection/composer-text.js +455 -0
- package/dist/server/src/lib/detection/idle-evidence-observation.js +51 -0
- package/dist/server/src/lib/detection/model-info-extractor.js +195 -4
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +19 -0
- package/dist/server/src/lib/detection/status-detector.js +76 -675
- package/dist/server/src/lib/detection/status-reason.js +57 -0
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +75 -0
- package/dist/server/src/lib/detection/tools/claude/detect.js +144 -0
- package/dist/server/src/lib/detection/tools/claude/patterns.js +98 -0
- package/dist/server/src/lib/detection/tools/claude/prompt.js +124 -0
- package/dist/server/src/lib/detection/tools/codex/detect.js +343 -0
- package/dist/server/src/lib/detection/tools/codex/prompt.js +104 -0
- package/dist/server/src/lib/detection/tools/copilot/detect.js +185 -0
- package/dist/server/src/lib/detection/tools/copilot/prompt.js +89 -0
- package/dist/server/src/lib/detection/tools/dialog-block.js +159 -0
- package/dist/server/src/lib/detection/tools/frame.js +47 -0
- package/dist/server/src/lib/detection/tools/opencode/detect.js +242 -0
- package/dist/server/src/lib/detection/tools/opencode/prompt.js +85 -0
- package/dist/server/src/lib/detection/tools/registry.js +58 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +202 -0
- package/dist/server/src/lib/detection/tools/types.js +34 -0
- package/dist/server/src/lib/detection/tools/verified-against.js +88 -0
- package/dist/server/src/lib/hooks/agent-event-types.js +19 -1
- package/dist/server/src/lib/hooks/permission-adjudication.js +160 -0
- package/dist/server/src/lib/hooks/permission-decision-service.js +81 -14
- package/dist/server/src/lib/hooks/permission-decision-state.js +62 -0
- package/dist/server/src/lib/hooks/permission-request-payload.js +18 -1
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +20 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +403 -50
- package/dist/server/src/lib/hooks/sources/copilot/source.js +40 -4
- package/dist/server/src/lib/hooks/sources/define-source.js +23 -1
- package/dist/server/src/lib/hooks/sources/event-mapper.js +29 -1
- package/dist/server/src/lib/hooks/sources/gemini/source.js +10 -0
- package/dist/server/src/lib/hooks/sources/index.js +3 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +96 -1
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +12 -0
- package/dist/server/src/lib/hooks/sources/opencode/client.js +295 -32
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +120 -42
- package/dist/server/src/lib/hooks/sources/opencode/mappers.js +95 -3
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +70 -9
- package/dist/server/src/lib/hooks/sources/opencode/runtime.js +62 -4
- package/dist/server/src/lib/hooks/sources/opencode/source.js +54 -3
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +254 -26
- package/dist/server/src/lib/hooks/sources/opencode/turn-gate.js +119 -4
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +40 -2
- package/dist/server/src/lib/hooks/tool-input-normalization-state.js +67 -0
- package/dist/server/src/lib/hooks/tool-input-normalization.js +157 -0
- package/dist/server/src/lib/job-executor.js +16 -4
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +184 -0
- package/dist/server/src/lib/polling/response-checker.js +243 -26
- package/dist/server/src/lib/push/failure-episode-state.js +127 -0
- package/dist/server/src/lib/push/failure-push-notifier.js +344 -0
- package/dist/server/src/lib/push/index.js +35 -1
- package/dist/server/src/lib/push/prompt-card-state.js +93 -0
- package/dist/server/src/lib/push/prompt-push-gate.js +130 -0
- package/dist/server/src/lib/push/push-sender.js +82 -7
- package/dist/server/src/lib/push/resolution-push-notifier.js +193 -0
- package/dist/server/src/lib/push/waiting-push-notifier.js +42 -0
- package/dist/server/src/lib/response-cleaner.js +93 -20
- package/dist/server/src/lib/response-extractor.js +98 -5
- package/dist/server/src/lib/security/env-sanitizer.js +179 -5
- package/dist/server/src/lib/session/agent-event-state.js +1038 -189
- package/dist/server/src/lib/session/agent-session-lifecycle.js +8 -0
- package/dist/server/src/lib/session/claude-executor.js +23 -3
- package/dist/server/src/lib/session/claude-session.js +11 -1
- package/dist/server/src/lib/session/composer-clear.js +95 -0
- package/dist/server/src/lib/session/current-output-builder.js +267 -25
- package/dist/server/src/lib/session/provisional-turn.js +310 -0
- package/dist/server/src/lib/session/resolve-session-target.js +156 -0
- package/dist/server/src/lib/session/send-user-message.js +14 -18
- package/dist/server/src/lib/session/session-start-error.js +53 -1
- package/dist/server/src/lib/session/status-evidence.js +217 -0
- package/dist/server/src/lib/session/structured-prompt.js +46 -4
- package/dist/server/src/lib/session/waiting-episode-state.js +24 -0
- package/dist/server/src/lib/tmux/key-sequence.js +120 -0
- package/dist/server/src/lib/tmux/tmux.js +91 -19
- package/dist/server/src/lib/tui-accumulator.js +68 -1
- package/dist/server/src/lib/verification/gate-runner.js +84 -1
- package/dist/server/src/lib/ws-server.js +8 -5
- package/dist/server/src/types/cli-tool-contracts.js +75 -0
- package/dist/server/src/types/terminal-keys.js +37 -0
- package/dist/types/cli-tool-contracts.d.ts +235 -0
- package/dist/types/cli-tool-contracts.d.ts.map +1 -0
- package/dist/types/cli-tool-contracts.js +75 -0
- package/package.json +3 -2
- package/public/sw.js +65 -2
- package/.next/server/chunks/1841.js +0 -1
- package/.next/server/chunks/233.js +0 -1
- package/.next/server/chunks/3022.js +0 -1
- package/.next/server/chunks/3270.js +0 -1
- package/.next/server/chunks/4455.js +0 -1
- package/.next/server/chunks/5959.js +0 -27
- package/.next/server/chunks/7458.js +0 -6
- package/.next/server/chunks/8730.js +0 -1
- package/.next/server/chunks/9058.js +0 -1
- package/.next/server/chunks/9687.js +0 -3
- package/.next/static/chunks/3898-ef488bfa804507d9.js +0 -1
- package/.next/static/chunks/9263.f2034ec525abcf72.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/skills/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/templates/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-fae89f8d4cc3ff97.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-fdfca039b7f5837e.js +0 -1
- package/.next/static/css/e865c4979a41aa03.css +0 -1
- package/.next/static/wyFLOpmKpr45BHZ4svYpE/_buildManifest.js +0 -1
- /package/.next/static/{wyFLOpmKpr45BHZ4svYpE → 9IXgWfBUtnEnRqnbmErTp}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";exports.id=1538,exports.ids=[1538],exports.modules={2466:(a,b,c)=>{c.d(b,{ek:()=>h,u_:()=>g});var d=c(13287);function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a,b){if("string"!=typeof a)return null;let c=a.trim();return""===c?null:c.slice(0,b)}function g(a){if(!e(a)||!Array.isArray(a.questions)||0===a.questions.length||a.questions.length>20)return null;let b=[];for(let c of a.questions){let a=function(a){if(!e(a))return null;let b=f(a.question,1e3);if(null===b||!Array.isArray(a.options)||0===a.options.length||a.options.length>20)return null;let c=[];for(let b of a.options){let a=function(a){if(!e(a))return null;let b=f(a.label,200);return null===b?null:{label:b,description:f(a.description,500)}}(b);if(null===a)return null;c.push(a)}return{question:b,header:f(a.header,64),multiSelect:!0===a.multiSelect,choices:c}}(c);if(null===a)return null;b.push(a)}return b}function h(a){if(!e(a)||a.tool_name!==d.k$)return null;let b=g(a.tool_input);return null===b?null:{questions:b,promptId:f(a.prompt_id,256)}}},2734:(a,b,c)=>{c.d(b,{c:()=>d});let d="codex"},8004:(a,b,c)=>{c.d(b,{T:()=>h});var d=c(72626),e=c(7956);let f=(0,d.h)("safe-directory"),g=new Set;function h(a,b,c){if(!a)return b;if(!(0,e.Mb)(a))return a;let d=`${c}|${a}`;return g.has(d)||(g.add(d),f.warn("virtual-filesystem-path-rejected",{source:c,candidate:a,fallback:b,reason:"A recursive mkdir under /proc, /sys or /dev never returns on Linux; the built-in default is used instead (Issue #1774)."})),b}},13287:(a,b,c)=>{c.d(b,{I4:()=>l,k$:()=>f,l9:()=>e,ss:()=>j,vy:()=>g});var d=c(92196);let e="PermissionRequest",f="AskUserQuestion",g=128;function h(a,b){let c=a[b];return"string"==typeof c&&""!==c?c:null}function i(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function j(a){if(!i(a)||a.hook_event_name!==e)return null;let b=h(a,"tool_name");return b&&!(b.length>g)&&i(a.tool_input)?{toolName:b,toolInput:a.tool_input,promptId:h(a,"prompt_id"),sessionId:h(a,"session_id"),permissionMode:h(a,"permission_mode"),permissionSuggestions:Array.isArray(a.permission_suggestions)?a.permission_suggestions:null}:null}let k={Bash:["command","description"],BashOutput:["bash_id"],KillShell:["shell_id"],Read:["file_path"],Write:["file_path"],Edit:["file_path"],NotebookEdit:["notebook_path"],Glob:["pattern","path"],Grep:["pattern","path"],WebFetch:["url","prompt"],WebSearch:["query"],SlashCommand:["command"],Task:["description","subagent_type","prompt"]};function l(a,b,c){if(c){let a=b[c.key];if("string"==typeof a&&""!==a)return"string-tool-input-as-patch"===c.reason?(0,d.QQ)(a):[a]}let e=k[a];if(e){let a=e.map(a=>b[a]).filter(a=>"string"==typeof a&&""!==a);if(a.length>0)return a}try{return[JSON.stringify(b)??""]}catch{return[Object.keys(b).join(" ")]}}},21758:(a,b,c)=>{c.d(b,{Rv:()=>J,TV:()=>r,cN:()=>w,nL:()=>p});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(15194),i=c(87447),j=c(43252),k=c(66007),l=c(72626),m=c(45567),n=c(54633);let o=(0,l.h)("lib/hooks/sources/copilot/hook-settings"),p="gh copilot",q="cmate-copilot-agent-hooks",r=10,s="CM_AGENT_WORKTREE_ID",t="CM_AGENT_INSTANCE_ID",u="CM_AUTH_TOKEN",v=m.wS,w="PreToolUse",x=[["SessionStart","session_start"],["UserPromptSubmit","user_prompt_submit"],["PostToolUse","post_tool_use"],["Stop","stop"],["SessionEnd","session_end"]];function y(a=""){return`: ${q}; if [ -z "\${${s}:-}" ]; then cat >/dev/null; ${a}exit 0; fi; case "$${v}" in ''|*[!0-9]*) cat >/dev/null; ${a}exit 0;; esac; `}let z=`"\${${t}:-${n.V}}"`,A=`"$${s}"`;function B(){return`set -- -fsS -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${u}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${u}"; fi; `}function C(a){return`${(0,j.ZL)("http://127.0.0.1:")}"$${v}"${(0,j.ZL)(a)}`}function D(a){return`${C(`${a}?tool=${n.V}&worktreeId=`)}${A}'&instanceId='${z}`}function E(a){return`rc=$?; printf '%s\\n' "${q}: ${a} rc=$rc" >&2`}function F(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function G(a){return F(a)&&"string"==typeof a.command&&a.command.includes(q)}function H(a){try{return(0,d.readFileSync)(a,"utf8")}catch(a){if("ENOENT"===a.code)return"";throw a}}class I extends Error{constructor(a){super(`copilot config.json still has a "hooks" key (${a}); copilot migrates it over settings.json at startup, so CommandMate is not writing hooks this launch`),this.configPath=a,this.name="CopilotConfigHooksShadowError"}}function J(a,b,c={}){let l={command:a,settingsPath:null,env:{}};if("0"===process.env.CM_AGENT_HOOKS_INJECT)return l;let m=b.instanceId??n.V;if(!(0,h.n6)(m)||!(0,k.h6)(b.worktreeId))return o.warn("copilot-hook-invalid-correlation-key",{worktreeId:b.worktreeId}),l;try{let h=function(a={}){let b=a.settingsPath??(0,f.join)(function(){let a=(0,f.join)((0,e.homedir)(),".copilot");return(0,g.T)(process.env.COPILOT_HOME,a,"COPILOT_HOME")}(),"settings.json"),c=a.configPath??(0,f.join)((0,f.dirname)(b),"config.json"),h=function(a){let b,c=H(a);if(""===c.trim())return"absent";try{b=JSON.parse(function(a){let b="",c=!1,d=!1;for(let e=0;e<a.length;e+=1){let f=a[e];if(c){b+=f,d?d=!1:"\\"===f?d=!0:'"'===f&&(c=!1);continue}if('"'===f){c=!0,b+=f;continue}if("/"===f&&"/"===a[e+1]){for(;e<a.length&&"\n"!==a[e];)e+=1;b+="\n";continue}if("/"===f&&"*"===a[e+1]){for(e+=2;e<a.length&&("*"!==a[e]||"/"!==a[e+1]);)e+=1;e+=1;continue}b+=f}return b}(c))}catch{return"unreadable"}if(!F(b))return"unreadable";let d=b.hooks;return null==d||F(d)&&0===Object.keys(d).length||Array.isArray(d)&&0===d.length?"absent":"present"}(c);if("present"===h)throw new I(c);return"unreadable"===h&&o.warn("copilot-config-json-unreadable",{configPath:c}),(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0,mode:448}),function(a,b){let c,e=(0,f.join)(a,".cmate.lock");try{c=(0,d.openSync)(e,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;let a=Date.now()-(0,d.statSync)(e).mtimeMs;if(a<1e4)throw Error(`copilot settings.json is locked by another CommandMate server (${e})`);o.warn("copilot-hook-settings-lock-stale",{lockPath:e,heldForMs:a}),(0,d.unlinkSync)(e),c=(0,d.openSync)(e,"wx",384)}try{(0,d.writeSync)(c,`${process.pid}
|
|
2
|
+
`)}finally{(0,d.closeSync)(c)}try{return b()}finally{try{(0,d.unlinkSync)(e)}catch{}}}((0,f.dirname)(b),()=>{let c=H(b),e=function(a,b){let c=a.hooks;if(void 0!==c&&!F(c))throw Error('copilot settings.json has a non-object "hooks" key');let d={...c??{}};for(let[a,c]of Object.entries(b.hooks)){let b=d[a];if(void 0!==b&&!Array.isArray(b)){o.warn("copilot-hook-event-not-an-array",{event:a});continue}d[a]=[...function(a){let b=[];for(let c of a)if(!G(c)){if(F(c)&&Array.isArray(c.hooks)){let a=c.hooks.filter(a=>!G(a));if(0===a.length&&c.hooks.length>0)continue;b.push({...c,hooks:a});continue}b.push(c)}return b}(b??[]),...c]}return{...a,hooks:d}}(function(a){if(""===a.trim())return{};let b=JSON.parse(a);if(!F(b))throw Error("copilot settings.json is not a JSON object");return b}(c),function(a={}){let b={};for(let[c,d]of x)b[c]=[{hooks:[{type:"command",command:function(a,b={}){let c=void 0===b.relayScriptPath?(0,j.Os)():b.relayScriptPath,d=B()+`curl "$@" --data-binary @- ${D(j.jx)} >/dev/null 2>&1 || `+`{ ${E("agent_event_post_failed")}; }`;return c?y()+`if [ -x ${(0,j.ZL)(c)} ]; then `+[(0,j.ZL)(c),"--tool",(0,j.ZL)(n.V),"--event",(0,j.ZL)(a),"--worktree-id",A,"--instance-id",z,"--url",C(j.jx),"--stdin-json"].join(" ")+"; exit 0; fi; "+d:y()+d}(d,a)}]}];return b[w]=[{hooks:[{type:"command",command:function(a={}){return y("printf '{}'; ")+B()+`out=$(curl "$@" --data-binary @- ${D(j.WZ)} `+`2>/dev/null) || { ${E("permission_request_failed")}; out=''; }; `+"[ -n \"$out\" ] || out='{}'; printf '%s' \"$out\""}(a)}]}],{hooks:b}}(a)),f=`${JSON.stringify(e,null,2)}
|
|
3
|
+
`;if(c===f)return b;""!==c&&(0,d.copyFileSync)(b,`${b}.cmate-backup`);let g=`${b}.${process.pid}.tmp`;try{(0,d.writeFileSync)(g,f,{mode:384}),(0,d.renameSync)(g,b)}catch(a){try{(0,d.unlinkSync)(g)}catch{}throw a}return b})}(c);return{command:a,settingsPath:h,env:function(a,b,c={}){return{[s]:a,[t]:b,[v]:String(c.port??(0,i.D0)())}}(b.worktreeId,m,c)}}catch(a){if(a instanceof I)return o.warn("copilot-hook-config-json-shadows-settings",{worktreeId:b.worktreeId,configPath:a.configPath}),l;return o.warn("copilot-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),l}}},22354:(a,b,c)=>{c.d(b,{F0:()=>j.F,K9:()=>e.K9,VM:()=>d.VM,_0:()=>f._0,c1:()=>k.c,o:()=>i.o,vm:()=>h.v,y_:()=>g.y_});var d=c(97709);c(66101);var e=c(45567);c(57510),c(38367);var f=c(25071),g=c(50474),h=c(70997),i=c(77904),j=c(76835),k=c(2734)},24581:(a,b,c)=>{c.d(b,{Mu:()=>f,RY:()=>i,Tt:()=>h,Xq:()=>l,ZV:()=>r,h_:()=>g,jF:()=>p,kT:()=>o,nY:()=>k,qX:()=>q,wt:()=>n});var d=c(62887),e=c(36051);let f=18e5,g={predicted:2e4,confirmed:18e5},h=3,i=16,j={turnId:null,openedAt:null,closedAt:null,closedBy:null};function k(a){return null===a?j:{turnId:a.turnId,openedAt:a.openedAt,closedAt:a.closedAt,closedBy:a.closedBy}}function l(a){if("string"!=typeof a||0===a.length||a.length>128)return null;for(let b=0;b<a.length;b++){let c=a.charCodeAt(b);if(c<32||127===c)return null}return a}function m(a,b){return"string"!=typeof a||""===a?null:a.slice(0,b)}function n(a){return m(a,e.lY)}function o(a){return m(a,d.h9)}function p(a,b){let c=null===a.confirmedAt?g.predicted:g.confirmed;return b-a.at<c}function q(a,b,c){return null!==b&&c-a.at>=1e3*b}function r(a,b){return null===a.sessionId||null===b||a.sessionId===b}},25071:(a,b,c)=>{c.d(b,{GW:()=>l,_0:()=>k,o4:()=>j,oy:()=>i,qK:()=>h});var d=c(24455);let e=(0,c(72626).h)("lib/hooks/sources/pending-decisions"),f=globalThis.__agentSourcePendingDecisions??=new Map;function g(a){return(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function h(a){return(f.get(g(a))??[]).map(a=>a.decision)}function i(a,b,c){let d=f.get(g(a));if(!d)return!1;let e=d.find(a=>a.decision.id===b);return!!e&&(e.delivery=c,!0)}function j(a,b,c){let d=f.get(g(a));if(!d)return!1;let e=d.find(a=>a.decision.id===b);return!!e&&(e.body=c,!0)}async function k(a,b,c,d){return(await l(a,b,c,d)).body}async function l(a,b,c,d){let h=function(a,b){let c=g(a),d={key:c,ref:a,decision:b,body:null,delivery:null},e=f.get(c)??[];for(e.push(d);e.length>16;)e.shift();return f.set(c,e),d}(b,c);try{await a.decide(b,c,d)}catch(a){e.warn("agent-source-decide-failed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId??b.cliToolId,decisionId:c.id,error:a instanceof Error?a.message:String(a)}),h.delivery={delivered:!1,reason:a instanceof Error?`decide-threw:${a.message}`:"decide-threw"}}let i=h.delivery;return{body:function(a){let b=f.get(a.key);if(b){let c=b.indexOf(a);c>=0&&b.splice(c,1),0===b.length&&f.delete(a.key)}return a.body??{}}(h),delivery:i}}},26547:(a,b,c)=>{c.d(b,{Yz:()=>B,jw:()=>z});var d=c(51297),e=c(85164);let f=["minimal","low","medium","high","xhigh"];function g(){return{model:null,effort:null}}let h=/^[A-Za-z0-9][A-Za-z0-9._:@/-]*$/,i=/^[A-Za-z0-9][A-Za-z0-9 .()[\]_:@/-]*$/;function j(a){return a.length>0&&a.length<=64&&h.test(a)}function k(a){return a.length>0&&a.length<=64&&i.test(a)}function l(a,b={}){let c=a.trim().toLowerCase();if(""===c)return null;if(f.includes(c))return c;if(!b.allowTruncated||c.length<2)return null;let d=f.filter(a=>a.length===c.length+1&&a.startsWith(c));return 1===d.length?d[0]:null}let m=/^\s*([^\s·]+)(?:\s+(minimal|low|medium|high|xhigh)\b)?/i;function n(a){if(!e.aW.test(a))return null;let b=a.indexOf("\xb7");if(b<0)return null;let c=m.exec(a.slice(0,b));if(!c)return null;let d=c[1];if(!j(d))return null;let f=c[2]?l(c[2]):null;return null!==f||/\d/.test(d)?{model:d,effort:f}:null}let o=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+with\s+(minimal|low|medium|high|xhigh)\s+effort\b/i;function p(a){let b=o.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let q=/^\s*(?:\?\s+for\s+shortcuts|esc\s+to\s+cancel)\b/i,r=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+\((minimal|low|medium|high|xhigh)\)\s*$/i;function s(a){if(!q.test(a))return null;let b=a.lastIndexOf("\xb7");if(b<0)return null;let c=l(a.slice(b+1),{allowTruncated:!0});if(!c)return null;let d=a.slice(0,b).trimEnd().split(/\s{2,}/),e=(d[d.length-1]??"").trim();return{model:k(e)?e:null,effort:c}}function t(a){let b=r.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let u=/^\s*[●◉◎○]\s+Model\s+changed\s+from\s+\S+(?:\s+\([^)]*\))?\s+to\s+(\S+)(?:\s+\((minimal|low|medium|high|xhigh)\))?\s+for\s+this\s+session\b/i;function v(a){let b=u.exec(a);if(!b)return null;let c=b[1];return j(c)?{model:c,effort:b[2]?l(b[2]):null}:null}let w=/^\s*▣\s+[A-Za-z][A-Za-z0-9-]*\s+·\s+([^·]+?)(?:\s+·\s+[\d.]+\s?m?s)?\s*$/;function x(a){let b=w.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:null}:null}function y(a,b){let c=a.split("\n");for(let a=c.length-1;a>=0;a--){let e=b((0,d.aJ)(c[a]));if(e)return e}return null}function z(a,b){if(!b)return g();switch(a){case"codex":return y(b,n)??g();case"claude":return y(b,p)??g();case"antigravity":return y(b,s)??y(b,t)??g();case"copilot":{let a=function(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a--){let c=(0,d.aJ)(b[a]);if(""!==c.trim()){if(!e.Ub.test(c)&&!e.tJ.test(c))return null;let a=c.trim().split(/\s{2,}/);if(a.length<2)return null;let b=a[a.length-1].split("\xb7").map(a=>a.trim());if(b.length>2)return null;let d=b[0];if(!k(d))return null;if(1===b.length)return{model:d,effort:null};let f=l(b[1]);return null===f?null:{model:d,effort:f}}}return null}(b),c=y(b,v);if(!a)return c??g();if(null!==a.effort||null===c||null===c.effort)return a;return!function(a,b){let c=a=>a.toLowerCase().replace(/[^a-z0-9]/g,"");return c(a)===c(b)}(a.model,c.model)?a:{model:a.model,effort:c.effort}}case"opencode":return y(b,x)??g();default:return g()}}let A=/-(low|medium|high)$/i;function B(a,b,c){let d=(b||null)??c?.model??null,e=c?.effort??null,f="antigravity"===a?function(a){if(!a)return null;let b=A.exec(a);return b?b[1].toLowerCase():null}(d)??e:e;return{model:d,effort:f}}},36051:(a,b,c)=>{c.d(b,{QB:()=>e,Yo:()=>i,fO:()=>j,lY:()=>f});var d=c(81254);let e=[{number:1,label:"Allow once",reply:"once"},{number:2,label:"Allow always",reply:"always"},{number:3,label:"Reject",reply:"reject"}],f=500,g={notification:"Notification(permission_prompt)","permission-request":"PermissionRequest (no decision)"};function h(a,b){let c=[`A dialog is open in ${a}: the agent reported it via ${g[b.source]}${b.toolName?` for ${b.toolName}`:""}, but the detection layer published no options for it.`];if(b.decisionOptions&&b.decisionOptions.length>0?c.push(`Answer it with \`commandmate respond ${a} <number>\`: `+b.decisionOptions.map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+". The reply goes to the agent's own API, so no keys are sent to the terminal "+`and the label works too (\`respond ${a} "Allow once"\`).`):c.push(`Answer it in the terminal, or send the option NUMBER with \`commandmate respond ${a} <number>\` — yes/no is not resolved on a numbered dialog (Issue #1681).`),b.message&&c.push(`Agent message: "${b.message}"`),b.askUserQuestion){let{question:a,labels:d,questionCount:e}=b.askUserQuestion;c.push(`The agent asked${e>1?` ${e} questions, the first being`:""}: "${a}" — offering: ${d.join(" / ")}. The picker renumbers and adds its own entries, so read the option NUMBER off the terminal rather than counting this list.`)}return c.join(" ")}function i(a,b){return{type:d.LT,status:"pending",question:h(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{},...b.decisionOptions&&b.decisionOptions.length>0?{decisionOptions:b.decisionOptions}:{}}}function j(a,b){return{type:d.LT,status:"unclassified",question:h(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{}}}},38367:(a,b,c)=>{c.d(b,{Jp:()=>h,WK:()=>e,lb:()=>f,ue:()=>g});var d=c(57510);let e={Stop:"stop",SubagentStop:"stop",Notification:"notification",SessionStart:"session_start",SessionEnd:"session_end",UserPromptSubmit:"user_prompt_submit",PreToolUse:"pre_tool_use",PostToolUse:"post_tool_use"},f=["session_id","conversationId"],g=["tool_use_id"];function h(a,b){let c="notification"===a?"notification_type":"session_end"===a?"reason":"session_start"===a?"source":"pre_tool_use"===a||"post_tool_use"===a?"tool_name":null;return null===c?null:(0,d.Wv)((0,d.O2)(b,c))}},42545:(a,b,c)=>{c.d(b,{FN:()=>u,lf:()=>r,wb:()=>q,bP:()=>s});var d=c(72626),e=c(24455),f=c(57510),g=c(49791),h=c(75356),i=c(98211),j=c(84574);function k(a){let b=(0,f.Qd)(a.properties)?a.properties:{};return(0,f.NZ)(b,["sessionID"])}function l(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}let m=(0,d.h)("lib/hooks/sources/opencode/subscription"),n=[1e3,2e3,4e3,8e3,15e3,3e4],o=globalThis.__opencodeSubscriptions??=new Map;function p(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function q(a){return o.has(p(a))}function r(a){return o.get(p(a))?.liveness??{state:"unknown"}}async function s(a,b,c,d={}){let e=p(a),g=o.get(e);if(g)return t(g);let h=d.port??(0,j.hC)(a);if(null===h)return m.info("opencode-subscription-skipped-no-port",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId}),{close:async()=>{},liveness:{state:"unknown"}};let i={key:e,target:a,port:h,onEvent:b,normalize:c,gate:function(a=64,b=512,c=64){let d=new Map,e=new Set,g=new Set,h=null,i=(b,c)=>{d.delete(b),d.set(b,c),l(d,a)},j=()=>null!==h&&"busy"===d.get(h),m=a=>{var b;i(a,"busy"),b=a,!g.has(b)&&h!==b&&(j()||(h=b))};return{observe(a,n){let o=function(a){let b=(0,f.Qd)(a.properties)?a.properties:{},c=(0,f.Qd)(b.info)?b.info:null;return null!==c&&(0,f.NZ)(c,["parentID"])?(0,f.NZ)(c,["id"])??(0,f.NZ)(b,["sessionID"]):null}(n);if(null!==o&&(g.add(o),l(g,c),h===o&&(h=null)),"message.updated"===a){let{role:a,id:c}=function(a){let b=(0,f.Qd)(a.properties)?a.properties:{};return{role:(0,f.NZ)(b,["info","role"]),id:(0,f.NZ)(b,["info","id"])}}(n);if("user"!==a||null===c)return{kind:"ignored"};let d=k(n)??"";return e.has(c)?{kind:"suppressed",sessionId:d,reason:"already-announced"}:(e.add(c),l(e,b),{kind:"announced",sessionId:d,messageId:c})}if("session.status"===a){if("busy"!==function(a){let b=(0,f.Qd)(a.properties)?a.properties:{};return(0,f.NZ)(b,["status","type"])}(n))return{kind:"ignored"};let a=k(n);return null===a?{kind:"ignored"}:(m(a),{kind:"armed",sessionId:a})}if("session.error"===a){let a=k(n);return null===a?{kind:"ignored"}:{kind:"failed",sessionId:a,errorName:function(a){let b=(0,f.Qd)(a.properties)?a.properties:{};return(0,f.NZ)(b,["error","name"])}(n)}}if("session.idle"!==a)return{kind:"ignored"};let p=k(n);if(null===p)return{kind:"ignored"};if(g.has(p)||null!==h&&p!==h&&j())return i(p,"idle"),{kind:"suppressed",sessionId:p,reason:"foreign-session"};let q=d.get(p);return void 0===q?{kind:"suppressed",sessionId:p,reason:"never-armed"}:"idle"===q?{kind:"suppressed",sessionId:p,reason:"already-completed"}:(i(p,"idle"),{kind:"completed",sessionId:p})},isArmed:a=>"busy"===d.get(a),arm(a){m(a)},armedSessions:()=>[...d.entries()].filter(([,a])=>"busy"===a).map(([a])=>a),primarySession:()=>h,reset(){d.clear(),h=null}}}(),resync:d.resync??"none",seenDecisions:new Set,streamController:new AbortController,lifetimeController:new AbortController,serverVersion:null,liveness:{state:"unknown"},closed:!1,watchdog:null};return o.set(e,i),m.info("opencode-subscription-opened",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:h}),x(i),t(i)}function t(a){return{close:async()=>{await u(a.target)},get liveness(){return a.liveness}}}async function u(a){let b=p(a),c=o.get(b);c&&(c.closed=!0,v(c),c.streamController.abort(),c.lifetimeController.abort(),o.delete(b),m.info("opencode-subscription-closed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:c.port}))}function v(a){null!==a.watchdog&&(clearTimeout(a.watchdog),a.watchdog=null)}function w(a){v(a);let b=setTimeout(()=>{a.closed||(m.warn("opencode-subscription-heartbeat-lost",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,afterMs:3e4}),a.streamController.abort())},3e4);b.unref?.(),a.watchdog=b}async function x(a){let b=0;for(;!a.closed;){a.streamController=new AbortController;let c=a.gate.armedSessions();a.gate.reset();let d="stream-ended";try{let e=await y(a);if(a.closed)break;if("changed"===e)return;if("unreachable"===e)d="health-unreachable";else{let d=await (0,g.mi)(a.port,a.streamController.signal);for await(let e of(a.liveness={state:"live",lastHeartbeatAt:Date.now()},w(a),await z(a),await A(a,c),b=0,d))b=0,w(a),function(a,b){let c=(0,f.O2)(b,"type");("server.heartbeat"===c||"server.connected"===c)&&(a.liveness={state:"live",lastHeartbeatAt:Date.now()}),B(a,b,Date.now())}(a,e)}}catch(a){d=a instanceof Error?a.message:String(a)}finally{v(a)}if(a.closed)break;a.liveness={state:"lost",since:Date.now(),reason:d},m.warn("opencode-subscription-disconnected",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,reason:d,attempt:b}),await function(a,b){return new Promise(c=>{if(b.aborted)return void c();let d=()=>{clearTimeout(e),c()};b.addEventListener("abort",d,{once:!0});let e=setTimeout(()=>{b.removeEventListener("abort",d),c()},a);e.unref?.()})}(function(a){let b=Math.min(a,n.length-1);return n[b]}(b),a.lifetimeController.signal),b+=1}}async function y(a){var b,c;let d=await (0,g.sc)(a.port);if("healthy"!==d.kind)return m.info("opencode-subscription-health-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,outcome:d.kind,status:"rejected"===d.kind?d.status:void 0}),"unreachable";let e=d.health.version;return null===a.serverVersion||null===e?(a.serverVersion??=e,"same"):e===a.serverVersion?"same":(b=a,c=e,m.warn("opencode-subscription-port-identity-changed",{worktreeId:b.target.worktreeId,instanceId:b.target.instanceId??b.target.cliToolId,port:b.port,reason:"port_identity_changed",expectedVersion:b.serverVersion,observedVersion:c}),b.closed=!0,v(b),b.streamController.abort(),b.lifetimeController.abort(),b.liveness={state:"lost",since:Date.now(),reason:"port_identity_changed"},o.delete(b.key),"changed")}async function z(a){let b=Date.now(),[c,d]=await Promise.all([(0,g.Li)(a.port),(0,g.er)(a.port)]),e=(c,d)=>{let e=c.slice(0,50);for(let g of(c.length>e.length&&m.warn("opencode-resync-truncated",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,type:d,examined:e.length,skipped:c.length-e.length,limit:50}),e)){let c=(0,f.O2)(g,"id");!c||a.seenDecisions.has(c)||B(a,{id:`resync_${c}`,type:d,properties:g},b)}};e(c,"permission.asked"),e(d,"question.asked")}async function A(a,b){if("session-status-poll"!==a.resync)return;let c=await (0,g.mY)(a.port);if(null===c)return void m.info("opencode-resync-status-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port});let d=[];for(let[b,e]of Object.entries(c))"busy"===e&&(a.gate.arm(b),d.push(b));let e=[];for(let d of b)"idle"===c[d]&&(a.gate.arm(d),e.push(d),B(a,{id:`resync_idle_${d}`,type:"session.idle",properties:{sessionID:d}},Date.now()));(d.length>0||e.length>0)&&m.info("opencode-turn-state-recovered",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,rearmed:d,synthesized:e,primarySession:a.gate.primarySession()})}function B(a,b,c){var d,e;let g=(0,f.O2)(b,"type");if("message.part.updated"===g){let a=(0,h.Zu)(b),c=(0,h.Dp)(b);a&&c&&(0,i.XL)(a,c)}let j=a.gate.observe(g,b);"failed"===j.kind&&m.warn("opencode-session-error",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:j.sessionId,errorName:j.errorName});let k=null;try{k=a.normalize({payload:b,receivedAt:c})}catch(a){m.error("opencode-normalize-threw",{type:g,error:a instanceof Error?a.message:String(a)});return}if(!k)return;let l=(d=k.event,e=j,"stop"===d&&"completed"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-turn-end":"user_prompt_submit"===d&&"announced"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-new-prompt":null);if(null!==l)return void m.info("opencode-repeat-suppressed",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:k.conversationId,event:k.event,reason:l});!function(a,b){let c=(0,f.O2)(b,"type");if("permission.asked"!==c&&"question.asked"!==c)return;let d=(0,f.Qd)(b.properties)?b.properties:{},e=(0,f.O2)(d,"id");if(e)for(a.seenDecisions.add(e);a.seenDecisions.size>256;){let b=a.seenDecisions.values().next();if(b.done)break;a.seenDecisions.delete(b.value)}}(a,b);try{a.onEvent(k)}catch(a){m.error("opencode-event-handler-failed",{type:g,error:a instanceof Error?a.message:String(a)})}}},43252:(a,b,c)=>{c.d(b,{D2:()=>G,O$:()=>B,Os:()=>D,W6:()=>p,WZ:()=>o,XE:()=>r,ZL:()=>E,g5:()=>y,iR:()=>z,jx:()=>n,q:()=>v,sI:()=>q,xM:()=>A,yc:()=>w});var d=c(55511),e=c(29021),f=c(21820),g=c(33873),h=c(8004),i=c(87447),j=c(15194),k=c(70997),l=c(13287);let m=(0,c(72626).h)("lib/hooks/hook-settings-generator"),n="/api/hooks/agent-event",o="/api/hooks/permission-request",p=5,q=5,r="CM_AUTH_TOKEN",s=l.k$,t=["Bash(pkill:*)","Bash(killall:*)","Bash(kill -9:*)"],u=(0,g.join)("scripts","hooks","cmate-agent-event.sh");function v(){return"0"!==process.env.CM_AGENT_HOOKS_INJECT}function w(){return!!(process.env[r]||process.env.CM_AUTH_TOKEN_HASH)}function x(a={}){let b=(0,g.join)((0,f.homedir)(),".commandmate","hooks");return a.directory?(0,h.T)(a.directory,b,"HookSettingsOptions.directory"):(0,h.T)(process.env.CM_AGENT_HOOKS_DIR,b,"CM_AGENT_HOOKS_DIR")}function y(a){let b=a.cliToolId??k.v;return a.instanceId??b}function z(a,b={}){let c=a.cliToolId??k.v,e=y(a),f=`${c}-${a.worktreeId}-${e}`.replace(/[^a-zA-Z0-9_-]/g,"_"),h=(0,d.createHash)("sha256").update(JSON.stringify([c,a.worktreeId,e])).digest("hex").slice(0,12);return(0,g.join)(x(b),`${f.slice(0,80)}-${h}.json`)}function A(a,b={}){return C(n,a,b)}function B(a,b={}){return C(o,a,b)}function C(a,b,c){let d=b.cliToolId??k.v,e=c.port??(0,i.D0)(),f=new URLSearchParams({tool:d,worktreeId:b.worktreeId,instanceId:y(b)});return`http://127.0.0.1:${e}${a}?${f.toString()}`}function D(){let a=(0,g.resolve)(process.cwd(),u);return(0,e.existsSync)(a)?a:null}function E(a){return`'${a.replace(/'/g,"'\\''")}'`}function F(a,b,c=p){let d={"Content-Type":"application/json"},e={type:"http",url:a,headers:d,timeout:c};return b&&(d.Authorization=`Bearer $${r}`,e.allowedEnvVars=[r]),e}function G(a,b,c={}){if(!v())return a;if(!(0,j.n6)(y(b)))return m.warn("hook-settings-invalid-instance-id",{worktreeId:b.worktreeId}),a;try{let d=function(a,b={}){let c=z(a,b);return(0,e.mkdirSync)(x(b),{recursive:!0,mode:448}),(0,e.writeFileSync)(c,`${JSON.stringify(function(a,b={}){let c=A(a,b),d=b.withAuthHeader??w(),e=()=>F(c,d);return{hooks:{SessionStart:[{hooks:[{type:"command",command:function(a,b={}){let c=A(a,b),d=b.withAuthHeader??w(),e=void 0===b.relayScriptPath?D():b.relayScriptPath;if(e)return[E(e),"--tool",E(a.cliToolId??k.v),"--event session_start --worktree-id",E(a.worktreeId),"--instance-id",E(y(a)),"--url",E(c),"--stdin-json"].join(" ");let f=d?` -H "Authorization: Bearer $${r}"`:"";return`curl -sS -m ${p} -X POST -H 'Content-Type: application/json'${f} --data-binary @- ${E(c)} >/dev/null 2>&1 || true`}(a,b),timeout:p}]}],UserPromptSubmit:[{hooks:[e()]}],Stop:[{hooks:[e()]}],Notification:[{matcher:"permission_prompt|idle_prompt",hooks:[e()]}],SessionEnd:[{hooks:[e()]}],PreToolUse:[{matcher:s,hooks:[e()]}],PostToolUse:[{matcher:s,hooks:[e()]}],PermissionRequest:[{hooks:[F(B(a,b),d,q)]}]},permissions:{deny:[...t]}}}(a,b),null,2)}
|
|
4
|
+
`,{mode:384}),c}(b,c);return`${E(a)} --settings ${E(d)}`}catch(c){return m.warn("hook-settings-write-failed",{worktreeId:b.worktreeId,error:c instanceof Error?c.message:String(c)}),a}}},45567:(a,b,c)=>{c.d(b,{K9:()=>g,ZM:()=>e,wS:()=>f});var d=c(43252);let e="CM_HOOK_URL",f="CM_HOOK_PORT";function g(a){let b=Object.entries(a.env).map(([a,b])=>`${a}=${(0,d.ZL)(b)}`);return 0===b.length?a.command:`${b.join(" ")} ${a.command}`}},48083:(a,b,c)=>{c.d(b,{BJ:()=>ae,CE:()=>H,Fw:()=>af,HR:()=>ab,NW:()=>D,P5:()=>_,R4:()=>Z,S9:()=>G,_N:()=>ad,_i:()=>F,ak:()=>T,dj:()=>X,fY:()=>E,ik:()=>$,je:()=>Y,jl:()=>V,m5:()=>ac,n5:()=>x,pI:()=>M,qo:()=>ah,recordAgentEvent:()=>J,sA:()=>W,vm:()=>U,zA:()=>aa});var d=c(24455),e=c(62887),f=c(13287),g=c(26547),h=c(67882),i=c(24581);let j=globalThis.__agentEventLastStopAt??(globalThis.__agentEventLastStopAt=new Map),k=globalThis.__agentEventLast??(globalThis.__agentEventLast=new Map),l=globalThis.__agentEventGenerationStartedAt??(globalThis.__agentEventGenerationStartedAt=new Map),m=globalThis.__agentEventTurns??(globalThis.__agentEventTurns=new Map),n=globalThis.__agentEventDrops??(globalThis.__agentEventDrops=new Map),o=globalThis.__agentEventTurnSeq??(globalThis.__agentEventTurnSeq={value:0}),p=globalThis.__agentEventAskUserQuestion??(globalThis.__agentEventAskUserQuestion=new Map),q=globalThis.__agentEventRecentKeys??(globalThis.__agentEventRecentKeys=new Map),r=globalThis.__agentEventRecentIdentities??(globalThis.__agentEventRecentIdentities=new Map),s=globalThis.__agentEventAwaitingInstruction??(globalThis.__agentEventAwaitingInstruction=new Map),t=globalThis.__agentEventLastModel??(globalThis.__agentEventLastModel=new Map),u=globalThis.__agentCapturedModelInfo??(globalThis.__agentCapturedModelInfo=new Map);function v(){return{dedupDropped:{identity:0,timeWindow:0},decisionEvicted:0,idsDiscarded:0,dialogTimedOut:0,decisionOverflow:0}}function w(a){let b=n.get(a);return b||(b=v(),n.set(a,b),ai(n,512)),b}function x(a,b,c){let e=n.get((0,d.v7)(a,b,c));return e?{...e,dedupDropped:{...e.dedupDropped}}:v()}function y(a){return l.get(a)??null}function z(a){let b=m.get(a);return b&&b.generationAt===y(a)?b:null}function A(a,b){let c=z(a);return null===c?null:(null===c.closedAt&&b-c.displayEvent.at>=i.Mu&&(c.closedAt=c.displayEvent.at+i.Mu,c.closedBy="stale"),c)}function B(a){return o.value+=1,`turn-${a}-${o.value}`}function C(a,b,c){let d=b.pendingDecisions.filter(a=>(0,i.jF)(a,c)),e=b.pendingDecisions.length-d.length;return e>0&&(w(a).dialogTimedOut+=e,b.pendingDecisions=d),d}function D(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=A(f,e);return null===g?[]:C(f,g,e)}function E(a,b,c,e=Date.now()){return(0,i.nY)(function(a,b,c,e=Date.now()){return A((0,d.v7)(a,b,c),e)}(a,b,c,e))}function F(a,b,c,e,f=Date.now()){let g=z((0,d.v7)(a,b,c));return null!==g&&null===g.closedAt&&(e?(g.scraperCompletionPolls+=1,!(g.scraperCompletionPolls<i.Tt)&&(g.closedAt=f,g.closedBy="scraper_evidence",!0)):(g.scraperCompletionPolls=0,!1))}function G(a,b,c,e=Date.now()){j.set((0,d.v7)(a,b,c),e)}function H(a,b,c){return j.get((0,d.v7)(a,b,c))??null}let I=["running","waiting"];function J(a,b,c,g,h={}){let j=(0,d.v7)(a,b,c);return!function(a,b,c,e,f){if("session_start"!==e.event||!0!==f.sessionStartMayArriveLate)return!1;let g=Z(a,b,c,e.at);if(null===g||!I.includes(g.status))return!1;let h=k.get((0,d.v7)(a,b,c))?.sessionId??null;return null===h||null==e.sessionId||e.sessionId===h}(a,b,c,g,h)?(k.set(j,g),L(j,g),function(a,b){switch(b.event){case"pre_tool_use":b.detail!==f.k$&&p.delete(a);return;case"notification":"idle_prompt"===b.detail&&p.delete(a);return;case"post_tool_use":case"stop":case"user_prompt_submit":case"session_start":case"session_end":p.delete(a);return;default:b.event;return}}(j,g),"session_start"===g.event&&(l.set(j,g.at),K(j,g.at)),function(a,b){let c=y(a);if(null===c||!(b.at<c))switch(b.event){case"user_prompt_submit":O(a,b,c,{continueOpen:!1}),Q(a);return;case"post_tool_use":O(a,b,c,{continueOpen:!0}),Q(a);return;case"pre_tool_use":O(a,b,c,{continueOpen:!0});return;case"stop":!function(a,b,c){let d=z(a);if(null!==d&&null===d.closedAt&&null!==d.openedAt){if(!(0,i.ZV)(d,b.sessionId))return;d.closedAt=b.at,d.closedBy="stop",d.displayEvent=N(b),Q(a);return}m.set(a,{turnId:B(b.at),sessionId:b.sessionId,openedAt:null,closedAt:b.at,closedBy:"stop",generationAt:c,displayEvent:N(b),pendingDecisions:[],scraperCompletionPolls:0}),S()}(a,b,c);return;case"session_end":(function(a,b){let c=z(a);null!==c&&(0,i.ZV)(c,b.sessionId)&&(c.closedAt=b.at,c.closedBy="session_end")})(a,b),Q(a);return;case"session_start":return;case"notification":!function(a,b,c){if("permission_prompt"===b.detail)return!0===b.promptSettled?R(a,b):P(a,c,{source:"notification",at:b.at,message:b.message??null,toolName:null,decisionId:b.decisionId??null,bootstrapDisplay:N(b)});if(b.detail===e.KC){!0===b.promptSettled&&R(a,b);return}if("idle_prompt"===b.detail){Q(a);let d=z(a);if(null!==d&&null===d.closedAt){d.displayEvent=N(b);return}if(null!==d)return;m.set(a,{turnId:B(b.at),sessionId:b.sessionId,openedAt:null,closedAt:null,closedBy:null,generationAt:c,displayEvent:N(b),pendingDecisions:[],scraperCompletionPolls:0}),S()}}(a,b,c);return;default:b.event;return}}(j,g),function(a,b){switch(b.event){case"notification":"idle_prompt"===b.detail&&s.set(a,{at:b.at,message:b.message??null});return;case"user_prompt_submit":case"session_start":case"session_end":s.delete(a);return;case"stop":case"pre_tool_use":case"post_tool_use":return;default:b.event;return}}(j,g),{recorded:!0}):(L(j,g),{recorded:!1,skipped:"late-session-start"})}function K(a,b){let c=m.get(a);c&&(0!==c.pendingDecisions.length&&(w(a).decisionEvicted+=c.pendingDecisions.length,c.pendingDecisions=[]),null===c.closedAt&&(c.closedAt=b,c.closedBy="generation",c.generationAt=b))}function L(a,b){"string"==typeof b.model&&""!==b.model&&t.set(a,b.model.slice(0,e.h9))}function M(a,b,c){return null!==function(a,b,c){let e=(0,d.v7)(a,b,c),f=s.get(e);if(!f)return null;let g=l.get(e);return void 0!==g&&f.at<g?null:f}(a,b,c)}function N(a){return{event:a.event,at:a.at,detail:a.detail}}function O(a,b,c,{continueOpen:d}){let e=z(a),f=null!==e&&null===e.closedAt&&null!==e.openedAt&&(0,i.ZV)(e,b.sessionId);if(d&&f){e.displayEvent=N(b),e.sessionId??=b.sessionId,e.scraperCompletionPolls=0;return}let g=null!==e&&null===e.openedAt&&null===e.closedAt?e.pendingDecisions:[];m.set(a,{turnId:B(b.at),sessionId:b.sessionId,openedAt:b.at,closedAt:null,closedBy:null,generationAt:c,displayEvent:N(b),pendingDecisions:g,scraperCompletionPolls:0}),S()}function P(a,b,c){let d=z(a);null===d?(d={turnId:B(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),S()):null!==d.closedAt&&(d={turnId:B(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),S());let e=null===c.decisionId?null:(0,i.Xq)(c.decisionId);null!==c.decisionId&&null===e&&(w(a).idsDiscarded+=1);let f="notification"===c.source,g=null!==e?d.pendingDecisions.find(a=>a.decisionId===e)??d.pendingDecisions.find(a=>null===a.decisionId&&"permission-request"===a.source):d.pendingDecisions.find(a=>null===a.decisionId);if(g){g.message=(0,i.wt)(c.message)??g.message,g.toolName=(0,i.kT)(c.toolName)??g.toolName,g.decisionId??=e,f&&(g.source="notification",g.confirmedAt??=c.at);return}if(d.pendingDecisions.length>=i.RY){w(a).decisionOverflow+=1;return}d.pendingDecisions.push({decisionId:e,at:c.at,source:c.source,message:(0,i.wt)(c.message),toolName:(0,i.kT)(c.toolName),confirmedAt:f?c.at:null,scraperCorroborated:!1,recorded:!1})}function Q(a){let b=z(a);null!==b&&(b.pendingDecisions=[])}function R(a,b){let c=z(a);if(null===c||0===c.pendingDecisions.length)return;let d=null===b.decisionId||void 0===b.decisionId?null:(0,i.Xq)(b.decisionId);if(null===d){c.pendingDecisions=[];return}c.pendingDecisions=c.pendingDecisions.filter(a=>null!==a.decisionId&&a.decisionId!==d)}function S(){ai(m,512)}function T(a,b,c){return k.get((0,d.v7)(a,b,c))??null}function U(a,b,c,f){if(!f.model&&!f.effort)return;let g=(0,d.v7)(a,b,c),h=u.get(g);u.set(g,{model:f.model?f.model.slice(0,e.h9):h?.model??null,effort:f.effort??h?.effort??null})}function V(a,b,c){return(0,g.Yz)(b,t.get((0,d.v7)(a,b,c))??null,function(a,b,c){let e=u.get((0,d.v7)(a,b,c));return{model:e?.model??null,effort:e?.effort??null}}(a,b,c))}let W=i.Mu;function X(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c);l.set(f,e),K(f,e),p.delete(f),s.delete(f),t.delete(f),u.delete(f),r.delete(f)}function Y(a,b,c){let e=(0,d.v7)(a,b,c);k.delete(e),l.delete(e),m.delete(e),n.delete(e),p.delete(e),s.delete(e),t.delete(e),u.delete(e),r.delete(e)}function Z(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=A(f,e);if(null===g)return null;let i=g.displayEvent;if(e-i.at>=W)return null;let j={event:i.event,at:i.at,detail:i.detail},k=C(f,g,e);if(k.length>0)return{status:"waiting",reason:"notification"===k[0].source?h.Oh.PERMISSION_PROMPT:h.Oh.PERMISSION_REQUEST,...j};if(null!==g.closedAt)return"stop"===g.closedBy?{status:"ready",reason:h.Oh.STOP,...j}:null;let l=(0,h.DA)(i.event,i.detail);return null===l||"waiting"===l.status?null===g.openedAt?null:{status:"running",reason:h.Oh.PROMPT_SUBMIT,...j}:{...l,...j}}function $(a,b,c,e,f=Date.now()){let g=(0,d.v7)(a,b,c);P(g,y(g),{source:"permission-request",at:f,message:null,toolName:e,decisionId:null,bootstrapDisplay:{event:"notification",at:f,detail:"permission_prompt"}})}function _(a,b,c,d=Date.now()){return D(a,b,c,d)[0]??null}function aa(a,b,c,d=Date.now()){let e=_(a,b,c,d);e&&(e.scraperCorroborated=!0,e.confirmedAt??=d)}function ab(a,b,c){let d=_(a,b,c);d&&(d.recorded=!0)}function ac(a,b,c){Q((0,d.v7)(a,b,c))}function ad(a,b,c,e,f=Date.now()){p.set((0,d.v7)(a,b,c),{at:f,spec:e})}function ae(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=p.get(f);if(!g)return null;let h=l.get(f);return void 0!==h&&g.at<h||e-g.at>=W?null:g}function af(a,b,c,e,f,g=Date.now(),h=null){if(!f)return!1;let i=[(0,d.v7)(a,b,c),e,h??"",f].join(" "),j=q.get(i);return void 0!==j&&g-j<3e3||(q.set(i,g),function(a){for(let[b,c]of q)a-c>=3e3&&q.delete(b);for(;q.size>512;){let a=q.keys().next();if(a.done)break;q.delete(a.value)}}(g),!1)}i.h_.predicted;let ag=["stop","session_end"];function ah(a){let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(null!==a.identityKind){let c=null===a.identity?null:(0,i.Xq)(a.identity);if(null!==a.identity&&null===c&&(w(b).idsDiscarded+=1),null!==c)return!function(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e=r.get(c);e||(e=new Map,r.set(c,e),ai(r,512));let f=[a.event,a.detail??"",b].join(" ");return!!e.has(f)||(e.set(f,a.at),ai(e,512),!1)}(a,c)?{duplicate:!1}:(w(b).dedupDropped.identity+=1,{duplicate:!0,by:"identity"});if(ag.includes(a.event))return{duplicate:!1}}return af(a.worktreeId,a.cliToolId,a.instanceId,a.event,a.sessionId,a.at,a.detail)?(w(b).dedupDropped.timeWindow+=1,{duplicate:!0,by:"time-window"}):{duplicate:!1}}function ai(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}},49791:(a,b,c)=>{c.d(b,{Ei:()=>u,LV:()=>t,Li:()=>p,Ok:()=>n,Vc:()=>e,er:()=>q,mY:()=>r,mi:()=>v,sc:()=>m,xR:()=>s});let d=(0,c(72626).h)("lib/hooks/sources/opencode/client"),e="127.0.0.1",f="application/json",g="text/event-stream";async function h(a,b){return fetch(a,{...b,redirect:"manual"})}function i(a,b){let c=a.headers?.get?.("content-type");return"string"==typeof c&&c.split(";",1)[0]?.trim().toLowerCase()===b}function j(a){return`http://${e}:${a}`}function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function l(a,b){try{let c=await h(a,{...b,signal:AbortSignal.timeout(5e3)});if(!c.ok)return null;if(!i(c,f))return d.debug("opencode-request-content-type",{url:a,contentType:c.headers?.get?.("content-type")??null}),null;return await c.json()}catch(b){return d.debug("opencode-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),null}}async function m(a){let b,c,e=`${j(a)}/global/health`;try{b=await h(e,{signal:AbortSignal.timeout(5e3)})}catch(b){let a=b instanceof Error?b.message:String(b);return d.debug("opencode-request-failed",{url:e,error:a}),{kind:"refused",error:a}}if(!b.ok)return{kind:"rejected",status:b.status};if(!i(b,f))return{kind:"rejected",status:0};try{c=await b.json()}catch{return{kind:"rejected",status:b.status}}return k(c)&&!0===c.healthy?{kind:"healthy",health:{healthy:!0,version:"string"==typeof c.version?c.version:null}}:{kind:"rejected",status:0}}async function n(a){let b=await m(a);return"healthy"===b.kind?b.health:null}function o(a){return Array.isArray(a)?a.filter(k):[]}async function p(a){return o(await l(`${j(a)}/permission`))}async function q(a){return o(await l(`${j(a)}/question`))}async function r(a){let b=await l(`${j(a)}/session/status`);if(!k(b))return null;let c={},e=0;for(let[f,g]of Object.entries(b)){if(e>=128){d.warn("opencode-session-status-truncated",{port:a,kept:e,total:Object.keys(b).length,limit:128});break}k(g)&&("busy"===g.type||"idle"===g.type)&&(c[f]=g.type,e+=1)}return c}async function s(a){let b=await r(a);return null===b?null:Object.values(b).includes("busy")?"busy":"idle"}async function t(a,b,c,d){let e={reply:c};return d&&(e.message=d),null!==await l(`${j(a)}/permission/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function u(a,b,c){return null!==await l(`${j(a)}/question/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:c})})}async function v(a,b){let c=await h(`${j(a)}/event`,{signal:b,headers:{Accept:g}});if(!c.ok||!c.body)throw Error(`opencode /event responded ${c.status}`);if(!i(c,g))throw Error(`opencode /event answered ${c.headers?.get?.("content-type")??"no content-type"}`);return w(a,c.body.getReader())}async function*w(a,b){let c=new TextDecoder,e=function(){let a="",b=[],c=0,d=!1,e=0,f=[],g=()=>{b=[],c=0,d=!0,e+=1},h=()=>{0!==b.length&&(f.push(b.join("\n")),b=[],c=0)},i=a=>{let e=a.endsWith("\r")?a.slice(0,-1):a;if(""===e)return void(d?d=!1:h());if(!d&&!e.startsWith(":")&&e.startsWith("data:")){let a=e.slice(5).replace(/^ /,"");if(c+a.length>262144)return void g();b.push(a),c+=a.length}};return{push(b){let c=(a+=b).indexOf("\n");for(;c>=0;)i(a.slice(0,c)),c=(a=a.slice(c+1)).indexOf("\n");return a.length>262144&&(a="",g()),f.splice(0,f.length)},flush:()=>(""!==a&&(i(a),a=""),d?d=!1:h(),f.splice(0,f.length)),oversizedFrames:()=>e}}(),f=0,g=()=>{let b=e.oversizedFrames();b!==f&&(d.warn("opencode-sse-frame-oversized",{port:a,dropped:b,newlyDropped:b-f,limitChars:262144}),f=b)};try{for(;;){let{done:a,value:d}=await b.read();if(a)break;let f=c.decode(d,{stream:!0});for(let a of e.push(f)){let b=x(a);b&&(yield b)}g()}for(let a of e.flush()){let b=x(a);b&&(yield b)}g()}finally{await b.cancel().catch(()=>{})}}function x(a){try{let b=JSON.parse(a);return k(b)?b:null}catch{return null}}},50474:(a,b,c)=>{c.d(b,{y_:()=>d});function d(a){var b=a.noDecision;switch(b.kind){case"proceeds":return{safe:!0,blocksForMs:0,summary:"the agent continues with its own approval flow"};case"blocks":return{safe:!1,blocksForMs:null,summary:"the agent waits indefinitely; nothing else will unblock it"};case"blocksUntil":return{safe:!1,blocksForMs:b.timeoutMs,summary:`the agent waits up to ${b.timeoutMs}ms before continuing`}}}},54633:(a,b,c)=>{c.d(b,{V:()=>d});let d="copilot"},56791:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>d.ks,ACTIVE_TASK_STATUSES:()=>d.EL,AgentInstanceLimitError:()=>d.AC,CURRENT_SCHEMA_VERSION:()=>f.FT,DEFAULT_RUN_HISTORY_LIMIT:()=>d.Tu,InvalidAgentInstanceError:()=>d.ug,MAX_DISABLED_REPOSITORIES:()=>h.nc,MAX_RUN_HISTORY_DAYS:()=>d.eP,MAX_RUN_HISTORY_LIMIT:()=>d.mg,MemoDbError:()=>d.lm,NEW_SUBSCRIPTION_DEFAULTS:()=>d.s6,RepositoryDbError:()=>h.j8,TASK_STATUSES:()=>d.Hi,TERMINAL_TASK_STATUSES:()=>d.sA,VERIFICATION_GATE_SOURCES:()=>d.Dx,VERIFICATION_TRIGGERS:()=>d.af,WORKTREE_TODO_STATUSES:()=>d.KG,addAgentInstance:()=>d.Uq,archiveAllAssistantMessages:()=>d.cD,archiveAssistantMessagesFrom:()=>d.Jj,cancelTimer:()=>d.Ud,cancelTimersByWorktree:()=>d.$$,cleanupOldTimers:()=>d.ul,clearInProgressMessageId:()=>d.YX,clearLastUserMessage:()=>d.cf,clearTimerHistory:()=>d.jf,closeDbInstance:()=>e.closeDbInstance,countAgentInstances:()=>d.fs,countDisabledRepositories:()=>h.QJ,countPushSubscriptionsForKind:()=>d.rC,countWorktreesByRepositoryPath:()=>h.kp,createAssistantConversation:()=>d.G4,createAssistantExecution:()=>d.hL,createAssistantMessage:()=>d.qp,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createTodo:()=>d.py,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteAssistantSessionState:()=>d.z2,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteTodo:()=>d.Ys,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,finishGateResult:()=>d.C8,finishVerificationRun:()=>d.u$,getActiveCloneJobByUrl:()=>h.fD,getActiveTask:()=>d.__,getActiveTaskForInstance:()=>d.MH,getAgentInstance:()=>d.BN,getAgentInstances:()=>d.m0,getAliasedWorktreeIds:()=>d.r3,getAllPushSubscriptions:()=>d.Se,getAllRepositories:()=>h.Yg,getAllRepositoriesWithWorktreeCount:()=>h._D,getAllTodos:()=>d.Tk,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,getAssistantConversationById:()=>d.iT,getAssistantConversationByRepositoryAndCliTool:()=>d.gp,getAssistantExecutionById:()=>d.$r,getAssistantMessageById:()=>d.yE,getAssistantMessages:()=>d.BE,getAssistantSessionState:()=>d.qK,getCloneJob:()=>h.bM,getCloneJobsByStatus:()=>h.n_,getCurrentVersion:()=>f.Mj,getDailyReport:()=>d.ap,getDbInstance:()=>e.getDbInstance,getDefaultDbPath:()=>g.$b,getExcludedRepositories:()=>h.lS,getExcludedRepositoryPaths:()=>h.pr,getInitialBranch:()=>d.p4,getIssueDbPath:()=>g.zm,getLastAssistantMessageAt:()=>d.nP,getLastMessage:()=>d.sy,getLastUserMessage:()=>d.r8,getLatestAssistantExecutionByConversation:()=>d.of,getLegacyDbPaths:()=>q,getMemoById:()=>d.DN,getMemosByWorktreeId:()=>d.pZ,getMessageById:()=>d.kA,getMessages:()=>d.VL,getMessagesByDateRange:()=>d.lr,getMigrationHistory:()=>f.PS,getPendingTimerCountByWorktree:()=>d.GF,getPendingTimers:()=>d._O,getPushSubscriptionByEndpoint:()=>d.CF,getPushSubscriptionsForKind:()=>d.gn,getRepositories:()=>d.NV,getRepositoryById:()=>h.r,getRepositoryByNormalizedUrl:()=>h.Uj,getRepositoryByPath:()=>h.Dp,getRunningAssistantExecutionByConversation:()=>d.ce,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,getTodoById:()=>d.Nr,getTodosByRepositoryId:()=>d.ob,getTodosByWorktreeId:()=>d.fr,getVerificationRun:()=>d.J6,getWorktreeAliases:()=>d.Q2,getWorktreeById:()=>d.Ui,getWorktreeIdsByRepository:()=>d.P9,getWorktreeTodoById:()=>d.eN,getWorktrees:()=>d.vi,getWorktreesByRepository:()=>d.uJ,initDatabase:()=>d.s4,isTerminalTaskStatus:()=>d.uB,isWorktreeTodoStatus:()=>d.yT,listRunningAssistantExecutions:()=>d.b2,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,recomputeLastUserMessage:()=>d.jp,recordAnsweredPrompt:()=>d.pG,recordWorktreeAlias:()=>d.xJ,recoverStuckSendingTimers:()=>d.Xm,registerAndFilterRepositories:()=>h.$G,removeAgentInstance:()=>d.NU,reorderMemos:()=>d.nQ,reorderWorktreeTodos:()=>d.yb,resolveAndValidatePath:()=>p,resolveRepositoryPath:()=>h.mE,resolveWorktreeIdWithAlias:()=>d.l0,restoreRepository:()=>h.RS,rollbackMigrations:()=>f.Wy,runMigrations:()=>f.vI,saveDailyReport:()=>d.tt,saveInitialBranch:()=>d.GA,setAgentInstances:()=>d.Cs,setInProgressMessageId:()=>d.OF,setRepositoryEnabled:()=>h.iQ,updateAssistantConversation:()=>d.xR,updateAssistantExecution:()=>d.az,updateAssistantMessageStatus:()=>d.nZ,updateAssistantSessionState:()=>d.PP,updateCliToolId:()=>d.WU,updateCloneJob:()=>h.k5,updateDailyReportContent:()=>d.IF,updateFavorite:()=>d.O,updateLastUserMessage:()=>d.EU,updateLastViewedAt:()=>d.HZ,updateMemo:()=>d.UY,updateMessageContent:()=>d.e8,updatePromptData:()=>d.cw,updatePushSubscriptionPreferences:()=>d.jJ,updateRepository:()=>h.Ir,updateSelectedAgents:()=>d.DC,updateSessionState:()=>d.gb,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,updateTodo:()=>d.uy,updateVibeLocalContextWindow:()=>d.s,updateVibeLocalModel:()=>d.iu,updateWorktreeDescription:()=>d.hq,updateWorktreeLink:()=>d.z1,updateWorktreeTodo:()=>d.bl,upsertPushSubscription:()=>d.jA,upsertWorktree:()=>d.ZL,validateDbPath:()=>g.Sv,validateRepositoryPath:()=>h.Ux,validateSchema:()=>f.i6});var d=c(90444),e=c(88807),f=c(18698),g=c(20416),h=c(10406),i=c(29021),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c(7956);let o=(0,c(72626).h)("db-migration-path");function p(a,b){try{if(!j().existsSync(a))return null;let c=j().realpathSync(a);if((0,n.fW)(c))return o.warn(`[Security] ${b} points to system directory, skipping: ${c}`),null;return c}catch{return o.warn(`[Security] Failed to resolve ${b}: ${a}`),null}}function q(){let a=[];a.push(l().join(process.cwd(),"data","db.sqlite")),a.push(l().join(process.cwd(),"data","cm.db")),a.push(l().join((0,m.homedir)(),".commandmate","data","db.sqlite"));let b=process.env.DATABASE_PATH;if(b)try{let c=l().resolve(b);(0,n.fW)(c)?o.warn(`[Security] Skipping DATABASE_PATH in system directory: ${c}`):a.push(b)}catch{o.warn(`[Security] Invalid DATABASE_PATH: ${b}`)}return a}function r(a){let b=l().resolve(a);if((0,n.fW)(b))throw Error(`Security error: Target path cannot be in system directory: ${b}`);if(j().existsSync(a)){let b=p(a,"target path");if(b)return{migrated:!1,targetPath:b}}for(let a of q()){let c=p(a,"legacy path");if(!c)continue;let d=`${c}.bak`;j().copyFileSync(c,d),j().chmodSync(d,384);let e=l().dirname(b);return j().existsSync(e)||j().mkdirSync(e,{recursive:!0,mode:448}),j().copyFileSync(c,b),o.info(`[Migration] Database migrated from ${c} to ${b}`),o.info(`[Migration] Backup created at ${d}`),{migrated:!0,sourcePath:c,targetPath:b,backupPath:d}}return{migrated:!1,targetPath:b}}},57510:(a,b,c)=>{c.d(b,{KR:()=>e,NZ:()=>p,O2:()=>j,Qd:()=>o,Uq:()=>q,Wv:()=>l,ex:()=>i,hY:()=>n,mJ:()=>f,oJ:()=>k,qU:()=>g});var d=c(62887);function e(a,b,c){return d=>d===a?{event:b,detail:c??null}:null}function f(a){return Object.entries(a).map(([a,b])=>e(a,b))}function g(a,b,c){for(let d of a){let a=d(b,c);if(a)return a}return null}let h=globalThis.__agentSourceUnknownEvents??=new Map;function i(a,b){let c=h.get(a)??{count:0,names:[]};c.count+=1;let d=b??"(unnamed)";!c.names.includes(d)&&c.names.length<32&&c.names.push(d),h.set(a,c)}function j(a,b){let c=a[b];return"string"==typeof c&&""!==c?c:null}function k(a,b){for(let c of b){let b=j(a,c);if(null!==b)return b}return null}function l(a){return null===a||""===a?null:a.slice(0,d.h9)}let m=/^[A-Za-z0-9._:-]+$/;function n(a){return null===a||a.length>128?null:m.test(a)?a:null}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a;for(let a of b){if(!o(c))return null;c=c[a]}return"string"==typeof c&&""!==c?c:null}function q(a,b,c,e={}){var f;let g=void 0!==a.detail&&null!==a.detail?l(a.detail):l(e.detail?.(a.event,b)??null);return{event:a.event,detail:g,conversationId:a.conversationId??(e.conversationId?k(b,e.conversationId):null),toolCallId:a.toolCallId??(e.toolCallId?k(b,e.toolCallId):null),model:null===(f=e.extractModel?.(b)??(e.modelFields?k(b,e.modelFields):null))||""===f?null:f.slice(0,d.h9),raw:b,receivedAt:c}}},62887:(a,b,c)=>{c.d(b,{KC:()=>g,b0:()=>d,h9:()=>f,o0:()=>e});let d=["stop","notification","session_start","user_prompt_submit","session_end","pre_tool_use","post_tool_use"];function e(a){return"string"==typeof a&&d.includes(a)}let f=128,g="permission_replied"},66101:(a,b,c)=>{c.d(b,{U:()=>h,k:()=>i});var d=c(62887),e=c(57510),f=c(25071);let g={close:async()=>{},liveness:{state:"unknown"}};function h(a){let b=a.nativeEventNameFields??["hook_event_name"];return{cliToolId:a.cliToolId,transport:"push",noDecision:a.noDecision,capabilities:a.capabilities,normalizeEvent(c){let f=c.receivedAt??Date.now(),g=b.length>0?(0,e.oJ)(c.payload,b):null;if(null!=c.event&&(0,d.o0)(c.event))return(0,e.Uq)({event:c.event},c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel});let h=(0,e.qU)(a.mappers,g,c.payload);return h?(0,e.Uq)(h,c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel}):((0,e.ex)(a.cliToolId,g),null)},eventIdentityOf:b=>a.extractEventIdentity?.(b)??null,parsePermissionRequest:a.parsePermissionRequest,parseQuestion:a.parseQuestion,encodeVerdict:b=>({kind:"responseBody",body:a.encodeVerdict(b)}),prepareLaunch:a.prepareLaunch,subscribe:async()=>g,async decide(b,c,d){let e=(0,f.o4)(b,c.id,a.encodeVerdict(d));(0,f.oy)(b,c.id,{delivered:e,reason:e?"response-body":"slot-closed"})},listPending:async a=>(0,f.qK)(a),probeActivity:async()=>null,liveness:()=>({state:"unknown"})}}function i(a){let b=a.nativeEventNameFields??["type"];return{cliToolId:a.cliToolId,transport:"pull",noDecision:a.noDecision,capabilities:a.capabilities,normalizeEvent(c){let f=c.receivedAt??Date.now(),g=b.length>0?(0,e.oJ)(c.payload,b):null;if(null!=c.event&&(0,d.o0)(c.event))return(0,e.Uq)({event:c.event},c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel});let h=(0,e.qU)(a.mappers,g,c.payload);return h?(0,e.Uq)(h,c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel}):((0,e.ex)(a.cliToolId,g),null)},eventIdentityOf:b=>a.extractEventIdentity?.(b)??null,parsePermissionRequest:a.parsePermissionRequest,parseQuestion:a.parseQuestion,encodeVerdict:()=>({kind:"outOfBand"}),prepareLaunch:a.prepareLaunch??(a=>({command:a.executablePath,settingsPath:null,env:{}})),subscribe:a.subscribe,decide:a.decide,listPending:a.listPending,probeActivity:a.probeActivity,liveness:a.liveness}}},67882:(a,b,c)=>{c.d(b,{DA:()=>e,O_:()=>f,Oh:()=>d,_K:()=>g});let d={PROMPT_SUBMIT:"hook_prompt_submit",STOP:"hook_stop",PERMISSION_PROMPT:"hook_permission_prompt",PERMISSION_REQUEST:"hook_permission_request",IDLE_PROMPT:"hook_idle_prompt",PRE_TOOL_USE:"hook_pre_tool_use",POST_TOOL_USE:"hook_post_tool_use"};function e(a,b){switch(a){case"user_prompt_submit":return{status:"running",reason:d.PROMPT_SUBMIT};case"pre_tool_use":return{status:"running",reason:d.PRE_TOOL_USE};case"post_tool_use":return{status:"running",reason:d.POST_TOOL_USE};case"stop":return{status:"ready",reason:d.STOP};case"notification":if("permission_prompt"===b)return{status:"waiting",reason:d.PERMISSION_PROMPT};if("idle_prompt"===b)return{status:"ready",reason:d.IDLE_PROMPT};return null;default:return null}}function f(a){switch(a){case"waiting":return{isWaitingForResponse:!0,isProcessing:!1};case"running":return{isWaitingForResponse:!1,isProcessing:!0};default:return{isWaitingForResponse:!1,isProcessing:!1}}}function g(a){return a.isSessionRunning?a.isWaitingForResponse?"waiting":a.isProcessing?"running":"ready":null}},70997:(a,b,c)=>{c.d(b,{v:()=>d});let d="claude"},75356:(a,b,c)=>{c.d(b,{C8:()=>h,Dp:()=>n,Mn:()=>p,Tm:()=>g,Zu:()=>o,aF:()=>f,lu:()=>s,oG:()=>q,pV:()=>k,vE:()=>i});var d=c(62887),e=c(57510);let f="permission_prompt",g="question_prompt",h=d.KC,i="error";function j(a){return(0,e.Qd)(a.properties)?a.properties:{}}function k(a){let b=j(a).info;return(0,e.Qd)(b)?(0,e.NZ)(b,["model","modelID"])??(0,e.NZ)(b,["model","id"]):null}function l(a){return(0,e.NZ)(j(a),["part","state","status"])}function m(a){return"tool"===(0,e.NZ)(j(a),["part","type"])}function n(a){return(0,e.NZ)(j(a),["part","tool"])}function o(a){return(0,e.NZ)(j(a),["part","callID"])}function p(a){return(0,e.NZ)(j(a),["requestID"])}function q(a){let b=j(a);switch((0,e.NZ)(a,["type"])){case"permission.asked":case"question.asked":return(0,e.hY)((0,e.NZ)(b,["id"]));case"permission.replied":return(0,e.hY)(p(a));case"message.updated":return(0,e.hY)((0,e.NZ)(b,["info","id"]));case"message.part.updated":return(0,e.hY)(o(a));default:return null}}let r=["completed","error"],s=[(0,e.KR)("session.idle","stop"),(0,e.KR)("session.created","session_start"),(0,e.KR)("session.deleted","session_end"),(a,b)=>"message.updated"===a&&"user"===(0,e.NZ)(j(b),["info","role"])?{event:"user_prompt_submit"}:null,(a,b)=>"message.part.updated"===a&&m(b)&&"running"===l(b)?{event:"pre_tool_use",detail:(0,e.Wv)(n(b)),toolCallId:o(b)}:null,(a,b)=>"message.part.updated"===a&&m(b)&&r.includes(l(b)??"")?{event:"post_tool_use",detail:(0,e.Wv)(n(b)),toolCallId:o(b)}:null,(0,e.KR)("permission.asked","notification",f),(0,e.KR)("question.asked","notification",g),(0,e.KR)("session.error","notification",i),(0,e.KR)("permission.replied","notification",h)].map(function(a){return(b,c)=>{let d=a(b,c);return d?{...d,conversationId:d.conversationId??(0,e.NZ)(j(c),["sessionID"])}:null}})},76835:(a,b,c)=>{c.d(b,{F:()=>d});let d="antigravity"},77904:(a,b,c)=>{c.d(b,{o:()=>d});let d="gemini"},81254:(a,b,c)=>{function d(a){return"answer_only"===a||"answer_then_enter"===a}c.d(b,{LT:()=>e,MI:()=>d,XF:()=>f});let e="unclassified";function f(a){return null!=a&&a.type!==e}},84574:(a,b,c)=>{c.d(b,{CU:()=>z,hC:()=>u,jp:()=>A,kE:()=>v});var d=c(91645),e=c(29021),f=c(21820),g=c(33873),h=c(8004),i=c(24455),j=c(43252),k=c(72626),l=c(49791);let m=(0,k.h)("lib/hooks/sources/opencode/ports"),n={min:4200,max:4299},o=n.max-n.min+1,p=globalThis.__opencodePortAssignments??=new Map;function q(a){return(0,i.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function r(){let a=(0,g.join)((0,f.homedir)(),".commandmate","opencode-ports.json");return(0,h.T)(process.env.CM_OPENCODE_PORT_FILE,a,"CM_OPENCODE_PORT_FILE")}function s(){try{let a=JSON.parse((0,e.readFileSync)(r(),"utf8"));if("object"!=typeof a||null===a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a))!("object"!=typeof d||null===d||Array.isArray(d))&&"number"==typeof d.port&&Number.isInteger(d.port)&&d.port>0&&d.port<65536&&"string"==typeof d.worktreePath&&(b[c]={port:d.port,worktreePath:d.worktreePath,updatedAt:"number"==typeof d.updatedAt?d.updatedAt:0});return b}catch{return{}}}function t(a){let b=r();try{(0,e.mkdirSync)((0,g.dirname)(b),{recursive:!0}),(0,e.writeFileSync)(b,`${JSON.stringify(a,null,2)}
|
|
5
|
+
`,{mode:384})}catch(a){m.warn("opencode-port-file-write-failed",{path:b,error:a instanceof Error?a.message:String(a)})}}function u(a){return p.get(q(a))?.port??null}function v(a){let b=q(a);p.delete(b);let c=s();b in c&&(delete c[b],t(c))}let w=[l.Vc,"0.0.0.0","::"],x=["EADDRINUSE","EACCES"];async function y(a){for(let[b,c]of w.entries()){let e=await function(a,b){return new Promise(c=>{let e=(0,d.createServer)();e.once("error",a=>{c(x.includes(a.code??"")?"in-use":"unavailable")}),e.listen(a,b,()=>{e.close(()=>c("free"))})})}(a,c);if("free"!==e&&(0===b||"in-use"===e))return m.debug("opencode-port-probe-occupied",{port:a,host:c,probe:e}),!1}return!0}async function z(a,b){if(!(0,j.q)())return null;let c=u(a);if(null!==c)return c;let d=q(a),e=s()[d],f=e?.port,g=function(a){let b=function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193)>>>0;return n.min+b%o}(q(a)),c=[];for(let a=0;a<o;a+=1)c.push(n.min+(b-n.min+a)%o);return c}(a);for(let c of void 0!==f?[f,...g.filter(a=>a!==f)]:g)if(await y(c))return!function(a,b,c,d=Date.now()){let e=q(a),f={port:b,worktreePath:c,updatedAt:d};p.set(e,f);let g=s();g[e]=f,t(g)}(a,c,b),m.info("opencode-port-allocated",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:c}),c;return m.warn("opencode-port-exhausted",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,range:`${n.min}-${n.max}`}),null}async function A(a,b){if(!(0,j.q)())return null;let c=u(a);if(null!==c)return c;let d=s()[q(a)];if(!d)return null;if(d.worktreePath!==b)return m.info("opencode-port-recovery-path-mismatch",{worktreeId:a.worktreeId,recorded:d.worktreePath}),null;let e=await (0,l.Ok)(d.port);return e?(p.set(q(a),d),m.info("opencode-port-recovered",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:d.port,version:e.version}),d.port):(m.info("opencode-port-recovery-unhealthy",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:d.port}),null)}},85322:(a,b,c)=>{c.d(b,{k:()=>d});let d="opencode"},85965:(a,b,c)=>{c.d(b,{cC:()=>t});var d=c(62887),e=c(43252),f=c(72626),g=c(66101),h=c(25071),i=c(49791),j=c(75356),k=c(98211),l=c(84574),m=c(42545),n=c(85322);let o=(0,f.h)("lib/hooks/sources/opencode/source"),p=d.b0;async function q(a,b,c){let d=a.instanceId??a.cliToolId;if("abstain"===c.kind){o.warn("opencode-verdict-abstained",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,consequence:"the agent waits indefinitely; nothing else will unblock it"}),(0,h.oy)(a,b.id,{delivered:!1,reason:"abstained"});return}let e=(0,l.hC)(a);if(null===e){o.warn("opencode-verdict-undeliverable-no-port",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id}),(0,h.oy)(a,b.id,{delivered:!1,reason:"no-port"});return}if("question"===b.kind){if("answer"!==c.kind){o.info("opencode-question-not-answerable",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,verdict:c.kind}),(0,h.oy)(a,b.id,{delivered:!1,reason:"question-needs-answer-verdict"});return}let f=await (0,i.Ei)(e,b.id,c.answers);o.info("opencode-question-replied",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,delivered:f}),(0,h.oy)(a,b.id,{delivered:f,reason:f?"question-reply":"question-reply-failed"});return}let f=function(a){switch(a.kind){case"allowOnce":return"once";case"allowAlways":return"always";case"deny":return"reject";case"answer":case"abstain":return null}}(c);if(null===f)return void(0,h.oy)(a,b.id,{delivered:!1,reason:"no-wire-value"});let g=await (0,i.LV)(e,b.id,f,"deny"===c.kind?c.message:void 0);o.info("opencode-permission-replied",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,reply:f,delivered:g}),(0,h.oy)(a,b.id,{delivered:g,reason:g?`permission-reply:${f}`:"permission-reply-failed"})}async function r(a){let b=(0,l.hC)(a);if(null===b)return[];let c=Date.now(),[d,e]=await Promise.all([(0,i.Li)(b),(0,i.er)(b)]),f=[];for(let a of d){let b=(0,k.Lu)(a,c);b&&f.push(b)}for(let a of e){let b=(0,k.AB)(a,c);b&&f.push(b)}return f}async function s(a){let b=(0,l.hC)(a);return null===b?null:(0,i.xR)(b)}let t=(0,g.k)({cliToolId:n.k,noDecision:{kind:"blocks"},capabilities:{supportedEvents:p,configScope:"none",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!0,eventIdentity:"permission-id",resync:"session-status-poll"},mappers:j.lu,nativeEventNameFields:["type"],conversationIdFields:[],extractModel:j.pV,extractEventIdentity:j.oG,parsePermissionRequest:k.FZ,parseQuestion:k.v1,subscribe:(a,b)=>(0,m.bP)(a,b,a=>t.normalizeEvent(a),{resync:t.capabilities.resync}),decide:q,listPending:r,probeActivity:s,liveness:a=>(0,m.lf)(a),prepareLaunch:function({target:a,executablePath:b}){let c={command:b,settingsPath:null,env:{}};if(!(0,e.q)())return c;let d=(0,l.hC)(a);return null===d?c:{command:`${(0,e.ZL)(b)} --port ${d} --hostname ${i.Vc}`,settingsPath:null,env:{}}}})},92196:(a,b,c)=>{c.d(b,{QQ:()=>f,mw:()=>g});let d="*** ",e=new Set(["Begin Patch","End Patch"]);function f(a){let b=[];for(let c of a.split("\n")){let f=c.endsWith("\r")?c.slice(0,-1):c;if(!f.startsWith(d))continue;let g=f.slice(d.length).trim();if(!(""===g||e.has(g))&&(b.push(`${d}${g}`),b.length>64))return[a]}return b.length>0?b:[a]}function g(a){if("object"==typeof a&&null!==a&&!Array.isArray(a))return{toolInput:a,normalization:null};if("string"==typeof a){if(""===a)return null;let b=a.slice(0,64).trimStart().startsWith("*** Begin Patch"),c=b?"patch":"text";return{toolInput:{[c]:a},normalization:{reason:b?"string-tool-input-as-patch":"string-tool-input-as-text",key:c,receivedType:"string"}}}return null}},97709:(a,b,c)=>{c.d(b,{VM:()=>am});var d=c(2466),e=c(13287),f=c(62887),g=c(43252),h=c(66101),i=c(57510),j=c(38367),k=c(70997);let l={};function m(a){return"allowOnce"!==a.kind?l:{hookSpecificOutput:{hookEventName:e.l9,decision:{behavior:"allow"}}}}let n=(0,h.U)({cliToolId:k.v,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:f.b0,configScope:"per-instance",decisionTimeoutSeconds:g.sI,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:m,prepareLaunch:({target:a,executablePath:b})=>{let c=(0,g.D2)(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}),d=(0,g.q)()&&c!==b?(0,g.iR)({worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}):null;return{command:c,settingsPath:d,env:{}}}});var o=c(92196),p=c(21758),q=c(54633);let r={},s=(0,h.U)({cliToolId:q.V,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["stop","session_start","session_end","user_prompt_submit","post_tool_use"],configScope:"global-singleton",decisionTimeoutSeconds:p.TV,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!0,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:function(a){if(!(0,i.Qd)(a)||a.hook_event_name!==p.cN)return null;let b=(0,i.O2)(a,"tool_name");if(!b||b.length>e.vy)return null;let c=(0,o.mw)(a.tool_input);return c?{toolName:b,toolInput:c.toolInput,toolInputNormalization:c.normalization,promptId:null,sessionId:(0,i.O2)(a,"session_id"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:p.cN,permissionDecision:"allow"}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:p.cN,permissionDecision:"deny",permissionDecisionReason:a.message??"denied by CommandMate"}}:r},prepareLaunch:({target:a,executablePath:b})=>(0,p.Rv)(b,a)});var t=c(15194);let u={ToolPermission:"permission_prompt"};var v=c(33873),w=c(72626),x=c(45567),y=c(29021),z=c(7956);function A(a){if(!(0,y.existsSync)(a))return null;try{let b=JSON.parse((0,y.readFileSync)(a,"utf8"));return(0,i.Qd)(b)?b:null}catch{return null}}function B(a,b){if((0,z.Mb)(a))throw Error(`Refusing to write inside a virtual filesystem: ${a} (a recursive mkdir under /proc, /sys or /dev never returns on Linux; Issue #1774)`);(0,y.mkdirSync)((0,v.dirname)(a),{recursive:!0,mode:448}),(0,y.writeFileSync)(a,`${JSON.stringify(b,null,2)}
|
|
6
|
+
`,{mode:384})}var C=c(77904);let D=(0,w.h)("lib/hooks/sources/gemini/settings-generator"),E=1e3*g.W6,F=[["SessionStart","session_start"],["BeforeAgent","user_prompt_submit"],["AfterAgent","stop"],["Notification","notification"],["SessionEnd","session_end"]];function G(a,b){return a.includes("cmate-agent-event.sh")&&a.includes(`--tool ${C.o}`)&&a.includes(`--worktree-id ${(0,g.ZL)(b)}`)}let H=(0,h.U)({cliToolId:C.o,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","user_prompt_submit","stop","notification","session_end"],configScope:"per-worktree",decisionTimeoutSeconds:0,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:(0,i.mJ)({SessionStart:"session_start",SessionEnd:"session_end",BeforeAgent:"user_prompt_submit",AfterAgent:"stop",BeforeTool:"pre_tool_use",AfterTool:"post_tool_use",Notification:"notification"}),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:[],extractDetail:function(a,b){if("notification"!==a)return(0,j.Jp)(a,b);let c=(0,i.O2)(b,"notification_type");return null===c?null:(0,i.Wv)(u[c]??c)},parsePermissionRequest:()=>null,parseQuestion:()=>null,encodeVerdict:()=>({}),prepareLaunch:function({target:a,executablePath:b,worktreePath:c}){let d={worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:C.o},e=(0,t.n6)(a.instanceId??C.o)?function(a,b){if(!(0,g.q)())return null;let c=(0,g.Os)();if(!c)return D.warn("gemini-hook-relay-missing",{worktreeId:b.worktreeId}),null;let d=(0,v.join)(a,".gemini","settings.json");try{let a=A(d),e=function(a,b){let c={};for(let[e,f]of F){var d;c[e]=[{hooks:[{type:"command",command:(d=b.worktreeId,[(0,g.ZL)(a),"--tool",C.o,"--event",f,"--worktree-id",(0,g.ZL)(d),"--stdin-json"].join(" ")),timeout:E}]}]}return c}(c,b);return B(d,function(a,b,c){let d=(0,i.Qd)(a?.hooks)?a.hooks:{},e={};for(let[a,b]of Object.entries(d)){if(!Array.isArray(b)){e[a]=b;continue}let d=b.filter(a=>!function(a,b){if(!(0,i.Qd)(a))return!1;let c=a.hooks;return Array.isArray(c)?c.length>0&&c.every(a=>(0,i.Qd)(a)&&"string"==typeof a.command&&G(a.command,b)):"string"==typeof a.command&&G(a.command,b)}(a,c));e[a]=d.length===b.length?b:d}for(let[a,c]of Object.entries(b)){let b=e[a];e[a]=Array.isArray(b)?[...b,...c]:[...c]}return{...a,hooks:e}}(a,e,b.worktreeId)),d}catch(a){return D.warn("gemini-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),null}}(c,d):null,{command:f,env:h}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,t.n6)((0,g.g5)(b)))return D.warn("gemini-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d=(0,g.xM)({...b,cliToolId:C.o},c);return{command:(0,g.ZL)(a),env:{[x.ZM]:d}}}(b,d);return{command:f,settingsPath:e,env:h}}});var I=c(21820),J=c(76835);let K=(0,w.h)("lib/hooks/sources/antigravity/hooks-config"),L=[["SessionStart","session_start"],["PostToolUse","post_tool_use"],["Stop","stop"]],M="CM_PERMISSION_HOOK_URL",N=g.sI,O=new Set(["PreToolUse","PostToolUse"]),P={decision:"ask"},Q=(0,h.U)({cliToolId:J.F,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","post_tool_use","stop"],configScope:"global-singleton",decisionTimeoutSeconds:N,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:[],nativeEventNameFields:[],conversationIdFields:["conversationId"],toolCallIdFields:[],modelFields:["modelName"],extractDetail:(a,b)=>"pre_tool_use"===a||"post_tool_use"===a?(0,i.Wv)((0,i.NZ)(b,["toolCall","name"])):null,parsePermissionRequest:function(a){if(!(0,i.Qd)(a))return null;let b=a.toolCall;if(!(0,i.Qd)(b))return null;let c=(0,i.O2)(b,"name");return c&&!(c.length>e.vy)&&(0,i.Qd)(b.args)?{toolName:c,toolInput:b.args,promptId:null,sessionId:(0,i.O2)(a,"conversationId"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{decision:"allow"}:"deny"===a.kind?{decision:"deny",reason:a.message??""}:{...P}},prepareLaunch:({target:a,executablePath:b})=>{let c=function(a={}){if(!(0,g.q)())return null;let b=(0,g.Os)();if(!b)return K.warn("antigravity-hook-relay-missing"),null;let c=function(a={}){return a.path??(0,v.join)((0,I.homedir)(),".gemini","config","hooks.json")}(a);try{var d;let a=A(c);return B(c,(d=function(a){let b={};for(let[c,d]of L){let e={type:"command",command:[(0,g.ZL)(a),"--tool",J.F,"--event",d,"--stdin-json"].join(" "),timeout:g.W6};b[c]=O.has(c)?[{matcher:"*",hooks:[e]}]:[e]}return b.PreToolUse=[{matcher:"*",hooks:[{type:"command",command:function(){let a=`"$${M}"`,b=`printf '%s' ${(0,g.ZL)('{"decision":"ask"}')}`;return`if [ -z "\${${M}:-}" ]; then cat >/dev/null; ${b}; exit 0; fi; set -- -sS -f -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${g.XE}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${g.XE}"; fi; out=$(curl "$@" --data-binary @- ${a} 2>/dev/null); case "$out" in '{'*'"decision"'*) printf '%s' "$out" ;; *) ${b} ;; esac`}(),timeout:g.sI}]}],b}(b),{...a,commandmate:d})),c}catch(a){return K.warn("antigravity-hooks-config-write-failed",{error:a instanceof Error?a.message:String(a)}),null}}(),{command:d,env:e}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,t.n6)((0,g.g5)(b)))return K.warn("antigravity-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d={...b,cliToolId:J.F};return{command:(0,g.ZL)(a),env:{[x.ZM]:(0,g.xM)(d,c),[M]:(0,g.O$)(d,c)}}}(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:J.F});return{command:d,settingsPath:c,env:e}}});var R=c(8004),S=c(87447),T=c(66007),U=c(2734);let V=(0,w.h)("lib/hooks/sources/codex/hooks-config"),W="127.0.0.1",X="commandmate:agent-hooks",Y="CODEX_HOME",Z="CM_AGENT_WORKTREE_ID",$="CM_AGENT_INSTANCE_ID",_="CM_HOOK_URL",aa="CM_PERMISSION_HOOK_URL",ab={SessionStart:"session_start",UserPromptSubmit:"user_prompt_submit",Stop:"stop",SessionEnd:"session_end"},ac="PermissionRequest",ad=Object.values(ab);function ae(a={}){let b=(0,v.join)((0,I.homedir)(),".codex");return a.codexHome?(0,R.T)(a.codexHome,b,"CodexHookOptions.codexHome"):(0,R.T)(process.env[Y],b,Y)}function af(a,b){return`http://${W}:\${CM_PORT:-3000}${a}${b}`}let ag={},ah=(0,h.U)({cliToolId:U.c,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:ad,configScope:"global-singleton",decisionTimeoutSeconds:5,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:ac,decision:{behavior:"allow"}}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:ac,decision:{behavior:"deny",message:a.message??""}}}:ag},prepareLaunch:({target:a,executablePath:b})=>(function(a,b,c={}){let d={command:a,settingsPath:null,env:{}};if(!(0,g.q)())return d;let e=b.instanceId??U.c;if(!(0,T.h6)(b.worktreeId)||!(0,t.n6)(e))return V.warn("codex-hooks-invalid-correlation-key",{worktreeId:b.worktreeId}),d;try{let f=function(a={}){let b=function(a={}){return(0,v.join)(ae(a),"hooks.json")}(a),c=null,d=null;if((0,y.existsSync)(b))try{d=(0,y.readFileSync)(b,"utf8"),c=JSON.parse(d)}catch(a){return V.warn("codex-hooks-config-unreadable",{settingsPath:b,error:a instanceof Error?a.message:String(a)}),null}let e=`${JSON.stringify(function(a,b){let c=(0,i.Qd)(a)?{...a}:{},d=(0,i.Qd)(c.hooks)?c.hooks:{},e={};for(let[a,b]of Object.entries(d))e[a]=Array.isArray(b)?b.map(a=>{if(!(0,i.Qd)(a)||!Array.isArray(a.hooks))return a;let b=a.hooks.filter(a=>!((0,i.Qd)(a)&&"string"==typeof a.command&&a.command.includes(X)));return b.length===a.hooks.length?a:{...a,hooks:b}}).filter(a=>!((0,i.Qd)(a)&&Array.isArray(a.hooks))||a.hooks.length>0):b;for(let[a,c]of Object.entries(b.hooks)){let b=e[a];(void 0===b||Array.isArray(b))&&(e[a]=[...b??[],...c])}return c.hooks=e,c}(c,function(a={}){let b=(b,c)=>({hooks:[{type:"command",command:function(a,b={}){let c=` # ${X}`,d=void 0===b.relayScriptPath?(0,g.Os)():b.relayScriptPath;if(d)return[(0,g.ZL)(d),"--tool",U.c,"--event",a,"--worktree-id",`"$${Z}"`,"--instance-id",`"$${$}"`,"--stdin-json"].join(" ")+c;let e=b.withAuthHeader??(0,g.yc)()?` -H "Authorization: Bearer $${g.XE}"`:"",f=`"\${${_}:-${af(g.jx,"")}}?tool=${U.c}\${${Z}:+&worktreeId=$${Z}}\${${$}:+&instanceId=$${$}}"`;return`curl -sS -f -m ${g.W6} -X POST -H 'Content-Type: application/json'${e} --data-binary @- ${f} >/dev/null 2>&1 || true${c}`}(b,a),timeout:c}]}),c={};for(let[a,d]of Object.entries(ab)){let e="SessionEnd"===a?3:g.W6;c[a]=[b(d,e)]}return c[ac]=[{hooks:[{type:"command",command:function(a={}){let b=a.withAuthHeader??(0,g.yc)()?` -H "Authorization: Bearer $${g.XE}"`:"",c=`"\${${aa}:-${af(g.WZ,`?tool=${U.c}`)}}"`;return`curl -sS -f -m ${g.sI} -X POST -H 'Content-Type: application/json'${b} --data-binary @- ${c} 2>/dev/null || true # ${X}`}(a),timeout:g.sI}]}],{hooks:c}}(a)),null,2)}
|
|
7
|
+
`;return d===e||((0,y.mkdirSync)((0,v.dirname)(b),{recursive:!0,mode:448}),(0,y.writeFileSync)(b,e,{mode:384})),b}(c);if(!f)return d;let h=c.port??(0,S.D0)(),j=new URLSearchParams({tool:U.c,worktreeId:b.worktreeId,instanceId:e}),k={[Y]:ae(c),CM_AGENT_TOOL:U.c,[Z]:b.worktreeId,[$]:e,[_]:`http://${W}:${h}${g.jx}`,[aa]:`http://${W}:${h}${g.WZ}?${j.toString()}`},l="bypass"===process.env.CM_CODEX_HOOK_TRUST?" --dangerously-bypass-hook-trust":"";return{command:`${(0,g.ZL)(a)}${l}`,settingsPath:f,env:k}}catch(a){return V.warn("codex-hooks-config-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),d}})(b,a)});var ai=c(85965);let aj=globalThis.__agentEventSources??=new Map,ak=globalThis.__agentEventLegacySources??=new Map;function al(a){aj.set(a.cliToolId,a),ak.delete(a.cliToolId)}function am(a){let b=aj.get(a);if(b)return b;let c=ak.get(a);if(c)return c;let f=(0,h.U)({cliToolId:a,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:[],configScope:"none",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:m,prepareLaunch:({executablePath:a})=>({command:a,settingsPath:null,env:{}})});return ak.set(a,f),f}al(n),al(s),al(H),al(Q),al(ah),al(ai.cC)},98211:(a,b,c)=>{c.d(b,{AB:()=>l,FZ:()=>i,Lu:()=>k,XL:()=>g,v1:()=>j});var d=c(2466),e=c(57510);let f=globalThis.__opencodeToolCallNames??=new Map;function g(a,b){for(f.delete(a),f.set(a,b);f.size>256;){let a=f.keys().next();if(a.done)break;f.delete(a.value)}}function h(a){return"string"==typeof a.type&&(0,e.Qd)(a.properties)?a.properties:a}function i(a){var b;let c=h(a),d=(0,e.O2)(c,"id"),g=(0,e.O2)(c,"sessionID");if(!d||!g||Array.isArray(c.questions))return null;let i=(0,e.O2)(c,"permission"),j=(0,e.Qd)(c.metadata)?c.metadata:{};return{toolName:((b=(0,e.NZ)(c,["tool","callID"]))?f.get(b)??null:null)??i??"permission",toolInput:{permission:i,patterns:Array.isArray(c.patterns)?c.patterns:[],...j},promptId:d,sessionId:g,permissionMode:null,permissionSuggestions:Array.isArray(c.always)?c.always:null}}function j(a){let b=h(a),c=(0,e.O2)(b,"id");if(!c)return null;let f=(0,d.u_)({questions:b.questions});return null===f?null:{questions:f,promptId:c}}function k(a,b){let c=i(a);return c&&c.promptId?{kind:"permission",id:c.promptId,conversationId:c.sessionId,subject:{kind:"permission",toolName:c.toolName,toolInput:c.toolInput},raw:a,askedAt:b}:null}function l(a,b){let c=h(a),d=(0,e.O2)(c,"id"),f=j(a);return d&&f?{kind:"question",id:d,conversationId:(0,e.O2)(c,"sessionID"),subject:{kind:"question",spec:f},raw:a,askedAt:b}:null}}};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";exports.id=1601,exports.ids=[1296,1601,9358],exports.modules={3915:(a,b,c)=>{c.d(b,{L_:()=>h,jQ:()=>f});var d=c(55511);let e=new Map;function f(a,b=Date.now(),c=3e4){var g;let h=`${a.worktreeId}:${a.kind}`,i=(g=a.content??"",(0,d.createHash)("sha256").update(g).digest("hex")),j=e.get(h);return(!j||j.hash!==i||!(b-j.at<c))&&(e.set(h,{hash:i,at:b}),!0)}let g=globalThis.__waitingPushDedup??(globalThis.__waitingPushDedup=new Map);function h(a){let b=`${a.worktreeId}::${a.instanceId}`,c=!0===a.escalated,d=g.get(b);return(!d||d.since!==a.since||!d.escalated&&!!c)&&(g.set(b,{since:a.since,escalated:c}),!0)}},25754:(a,b,c)=>{c.d(b,{Xn:()=>e,d9:()=>g,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},27519:(a,b,c)=>{function d(){let a=process.env.CM_VAPID_PUBLIC_KEY?.trim(),b=process.env.CM_VAPID_PRIVATE_KEY?.trim();return a&&b?{publicKey:a,privateKey:b,subject:process.env.CM_VAPID_SUBJECT?.trim()||"mailto:commandmate@localhost"}:null}function e(){return null!==d()}function f(){return d()?.publicKey??null}c.d(b,{HR:()=>f,lU:()=>e,vB:()=>d})},49358:a=>{a.exports=JSON.parse('{"title":"Notifications","description":"Get a push notification when an agent is waiting for you or finishes a session — even when the app is closed.","enable":"Enable notifications","enabling":"Enabling…","enabledOnThisDevice":"Notifications are enabled on this device.","unsubscribe":"Unsubscribe this device","types":{"heading":"Notify me about","promptWaiting":"Prompt waiting","promptWaitingDesc":"When an agent is waiting for your reply","completion":"Session complete","completionDesc":"When an agent finishes a session"},"permission":{"denied":"Notifications are blocked in your browser settings. Allow them for this site to receive push notifications."},"unsupported":"This browser does not support push notifications.","notConfigured":"Push notifications are not configured on this server. Set the VAPID keys to enable them.","ios":{"guidance":"On iPhone/iPad, add this app to your Home Screen and open it from there to enable notifications."},"toast":{"enabled":"Notifications enabled on this device","disabled":"Notifications turned off on this device","error":"Could not enable notifications","updated":"Notification settings updated"},"push":{"promptWaitingWithExcerpt":"Waiting for reply: {excerpt}","promptWaiting":"Waiting for your reply","completionWithExcerpt":"Done: {excerpt}","completion":"Session complete","terminalAttentionWithExcerpt":"Needs attention in the terminal: {excerpt}","terminalAttention":"Needs attention in the terminal","stillWaitingPrompt":"Still waiting for your reply ({minutes} min)","stillWaitingTerminal":"Still needs attention in the terminal ({minutes} min)"},"escalation":{"heading":"Reminder","toggle":"Remind me if still waiting","toggleDesc":"Send one more notification when an agent has been waiting this long. Applies to every device.","threshold":"Remind after","minutes":"{count} min"},"inApp":{"heading":"In-app notifications","waitingToggle":"Waiting toast","waitingToggleDesc":"Show a toast when another worktree starts waiting for you","waitingToast":"{name} is waiting for your input","soundToggle":"Waiting sound","soundToggleDesc":"Play a short chime when a worktree starts waiting for you. Takes effect after you click or press a key on the page."}}')},57836:(a,b,c)=>{c.d(b,{Jp:()=>k,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}},61191:(a,b,c)=>{c.d(b,{J$:()=>r});var d=c(48975),e=c.n(d),f=c(88807),g=c(43167),h=c(72626),i=c(25754),j=c(49358),k=c(61296),l=c(27519),m=c(3915);let n=(0,h.h)("push/sender"),o={en:j.push,ja:k.push};function p(a){return(0,i.d9)(a)?a:i.Xn}async function q(a,b){try{await e().sendNotification({endpoint:a.endpoint,keys:a.keys},b)}catch(c){let b=c.statusCode;if(404===b||410===b){(0,g.th)((0,f.getDbInstance)(),a.endpoint),n.info("push-subscription-removed",{statusCode:b});return}n.warn("push-send-failed",{statusCode:b??"unknown"})}}async function r(a,b=Date.now()){try{let c=(0,l.vB)();if(!c||("prompt"===a.kind&&"number"==typeof a.waitingSince?!(0,m.L_)({worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName??"",since:a.waitingSince,escalated:a.escalated}):!(0,m.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:a.excerpt})))return;let d=(0,f.getDbInstance)(),h=(0,g.gn)(d,a.kind);if(0===h.length)return;e().setVapidDetails(c.subject,c.publicKey,c.privateKey);let j=new Map;for(let a of h){let b=p(a.locale),c=j.get(b);c?c.push(a):j.set(b,[a])}await Promise.all(Array.from(j,([c,d])=>{let e=JSON.stringify(function(a,b=i.Xn,c=Date.now()){let d=function(a,b=120){if(!a)return"";let c=a.replace(/\s+/g," ").trim();return c.length<=b?c:c.slice(0,b-1).trimEnd()+"…"}(a.excerpt),e=a.agentName?` (${a.agentName})`:"",f=`${a.worktreeName}${e}`,g=o[p(b)],h="prompt"===a.kind?function(a,b,c,d){var e;let f="menu"===(e=a.waitingKind)||"unclassified"===e;if(a.escalated){let c=String(Math.max(1,Math.floor((d-(a.waitingSince??d))/6e4)));return(f?b.stillWaitingTerminal:b.stillWaitingPrompt).replace("{minutes}",c)}return f?c?b.terminalAttentionWithExcerpt.replace("{excerpt}",c):b.terminalAttention:c?b.promptWaitingWithExcerpt.replace("{excerpt}",c):b.promptWaiting}(a,g,d,c):d?g.completionWithExcerpt.replace("{excerpt}",d):g.completion;return{kind:a.kind,title:f,body:h,worktreeId:a.worktreeId,url:`/worktrees/${a.worktreeId}`,tag:`${a.worktreeId}:${a.kind}`,timestamp:c,...a.waitingKind?{waitingKind:a.waitingKind}:{}}}(a,c,b));return Promise.all(d.map(a=>q(a,e)))}))}catch(a){n.warn("push-fanout-error",{error:a instanceof Error?a.message:String(a)})}}},61296:a=>{a.exports=JSON.parse('{"title":"通知","description":"エージェントが応答待ちになったり、セッションが完了したときに、アプリを開いていなくてもプッシュ通知を受け取れます。","enable":"通知を有効にする","enabling":"有効化中…","enabledOnThisDevice":"この端末で通知が有効です。","unsubscribe":"この端末の通知を解除","types":{"heading":"通知する種別","promptWaiting":"応答待ち","promptWaitingDesc":"エージェントがあなたの応答を待っているとき","completion":"セッション完了","completionDesc":"エージェントがセッションを完了したとき"},"permission":{"denied":"ブラウザの設定で通知がブロックされています。このサイトの通知を許可してください。"},"unsupported":"このブラウザはプッシュ通知に対応していません。","notConfigured":"このサーバーではプッシュ通知が設定されていません。VAPID鍵を設定すると有効になります。","ios":{"guidance":"iPhone/iPadでは、このアプリをホーム画面に追加し、そこから開くと通知を有効にできます。"},"toast":{"enabled":"この端末で通知を有効にしました","disabled":"この端末の通知をオフにしました","error":"通知を有効にできませんでした","updated":"通知設定を更新しました"},"push":{"promptWaitingWithExcerpt":"応答待ち: {excerpt}","promptWaiting":"応答待ちです","completionWithExcerpt":"完了: {excerpt}","completion":"セッションが完了しました","terminalAttentionWithExcerpt":"端末の確認が必要です: {excerpt}","terminalAttention":"端末の確認が必要です","stillWaitingPrompt":"まだ応答待ちです({minutes}分経過)","stillWaitingTerminal":"まだ端末の確認が必要です({minutes}分経過)"},"escalation":{"heading":"再通知","toggle":"待ち続けていたら再通知する","toggleDesc":"エージェントが入力待ちのまま指定時間を超えたら、もう1度だけ通知します。すべての端末に適用されます。","threshold":"再通知するまでの時間","minutes":"{count}分"},"inApp":{"heading":"アプリ内通知","waitingToggle":"入力待ちトースト","waitingToggleDesc":"別のワークツリーが入力待ちになったときにトーストを表示します","waitingToast":"{name} が入力待ちです","soundToggle":"入力待ちの通知音","soundToggleDesc":"ワークツリーが入力待ちになったときに短い通知音を鳴らします。ページを一度クリックまたはキー操作すると有効になります。"}}')},73478:(a,b,c)=>{c.d(b,{I7:()=>p});var d=c(24455),e=c(88807),f=c(73753),g=c(72626),h=c(57836),i=c(80544),j=c(61191),k=c(27519);let l=(0,g.h)("push/waiting-notifier"),m=globalThis.__waitingPushPending??(globalThis.__waitingPushPending=new Map);async function n(a,b,c){let d=a.instanceId??a.cliToolId;try{await (0,j.J$)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,f.Ui)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"prompt",agentName:d,instanceId:d,waitingKind:a.kind,waitingSince:a.since,escalated:b},c)}catch(c){l.warn("waiting-push-failed",{worktreeId:a.worktreeId,instanceId:d,escalated:b,error:c instanceof Error?c.message:String(c)})}}function o(){if(m.size>0)return;let a=globalThis.__waitingPushEscalationTimer;void 0!==a&&(clearInterval(a),globalThis.__waitingPushEscalationTimer=void 0)}function p(){let a=globalThis.__waitingPushUnsubscribe;a&&(a(),globalThis.__waitingPushUnsubscribe=void 0),m.clear(),o();let b=(0,h.wN)(a=>{!function(a){if(!(0,k.lU)())return;let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(!a.waiting||null===a.since){m.delete(b),o();return}let c={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,since:a.since,kind:a.kind};m.set(b,c),function(){if(void 0!==globalThis.__waitingPushEscalationTimer)return;let a=setInterval(()=>{!function(a=Date.now()){if(0===m.size)return o();let b=(0,i.rS)(),c=6e4*b.thresholdMinutes;for(let[d,e]of Array.from(m)){let f=(0,h.Jp)(e.worktreeId,e.cliToolId,e.instanceId);if(null===f||f.since!==e.since){m.delete(d);continue}b.enabled&&(a-e.since<c||(m.delete(d),n({...e,kind:f.kind??e.kind},!0,a)))}o()}()},6e4);a.unref?.(),globalThis.__waitingPushEscalationTimer=a}(),n(c,!1,a.at)}(a)});return globalThis.__waitingPushUnsubscribe=b,b}},80544:(a,b,c)=>{c.d(b,{Di:()=>h,O$:()=>g,d7:()=>k,rS:()=>j});var d=c(88807);let e=(0,c(72626).h)("push/escalation-settings"),f="push_escalation",g={enabled:!0,thresholdMinutes:10},h=[5,10,30,60];function i(a){if("object"!=typeof a||null===a)return{...g};let b="boolean"==typeof a.enabled?a.enabled:g.enabled,c=a.thresholdMinutes;return{enabled:b,thresholdMinutes:"number"==typeof c&&Number.isFinite(c)&&c>=1&&c<=1440?Math.round(c):g.thresholdMinutes}}function j(){try{let a=(0,d.getDbInstance)().prepare("SELECT value FROM app_settings WHERE key = ?").get(f);if(!a)return{...g};return i(JSON.parse(a.value))}catch(a){return e.warn("escalation-settings-read-failed",{error:a instanceof Error?a.message:String(a)}),{...g}}}function k(a){let b=i(a),c=Date.now();return(0,d.getDbInstance)().prepare(`
|
|
1
|
+
"use strict";exports.id=1601,exports.ids=[1601],exports.modules={50779:(a,b,c)=>{c.d(b,{GT:()=>m});var d=c(88807),e=c(43167),f=c(73753),g=c(72626),h=c(57836),i=c(4806),j=c(61191),k=c(27519);let l=(0,g.h)("push/resolution");async function m(a){let{worktreeId:b,agentName:c,at:g=Date.now()}=a,m=function(a){let b;if(!(0,k.lU)())return{send:!1,reason:"push-unconfigured"};if(!(0,i.r0)(a))return{send:!1,reason:"no-card"};if((0,h.Te)(a))return{send:!1,reason:"still-waiting"};try{b=(0,e.rC)((0,d.getDbInstance)(),"prompt")}catch{return{send:!1,reason:"single-device",deviceCount:0}}return b<2?{send:!1,reason:"single-device",deviceCount:b}:{send:!0,reason:"cross-device-clear",deviceCount:b}}(b),n={worktreeId:b,instanceId:c,reason:m.reason,...void 0!==m.deviceCount?{deviceCount:m.deviceCount}:{}};if("still-waiting"!==m.reason&&(0,i._P)(b),!m.send)return void("single-device"===m.reason?l.info("resolution-push-skipped",n):l.debug("resolution-push-skipped",n));try{await (0,j.J$)({worktreeId:b,worktreeName:function(a){try{return(0,f.Ui)((0,d.getDbInstance)(),a)?.name??a}catch{return a}}(b),kind:"prompt",agentName:c,resolved:!0},g),l.info("resolution-push-sent",n)}catch(a){l.warn("resolution-push-failed",{...n,error:a instanceof Error?a.message:String(a)})}}},73478:(a,b,c)=>{c.d(b,{I7:()=>r});var d=c(24455),e=c(88807),f=c(73753),g=c(72626),h=c(57836),i=c(80544),j=c(92010),k=c(61191),l=c(50779),m=c(27519);let n=(0,g.h)("push/waiting-notifier"),o=globalThis.__waitingPushPending??(globalThis.__waitingPushPending=new Map);async function p(a,b,c){let d=a.instanceId??a.cliToolId;try{await (0,k.J$)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,f.Ui)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"prompt",agentName:d,instanceId:d,waitingKind:a.kind,waitingSince:a.since,escalated:b},c)}catch(c){n.warn("waiting-push-failed",{worktreeId:a.worktreeId,instanceId:d,escalated:b,error:c instanceof Error?c.message:String(c)})}}function q(){if(o.size>0)return;let a=globalThis.__waitingPushEscalationTimer;void 0!==a&&(clearInterval(a),globalThis.__waitingPushEscalationTimer=void 0)}function r(){let a=globalThis.__waitingPushUnsubscribe;a&&(a(),globalThis.__waitingPushUnsubscribe=void 0),o.clear(),q();let b=(0,h.wN)(a=>{!function(a){if(!(0,m.lU)())return;let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(!a.waiting||null===a.since){o.delete(b),q(),(0,l.GT)({worktreeId:a.worktreeId,agentName:a.instanceId??a.cliToolId,at:a.at});return}let c={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,since:a.since,kind:a.kind};o.set(b,c),function(){if(void 0!==globalThis.__waitingPushEscalationTimer)return;let a=setInterval(()=>{!function(a=Date.now()){if(0===o.size)return q();let b=(0,i.rS)(),c=6e4*b.thresholdMinutes;for(let[d,e]of Array.from(o)){let f=(0,h.Jp)(e.worktreeId,e.cliToolId,e.instanceId);if(null===f||f.since!==e.since){o.delete(d);continue}b.enabled&&!(a-e.since<c)&&((0,j.R)({worktreeId:e.worktreeId,cliToolId:e.cliToolId,instanceId:e.instanceId,waitingSince:e.since,escalated:!0})||(o.delete(d),p({...e,kind:f.kind??e.kind},!0,a)))}q()}()},6e4);a.unref?.(),globalThis.__waitingPushEscalationTimer=a}(),(0,j.R)({worktreeId:c.worktreeId,cliToolId:c.cliToolId,instanceId:c.instanceId,waitingSince:c.since})||p(c,!1,a.at)}(a)});return globalThis.__waitingPushUnsubscribe=b,b}},80544:(a,b,c)=>{c.d(b,{Di:()=>h,O$:()=>g,d7:()=>k,rS:()=>j});var d=c(88807);let e=(0,c(72626).h)("push/escalation-settings"),f="push_escalation",g={enabled:!0,thresholdMinutes:10},h=[5,10,30,60];function i(a){if("object"!=typeof a||null===a)return{...g};let b="boolean"==typeof a.enabled?a.enabled:g.enabled,c=a.thresholdMinutes;return{enabled:b,thresholdMinutes:"number"==typeof c&&Number.isFinite(c)&&c>=1&&c<=1440?Math.round(c):g.thresholdMinutes}}function j(){try{let a=(0,d.getDbInstance)().prepare("SELECT value FROM app_settings WHERE key = ?").get(f);if(!a)return{...g};return i(JSON.parse(a.value))}catch(a){return e.warn("escalation-settings-read-failed",{error:a instanceof Error?a.message:String(a)}),{...g}}}function k(a){let b=i(a),c=Date.now();return(0,d.getDbInstance)().prepare(`
|
|
2
2
|
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
3
3
|
VALUES (?, ?, ?, ?)
|
|
4
4
|
ON CONFLICT(key) DO UPDATE SET
|
|
5
5
|
value = excluded.value,
|
|
6
6
|
updated_at = excluded.updated_at
|
|
7
|
-
`).run(f,JSON.stringify(b),c,c),b}},91601:(a,b,c)=>{c.d(b,{Di:()=>f.Di,HR:()=>d.HR,J$:()=>e.J$,O$:()=>f.O$,d7:()=>f.d7,rS:()=>f.rS});var d=c(27519),e=c(61191);c(3915),c(73478);var f=c(80544)}};
|
|
7
|
+
`).run(f,JSON.stringify(b),c,c),b}},91601:(a,b,c)=>{c.d(b,{Di:()=>f.Di,HR:()=>d.HR,J$:()=>e.J$,O$:()=>f.O$,d7:()=>f.d7,rS:()=>f.rS});var d=c(27519),e=c(61191);c(3915),c(92010),c(81099),c(77703),c(73478);var f=c(80544);c(50779),c(4806)},92010:(a,b,c)=>{c.d(b,{R:()=>h});var d=c(24455),e=c(72626),f=c(52277);let g=(0,e.h)("push/prompt-gate");function h(a){let b=function(a){let{worktreeId:b,cliToolId:c,instanceId:e,waitingSince:g}=a,h=(0,d.aq)(b,c,e);if(null===h||!h.enabled)return{suppress:!1,reason:"auto-yes-inactive",stopReason:h?.stopReason};let i=(0,f.gb)(b,c,e);return null!==i&&i.at>=g?{suppress:!1,reason:"policy-withheld",suppressedBy:i.reason}:!0===a.escalated?{suppress:!1,reason:"escalation-reminder"}:{suppress:!0,reason:"auto-yes-answering"}}(a),c={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waitingSince:a.waitingSince,escalated:!0===a.escalated,reason:b.reason,...void 0!==b.stopReason?{stopReason:b.stopReason}:{},...void 0!==b.suppressedBy?{suppressedBy:b.suppressedBy}:{}};return b.suppress?g.info("prompt-push-suppressed",c):g.debug("prompt-push-allowed",c),b.suppress}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2119,exports.ids=[2119],exports.modules={72119:a=>{a.exports=JSON.parse('{"agentStatus":{"moreAgents":"{count} more agents","overflowTrigger":"More agents"},"toc":{"title":"Contents","show":"Show table of contents","hide":"Hide table of contents","empty":"No headings"},"composer":{"placeholder":"Type your message…","commandsHint":"commands","newlineHint":"newline","removeAttachment":"Remove attachment","showSlashCommands":"Show slash commands","attachImage":"Attach image","sendMessage":"Send message"},"interrupt":{"stopProcessing":"Stop processing"},"history":{"title":"Message History","regionLabel":"Message history","loading":"Loading messages","empty":"No messages yet","show":"Show","displayLimit":"History display limit","showArchived":"Show archived","showUserOnly":"Show user messages only","showAllMessages":"Show all messages","openSearch":"Open search","closeSearch":"Close search","copied":"Copied to clipboard","copyFailed":"Failed to copy","search":{"regionLabel":"Search history text","placeholder":"Search...","keywordLabel":"Search keyword","prev":"Previous result","next":"Next result","close":"Close search bar","countAtMax":"{current}/{max}+"}},"conversation":{"waitingForResponse":"Waiting for response...","you":"You","assistant":"Assistant","sending":"Sending…","failedToSend":"Failed to send","retrySending":"Retry sending message","discard":"Discard","discardMessage":"Discard message","insertToMessage":"Insert to message","copy":"Copy","copyMessage":"Copy message","collapse":"Collapse","expand":"Expand","collapseMessage":"Collapse message","expandMessage":"Expand message","systemMessage":"System Message","systemMessageLabel":"System message","openFile":"Open file: {path}","conversationLabel":"Conversation: {preview}"},"messages":{"loading":"Loading messages...","empty":"No messages yet","you":"You","copy":"Copy","copyMessage":"Copy message","viewLogFile":"View log file →"},"slashCommands":{"title":"Commands","searchPlaceholder":"Search commands...","enterCustomCommand":"Enter custom command...","selectHint":"select","closeHint":"close","empty":"No commands available","catalogStale":{"hint":"Your CLI is newer than this list. Add missing commands in ~/.commandmate/slash-commands/."},"sourceBadge":{"userCatalog":"Custom"},"descriptions":{"clear":"Clear conversation history","compact":"Compact context to reduce token usage","resume":"Resume previous conversation","rewind":"Rewind to previous conversation state","config":"Open configuration settings","model":"Switch AI model","permissions":"View or update tool permissions","status":"Check session status","context":"Show context window usage","review":"Review code changes","help":"Show all available commands","doctor":"Check installation health","export":"Export conversation history","focus":"Toggle focus mode","effort":"Adjust model thinking effort (high/medium/low)","fast":"Switch to fast response mode","loop":"Run a prompt repeatedly while the session stays open","add-dir":"Add a working directory for file access during the session","terminal-setup":"Configure terminal keybindings for Shift+Enter and other shortcuts","statusline":"Configure the status line display","usage":"Show session cost, plan usage limits, and activity stats","tasks":"View and manage background tasks","memory":"Edit CLAUDE.md memory files and manage auto-memory","new":"Start a new conversation","logout":"Sign out from Codex","quit":"Exit Codex CLI","diff":"Show Git diff (including untracked files)","mention":"Attach file/folder for next interaction","mcp":"Manage MCP servers and available tools","init":"Generate AGENTS.md template in current directory","feedback":"Send feedback to Codex team","plan":"Toggle plan mode","goal":"Set goal for current session","agent":"Switch active agent (Codex)","subagents":"Manage subagents","fork":"Fork current session","memories":"Manage Codex memories","skills":"Manage Codex skills","hooks":"View or manage hook configurations","sessions":"Browse conversation history","connect":"Connect to language server","exit":"Exit OpenCode TUI","models":"Switch AI model","agents":{"opencode":"List and manage available agents","claude":"Show a reminder to ask Claude to create or manage subagents, or to edit .claude/agents/ directly"},"themes":"Change TUI theme","editor":"Open editor for long messages","advisor":"Enable or disable the advisor tool, which consults a second model for guidance at key moments during a task","autocompact":"Set the auto-compact window: how full the context window gets before Claude Code compacts automatically","autofix-pr":"Spawn a Claude Code on the web session that watches the current branch\'s PR and pushes fixes when CI fails or reviewers leave comments","background":"Detach the current session to run as a background agent and free this terminal","batch":"Orchestrate large-scale changes across a codebase in parallel","branch":"Create a branch of the current conversation at this point, so you can try a different direction without losing the conversation as it stands","btw":"Ask a quick side question in an ephemeral fork, without adding it to the conversation","bug":"Report a bug or share your conversation","cd":"Move this session to a new working directory","chrome":"Configure Claude in Chrome settings","claude-api":"Load Claude API reference material for your project\'s language (Python, TypeScript, Java, Go, Ruby, C#, PHP, or cURL) and Managed Agents reference","code-review":"Review the current diff for correctness bugs and cleanup opportunities","color":"Set the prompt bar color for the current session","copy":"Copy the last response to the clipboard as markdown","dataviz":"Design guidance for charts, graphs, and dashboards","debug":"Enable debug logging for the current session and troubleshoot issues by reading the session debug log","deep-research":"Fan out web searches on a question, fetch and cross-check sources, and synthesize a cited report","design-login":"Authorize design-system access for /design-sync with your claude.ai account","design-sync":"Convert your repo\'s React design system and upload it to Claude Design, so designs it produces use your real components","desktop":"Continue the current session in the Claude Code Desktop app","fewer-permission-prompts":"Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts","heapdump":"Write a JavaScript heap snapshot and a memory breakdown to ~/Desktop, or your home directory on Linux without a Desktop folder, for diagnosing high memory usage","ide":"Manage IDE integration: status, current selection, open files, and other editor context","insights":"Generate a report analyzing your Claude Code sessions, including project areas, interaction patterns, and friction points","install-github-app":"Install the Claude GitHub App for a repository, with an optional step to set up GitHub Actions workflows and secrets","install-slack-app":"Install the Claude Slack app","keybindings":"Open your keyboard shortcuts file","login":"Sign in to your Anthropic account","mobile":"Show QR code to download the Claude mobile app","passes":"Share a free week of Claude Code with friends","plugin":"Manage Claude Code plugins","powerup":"Discover Claude Code features through quick interactive lessons with animated demos","privacy-settings":"View and update your privacy settings","radio":"Open Claude FM lo-fi radio in your browser","recap":"Generate a one-line summary of the current session on demand","release-notes":"View the changelog in an interactive version picker","reload-plugins":"Reload all active plugins to apply pending changes without restarting","reload-skills":"Re-scan skill and command directories so skills added or changed on disk during the session become available without restarting","remote-control":"Make this session available for Remote Control from claude.ai","remote-env":"Choose the default environment for cloud agents","rename":"Rename the current session or thread","run":"Launch and drive your project\'s app to see a change working, not only passing tests","run-skill-generator":"Teach /run and /verify how to build, launch, and drive your project\'s app from a clean environment by writing a per-project skill","sandbox":"Toggle sandbox mode","scroll-speed":"Adjust mouse wheel scroll speed interactively, with a ruler you can scroll while the dialog is open to preview the change","security-review":"Analyze the changes on your current branch for security vulnerabilities","setup-bedrock":"Configure Amazon Bedrock authentication, region, and model pins through an interactive wizard","setup-vertex":"Configure Google Cloud\'s Agent Platform authentication, project, region, and model pins through an interactive wizard","simplify":"Review the changed code for cleanup opportunities and apply the fixes","stickers":"Order Claude Code stickers","stop":"Stop background sessions and terminals","subtask":"Spawn a forked subagent: a background subagent that inherits the full conversation and works on the task while you keep working","team-onboarding":"Generate a team onboarding guide from your Claude Code usage history","teleport":"Pull a Claude Code on the web session into this terminal: opens a picker, then fetches the branch and conversation","theme":"Choose the color and syntax highlighting theme","tui":"Set the terminal UI renderer and relaunch into it with your conversation intact","ultrareview":"Run a deep, multi-agent code review in a cloud sandbox with ultrareview","upgrade":"Open the upgrade page in your browser to switch to a higher plan tier","usage-credits":"Configure usage credits, or request them from your admin, when you hit a limit","verify":"Confirm a code change does what it should by building your project\'s app, running it, and observing the result, rather than relying on tests or type checks","voice":"Toggle voice dictation, or enable it in a specific mode","web-setup":"Connect your GitHub account to Claude Code on the web using your local gh CLI credentials","workflows":"Open the workflow progress view to watch, pause, resume, or save running and completed workflows","keymap":"Remap TUI shortcuts","vim":"Toggle Vim mode for the composer","setup-default-sandbox":"Set up elevated agent sandbox","sandbox-add-read-dir":"Let sandbox read a directory: /sandbox-add-read-dir [absolute-path]","experimental":"Toggle experimental features","approve":"Approve one retry of a recent auto-review denial","import":{"codex":"Import setup, this project, and recent chats from Claude Code","claude":"Bring configuration from OpenAI Codex or Google Gemini CLI into Claude Code, including instruction files, MCP servers, commands, subagents, and skills"},"archive":"Archive this session and exit","delete":"Permanently delete this session and exit","app":"Continue this session in the Desktop app","side":"Start a side conversation in an ephemeral fork","raw":"Toggle raw scrollback mode for copy-friendly terminal selection","debug-config":"Show config layers and requirement sources for debugging","title":"Configure which items appear in the terminal title","pets":"Choose or hide the terminal pet","apps":"Manage apps","plugins":"Browse plugins","rollout":"Print the rollout file path","ps":"List background terminals","personality":"Choose a communication style for Codex","test-approval":"Test approval request","list-agents":"List the subagents and other Claude Code sessions Claude can message, with the name to use for each"}},"session":{"confirmKill":"End session for \\"{name}\\"?\\n\\nAll message history will be deleted. Log files will be retained.","failedToKill":"Failed to end session","confirmEnd":"End {tool} session?","endWarning":"Ending the session will clear chat history.","running":"Session running","starting":"Starting session","startingEllipsis":"Starting session..."},"status":{"waitingForResponse":"Waiting for response","responseCompleted":"Response completed","thinking":"Thinking...","thinkingStatus":"Thinking","claudeIsThinking":"Claude is thinking..."},"output":{"latest":"Latest output","realtimeUpdate":"Real-time update"},"errors":{"failedToUpdateFavorite":"Failed to update favorite","failedToUpdateStatus":"Failed to update status"},"feedback":{"title":"Feedback & Support","bugReport":"Report a bug","featureRequest":"Request a feature","question":"Ask a question","viewIssues":"View all issues"},"fileTree":{"moveTo":"Move to...","moveDialogTitle":"Select destination","moveConfirm":"Move here","moveSuccess":"Moved successfully","timeAgo":"{time} ago","rootDirectory":"Root","metadata":{"size":"Size","created":"Created","modified":"Modified","settingsLabel":"Metadata display settings","settingsTitle":"Show inline","showSize":"File size","showCreated":"Created date","showModified":"Modified date"},"loading":"Loading files","empty":"No files found","newFile":"New File","newDirectory":"New Directory","noResultsMatching":"No files matching \\"{query}\\"","noResultsContaining":"No files containing \\"{query}\\"","label":"File tree","refreshing":"Refreshing files","refreshLabel":"Refresh file tree","resetViewLabel":"Reset file tree view","loadError":"Failed to load files","loadDirectoryError":"Failed to load directory: {status}","itemCount":"{count} items"},"update":{"available":"A new version is available","latestVersion":"Latest: v{version}","updateCommand":"Update command:","viewRelease":"View Release","dataPreserved":"Your database data will be preserved during the update.","version":"Version","installTypeGlobal":"npm (global)","installTypeLocal":"Local (git pull)","updateNow":"Update now","npxRestartNotice":"This server runs via npx. The update fetches the latest version and restarts the server. Some startup settings (such as the port) may change; if the page does not reconnect on its own, run \\"commandmate status\\" to find where the server is running.","confirmTitle":"Update CommandMate?","confirmDescription":"CommandMate will be updated to v{version}. The server stops, the new version installs, and the server starts again. This takes a few minutes.","confirmButton":"Update","starting":"Starting the update...","updating":"Updating. The server will restart automatically.","updatingHint":"This takes a few minutes. Keep this window open — the page reloads by itself once the new version is ready.","noRestartTitle":"Update installed","noRestartDescription":"This server was not started by \\"commandmate start --daemon\\", so it was left running on the old version. Restart it manually to apply the update.","timeoutTitle":"The update may have failed","timeoutDescription":"The server did not come back within the expected time. Check its state and finish the update manually:","errorTitle":"Could not start the update","errorNotGlobal":"CommandMate is not installed globally, so it cannot update itself.","errorInProgress":"An update is already running.","errorGeneric":"The update could not be started. Run the command manually:","logHint":"Update log: {path}"},"terminal":{"historyLabel":"History","filesLabel":"Files","showHistory":"Show history","hideHistory":"Hide history","showFiles":"Show files","hideFiles":"Hide files","equalizeWidths":"Equal widths","equalizeWidthsHint":"Equalize terminal widths and reset History width","addSplit":"Add split","removeSplit":"Remove split","selectInstance":"Select agent instance for {split}","moreActions":"More actions","searchTerminal":"Search terminal","endSession":"End session","endSessionFor":"End session for {name}"},"todo":{"addPlaceholder":"Add a todo…","add":"Add","empty":"No todos yet.","loading":"Loading…","statusTodo":"Todo","statusDoing":"In progress","statusDone":"Done","cycleStatus":"Status: {status} (click to change)","moveUp":"Move up","moveDown":"Move down","delete":"Delete todo","edit":"Edit todo","editTitle":"Edit todo","contentLabel":"Title","contentPlaceholder":"Todo title","detailLabel":"Detail","detailPlaceholder":"Add notes (optional)…","hasDetail":"Has detail","copyDetail":"Copy detail","save":"Save","cancel":"Cancel","loadError":"Failed to load todos","addError":"Failed to add todo","updateError":"Failed to update todo","deleteError":"Failed to delete todo","reorderError":"Failed to reorder todos"},"htmlPreview":{"interactiveModeConfirm":"Interactive mode executes scripts in the HTML file. Use Safe mode for untrusted HTML files.","title":"HTML Preview: {path}","modeSource":"Source","modePreview":"Preview","modeSplit":"Split","sandboxSafe":"Safe","sandboxInteractive":"Interactive"},"editor":{"saveFailedCloseConfirm":"Save failed. Close anyway?","unsavedCloseConfirm":"You have unsaved changes. Are you sure you want to close?","loading":"Loading...","placeholder":"Start typing...","placeholderMarkdown":"Start typing markdown...","saveSuccess":"File saved successfully","saveError":"Failed to save file","loadError":"Failed to load file","sessionExpired":"Session expired. Please re-login.","autoSaveFailed":"Auto-save failed. Switched to manual save.","unsaved":"Unsaved","auto":"Auto","splitView":"Split view","editorOnly":"Editor only","previewOnly":"Preview only","enterFullscreen":"Enter fullscreen (Ctrl+Shift+F)","exitFullscreen":"Exit fullscreen (ESC)","indent":"Indent (Tab)","outdent":"Outdent (Shift+Tab)","tabMovesFocusOn":"Tab moves focus (Ctrl+M to indent instead)","tabMovesFocusOff":"Tab indents (Ctrl+M to move focus instead)"},"actions":{"copyPath":"Copy path","copyContent":"Copy content","copyFilePath":"Copy file path","copyFileContent":"Copy file content","search":"Search","searchInFile":"Search in file","edit":"Edit","editFile":"Edit file","download":"Download","downloadFile":"Download file","close":"Close","save":"Save","saving":"Saving...","saved":"Saved","prev":"Prev","next":"Next","fullscreen":"Fullscreen","exitFullscreen":"Exit fullscreen","minimize":"Minimize","maximize":"Maximize","retry":"Retry","refresh":"Refresh","resetView":"Reset view"},"fileSearch":{"placeholder":"Search...","prevMatch":"Previous match","nextMatch":"Next match","close":"Close search"},"fileViewer":{"loading":"Loading file...","loadError":"Failed to load file","tabSource":"Source","tabPreview":"Preview","sandboxSafe":"Safe","sandboxInteractive":"Interactive","slideTitle":"{name} - Slide {number}","noSlides":"No slides found in {fileName}","slides":"Slides","editor":"Editor","modeSwitch":"Switch display mode","modeViewer":"Viewer","modeEditor":"Edit","moreActions":"More actions"},"fileTabs":{"unsavedChanges":"Unsaved changes","closeTab":"Close {name}"},"markdownPreview":{"loadingImage":"[loading image...]","editor":"Editor","preview":"Preview","exitFullscreenHint":"Press ESC to exit fullscreen","exitFullscreenHintSwipe":"(or swipe down)","largeFileWarning":"Large file: Performance may be affected."},"mermaid":{"rendering":"Rendering diagram...","loading":"Loading diagram...","errorTitle":"Diagram Error","emptyCode":"Diagram code is empty","renderError":"Failed to render diagram"},"imageViewer":{"loadError":"Failed to load image"},"videoViewer":{"loadError":"Failed to load video","loading":"Loading video...","unsupported":"Your browser does not support the video tag."},"logViewer":{"title":"Log Files","all":"All ({count})","toolCount":"{tool} ({count})","empty":"No log files found","emptyFiltered":"No {tool} log files found","copyTitle":"Copy sanitized log to clipboard","export":"Export","exporting":"Exporting...","copied":"Log copied to clipboard (sanitized)","exportError":"Failed to export log: {error}","searchPlaceholder":"Search in log file...","prevMatch":"Previous match (Shift+Enter)","nextMatch":"Next match (Enter)","noMatches":"No matches found for \\"{query}\\""},"pdfPreview":{"title":"PDF Preview: {path}","loadError":"Could not load the PDF preview.","openInNewTab":"Open PDF in a new tab","download":"Download","downloadPdf":"Download PDF"},"diffViewer":{"badge":"DIFF","close":"Close diff view"},"search":{"searching":"Searching...","placeholder":"Search files...","label":"Search files","clear":"Clear search","mode":"Mode:","modeName":"Name","modeContent":"Content"},"tabs":{"ariaLabel":"Mobile navigation","terminal":"Terminal","history":"History","files":"Files","memo":"Tools","info":"Info","newOutput":"New output available","promptWaiting":"Prompt waiting","updateAvailable":"Update available"},"git":{"uncommittedChanges":"Uncommitted changes","askAi":"Ask AI","askAiTooltip":"Draft the current state into the AI chat (nothing is sent automatically)","advancedOperations":"Advanced operations","remote":"Remote","paneSections":"Git pane sections","tabs":{"status":"Status","changes":"Changes","history":"History","advanced":"Advanced"},"checkout":{"action":"Checkout","ariaLabel":"Checkout branch","noBranches":"No branches","checkoutBranch":"Checkout {name}","checkedOutElsewhere":"Checked out in another worktree: {path}","defaultBadge":"default","confirmTitlePrefix":"Checkout ","confirmTitleSuffix":"?","forceLabel":"Discard uncommitted changes (force) — uncommitted changes will be lost","historyLossWarning":"Switching to another branch may permanently discard the chat history, memos, and schedules linked to this worktree on the next sync.","runningSessionWarning":"Switching to this branch changes the working files a running session is operating on."},"branches":{"title":"Branches","newButton":"+ New","refresh":"Refresh branches","filterLocal":"local","filterRemote":"remote","filterAll":"all","loading":"Loading branches...","empty":"No branches","defaultBadge":"default","deleteBranch":"Delete {name}","delete":"Delete","createTitle":"Create branch","namePlaceholder":"branch name (e.g. feature/123-foo)","nameLabel":"New branch name","baseLabel":"Base branch","currentHead":"(current HEAD)","create":"Create","deleteTitlePrefix":"Delete ","deleteTitleSuffix":"?","forceDeleteLabel":"Force delete (-D) — unmerged commits will be lost"},"changes":{"title":"Changes","refresh":"Refresh changes","loading":"Loading changes...","listHeader":"{title} ({count})","empty":"None","togglePreview":"Toggle diff preview for {path}","showDiff":"Show diff for {path}","diff":"Diff","fileAction":"{action} {path}","loadingPreview":"Loading diff preview...","previewFailed":"Failed to load preview","noDiff":"No diff available","truncated":"… truncated — open full diff","staged":"Staged","unstaged":"Unstaged","untracked":"Untracked","stage":"Stage","unstage":"Unstage","commitMessage":"Commit message","amend":"Amend","commit":"Commit","committing":"Committing...","commitAndPush":"Commit + Push","commitAndPushTooltip":"Commit, then push. If the push fails the commit is already saved — just retry Push."},"history":{"title":"Commit History","refresh":"Refresh commit history","loading":"Loading commit history...","empty":"No commits found","viewDiffFor":"View diff for {hash}","viewDiff":"View diff","hideDiff":"Hide diff","loadingChangedFiles":"Loading changed files...","noChangedFiles":"No changed files","showCommitDiff":"Show commit diff for {path}","changedFiles":"Changed Files","diffLabel":"Diff: {file}","loadingDiff":"Loading diff...","noDiff":"No diff available","diffInFilePanel":"Diff displayed in file panel: {file}"},"currentStatus":{"title":"Current Status","refresh":"Check the remote and refresh (git fetch)","refreshing":"Checking the remote...","loading":"Loading git status...","uncommitted":"uncommitted","aheadTooltip":"commits ahead of upstream as of the last fetch (the live remote may differ)","behindTooltip":"commits behind upstream as of the last fetch (the live remote may differ)","lastFetch":"Last fetch: {relative}","lastFetchNever":"Last fetch: never","lastFetchTooltip":"ahead/behind compares against the remote information from this moment. Use the refresh button to update it.","noUpstreamBadge":"not pushed","noUpstreamTooltip":"This branch has no upstream, so ahead/behind cannot be computed (it has never been pushed)","upstreamGoneBadge":"remote deleted","upstreamGoneTooltip":"The configured upstream has no remote-tracking branch anymore (it was likely deleted on the remote)","detachedBadge":"detached","detachedTooltip":"HEAD does not point to a branch, so ahead/behind cannot be computed","aheadBehindErrorBadge":"unavailable","aheadBehindErrorTooltip":"Could not read ahead/behind (timeout or similar). Use the refresh button to retry."},"danger":{"title":"Danger Zone","resetOpen":"Reset…","revertOpen":"Revert…","forcePushOpen":"Force Push…","selectCommitHint":"Select a commit in Commit History to enable revert / reset-to-commit.","resetTitle":"Reset","resetTargetHead":"HEAD","resetTargetSelectedPrefix":"Selected commit ","resetTargetSelectedHash":"({hash})","resetTargetNoneSelected":"(none selected)","modeSoft":"soft","modeMixed":"mixed","modeHard":"hard","resetHardWarning":"A hard reset permanently discards uncommitted changes, and moving HEAD may also lose commits. This operation cannot be undone.","runningSessionWarning":"This destructive operation will overwrite the working files a running session is editing.","confirmPlaceholder":"Type \\"{branch}\\" to confirm","reset":"Reset","revertTitle":"Revert","revertBodyPrefix":"Revert commit ","revertNoCommit":"No commit (leave staged)","revert":"Revert","forcePushTitle":"Force Push","protectedBranchWarning":"Force pushing to the default branch is not allowed.","forceWithLease":"Use --force-with-lease (recommended — refuses if the remote moved)","forcePush":"Force Push"},"network":{"quickActions":"Quick actions","fetch":"Fetch","pull":"Pull","push":"Push","noUpstreamTooltip":"No upstream — will set upstream on push","pushing":"Pushing","pulling":"Pulling","fetching":"Fetching","progress":"{operation}… {elapsed}s","abort":"Abort","conflicts":"Pull produced conflicts: {files}. Resolve them in the terminal.","authFailedGuidance":"Run push/pull once in the terminal to set up your credentials.","failed":"Git network operation failed"},"stash":{"titlePrefix":"Stash ","count":"({count})","refresh":"Refresh stash list","messagePlaceholder":"Stash message (optional)","includeUntracked":"Include untracked","push":"Stash","loading":"Loading stashes...","empty":"No stashes","apply":"Apply","pop":"Pop","drop":"Drop","dropConfirmSuffix":" will be permanently deleted. This operation cannot be undone."},"aiPrompts":{"branchCreate":"Create branch {name} from {base} and check it out.","branchCreateBaseHead":"the current HEAD","branchDelete":"Delete branch {name}.","branchDeleteForce":"Delete branch {name}. Force-delete it with -D even if it still has unmerged commits.","stashCleanup":"List the old stash entries and suggest which ones are safe to drop.","stashCleanupCurrent":"Current stashes:","stashConflict":"A conflict occurred while running stash pop / apply. Please resolve the conflict and then commit.","reset":"I want to run a {mode} reset onto {target}. Please do it safely.","resetHard":"I want to run a hard reset onto {target}. Please do it safely. A hard reset can discard work in progress. If you need to undo the hard reset afterwards, recover it from git reflog.","revert":"Please revert commit {commit}.","forcePush":"I want to push {branchRef} with force-with-lease. Check the diff against its upstream ({upstream}) first, and push only if it is safe.","forcePushAhead":"I want to push {branchRef} (↑{ahead}) with force-with-lease. Check the diff against its upstream ({upstream}) first, and push only if it is safe.","forcePushCurrentBranch":"the current branch"}},"activityBar":{"toggleSidebar":"Toggle sidebar","label":"Activity Bar","files":"Files","git":"Git","notes":"Notes","schedules":"Schedules","agent":"Agent","timer":"Timer","todo":"ToDo","skills":"Skills","verification":"Verification"},"branchMismatch":{"changedFrom":"Branch changed from","to":"to","dismiss":"Dismiss alert"},"contextMenu":{"label":"File actions","uploadFile":"Upload File","rename":"Rename","move":"Move","delete":"Delete"},"navigation":{"toolbarLabel":"TUI Navigation","caption":"Nav","quitPager":"Quit pager"},"newFileDialog":{"title":"New File","fileNameLabel":"File name","placeholder":"document","create":"Create"},"paneResizer":{"label":"Resize panes. Use {arrows} arrow keys to adjust.","arrowsHorizontal":"left and right","arrowsVertical":"up and down"},"desktopLayout":{"activityPane":"Activity pane","terminalPane":"Terminal pane"},"worktreeStatus":{"notSet":"Not set","ready":"Ready","inProgress":"In Progress","inReview":"In Review","done":"Done"},"card":{"main":"Main","description":"Description","link":"Link","openLink":"Open link in new tab","updated":"Updated {time}"},"detail":{"worktree":"Worktree","repository":"Repository","copyRepositoryPath":"Copy repository path","copyWorktreePath":"Copy worktree path","copyPath":"Copy path","copied":"Copied!","path":"Path","status":"Status","worktreeStatusLabel":"Worktree status","description":"Description","addNotesPlaceholder":"Add notes about this branch...","noDescription":"No description added yet","link":"Link","lastUpdated":"Last Updated","logs":"Logs","hide":"Hide","show":"Show","goBack":"Go back to worktree list","home":"Home","viewInfo":"View worktree information","info":"Info","infoModalTitle":"Worktree Information","loading":"Loading worktree...","loadingInfo":"Loading worktree info...","errorLoading":"Error loading worktree","uploadFile":"Upload file","unknownRepository":"Unknown","loadingEditor":"Loading editor...","agentInstanceSelection":"Agent Instance Selection","statusPill":"{label}: {status}","subTabMessage":"Message","subTabGit":"Git","statusPillWithModel":"{label}: {status} — model {model}"},"detailStatus":{"idle":"Idle - No active session","ready":"Ready - Waiting for input","running":"Running - Processing","waiting":"Waiting - User input required"},"agentModel":{"label":"Model","modelLabel":"Model: {model}"},"nextAction":{"start":"Start","sendMessage":"Send message","approveReject":"Approve / Reject","replyToPrompt":"Reply to prompt","checkStalled":"Check stalled","running":"Running..."},"awaitingInstruction":{"badge":"Ready for work","label":"The agent finished its turn and is waiting for your next instruction"},"verification":{"title":"Verification","refresh":"Refresh","loading":"Loading verification data…","loadError":"Could not load verification data: {message}","contract":{"heading":"Execution contract","empty":"No contract on this branch.\\nCreate one with `commandmate send --contract <file>`, or the `cmate-task-contract` Skill.","scopeAllow":"scope.allow","scopeDeny":"scope.deny","gates":"verify.gates","gatesAll":"all declared gates","autoYes":"autoYes.mode","autoYesUnset":"unset (keeps the existing behavior)","file":"contract file","updated":"updated"},"runs":{"heading":"Verification runs","empty":"No verification run yet.\\nPress Re-verify, or run `commandmate verify <worktree-id>`.","rerun":"Re-verify","rerunPending":"Starting…","rerunConflict":"A verification run is already in progress (run {runId}).","rerunConflictUnknown":"A verification run is already in progress.","rerunError":"Could not start verification: {message}","select":"Show gates for run {runId} (RESULT {verdict})","runLabel":"run {runId}","trigger":"trigger={trigger}"},"gates":{"heading":"Gates — run {runId}","empty":"This run recorded no gates.","loading":"Loading gates…","notFound":"That verification run is no longer available.","loadError":"Could not load the verification run: {message}","exitCode":"exit={code}","duration":"duration={duration}","contractSource":"[contract]","showLog":"Show log tail","hideLog":"Hide log tail","logOmitted":"… (+{count} more lines; run `commandmate verify show {runId}` for the full log)","noLog":"No log output recorded."},"runStatus":{"running":"running","passed":"passed","failed":"failed","not_started":"not_started","error":"error","cancelled":"cancelled"},"gateStatus":{"running":"RUNNING","passed":"PASS","failed":"FAIL","timeout":"TIMEOUT","skipped":"SKIP","error":"ERROR"},"chip":{"taskReason":"Task “{title}”: {status}","resultBadge":"RESULT {verdict}","runReason":"Last verification: RESULT {verdict} (run {runId})","noRun":"No verification run yet","failingGates":"Gates that did not pass: {gates}","gatesPassed":"All {count} gates passed","openHint":"Open the Verification pane","dash":"—"}},"task":{"status":{"pending":"pending","running":"running","waiting_input":"waiting_input","verifying":"verifying","succeeded":"succeeded","failed":"failed","not_started":"not_started","cancelled":"cancelled"}}}')}};
|
|
1
|
+
"use strict";exports.id=2119,exports.ids=[2119],exports.modules={72119:a=>{a.exports=JSON.parse('{"agentStatus":{"moreAgents":"{count} more agents","overflowTrigger":"More agents"},"toc":{"title":"Contents","show":"Show table of contents","hide":"Hide table of contents","empty":"No headings"},"composer":{"placeholder":"Type your message…","commandsHint":"commands","newlineHint":"newline","removeAttachment":"Remove attachment","showSlashCommands":"Show slash commands","attachImage":"Attach image","sendMessage":"Send message"},"interrupt":{"stopProcessing":"Stop processing"},"history":{"title":"Message History","regionLabel":"Message history","loading":"Loading messages","empty":"No messages yet","show":"Show","displayLimit":"History display limit","showArchived":"Show archived","showUserOnly":"Show user messages only","showAllMessages":"Show all messages","openSearch":"Open search","closeSearch":"Close search","copied":"Copied to clipboard","copyFailed":"Failed to copy","search":{"regionLabel":"Search history text","placeholder":"Search...","keywordLabel":"Search keyword","prev":"Previous result","next":"Next result","close":"Close search bar","countAtMax":"{current}/{max}+"}},"conversation":{"waitingForResponse":"Waiting for response...","you":"You","assistant":"Assistant","sending":"Sending…","failedToSend":"Failed to send","retrySending":"Retry sending message","discard":"Discard","discardMessage":"Discard message","insertToMessage":"Insert to message","copy":"Copy","copyMessage":"Copy message","collapse":"Collapse","expand":"Expand","collapseMessage":"Collapse message","expandMessage":"Expand message","systemMessage":"System Message","systemMessageLabel":"System message","openFile":"Open file: {path}","conversationLabel":"Conversation: {preview}"},"messages":{"loading":"Loading messages...","empty":"No messages yet","you":"You","copy":"Copy","copyMessage":"Copy message","viewLogFile":"View log file →"},"slashCommands":{"title":"Commands","searchPlaceholder":"Search commands...","enterCustomCommand":"Enter custom command...","selectHint":"select","closeHint":"close","empty":"No commands available","catalogStale":{"hint":"Your CLI is newer than this list. Add missing commands in ~/.commandmate/slash-commands/."},"sourceBadge":{"userCatalog":"Custom"},"descriptions":{"clear":"Clear conversation history","compact":"Compact context to reduce token usage","resume":"Resume previous conversation","rewind":"Rewind to previous conversation state","config":"Open configuration settings","model":"Switch AI model","permissions":"View or update tool permissions","status":"Check session status","context":"Show context window usage","review":"Review code changes","help":"Show all available commands","doctor":"Check installation health","export":"Export conversation history","focus":"Toggle focus mode","effort":"Adjust model thinking effort (high/medium/low)","fast":"Switch to fast response mode","loop":"Run a prompt repeatedly while the session stays open","add-dir":"Add a working directory for file access during the session","terminal-setup":"Configure terminal keybindings for Shift+Enter and other shortcuts","statusline":"Configure the status line display","usage":"Show session cost, plan usage limits, and activity stats","tasks":"View and manage background tasks","memory":{"claude":"Edit CLAUDE.md memory files and manage auto-memory","copilot":"Show memory status, or enable and disable memory across sessions"},"new":"Start a new conversation","logout":{"codex":"Sign out from Codex","claude":"Sign out of your Anthropic account","copilot":"Log out of the current OAuth session"},"quit":"Exit Codex CLI","diff":"Show Git diff (including untracked files)","mention":"Attach file/folder for next interaction","mcp":"Manage MCP servers and available tools","init":{"codex":"Generate AGENTS.md template in current directory","claude":"Generate a CLAUDE.md guide for the repository","copilot":"Initialize Copilot instructions for this repository","opencode":"Run guided AGENTS.md setup"},"feedback":{"codex":"Send feedback to Codex team","claude":"Send feedback about Claude Code","copilot":"Provide feedback about the CLI"},"plan":"Toggle plan mode","goal":"Set goal for current session","agent":{"copilot":"Browse and select an agent"},"subagents":"Manage subagents","fork":"Fork current session","memories":"Manage Codex memories","skills":{"codex":"Manage Codex skills","claude":"Manage Claude Code skills","copilot":"Manage skills for enhanced capabilities","opencode":"Browse and run available skills"},"hooks":"View or manage hook configurations","sessions":"Browse conversation history","connect":"Connect a provider","exit":{"opencode":"Exit OpenCode TUI","claude":"Exit the CLI","codex":"Exit the CLI","copilot":"Exit the CLI"},"models":"Switch AI model","agents":{"opencode":"List and manage available agents","claude":"Show a reminder to ask Claude to create or manage subagents, or to edit .claude/agents/ directly","codex":"view and switch between all active agent sessions"},"themes":"Change TUI theme","editor":"Open editor for long messages","advisor":"Enable or disable the advisor tool, which consults a second model for guidance at key moments during a task","autocompact":"Set the auto-compact window: how full the context window gets before Claude Code compacts automatically","autofix-pr":"Spawn a Claude Code on the web session that watches the current branch\'s PR and pushes fixes when CI fails or reviewers leave comments","background":"Detach the current session to run as a background agent and free this terminal","batch":"Orchestrate large-scale changes across a codebase in parallel","branch":"Create a branch of the current conversation at this point, so you can try a different direction without losing the conversation as it stands","btw":"Ask a quick side question in an ephemeral fork, without adding it to the conversation","bug":"Report a bug or share your conversation","cd":{"claude":"Move this session to a new working directory","codex":"change the current working directory"},"chrome":"Configure Claude in Chrome settings","claude-api":"Load Claude API reference material for your project\'s language (Python, TypeScript, Java, Go, Ruby, C#, PHP, or cURL) and Managed Agents reference","code-review":"Review the current diff for correctness bugs and cleanup opportunities","color":"Set the prompt bar color for the current session","copy":"Copy the last response to the clipboard as markdown","dataviz":"Design guidance for charts, graphs, and dashboards","debug":{"claude":"Enable debug logging for the current session and troubleshoot issues by reading the session debug log","opencode":"View debug information"},"deep-research":"Fan out web searches on a question, fetch and cross-check sources, and synthesize a cited report","design-login":"Authorize design-system access for /design-sync with your claude.ai account","design-sync":"Convert your repo\'s React design system and upload it to Claude Design, so designs it produces use your real components","desktop":"Continue the current session in the Claude Code Desktop app","fewer-permission-prompts":"Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts","heapdump":"Write a JavaScript heap snapshot and a memory breakdown to ~/Desktop, or your home directory on Linux without a Desktop folder, for diagnosing high memory usage","ide":"Manage IDE integration: status, current selection, open files, and other editor context","insights":"Generate a report analyzing your Claude Code sessions, including project areas, interaction patterns, and friction points","install-github-app":"Install the Claude GitHub App for a repository, with an optional step to set up GitHub Actions workflows and secrets","install-slack-app":"Install the Claude Slack app","keybindings":"Open your keyboard shortcuts file","login":{"claude":"Sign in to your Anthropic account","copilot":"Log in to Copilot"},"mobile":"Show QR code to download the Claude mobile app","passes":"Share a free week of Claude Code with friends","plugin":{"claude":"Manage Claude Code plugins","copilot":"Manage plugins and plugin marketplaces"},"powerup":"Discover Claude Code features through quick interactive lessons with animated demos","privacy-settings":"View and update your privacy settings","radio":"Open Claude FM lo-fi radio in your browser","recap":"Generate a one-line summary of the current session on demand","release-notes":"View the changelog in an interactive version picker","reload-plugins":"Reload all active plugins to apply pending changes without restarting","reload-skills":"Re-scan skill and command directories so skills added or changed on disk during the session become available without restarting","remote-control":"Make this session available for Remote Control from claude.ai","remote-env":"Choose the default environment for cloud agents","rename":"Rename the current session or thread","run":"Launch and drive your project\'s app to see a change working, not only passing tests","run-skill-generator":"Teach /run and /verify how to build, launch, and drive your project\'s app from a clean environment by writing a per-project skill","sandbox":"Toggle sandbox mode","scroll-speed":"Adjust mouse wheel scroll speed interactively, with a ruler you can scroll while the dialog is open to preview the change","security-review":"Analyze the changes on your current branch for security vulnerabilities","setup-bedrock":"Configure Amazon Bedrock authentication, region, and model pins through an interactive wizard","setup-vertex":"Configure Google Cloud\'s Agent Platform authentication, project, region, and model pins through an interactive wizard","simplify":"Review the changed code for cleanup opportunities and apply the fixes","stickers":"Order Claude Code stickers","stop":"Stop background sessions and terminals","subtask":"Spawn a forked subagent: a background subagent that inherits the full conversation and works on the task while you keep working","team-onboarding":"Generate a team onboarding guide from your Claude Code usage history","teleport":"Pull a Claude Code on the web session into this terminal: opens a picker, then fetches the branch and conversation","theme":"Choose the color and syntax highlighting theme","tui":"Set the terminal UI renderer and relaunch into it with your conversation intact","ultrareview":"Run a deep, multi-agent code review in a cloud sandbox with ultrareview","upgrade":"Open the upgrade page in your browser to switch to a higher plan tier","usage-credits":"Configure usage credits, or request them from your admin, when you hit a limit","verify":"Confirm a code change does what it should by building your project\'s app, running it, and observing the result, rather than relying on tests or type checks","voice":"Toggle voice dictation, or enable it in a specific mode","web-setup":"Connect your GitHub account to Claude Code on the web using your local gh CLI credentials","workflows":"Open the workflow progress view to watch, pause, resume, or save running and completed workflows","keymap":"Remap TUI shortcuts","vim":"Toggle Vim mode for the composer","setup-default-sandbox":"Set up elevated agent sandbox","sandbox-add-read-dir":"Let sandbox read a directory: /sandbox-add-read-dir [absolute-path]","experimental":"Toggle experimental features","approve":"Approve one retry of a recent auto-review denial","import":{"codex":"Import setup, this project, and recent chats from Claude Code","claude":"Bring configuration from OpenAI Codex or Google Gemini CLI into Claude Code, including instruction files, MCP servers, commands, subagents, and skills"},"archive":"Archive this session and exit","delete":"Permanently delete this session and exit","app":{"codex":"Continue this session in the Desktop app","copilot":"Open the GitHub Copilot desktop app"},"side":"Start a side conversation in an ephemeral fork","raw":"Toggle raw scrollback mode for copy-friendly terminal selection","debug-config":"Show config layers and requirement sources for debugging","title":"Configure which items appear in the terminal title","pets":"Choose or hide the terminal pet","apps":"Manage apps","plugins":"Browse plugins","rollout":"Print the rollout file path","ps":"List background terminals","personality":"Choose a communication style for Codex","test-approval":"Test approval request","list-agents":"List the subagents and other Claude Code sessions Claude can message, with the name to use for each","allow-all":"Enable all tool, path, and URL permissions","ask":"Ask a quick side question without adding to conversation history","autopilot":"Toggle autopilot mode","changelog":"Display the changelog for CLI versions","chronicle":"Show session history tools and insights","cwd":"Change the working directory, or show the current one","delegate":"Send this session to GitHub to create a pull request","diagnose":"Analyze the current session log","env":"Show loaded environment details","fleet":"Enable fleet mode for parallel subagent execution","footer":"Configure status line items","instructions":"View and toggle custom instruction files","keep-alive":"Manage keep-alive mode, which prevents system sleep","limits":"View or edit session limits","list-dirs":"Display all allowed directories","lsp":"Manage language server configuration","pr":"Operate on pull requests for the current branch","refine":"Rewrite a rough prompt into a clear one for review","remote":"Toggle remote control from GitHub web and mobile","research":"Run a deep research investigation","reset-allowed-tools":"Reset the list of allowed tools","restart":"Restart the CLI, preserving the current session","rubber-duck":"Get an independent critique of the current work","search":"Search the conversation timeline","session":"View and manage sessions","settings":"Open the settings UI, or show and set a single value","share":"Share the session to a markdown file or a GitHub gist","undo":"Rewind the last turn and revert file changes","update":"Update the CLI to the latest version","user":"Manage the GitHub user list","version":"Display version information","mcps":"Toggle MCP servers","move":"Move to another project directory","variants":"Switch the model variant","pwd":"show the current working directory","artifacts":"List the artifacts you own or that are shared with you, then attach one to the session, open it in your browser, or copy its link","auto-mode-setup":"Draft autoMode.environment entries from your project and recent sessions, then review the draft and save it to your user settings"}},"session":{"confirmKill":"End session for \\"{name}\\"?\\n\\nAll message history will be deleted. Log files will be retained.","failedToKill":"Failed to end session","confirmEnd":"End {tool} session?","endWarning":"Ending the session will clear chat history.","running":"Session running","starting":"Starting session","startingEllipsis":"Starting session..."},"status":{"waitingForResponse":"Waiting for response","responseCompleted":"Response completed","thinking":"Thinking...","thinkingStatus":"Thinking","agentIsThinking":"{toolName} is thinking..."},"output":{"latest":"Latest output","realtimeUpdate":"Real-time update"},"errors":{"failedToUpdateFavorite":"Failed to update favorite","failedToUpdateStatus":"Failed to update status"},"feedback":{"title":"Feedback & Support","bugReport":"Report a bug","featureRequest":"Request a feature","question":"Ask a question","viewIssues":"View all issues"},"fileTree":{"moveTo":"Move to...","moveDialogTitle":"Select destination","moveConfirm":"Move here","moveSuccess":"Moved successfully","timeAgo":"{time} ago","rootDirectory":"Root","metadata":{"size":"Size","created":"Created","modified":"Modified","settingsLabel":"Metadata display settings","settingsTitle":"Show inline","showSize":"File size","showCreated":"Created date","showModified":"Modified date"},"loading":"Loading files","empty":"No files found","newFile":"New File","newDirectory":"New Directory","noResultsMatching":"No files matching \\"{query}\\"","noResultsContaining":"No files containing \\"{query}\\"","label":"File tree","refreshing":"Refreshing files","refreshLabel":"Refresh file tree","resetViewLabel":"Reset file tree view","loadError":"Failed to load files","loadDirectoryError":"Failed to load directory: {status}","itemCount":"{count} items"},"update":{"available":"A new version is available","latestVersion":"Latest: v{version}","updateCommand":"Update command:","viewRelease":"View Release","dataPreserved":"Your database data will be preserved during the update.","version":"Version","installTypeGlobal":"npm (global)","installTypeLocal":"Local (git pull)","updateNow":"Update now","npxRestartNotice":"This server runs via npx. The update fetches the latest version and restarts the server. Some startup settings (such as the port) may change; if the page does not reconnect on its own, run \\"commandmate status\\" to find where the server is running.","confirmTitle":"Update CommandMate?","confirmDescription":"CommandMate will be updated to v{version}. The server stops, the new version installs, and the server starts again. This takes a few minutes.","confirmButton":"Update","starting":"Starting the update...","updating":"Updating. The server will restart automatically.","updatingHint":"This takes a few minutes. Keep this window open — the page reloads by itself once the new version is ready.","noRestartTitle":"Update installed","noRestartDescription":"This server was not started by \\"commandmate start --daemon\\", so it was left running on the old version. Restart it manually to apply the update.","timeoutTitle":"The update may have failed","timeoutDescription":"The server did not come back within the expected time. Check its state and finish the update manually:","errorTitle":"Could not start the update","errorNotGlobal":"CommandMate is not installed globally, so it cannot update itself.","errorInProgress":"An update is already running.","errorGeneric":"The update could not be started. Run the command manually:","logHint":"Update log: {path}"},"terminal":{"historyLabel":"History","filesLabel":"Files","showHistory":"Show history","hideHistory":"Hide history","showFiles":"Show files","hideFiles":"Hide files","equalizeWidths":"Equal widths","equalizeWidthsHint":"Equalize terminal widths and reset History width","addSplit":"Add split","removeSplit":"Remove split","selectInstance":"Select agent instance for {split}","moreActions":"More actions","searchTerminal":"Search terminal","endSession":"End session","endSessionFor":"End session for {name}"},"unsentComposer":{"regionLabel":"Unsent input","label":"Unsent input:","run":"Run","clear":"Clear"},"todo":{"addPlaceholder":"Add a todo…","add":"Add","empty":"No todos yet.","loading":"Loading…","statusTodo":"Todo","statusDoing":"In progress","statusDone":"Done","cycleStatus":"Status: {status} (click to change)","moveUp":"Move up","moveDown":"Move down","delete":"Delete todo","edit":"Edit todo","editTitle":"Edit todo","contentLabel":"Title","contentPlaceholder":"Todo title","detailLabel":"Detail","detailPlaceholder":"Add notes (optional)…","hasDetail":"Has detail","copyDetail":"Copy detail","save":"Save","cancel":"Cancel","loadError":"Failed to load todos","addError":"Failed to add todo","updateError":"Failed to update todo","deleteError":"Failed to delete todo","reorderError":"Failed to reorder todos"},"htmlPreview":{"interactiveModeConfirm":"Interactive mode executes scripts in the HTML file. Use Safe mode for untrusted HTML files.","title":"HTML Preview: {path}","modeSource":"Source","modePreview":"Preview","modeSplit":"Split","sandboxSafe":"Safe","sandboxInteractive":"Interactive"},"editor":{"saveFailedCloseConfirm":"Save failed. Close anyway?","unsavedCloseConfirm":"You have unsaved changes. Are you sure you want to close?","loading":"Loading...","placeholder":"Start typing...","placeholderMarkdown":"Start typing markdown...","saveSuccess":"File saved successfully","saveError":"Failed to save file","loadError":"Failed to load file","sessionExpired":"Session expired. Please re-login.","autoSaveFailed":"Auto-save failed. Switched to manual save.","unsaved":"Unsaved","auto":"Auto","splitView":"Split view","editorOnly":"Editor only","previewOnly":"Preview only","enterFullscreen":"Enter fullscreen (Ctrl+Shift+F)","exitFullscreen":"Exit fullscreen (ESC)","indent":"Indent (Tab)","outdent":"Outdent (Shift+Tab)","tabMovesFocusOn":"Tab moves focus (Ctrl+M to indent instead)","tabMovesFocusOff":"Tab indents (Ctrl+M to move focus instead)"},"actions":{"copyPath":"Copy path","copyContent":"Copy content","copyFilePath":"Copy file path","copyFileContent":"Copy file content","search":"Search","searchInFile":"Search in file","edit":"Edit","editFile":"Edit file","download":"Download","downloadFile":"Download file","close":"Close","save":"Save","saving":"Saving...","saved":"Saved","prev":"Prev","next":"Next","fullscreen":"Fullscreen","exitFullscreen":"Exit fullscreen","minimize":"Minimize","maximize":"Maximize","retry":"Retry","refresh":"Refresh","resetView":"Reset view"},"fileSearch":{"placeholder":"Search...","prevMatch":"Previous match","nextMatch":"Next match","close":"Close search"},"fileViewer":{"loading":"Loading file...","loadError":"Failed to load file","tabSource":"Source","tabPreview":"Preview","sandboxSafe":"Safe","sandboxInteractive":"Interactive","slideTitle":"{name} - Slide {number}","noSlides":"No slides found in {fileName}","slides":"Slides","editor":"Editor","modeSwitch":"Switch display mode","modeViewer":"Viewer","modeEditor":"Edit","moreActions":"More actions"},"fileTabs":{"unsavedChanges":"Unsaved changes","closeTab":"Close {name}"},"markdownPreview":{"loadingImage":"[loading image...]","editor":"Editor","preview":"Preview","exitFullscreenHint":"Press ESC to exit fullscreen","exitFullscreenHintSwipe":"(or swipe down)","largeFileWarning":"Large file: Performance may be affected."},"mermaid":{"rendering":"Rendering diagram...","loading":"Loading diagram...","errorTitle":"Diagram Error","emptyCode":"Diagram code is empty","renderError":"Failed to render diagram"},"imageViewer":{"loadError":"Failed to load image"},"videoViewer":{"loadError":"Failed to load video","loading":"Loading video...","unsupported":"Your browser does not support the video tag."},"logViewer":{"title":"Log Files","all":"All ({count})","toolCount":"{tool} ({count})","empty":"No log files found","emptyFiltered":"No {tool} log files found","copyTitle":"Copy sanitized log to clipboard","export":"Export","exporting":"Exporting...","copied":"Log copied to clipboard (sanitized)","exportError":"Failed to export log: {error}","searchPlaceholder":"Search in log file...","prevMatch":"Previous match (Shift+Enter)","nextMatch":"Next match (Enter)","noMatches":"No matches found for \\"{query}\\""},"pdfPreview":{"title":"PDF Preview: {path}","loadError":"Could not load the PDF preview.","openInNewTab":"Open PDF in a new tab","download":"Download","downloadPdf":"Download PDF"},"diffViewer":{"badge":"DIFF","close":"Close diff view"},"search":{"searching":"Searching...","placeholder":"Search files...","label":"Search files","clear":"Clear search","mode":"Mode:","modeName":"Name","modeContent":"Content"},"tabs":{"ariaLabel":"Mobile navigation","terminal":"Terminal","history":"History","files":"Files","memo":"Tools","info":"Info","newOutput":"New output available","promptWaiting":"Prompt waiting","updateAvailable":"Update available"},"git":{"uncommittedChanges":"Uncommitted changes","askAi":"Ask AI","askAiTooltip":"Draft the current state into the AI chat (nothing is sent automatically)","advancedOperations":"Advanced operations","remote":"Remote","paneSections":"Git pane sections","tabs":{"status":"Status","changes":"Changes","history":"History","advanced":"Advanced"},"checkout":{"action":"Checkout","ariaLabel":"Checkout branch","noBranches":"No branches","checkoutBranch":"Checkout {name}","checkedOutElsewhere":"Checked out in another worktree: {path}","defaultBadge":"default","confirmTitlePrefix":"Checkout ","confirmTitleSuffix":"?","forceLabel":"Discard uncommitted changes (force) — uncommitted changes will be lost","historyLossWarning":"Switching to another branch may permanently discard the chat history, memos, and schedules linked to this worktree on the next sync.","runningSessionWarning":"Switching to this branch changes the working files a running session is operating on."},"branches":{"title":"Branches","newButton":"+ New","refresh":"Refresh branches","filterLocal":"local","filterRemote":"remote","filterAll":"all","loading":"Loading branches...","empty":"No branches","defaultBadge":"default","deleteBranch":"Delete {name}","delete":"Delete","createTitle":"Create branch","namePlaceholder":"branch name (e.g. feature/123-foo)","nameLabel":"New branch name","baseLabel":"Base branch","currentHead":"(current HEAD)","create":"Create","deleteTitlePrefix":"Delete ","deleteTitleSuffix":"?","forceDeleteLabel":"Force delete (-D) — unmerged commits will be lost"},"changes":{"title":"Changes","refresh":"Refresh changes","loading":"Loading changes...","listHeader":"{title} ({count})","empty":"None","togglePreview":"Toggle diff preview for {path}","showDiff":"Show diff for {path}","diff":"Diff","fileAction":"{action} {path}","loadingPreview":"Loading diff preview...","previewFailed":"Failed to load preview","noDiff":"No diff available","truncated":"… truncated — open full diff","staged":"Staged","unstaged":"Unstaged","untracked":"Untracked","stage":"Stage","unstage":"Unstage","commitMessage":"Commit message","amend":"Amend","commit":"Commit","committing":"Committing...","commitAndPush":"Commit + Push","commitAndPushTooltip":"Commit, then push. If the push fails the commit is already saved — just retry Push."},"history":{"title":"Commit History","refresh":"Refresh commit history","loading":"Loading commit history...","empty":"No commits found","viewDiffFor":"View diff for {hash}","viewDiff":"View diff","hideDiff":"Hide diff","loadingChangedFiles":"Loading changed files...","noChangedFiles":"No changed files","showCommitDiff":"Show commit diff for {path}","changedFiles":"Changed Files","diffLabel":"Diff: {file}","loadingDiff":"Loading diff...","noDiff":"No diff available","diffInFilePanel":"Diff displayed in file panel: {file}"},"currentStatus":{"title":"Current Status","refresh":"Check the remote and refresh (git fetch)","refreshing":"Checking the remote...","loading":"Loading git status...","uncommitted":"uncommitted","aheadTooltip":"commits ahead of upstream as of the last fetch (the live remote may differ)","behindTooltip":"commits behind upstream as of the last fetch (the live remote may differ)","lastFetch":"Last fetch: {relative}","lastFetchNever":"Last fetch: never","lastFetchTooltip":"ahead/behind compares against the remote information from this moment. Use the refresh button to update it.","noUpstreamBadge":"not pushed","noUpstreamTooltip":"This branch has no upstream, so ahead/behind cannot be computed (it has never been pushed)","upstreamGoneBadge":"remote deleted","upstreamGoneTooltip":"The configured upstream has no remote-tracking branch anymore (it was likely deleted on the remote)","detachedBadge":"detached","detachedTooltip":"HEAD does not point to a branch, so ahead/behind cannot be computed","aheadBehindErrorBadge":"unavailable","aheadBehindErrorTooltip":"Could not read ahead/behind (timeout or similar). Use the refresh button to retry."},"danger":{"title":"Danger Zone","resetOpen":"Reset…","revertOpen":"Revert…","forcePushOpen":"Force Push…","selectCommitHint":"Select a commit in Commit History to enable revert / reset-to-commit.","resetTitle":"Reset","resetTargetHead":"HEAD","resetTargetSelectedPrefix":"Selected commit ","resetTargetSelectedHash":"({hash})","resetTargetNoneSelected":"(none selected)","modeSoft":"soft","modeMixed":"mixed","modeHard":"hard","resetHardWarning":"A hard reset permanently discards uncommitted changes, and moving HEAD may also lose commits. This operation cannot be undone.","runningSessionWarning":"This destructive operation will overwrite the working files a running session is editing.","confirmPlaceholder":"Type \\"{branch}\\" to confirm","reset":"Reset","revertTitle":"Revert","revertBodyPrefix":"Revert commit ","revertNoCommit":"No commit (leave staged)","revert":"Revert","forcePushTitle":"Force Push","protectedBranchWarning":"Force pushing to the default branch is not allowed.","forceWithLease":"Use --force-with-lease (recommended — refuses if the remote moved)","forcePush":"Force Push"},"network":{"quickActions":"Quick actions","fetch":"Fetch","pull":"Pull","push":"Push","noUpstreamTooltip":"No upstream — will set upstream on push","pushing":"Pushing","pulling":"Pulling","fetching":"Fetching","progress":"{operation}… {elapsed}s","abort":"Abort","conflicts":"Pull produced conflicts: {files}. Resolve them in the terminal.","authFailedGuidance":"Run push/pull once in the terminal to set up your credentials.","failed":"Git network operation failed"},"stash":{"titlePrefix":"Stash ","count":"({count})","refresh":"Refresh stash list","messagePlaceholder":"Stash message (optional)","includeUntracked":"Include untracked","push":"Stash","loading":"Loading stashes...","empty":"No stashes","apply":"Apply","pop":"Pop","drop":"Drop","dropConfirmSuffix":" will be permanently deleted. This operation cannot be undone."},"aiPrompts":{"branchCreate":"Create branch {name} from {base} and check it out.","branchCreateBaseHead":"the current HEAD","branchDelete":"Delete branch {name}.","branchDeleteForce":"Delete branch {name}. Force-delete it with -D even if it still has unmerged commits.","stashCleanup":"List the old stash entries and suggest which ones are safe to drop.","stashCleanupCurrent":"Current stashes:","stashConflict":"A conflict occurred while running stash pop / apply. Please resolve the conflict and then commit.","reset":"I want to run a {mode} reset onto {target}. Please do it safely.","resetHard":"I want to run a hard reset onto {target}. Please do it safely. A hard reset can discard work in progress. If you need to undo the hard reset afterwards, recover it from git reflog.","revert":"Please revert commit {commit}.","forcePush":"I want to push {branchRef} with force-with-lease. Check the diff against its upstream ({upstream}) first, and push only if it is safe.","forcePushAhead":"I want to push {branchRef} (↑{ahead}) with force-with-lease. Check the diff against its upstream ({upstream}) first, and push only if it is safe.","forcePushCurrentBranch":"the current branch"}},"activityBar":{"toggleSidebar":"Toggle sidebar","label":"Activity Bar","files":"Files","git":"Git","notes":"Notes","schedules":"Schedules","agent":"Agent","timer":"Timer","todo":"ToDo","skills":"Skills","verification":"Verification","env":"Env"},"branchMismatch":{"changedFrom":"Branch changed from","to":"to","dismiss":"Dismiss alert"},"contextMenu":{"label":"File actions","uploadFile":"Upload File","rename":"Rename","move":"Move","delete":"Delete"},"navigation":{"toolbarLabel":"TUI Navigation","caption":"Nav","quitPager":"Quit pager"},"newFileDialog":{"title":"New File","fileNameLabel":"File name","placeholder":"document","create":"Create"},"paneResizer":{"label":"Resize panes. Use {arrows} arrow keys to adjust.","arrowsHorizontal":"left and right","arrowsVertical":"up and down"},"desktopLayout":{"activityPane":"Activity pane","terminalPane":"Terminal pane"},"worktreeStatus":{"notSet":"Not set","ready":"Ready","inProgress":"In Progress","inReview":"In Review","done":"Done"},"card":{"main":"Main","description":"Description","link":"Link","openLink":"Open link in new tab","updated":"Updated {time}"},"detail":{"worktree":"Worktree","repository":"Repository","copyRepositoryPath":"Copy repository path","copyWorktreePath":"Copy worktree path","copyPath":"Copy path","copied":"Copied!","path":"Path","status":"Status","worktreeStatusLabel":"Worktree status","description":"Description","addNotesPlaceholder":"Add notes about this branch...","noDescription":"No description added yet","link":"Link","lastUpdated":"Last Updated","logs":"Logs","hide":"Hide","show":"Show","goBack":"Go back to worktree list","home":"Home","viewInfo":"View worktree information","info":"Info","infoModalTitle":"Worktree Information","loading":"Loading worktree...","loadingInfo":"Loading worktree info...","errorLoading":"Error loading worktree","uploadFile":"Upload file","unknownRepository":"Unknown","loadingEditor":"Loading editor...","agentInstanceSelection":"Agent Instance Selection","statusPill":"{label}: {status}","subTabMessage":"Message","subTabGit":"Git","statusPillWithModel":"{label}: {status} — model {model}"},"detailStatus":{"idle":"Idle - No active session","ready":"Ready - Waiting for input","running":"Running - Processing","waiting":"Waiting - User input required"},"agentModel":{"label":"Model","modelLabel":"Model: {model}"},"nextAction":{"start":"Start","sendMessage":"Send message","approveReject":"Approve / Reject","replyToPrompt":"Reply to prompt","checkStalled":"Check stalled","running":"Running..."},"awaitingInstruction":{"badge":"Ready for work","label":"The agent finished its turn and is waiting for your next instruction"},"verification":{"title":"Verification","refresh":"Refresh","loading":"Loading verification data…","loadError":"Could not load verification data: {message}","contract":{"heading":"Execution contract","empty":"No contract on this branch.\\nCreate one with `commandmate send --contract <file>`, or the `cmate-task-contract` Skill.","scopeAllow":"scope.allow","scopeDeny":"scope.deny","gates":"verify.gates","gatesAll":"all declared gates","autoYes":"autoYes.mode","autoYesUnset":"unset (keeps the existing behavior)","file":"contract file","updated":"updated"},"runs":{"heading":"Verification runs","empty":"No verification run yet.\\nPress Re-verify, or run `commandmate verify <worktree-id>`.","rerun":"Re-verify","rerunPending":"Starting…","rerunConflict":"A verification run is already in progress (run {runId}).","rerunConflictUnknown":"A verification run is already in progress.","rerunError":"Could not start verification: {message}","select":"Show gates for run {runId} (RESULT {verdict})","runLabel":"run {runId}","trigger":"trigger={trigger}"},"gates":{"heading":"Gates — run {runId}","empty":"This run recorded no gates.","loading":"Loading gates…","notFound":"That verification run is no longer available.","loadError":"Could not load the verification run: {message}","exitCode":"exit={code}","duration":"duration={duration}","contractSource":"[contract]","showLog":"Show log tail","hideLog":"Hide log tail","logOmitted":"… (+{count} more lines; run `commandmate verify show {runId}` for the full log)","noLog":"No log output recorded."},"runStatus":{"running":"running","passed":"passed","failed":"failed","not_started":"not_started","error":"error","cancelled":"cancelled"},"gateStatus":{"running":"RUNNING","passed":"PASS","failed":"FAIL","timeout":"TIMEOUT","skipped":"SKIP","error":"ERROR"},"chip":{"taskReason":"Task “{title}”: {status}","resultBadge":"RESULT {verdict}","runReason":"Last verification: RESULT {verdict} (run {runId})","noRun":"No verification run yet","failingGates":"Gates that did not pass: {gates}","gatesPassed":"All {count} gates passed","openHint":"Open the Verification pane","dash":"—"}},"task":{"status":{"pending":"pending","running":"running","waiting_input":"waiting_input","verifying":"verifying","succeeded":"succeeded","failed":"failed","not_started":"not_started","cancelled":"cancelled"}},"envManager":{"title":"Env Manager","description":"View and edit this worktree\'s environment files. Values are hidden by default.","filePickerLabel":"Environment file","viewModeLabel":"View mode","viewKeyValue":"Key-Value","viewRaw":"Raw","notCreated":"not created","templateBadge":"template","notCreatedHint":"{file} does not exist yet. Add a key and save to create it.","keyLabel":"Variable name","valueLabel":"Value of {key}","showValue":"Show the value of {key}","hideValue":"Hide the value of {key}","removeRow":"Remove {key}","addRow":"Add variable","revealAll":"Show values","hideAll":"Hide values","reload":"Reload from disk","save":"Save","saved":"Saved.","loading":"Loading environment file...","loadError":"The environment file could not be loaded.","empty":"No variables defined yet.","validationFailed":"This file cannot be saved yet.","suggestionsTitle":"Keys from the template","suggestionsHint":"Defined in .env.example / .env.sample but missing here. Tap to add.","rawLabel":"Raw environment file","rawMaskedLabel":"Raw environment file (values hidden)","rawMaskedHint":"Values are shown as {mask}. Choose \\"Show values\\" to reveal and edit them.","issues":{"invalidSyntax":"Line {line}: not a KEY=VALUE assignment.","invalidKey":"Line {line}: invalid variable name. Use letters, digits and underscores, starting with a letter or underscore.","unterminatedQuote":"Line {line}: the quoted value for {key} is never closed.","duplicateKey":"Line {line}: {key} is defined more than once. The last one wins.","controlCharacter":"Line {line}: contains a control character that is not allowed in an environment file.","tooLarge":"This file is too large to edit here.","tooManyEntries":"This file defines too many variables to edit here."}}}')}};
|