commandmate 0.43.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +209 -209
- package/.next/app-path-routes-manifest.json +36 -36
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +2 -2
- package/.next/server/app/api/app/update/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +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.js.nft.json +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.js.nft.json +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.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.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 +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +2 -2
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.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.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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +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 +7 -7
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.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.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.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 +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +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.nft.json +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.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.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.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/config/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- 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 +3 -3
- 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.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +36 -36
- package/.next/server/chunks/1501.js +3 -3
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2283.js +15 -0
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4802.js +1 -1
- package/.next/server/chunks/488.js +1 -0
- package/.next/server/chunks/5326.js +1 -1
- package/.next/server/chunks/5456.js +1 -1
- package/.next/server/chunks/611.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6474.js +14 -0
- package/.next/server/chunks/650.js +1 -0
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/{5742.js → 6927.js} +1 -1
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8543.js +1 -1
- package/.next/server/chunks/8581.js +1 -1
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -0
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8918.js +105 -3
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/967.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/chunks/9882.js +2 -2
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +2 -2
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/{1642-767aed8e7c61ef7f.js → 1642-fb2e176aaadbd137.js} +1 -1
- package/.next/static/chunks/2053-85a974ddfe7498fe.js +1 -0
- package/.next/static/chunks/{2407-940df9b11fadafc6.js → 2407-340774f1a24f2b45.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/5521-c358c31f60e5e689.js +1 -0
- package/.next/static/chunks/591-0a45801e83f26f24.js +1 -0
- package/.next/static/chunks/{8165-3525fb42f1b4976e.js → 8165-3853772f6ae1299b.js} +1 -1
- package/.next/static/chunks/{8566-a6a7c70558927410.js → 8566-aeda747542072ace.js} +1 -1
- package/.next/static/chunks/8811-29eaa24237f48558.js +1 -0
- package/.next/static/chunks/{9619-22adf5367c4b7080.js → 9619-84aced0846cbe3ac.js} +1 -1
- package/.next/static/chunks/app/{layout-057c850cd0df978e.js → layout-0fc249fb7de75a27.js} +1 -1
- package/.next/static/chunks/app/sessions/page-55297155e7bf01b9.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/{page-74aac15286504ef4.js → page-9ee7a381636e60cb.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/page-d2103e0c25be83c8.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/css/38070d879efa1371.css +1 -0
- package/.next/trace +13 -13
- package/README.md +58 -620
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +11 -1
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +5 -0
- package/dist/cli/commands/remote.d.ts +24 -1
- package/dist/cli/commands/remote.d.ts.map +1 -1
- package/dist/cli/commands/remote.js +155 -6
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +255 -112
- package/dist/cli/commands/stop.d.ts.map +1 -1
- package/dist/cli/commands/stop.js +53 -1
- package/dist/cli/commands/sync.js +3 -3
- package/dist/cli/docs/setup-guide.d.ts +14 -0
- package/dist/cli/docs/setup-guide.d.ts.map +1 -0
- package/dist/cli/docs/setup-guide.js +366 -0
- package/dist/cli/types/api-responses.d.ts +11 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +2 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/daemon.d.ts +42 -2
- package/dist/cli/utils/daemon.d.ts.map +1 -1
- package/dist/cli/utils/daemon.js +222 -40
- package/dist/cli/utils/docs-reader.d.ts +6 -0
- package/dist/cli/utils/docs-reader.d.ts.map +1 -1
- package/dist/cli/utils/docs-reader.js +14 -13
- package/dist/cli/utils/npm-runner.d.ts +12 -0
- package/dist/cli/utils/npm-runner.d.ts.map +1 -1
- package/dist/cli/utils/npm-runner.js +36 -0
- package/dist/cli/utils/process-inspect.d.ts +55 -0
- package/dist/cli/utils/process-inspect.d.ts.map +1 -0
- package/dist/cli/utils/process-inspect.js +214 -0
- package/dist/cli/utils/remote-pairing.d.ts +68 -0
- package/dist/cli/utils/remote-pairing.d.ts.map +1 -0
- package/dist/cli/utils/remote-pairing.js +117 -0
- package/dist/cli/utils/server-identity.d.ts +50 -0
- package/dist/cli/utils/server-identity.d.ts.map +1 -0
- package/dist/cli/utils/server-identity.js +118 -0
- package/dist/cli/utils/server-ready.d.ts +13 -0
- package/dist/cli/utils/server-ready.d.ts.map +1 -1
- package/dist/cli/utils/server-ready.js +16 -0
- package/dist/lib/security/pairing-code.d.ts +2 -1
- package/dist/lib/security/pairing-code.d.ts.map +1 -1
- package/dist/server/locales/en/worktree.json +28 -6
- package/dist/server/locales/ja/worktree.json +28 -6
- package/dist/server/src/config/image-extensions.js +1 -0
- package/dist/server/src/lib/auto-yes-poller.js +22 -0
- package/dist/server/src/lib/cli-tools/command-code-plan-review.js +175 -0
- package/dist/server/src/lib/cli-tools/command-code.js +27 -2
- package/dist/server/src/lib/detection/cli-patterns.js +94 -1
- package/dist/server/src/lib/detection/tools/codex/detect.js +26 -0
- package/dist/server/src/lib/detection/tools/command-code/plan-review-state.js +75 -0
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +33 -1
- package/dist/server/src/lib/session/claude-executor.js +2 -2
- package/dist/server/src/lib/session/claude-session.js +131 -15
- package/dist/server/src/lib/session/session-start-error.js +20 -0
- package/dist/server/src/lib/skills/agent-state-paths.js +39 -0
- package/dist/server/src/lib/skills/receipt-owned-paths.js +118 -0
- package/dist/server/src/lib/tmux/tmux.js +25 -0
- package/dist/server/src/lib/verification/env-clean-gate.js +195 -6
- package/dist/server/src/lib/verification/gate-runner.js +29 -2
- package/dist/server/src/lib/verification/scope-gate.js +58 -4
- package/docs/en/architecture.md +722 -0
- package/docs/en/user-guide/agents-guide.md +306 -0
- package/docs/en/user-guide/cli-setup-guide.md +676 -0
- package/docs/en/user-guide/cmate-schedules-guide.md +388 -0
- package/docs/en/user-guide/commands-guide.md +467 -0
- package/docs/en/user-guide/quick-start.md +231 -0
- package/docs/en/user-guide/webapp-guide.md +1020 -0
- package/docs/en/user-guide/workflow-examples.md +463 -0
- package/package.json +18 -7
- package/release-notes/0.44.0.json +82 -0
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/3707.js +0 -15
- package/.next/server/chunks/6491.js +0 -103
- package/.next/server/chunks/7004.js +0 -1
- package/.next/server/chunks/8673.js +0 -14
- package/.next/static/chunks/2039-117a361f795ddc4b.js +0 -1
- package/.next/static/chunks/2053-611dd27d42721b79.js +0 -1
- package/.next/static/chunks/3778-56f41fc2cecb8c43.js +0 -1
- package/.next/static/chunks/7705-1f58d4c03d991fcf.js +0 -1
- package/.next/static/chunks/app/sessions/page-1a8ba152bbcb9efb.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +0 -1
- package/.next/static/css/b3f433d52b8ed5c8.css +0 -1
- /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_buildManifest.js +0 -0
- /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=8581,exports.ids=[8581],exports.modules={762:(a,b,c)=>{Promise.resolve().then(c.bind(c,96908))},1102:(a,b,c)=>{"use strict";c.d(b,{m_:()=>i});var d=c(21124),e=c(38301),f=c(23312);function g(a,b,c){return Math.min(Math.max(a,4),Math.max(4,c-b-4))}let h={top:-9999,left:-9999};function i({content:a,placement:b="right",delay:c=100,children:i,className:j}){let[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=(0,e.useRef)(null),s=(0,e.useRef)(null),t=(0,e.useCallback)(()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)},[]),u=(0,e.useCallback)(()=>{t(),s.current=setTimeout(()=>{l(!0),s.current=null},c)},[c,t]),v=(0,e.useCallback)(()=>{t(),l(!1)},[t]),w=(0,e.useCallback)(()=>{n(!0)},[]),x=(0,e.useCallback)(()=>{n(!1)},[]);return(0,e.useCallback)(()=>{t(),l(!1),n(!1)},[t]),(0,e.useCallback)(()=>{let a=q.current,c=r.current;if(!a||!c)return;let d=a.getBoundingClientRect(),e=c.getBoundingClientRect();p(function(a,b,c,d){let e,f,h=b.left+b.width/2-c.width/2,i=b.top+b.height/2-c.height/2;switch(a){case"top":e=b.top-c.height-8,f=h;break;case"bottom":e=b.top+b.height+8,f=h;break;case"left":e=i,f=b.left-c.width-8;break;default:e=i,f=b.left+b.width+8}return{top:g(e,c.height,d.height),left:g(f,c.width,d.width)}}(b,{top:d.top,left:d.left,width:d.width,height:d.height},{width:e.width,height:e.height},{width:window.innerWidth,height:window.innerHeight}))},[b]),(0,d.jsxs)("span",{ref:q,"data-testid":"tooltip-wrapper",className:j?`relative inline-flex ${j}`:"relative inline-flex",tabIndex:-1,onMouseEnter:u,onMouseLeave:v,onFocus:w,onBlur:x,children:[i,(k||m)&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("span",{ref:r,role:"tooltip","aria-hidden":"true","data-placement":b,className:"fixed z-40 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:o??h,children:a}),document.body)]})}},1483:(a,b,c)=>{var d={"./en/keyboardShortcuts.json":[53722,1341],"./ja/keyboardShortcuts.json":[88356,8356]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=1483,a.exports=e},1637:(a,b,c)=>{"use strict";c.d(b,{Ej:()=>k,Jd:()=>h,Mq:()=>j,rH:()=>i});var d=c(21124),e=c(38301),f=c(20481),g=c(22317);let h="bg-transparent border-2 border-muted-foreground",i="status.unknown";function j(a,b){return!0===b&&"ready"===a}let k=(0,e.memo)(function({status:a,label:b,waitingKind:c,unclassified:e}){let k=(0,f.c)("common"),l=j(a,e);return(0,d.jsx)(g.m,{"data-testid":"status-indicator",status:a,label:l?b??k(i):b,waitingKind:c,size:"lg",className:l?h:void 0,"data-unclassified":l?"true":void 0})})},4267:(a,b,c)=>{"use strict";c.d(b,{Lt:()=>h,Wj:()=>f,eu:()=>e,fJ:()=>g});var d=c(17252);let e=2,f=6,g=["claude","codex","antigravity"];function h(a){return a.length<e||a.length>f?{valid:!1,error:`Must be ${e}-${f} elements`}:a.every(a=>"string"==typeof a&&d.XH.includes(a))?new Set(a).size!==a.length?{valid:!1,error:"Duplicate tool IDs not allowed"}:{valid:!0,value:a}:{valid:!1,error:"Invalid CLI tool ID"}}},4558:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(43692),e=c(86802),f=c(25754);let g=(0,d.A)(async({requestLocale:a})=>{let b=await a;if(!(0,f.d9)(b)){let a=await (0,e.UL)(),c=await (0,e.b3)();b=(0,f.rv)(a.get(f.gB)?.value,c.get("accept-language"))}let[d,g,h,i,j,k,l,m,n,o,p,q,r,s,t]=await Promise.all([c(61118)(`./${b}/common.json`),c(90338)(`./${b}/worktree.json`),c(62081)(`./${b}/autoYes.json`),c(66125)(`./${b}/error.json`),c(72637)(`./${b}/prompt.json`),c(51877)(`./${b}/auth.json`),c(38898)(`./${b}/schedule.json`),c(80407)(`./${b}/commandPalette.json`),c(70288)(`./${b}/home.json`),c(60887)(`./${b}/review.json`),c(75567)(`./${b}/pwa.json`),c(99127)(`./${b}/notifications.json`),c(1483)(`./${b}/keyboardShortcuts.json`),c(80812)(`./${b}/externalApps.json`),c(18913)(`./${b}/skills.json`)]);return{locale:b,timeZone:"UTC",messages:{common:d.default,worktree:g.default,autoYes:h.default,error:i.default,prompt:j.default,auth:k.default,schedule:l.default,commandPalette:m.default,home:n.default,review:o.default,pwa:p.default,notifications:q.default,keyboardShortcuts:r.default,externalApps:s.default,skills:t.default}}})},5682:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/CommandMate/CommandMate/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/app/error.tsx","default")},5772:(a,b,c)=>{"use strict";c.d(b,{Ps:()=>k,W5:()=>j});var d=c(21124),e=c(38301),f=c(90076),g=c(12480);let h={size:g.r5,setSize:()=>{},isMobile:!1,factor:g.d8[g.r5].factor,isAvailable:!1},i=(0,e.createContext)(h);function j({children:a}){let{size:b,setSize:c,isAvailable:h}=(0,g.of)(),j=(0,f.a)(),k=(0,e.useMemo)(()=>({size:b,setSize:c,isMobile:j,factor:g.d8[b].factor,isAvailable:h}),[b,c,j,h]);return(0,d.jsx)(i.Provider,{value:k,children:a})}function k(){return(0,e.useContext)(i)}},6074:(a,b,c)=>{"use strict";c.d(b,{O:()=>e});var d=c(38301);function e(a,b){let[c,e]=(0,d.useState)(a?"open":"closed");return a&&"open"!==c?e("open"):a||"open"!==c||e("exiting"),{shouldRender:a||"closed"!==c,isExiting:!a&&"exiting"===c}}},8509:(a,b,c)=>{"use strict";c.d(b,{g:()=>h});var d=c(21124);c(38301);var e=c(20481),f=c(5772),g=c(12480);function h(){let{size:a,setSize:b,isMobile:c}=(0,f.Ps)(),h=(0,e.c)("common");if(c)return null;let i=h("displaySize.ariaLabel");return(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("label",{htmlFor:"pc-display-size",className:"sr-only",children:i}),(0,d.jsx)("select",{id:"pc-display-size","data-testid":"pc-display-size-select","aria-label":i,value:a,onChange:a=>{let c=a.target.value;(0,g.fM)(c)&&b(c)},className:"text-sm bg-transparent text-foreground border border-input rounded-md px-2 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:g.Uf.map(a=>(0,d.jsx)("option",{value:a,children:h(`displaySize.${a}`)},a))})]})}},10290:(a,b,c)=>{"use strict";c.d(b,{Hr:()=>q,Ht:()=>p,SQ:()=>n,_2:()=>o,lp:()=>r,mB:()=>s,rI:()=>l,ty:()=>m});var d=c(21124),e=c(38301),f=c.n(e),g=c(12927),h=c(71613),i=c(90133),j=c(11010),k=c(35595);let l=g.bL,m=g.l9;g.YJ;let n=f().forwardRef(({className:a,sideOffset:b=4,...c},e)=>(0,d.jsx)(g.ZL,{children:(0,d.jsx)(g.UC,{ref:e,sideOffset:b,style:{zIndex:j.M.POPOVER},className:(0,k.cn)("min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 text-surface-foreground shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...c})}));n.displayName="DropdownMenuContent";let o=f().forwardRef(({className:a,inset:b,...c},e)=>(0,d.jsx)(g.q7,{ref:e,className:(0,k.cn)("relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",b&&"pl-8",a),...c}));o.displayName="DropdownMenuItem",f().forwardRef(({className:a,children:b,checked:c,...e},f)=>(0,d.jsxs)(g.H_,{ref:f,checked:c,className:(0,k.cn)("relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...e,children:[(0,d.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,d.jsx)(g.VF,{children:(0,d.jsx)(h.A,{size:16,"aria-hidden":"true"})})}),b]})).displayName="DropdownMenuCheckboxItem";let p=f().forwardRef(({className:a,children:b,...c},e)=>(0,d.jsxs)(g.hN,{ref:e,className:(0,k.cn)("relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...c,children:[(0,d.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,d.jsx)(g.VF,{children:(0,d.jsx)(i.A,{size:8,className:"fill-current","aria-hidden":"true"})})}),b]}));p.displayName="DropdownMenuRadioItem";let q=g.z6,r=f().forwardRef(({className:a,inset:b,...c},e)=>(0,d.jsx)(g.JU,{ref:e,className:(0,k.cn)("px-2 py-1.5 text-xs font-semibold text-muted-foreground",b&&"pl-8",a),...c}));r.displayName="DropdownMenuLabel";let s=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.wv,{ref:c,className:(0,k.cn)("-mx-1 my-1 h-px bg-border",a),...b}));s.displayName="DropdownMenuSeparator"},11010:(a,b,c)=>{"use strict";c.d(b,{M:()=>d});let d={DROPDOWN:10,SIDEBAR:30,MODAL:50,MAXIMIZED_EDITOR:55,TOAST:60,POPOVER:65,CONTEXT_MENU:70}},12055:(a,b,c)=>{"use strict";c.d(b,{Oo:()=>e,ST:()=>d,T4:()=>h,dz:()=>g,rz:()=>f,zS:()=>i});let d="client_version",e="version_mismatch",f="chat_turn_progress",g="messages_invalidated",h="model_changed";function i(a){let b;try{b=JSON.parse(a)}catch{return null}if(!b||"object"!=typeof b)return null;let c=b;if("broadcast"===c.type){let a=c.data;return a&&"object"==typeof a?"string"!=typeof a.type?null:(void 0===a.worktreeId&&"string"==typeof c.worktreeId&&(a.worktreeId=c.worktreeId),a):null}return"string"==typeof c.type?c:null}},12480:(a,b,c)=>{"use strict";c.d(b,{Uf:()=>f,d8:()=>g,fM:()=>h,of:()=>j,r5:()=>e,rq:()=>i});var d=c(53237);let e="medium",f=["large","medium","small","xsmall"],g={large:{value:"large",rootFontSizePx:18,factor:1.125,terminalFontSize:16},medium:{value:"medium",rootFontSizePx:16,factor:1,terminalFontSize:14},small:{value:"small",rootFontSizePx:14,factor:.875,terminalFontSize:12},xsmall:{value:"xsmall",rootFontSizePx:12.5,factor:.78,terminalFontSize:11}};function h(a){return"string"==typeof a&&Object.prototype.hasOwnProperty.call(g,a)}function i(a){return g[a].terminalFontSize}function j(){let{value:a,setValue:b,isAvailable:c}=(0,d.V)({key:"mcbd-pc-display-size",defaultValue:e,validate:h});return{size:a,setSize:b,isAvailable:c}}},16730:(a,b,c)=>{"use strict";c.d(b,{BV:()=>n,Ct:()=>g,Hi:()=>d,K3:()=>e,PS:()=>l,SR:()=>f,T2:()=>j,Z3:()=>m,nk:()=>k});let d=0,e=8e3,f=2,g=2e4,h=[408,425,429,500,502,503,504],i=["GET","HEAD","OPTIONS"],j=3e4;function k(a){let b=(a??"GET").toUpperCase();return i.includes(b)}function l(a){return h.includes(a)}function m(a){return k(a)?1e4:3e4}function n(a,b=Math.random()){let c=Number.isFinite(a)&&a>0?Math.floor(a):0,d=Math.min(500*2**c,4e3);return Math.max(0,Math.round(d+.25*d*(2*b-1)))}},17252:(a,b,c)=>{"use strict";c.d(b,{Ab:()=>e,NL:()=>q,O6:()=>n,XH:()=>d,f_:()=>l,hR:()=>j,lu:()=>o,n6:()=>h,oo:()=>k,pQ:()=>f,sw:()=>m,vz:()=>p});let d=["claude","codex","gemini","vibe-local","opencode","copilot","antigravity","command-code","opencode-v2"],e=10,f=50,g=/^[a-zA-Z0-9_-]+$/;function h(a){return"string"==typeof a&&a.length>0&&a.length<=64&&g.test(a)}let i={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode",copilot:"Copilot",antigravity:"Antigravity","command-code":"Command Code","opencode-v2":"OpenCode V2"};function j(a){return d.includes(a)}function k(a){return i[a]??a}function l(a,b="Assistant"){return a&&j(a)?k(a):b}function m(a){let b=a.alias;return"string"==typeof b&&b.trim().length>0?b:k(a.cliTool)}function n(a,b,c){let d=a.find(a=>a.id===b);return d?m(d):k(c)}function o(a){return a.map((a,b)=>({id:a,cliTool:a,alias:k(a),order:b}))}let p=128,q=2097152},17793:(a,b,c)=>{"use strict";c.d(b,{y:()=>h});var d=c(21124);c(38301);var e=c(35595);let f={xs:"h-3 w-3",sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6",xl:"h-8 w-8"},g={current:"",accent:"text-accent-600 dark:text-accent-400",muted:"text-muted-foreground"};function h({size:a="md",variant:b="current",className:c,...h}){return(0,d.jsxs)("svg",{className:(0,e.cn)("animate-spin",f[a],g[b],c),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","aria-hidden":"true",...h,children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}},18608:(a,b,c)=>{"use strict";c.d(b,{W:()=>q,n:()=>r});var d=c(21124),e=c(38301),f=c(20481),g=c(16945),h=c(25345),i=c(47089),j=c(11010),k=c(74930),l=c(12055);let m=new Set;function n(a){return m.add(a),()=>{m.delete(a)}}function o(){return!1}function p(){return!1}function q(){return(0,e.useSyncExternalStore)(n,o,p)}function r(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),o=(0,e.useCallback)(a=>{if(a.type!==l.Oo)return;let{serverVersion:b,clientVersion:d}=a;"string"==typeof b&&"string"==typeof d&&b&&d&&b!==m&&c({serverVersion:b,clientVersion:d})},[m]);(0,k.T3)(o);let p=(0,e.useCallback)(()=>{window.location.reload()},[]),q=(0,e.useCallback)(()=>{c(a=>(a&&n(a.serverVersion),null))},[]);return b?(0,d.jsxs)("div",{"data-testid":"version-mismatch-banner",role:"alert","aria-live":"assertive",className:"fixed top-3 left-1/2 -translate-x-1/2 flex items-start gap-3 max-w-[92vw] rounded-lg border border-warning-border bg-warning-subtle px-4 py-3 text-warning-foreground shadow-lg",style:{zIndex:j.M.TOAST},children:[(0,d.jsx)(g.A,{className:"h-5 w-5 shrink-0 mt-0.5","aria-hidden":"true"}),(0,d.jsxs)("div",{className:"flex flex-col gap-0.5 text-sm",children:[(0,d.jsx)("span",{className:"font-semibold",children:a("versionMismatch.title")}),(0,d.jsx)("span",{children:a("versionMismatch.description",{serverVersion:b.serverVersion,clientVersion:b.clientVersion})})]}),(0,d.jsxs)("button",{type:"button","data-testid":"version-mismatch-reload",onClick:p,className:"shrink-0 inline-flex items-center gap-1.5 rounded-md border border-warning-border px-3 py-1.5 text-sm font-medium hover:opacity-80 focus:outline-none focus:ring-2 focus:ring-offset-2",children:[(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"}),a("versionMismatch.reload")]}),(0,d.jsx)("button",{type:"button","data-testid":"version-mismatch-dismiss",onClick:q,"aria-label":a("versionMismatch.dismiss"),className:"shrink-0 hover:opacity-70 focus:outline-none focus:ring-2 focus:ring-offset-2",children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})})]}):null}},18913:(a,b,c)=>{var d={"./en/skills.json":[55064,5064],"./ja/skills.json":[20022,22]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=18913,a.exports=e},19463:(a,b,c)=>{"use strict";c.d(b,{Lv:()=>f});var d=c(38301),e=c(63157);function f(){let a=(0,e.rC)(),b=a?.worktrees;return(0,d.useMemo)(()=>{let a=b?b.filter(a=>!0===a.isWaitingForResponse):[];return{count:a.length,worktrees:a}},[b])}},22317:(a,b,c)=>{"use strict";c.d(b,{m:()=>l});var d=c(21124);c(38301);var e=c(20481),f=c(35595);let g={idle:{colorClass:"bg-muted-foreground",labelKey:"status.idle"},ready:{colorClass:"bg-success",labelKey:"status.ready"},running:{colorClass:"bg-success text-success ring-2 ring-success/40",animationClass:"animate-status-glow",labelKey:"status.running"},generating:{colorClass:"bg-success text-success ring-2 ring-success/40",animationClass:"animate-status-glow",labelKey:"status.generating"},waiting:{colorClass:"bg-warning text-warning ring-4 ring-warning/50",animationClass:"animate-status-attention",labelKey:"status.waiting"},error:{colorClass:"bg-danger",labelKey:"status.error"}},h={colorClass:"bg-warning text-warning ring-2 ring-warning/40",animationClass:"animate-status-glow",labelKey:"status.waiting"},i=new Set(["menu","unclassified"]),j={colorClass:"bg-muted-foreground",labelKey:"status.unknown"},k={sm:"w-2 h-2",md:"w-2.5 h-2.5",lg:"w-3 h-3"};function l({status:a,size:b="md",label:c,waitingKind:l,className:m,...n}){let o=(0,e.c)("common"),p=function(a,b){let c=g[a]??j;return"waiting"!==a?c:b&&i.has(b)?h:c}(a,l),q=c??o(p.labelKey);return(0,d.jsx)("span",{className:(0,f.cn)("inline-block flex-shrink-0 rounded-full",k[b],p.colorClass,p.animationClass,m),title:q,"aria-label":q,...n})}},23910:(a,b,c)=>{"use strict";c.d(b,{Y:()=>l,y2:()=>k});var d=c(21124),e=c(38301),f=c(20481),g=c(78352),h=c(79782);let i=()=>{},j=(0,e.createContext)({updateInfo:null,checking:!1,hasUpdate:!1,canSelfUpdate:!1,state:"idle",logPath:null,errorKey:null,openConfirm:i,cancel:i,confirm:async()=>{}});function k({children:a}){let b=(0,f.c)("worktree"),[c,i]=(0,e.useState)(null),[k,l]=(0,e.useState)(!0),[m,n]=(0,e.useState)("idle"),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(null),s=(0,e.useRef)("idle");(0,e.useRef)(!1);let t=c?.hasUpdate===!0,u=c?.installType==="global"||c?.installType==="npx",v=(0,e.useCallback)(()=>{t&&u&&n(a=>"idle"===a?"confirming":a)},[t,u]),w=(0,e.useCallback)(()=>{n(a=>"confirming"===a?"idle":a)},[]),x=(0,e.useCallback)(async()=>{if("confirming"===s.current){s.current="starting",n("starting");try{let a=await g.GQ.startUpdate();p(a.logPath),n(a.willRestart?"updating":"no-restart")}catch(a){a instanceof g.hD&&400===a.status?r("update.errorNotGlobal"):a instanceof g.hD&&409===a.status?r("update.errorInProgress"):r("update.errorGeneric"),n("error")}}},[]),y=(0,e.useMemo)(()=>({updateInfo:c,checking:k,hasUpdate:t,canSelfUpdate:u,state:m,logPath:o,errorKey:q,openConfirm:v,cancel:w,confirm:x}),[c,k,t,u,m,o,q,v,w,x]);return(0,d.jsxs)(j.Provider,{value:y,children:[a,(0,d.jsx)(h.TM,{isOpen:"confirming"===m,title:b("update.confirmTitle"),description:b("update.confirmDescription",{version:c?.latestVersion??""}),confirmLabel:b("update.confirmButton"),onConfirm:()=>{x()},onCancel:w})]})}function l(){return(0,e.useContext)(j)}},25754:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>g,dI:()=>d,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}},29966:(a,b,c)=>{"use strict";c.d(b,{AppShellGate:()=>e});var d=c(97954);(0,d.registerClientReference)(function(){throw Error("Attempted to call SHELL_EXCLUDED_PREFIXES() from the server but SHELL_EXCLUDED_PREFIXES is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","SHELL_EXCLUDED_PREFIXES"),(0,d.registerClientReference)(function(){throw Error("Attempted to call SHELL_EXCLUDED_WORKTREE_SUBPATHS() from the server but SHELL_EXCLUDED_WORKTREE_SUBPATHS is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","SHELL_EXCLUDED_WORKTREE_SUBPATHS"),(0,d.registerClientReference)(function(){throw Error("Attempted to call shouldRenderShell() from the server but shouldRenderShell is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","shouldRenderShell");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call AppShellGate() from the server but AppShellGate is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","AppShellGate")},30430:(a,b,c)=>{"use strict";c.d(b,{j:()=>i,p:()=>j});var d=c(21124),e=c(38301),f=c.n(e),g=c(26691),h=c(35595);let i=(0,g.F)("flex w-full rounded-md border border-input bg-surface dark:bg-surface-2 text-surface-foreground shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring disabled:cursor-not-allowed disabled:opacity-50",{variants:{inputSize:{sm:"h-8 px-2.5 py-1 text-sm",md:"px-3 py-2 text-sm",lg:"px-4 py-2.5 text-base"}},defaultVariants:{inputSize:"md"}}),j=f().forwardRef(({className:a,inputSize:b,type:c="text",...e},f)=>(0,d.jsx)("input",{ref:f,type:c,className:(0,h.cn)(i({inputSize:b}),a),...e}));j.displayName="Input"},31210:(a,b,c)=>{"use strict";c.d(b,{Wu:()=>k,ZB:()=>j,Zp:()=>h,aR:()=>i});var d=c(21124);c(38301);var e=c(26691),f=c(35595);let g=(0,e.F)("bg-surface text-surface-foreground rounded-lg border border-border shadow-sm",{variants:{variant:{default:"",elevated:"bg-gradient-to-b from-surface to-surface-2 shadow-md",interactive:"cursor-pointer transition-all duration-200 hover:border-accent-500 hover:shadow-md motion-safe:hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-accent-500 focus-visible:shadow-md motion-safe:focus-visible:-translate-y-0.5"},hover:{true:"transition-shadow duration-200 hover:shadow-md",false:""},interactive:{true:"cursor-pointer transition-all duration-200 hover:shadow-lg active:shadow-md motion-safe:hover:-translate-y-0.5 motion-safe:active:translate-y-0",false:""},padding:{none:"",sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{variant:"default",hover:!1,interactive:!1,padding:"md"}});function h({variant:a="default",hover:b=!1,interactive:c=!1,padding:e="md",className:h="",children:i,...j}){return(0,d.jsx)("div",{className:(0,f.cn)(g({variant:a,hover:b,interactive:c,padding:e}),h),...j,children:i})}function i({className:a="",children:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)("mb-3",a),...c,children:b})}function j({className:a="",children:b,...c}){return(0,d.jsx)("h3",{className:(0,f.cn)("text-lg font-semibold text-surface-foreground",a),...c,children:b})}function k({className:a="",children:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)(a),...c,children:b})}},32482:(a,b,c)=>{"use strict";c.d(b,{$m:()=>h,BN:()=>G,EN:()=>i,EY:()=>C,El:()=>u,Ii:()=>A,Kp:()=>z,LV:()=>p,PB:()=>k,Si:()=>f,UB:()=>y,UZ:()=>n,Xn:()=>w,ZC:()=>F,ZD:()=>E,_s:()=>x,fs:()=>H,j:()=>v,m3:()=>j,nO:()=>q,s6:()=>o,zD:()=>t});var d=c(89877);let e=["updatedAt","repositoryName","branchName","status","lastSent"],f=a=>e.includes(a),g=["grouped","flat","sessions"],h=a=>g.includes(a),i=["always","collapsed","hidden"],j=a=>i.includes(a),k="collapsed",l={waiting:0,ready:1,running:2,generating:3,idle:4},m=["waiting","running","generating","ready","idle"];function n(a){let b=new Set;for(let c of a)!1===c.visible&&b.add(c.path);return b}function o(a,b){return 0===b.size?a.slice():a.filter(a=>{let c=a.repositoryPath;return!c||!b.has(c)})}function p(a){let b=function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return Math.abs(b)}(a)%360;return`hsl(${b}, 65%, 60%)`}function q(a,b){if(!a&&!b)return 0;if(!a)return 1;if(!b)return -1;let c=a instanceof Date?a.getTime():new Date(a).getTime();return(b instanceof Date?b.getTime():new Date(b).getTime())-c}function r(a){return a.cliStatus&&Object.keys(a.cliStatus).length>0?(0,d.A7)(a.cliStatus):a.status}function s(a){return"waiting"===r(a)}function t(a){let b=new Set(a.map(r));for(let a of m)if(b.has(a))return a;return"idle"}function u(a){return"ready"===t(a)&&a.some(a=>"ready"===r(a)&&(0,d.Pn)(a.cliStatus,a.unclassifiedInstanceIds))}function v(a){let b=0;for(let c of a)s(c)&&b++;return b}function w(a,b,c){let d=[...a],e="status"!==b;return d.sort((a,d)=>{if(e){let b=Number(s(d))-Number(s(a));if(0!==b)return b}let f=0;switch(b){case"updatedAt":{let b=a=>a?a instanceof Date?a.getTime():new Date(a).getTime():0,c=b(a.lastActivity);f=b(d.lastActivity)-c;break}case"repositoryName":{let b=a.repositoryName.toLowerCase(),c=d.repositoryName.toLowerCase();f=b.localeCompare(c);break}case"branchName":{let b=a.name.toLowerCase(),c=d.name.toLowerCase();f=b.localeCompare(c);break}case"status":f=l[a.status]-l[d.status];break;case"lastSent":{let b=q(a.lastActivity,d.lastActivity);if(!a.lastActivity&&!d.lastActivity){f=0;break}if(!a.lastActivity)return 1;if(!d.lastActivity)return -1;f=b;break}default:f=0}return("updatedAt"===b||"lastSent"===b?"desc"===c:"asc"===c)?f:-f}),d}function x(a,b,c){let d=new Map;for(let b of a){let a=b.repositoryName;d.has(a)||d.set(a,[]),d.get(a).push(b)}return[...d.keys()].sort((a,b)=>a.toLowerCase().localeCompare(b.toLowerCase())).map(a=>({repositoryName:a,branches:w(d.get(a),b,c)}))}function y(a){let b=[];for(let c of a){let a=new Set(c.exitedInstanceIds??[]),d=new Set(c.unclassifiedInstanceIds??[]);for(let[e,f]of Object.entries(c.cliStatus??{}))b.push({key:`${c.id}:${e}`,worktreeId:c.id,instanceId:e,label:c.cliStatusLabels?.[e]??e,status:f??"idle",branchName:c.name,repositoryName:c.repositoryName,lastActivity:c.lastActivityByInstance?.[e]??c.lastActivity,exited:a.has(e),..."ready"===f&&d.has(e)?{unclassified:!0}:{}})}return b}let z="instance";function A(a){return`/worktrees/${a.worktreeId}?${z}=${encodeURIComponent(a.instanceId)}`}function B(a){return a.lastActivity?a.lastActivity instanceof Date?a.lastActivity.getTime():new Date(a.lastActivity).getTime():0}function C(a,b,c){let d="asc"===c?1:-1;return a.slice().sort((a,c)=>{if("status"===b){let b=l[a.status]-l[c.status];return 0!==b?b*d:B(c)-B(a)}let e=Number("waiting"===c.status)-Number("waiting"===a.status);if(0!==e)return e;switch(b){case"updatedAt":case"lastSent":return(B(a)-B(c))*d;case"repositoryName":return a.repositoryName.toLowerCase().localeCompare(c.repositoryName.toLowerCase())*d;case"branchName":return a.branchName.toLowerCase().localeCompare(c.branchName.toLowerCase())*d;default:return 0}})}let D=null;function E(){return D??[]}function F(a){D=a}function G(a,b){if(0===b.length)return a.slice();let c=new Map(b.map((a,b)=>[a,b]));return a.slice().sort((a,b)=>{let d=c.has(a.repositoryName)?c.get(a.repositoryName):1/0,e=c.has(b.repositoryName)?c.get(b.repositoryName):1/0;return d===e?a.repositoryName.localeCompare(b.repositoryName):d-e})}function H(a,b){return"hidden"!==a&&("always"===a||!b)}},33497:(a,b,c)=>{Promise.resolve().then(c.bind(c,29966)),Promise.resolve().then(c.bind(c,58315))},34592:(a,b,c)=>{"use strict";c.d(b,{Xi:()=>l,av:()=>m,j7:()=>k,tU:()=>j});var d=c(21124),e=c(38301),f=c.n(e),g=c(89989),h=c(35595);let i=f().createContext("underline"),j=f().forwardRef(({variant:a="underline",...b},c)=>(0,d.jsx)(i.Provider,{value:a,children:(0,d.jsx)(g.bL,{ref:c,...b})}));j.displayName="Tabs";let k=f().forwardRef(({className:a,...b},c)=>{let e=f().useContext(i);return(0,d.jsx)(g.B8,{ref:c,className:(0,h.cn)("inline-flex items-center","pill"===e?"gap-1 rounded-lg bg-muted p-1":"gap-4 border-b border-border",a),...b})});k.displayName="TabsList";let l=f().forwardRef(({className:a,...b},c)=>{let e=f().useContext(i);return(0,d.jsx)(g.l9,{ref:c,className:(0,h.cn)("inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","disabled:pointer-events-none disabled:opacity-50","pill"===e?"rounded-md px-3 py-1.5 text-muted-foreground data-[state=active]:bg-surface data-[state=active]:text-surface-foreground data-[state=active]:shadow-sm":"-mb-px border-b-2 border-transparent px-1 py-2 text-muted-foreground hover:text-foreground data-[state=active]:border-accent-500 data-[state=active]:text-accent-600",a),...b})});l.displayName="TabsTrigger";let m=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.UC,{ref:c,className:(0,h.cn)("mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",a),...b}));m.displayName="TabsContent"},35595:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(43249),e=c(58829);function f(...a){return(0,e.QP)((0,d.$)(a))}},35914:(a,b,c)=>{"use strict";c.d(b,{$7:()=>f,oz:()=>d,tV:()=>e,v9:()=>g});function d(a){if(null==a||"object"!=typeof a)return!1;let{name:b,message:c}=a;return"ChunkLoadError"===b||"string"==typeof c&&(c.includes("Loading chunk")||c.includes("Failed to fetch dynamically imported module"))}function e(a){return"skipped"}function f(a,b){let c=!1,d=null,e=null,f=()=>{d?.(),e?.(),d=null,e=null},g=()=>{c||(c=!0,f(),a())};return d=b.subscribeOnline(()=>{c||b.probe().then(a=>{a&&g()})}),e=b.subscribeReachability(a=>{a&&g()}),()=>{c=!0,f()}}function g(a){return{subscribeOnline:a=>()=>{},subscribeReachability:a.subscribeReachability,probe:a.probe}}},38557:(a,b,c)=>{"use strict";c.d(b,{Fx:()=>o,Rh:()=>n,_X:()=>g,fl:()=>k,nG:()=>m,sV:()=>h});var d=c(38301),e=c(74930);let f="/api/capabilities";function g(a){return!1!==a.browserOnline&&("connected"===a.realtimeStatus||!0===a.serverReachable)}function h(a){return!1===a.browserOnline||!1===a.serverReachable}let i=new Map;async function j(a,b){let c="function"==typeof AbortController?new AbortController:void 0,d=c?setTimeout(()=>c.abort(),b):void 0;try{return await fetch(a,{method:"GET",cache:"no-store",credentials:"same-origin",signal:c?.signal}),!0}catch{return!1}finally{void 0!==d&&clearTimeout(d)}}function k(a=f,b=5e3){if("function"!=typeof fetch)return Promise.resolve(!1);let c=i.get(a);if(c)return c;let d=j(a,b).finally(()=>{i.delete(a)});return i.set(a,d),d}let l=new Set;function m(a){l.forEach(b=>{try{b(a)}catch{}})}function n(a){return l.add(a),()=>{l.delete(a)}}function o(a={}){let{probeUrl:b=f,probeDelayMs:c=1e3,probeIntervalMs:g=15e3,probeTimeoutMs:h=5e3,surfaceDelayMs:i=1500,probe:j=!0}=a,{status:l}=(0,e.xM)(),[m,n]=(0,d.useState)(!0),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useState)(null),t=(0,d.useCallback)(a=>{q(b=>b===a?b:a),a&&s(Date.now())},[]),u=(0,d.useMemo)(()=>({browserOnline:m,realtimeStatus:l,serverReachable:p}),[m,l,p]),v=u.browserOnline?"connected"===u.realtimeStatus?"online":!1===u.serverReachable?"offline":!0===u.serverReachable||"connecting"===u.realtimeStatus?"reconnecting":"offline":"offline",w="online"!==v,x=(0,d.useRef)({url:b,timeoutMs:h});x.current={url:b,timeoutMs:h};let[y,z]=(0,d.useState)(!1),A=(0,d.useCallback)(()=>{if("function"!=typeof fetch)return;let{url:a,timeoutMs:b}=x.current;k(a,b).then(t)},[t]);return(0,d.useMemo)(()=>({status:v,isOnline:"online"===v,isReconnecting:"reconnecting"===v,isOffline:"offline"===v,shouldSurface:w&&y,signals:u,lastReachableAt:r,recheck:A}),[v,w,y,u,r,A])}},38898:(a,b,c)=>{var d={"./en/schedule.json":[95571,5571],"./ja/schedule.json":[26285,6285]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=38898,a.exports=e},39800:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(21124),e=c(38301),f=c(35914);c(38557);let g={en:{chunkTitle:"Updating to the latest version",chunkDescription:"A newer version of CommandMate is available. Reloading to get the latest update…",offlineTitle:"You're offline",offlineDescription:"Part of the page could not be loaded because the device is off the network. It will be retried automatically as soon as the connection is back.",offlineWaiting:"Waiting for the connection to come back…",genericTitle:"Something went wrong",genericDescription:"An unexpected error occurred. Please reload the page.",reload:"Reload",retry:"Retry"},ja:{chunkTitle:"最新バージョンに更新しています",chunkDescription:"CommandMate の新しいバージョンが利用可能です。最新の状態にするため再読み込みします…",offlineTitle:"接続が切れています",offlineDescription:"ネットワークに接続できないため、ページの一部を読み込めませんでした。接続が戻り次第、自動でやり直します。",offlineWaiting:"接続の回復を待っています…",genericTitle:"問題が発生しました",genericDescription:"予期しないエラーが発生しました。ページを再読み込みしてください。",reload:"再読み込み",retry:"再試行"}};function h({error:a,reset:b}){let c=(0,f.oz)(a),[h,i]=(0,e.useState)("en"),[j,k]=(0,e.useState)(!1),l=(0,e.useCallback)(()=>{j?b():window.location.reload()},[j,b]),m=g[h],n=j?m.offlineTitle:c?m.chunkTitle:m.genericTitle,o=j?m.offlineDescription:c?m.chunkDescription:m.genericDescription;return(0,d.jsx)("html",{lang:h,style:{colorScheme:"light dark"},children:(0,d.jsxs)("body",{"data-error-kind":j?"chunk-offline":c?"chunk-reload":"unexpected",style:{margin:0,minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"1.5rem",padding:"1.5rem",textAlign:"center",background:"Canvas",color:"CanvasText",fontFamily:'system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'},children:[(0,d.jsxs)("div",{style:{maxWidth:"24rem"},children:[(0,d.jsx)("h1",{style:{fontSize:"1.5rem",fontWeight:600,margin:"0 0 0.5rem"},children:n}),(0,d.jsx)("p",{style:{fontSize:"0.875rem",opacity:.75,margin:0},children:o}),j&&(0,d.jsx)("p",{role:"status","aria-live":"polite",style:{fontSize:"0.75rem",opacity:.6,margin:"0.5rem 0 0"},children:m.offlineWaiting})]}),(0,d.jsx)("button",{type:"button",onClick:l,style:{appearance:"none",cursor:"pointer",borderRadius:"0.5rem",border:"1px solid currentColor",background:"transparent",color:"inherit",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:500},children:j?m.retry:m.reload})]})})}},43084:(a,b,c)=>{"use strict";c.d(b,{k:()=>g});var d=c(75338),e=c(94596);let f=["[animation-delay:0ms]","[animation-delay:150ms]","[animation-delay:300ms]"];function g(){let a=(0,e.A)("common");return(0,d.jsx)("div",{className:"flex w-full h-full min-h-[12rem] items-center justify-center p-8",role:"status","aria-label":a("loadingPage"),"data-testid":"route-loading",children:(0,d.jsx)("div",{className:"flex items-center gap-2","aria-hidden":"true",children:f.map(a=>(0,d.jsx)("span",{className:`h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse ${a}`},a))})})}},44164:(a,b,c)=>{Promise.resolve().then(c.bind(c,64182))},46649:(a,b,c)=>{Promise.resolve().then(c.bind(c,90039)),Promise.resolve().then(c.bind(c,80776))},47817:(a,b,c)=>{"use strict";c.d(b,{$f:()=>k,H8:()=>j});var d=c(21124),e=c(38301),f=c(78352);let g=(0,e.createContext)(null),h={selectedWorktreeId:null,worktrees:[],repositories:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function i(a,b){switch(b.type){case"SET_WORKTREES":return{...a,worktrees:b.worktrees,isLoading:!1};case"SET_REPOSITORIES":return{...a,repositories:b.repositories};case"SELECT_WORKTREE":{let c=a.worktrees.find(a=>a.id===b.id)??null;return{...a,selectedWorktreeId:b.id,selectedWorktreeDetail:c??a.selectedWorktreeDetail,isLoadingDetail:null===c}}case"SET_WORKTREE_DETAIL":return{...a,selectedWorktreeDetail:b.detail};case"SET_LOADING":return{...a,isLoading:b.isLoading};case"SET_LOADING_DETAIL":return{...a,isLoadingDetail:b.isLoadingDetail};case"SET_ERROR":return{...a,error:b.error,isLoading:!1};default:return a}}function j({children:a,externalWorktrees:b,externalRepositories:c,externalIsLoading:j,externalError:k,externalRefresh:l}){let m=void 0!==b,[n,o]=(0,e.useReducer)(i,h),p=(0,e.useCallback)(async()=>{if(!m){o({type:"SET_LOADING",isLoading:!0}),o({type:"SET_ERROR",error:null});try{let a=await f.y.getAll();o({type:"SET_WORKTREES",worktrees:a.worktrees}),o({type:"SET_REPOSITORIES",repositories:a.repositories??[]})}catch(a){o({type:"SET_ERROR",error:a instanceof Error?a.message:"Failed to fetch worktrees"})}}},[m]),q=(0,e.useCallback)(async a=>{o({type:"SELECT_WORKTREE",id:a}),o({type:"SET_ERROR",error:null});try{f.y.markAsViewed(a).catch(a=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",a)});let b=await f.y.getById(a);o({type:"SET_WORKTREE_DETAIL",detail:b})}catch(a){o({type:"SET_ERROR",error:a instanceof Error?a.message:"Failed to fetch worktree detail"})}finally{o({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),r=(0,e.useCallback)(async()=>{if(m&&l)return void await l();await p()},[m,l,p]),s=m&&void 0!==j?j:n.isLoading,t=m&&k?k.message:null,u={selectedWorktreeId:n.selectedWorktreeId,worktrees:n.worktrees,repositories:n.repositories,selectedWorktreeDetail:n.selectedWorktreeDetail,isLoading:s,isLoadingDetail:n.isLoadingDetail,error:t??n.error,selectWorktree:q,refreshWorktrees:r};return(0,d.jsx)(g.Provider,{value:u,children:a})}function k(){let a=(0,e.useContext)(g);if(!a)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return a}},48620:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(75338),e=c(43084);function f(){return(0,d.jsx)(e.k,{})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>q,generateMetadata:()=>o,viewport:()=>p});var d=c(75338),e=c(68071),f=c(22513),g=c(42531),h=c(10620),i=c(4986),j=c.n(i),k=c(68034),l=c.n(k),m=c(58315),n=c(29966);async function o(){return{title:{default:"CommandMate",template:"%s | CommandMate"},description:(await (0,e.A)("common"))("meta.description"),appleWebApp:{capable:!0,title:"CommandMate",statusBarStyle:"default"}}}c(61135);let p={themeColor:[{media:"(prefers-color-scheme: light)",color:"#fafafb"},{media:"(prefers-color-scheme: dark)",color:"#0a0c12"}],viewportFit:"cover"};async function q({children:a}){let b=await (0,f.A)(),c=await (0,g.A)(),e=await (0,h.A)();return(0,d.jsx)("html",{lang:b,className:`${j().variable} ${l().variable}`,suppressHydrationWarning:!0,children:(0,d.jsx)("body",{className:"min-h-screen bg-background",children:(0,d.jsx)(m.AppProviders,{locale:b,messages:c,timeZone:e,authEnabled:!!process.env.CM_AUTH_TOKEN_HASH,children:(0,d.jsx)(n.AppShellGate,{children:a})})})})}},51877:(a,b,c)=>{var d={"./en/auth.json":[43440,3440],"./ja/auth.json":[11162,1162]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=51877,a.exports=e},52120:(a,b,c)=>{"use strict";c.d(b,{PL:()=>e,sb:()=>f});let d={idle:"bg-muted-foreground",ready:"bg-success",spinner:"border-info",waiting:"bg-warning"},e={idle:{className:d.idle,labelKey:"status.idle",type:"dot"},ready:{className:d.ready,labelKey:"status.ready",type:"dot"},running:{className:d.spinner,labelKey:"status.running",type:"spinner"},waiting:{className:d.waiting,labelKey:"status.waiting",type:"dot"},generating:{className:d.spinner,labelKey:"status.generating",type:"spinner"}},f={idle:"detailStatus.idle",ready:"detailStatus.ready",running:"detailStatus.running",waiting:"detailStatus.waiting"}},52130:(a,b,c)=>{Promise.resolve().then(c.bind(c,53523))},52761:(a,b,c)=>{"use strict";c.d(b,{Bo:()=>k,Hq:()=>i});var d=c(21124),e=c(38301),f=c(42378);let g={startTransition:a=>a()},h=(0,e.createContext)(null);function i(){let a=(0,f.useRouter)(),{startTransition:b}=(0,e.useContext)(h)??g;return(0,e.useMemo)(()=>({push:c=>b(()=>a.push(c)),replace:c=>b(()=>a.replace(c))}),[a,b])}function j({onCommit:a}){return(0,f.usePathname)(),(0,e.useRef)(!1),null}function k({children:a}){let b=(0,e.useRef)(null),c=(0,e.useCallback)(()=>{b.current?.()},[]),f=(0,e.useCallback)(a=>{var c;c=()=>new Promise(c=>{let d=!1,e=()=>{d||(d=!0,c())};b.current=e,a(),window.setTimeout(e,500)}),"undefined"==typeof document||"function"!=typeof document.startViewTransition?c():document.startViewTransition(c)},[]),g=(0,e.useMemo)(()=>({startTransition:f}),[f]);return(0,d.jsxs)(h.Provider,{value:g,children:[(0,d.jsx)(j,{onCommit:c}),a]})}},53237:(a,b,c)=>{"use strict";c.d(b,{V:()=>e});var d=c(38301);function e(a){let{key:b,defaultValue:c,validate:e,serialize:f=JSON.stringify,deserialize:g=JSON.parse}=a,h=(0,d.useRef)(c),i=(0,d.useRef)(e),j=(0,d.useRef)(f),k=(0,d.useRef)(g);h.current=c,i.current=e,j.current=f,k.current=g;let[l,m]=(0,d.useState)(!1),[n,o]=(0,d.useState)(c);(0,d.useCallback)(()=>h.current,[b]);let p=(0,d.useCallback)(a=>{},[b]);return{value:n,setValue:(0,d.useCallback)(a=>{o(b=>{let c="function"==typeof a?a(b):a;return p(c),c})},[p]),removeValue:(0,d.useCallback)(()=>{o(h.current)},[b]),isAvailable:l}}},53906:(a,b,c)=>{Promise.resolve().then(c.bind(c,5682))},54834:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,77526,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,12263,23)),Promise.resolve().then(c.bind(c,82146))},56379:(a,b,c)=>{"use strict";c.d(b,{V:()=>i});var d=c(21124),e=c(20481),f=c(23910),g=c(94260),h=c(17793);function i(){let a=(0,e.c)("worktree"),{updateInfo:b,hasUpdate:c,canSelfUpdate:i,state:j,logPath:k,errorKey:l,openConfirm:m}=(0,f.Y)();if(!b||!c&&"idle"===j)return null;let{latestVersion:n,releaseUrl:o,updateCommand:p,installType:q}=b,r="npx"===q,s=r?"npx commandmate@latest":"commandmate update";return(0,d.jsxs)("div",{className:"bg-accent-50 border border-accent-200 rounded-lg p-3 mt-2",role:"status","aria-label":a("update.available"),"data-testid":"update-notification-banner",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800 mb-1",children:a("update.available")}),n&&(0,d.jsx)("p",{className:"text-sm text-accent-700 mb-2",children:a("update.latestVersion",{version:n})}),i&&"idle"===j&&(0,d.jsx)(g.$,{variant:"primary",size:"sm",className:"mb-2",onClick:m,"data-testid":"update-now-button",children:a("update.updateNow")}),r&&"idle"===j&&(0,d.jsx)("p",{className:"text-xs text-accent-600 mb-2","data-testid":"update-npx-notice",children:a("update.npxRestartNotice")}),("starting"===j||"updating"===j)&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-progress",children:[(0,d.jsxs)("p",{className:"flex items-center text-sm text-accent-800",children:[(0,d.jsx)(h.y,{size:"sm",className:"mr-2"}),a("starting"===j?"update.starting":"update.updating")]}),"updating"===j&&(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.updatingHint")})]}),"no-restart"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-no-restart",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.noRestartTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.noRestartDescription")})]}),"timeout"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-timeout",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.timeoutTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.timeoutDescription")}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 mt-1 text-xs text-accent-900 font-mono",children:s})]}),"error"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-error",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.errorTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:l?a(l):null}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 mt-1 text-xs text-accent-900 font-mono",children:s})]}),k&&("no-restart"===j||"timeout"===j)&&(0,d.jsx)("p",{className:"text-xs text-accent-500 mb-2","data-testid":"update-log-hint",children:a("update.logHint",{path:k})}),p&&"global"===q&&"idle"===j&&(0,d.jsxs)("div",{className:"mb-2",children:[(0,d.jsx)("p",{className:"text-xs text-accent-600 mb-1",children:a("update.updateCommand")}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 text-xs text-accent-900 font-mono",children:p})]}),o&&(0,d.jsxs)("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-sm text-accent-600 hover:text-accent-800 underline",children:[a("update.viewRelease"),(0,d.jsx)("span",{className:"ml-1","aria-hidden":"true",children:"→"})]}),(0,d.jsx)("p",{className:"text-xs text-accent-500 mt-2",children:a("update.dataPreserved")})]})}},57482:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(97523);let e=async a=>[{type:"image/png",sizes:"192x192",url:(0,d.fillMetadataSegment)(".",await a.params,"icon2.png")+"?6e2321fdb8624653"}]},58315:(a,b,c)=>{"use strict";c.d(b,{AppProviders:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call AppProviders() from the server but AppProviders is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/providers/AppProviders.tsx","AppProviders")},58970:(a,b,c)=>{"use strict";c.d(b,{$B:()=>j,I2:()=>f,LK:()=>h,Ys:()=>i,pX:()=>d,s7:()=>e,tX:()=>g});let d=2e3,e=1500,f=2e3,g=150,h=100,i=200,j=100},60345:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(97523);let e=async a=>[{type:"image/png",sizes:"96x96",url:(0,d.fillMetadataSegment)(".",await a.params,"icon1.png")+"?901e04bb11e9b7fd"}]},60887:(a,b,c)=>{var d={"./en/review.json":[83346,3346],"./ja/review.json":[49328,9328]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=60887,a.exports=e},60957:(a,b,c)=>{"use strict";c.d(b,{H:()=>m});var d=c(21124),e=c(38301),f=c(20481),g=c(2535),h=c(94260),i=c(98033),j=c(56379),k=c(23910),l=c(90076);function m(){let a=(0,f.c)("worktree"),b=(0,l.a)(),{updateInfo:c,hasUpdate:m,canSelfUpdate:n,state:o,openConfirm:p}=(0,k.Y)(),[q,r]=(0,e.useState)(!1),s=c?.latestVersion??null;if(b||!s||"idle"===o&&!m)return null;let t="starting"===o||"updating"===o,u="no-restart"===o||"timeout"===o||"error"===o,v=a("update.buttonLabel",{version:s});return n||t||u?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(h.$,{type:"button",variant:"primary",size:"sm",loading:t,onClick:u?()=>r(!0):p,className:"flex-shrink-0 gap-1.5 whitespace-nowrap","aria-label":t?a("update.buttonUpdating"):a("update.buttonAriaLabel",{version:s}),"aria-haspopup":"dialog","aria-busy":t,"data-testid":"app-update-button","data-state":o,children:[!t&&(0,d.jsx)(g.A,{size:16,"aria-hidden":"true"}),(0,d.jsx)("span",{children:t?a("update.buttonUpdating"):v})]}),u&&(0,d.jsx)(i.a,{isOpen:q,onClose:()=>r(!1),title:a("update.statusDialogTitle"),size:"sm",children:(0,d.jsx)(j.V,{})})]}):(0,d.jsxs)("a",{href:c?.releaseUrl??"https://github.com/Kewton/CommandMate/releases/latest",target:"_blank",rel:"noopener noreferrer",className:"inline-flex flex-shrink-0 items-center justify-center gap-1.5 whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium bg-accent-600 dark:bg-accent-500 text-white hover:bg-accent-700 dark:hover:bg-accent-600 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":a("update.buttonReleaseAriaLabel",{version:s}),"data-testid":"app-update-button",children:[(0,d.jsx)(g.A,{size:16,"aria-hidden":"true"}),(0,d.jsx)("span",{children:v})]})}},61118:(a,b,c)=>{var d={"./en/common.json":[73543,3543],"./ja/common.json":[53945,3945]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=61118,a.exports=e},61135:()=>{},61916:(a,b,c)=>{"use strict";c.d(b,{jg:()=>f,kQ:()=>g,mR:()=>j,mS:()=>i,wf:()=>d});let d="terminal",e=new Set(["terminal","chat"]);function f(a){return"string"==typeof a&&e.has(a)}let g={data:null,messageId:null,visible:!1,answering:!1},h={mode:"split",mobileActivePane:"terminal",leftPaneTab:"history",splitRatio:.5,leftPaneCollapsed:!1,activityBar:{active:"files"},historyPane:{visible:!0,width:25,collapsed:!1}},i={type:null,message:null,retryable:!1,retryCount:0};function j(){return{phase:"idle",prompt:{...g},layout:{...h},error:{...i},messages:[],wsConnected:!1}}},62081:(a,b,c)=>{var d={"./en/autoYes.json":[44248,4248],"./ja/autoYes.json":[92534,2534]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=62081,a.exports=e},62197:(a,b,c)=>{"use strict";c.d(b,{NS:()=>h,V0:()=>i});var d=c(21124),e=c(38301);let f=()=>{},g=(0,e.createContext)({isOpen:!1,open:f,close:f});function h({children:a}){let[b,c]=(0,e.useState)(!1),f=(0,e.useCallback)(()=>c(!0),[]),h=(0,e.useCallback)(()=>c(!1),[]),i=(0,e.useMemo)(()=>({isOpen:b,open:f,close:h}),[b,f,h]);return(0,d.jsx)(g.Provider,{value:i,children:a})}function i(){return(0,e.useContext)(g)}},63157:(a,b,c)=>{"use strict";c.d(b,{g7:()=>k,rC:()=>m,Fn:()=>l});var d=c(21124),e=c(38301),f=c(78352),g=c(74930);let h=[2e3,5e3,1e4];var i=c(47817);let j=(0,e.createContext)(null);function k({children:a}){let{worktrees:b,repositories:c,isLoading:k,error:l,refresh:m}=function(){let[a,b]=(0,e.useState)([]),[c,d]=(0,e.useState)([]),[i,j]=(0,e.useState)(!0),[k,l]=(0,e.useState)(null),m=(0,e.useRef)(null),n=(0,e.useRef)([]),o=(0,e.useRef)(null),p=(0,e.useRef)(0),q=(0,e.useRef)(null),r=(0,e.useRef)(!1),s=(0,e.useRef)(async()=>{}),t=(0,e.useCallback)(()=>{null!==q.current&&(clearTimeout(q.current),q.current=null)},[]),{connected:u,subscribe:v,unsubscribe:w,addListener:x}=(0,g.xM)(),y=(0,e.useRef)(u);y.current=u;let z=(0,e.useCallback)(async()=>{try{l(null),r.current&&0===n.current.length&&j(!0);let a=await fetch("/api/worktrees"),c=(0,f.O0)(a);if(c)throw c;if(!a.ok)throw Error(`Failed to fetch worktrees: ${a.status}`);let g=(0,f.xd)(a);if(g)throw g;let h=await a.json(),i=h.worktrees??[],k=h.repositories??[];(0,e.startTransition)(()=>{b(i),d(k),j(!1)}),n.current=i,r.current=!1,p.current=0,t()}catch(c){let a=c instanceof Error?c:Error(String(c));console.error("[useWorktreesCache] Failed to fetch worktrees:",a),r.current=!0,l(a),j(!1);let b=p.current;0===n.current.length&&b<h.length&&(p.current=b+1,t(),q.current=setTimeout(()=>{q.current=null,s.current()},h[b]))}},[t]);s.current=z;let A=(0,e.useCallback)(()=>n.current.some(a=>!0===a.isSessionRunning),[]),B=(0,e.useCallback)(()=>{let a=A();return y.current?a?2e4:6e4:a?5e3:3e4},[A]),C=(0,e.useCallback)(()=>{null!==m.current&&(clearInterval(m.current),m.current=null),o.current=null},[]);return(0,e.useCallback)(()=>{C();let a=B();o.current=a,m.current=setInterval(()=>{z()},a)},[B,z,C]),a.map(a=>a.id).sort().join(" "),{worktrees:a,repositories:c,isLoading:i,error:k,refresh:z}}(),n=(0,e.useMemo)(()=>({worktrees:b,repositories:c,isLoading:k,error:l,refresh:m}),[b,c,k,l,m]);return(0,d.jsx)(j.Provider,{value:n,children:(0,d.jsx)(i.H8,{externalWorktrees:b,externalRepositories:c,externalIsLoading:k,externalError:l,externalRefresh:m,children:a})})}function l(){let a=(0,e.useContext)(j);if(null===a)throw Error("useWorktreesCacheContext must be used within a WorktreesCacheProvider");return a}function m(){return(0,e.useContext)(j)}},63474:(a,b,c)=>{"use strict";c.d(b,{dj:()=>w,tE:()=>v});var d=c(21124),e=c(38301),f=c(23312),g=c(20481),h=c(75219),i=c(91292),j=c(16945),k=c(71117),l=c(47089),m=c(11010),n=c(58970),o=c(6074);let p=3e3;function q({type:a,iconColor:b}){let c=`h-5 w-5 ${b}`;switch(a){case"success":return(0,d.jsx)(h.A,{className:c,"data-testid":"toast-icon-success"});case"error":return(0,d.jsx)(i.A,{className:c,"data-testid":"toast-icon-error"});case"warning":return(0,d.jsx)(j.A,{className:c,"data-testid":"toast-icon-warning"});default:return(0,d.jsx)(k.A,{className:c,"data-testid":"toast-icon-info"})}}function r({id:a,message:b,type:c,onClose:f,duration:h=p,onClick:i}){let j=(0,g.c)("common"),k=(0,e.useRef)(null),m=function(a){switch(a){case"success":return{bgColor:"bg-success-subtle",borderColor:"border-success-border",textColor:"text-success-foreground",iconColor:"text-success-foreground"};case"error":return{bgColor:"bg-danger-subtle",borderColor:"border-danger-border",textColor:"text-danger-foreground",iconColor:"text-danger-foreground"};case"warning":return{bgColor:"bg-warning-subtle",borderColor:"border-warning-border",textColor:"text-warning-foreground",iconColor:"text-warning-foreground"};default:return{bgColor:"bg-info-subtle",borderColor:"border-info-border",textColor:"text-info-foreground",iconColor:"text-info-foreground"}}}(c),[r,s]=(0,e.useState)(!0),{shouldRender:t,isExiting:u}=(0,o.O)(r,n.Ys);(0,e.useRef)(f).current=f;let v=(0,e.useCallback)(()=>{k.current&&clearTimeout(k.current),s(!1)},[]);return(0,d.jsxs)("div",{"data-testid":`toast-${a}`,role:"alert",className:`
|
|
1
|
+
exports.id=8581,exports.ids=[8581],exports.modules={762:(a,b,c)=>{Promise.resolve().then(c.bind(c,96908))},1102:(a,b,c)=>{"use strict";c.d(b,{m_:()=>i});var d=c(21124),e=c(38301),f=c(23312);function g(a,b,c){return Math.min(Math.max(a,4),Math.max(4,c-b-4))}let h={top:-9999,left:-9999};function i({content:a,placement:b="right",delay:c=100,children:i,className:j}){let[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=(0,e.useRef)(null),s=(0,e.useRef)(null),t=(0,e.useCallback)(()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)},[]),u=(0,e.useCallback)(()=>{t(),s.current=setTimeout(()=>{l(!0),s.current=null},c)},[c,t]),v=(0,e.useCallback)(()=>{t(),l(!1)},[t]),w=(0,e.useCallback)(()=>{n(!0)},[]),x=(0,e.useCallback)(()=>{n(!1)},[]);return(0,e.useCallback)(()=>{t(),l(!1),n(!1)},[t]),(0,e.useCallback)(()=>{let a=q.current,c=r.current;if(!a||!c)return;let d=a.getBoundingClientRect(),e=c.getBoundingClientRect();p(function(a,b,c,d){let e,f,h=b.left+b.width/2-c.width/2,i=b.top+b.height/2-c.height/2;switch(a){case"top":e=b.top-c.height-8,f=h;break;case"bottom":e=b.top+b.height+8,f=h;break;case"left":e=i,f=b.left-c.width-8;break;default:e=i,f=b.left+b.width+8}return{top:g(e,c.height,d.height),left:g(f,c.width,d.width)}}(b,{top:d.top,left:d.left,width:d.width,height:d.height},{width:e.width,height:e.height},{width:window.innerWidth,height:window.innerHeight}))},[b]),(0,d.jsxs)("span",{ref:q,"data-testid":"tooltip-wrapper",className:j?`relative inline-flex ${j}`:"relative inline-flex",tabIndex:-1,onMouseEnter:u,onMouseLeave:v,onFocus:w,onBlur:x,children:[i,(k||m)&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("span",{ref:r,role:"tooltip","aria-hidden":"true","data-placement":b,className:"fixed z-40 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:o??h,children:a}),document.body)]})}},1483:(a,b,c)=>{var d={"./en/keyboardShortcuts.json":[53722,1341],"./ja/keyboardShortcuts.json":[88356,8356]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=1483,a.exports=e},1637:(a,b,c)=>{"use strict";c.d(b,{Ej:()=>k,Jd:()=>h,Mq:()=>j,rH:()=>i});var d=c(21124),e=c(38301),f=c(20481),g=c(22317);let h="bg-transparent border-2 border-muted-foreground",i="status.unknown";function j(a,b){return!0===b&&"ready"===a}let k=(0,e.memo)(function({status:a,label:b,waitingKind:c,unclassified:e}){let k=(0,f.c)("common"),l=j(a,e);return(0,d.jsx)(g.m,{"data-testid":"status-indicator",status:a,label:l?b??k(i):b,waitingKind:c,size:"lg",className:l?h:void 0,"data-unclassified":l?"true":void 0})})},4267:(a,b,c)=>{"use strict";c.d(b,{Lt:()=>h,Wj:()=>f,eu:()=>e,fJ:()=>g});var d=c(17252);let e=2,f=6,g=["claude","codex","antigravity"];function h(a){return a.length<e||a.length>f?{valid:!1,error:`Must be ${e}-${f} elements`}:a.every(a=>"string"==typeof a&&d.XH.includes(a))?new Set(a).size!==a.length?{valid:!1,error:"Duplicate tool IDs not allowed"}:{valid:!0,value:a}:{valid:!1,error:"Invalid CLI tool ID"}}},4558:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(43692),e=c(86802),f=c(25754);let g=(0,d.A)(async({requestLocale:a})=>{let b=await a;if(!(0,f.d9)(b)){let a=await (0,e.UL)(),c=await (0,e.b3)();b=(0,f.rv)(a.get(f.gB)?.value,c.get("accept-language"))}let[d,g,h,i,j,k,l,m,n,o,p,q,r,s,t]=await Promise.all([c(61118)(`./${b}/common.json`),c(90338)(`./${b}/worktree.json`),c(62081)(`./${b}/autoYes.json`),c(66125)(`./${b}/error.json`),c(72637)(`./${b}/prompt.json`),c(51877)(`./${b}/auth.json`),c(38898)(`./${b}/schedule.json`),c(80407)(`./${b}/commandPalette.json`),c(70288)(`./${b}/home.json`),c(60887)(`./${b}/review.json`),c(75567)(`./${b}/pwa.json`),c(99127)(`./${b}/notifications.json`),c(1483)(`./${b}/keyboardShortcuts.json`),c(80812)(`./${b}/externalApps.json`),c(18913)(`./${b}/skills.json`)]);return{locale:b,timeZone:"UTC",messages:{common:d.default,worktree:g.default,autoYes:h.default,error:i.default,prompt:j.default,auth:k.default,schedule:l.default,commandPalette:m.default,home:n.default,review:o.default,pwa:p.default,notifications:q.default,keyboardShortcuts:r.default,externalApps:s.default,skills:t.default}}})},5682:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/CommandMate/CommandMate/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/app/error.tsx","default")},5772:(a,b,c)=>{"use strict";c.d(b,{Ps:()=>k,W5:()=>j});var d=c(21124),e=c(38301),f=c(90076),g=c(12480);let h={size:g.r5,setSize:()=>{},isMobile:!1,factor:g.d8[g.r5].factor,isAvailable:!1},i=(0,e.createContext)(h);function j({children:a}){let{size:b,setSize:c,isAvailable:h}=(0,g.of)(),j=(0,f.a)(),k=(0,e.useMemo)(()=>({size:b,setSize:c,isMobile:j,factor:g.d8[b].factor,isAvailable:h}),[b,c,j,h]);return(0,d.jsx)(i.Provider,{value:k,children:a})}function k(){return(0,e.useContext)(i)}},6074:(a,b,c)=>{"use strict";c.d(b,{O:()=>e});var d=c(38301);function e(a,b){let[c,e]=(0,d.useState)(a?"open":"closed");return a&&"open"!==c?e("open"):a||"open"!==c||e("exiting"),{shouldRender:a||"closed"!==c,isExiting:!a&&"exiting"===c}}},8509:(a,b,c)=>{"use strict";c.d(b,{g:()=>h});var d=c(21124);c(38301);var e=c(20481),f=c(5772),g=c(12480);function h(){let{size:a,setSize:b,isMobile:c}=(0,f.Ps)(),h=(0,e.c)("common");if(c)return null;let i=h("displaySize.ariaLabel");return(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("label",{htmlFor:"pc-display-size",className:"sr-only",children:i}),(0,d.jsx)("select",{id:"pc-display-size","data-testid":"pc-display-size-select","aria-label":i,value:a,onChange:a=>{let c=a.target.value;(0,g.fM)(c)&&b(c)},className:"text-sm bg-transparent text-foreground border border-input rounded-md px-2 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:g.Uf.map(a=>(0,d.jsx)("option",{value:a,children:h(`displaySize.${a}`)},a))})]})}},10290:(a,b,c)=>{"use strict";c.d(b,{Hr:()=>q,Ht:()=>p,SQ:()=>n,_2:()=>o,lp:()=>r,mB:()=>s,rI:()=>l,ty:()=>m});var d=c(21124),e=c(38301),f=c.n(e),g=c(12927),h=c(71613),i=c(90133),j=c(11010),k=c(35595);let l=g.bL,m=g.l9;g.YJ;let n=f().forwardRef(({className:a,sideOffset:b=4,...c},e)=>(0,d.jsx)(g.ZL,{children:(0,d.jsx)(g.UC,{ref:e,sideOffset:b,style:{zIndex:j.M.POPOVER},className:(0,k.cn)("min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 text-surface-foreground shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...c})}));n.displayName="DropdownMenuContent";let o=f().forwardRef(({className:a,inset:b,...c},e)=>(0,d.jsx)(g.q7,{ref:e,className:(0,k.cn)("relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",b&&"pl-8",a),...c}));o.displayName="DropdownMenuItem",f().forwardRef(({className:a,children:b,checked:c,...e},f)=>(0,d.jsxs)(g.H_,{ref:f,checked:c,className:(0,k.cn)("relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...e,children:[(0,d.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,d.jsx)(g.VF,{children:(0,d.jsx)(h.A,{size:16,"aria-hidden":"true"})})}),b]})).displayName="DropdownMenuCheckboxItem";let p=f().forwardRef(({className:a,children:b,...c},e)=>(0,d.jsxs)(g.hN,{ref:e,className:(0,k.cn)("relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none","focus:bg-muted focus:text-surface-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...c,children:[(0,d.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,d.jsx)(g.VF,{children:(0,d.jsx)(i.A,{size:8,className:"fill-current","aria-hidden":"true"})})}),b]}));p.displayName="DropdownMenuRadioItem";let q=g.z6,r=f().forwardRef(({className:a,inset:b,...c},e)=>(0,d.jsx)(g.JU,{ref:e,className:(0,k.cn)("px-2 py-1.5 text-xs font-semibold text-muted-foreground",b&&"pl-8",a),...c}));r.displayName="DropdownMenuLabel";let s=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.wv,{ref:c,className:(0,k.cn)("-mx-1 my-1 h-px bg-border",a),...b}));s.displayName="DropdownMenuSeparator"},11010:(a,b,c)=>{"use strict";c.d(b,{M:()=>d});let d={DROPDOWN:10,SIDEBAR:30,MODAL:50,MAXIMIZED_EDITOR:55,TOAST:60,POPOVER:65,CONTEXT_MENU:70}},12055:(a,b,c)=>{"use strict";c.d(b,{Oo:()=>e,ST:()=>d,T4:()=>h,dz:()=>g,rz:()=>f,zS:()=>i});let d="client_version",e="version_mismatch",f="chat_turn_progress",g="messages_invalidated",h="model_changed";function i(a){let b;try{b=JSON.parse(a)}catch{return null}if(!b||"object"!=typeof b)return null;let c=b;if("broadcast"===c.type){let a=c.data;return a&&"object"==typeof a?"string"!=typeof a.type?null:(void 0===a.worktreeId&&"string"==typeof c.worktreeId&&(a.worktreeId=c.worktreeId),a):null}return"string"==typeof c.type?c:null}},12480:(a,b,c)=>{"use strict";c.d(b,{Uf:()=>f,d8:()=>g,fM:()=>h,of:()=>j,r5:()=>e,rq:()=>i});var d=c(53237);let e="medium",f=["large","medium","small","xsmall"],g={large:{value:"large",rootFontSizePx:18,factor:1.125,terminalFontSize:16},medium:{value:"medium",rootFontSizePx:16,factor:1,terminalFontSize:14},small:{value:"small",rootFontSizePx:14,factor:.875,terminalFontSize:12},xsmall:{value:"xsmall",rootFontSizePx:12.5,factor:.78,terminalFontSize:11}};function h(a){return"string"==typeof a&&Object.prototype.hasOwnProperty.call(g,a)}function i(a){return g[a].terminalFontSize}function j(){let{value:a,setValue:b,isAvailable:c}=(0,d.V)({key:"mcbd-pc-display-size",defaultValue:e,validate:h});return{size:a,setSize:b,isAvailable:c}}},16730:(a,b,c)=>{"use strict";c.d(b,{BV:()=>n,Ct:()=>g,Hi:()=>d,K3:()=>e,PS:()=>l,SR:()=>f,T2:()=>j,Z3:()=>m,nk:()=>k});let d=0,e=8e3,f=2,g=2e4,h=[408,425,429,500,502,503,504],i=["GET","HEAD","OPTIONS"],j=3e4;function k(a){let b=(a??"GET").toUpperCase();return i.includes(b)}function l(a){return h.includes(a)}function m(a){return k(a)?1e4:3e4}function n(a,b=Math.random()){let c=Number.isFinite(a)&&a>0?Math.floor(a):0,d=Math.min(500*2**c,4e3);return Math.max(0,Math.round(d+.25*d*(2*b-1)))}},17252:(a,b,c)=>{"use strict";c.d(b,{Ab:()=>e,NL:()=>q,O6:()=>n,XH:()=>d,f_:()=>l,hR:()=>j,lu:()=>o,n6:()=>h,oo:()=>k,pQ:()=>f,sw:()=>m,vz:()=>p});let d=["claude","codex","gemini","vibe-local","opencode","copilot","antigravity","command-code","opencode-v2"],e=10,f=50,g=/^[a-zA-Z0-9_-]+$/;function h(a){return"string"==typeof a&&a.length>0&&a.length<=64&&g.test(a)}let i={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode",copilot:"Copilot",antigravity:"Antigravity","command-code":"Command Code","opencode-v2":"OpenCode V2"};function j(a){return d.includes(a)}function k(a){return i[a]??a}function l(a,b="Assistant"){return a&&j(a)?k(a):b}function m(a){let b=a.alias;return"string"==typeof b&&b.trim().length>0?b:k(a.cliTool)}function n(a,b,c){let d=a.find(a=>a.id===b);return d?m(d):k(c)}function o(a){return a.map((a,b)=>({id:a,cliTool:a,alias:k(a),order:b}))}let p=128,q=2097152},17793:(a,b,c)=>{"use strict";c.d(b,{y:()=>h});var d=c(21124);c(38301);var e=c(35595);let f={xs:"h-3 w-3",sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6",xl:"h-8 w-8"},g={current:"",accent:"text-accent-600 dark:text-accent-400",muted:"text-muted-foreground"};function h({size:a="md",variant:b="current",className:c,...h}){return(0,d.jsxs)("svg",{className:(0,e.cn)("animate-spin",f[a],g[b],c),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","aria-hidden":"true",...h,children:[(0,d.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,d.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}},18608:(a,b,c)=>{"use strict";c.d(b,{W:()=>q,n:()=>r});var d=c(21124),e=c(38301),f=c(20481),g=c(16945),h=c(25345),i=c(47089),j=c(11010),k=c(74930),l=c(12055);let m=new Set;function n(a){return m.add(a),()=>{m.delete(a)}}function o(){return!1}function p(){return!1}function q(){return(0,e.useSyncExternalStore)(n,o,p)}function r(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),o=(0,e.useCallback)(a=>{if(a.type!==l.Oo)return;let{serverVersion:b,clientVersion:d}=a;"string"==typeof b&&"string"==typeof d&&b&&d&&b!==m&&c({serverVersion:b,clientVersion:d})},[m]);(0,k.T3)(o);let p=(0,e.useCallback)(()=>{window.location.reload()},[]),q=(0,e.useCallback)(()=>{c(a=>(a&&n(a.serverVersion),null))},[]);return b?(0,d.jsxs)("div",{"data-testid":"version-mismatch-banner",role:"alert","aria-live":"assertive",className:"fixed top-3 left-1/2 -translate-x-1/2 flex items-start gap-3 max-w-[92vw] rounded-lg border border-warning-border bg-warning-subtle px-4 py-3 text-warning-foreground shadow-lg",style:{zIndex:j.M.TOAST},children:[(0,d.jsx)(g.A,{className:"h-5 w-5 shrink-0 mt-0.5","aria-hidden":"true"}),(0,d.jsxs)("div",{className:"flex flex-col gap-0.5 text-sm",children:[(0,d.jsx)("span",{className:"font-semibold",children:a("versionMismatch.title")}),(0,d.jsx)("span",{children:a("versionMismatch.description",{serverVersion:b.serverVersion,clientVersion:b.clientVersion})})]}),(0,d.jsxs)("button",{type:"button","data-testid":"version-mismatch-reload",onClick:p,className:"shrink-0 inline-flex items-center gap-1.5 rounded-md border border-warning-border px-3 py-1.5 text-sm font-medium hover:opacity-80 focus:outline-none focus:ring-2 focus:ring-offset-2",children:[(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"}),a("versionMismatch.reload")]}),(0,d.jsx)("button",{type:"button","data-testid":"version-mismatch-dismiss",onClick:q,"aria-label":a("versionMismatch.dismiss"),className:"shrink-0 hover:opacity-70 focus:outline-none focus:ring-2 focus:ring-offset-2",children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})})]}):null}},18913:(a,b,c)=>{var d={"./en/skills.json":[55064,5064],"./ja/skills.json":[20022,22]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=18913,a.exports=e},19463:(a,b,c)=>{"use strict";c.d(b,{Lv:()=>f});var d=c(38301),e=c(63157);function f(){let a=(0,e.rC)(),b=a?.worktrees;return(0,d.useMemo)(()=>{let a=b?b.filter(a=>!0===a.isWaitingForResponse):[];return{count:a.length,worktrees:a}},[b])}},22317:(a,b,c)=>{"use strict";c.d(b,{m:()=>l});var d=c(21124);c(38301);var e=c(20481),f=c(35595);let g={idle:{colorClass:"bg-muted-foreground",labelKey:"status.idle"},ready:{colorClass:"bg-success",labelKey:"status.ready"},running:{colorClass:"bg-success text-success ring-2 ring-success/40",animationClass:"animate-status-glow",labelKey:"status.running"},generating:{colorClass:"bg-success text-success ring-2 ring-success/40",animationClass:"animate-status-glow",labelKey:"status.generating"},waiting:{colorClass:"bg-warning text-warning ring-4 ring-warning/50",animationClass:"animate-status-attention",labelKey:"status.waiting"},error:{colorClass:"bg-danger",labelKey:"status.error"}},h={colorClass:"bg-warning text-warning ring-2 ring-warning/40",animationClass:"animate-status-glow",labelKey:"status.waiting"},i=new Set(["menu","unclassified"]),j={colorClass:"bg-muted-foreground",labelKey:"status.unknown"},k={sm:"w-2 h-2",md:"w-2.5 h-2.5",lg:"w-3 h-3"};function l({status:a,size:b="md",label:c,waitingKind:l,className:m,...n}){let o=(0,e.c)("common"),p=function(a,b){let c=g[a]??j;return"waiting"!==a?c:b&&i.has(b)?h:c}(a,l),q=c??o(p.labelKey);return(0,d.jsx)("span",{className:(0,f.cn)("inline-block flex-shrink-0 rounded-full",k[b],p.colorClass,p.animationClass,m),title:q,"aria-label":q,...n})}},23910:(a,b,c)=>{"use strict";c.d(b,{Y:()=>m,y2:()=>l});var d=c(21124),e=c(38301),f=c(20481),g=c(78352),h=c(79782),i=c(63474);let j=()=>{},k=(0,e.createContext)({updateInfo:null,checking:!1,hasUpdate:!1,pendingVersion:null,canSelfUpdate:!1,state:"idle",logPath:null,errorKey:null,openConfirm:j,cancel:j,confirm:async()=>{}});function l({children:a}){let b=(0,f.c)("worktree"),{showToast:c}=(0,i.dj)(),[j,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(!0),[o,p]=(0,e.useState)("idle"),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(null),u=(0,e.useRef)("idle");(0,e.useRef)(!1);let v=(0,e.useRef)(async()=>{}),w=j?.hasUpdate===!0,x=w?null:j?.pendingVersion??null,y=j?.installType==="global"||j?.installType==="npx",z=(0,e.useCallback)(()=>{w&&y&&p(a=>"idle"===a?"confirming":a)},[w,y]),A=(0,e.useCallback)(()=>{p(a=>"confirming"===a?"idle":a)},[]),B=(0,e.useCallback)(async()=>{if("confirming"===u.current){u.current="starting",p("starting");try{let a=await g.GQ.startUpdate();r(a.logPath),p(a.willRestart?"updating":"no-restart")}catch(a){if(a instanceof g.hD&&409===a.status&&a.data?.code==="not_yet_published"){c(b("update.notYetPublished"),"info"),u.current="idle",p("idle"),v.current();return}a instanceof g.hD&&400===a.status?t("update.errorNotGlobal"):a instanceof g.hD&&409===a.status?t("update.errorInProgress"):t("update.errorGeneric"),p("error")}}},[c,b]),C=(0,e.useMemo)(()=>({updateInfo:j,checking:m,hasUpdate:w,pendingVersion:x,canSelfUpdate:y,state:o,logPath:q,errorKey:s,openConfirm:z,cancel:A,confirm:B}),[j,m,w,x,y,o,q,s,z,A,B]);return(0,d.jsxs)(k.Provider,{value:C,children:[a,(0,d.jsx)(h.TM,{isOpen:"confirming"===o,title:b("update.confirmTitle"),description:b("update.confirmDescription",{version:j?.latestVersion??""}),confirmLabel:b("update.confirmButton"),onConfirm:()=>{B()},onCancel:A})]})}function m(){return(0,e.useContext)(k)}},25754:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>g,dI:()=>d,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}},29966:(a,b,c)=>{"use strict";c.d(b,{AppShellGate:()=>e});var d=c(97954);(0,d.registerClientReference)(function(){throw Error("Attempted to call SHELL_EXCLUDED_PREFIXES() from the server but SHELL_EXCLUDED_PREFIXES is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","SHELL_EXCLUDED_PREFIXES"),(0,d.registerClientReference)(function(){throw Error("Attempted to call SHELL_EXCLUDED_WORKTREE_SUBPATHS() from the server but SHELL_EXCLUDED_WORKTREE_SUBPATHS is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","SHELL_EXCLUDED_WORKTREE_SUBPATHS"),(0,d.registerClientReference)(function(){throw Error("Attempted to call shouldRenderShell() from the server but shouldRenderShell is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","shouldRenderShell");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call AppShellGate() from the server but AppShellGate is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/layout/AppShellGate.tsx","AppShellGate")},30430:(a,b,c)=>{"use strict";c.d(b,{j:()=>i,p:()=>j});var d=c(21124),e=c(38301),f=c.n(e),g=c(26691),h=c(35595);let i=(0,g.F)("flex w-full rounded-md border border-input bg-surface dark:bg-surface-2 text-surface-foreground shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring disabled:cursor-not-allowed disabled:opacity-50",{variants:{inputSize:{sm:"h-8 px-2.5 py-1 text-sm",md:"px-3 py-2 text-sm",lg:"px-4 py-2.5 text-base"}},defaultVariants:{inputSize:"md"}}),j=f().forwardRef(({className:a,inputSize:b,type:c="text",...e},f)=>(0,d.jsx)("input",{ref:f,type:c,className:(0,h.cn)(i({inputSize:b}),a),...e}));j.displayName="Input"},31210:(a,b,c)=>{"use strict";c.d(b,{Wu:()=>k,ZB:()=>j,Zp:()=>h,aR:()=>i});var d=c(21124);c(38301);var e=c(26691),f=c(35595);let g=(0,e.F)("bg-surface text-surface-foreground rounded-lg border border-border shadow-sm",{variants:{variant:{default:"",elevated:"bg-gradient-to-b from-surface to-surface-2 shadow-md",interactive:"cursor-pointer transition-all duration-200 hover:border-accent-500 hover:shadow-md motion-safe:hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-accent-500 focus-visible:shadow-md motion-safe:focus-visible:-translate-y-0.5"},hover:{true:"transition-shadow duration-200 hover:shadow-md",false:""},interactive:{true:"cursor-pointer transition-all duration-200 hover:shadow-lg active:shadow-md motion-safe:hover:-translate-y-0.5 motion-safe:active:translate-y-0",false:""},padding:{none:"",sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{variant:"default",hover:!1,interactive:!1,padding:"md"}});function h({variant:a="default",hover:b=!1,interactive:c=!1,padding:e="md",className:h="",children:i,...j}){return(0,d.jsx)("div",{className:(0,f.cn)(g({variant:a,hover:b,interactive:c,padding:e}),h),...j,children:i})}function i({className:a="",children:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)("mb-3",a),...c,children:b})}function j({className:a="",children:b,...c}){return(0,d.jsx)("h3",{className:(0,f.cn)("text-lg font-semibold text-surface-foreground",a),...c,children:b})}function k({className:a="",children:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)(a),...c,children:b})}},32482:(a,b,c)=>{"use strict";c.d(b,{$m:()=>h,BN:()=>G,EN:()=>i,EY:()=>C,El:()=>u,Ii:()=>A,Kp:()=>z,LV:()=>p,PB:()=>k,Si:()=>f,UB:()=>y,UZ:()=>n,Xn:()=>w,ZC:()=>F,ZD:()=>E,_s:()=>x,fs:()=>H,j:()=>v,m3:()=>j,nO:()=>q,s6:()=>o,zD:()=>t});var d=c(89877);let e=["updatedAt","repositoryName","branchName","status","lastSent"],f=a=>e.includes(a),g=["grouped","flat","sessions"],h=a=>g.includes(a),i=["always","collapsed","hidden"],j=a=>i.includes(a),k="collapsed",l={waiting:0,ready:1,running:2,generating:3,idle:4},m=["waiting","running","generating","ready","idle"];function n(a){let b=new Set;for(let c of a)!1===c.visible&&b.add(c.path);return b}function o(a,b){return 0===b.size?a.slice():a.filter(a=>{let c=a.repositoryPath;return!c||!b.has(c)})}function p(a){let b=function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return Math.abs(b)}(a)%360;return`hsl(${b}, 65%, 60%)`}function q(a,b){if(!a&&!b)return 0;if(!a)return 1;if(!b)return -1;let c=a instanceof Date?a.getTime():new Date(a).getTime();return(b instanceof Date?b.getTime():new Date(b).getTime())-c}function r(a){return a.cliStatus&&Object.keys(a.cliStatus).length>0?(0,d.A7)(a.cliStatus):a.status}function s(a){return"waiting"===r(a)}function t(a){let b=new Set(a.map(r));for(let a of m)if(b.has(a))return a;return"idle"}function u(a){return"ready"===t(a)&&a.some(a=>"ready"===r(a)&&(0,d.Pn)(a.cliStatus,a.unclassifiedInstanceIds))}function v(a){let b=0;for(let c of a)s(c)&&b++;return b}function w(a,b,c){let d=[...a],e="status"!==b;return d.sort((a,d)=>{if(e){let b=Number(s(d))-Number(s(a));if(0!==b)return b}let f=0;switch(b){case"updatedAt":{let b=a=>a?a instanceof Date?a.getTime():new Date(a).getTime():0,c=b(a.lastActivity);f=b(d.lastActivity)-c;break}case"repositoryName":{let b=a.repositoryName.toLowerCase(),c=d.repositoryName.toLowerCase();f=b.localeCompare(c);break}case"branchName":{let b=a.name.toLowerCase(),c=d.name.toLowerCase();f=b.localeCompare(c);break}case"status":f=l[a.status]-l[d.status];break;case"lastSent":{let b=q(a.lastActivity,d.lastActivity);if(!a.lastActivity&&!d.lastActivity){f=0;break}if(!a.lastActivity)return 1;if(!d.lastActivity)return -1;f=b;break}default:f=0}return("updatedAt"===b||"lastSent"===b?"desc"===c:"asc"===c)?f:-f}),d}function x(a,b,c){let d=new Map;for(let b of a){let a=b.repositoryName;d.has(a)||d.set(a,[]),d.get(a).push(b)}return[...d.keys()].sort((a,b)=>a.toLowerCase().localeCompare(b.toLowerCase())).map(a=>({repositoryName:a,branches:w(d.get(a),b,c)}))}function y(a){let b=[];for(let c of a){let a=new Set(c.exitedInstanceIds??[]),d=new Set(c.unclassifiedInstanceIds??[]);for(let[e,f]of Object.entries(c.cliStatus??{}))b.push({key:`${c.id}:${e}`,worktreeId:c.id,instanceId:e,label:c.cliStatusLabels?.[e]??e,status:f??"idle",branchName:c.name,repositoryName:c.repositoryName,lastActivity:c.lastActivityByInstance?.[e]??c.lastActivity,exited:a.has(e),..."ready"===f&&d.has(e)?{unclassified:!0}:{}})}return b}let z="instance";function A(a){return`/worktrees/${a.worktreeId}?${z}=${encodeURIComponent(a.instanceId)}`}function B(a){return a.lastActivity?a.lastActivity instanceof Date?a.lastActivity.getTime():new Date(a.lastActivity).getTime():0}function C(a,b,c){let d="asc"===c?1:-1;return a.slice().sort((a,c)=>{if("status"===b){let b=l[a.status]-l[c.status];return 0!==b?b*d:B(c)-B(a)}let e=Number("waiting"===c.status)-Number("waiting"===a.status);if(0!==e)return e;switch(b){case"updatedAt":case"lastSent":return(B(a)-B(c))*d;case"repositoryName":return a.repositoryName.toLowerCase().localeCompare(c.repositoryName.toLowerCase())*d;case"branchName":return a.branchName.toLowerCase().localeCompare(c.branchName.toLowerCase())*d;default:return 0}})}let D=null;function E(){return D??[]}function F(a){D=a}function G(a,b){if(0===b.length)return a.slice();let c=new Map(b.map((a,b)=>[a,b]));return a.slice().sort((a,b)=>{let d=c.has(a.repositoryName)?c.get(a.repositoryName):1/0,e=c.has(b.repositoryName)?c.get(b.repositoryName):1/0;return d===e?a.repositoryName.localeCompare(b.repositoryName):d-e})}function H(a,b){return"hidden"!==a&&("always"===a||!b)}},33497:(a,b,c)=>{Promise.resolve().then(c.bind(c,29966)),Promise.resolve().then(c.bind(c,58315))},34592:(a,b,c)=>{"use strict";c.d(b,{Xi:()=>l,av:()=>m,j7:()=>k,tU:()=>j});var d=c(21124),e=c(38301),f=c.n(e),g=c(89989),h=c(35595);let i=f().createContext("underline"),j=f().forwardRef(({variant:a="underline",...b},c)=>(0,d.jsx)(i.Provider,{value:a,children:(0,d.jsx)(g.bL,{ref:c,...b})}));j.displayName="Tabs";let k=f().forwardRef(({className:a,...b},c)=>{let e=f().useContext(i);return(0,d.jsx)(g.B8,{ref:c,className:(0,h.cn)("inline-flex items-center","pill"===e?"gap-1 rounded-lg bg-muted p-1":"gap-4 border-b border-border",a),...b})});k.displayName="TabsList";let l=f().forwardRef(({className:a,...b},c)=>{let e=f().useContext(i);return(0,d.jsx)(g.l9,{ref:c,className:(0,h.cn)("inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","disabled:pointer-events-none disabled:opacity-50","pill"===e?"rounded-md px-3 py-1.5 text-muted-foreground data-[state=active]:bg-surface data-[state=active]:text-surface-foreground data-[state=active]:shadow-sm":"-mb-px border-b-2 border-transparent px-1 py-2 text-muted-foreground hover:text-foreground data-[state=active]:border-accent-500 data-[state=active]:text-accent-600",a),...b})});l.displayName="TabsTrigger";let m=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.UC,{ref:c,className:(0,h.cn)("mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",a),...b}));m.displayName="TabsContent"},35595:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(43249),e=c(58829);function f(...a){return(0,e.QP)((0,d.$)(a))}},35914:(a,b,c)=>{"use strict";c.d(b,{$7:()=>f,oz:()=>d,tV:()=>e,v9:()=>g});function d(a){if(null==a||"object"!=typeof a)return!1;let{name:b,message:c}=a;return"ChunkLoadError"===b||"string"==typeof c&&(c.includes("Loading chunk")||c.includes("Failed to fetch dynamically imported module"))}function e(a){return"skipped"}function f(a,b){let c=!1,d=null,e=null,f=()=>{d?.(),e?.(),d=null,e=null},g=()=>{c||(c=!0,f(),a())};return d=b.subscribeOnline(()=>{c||b.probe().then(a=>{a&&g()})}),e=b.subscribeReachability(a=>{a&&g()}),()=>{c=!0,f()}}function g(a){return{subscribeOnline:a=>()=>{},subscribeReachability:a.subscribeReachability,probe:a.probe}}},38557:(a,b,c)=>{"use strict";c.d(b,{Fx:()=>o,Rh:()=>n,_X:()=>g,fl:()=>k,nG:()=>m,sV:()=>h});var d=c(38301),e=c(74930);let f="/api/capabilities";function g(a){return!1!==a.browserOnline&&("connected"===a.realtimeStatus||!0===a.serverReachable)}function h(a){return!1===a.browserOnline||!1===a.serverReachable}let i=new Map;async function j(a,b){let c="function"==typeof AbortController?new AbortController:void 0,d=c?setTimeout(()=>c.abort(),b):void 0;try{return await fetch(a,{method:"GET",cache:"no-store",credentials:"same-origin",signal:c?.signal}),!0}catch{return!1}finally{void 0!==d&&clearTimeout(d)}}function k(a=f,b=5e3){if("function"!=typeof fetch)return Promise.resolve(!1);let c=i.get(a);if(c)return c;let d=j(a,b).finally(()=>{i.delete(a)});return i.set(a,d),d}let l=new Set;function m(a){l.forEach(b=>{try{b(a)}catch{}})}function n(a){return l.add(a),()=>{l.delete(a)}}function o(a={}){let{probeUrl:b=f,probeDelayMs:c=1e3,probeIntervalMs:g=15e3,probeTimeoutMs:h=5e3,surfaceDelayMs:i=1500,probe:j=!0}=a,{status:l}=(0,e.xM)(),[m,n]=(0,d.useState)(!0),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useState)(null),t=(0,d.useCallback)(a=>{q(b=>b===a?b:a),a&&s(Date.now())},[]),u=(0,d.useMemo)(()=>({browserOnline:m,realtimeStatus:l,serverReachable:p}),[m,l,p]),v=u.browserOnline?"connected"===u.realtimeStatus?"online":!1===u.serverReachable?"offline":!0===u.serverReachable||"connecting"===u.realtimeStatus?"reconnecting":"offline":"offline",w="online"!==v,x=(0,d.useRef)({url:b,timeoutMs:h});x.current={url:b,timeoutMs:h};let[y,z]=(0,d.useState)(!1),A=(0,d.useCallback)(()=>{if("function"!=typeof fetch)return;let{url:a,timeoutMs:b}=x.current;k(a,b).then(t)},[t]);return(0,d.useMemo)(()=>({status:v,isOnline:"online"===v,isReconnecting:"reconnecting"===v,isOffline:"offline"===v,shouldSurface:w&&y,signals:u,lastReachableAt:r,recheck:A}),[v,w,y,u,r,A])}},38898:(a,b,c)=>{var d={"./en/schedule.json":[95571,5571],"./ja/schedule.json":[26285,6285]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=38898,a.exports=e},39800:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(21124),e=c(38301),f=c(35914);c(38557);let g={en:{chunkTitle:"Updating to the latest version",chunkDescription:"A newer version of CommandMate is available. Reloading to get the latest update…",offlineTitle:"You're offline",offlineDescription:"Part of the page could not be loaded because the device is off the network. It will be retried automatically as soon as the connection is back.",offlineWaiting:"Waiting for the connection to come back…",genericTitle:"Something went wrong",genericDescription:"An unexpected error occurred. Please reload the page.",reload:"Reload",retry:"Retry"},ja:{chunkTitle:"最新バージョンに更新しています",chunkDescription:"CommandMate の新しいバージョンが利用可能です。最新の状態にするため再読み込みします…",offlineTitle:"接続が切れています",offlineDescription:"ネットワークに接続できないため、ページの一部を読み込めませんでした。接続が戻り次第、自動でやり直します。",offlineWaiting:"接続の回復を待っています…",genericTitle:"問題が発生しました",genericDescription:"予期しないエラーが発生しました。ページを再読み込みしてください。",reload:"再読み込み",retry:"再試行"}};function h({error:a,reset:b}){let c=(0,f.oz)(a),[h,i]=(0,e.useState)("en"),[j,k]=(0,e.useState)(!1),l=(0,e.useCallback)(()=>{j?b():window.location.reload()},[j,b]),m=g[h],n=j?m.offlineTitle:c?m.chunkTitle:m.genericTitle,o=j?m.offlineDescription:c?m.chunkDescription:m.genericDescription;return(0,d.jsx)("html",{lang:h,style:{colorScheme:"light dark"},children:(0,d.jsxs)("body",{"data-error-kind":j?"chunk-offline":c?"chunk-reload":"unexpected",style:{margin:0,minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"1.5rem",padding:"1.5rem",textAlign:"center",background:"Canvas",color:"CanvasText",fontFamily:'system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'},children:[(0,d.jsxs)("div",{style:{maxWidth:"24rem"},children:[(0,d.jsx)("h1",{style:{fontSize:"1.5rem",fontWeight:600,margin:"0 0 0.5rem"},children:n}),(0,d.jsx)("p",{style:{fontSize:"0.875rem",opacity:.75,margin:0},children:o}),j&&(0,d.jsx)("p",{role:"status","aria-live":"polite",style:{fontSize:"0.75rem",opacity:.6,margin:"0.5rem 0 0"},children:m.offlineWaiting})]}),(0,d.jsx)("button",{type:"button",onClick:l,style:{appearance:"none",cursor:"pointer",borderRadius:"0.5rem",border:"1px solid currentColor",background:"transparent",color:"inherit",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:500},children:j?m.retry:m.reload})]})})}},43084:(a,b,c)=>{"use strict";c.d(b,{k:()=>g});var d=c(75338),e=c(94596);let f=["[animation-delay:0ms]","[animation-delay:150ms]","[animation-delay:300ms]"];function g(){let a=(0,e.A)("common");return(0,d.jsx)("div",{className:"flex w-full h-full min-h-[12rem] items-center justify-center p-8",role:"status","aria-label":a("loadingPage"),"data-testid":"route-loading",children:(0,d.jsx)("div",{className:"flex items-center gap-2","aria-hidden":"true",children:f.map(a=>(0,d.jsx)("span",{className:`h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse ${a}`},a))})})}},44164:(a,b,c)=>{Promise.resolve().then(c.bind(c,64182))},46649:(a,b,c)=>{Promise.resolve().then(c.bind(c,90039)),Promise.resolve().then(c.bind(c,80776))},47817:(a,b,c)=>{"use strict";c.d(b,{$f:()=>k,H8:()=>j});var d=c(21124),e=c(38301),f=c(78352);let g=(0,e.createContext)(null),h={selectedWorktreeId:null,worktrees:[],repositories:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function i(a,b){switch(b.type){case"SET_WORKTREES":return{...a,worktrees:b.worktrees,isLoading:!1};case"SET_REPOSITORIES":return{...a,repositories:b.repositories};case"SELECT_WORKTREE":{let c=a.worktrees.find(a=>a.id===b.id)??null;return{...a,selectedWorktreeId:b.id,selectedWorktreeDetail:c??a.selectedWorktreeDetail,isLoadingDetail:null===c}}case"SET_WORKTREE_DETAIL":return{...a,selectedWorktreeDetail:b.detail};case"SET_LOADING":return{...a,isLoading:b.isLoading};case"SET_LOADING_DETAIL":return{...a,isLoadingDetail:b.isLoadingDetail};case"SET_ERROR":return{...a,error:b.error,isLoading:!1};default:return a}}function j({children:a,externalWorktrees:b,externalRepositories:c,externalIsLoading:j,externalError:k,externalRefresh:l}){let m=void 0!==b,[n,o]=(0,e.useReducer)(i,h),p=(0,e.useCallback)(async()=>{if(!m){o({type:"SET_LOADING",isLoading:!0}),o({type:"SET_ERROR",error:null});try{let a=await f.y.getAll();o({type:"SET_WORKTREES",worktrees:a.worktrees}),o({type:"SET_REPOSITORIES",repositories:a.repositories??[]})}catch(a){o({type:"SET_ERROR",error:a instanceof Error?a.message:"Failed to fetch worktrees"})}}},[m]),q=(0,e.useCallback)(async a=>{o({type:"SELECT_WORKTREE",id:a}),o({type:"SET_ERROR",error:null});try{f.y.markAsViewed(a).catch(a=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",a)});let b=await f.y.getById(a);o({type:"SET_WORKTREE_DETAIL",detail:b})}catch(a){o({type:"SET_ERROR",error:a instanceof Error?a.message:"Failed to fetch worktree detail"})}finally{o({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),r=(0,e.useCallback)(async()=>{if(m&&l)return void await l();await p()},[m,l,p]),s=m&&void 0!==j?j:n.isLoading,t=m&&k?k.message:null,u={selectedWorktreeId:n.selectedWorktreeId,worktrees:n.worktrees,repositories:n.repositories,selectedWorktreeDetail:n.selectedWorktreeDetail,isLoading:s,isLoadingDetail:n.isLoadingDetail,error:t??n.error,selectWorktree:q,refreshWorktrees:r};return(0,d.jsx)(g.Provider,{value:u,children:a})}function k(){let a=(0,e.useContext)(g);if(!a)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return a}},48620:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(75338),e=c(43084);function f(){return(0,d.jsx)(e.k,{})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>q,generateMetadata:()=>o,viewport:()=>p});var d=c(75338),e=c(68071),f=c(22513),g=c(42531),h=c(10620),i=c(4986),j=c.n(i),k=c(68034),l=c.n(k),m=c(58315),n=c(29966);async function o(){return{title:{default:"CommandMate",template:"%s | CommandMate"},description:(await (0,e.A)("common"))("meta.description"),appleWebApp:{capable:!0,title:"CommandMate",statusBarStyle:"default"}}}c(61135);let p={themeColor:[{media:"(prefers-color-scheme: light)",color:"#fafafb"},{media:"(prefers-color-scheme: dark)",color:"#0a0c12"}],viewportFit:"cover"};async function q({children:a}){let b=await (0,f.A)(),c=await (0,g.A)(),e=await (0,h.A)();return(0,d.jsx)("html",{lang:b,className:`${j().variable} ${l().variable}`,suppressHydrationWarning:!0,children:(0,d.jsx)("body",{className:"min-h-screen bg-background",children:(0,d.jsx)(m.AppProviders,{locale:b,messages:c,timeZone:e,authEnabled:!!process.env.CM_AUTH_TOKEN_HASH,children:(0,d.jsx)(n.AppShellGate,{children:a})})})})}},51877:(a,b,c)=>{var d={"./en/auth.json":[43440,3440],"./ja/auth.json":[11162,1162]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=51877,a.exports=e},52120:(a,b,c)=>{"use strict";c.d(b,{PL:()=>e,sb:()=>f});let d={idle:"bg-muted-foreground",ready:"bg-success",spinner:"border-info",waiting:"bg-warning"},e={idle:{className:d.idle,labelKey:"status.idle",type:"dot"},ready:{className:d.ready,labelKey:"status.ready",type:"dot"},running:{className:d.spinner,labelKey:"status.running",type:"spinner"},waiting:{className:d.waiting,labelKey:"status.waiting",type:"dot"},generating:{className:d.spinner,labelKey:"status.generating",type:"spinner"}},f={idle:"detailStatus.idle",ready:"detailStatus.ready",running:"detailStatus.running",waiting:"detailStatus.waiting"}},52130:(a,b,c)=>{Promise.resolve().then(c.bind(c,53523))},52761:(a,b,c)=>{"use strict";c.d(b,{Bo:()=>k,Hq:()=>i});var d=c(21124),e=c(38301),f=c(42378);let g={startTransition:a=>a()},h=(0,e.createContext)(null);function i(){let a=(0,f.useRouter)(),{startTransition:b}=(0,e.useContext)(h)??g;return(0,e.useMemo)(()=>({push:c=>b(()=>a.push(c)),replace:c=>b(()=>a.replace(c))}),[a,b])}function j({onCommit:a}){return(0,f.usePathname)(),(0,e.useRef)(!1),null}function k({children:a}){let b=(0,e.useRef)(null),c=(0,e.useCallback)(()=>{b.current?.()},[]),f=(0,e.useCallback)(a=>{var c;c=()=>new Promise(c=>{let d=!1,e=()=>{d||(d=!0,c())};b.current=e,a(),window.setTimeout(e,500)}),"undefined"==typeof document||"function"!=typeof document.startViewTransition?c():document.startViewTransition(c)},[]),g=(0,e.useMemo)(()=>({startTransition:f}),[f]);return(0,d.jsxs)(h.Provider,{value:g,children:[(0,d.jsx)(j,{onCommit:c}),a]})}},53237:(a,b,c)=>{"use strict";c.d(b,{V:()=>e});var d=c(38301);function e(a){let{key:b,defaultValue:c,validate:e,serialize:f=JSON.stringify,deserialize:g=JSON.parse}=a,h=(0,d.useRef)(c),i=(0,d.useRef)(e),j=(0,d.useRef)(f),k=(0,d.useRef)(g);h.current=c,i.current=e,j.current=f,k.current=g;let[l,m]=(0,d.useState)(!1),[n,o]=(0,d.useState)(c);(0,d.useCallback)(()=>h.current,[b]);let p=(0,d.useCallback)(a=>{},[b]);return{value:n,setValue:(0,d.useCallback)(a=>{o(b=>{let c="function"==typeof a?a(b):a;return p(c),c})},[p]),removeValue:(0,d.useCallback)(()=>{o(h.current)},[b]),isAvailable:l}}},53906:(a,b,c)=>{Promise.resolve().then(c.bind(c,5682))},54834:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,77526,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,12263,23)),Promise.resolve().then(c.bind(c,82146))},56379:(a,b,c)=>{"use strict";c.d(b,{V:()=>i});var d=c(21124),e=c(20481),f=c(23910),g=c(94260),h=c(17793);function i(){let a=(0,e.c)("worktree"),{updateInfo:b,hasUpdate:c,canSelfUpdate:i,state:j,logPath:k,errorKey:l,openConfirm:m}=(0,f.Y)();if(!b||!c&&"idle"===j)return null;let{latestVersion:n,releaseUrl:o,updateCommand:p,installType:q}=b,r="npx"===q,s=r?"npx commandmate@latest":"commandmate update";return(0,d.jsxs)("div",{className:"bg-accent-50 border border-accent-200 rounded-lg p-3 mt-2",role:"status","aria-label":a("update.available"),"data-testid":"update-notification-banner",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800 mb-1",children:a("update.available")}),n&&(0,d.jsx)("p",{className:"text-sm text-accent-700 mb-2",children:a("update.latestVersion",{version:n})}),i&&"idle"===j&&(0,d.jsx)(g.$,{variant:"primary",size:"sm",className:"mb-2",onClick:m,"data-testid":"update-now-button",children:a("update.updateNow")}),r&&"idle"===j&&(0,d.jsx)("p",{className:"text-xs text-accent-600 mb-2","data-testid":"update-npx-notice",children:a("update.npxRestartNotice")}),("starting"===j||"updating"===j)&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-progress",children:[(0,d.jsxs)("p",{className:"flex items-center text-sm text-accent-800",children:[(0,d.jsx)(h.y,{size:"sm",className:"mr-2"}),a("starting"===j?"update.starting":"update.updating")]}),"updating"===j&&(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.updatingHint")})]}),"no-restart"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-no-restart",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.noRestartTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.noRestartDescription")})]}),"timeout"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-timeout",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.timeoutTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:a("update.timeoutDescription")}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 mt-1 text-xs text-accent-900 font-mono",children:s})]}),"error"===j&&(0,d.jsxs)("div",{className:"mb-2","data-testid":"update-error",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-accent-800",children:a("update.errorTitle")}),(0,d.jsx)("p",{className:"text-xs text-accent-600 mt-1",children:l?a(l):null}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 mt-1 text-xs text-accent-900 font-mono",children:s})]}),k&&("no-restart"===j||"timeout"===j)&&(0,d.jsx)("p",{className:"text-xs text-accent-500 mb-2","data-testid":"update-log-hint",children:a("update.logHint",{path:k})}),p&&"global"===q&&"idle"===j&&(0,d.jsxs)("div",{className:"mb-2",children:[(0,d.jsx)("p",{className:"text-xs text-accent-600 mb-1",children:a("update.updateCommand")}),(0,d.jsx)("code",{className:"block bg-accent-100 rounded px-2 py-1 text-xs text-accent-900 font-mono",children:p})]}),o&&(0,d.jsxs)("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-sm text-accent-600 hover:text-accent-800 underline",children:[a("update.viewRelease"),(0,d.jsx)("span",{className:"ml-1","aria-hidden":"true",children:"→"})]}),(0,d.jsx)("p",{className:"text-xs text-accent-500 mt-2",children:a("update.dataPreserved")})]})}},57482:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(97523);let e=async a=>[{type:"image/png",sizes:"192x192",url:(0,d.fillMetadataSegment)(".",await a.params,"icon2.png")+"?6e2321fdb8624653"}]},58315:(a,b,c)=>{"use strict";c.d(b,{AppProviders:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call AppProviders() from the server but AppProviders is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/CommandMate/CommandMate/src/components/providers/AppProviders.tsx","AppProviders")},58970:(a,b,c)=>{"use strict";c.d(b,{$B:()=>j,I2:()=>f,LK:()=>h,Ys:()=>i,pX:()=>d,s7:()=>e,tX:()=>g});let d=2e3,e=1500,f=2e3,g=150,h=100,i=200,j=100},60345:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(97523);let e=async a=>[{type:"image/png",sizes:"96x96",url:(0,d.fillMetadataSegment)(".",await a.params,"icon1.png")+"?901e04bb11e9b7fd"}]},60887:(a,b,c)=>{var d={"./en/review.json":[83346,3346],"./ja/review.json":[49328,9328]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=60887,a.exports=e},60957:(a,b,c)=>{"use strict";c.d(b,{H:()=>m});var d=c(21124),e=c(38301),f=c(20481),g=c(2535),h=c(94260),i=c(98033),j=c(56379),k=c(23910),l=c(90076);function m(){let a=(0,f.c)("worktree"),b=(0,l.a)(),{updateInfo:c,hasUpdate:m,pendingVersion:n,canSelfUpdate:o,state:p,openConfirm:q}=(0,k.Y)(),[r,s]=(0,e.useState)(!1),t=c?.latestVersion??null;if(b||!t)return null;if("idle"===p&&!m&&n){let b=a("update.pendingDescription",{version:n});return(0,d.jsxs)(h.$,{type:"button",variant:"secondary",size:"sm",disabled:!0,className:"flex-shrink-0 gap-1.5 whitespace-nowrap",title:b,"aria-label":b,"data-testid":"app-update-button","data-state":"pending",children:[(0,d.jsx)(g.A,{size:16,"aria-hidden":"true"}),(0,d.jsx)("span",{children:a("update.pendingLabel",{version:n})})]})}if("idle"===p&&!m)return null;let u="starting"===p||"updating"===p,v="no-restart"===p||"timeout"===p||"error"===p,w=a("update.buttonLabel",{version:t});return o||u||v?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(h.$,{type:"button",variant:"primary",size:"sm",loading:u,onClick:v?()=>s(!0):q,className:"flex-shrink-0 gap-1.5 whitespace-nowrap","aria-label":u?a("update.buttonUpdating"):a("update.buttonAriaLabel",{version:t}),"aria-haspopup":"dialog","aria-busy":u,"data-testid":"app-update-button","data-state":p,children:[!u&&(0,d.jsx)(g.A,{size:16,"aria-hidden":"true"}),(0,d.jsx)("span",{children:u?a("update.buttonUpdating"):w})]}),v&&(0,d.jsx)(i.a,{isOpen:r,onClose:()=>s(!1),title:a("update.statusDialogTitle"),size:"sm",children:(0,d.jsx)(j.V,{})})]}):(0,d.jsxs)("a",{href:c?.releaseUrl??"https://github.com/Kewton/CommandMate/releases/latest",target:"_blank",rel:"noopener noreferrer",className:"inline-flex flex-shrink-0 items-center justify-center gap-1.5 whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium bg-accent-600 dark:bg-accent-500 text-white hover:bg-accent-700 dark:hover:bg-accent-600 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":a("update.buttonReleaseAriaLabel",{version:t}),"data-testid":"app-update-button",children:[(0,d.jsx)(g.A,{size:16,"aria-hidden":"true"}),(0,d.jsx)("span",{children:w})]})}},61118:(a,b,c)=>{var d={"./en/common.json":[73543,3543],"./ja/common.json":[53945,3945]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=61118,a.exports=e},61135:()=>{},61916:(a,b,c)=>{"use strict";c.d(b,{jg:()=>f,kQ:()=>g,mR:()=>j,mS:()=>i,wf:()=>d});let d="terminal",e=new Set(["terminal","chat"]);function f(a){return"string"==typeof a&&e.has(a)}let g={data:null,messageId:null,visible:!1,answering:!1},h={mode:"split",mobileActivePane:"terminal",leftPaneTab:"history",splitRatio:.5,leftPaneCollapsed:!1,activityBar:{active:"files"},historyPane:{visible:!0,width:25,collapsed:!1}},i={type:null,message:null,retryable:!1,retryCount:0};function j(){return{phase:"idle",prompt:{...g},layout:{...h},error:{...i},messages:[],wsConnected:!1}}},62081:(a,b,c)=>{var d={"./en/autoYes.json":[44248,4248],"./ja/autoYes.json":[92534,2534]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=62081,a.exports=e},62197:(a,b,c)=>{"use strict";c.d(b,{NS:()=>h,V0:()=>i});var d=c(21124),e=c(38301);let f=()=>{},g=(0,e.createContext)({isOpen:!1,open:f,close:f});function h({children:a}){let[b,c]=(0,e.useState)(!1),f=(0,e.useCallback)(()=>c(!0),[]),h=(0,e.useCallback)(()=>c(!1),[]),i=(0,e.useMemo)(()=>({isOpen:b,open:f,close:h}),[b,f,h]);return(0,d.jsx)(g.Provider,{value:i,children:a})}function i(){return(0,e.useContext)(g)}},63157:(a,b,c)=>{"use strict";c.d(b,{g7:()=>k,rC:()=>m,Fn:()=>l});var d=c(21124),e=c(38301),f=c(78352),g=c(74930);let h=[2e3,5e3,1e4];var i=c(47817);let j=(0,e.createContext)(null);function k({children:a}){let{worktrees:b,repositories:c,isLoading:k,error:l,refresh:m}=function(){let[a,b]=(0,e.useState)([]),[c,d]=(0,e.useState)([]),[i,j]=(0,e.useState)(!0),[k,l]=(0,e.useState)(null),m=(0,e.useRef)(null),n=(0,e.useRef)([]),o=(0,e.useRef)(null),p=(0,e.useRef)(0),q=(0,e.useRef)(null),r=(0,e.useRef)(!1),s=(0,e.useRef)(async()=>{}),t=(0,e.useCallback)(()=>{null!==q.current&&(clearTimeout(q.current),q.current=null)},[]),{connected:u,subscribe:v,unsubscribe:w,addListener:x}=(0,g.xM)(),y=(0,e.useRef)(u);y.current=u;let z=(0,e.useCallback)(async()=>{try{l(null),r.current&&0===n.current.length&&j(!0);let a=await fetch("/api/worktrees"),c=(0,f.O0)(a);if(c)throw c;if(!a.ok)throw Error(`Failed to fetch worktrees: ${a.status}`);let g=(0,f.xd)(a);if(g)throw g;let h=await a.json(),i=h.worktrees??[],k=h.repositories??[];(0,e.startTransition)(()=>{b(i),d(k),j(!1)}),n.current=i,r.current=!1,p.current=0,t()}catch(c){let a=c instanceof Error?c:Error(String(c));console.error("[useWorktreesCache] Failed to fetch worktrees:",a),r.current=!0,l(a),j(!1);let b=p.current;0===n.current.length&&b<h.length&&(p.current=b+1,t(),q.current=setTimeout(()=>{q.current=null,s.current()},h[b]))}},[t]);s.current=z;let A=(0,e.useCallback)(()=>n.current.some(a=>!0===a.isSessionRunning),[]),B=(0,e.useCallback)(()=>{let a=A();return y.current?a?2e4:6e4:a?5e3:3e4},[A]),C=(0,e.useCallback)(()=>{null!==m.current&&(clearInterval(m.current),m.current=null),o.current=null},[]);return(0,e.useCallback)(()=>{C();let a=B();o.current=a,m.current=setInterval(()=>{z()},a)},[B,z,C]),a.map(a=>a.id).sort().join(" "),{worktrees:a,repositories:c,isLoading:i,error:k,refresh:z}}(),n=(0,e.useMemo)(()=>({worktrees:b,repositories:c,isLoading:k,error:l,refresh:m}),[b,c,k,l,m]);return(0,d.jsx)(j.Provider,{value:n,children:(0,d.jsx)(i.H8,{externalWorktrees:b,externalRepositories:c,externalIsLoading:k,externalError:l,externalRefresh:m,children:a})})}function l(){let a=(0,e.useContext)(j);if(null===a)throw Error("useWorktreesCacheContext must be used within a WorktreesCacheProvider");return a}function m(){return(0,e.useContext)(j)}},63474:(a,b,c)=>{"use strict";c.d(b,{dj:()=>w,tE:()=>v});var d=c(21124),e=c(38301),f=c(23312),g=c(20481),h=c(75219),i=c(91292),j=c(16945),k=c(71117),l=c(47089),m=c(11010),n=c(58970),o=c(6074);let p=3e3;function q({type:a,iconColor:b}){let c=`h-5 w-5 ${b}`;switch(a){case"success":return(0,d.jsx)(h.A,{className:c,"data-testid":"toast-icon-success"});case"error":return(0,d.jsx)(i.A,{className:c,"data-testid":"toast-icon-error"});case"warning":return(0,d.jsx)(j.A,{className:c,"data-testid":"toast-icon-warning"});default:return(0,d.jsx)(k.A,{className:c,"data-testid":"toast-icon-info"})}}function r({id:a,message:b,type:c,onClose:f,duration:h=p,onClick:i}){let j=(0,g.c)("common"),k=(0,e.useRef)(null),m=function(a){switch(a){case"success":return{bgColor:"bg-success-subtle",borderColor:"border-success-border",textColor:"text-success-foreground",iconColor:"text-success-foreground"};case"error":return{bgColor:"bg-danger-subtle",borderColor:"border-danger-border",textColor:"text-danger-foreground",iconColor:"text-danger-foreground"};case"warning":return{bgColor:"bg-warning-subtle",borderColor:"border-warning-border",textColor:"text-warning-foreground",iconColor:"text-warning-foreground"};default:return{bgColor:"bg-info-subtle",borderColor:"border-info-border",textColor:"text-info-foreground",iconColor:"text-info-foreground"}}}(c),[r,s]=(0,e.useState)(!0),{shouldRender:t,isExiting:u}=(0,o.O)(r,n.Ys);(0,e.useRef)(f).current=f;let v=(0,e.useCallback)(()=>{k.current&&clearTimeout(k.current),s(!1)},[]);return(0,d.jsxs)("div",{"data-testid":`toast-${a}`,role:"alert",className:`
|
|
2
2
|
${m.bgColor}
|
|
3
3
|
${m.borderColor}
|
|
4
4
|
${m.textColor}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>
|
|
1
|
+
exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>p,MQ:()=>l,Mj:()=>n,Sw:()=>m,lX:()=>q});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(a,b){if(!h.test(a)||!h.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,i,j]=c(b);return g!==d?g>d:i!==e?i>e:j>f}function m(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.44.0"}function n(){return m()}let o=null;function p(a){let b=o??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...j),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.44.0"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function q(){try{var a,b,c;if(null!==k.result&&Date.now()-k.fetchedAt<36e5||k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0)))return k.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${n()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?k.rateLimitResetAt=1e3*parseInt(b,10):k.rateLimitResetAt=Date.now()+36e5}(d),k.result;if(!d.ok)return k.result;let e=await d.json(),f=n(),h=e.tag_name.replace(/^v/,""),j={hasUpdate:l(f,e.tag_name),currentVersion:f,latestVersion:h,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,i.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return k.result=j,k.fetchedAt=Date.now(),j}catch{return k.result}}},39727:()=>{},43015:(a,b,c)=>{"use strict";c.r(b),c.d(b,{CM_INGRESS_HEADER:()=>U,REMOTE_ONLY_AUTH_SCOPE:()=>V,WORKTREE_RENAMED_EVENT_TYPE:()=>as,__internal:()=>ay,broadcast:()=>ap,broadcastMessage:()=>ar,cleanupRooms:()=>av,closeWebSocket:()=>ax,handleProxyUpgrade:()=>Z,hasRoomSubscribers:()=>aq,isIngressAuthExempt:()=>X,migrateWorktreeRooms:()=>at,setupWebSocket:()=>ab,stampIngress:()=>W});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
|
|
2
2
|
`}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
|
|
3
3
|
`}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable||null===this.sessionName)throw Error("Tmux control client is not writable");this.touch();let b=Buffer.from(a,"utf8");for(let a=0;a<b.length;a+=256){let c=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0")).join(" ");this.child.stdin.write(`send-keys -t ${(0,m.lA)(this.sessionName)} -H ${c}
|
|
4
4
|
`)}}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
|
|
@@ -6,4 +6,4 @@ exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";
|
|
|
6
6
|
Content-Length: 0\r
|
|
7
7
|
Connection: close\r
|
|
8
8
|
\r
|
|
9
|
-
`)}catch{}a.destroy()}async function Z(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void Y(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){N.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&Y(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void Y(b,"404 Not Found");if(!e.enabled)return void Y(b,"503 Service Unavailable");if(!e.websocketEnabled)return void Y(b,"403 Forbidden");if(!T.has(e.targetHost)){N.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),Y(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){N.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{N.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():Y(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{N.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function $(){P.forEach((a,b)=>{if(!a.isAlive){N.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}af(b);return}a.isAlive=!1;try{b.ping()}catch(a){N.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function _(){aa(),S=setInterval($,3e4),S.unref?.()}function aa(){null!==S&&(clearInterval(S),S=null)}function ab(a,b){O=new d.zu({noServer:!0}),R=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(am),function(a){K();let b=(0,J.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){H();let b=(0,F.onAgentModelChange)(b=>{G.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,E.dV)(b),d=(0,D.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,E.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return G.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:C.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){G.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,E.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,I.PJ)()}(ae),_();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);N.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!X(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await Z(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,A.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(N.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();O.handleUpgrade(a,b,c,b=>{O.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);O.on("error",a=>{N.error("server:error",{error:a.message})}),O.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:!0};P.set(a,b),a.on("pong",()=>{let b=P.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ac(a,c)}catch(a){N.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{af(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||N.error("websocket:error",{error:b.message});try{a.terminate()}catch{}af(a)})})}function ac(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=P.get(c);e&&(e.worktreeIds.add(d),Q.has(d)||Q.set(d,new Set),Q.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=P.get(a);if(!c)return;c.worktreeIds.delete(b);let d=Q.get(b);d&&(d.delete(a),0===d.size&&Q.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ae(b.worktreeId,b.data);break;case C.ST:ad(a,b);break;case"terminal_subscribe":ah(a,b);break;case"terminal_input":ai(a,b);break;case"terminal_resize":aj(a,b);break;case"terminal_unsubscribe":ak(a);break;default:N.warn("message:unknown-type")}}function ad(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,B.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:C.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){N.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ae(a,b){let c=Q.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){N.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){N.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){N.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function af(a){let b=P.get(a);b&&(b.worktreeIds.forEach(b=>{let c=Q.get(b);c&&(c.delete(a),0===c.size&&Q.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),P.delete(a))}function ag(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function ah(a,b){let c=P.get(a);if(!c)return void ag(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ag(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ag(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ag(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let m=(0,i.mf)(e,d);if("foreign"===(await (0,z.s_)(m,g.path)).verdict)return void ag(a,{type:"terminal_error",error:"Session belongs to another CommandMate server"});let n=y();if(n.getSubscriberCount(m)>=4)return void ag(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let o=!1,p=Date.now(),q=await n.subscribe(m,{onOutput:b=>{if(!o){o=!0;let a=Math.max(0,Math.round(Date.now()-p));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ag(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{ag(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{let b=await n.captureSnapshot(m,{startLine:-200});b.length>0&&ag(a,{type:"terminal_output",data:b,fallback:!0})}catch{}ag(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:m,startedAt:p,unsubscribe:q.unsubscribe},ag(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}async function ai(a,b){let c=P.get(a),d=c?.terminalSubscription;if(!d)return void ag(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ag(a,{type:"terminal_error",error:"Invalid terminal input"});try{await y().sendInput(d.sessionName,e)}catch(b){ag(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function aj(a,b){let c=P.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ag(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ag(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ak(a){let b=P.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,ag(a,{type:"terminal_status",connected:!1})}}function al(a){let b=Q.get(a);return!!b&&b.size>0}let am={publish:ae,hasSubscribers:al,cleanupRooms:aw,migrateRooms:au};function an(){let a=M();return a&&a!==am?a:null}function ao(a,b){null===M()&&0===Q.size&&function(a,b,c=Date.now()){let d=globalThis.__realtimeUnroutedPublish??={total:0,suppressed:0,lastWarnedAt:null,operations:{}};if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,L.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function ap(a,b){let c=an();if(c)return void c.publish(a,b);ao("broadcast",a),ae(a,b)}function aq(a){let b=an();return b?b.hasSubscribers(a):(ao("hasRoomSubscribers",a),al(a))}function ar(a,b){b.worktreeId?ap(b.worktreeId,{type:a,...b}):N.warn("broadcast:missing-worktree-id")}let as="worktree_renamed";function at(a){let b=an();return b?b.migrateRooms(a):au(a)}function au(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=Q.get(a);b&&0!==b.size&&(Q.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=Q.get(b)??new Set;for(let d of e){c.add(d);let e=P.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ag(d,{type:as,worktreeId:b,previousWorktreeId:a})}Q.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of P.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){N.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&N.info("rooms:migrated",{count:d.length}),d}function av(a){let b=an();if(b)return void b.cleanupRooms(a);aw(a)}function aw(a){for(let b of a){let a=Q.get(b);a&&(a.forEach(a=>{let c=P.get(a);c&&c.worktreeIds.delete(b)}),Q.delete(b))}}function ax(){let a=null!==R&&R.unregister();R=null,(a||null===M())&&K(),aa(),O&&(P.forEach(a=>{a.ws.close()}),P.clear(),Q.clear(),O.close(),O=null)}let ay={handleMessage:ac,runHeartbeatSweep:$,startHeartbeat:_,stopHeartbeat:aa,handleClientVersion:ad,handleProxyUpgrade:Z,handleTerminalSubscribe:ah,handleTerminalInput:ai,handleTerminalResize:aj,handleTerminalUnsubscribe:ak,handleDisconnect:af,registerClientForTest(a,b=!0){P.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:b})},getClientInfoForTest:a=>P.get(a),listClientsForTest:()=>Array.from(P.values()),resetStateForTest(){aa(),P.clear(),Q.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>i,dz:()=>j,vQ:()=>g});var d=c(57836),e=c(23854);let f=(0,c(72626).h)("relay-triggers");function g(a,b,d,e){let g={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(6491),c.e(8918),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a(g,{settled:e})}catch(c){f.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:g.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function h(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(6491),c.e(8918),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){f.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function i(){j(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(6491),c.e(8918),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){f.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId)});let a=setInterval(()=>void h(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function j(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>k,Te:()=>l,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}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
9
|
+
`)}catch{}a.destroy()}async function Z(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void Y(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){N.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&Y(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void Y(b,"404 Not Found");if(!e.enabled)return void Y(b,"503 Service Unavailable");if(!e.websocketEnabled)return void Y(b,"403 Forbidden");if(!T.has(e.targetHost)){N.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),Y(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){N.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{N.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():Y(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{N.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function $(){P.forEach((a,b)=>{if(!a.isAlive){N.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}af(b);return}a.isAlive=!1;try{b.ping()}catch(a){N.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function _(){aa(),S=setInterval($,3e4),S.unref?.()}function aa(){null!==S&&(clearInterval(S),S=null)}function ab(a,b){O=new d.zu({noServer:!0}),R=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(am),function(a){K();let b=(0,J.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){H();let b=(0,F.onAgentModelChange)(b=>{G.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,E.dV)(b),d=(0,D.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,E.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return G.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:C.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){G.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,E.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,I.PJ)()}(ae),_();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);N.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!X(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await Z(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,A.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(N.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();O.handleUpgrade(a,b,c,b=>{O.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);O.on("error",a=>{N.error("server:error",{error:a.message})}),O.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:!0};P.set(a,b),a.on("pong",()=>{let b=P.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ac(a,c)}catch(a){N.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{af(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||N.error("websocket:error",{error:b.message});try{a.terminate()}catch{}af(a)})})}function ac(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=P.get(c);e&&(e.worktreeIds.add(d),Q.has(d)||Q.set(d,new Set),Q.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=P.get(a);if(!c)return;c.worktreeIds.delete(b);let d=Q.get(b);d&&(d.delete(a),0===d.size&&Q.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ae(b.worktreeId,b.data);break;case C.ST:ad(a,b);break;case"terminal_subscribe":ah(a,b);break;case"terminal_input":ai(a,b);break;case"terminal_resize":aj(a,b);break;case"terminal_unsubscribe":ak(a);break;default:N.warn("message:unknown-type")}}function ad(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,B.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:C.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){N.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ae(a,b){let c=Q.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){N.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){N.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){N.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function af(a){let b=P.get(a);b&&(b.worktreeIds.forEach(b=>{let c=Q.get(b);c&&(c.delete(a),0===c.size&&Q.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),P.delete(a))}function ag(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function ah(a,b){let c=P.get(a);if(!c)return void ag(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ag(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ag(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ag(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let m=(0,i.mf)(e,d);if("foreign"===(await (0,z.s_)(m,g.path)).verdict)return void ag(a,{type:"terminal_error",error:"Session belongs to another CommandMate server"});let n=y();if(n.getSubscriberCount(m)>=4)return void ag(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let o=!1,p=Date.now(),q=await n.subscribe(m,{onOutput:b=>{if(!o){o=!0;let a=Math.max(0,Math.round(Date.now()-p));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ag(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{ag(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{let b=await n.captureSnapshot(m,{startLine:-200});b.length>0&&ag(a,{type:"terminal_output",data:b,fallback:!0})}catch{}ag(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:m,startedAt:p,unsubscribe:q.unsubscribe},ag(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}async function ai(a,b){let c=P.get(a),d=c?.terminalSubscription;if(!d)return void ag(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ag(a,{type:"terminal_error",error:"Invalid terminal input"});try{await y().sendInput(d.sessionName,e)}catch(b){ag(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function aj(a,b){let c=P.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ag(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ag(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ak(a){let b=P.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,ag(a,{type:"terminal_status",connected:!1})}}function al(a){let b=Q.get(a);return!!b&&b.size>0}let am={publish:ae,hasSubscribers:al,cleanupRooms:aw,migrateRooms:au};function an(){let a=M();return a&&a!==am?a:null}function ao(a,b){null===M()&&0===Q.size&&function(a,b,c=Date.now()){let d=globalThis.__realtimeUnroutedPublish??={total:0,suppressed:0,lastWarnedAt:null,operations:{}};if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,L.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function ap(a,b){let c=an();if(c)return void c.publish(a,b);ao("broadcast",a),ae(a,b)}function aq(a){let b=an();return b?b.hasSubscribers(a):(ao("hasRoomSubscribers",a),al(a))}function ar(a,b){b.worktreeId?ap(b.worktreeId,{type:a,...b}):N.warn("broadcast:missing-worktree-id")}let as="worktree_renamed";function at(a){let b=an();return b?b.migrateRooms(a):au(a)}function au(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=Q.get(a);b&&0!==b.size&&(Q.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=Q.get(b)??new Set;for(let d of e){c.add(d);let e=P.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ag(d,{type:as,worktreeId:b,previousWorktreeId:a})}Q.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of P.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){N.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&N.info("rooms:migrated",{count:d.length}),d}function av(a){let b=an();if(b)return void b.cleanupRooms(a);aw(a)}function aw(a){for(let b of a){let a=Q.get(b);a&&(a.forEach(a=>{let c=P.get(a);c&&c.worktreeIds.delete(b)}),Q.delete(b))}}function ax(){let a=null!==R&&R.unregister();R=null,(a||null===M())&&K(),aa(),O&&(P.forEach(a=>{a.ws.close()}),P.clear(),Q.clear(),O.close(),O=null)}let ay={handleMessage:ac,runHeartbeatSweep:$,startHeartbeat:_,stopHeartbeat:aa,handleClientVersion:ad,handleProxyUpgrade:Z,handleTerminalSubscribe:ah,handleTerminalInput:ai,handleTerminalResize:aj,handleTerminalUnsubscribe:ak,handleDisconnect:af,registerClientForTest(a,b=!0){P.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:b})},getClientInfoForTest:a=>P.get(a),listClientsForTest:()=>Array.from(P.values()),resetStateForTest(){aa(),P.clear(),Q.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>i,dz:()=>j,vQ:()=>g});var d=c(57836),e=c(23854);let f=(0,c(72626).h)("relay-triggers");function g(a,b,d,e){let g={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(8918),c.e(650),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a(g,{settled:e})}catch(c){f.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:g.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function h(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(8918),c.e(650),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){f.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function i(){j(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(252),c.e(8800),c.e(7491),c.e(3480),c.e(9130),c.e(9390),c.e(7905),c.e(9731),c.e(8918),c.e(650),c.e(611),c.e(9882),c.e(3077),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){f.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId)});let a=setInterval(()=>void h(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function j(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>k,Te:()=>l,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}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8782,exports.ids=[8782],exports.modules={20419:(a,b,c)=>{c.r(b),c.d(b,{default:()=>g});var d=c(75338),e=c(93045),f=c(27289);async function g({children:a,params:b}){let{id:c}=await b,g=(0,f.z)(c);return g!==c&&(0,e.permanentRedirect)(`/worktrees/${encodeURIComponent(g)}`),(0,d.jsx)(d.Fragment,{children:a})}},25799:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(82831),e=c(43740),f=c(29305),g=c(61981),h=c(26906),i=c(69168);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},27289:(a,b,c)=>{c.d(b,{t:()=>j,z:()=>i});var d=c(10641),e=c(88807),f=c(56791),g=c(95506),h=c(66007);function i(a){if(!a)return a;try{if(!(0,h.h6)(a))return a;let b=(0,e.getDbInstance)();return(0,g.l0)(b,a)??a}catch{return a}}function j(a){if(!(0,h.h6)(a))return d.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let b=(0,e.getDbInstance)(),c=(0,f.getWorktreeById)(b,i(a));return c||d.NextResponse.json({error:"Worktree not found"},{status:404})}},29088:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},47614:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(91203),e=c(92781),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},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,PUSH_DEFAULTS_VERSION:()=>d.VP,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,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,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,findMessageByRequestId:()=>d.Ow,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,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,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,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,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,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,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,pushSubscriptionNeedsDefaultsNotice:()=>d.Zj,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,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.PP,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,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(683),e=c(88807),f=c(67469),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}}},57387:(a,b,c)=>{c.r(b),c.d(b,{default:()=>f});var d=c(75338),e=c(43084);function f(){return(0,d.jsx)(e.k,{})}},64404:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},64712:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(25799).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},67837:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},93045:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(47614),e=c(92781),f=c(64404),g=c(67837),h=c(29088),i=c(64712);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8791,exports.ids=[8791],exports.modules={8953:(a,b,c)=>{c.d(b,{G2:()=>f,Mx:()=>g,TM:()=>h,pU:()=>e,qD:()=>d,sM:()=>j});let d=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","n"],e=[...d,"s"],f=[...e,"C-a"],g="C-x",h=["C-p","C-t"],i=["a","l","t","m","g","u","r","c"],j=[...d,g,...h,...i];[...d,...h,...i]},31347:(a,b,c)=>{c.d(b,{RG:()=>d.RG,St:()=>d.St,fS:()=>d.fS,hb:()=>d.hb,id:()=>d.id,s_:()=>d.s_});var d=c(96463)},31442:(a,b,c)=>{c.d(b,{$D:()=>v,Bl:()=>A,Fk:()=>t,HL:()=>f,Ix:()=>z,KB:()=>u,L0:()=>l,Ls:()=>M,N2:()=>n,ND:()=>q,N_:()=>h,RS:()=>O,Rr:()=>K,Ys:()=>s,bq:()=>o,cD:()=>r,eC:()=>i,g4:()=>L,gM:()=>F,jp:()=>j,jx:()=>G,lY:()=>p,n9:()=>C,om:()=>w,sL:()=>N,tx:()=>m,wv:()=>k});var d=c(16983),e=c(40964);let f="mcbd-";function g(a){return`=${a}:`}function h(a){return a.startsWith(f)}let i="@cm_status",j="@cm_worktree",k="@cm_tool",l="@cm_instance",m="@cm_updated",n="@cm_delegated",o=[i,j,k,l,m,n],p="[CommandMate #{@cm_tool}/#{@cm_instance} #{@cm_status}] #{window_width}x#{window_height}";function q(a,b,c){return["set-option","-t",g(a),b,c]}function r(a,b){return["set-option","-u","-t",g(a),b]}function s(a,b){return["show-options","-t",g(a),b]}function t(a,b){return["show-options","-v","-t",g(a),b]}function u(a,b){return q(a,"status-right",b)}function v(a){return r(a,"status-right")}function w(a=process.env){let b=(a.CM_TMUX_STATUS??"").trim().toLowerCase();return"off"!==b&&"0"!==b&&"false"!==b}function x(a,b,c){return["set-hook","-t",g(a),b,c]}function y(a,b){return["set-hook","-u","-t",g(a),b]}function z(a){return["list-clients","-t",g(a),"-F","#{client_control_mode}"]}function A(a){return a.split("\n").map(a=>a.trim()).filter(a=>"0"===a).length}let B=["claude"];function C(a){if(!h(a))return!1;let b=(0,e.NN)(a)?.cliToolId;return void 0!==b&&B.includes(b)}let D="client-attached[0]",E="client-attached[1]";function F(a=process.env){return"on"===(a.CM_LIVE_ATTACH_HOOK??"").trim().toLowerCase()}function G(a=process.env){return"on"===(a.CM_READ_MODE_AUTO_POPUP??"").trim().toLowerCase()}function H(a){if(!/["$`\\\n\r]/.test(a))return`"${a}"`}function I(a,b,c=[]){let d=[a,...b,...c].join(" ");return`run-shell -b '${d}'`}let J=["#{session_name}","#{client_control_mode}","#{client_name}"];function K(a,b){let c=H(b);if(void 0!==c)return x(a,D,I(c,J))}function L(a){return y(a,D)}function M(a,b){let c=H(b);if(void 0!==c)return x(a,E,I(c,J))}function N(a){return y(a,E)}function O(a,b=d.Jn,c=d.sO){return[["set-window-option","-t",g(a),"window-size","manual"],["resize-window","-t",g(a),"-x",String(b),"-y",String(c)],r(a,n)]}},54325:(a,b,c)=>{c.d(b,{LE:()=>f,Oo:()=>e,ST:()=>d,T4:()=>k,dz:()=>j,r9:()=>h,rx:()=>i,rz:()=>g});let d="client_version",e="version_mismatch";function f(a,b){return!!a&&!!b&&"0.0.0"!==a&&"0.0.0"!==b&&a!==b}let g="chat_turn_progress",h=1e3;function i(a,b=65536){return b<=0?{body:"",truncated:a.length>0}:a.length<=b?{body:a,truncated:!1}:{body:a.slice(a.length-b),truncated:!0}}let j="messages_invalidated",k="model_changed"},77864:(a,b,c)=>{c.d(b,{Mj:()=>e,yy:()=>f});let d=["Enter","Escape","Tab","BTab","BSpace","DC","Up","Down","Left","Right","Home","End","PageUp","PageDown","C-a","C-b","C-c","C-d","C-e","C-f","C-g","C-h","C-i","C-j","C-k","C-l","C-m","C-n","C-o","C-p","C-q","C-r","C-s","C-t","C-u","C-v","C-w","C-x","C-y","C-z"],e=32;function f(a){if("object"!=typeof a||null===a)return!1;if("key"===a.type){var b;return"string"==typeof(b=a.key)&&d.includes(b)}return"text"===a.type&&"string"==typeof a.text&&a.text.length>0&&a.text.length<=4096}},79892:(a,b,c)=>{c.d(b,{Xg:()=>B,ou:()=>G,Ce:()=>F,jw:()=>x,lA:()=>q,nS:()=>t,N:()=>s,N6:()=>H,fY:()=>C,GW:()=>u,zT:()=>r,ur:()=>K,V1:()=>y,ds:()=>E,KB:()=>A,Sb:()=>J});var d=c(79646),e=c(28354),f=c(93997),g=c(83598),h=c(15608),i=c(16983),j=c(72626),k=c(8953),l=c(77864),m=c(86069);function n(a){return a.endsWith(";")?`${a.slice(0,-1)}\\;`:a}let o=(0,e.promisify)(d.execFile),p=(0,j.h)("tmux");function q(a){return`=${a}:`}async function r(a,b={}){let c,d,e,f=b.windowWidth??i.Jn,h=b.windowHeight??i.sO,j=q(a);try{c=(await o("tmux",["show-window-options","-v","-t",j,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await o("tmux",["display-message","-p","-t",j,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let k="manual"===c,l=d===f&&e===h;if(k&&l)return!1;if((b.respectAttachedClient??!0)&&await (0,g.Fh)(a))return p.info("session-geometry:delegated-to-client",{sessionName:a}),!1;try{return k||await o("tmux",["set-window-option","-t",j,"window-size","manual"],{timeout:5e3}),l||await o("tmux",["resize-window","-t",j,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return p.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function s(a){try{return await o("tmux",["has-session","-t",q(a)],{timeout:5e3}),!0}catch{return(0,h.y)(a),!1}}async function t(a){try{let{stdout:b}=await o("tmux",["display-message","-p","-t",q(a),"#{session_path}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function u(){try{let{stdout:a}=await o("tmux",["list-sessions","-F","#{session_name} #{session_windows} #{session_attached} #{session_path}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.split("\n").filter(a=>""!==a.trim()).map(a=>{let[b,c,d,...e]=a.split(" ");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d,path:e.join(" ")}})}catch{return[]}}let v=["sleep","2147483647"];async function w(a,b){let c="";try{let{stdout:a}=await o("tmux",["show-options","-gv","default-shell"],{timeout:5e3});c=a.trim()}catch{}c||(c=process.env.SHELL||"/bin/sh"),await o("tmux",["respawn-pane","-k","-t",`${q(a)}0`,"-c",b,c,"-l"],{timeout:5e3})}async function x(a,b){let c,d,e,f,g;"string"==typeof a?(c=a,d=b,e=i.eu,f=i.Jn,g=i.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||i.eu,f=a.windowWidth||i.Jn,g=a.windowHeight||i.sO);try{await o("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(g),...v],{timeout:5e3}),await o("tmux",["set-option","-t",q(c),"history-limit",String(e)],{timeout:5e3});try{await o("tmux",["new-window","-k","-t",`${q(c)}0`,"-c",d],{timeout:5e3})}catch(a){p.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)}),await w(c,d)}await r(c,{windowWidth:f,windowHeight:g,respectAttachedClient:!1})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}}async function y(a,b,c=!0,d){if(d?.literal&&c)throw Error("sendKeys: { literal: true } cannot be combined with sendEnter — a trailing C-m would be typed as text. Send Enter as a separate key.");let e=n(b),f=d?.literal?function(a,b){if("literal"===b.kind)return["send-keys","-t",a,"-l","--",n(b.text)];if(!(0,m.vY)(b.name))throw Error(`Invalid key sequence key name: ${b.name}`);return["send-keys","-t",a,"--",b.name]}(q(a),{kind:"literal",text:b}):c?["send-keys","-t",q(a),e,"C-m"]:["send-keys","-t",q(a),e];try{await o("tmux",f,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send keys to tmux session: ${a}`)}}let z=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BTab","BSpace","DC","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","s","C-x","C-p","C-t","a","l","n","t","m","g","u","r","c","C-a"]);async function A(a,b){if(0!==b.length){for(let a of b)if(!z.has(a))throw Error(`Invalid special key: ${a}`);try{for(let c=0;c<b.length;c++)await o("tmux",["send-keys","-t",q(a),b[c]],{timeout:5e3}),c<b.length-1&&await new Promise(a=>setTimeout(a,100))}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special keys to tmux session: ${a}`)}}}async function B(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await o("tmux",["capture-pane","-t",q(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function C(a){try{return await o("tmux",["kill-session","-t",q(a)],{timeout:5e3}),(0,h.y)(a),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let D=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function E(a,b){if(!D.has(b))throw Error(`Invalid special key: ${b}`);try{await o("tmux",["send-keys","-t",q(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function F(a){try{await o("tmux",["send-keys","-t",q(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}async function G(a){try{await o("tmux",["send-keys","-t",q(a),"C-e","C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer line: ${a}`)}}function H(a,b=k.qD){return b.includes(a)&&z.has(a)}function I(a){let b=setTimeout(()=>(0,f.gm)(a),250);b.unref?.()}async function J(a,b){await A(a,b),(0,f.gm)(a),I(a)}async function K(a,b){for(let a of b)if(!(0,l.yy)(a))throw Error("Invalid direct input event");let c=q(a);for(let a of b){if("key"===a.type){await o("tmux",["send-keys","-t",c,"--",a.key],{timeout:5e3});continue}let b=Buffer.from(a.text,"utf8");for(let a=0;a<b.length;a+=256){let d=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0"));await o("tmux",["send-keys","-t",c,"-H",...d],{timeout:5e3})}}(0,f.gm)(a),I(a)}},83598:(a,b,c)=>{c.d(b,{Fh:()=>l,G9:()=>m,Us:()=>j,zQ:()=>k});var d=c(79646),e=c(28354),f=c(31442);let g=(0,e.promisify)(d.execFile),h=globalThis.__cmGeometryDelegationCache??(globalThis.__cmGeometryDelegationCache=new Map),i=globalThis.__cmGeometryDelegationEdge??(globalThis.__cmGeometryDelegationEdge=new Map);async function j(a,b=Date.now()){let c=h.get(a);if(c&&b-c.readAt<1e3)return c.delegated;let d=!1;try{let{stdout:b}=await g("tmux",(0,f.Fk)(a,f.N2),{timeout:5e3});d="1"===b.trim()}catch{d=!1}return h.set(a,{delegated:d,readAt:b}),d}async function k(a,b=Date.now()){let c=await j(a,b),d=i.get(a)??!1;return i.set(a,c),{delegated:c,released:d&&!c}}async function l(a){try{let{stdout:b}=await g("tmux",(0,f.Ix)(a),{timeout:5e3});return(0,f.Bl)(b)>0}catch{return!1}}function m(a){h.delete(a),i.delete(a)}},86069:(a,b,c)=>{c.d(b,{IS:()=>e,J_:()=>h,iF:()=>f,vY:()=>g});let d=["Escape","C-c","C-d","C-m","Enter"];function e(a,b){return void 0===b?{kind:"key",name:a}:{kind:"key",name:a,delayAfterMs:b}}function f(a,b){return void 0===b?{kind:"literal",text:a}:{kind:"literal",text:a,delayAfterMs:b}}function g(a){return d.includes(a)}let h="unknown"},93997:(a,b,c)=>{c.d(b,{aq:()=>m,gm:()=>k,pc:()=>l,sl:()=>f,vF:()=>j,wd:()=>i,xE:()=>e});let d=(0,c(72626).h)("tmux-capture-cache"),e=1e4;function f(a,b=e){return b>0&&a>=b}function g(){return globalThis.__tmuxCaptureCache??=new Map}function h(){return globalThis.__tmuxCaptureCacheInflight??=new Map}function i(a,b){if(""===a)return"";let c=a.split("\n");return b>=c.length?a:c.slice(-b).join("\n")}function j(a,b,c){let d=g(),e=Date.now();for(let[a,b]of d)e-b.timestamp>5e3&&d.delete(a);if(d.size>=100&&!d.has(a)){let a=null,b=1/0;for(let[c,e]of d)e.timestamp<b&&(b=e.timestamp,a=c);a&&d.delete(a)}d.set(a,{output:b,capturedLines:c,timestamp:e})}function k(a){g().delete(a),d.debug("cache:invalidate",{sessionName:a})}function l(){g().clear(),h().clear()}async function m(a,b,c){let d=function(a,b){let c=g(),d=c.get(a);return d?Date.now()-d.timestamp>5e3?(c.delete(a),null):b>d.capturedLines?null:i(d.output,b):null}(a,b);if(null!==d)return d;let f=h(),k=f.get(a);if(k)return i(await k,b);let l=c();f.set(a,l);try{let c=await l;return c.length>0&&j(a,c,e),i(c,b)}finally{f.delete(a)}}},96463:(a,b,c)=>{c.d(b,{RG:()=>s,St:()=>r,fS:()=>t,hb:()=>k,id:()=>o,s_:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(72626),i=c(79892);let j=(0,h.h)("session-ownership"),k="session_owned_by_other_server";class l extends Error{constructor(a,b,c){super(`tmux session "${a}" belongs to another server (session_path=${b??"unknown"}, worktree=${c})`),this.sessionName=a,this.sessionPath=b,this.worktreePath=c,this.code=k,this.name="ForeignSessionError"}}function m(a){let b;try{b=e().realpathSync.native(a)}catch{b=g().resolve(a)}return b.length>1&&(b=b.replace(/\/+$/,"")),""===b?"/":b}function n(a,b,c=m){return null!==a&&""!==a&&c(a)===c(b)}function o(){let a=new Map,b=b=>{let c=a.get(b);return void 0===c&&(c=m(b),a.set(b,c)),c};return(a,c)=>n(a,c,b)}let p=new Set;async function q(a,b){if(!await (0,i.N)(a))return{verdict:"absent",sessionPath:null};let c=await (0,i.nS)(a);return null!==c&&n(c,b)?{verdict:"owned",sessionPath:c}:(p.has(a)||(p.add(a),j.warn("session:foreign-detected",{sessionName:a,sessionPath:c,worktreePath:b})),{verdict:"foreign",sessionPath:c})}async function r(a,b){let c=await q(a,b);if("foreign"===c.verdict)throw new l(a,c.sessionPath,b);return c}function s(a,b){return{error:`tmux session "${a}" belongs to another CommandMate server`,code:k,sessionName:a,sessionPath:b}}function t(a,b,c=o()){let d=new Set;for(let e of a)c(e.path??null,b)&&d.add(e.name);return d}}};
|
|
1
|
+
"use strict";exports.id=8791,exports.ids=[8791],exports.modules={8953:(a,b,c)=>{c.d(b,{G2:()=>f,Mx:()=>g,TM:()=>h,pU:()=>e,qD:()=>d,sM:()=>j});let d=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","n"],e=[...d,"s"],f=[...e,"C-a"],g="C-x",h=["C-p","C-t"],i=["a","l","t","m","g","u","r","c"],j=[...d,g,...h,...i];[...d,...h,...i]},31347:(a,b,c)=>{c.d(b,{RG:()=>d.RG,St:()=>d.St,fS:()=>d.fS,hb:()=>d.hb,id:()=>d.id,s_:()=>d.s_});var d=c(96463)},31442:(a,b,c)=>{c.d(b,{$D:()=>v,Bl:()=>A,Fk:()=>t,HL:()=>f,Ix:()=>z,KB:()=>u,L0:()=>l,Ls:()=>M,N2:()=>n,ND:()=>q,N_:()=>h,RS:()=>O,Rr:()=>K,Ys:()=>s,bq:()=>o,cD:()=>r,eC:()=>i,g4:()=>L,gM:()=>F,jp:()=>j,jx:()=>G,lY:()=>p,n9:()=>C,om:()=>w,sL:()=>N,tx:()=>m,wv:()=>k});var d=c(16983),e=c(40964);let f="mcbd-";function g(a){return`=${a}:`}function h(a){return a.startsWith(f)}let i="@cm_status",j="@cm_worktree",k="@cm_tool",l="@cm_instance",m="@cm_updated",n="@cm_delegated",o=[i,j,k,l,m,n],p="[CommandMate #{@cm_tool}/#{@cm_instance} #{@cm_status}] #{window_width}x#{window_height}";function q(a,b,c){return["set-option","-t",g(a),b,c]}function r(a,b){return["set-option","-u","-t",g(a),b]}function s(a,b){return["show-options","-t",g(a),b]}function t(a,b){return["show-options","-v","-t",g(a),b]}function u(a,b){return q(a,"status-right",b)}function v(a){return r(a,"status-right")}function w(a=process.env){let b=(a.CM_TMUX_STATUS??"").trim().toLowerCase();return"off"!==b&&"0"!==b&&"false"!==b}function x(a,b,c){return["set-hook","-t",g(a),b,c]}function y(a,b){return["set-hook","-u","-t",g(a),b]}function z(a){return["list-clients","-t",g(a),"-F","#{client_control_mode}"]}function A(a){return a.split("\n").map(a=>a.trim()).filter(a=>"0"===a).length}let B=["claude"];function C(a){if(!h(a))return!1;let b=(0,e.NN)(a)?.cliToolId;return void 0!==b&&B.includes(b)}let D="client-attached[0]",E="client-attached[1]";function F(a=process.env){return"on"===(a.CM_LIVE_ATTACH_HOOK??"").trim().toLowerCase()}function G(a=process.env){return"on"===(a.CM_READ_MODE_AUTO_POPUP??"").trim().toLowerCase()}function H(a){if(!/["$`\\\n\r]/.test(a))return`"${a}"`}function I(a,b,c=[]){let d=[a,...b,...c].join(" ");return`run-shell -b '${d}'`}let J=["#{session_name}","#{client_control_mode}","#{client_name}"];function K(a,b){let c=H(b);if(void 0!==c)return x(a,D,I(c,J))}function L(a){return y(a,D)}function M(a,b){let c=H(b);if(void 0!==c)return x(a,E,I(c,J))}function N(a){return y(a,E)}function O(a,b=d.Jn,c=d.sO){return[["set-window-option","-t",g(a),"window-size","manual"],["resize-window","-t",g(a),"-x",String(b),"-y",String(c)],r(a,n)]}},54325:(a,b,c)=>{c.d(b,{LE:()=>f,Oo:()=>e,ST:()=>d,T4:()=>k,dz:()=>j,r9:()=>h,rx:()=>i,rz:()=>g});let d="client_version",e="version_mismatch";function f(a,b){return!!a&&!!b&&"0.0.0"!==a&&"0.0.0"!==b&&a!==b}let g="chat_turn_progress",h=1e3;function i(a,b=65536){return b<=0?{body:"",truncated:a.length>0}:a.length<=b?{body:a,truncated:!1}:{body:a.slice(a.length-b),truncated:!0}}let j="messages_invalidated",k="model_changed"},77864:(a,b,c)=>{c.d(b,{Mj:()=>e,yy:()=>f});let d=["Enter","Escape","Tab","BTab","BSpace","DC","Up","Down","Left","Right","Home","End","PageUp","PageDown","C-a","C-b","C-c","C-d","C-e","C-f","C-g","C-h","C-i","C-j","C-k","C-l","C-m","C-n","C-o","C-p","C-q","C-r","C-s","C-t","C-u","C-v","C-w","C-x","C-y","C-z"],e=32;function f(a){if("object"!=typeof a||null===a)return!1;if("key"===a.type){var b;return"string"==typeof(b=a.key)&&d.includes(b)}return"text"===a.type&&"string"==typeof a.text&&a.text.length>0&&a.text.length<=4096}},79892:(a,b,c)=>{c.d(b,{Xg:()=>C,ou:()=>H,Ce:()=>G,jw:()=>y,lA:()=>q,Hg:()=>u,nS:()=>t,N:()=>s,N6:()=>I,fY:()=>D,GW:()=>v,zT:()=>r,ur:()=>L,V1:()=>z,ds:()=>F,KB:()=>B,Sb:()=>K});var d=c(79646),e=c(28354),f=c(93997),g=c(83598),h=c(15608),i=c(16983),j=c(72626),k=c(8953),l=c(77864),m=c(86069);function n(a){return a.endsWith(";")?`${a.slice(0,-1)}\\;`:a}let o=(0,e.promisify)(d.execFile),p=(0,j.h)("tmux");function q(a){return`=${a}:`}async function r(a,b={}){let c,d,e,f=b.windowWidth??i.Jn,h=b.windowHeight??i.sO,j=q(a);try{c=(await o("tmux",["show-window-options","-v","-t",j,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await o("tmux",["display-message","-p","-t",j,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let k="manual"===c,l=d===f&&e===h;if(k&&l)return!1;if((b.respectAttachedClient??!0)&&await (0,g.Fh)(a))return p.info("session-geometry:delegated-to-client",{sessionName:a}),!1;try{return k||await o("tmux",["set-window-option","-t",j,"window-size","manual"],{timeout:5e3}),l||await o("tmux",["resize-window","-t",j,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return p.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function s(a){try{return await o("tmux",["has-session","-t",q(a)],{timeout:5e3}),!0}catch{return(0,h.y)(a),!1}}async function t(a){try{let{stdout:b}=await o("tmux",["display-message","-p","-t",q(a),"#{session_path}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function u(a){try{let{stdout:b}=await o("tmux",["display-message","-p","-t",q(a),"#{pane_current_command}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function v(){try{let{stdout:a}=await o("tmux",["list-sessions","-F","#{session_name} #{session_windows} #{session_attached} #{session_path}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.split("\n").filter(a=>""!==a.trim()).map(a=>{let[b,c,d,...e]=a.split(" ");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d,path:e.join(" ")}})}catch{return[]}}let w=["sleep","2147483647"];async function x(a,b){let c="";try{let{stdout:a}=await o("tmux",["show-options","-gv","default-shell"],{timeout:5e3});c=a.trim()}catch{}c||(c=process.env.SHELL||"/bin/sh"),await o("tmux",["respawn-pane","-k","-t",`${q(a)}0`,"-c",b,c,"-l"],{timeout:5e3})}async function y(a,b){let c,d,e,f,g;"string"==typeof a?(c=a,d=b,e=i.eu,f=i.Jn,g=i.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||i.eu,f=a.windowWidth||i.Jn,g=a.windowHeight||i.sO);try{await o("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(g),...w],{timeout:5e3}),await o("tmux",["set-option","-t",q(c),"history-limit",String(e)],{timeout:5e3});try{await o("tmux",["new-window","-k","-t",`${q(c)}0`,"-c",d],{timeout:5e3})}catch(a){p.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)}),await x(c,d)}await r(c,{windowWidth:f,windowHeight:g,respectAttachedClient:!1})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}}async function z(a,b,c=!0,d){if(d?.literal&&c)throw Error("sendKeys: { literal: true } cannot be combined with sendEnter — a trailing C-m would be typed as text. Send Enter as a separate key.");let e=n(b),f=d?.literal?function(a,b){if("literal"===b.kind)return["send-keys","-t",a,"-l","--",n(b.text)];if(!(0,m.vY)(b.name))throw Error(`Invalid key sequence key name: ${b.name}`);return["send-keys","-t",a,"--",b.name]}(q(a),{kind:"literal",text:b}):c?["send-keys","-t",q(a),e,"C-m"]:["send-keys","-t",q(a),e];try{await o("tmux",f,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send keys to tmux session: ${a}`)}}let A=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BTab","BSpace","DC","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","s","C-x","C-p","C-t","a","l","n","t","m","g","u","r","c","C-a","C-r"]);async function B(a,b){if(0!==b.length){for(let a of b)if(!A.has(a))throw Error(`Invalid special key: ${a}`);try{for(let c=0;c<b.length;c++)await o("tmux",["send-keys","-t",q(a),b[c]],{timeout:5e3}),c<b.length-1&&await new Promise(a=>setTimeout(a,100))}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special keys to tmux session: ${a}`)}}}async function C(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await o("tmux",["capture-pane","-t",q(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function D(a){try{return await o("tmux",["kill-session","-t",q(a)],{timeout:5e3}),(0,h.y)(a),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let E=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function F(a,b){if(!E.has(b))throw Error(`Invalid special key: ${b}`);try{await o("tmux",["send-keys","-t",q(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function G(a){try{await o("tmux",["send-keys","-t",q(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}async function H(a){try{await o("tmux",["send-keys","-t",q(a),"C-e","C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer line: ${a}`)}}function I(a,b=k.qD){return b.includes(a)&&A.has(a)}function J(a){let b=setTimeout(()=>(0,f.gm)(a),250);b.unref?.()}async function K(a,b){await B(a,b),(0,f.gm)(a),J(a)}async function L(a,b){for(let a of b)if(!(0,l.yy)(a))throw Error("Invalid direct input event");let c=q(a);for(let a of b){if("key"===a.type){await o("tmux",["send-keys","-t",c,"--",a.key],{timeout:5e3});continue}let b=Buffer.from(a.text,"utf8");for(let a=0;a<b.length;a+=256){let d=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0"));await o("tmux",["send-keys","-t",c,"-H",...d],{timeout:5e3})}}(0,f.gm)(a),J(a)}},83598:(a,b,c)=>{c.d(b,{Fh:()=>l,G9:()=>m,Us:()=>j,zQ:()=>k});var d=c(79646),e=c(28354),f=c(31442);let g=(0,e.promisify)(d.execFile),h=globalThis.__cmGeometryDelegationCache??(globalThis.__cmGeometryDelegationCache=new Map),i=globalThis.__cmGeometryDelegationEdge??(globalThis.__cmGeometryDelegationEdge=new Map);async function j(a,b=Date.now()){let c=h.get(a);if(c&&b-c.readAt<1e3)return c.delegated;let d=!1;try{let{stdout:b}=await g("tmux",(0,f.Fk)(a,f.N2),{timeout:5e3});d="1"===b.trim()}catch{d=!1}return h.set(a,{delegated:d,readAt:b}),d}async function k(a,b=Date.now()){let c=await j(a,b),d=i.get(a)??!1;return i.set(a,c),{delegated:c,released:d&&!c}}async function l(a){try{let{stdout:b}=await g("tmux",(0,f.Ix)(a),{timeout:5e3});return(0,f.Bl)(b)>0}catch{return!1}}function m(a){h.delete(a),i.delete(a)}},86069:(a,b,c)=>{c.d(b,{IS:()=>e,J_:()=>h,iF:()=>f,vY:()=>g});let d=["Escape","C-c","C-d","C-m","Enter"];function e(a,b){return void 0===b?{kind:"key",name:a}:{kind:"key",name:a,delayAfterMs:b}}function f(a,b){return void 0===b?{kind:"literal",text:a}:{kind:"literal",text:a,delayAfterMs:b}}function g(a){return d.includes(a)}let h="unknown"},93997:(a,b,c)=>{c.d(b,{aq:()=>m,gm:()=>k,pc:()=>l,sl:()=>f,vF:()=>j,wd:()=>i,xE:()=>e});let d=(0,c(72626).h)("tmux-capture-cache"),e=1e4;function f(a,b=e){return b>0&&a>=b}function g(){return globalThis.__tmuxCaptureCache??=new Map}function h(){return globalThis.__tmuxCaptureCacheInflight??=new Map}function i(a,b){if(""===a)return"";let c=a.split("\n");return b>=c.length?a:c.slice(-b).join("\n")}function j(a,b,c){let d=g(),e=Date.now();for(let[a,b]of d)e-b.timestamp>5e3&&d.delete(a);if(d.size>=100&&!d.has(a)){let a=null,b=1/0;for(let[c,e]of d)e.timestamp<b&&(b=e.timestamp,a=c);a&&d.delete(a)}d.set(a,{output:b,capturedLines:c,timestamp:e})}function k(a){g().delete(a),d.debug("cache:invalidate",{sessionName:a})}function l(){g().clear(),h().clear()}async function m(a,b,c){let d=function(a,b){let c=g(),d=c.get(a);return d?Date.now()-d.timestamp>5e3?(c.delete(a),null):b>d.capturedLines?null:i(d.output,b):null}(a,b);if(null!==d)return d;let f=h(),k=f.get(a);if(k)return i(await k,b);let l=c();f.set(a,l);try{let c=await l;return c.length>0&&j(a,c,e),i(c,b)}finally{f.delete(a)}}},96463:(a,b,c)=>{c.d(b,{RG:()=>s,St:()=>r,fS:()=>t,hb:()=>k,id:()=>o,s_:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(72626),i=c(79892);let j=(0,h.h)("session-ownership"),k="session_owned_by_other_server";class l extends Error{constructor(a,b,c){super(`tmux session "${a}" belongs to another server (session_path=${b??"unknown"}, worktree=${c})`),this.sessionName=a,this.sessionPath=b,this.worktreePath=c,this.code=k,this.name="ForeignSessionError"}}function m(a){let b;try{b=e().realpathSync.native(a)}catch{b=g().resolve(a)}return b.length>1&&(b=b.replace(/\/+$/,"")),""===b?"/":b}function n(a,b,c=m){return null!==a&&""!==a&&c(a)===c(b)}function o(){let a=new Map,b=b=>{let c=a.get(b);return void 0===c&&(c=m(b),a.set(b,c)),c};return(a,c)=>n(a,c,b)}let p=new Set;async function q(a,b){if(!await (0,i.N)(a))return{verdict:"absent",sessionPath:null};let c=await (0,i.nS)(a);return null!==c&&n(c,b)?{verdict:"owned",sessionPath:c}:(p.has(a)||(p.add(a),j.warn("session:foreign-detected",{sessionName:a,sessionPath:c,worktreePath:b})),{verdict:"foreign",sessionPath:c})}async function r(a,b){let c=await q(a,b);if("foreign"===c.verdict)throw new l(a,c.sessionPath,b);return c}function s(a,b){return{error:`tmux session "${a}" belongs to another CommandMate server`,code:k,sessionName:a,sessionPath:b}}function t(a,b,c=o()){let d=new Set;for(let e of a)c(e.path??null,b)&&d.add(e.name);return d}}};
|