commandmate 0.41.1 → 0.42.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 +118 -118
- package/.next/app-path-routes-manifest.json +25 -25
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- 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 +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 +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.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 +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +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_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 +103 -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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +103 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -103
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_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 +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -103
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +9 -9
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +25 -25
- package/.next/server/chunks/1068.js +1 -0
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1501.js +5 -5
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3707.js +1 -1
- package/.next/server/chunks/3718.js +1 -0
- package/.next/server/chunks/434.js +1 -1
- package/.next/server/chunks/4443.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5775.js +1 -0
- package/.next/server/chunks/611.js +1 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/650.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +1 -1
- package/.next/server/chunks/8583.js +1 -1
- package/.next/server/chunks/8673.js +2 -2
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -0
- package/.next/server/chunks/8800.js +1 -1
- package/.next/server/chunks/8918.js +1 -103
- package/.next/server/chunks/9130.js +2 -2
- package/.next/server/chunks/964.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/chunks/9882.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
- package/.next/static/chunks/{2407-7bd75de2f6be3692.js → 2407-faae66d204748f7b.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/7705-2a2936551b0cf9a3.js +1 -0
- package/.next/static/chunks/8165-235859c6930f01b1.js +1 -0
- package/.next/static/chunks/app/{layout-51fa91ea833c97fc.js → layout-9a715043610e4e27.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/page-61dd928d635db590.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/static/css/{974314e796232f53.css → b3f433d52b8ed5c8.css} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/attach.d.ts +6 -4
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +36 -5
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +5 -0
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +19 -9
- package/dist/cli/commands/whoami.d.ts +9 -25
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +18 -42
- package/dist/cli/types/api-responses.d.ts +37 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.d.ts +72 -4
- package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.js +115 -12
- package/dist/lib/detection/tools/verified-against.d.ts +11 -2
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +11 -2
- package/dist/lib/session/tmux-session-surface.d.ts +9 -7
- package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
- package/dist/lib/session/tmux-session-surface.js +15 -8
- package/dist/lib/tmux/legacy-session-alias.d.ts +43 -0
- package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -0
- package/dist/lib/tmux/legacy-session-alias.js +64 -0
- package/dist/lib/verification/verify-config.d.ts +21 -0
- package/dist/lib/verification/verify-config.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.js +54 -1
- package/dist/server/locales/en/worktree.json +4 -1
- package/dist/server/locales/ja/worktree.json +4 -1
- package/dist/server/server.js +29 -0
- package/dist/server/src/lib/auto-yes-poller.js +15 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +1 -1
- package/dist/server/src/lib/cli-tools/base.js +10 -1
- package/dist/server/src/lib/cli-tools/codex.js +1 -1
- package/dist/server/src/lib/cli-tools/command-code.js +1 -1
- package/dist/server/src/lib/cli-tools/copilot.js +1 -1
- package/dist/server/src/lib/cli-tools/gemini.js +1 -1
- package/dist/server/src/lib/cli-tools/legacy-session-adoption.js +19 -0
- package/dist/server/src/lib/cli-tools/opencode.js +1 -1
- package/dist/server/src/lib/cli-tools/session-name.js +115 -12
- package/dist/server/src/lib/cli-tools/session-namespace.js +55 -0
- package/dist/server/src/lib/cli-tools/session-ownership.js +21 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +1 -1
- package/dist/server/src/lib/cli-tools/worktree-session-ownership.js +28 -0
- package/dist/server/src/lib/db/app-settings-db.js +29 -0
- package/dist/server/src/lib/detection/cli-patterns.js +46 -8
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +8 -2
- package/dist/server/src/lib/detection/tools/codex/detect.js +8 -1
- package/dist/server/src/lib/detection/tools/codex/prompt.js +6 -2
- package/dist/server/src/lib/detection/tools/verified-against.js +11 -2
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +77 -2
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +77 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +11 -0
- package/dist/server/src/lib/session/adopt-legacy-sessions.js +89 -0
- package/dist/server/src/lib/session/claude-session.js +13 -10
- package/dist/server/src/lib/session/current-output-builder.js +18 -0
- package/dist/server/src/lib/session/send-user-message.js +26 -0
- package/dist/server/src/lib/session/session-instance-targets.js +53 -0
- package/dist/server/src/lib/session/tmux-session-surface.js +15 -8
- package/dist/server/src/lib/session/worktree-session-reconcile.js +101 -56
- package/dist/server/src/lib/session-cleanup.js +33 -3
- package/dist/server/src/lib/tmux/legacy-session-alias.js +64 -0
- package/dist/server/src/lib/tmux/session-hook-scripts.js +12 -4
- package/dist/server/src/lib/tmux/session-ownership.js +174 -0
- package/dist/server/src/lib/tmux/tmux.js +13 -3
- package/dist/server/src/lib/verification/env-clean-gate.js +46 -14
- package/dist/server/src/lib/verification/gate-runner.js +1 -0
- package/dist/server/src/lib/verification/verify-config.js +54 -1
- package/dist/server/src/lib/ws-server.js +11 -0
- package/package.json +1 -1
- package/release-notes/0.42.0.json +62 -0
- package/.next/server/chunks/3323.js +0 -1
- package/.next/server/chunks/7075.js +0 -1
- package/.next/server/chunks/9080.js +0 -1
- package/.next/static/chunks/7705-25076b57224da370.js +0 -1
- package/.next/static/chunks/8165-d3b7c8a7aa776bc7.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-1e6300dd50cd9a4d.js +0 -1
- /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → EbTDBXcXRpFNH4eom-HVv}/_buildManifest.js +0 -0
- /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → EbTDBXcXRpFNH4eom-HVv}/_ssgManifest.js +0 -0
|
@@ -10,7 +10,7 @@ exports.id=8581,exports.ids=[8581],exports.modules={762:(a,b,c)=>{Promise.resolv
|
|
|
10
10
|
hover:opacity-70
|
|
11
11
|
focus:outline-none focus:ring-2 focus:ring-offset-2
|
|
12
12
|
transition-opacity
|
|
13
|
-
`,children:(0,d.jsx)(l.A,{className:"h-4 w-4"})})]})}function s({toasts:a,onClose:b}){let[c,g]=(0,e.useState)(!1),h=(0,d.jsx)("div",{"data-testid":"toast-container","aria-live":"polite",className:"fixed bottom-4 right-4 flex flex-col gap-2",style:{zIndex:m.M.TOAST},children:a.map(a=>(0,d.jsx)(r,{id:a.id,message:a.message,type:a.type,onClose:b,duration:a.duration,onClick:a.onClick},a.id))});return c?(0,f.createPortal)(h,document.body):null}function t(){let[a,b]=(0,e.useState)([]),c=(0,e.useRef)(0),d=(0,e.useCallback)((a,d="info",e=p,f)=>{let g=`toast-${++c.current}-${Date.now()}`,h={id:g,message:a,type:d,duration:e,...f?.onClick?{onClick:f.onClick}:{}};return b(a=>[...a,h]),g},[]),f=(0,e.useCallback)(a=>{b(b=>b.filter(b=>b.id!==a))},[]),g=(0,e.useCallback)(()=>{b([])},[]);return(0,e.useMemo)(()=>({toasts:a,showToast:d,removeToast:f,clearToasts:g}),[a,d,f,g])}let u=(0,e.createContext)(null);function v({children:a}){let b=t();return(0,d.jsxs)(u.Provider,{value:b,children:[a,(0,d.jsx)(s,{toasts:b.toasts,onClose:b.removeToast})]})}function w(){let a=(0,e.useContext)(u),b=t();return a??b}},64182:(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/global-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/global-error.tsx","default")},64632:(a,b,c)=>{"use strict";c.d(b,{C:()=>h,E:()=>g});var d=c(21124),e=c(38301);let f=(0,e.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function g({children:a}){let[b,c]=(0,e.useState)(!1),g=(0,e.useCallback)(()=>c(a=>!a),[]),h=(0,e.useMemo)(()=>({open:b,setOpen:c,toggle:g}),[b,g]);return(0,d.jsx)(f.Provider,{value:h,children:a})}function h(){return(0,e.useContext)(f)}},66125:(a,b,c)=>{var d={"./en/error.json":[22980,2980],"./ja/error.json":[10450,450]};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=66125,a.exports=e},67693:(a,b,c)=>{"use strict";c.d(b,{H:()=>g});var d=c(38301),e=c(74930),f=c(96823);function g(){let{addListener:a}=(0,e.xM)(),{enabled:b}=(0,f.Ql)();return(0,d.useRef)({enabled:b}).current={enabled:b},(0,d.useRef)(new Set),null}c(74132)},68132:(a,b,c)=>{Promise.resolve().then(c.bind(c,39800))},68232:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>h,dI:()=>d,gB:()=>f,vK:()=>g});let d=["en","ja"],e="en",f="locale",g={en:"English",ja:"日本語"};function h(a){return"string"==typeof a&&d.includes(a)}},70288:(a,b,c)=>{var d={"./en/home.json":[41825,1825],"./ja/home.json":[26159,6159]};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=70288,a.exports=e},70911:(a,b,c)=>{"use strict";c.d(b,{$2:()=>g,B1:()=>n,If:()=>i,NP:()=>h,TR:()=>j,wp:()=>f});var d=c(61916);let e="commandmate.worktree.surfaceMode-",f="/api/settings/default-surface-mode";function g(a,b){return`${e}${a}-split-${b}`}function h(a){return`${e}${a}-mobile`}function i(a,b){}function j(a,b){let c=void 0===b?null:b;return c?(i(a,c),c):m()}let k=d.wf,l=new Set;function m(){return k}function n(a){if(!(0,d.jg)(a))return!1;let b=m()!==a;if(k=a,i("commandmate.settings.defaultSurfaceMode",a),b)for(let a of l)a();return b}},72280:(a,b,c)=>{"use strict";c.d(b,{n:()=>e});var d=c(21124);function e({className:a="w-3.5 h-3.5",color:b}){return(0,d.jsx)("svg",{className:`${a} flex-shrink-0`,viewBox:"0 0 24 24",fill:b??"none",stroke:b?"none":"currentColor",strokeWidth:2*!b,"aria-hidden":"true",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})})}},72637:(a,b,c)=>{var d={"./en/prompt.json":[72816,2816],"./ja/prompt.json":[80066,7685]};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=72637,a.exports=e},73060:(a,b,c)=>{"use strict";c.d(b,{uN:()=>y,gZ:()=>ab,O3:()=>Y});var d=c(21124),e=c(38301),f=c(20481),g=c(71613),h=c(70584),i=c(24417),j=c(47089),k=c(8849),l=c(85866),m=c(17252),n=c(89907);function o(a){return!!a&&"object"==typeof a&&Array.isArray(a.defaultSelectedAgents)&&a.defaultSelectedAgents.length>0&&Array.isArray(a.available)&&a.available.length>0&&"number"==typeof a.minAgents&&"number"==typeof a.maxAgents}function p(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)("idle"),[v,w]=(0,e.useState)(null);(0,e.useCallback)(async()=>{try{let a=await fetch(`${n.zk}?include=installed`);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!o(b))throw Error("unexpected body");c(b),q(b.defaultSelectedAgents),(0,n.IK)(b.defaultSelectedAgents)}catch{w(a("settings.defaultAgents.loadError"))}finally{s(!1)}},[a]);let x=(0,e.useCallback)(a=>{q(a),u("idle"),w(null)},[]),y=(0,e.useCallback)((a,b)=>{let c=a+b;if(c<0||c>=p.length)return;let d=[...p];[d[a],d[c]]=[d[c],d[a]],x(d)},[p,x]),z=(0,e.useCallback)(async b=>{u("saving"),w(null);try{let d=await fetch(n.zk,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:b})}),e=await d.json().catch(()=>null);if(!d.ok||!o(e)){u("error"),w(e?.error??a("settings.defaultAgents.saveError"));return}c(a=>({...e,installed:a?.installed})),q(e.defaultSelectedAgents),(0,n.IK)(e.defaultSelectedAgents),u("saved")}catch{u("error"),w(a("settings.defaultAgents.saveError"))}},[a]);if(r)return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})});if(!b)return(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-agents-load-error",children:v??a("settings.defaultAgents.loadError")})});let A=b.installed??[],B=b.available.filter(a=>!p.includes(a)),C=p.length<b.minAgents,D=p.length>b.maxAgents,E=!C&&!D&&"saving"!==t,F=b=>A.includes(b)?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded bg-success-subtle px-1.5 py-0.5 text-xs text-success-foreground","data-testid":`default-agents-installed-${b}`,children:[(0,d.jsx)(g.A,{className:"h-3 w-3","aria-hidden":"true"}),a("settings.defaultAgents.installed")]}):(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:a("settings.defaultAgents.notInstalled")});return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-agents-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultAgents.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.appliesToNew")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-selected",children:p.map((c,e)=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-agents-row-${c}`,children:[(0,d.jsx)("span",{className:"w-6 text-xs text-muted-foreground",children:e+1}),(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),0===e&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":"default-agents-primary-badge",children:a("settings.defaultAgents.primary")}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,-1),disabled:0===e,"aria-label":a("settings.defaultAgents.moveUp"),"data-testid":`default-agents-up-${c}`,children:(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,1),disabled:e===p.length-1,"aria-label":a("settings.defaultAgents.moveDown"),"data-testid":`default-agents-down-${c}`,children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x(p.filter(a=>a!==c)),disabled:p.length<=b.minAgents,"aria-label":a("settings.defaultAgents.remove"),"data-testid":`default-agents-remove-${c}`,children:(0,d.jsx)(j.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))}),B.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs text-muted-foreground",children:a("settings.defaultAgents.addLabel")}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-available",children:B.map(c=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x([...p,c]),disabled:p.length>=b.maxAgents,"aria-label":a("settings.defaultAgents.add"),"data-testid":`default-agents-add-${c}`,children:(0,d.jsx)(k.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))})]}),(C||D)&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-range-error",children:a("settings.defaultAgents.range",{min:b.minAgents,max:b.maxAgents})}),v&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-error",children:v}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.$n,{size:"sm",onClick:()=>void z(p),disabled:!E,"data-testid":"default-agents-save",children:"saving"===t?a("settings.defaultAgents.saving"):a("settings.defaultAgents.save")}),(0,d.jsx)(l.$n,{size:"sm",variant:"ghost",onClick:()=>void z(null),disabled:!b.configured||"saving"===t,"data-testid":"default-agents-reset",children:a("settings.defaultAgents.reset")}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":"default-agents-state",children:"saved"===t?a("settings.defaultAgents.saved"):b.configured?a("settings.defaultAgents.configured"):a("settings.defaultAgents.usingBuiltIn")})]}),b.configured&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-agents-builtin",children:a("settings.defaultAgents.builtIn",{agents:b.constantDefault.map(m.oo).join(", ")})})]})})}var q=c(70911),r=c(61916);function s(a){return!!a&&"object"==typeof a&&(0,r.jg)(a.defaultSurfaceMode)&&(0,r.jg)(a.constantDefault)&&Array.isArray(a.available)&&a.available.length>0&&a.available.every(r.jg)}function t(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)("idle"),[k,m]=(0,e.useState)(null),n=(0,e.useCallback)(async()=>{try{let a=await fetch(q.wp);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!s(b))throw Error("unexpected body");c(b),(0,q.B1)(b.defaultSurfaceMode)}catch{m({kind:"load"})}finally{h(!1)}},[]),o=(0,e.useCallback)(async a=>{j("saving"),m(null),c(b=>b?{...b,defaultSurfaceMode:a}:b);try{let b=await fetch(q.wp,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),d=await b.json().catch(()=>null);if(!b.ok||!s(d)){j("error"),m({kind:"save",detail:d?.error}),n();return}c(d),(0,q.B1)(d.defaultSurfaceMode),j("saved")}catch{j("error"),m({kind:"save"}),n()}},[n]),p=k?k.detail??a("load"===k.kind?"settings.defaultSurfaceMode.loadError":"settings.defaultSurfaceMode.saveError"):null;return g?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})}):b?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-surface-mode-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultSurfaceMode.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.appliesToNew")})]}),(0,d.jsx)("div",{role:"radiogroup","aria-label":a("settings.defaultSurfaceMode.title"),className:"space-y-2","data-selected":b.defaultSurfaceMode,children:b.available.map(c=>(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-surface-mode-option-${c}`,children:[(0,d.jsx)("input",{type:"radio",name:"default-surface-mode",value:c,className:"mt-0.5",checked:b.defaultSurfaceMode===c,disabled:"saving"===i,onChange:()=>void o(c),"data-testid":`default-surface-mode-radio-${c}`}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm text-foreground",children:a(`settings.defaultSurfaceMode.mode.${c}`)}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a(`settings.defaultSurfaceMode.hint.${c}`)})]})]},c))}),p&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-surface-mode-error",children:p}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-surface-mode-state",children:"saving"===i?a("settings.defaultSurfaceMode.saving"):"saved"===i?a("settings.defaultSurfaceMode.saved"):b.configured?a("settings.defaultSurfaceMode.configured"):a("settings.defaultSurfaceMode.usingBuiltIn")})]})}):(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-surface-mode-load-error",children:p??a("settings.defaultSurfaceMode.loadError")})})}var u=c(2535),v=c(16945),w=c(9212);function x(a){let b=a.trim();if(!b)return null;try{let a=JSON.parse(b);if(!a||"object"!=typeof a)return null;let c=a.type;if("plan"!==c&&"output"!==c&&"done"!==c)return null;return a}catch{return null}}function y({worktreeId:a,instances:b,variant:c="card"}){let g=(0,f.c)("common"),{versions:h,isLoading:i,loadError:j,run:k,isUpdating:n,update:o}=function(a=!0){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(a),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(!0),n=(0,e.useCallback)(async(b=!1)=>{if(a){h(!0);try{let a=await fetch(`/api/agents/versions${b?"?refresh=1":""}`);if(!a.ok)throw Error(String(a.status));let d=await a.json();if(!(d&&"object"==typeof d&&Array.isArray(d.tools)&&Array.isArray(d.updatable)))throw Error("unexpected body");if(!m.current)return;c(d.tools),f(!1)}catch{if(!m.current)return;f(!0)}finally{m.current&&h(!1)}}},[a]),o=(0,e.useCallback)(async a=>{if(k)return;l(!0),j({tool:a,command:null,output:"",ok:null,previousVersion:null,installed:null,error:null});let b=a=>{m.current&&j(b=>b?{...b,ok:!1,error:a}:b)};try{let c=await fetch("/api/agents/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a})});if(!c.ok||!c.body){let a=await c.json().catch(()=>null);b(a?.error??`Request failed (${c.status})`);return}let d=c.body.getReader(),e=new TextDecoder,f="",g=a=>{m.current&&j(b=>b?"plan"===a.type?{...b,command:a.command}:"output"===a.type?{...b,output:b.output+a.text}:{...b,ok:a.ok,previousVersion:a.previousVersion,installed:a.installed,error:a.error??null}:b)};for(;;){let{done:a,value:b}=await d.read();if(a)break;let c=(f+=e.decode(b,{stream:!0})).split("\n");for(let a of(f=c.pop()??"",c)){let b=x(a);b&&g(b)}}let h=x(f);h&&g(h)}catch(a){b(a instanceof Error?a.message:String(a))}finally{m.current&&l(!1),await n(!0)}},[k,n]);return{versions:b,isLoading:g,loadError:d,run:i,isUpdating:k,reload:n,update:o}}(!0),[p,q]=(0,e.useState)(0),r=function(a,b,c){let[d,f]=(0,e.useState)({});return d}(0,0,0),[s,t]=(0,e.useState)({}),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null),B=k?.ok===!0,C=(0,e.useCallback)(a=>(b??[]).filter(b=>b.cliTool===a&&r[b.id]),[b,r]),D=(0,e.useCallback)(async b=>{if(a){z(null);try{let c=new URLSearchParams({cliTool:b.cliTool,instance:b.id}),d=await fetch(`/api/worktrees/${a}/kill-session?${c.toString()}`,{method:"POST"});if(!d.ok&&404!==d.status)throw Error(String(d.status));t(a=>({...a,[b.id]:!0})),q(a=>a+1)}catch{z(g("agentUpdates.restartError"))}}},[a,g]),E=i&&!h?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),g("loadingPage")]}):j&&!h?(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"agent-updates-load-error",children:g("agentUpdates.loadError")}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"agent-updates",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:g("agentUpdates.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("agentUpdates.description")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"agent-updates-rows",children:(h??[]).map(b=>{var c;let e=C(b.tool),f=b.updatable&&null!==b.installed;return(0,d.jsxs)("li",{className:"rounded-md border border-border bg-surface px-3 py-2","data-testid":`agent-updates-row-${b.tool}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(c=b.tool,(0,m.oo)(c)||c)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-installed-${b.tool}`,children:b.installed?g("agentUpdates.installed",{version:b.installed}):g("agentUpdates.notInstalled")}),b.updateAvailable&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":`agent-updates-available-${b.tool}`,children:g("agentUpdates.available",{version:b.latestVersion??""})}),b.dismissedInCodex&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-dismissed-${b.tool}`,children:g("agentUpdates.dismissed")}),f&&(0,d.jsxs)(l.$n,{size:"sm",className:"ml-auto",disabled:n,onClick:()=>void o(b.tool),"data-testid":`agent-updates-update-${b.tool}`,children:[(0,d.jsx)(u.A,{className:"h-4 w-4","aria-hidden":"true"}),n&&k?.tool===b.tool?g("agentUpdates.updating"):g("agentUpdates.update")]})]}),f&&e.length>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-start gap-1 text-xs text-warning-foreground","data-testid":`agent-updates-restart-warning-${b.tool}`,children:[(0,d.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0","aria-hidden":"true"}),(0,d.jsx)("span",{children:g("agentUpdates.restartWarning",{sessions:e.map(a=>a.alias).join(", ")})})]}),f&&0===e.length&&void 0===a&&(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":`agent-updates-restart-notice-${b.tool}`,children:g("agentUpdates.restartNotice")}),B&&k?.tool===b.tool&&e.map(a=>(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsxs)(l.$n,{size:"sm",variant:"ghost",disabled:s[a.id],onClick:()=>void D(a),"data-testid":`agent-updates-restart-${a.id}`,children:[(0,d.jsx)(w.A,{className:"h-4 w-4","aria-hidden":"true"}),g("agentUpdates.restart",{alias:a.alias})]}),s[a.id]&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:g("agentUpdates.restarted")})]},a.id))]},b.tool)})}),k&&(0,d.jsxs)("div",{className:"space-y-2","data-testid":"agent-updates-run",children:[k.command&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"agent-updates-command",children:g("agentUpdates.running",{command:k.command})}),k.output&&(0,d.jsx)("pre",{ref:A,"data-testid":"agent-updates-output",className:"max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-terminal-surface p-2 text-xs text-terminal-foreground",children:k.output}),!0===k.ok&&(0,d.jsx)("div",{className:"text-xs text-success-foreground","data-testid":"agent-updates-success",children:g("agentUpdates.succeeded",{from:k.previousVersion??"?",to:k.installed??"?"})}),!1===k.ok&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-failure",children:g("agentUpdates.failed",{error:k.error??""})})]}),y&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-restart-error",children:y})]});return"plain"===c?E:(0,d.jsx)(l.Zp,{children:E})}var z=c(3991),A=c.n(z);function B({appId:a,pollInterval:b=3e4,showResponseTime:c=!1,compact:g=!1}){let h=(0,f.c)("externalApps"),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!0);if((0,e.useCallback)(async()=>{try{let b=await fetch(`/api/external-apps/${a}/health`);if(b.ok){let a=await b.json();j(a)}else j({id:a,healthy:!1,lastChecked:Date.now(),error:"Failed to check health"})}catch{j({id:a,healthy:!1,lastChecked:Date.now(),error:"Network error"})}finally{l(!1)}},[a]),k)return(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse"}),!g&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:h("status.checking")})]});let m=i?.healthy??!1,n=m?"bg-success":"bg-muted-foreground",o=h(m?"status.running":"status.stopped");return g?(0,d.jsx)("span",{className:`inline-block h-2.5 w-2.5 rounded-full ${n}`,title:o}):(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:`inline-block h-2.5 w-2.5 rounded-full ${n}`}),(0,d.jsx)("span",{className:`text-xs ${m?"text-success-foreground":"text-muted-foreground"}`,children:o}),c&&i?.responseTime!==void 0&&(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",i.responseTime,"ms)"]})]})}function C({app:a,onEdit:b,onDelete:c}){var g;let h=(0,f.c)("externalApps"),i=(0,f.c)("common"),[j,k]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=async()=>{n(!0);try{await c(a.id)}finally{n(!1),k(!1)}},p=`/proxy/${a.pathPrefix}/`;return(0,d.jsxs)(l.Zp,{padding:"md",className:"relative",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between mb-3",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("h4",{className:"text-base font-semibold text-foreground truncate",children:a.displayName}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 font-mono truncate",children:a.name})]}),(0,d.jsx)(l.Ex,{variant:{sveltekit:"warning",streamlit:"error",nextjs:"info",other:"gray"}[a.appType]||"gray",children:{sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"}[g=a.appType]||g})]}),(0,d.jsxs)("div",{className:"space-y-2 mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.status")}),(0,d.jsx)(B,{appId:a.id,pollInterval:3e4})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.port")}),(0,d.jsxs)("span",{className:"text-sm font-mono text-foreground",children:[":",a.targetPort]})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.path")}),(0,d.jsxs)("span",{className:"text-sm font-mono text-foreground truncate max-w-[150px]",children:["/proxy/",a.pathPrefix,"/"]})]}),a.websocketEnabled&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.websocket")}),(0,d.jsx)(l.Ex,{variant:"info",children:h("card.enabled")})]}),!a.enabled&&(0,d.jsx)("div",{className:"mt-2 py-1 px-2 bg-warning-subtle border border-warning-border rounded text-xs text-warning-foreground",children:h("card.disabledNotice")})]}),j?(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:h("card.deleteConfirm",{name:a.displayName})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(l.$n,{variant:"danger",size:"sm",onClick:o,disabled:m,loading:m,children:h("card.delete")}),(0,d.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>k(!1),disabled:m,children:i("cancel")})]})]}):(0,d.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:()=>window.open(p,"_blank"),disabled:!a.enabled,children:h("card.open")}),(0,d.jsx)(l.$n,{variant:"secondary",size:"sm",onClick:()=>b(a),children:h("card.settings")}),(0,d.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>k(!0),className:"text-danger-foreground hover:bg-danger-subtle",children:h("card.delete")})]})]})}var D=c(35595);let E={MIN:1024,MAX:65535},F=/^[a-zA-Z0-9-]+$/,G={sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"},H=["sveltekit","streamlit","nextjs","other"].map(a=>({value:a,label:G[a]}));function I({isOpen:a,onClose:b,editApp:c,onSave:g}){let h=(0,f.c)("externalApps"),i=(0,f.c)("common"),j=!!c,[k,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(!0),[B,C]=(0,e.useState)({}),[G,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),L=async a=>{a.preventDefault(),K(null);let d=function(a,b){let c={};if(a.displayName?.trim()||(c.displayName="Display name is required"),!b&&(a.name?.trim()?F.test(a.name)||(c.name="Only alphanumeric characters and hyphens are allowed"):c.name="Identifier name is required",a.pathPrefix?.trim()?F.test(a.pathPrefix)||(c.pathPrefix="Only alphanumeric characters and hyphens are allowed"):c.pathPrefix="Path prefix is required"),a.targetPort){var d;"number"!=typeof a.targetPort||Number.isInteger(d=a.targetPort)&&d>=E.MIN&&d<=E.MAX||(c.targetPort=`Port must be between ${E.MIN} and ${E.MAX}`)}else c.targetPort="Port number is required";return b||a.appType||(c.appType="App type is required"),c}({displayName:k,name:n,pathPrefix:p,targetPort:r,appType:t},j);if(Object.keys(d).length>0)return void C(d);C({}),I(!0);try{if(j&&c){let a=await fetch(`/api/external-apps/${c.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:k,description:x||void 0,targetPort:r||void 0,websocketEnabled:v,enabled:z})});if(!a.ok){let b=await a.json();throw Error(b.error||h("form.updateFailed"))}}else{let a=await fetch("/api/external-apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:k,name:n,pathPrefix:p,targetPort:r,appType:t,websocketEnabled:v,description:x||void 0})});if(!a.ok){let b=await a.json();throw Error(b.error||h("form.createFailed"))}}g(),b()}catch(a){K(a instanceof Error?a.message:h("form.genericError"))}finally{I(!1)}};return(0,d.jsx)(l.Jh,{isOpen:a,onClose:b,title:j?h("form.editTitle"):h("form.addTitle"),size:"md",children:(0,d.jsxs)("form",{onSubmit:L,className:"space-y-4",children:[(0,d.jsx)("div",{className:"rounded-md bg-warning-subtle p-3 mb-4 border border-warning-border",children:(0,d.jsx)("p",{className:"text-sm text-warning-foreground",children:h("form.securityWarning")})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"displayName",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.displayName")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"displayName",type:"text",value:k,onChange:a=>m(a.target.value),className:B.displayName?"border-danger":"",placeholder:h("form.displayNamePlaceholder"),disabled:G}),B.displayName&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.displayName})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"name",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.identifierName")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"name",type:"text",value:n,onChange:a=>o(a.target.value),className:`font-mono ${B.name?"border-danger":""}`,placeholder:h("form.identifierNamePlaceholder"),disabled:G}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.identifierNameHelp")}),B.name&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.name})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"pathPrefix",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.pathPrefix")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground mr-1",children:"/proxy/"}),(0,d.jsx)(l.pd,{id:"pathPrefix",type:"text",value:p,onChange:a=>q(a.target.value),className:`w-auto flex-1 font-mono ${B.pathPrefix?"border-danger":""}`,placeholder:h("form.pathPrefixPlaceholder"),disabled:G}),(0,d.jsx)("span",{className:"text-sm text-muted-foreground ml-1",children:"/"})]}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.pathPrefixHelp")}),B.pathPrefix&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.pathPrefix})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"targetPort",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.portNumber")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"targetPort",type:"number",value:r,onChange:a=>s(a.target.value?parseInt(a.target.value,10):""),className:`font-mono ${B.targetPort?"border-danger":""}`,placeholder:h("form.portNumberPlaceholder"),min:E.MIN,max:E.MAX,disabled:G}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.portNumberHelp",{min:E.MIN,max:E.MAX})}),B.targetPort&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.targetPort})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"appType",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.appType")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsxs)("select",{id:"appType",value:t,onChange:a=>u(a.target.value),className:(0,D.cn)((0,l.j1)(),B.appType&&"border-danger"),disabled:G,children:[(0,d.jsx)("option",{value:"",children:h("form.appTypePlaceholder")}),H.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),B.appType&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.appType})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{htmlFor:"description",className:"block text-sm font-medium text-foreground mb-1",children:h("form.description")}),(0,d.jsx)(l.k_,{id:"description",value:x,onChange:a=>y(a.target.value),placeholder:h("form.descriptionPlaceholder"),rows:2,disabled:G})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.dO,{id:"websocketEnabled",checked:v,onCheckedChange:w,disabled:G}),(0,d.jsx)("label",{htmlFor:"websocketEnabled",className:"text-sm text-foreground",children:h("form.websocketLabel")})]}),j&&(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.dO,{id:"enabled",checked:z,onCheckedChange:A,disabled:G}),(0,d.jsx)("label",{htmlFor:"enabled",className:"text-sm text-foreground",children:h("form.enabledLabel")})]}),J&&(0,d.jsx)("div",{className:"p-3 bg-danger-subtle border border-danger-border rounded text-sm text-danger-foreground",children:J}),(0,d.jsxs)("div",{className:"flex justify-end gap-2 pt-4 border-t border-border",children:[(0,d.jsx)(l.$n,{type:"button",variant:"ghost",onClick:b,disabled:G,children:i("cancel")}),(0,d.jsx)(l.$n,{type:"submit",variant:"primary",loading:G,children:j?h("form.save"):h("form.add")})]})]})})}function J(){let a=(0,f.c)("externalApps"),b=(0,f.c)("common"),[c,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!0),[j,k]=(0,e.useState)(null),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)(async()=>{try{k(null);let a=await fetch("/api/external-apps");if(!a.ok)throw Error("Failed to fetch external apps");let b=await a.json();g(b.apps||[])}catch(a){k(a instanceof Error?a.message:"An error occurred")}finally{i(!1)}},[]),r=(0,e.useCallback)(a=>{p(a),n(!0)},[]),s=(0,e.useCallback)(()=>{p(null),n(!0)},[]),t=(0,e.useCallback)(async a=>{try{let b=await fetch(`/api/external-apps/${a}`,{method:"DELETE"});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to delete app")}q()}catch(a){console.error("Failed to delete app:",a)}},[q]),u=(0,e.useCallback)(()=>{q()},[q]),v=(0,e.useCallback)(()=>{n(!1),p(null)},[]);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"flex items-center justify-end",children:(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:s,children:a("manager.addApp")})}),h?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,d.jsx)(l.y$,{size:"xl",variant:"accent"}),(0,d.jsx)("span",{className:"ml-3 text-muted-foreground",children:a("manager.loading")})]})}):j?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-danger-foreground mb-4",children:a("manager.loadError")}),(0,d.jsx)(l.$n,{variant:"secondary",size:"sm",onClick:q,children:b("retry")})]})}):0===c.length?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-4",children:a("manager.empty")}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:a("manager.emptyHelp")}),(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:s,children:a("manager.addFirst")})]})}):(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:c.map(a=>(0,d.jsx)(C,{app:a,onEdit:r,onDelete:t},a.id))}),(0,d.jsx)(I,{isOpen:m,onClose:v,editApp:o,onSave:u})]})}var K=c(47268),L=c(63474),M=c(96823);let N={enabled:!0,thresholdMinutes:10},O=[5,10,30,60];function P(){let a=(0,f.c)("notifications"),{showToast:b}=(0,L.dj)(),[c,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!0),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)({prompt:!0,completion:!1}),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(null),E=null!==u&&!1!==C,F=(0,e.useCallback)(async()=>{if(q){i(!0);try{let c=await Notification.requestPermission();if("granted"!==c){t("denied"===c),b(a("toast.error"),"error");return}if(!await navigator.serviceWorker.getRegistration())return void b(a("toast.error"),"error");let d=await navigator.serviceWorker.ready,e=await d.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(a){let b="=".repeat((4-a.length%4)%4),c=atob((a+b).replace(/-/g,"+").replace(/_/g,"/")),d=new Uint8Array(new ArrayBuffer(c.length));for(let a=0;a<c.length;a++)d[a]=c.charCodeAt(a);return d}(q)}),f=await fetch("/api/push/subscriptions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:e.toJSON(),deviceLabel:navigator.userAgent.slice(0,120)})});if(!f.ok)throw Error("subscribe request failed");let g=await f.json();v(e.endpoint),D(!0),B(null),g.subscription?.preferences&&x(g.subscription.preferences),z(g.subscription?.defaultsNoticePending===!0),t(!1),b(a("toast.enabled"),"success")}catch{b(a("toast.error"),"error")}finally{i(!1)}}},[q,b,a]),G=(0,e.useCallback)(async()=>{i(!0);try{let c=await navigator.serviceWorker.getRegistration(),d=c?await c.pushManager.getSubscription():null,e=d?.endpoint??u;d&&await d.unsubscribe(),e&&await fetch("/api/push/subscriptions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:e})}),v(null),D(null),B(null),b(a("toast.disabled"),"info")}catch{b(a("toast.error"),"error")}finally{i(!1)}},[u,b,a]),H=(0,e.useCallback)(async(c,d)=>{if(!u)return;let e={...w,[c]:d};x(e);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:u,preferences:e})})).ok)throw Error("update failed");b(a("toast.updated"),"success")}catch{x(w),b(a("toast.error"),"error")}},[u,w,b,a]),I=(0,e.useCallback)(async c=>{if(!u)return;let d=c?{...w,completion:!1}:w;z(!1),c&&x(d),i(!0);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:u,...c?{preferences:d}:{},acknowledgeDefaultsNotice:!0})})).ok)throw Error("acknowledge failed");b(a(c?"defaultsNotice.adopted":"defaultsNotice.kept"),"success")}catch{x(w),z(!0),b(a("toast.error"),"error")}finally{i(!1)}},[u,w,b,a]);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(l.Zp,{children:(0,d.jsx)(R,{})}),(0,d.jsx)(l.Zp,{children:c?(0,d.jsx)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:(0,d.jsx)(l.y$,{size:"sm"})}):j?m?(0,d.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"notifications-ios-guidance",children:a("ios.guidance")}):!1===o?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("notConfigured")}):(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("description")}),s&&(0,d.jsx)("p",{className:"text-sm text-danger-foreground","data-testid":"notifications-permission-denied",children:a("permission.denied")}),(()=>{if(null===A)return null;let b="removed"===A.state,c=A.statusCode,e=b?null===c?a("delivery.removedUnknownStatus"):a("delivery.removed",{status:String(c)}):null===c?a("delivery.failingUnknownStatus",{count:A.failureCount}):a("delivery.failing",{count:A.failureCount,status:String(c)});return(0,d.jsxs)("div",{className:b?"space-y-2 rounded-lg border border-danger-border bg-danger-subtle p-3":"space-y-2 rounded-lg border border-warning-border bg-warning-subtle p-3","data-testid":"notifications-delivery-health","data-delivery-state":A.state,children:[(0,d.jsx)("p",{className:b?"text-sm font-semibold text-danger-foreground":"text-sm font-semibold text-warning-foreground",children:a(b?"delivery.headingRemoved":"delivery.headingFailing")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:e}),403===c&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"notifications-delivery-apns-hint",children:a("delivery.apnsHint")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:a("delivery.since",{timestamp:new Date(A.firstFailureAt).toLocaleString()})})]})})(),E?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-foreground",children:a("enabledOnThisDevice")}),y&&(0,d.jsxs)("div",{className:"space-y-3 rounded-lg border border-info-border bg-info-subtle p-3","data-testid":"notifications-defaults-notice",children:[(0,d.jsx)("p",{className:"text-sm font-semibold text-info-foreground",children:a("defaultsNotice.heading")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:a("defaultsNotice.completionChanged")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:a("defaultsNotice.failuresAdded")}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(l.$n,{variant:"primary",onClick:()=>I(!0),disabled:h,"data-testid":"notifications-defaults-notice-adopt",children:a("defaultsNotice.adopt")}),(0,d.jsx)(l.$n,{variant:"secondary",onClick:()=>I(!1),disabled:h,"data-testid":"notifications-defaults-notice-keep",children:a("defaultsNotice.keep")})]})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("types.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("types.promptWaiting")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("types.promptWaitingDesc")})]}),(0,d.jsx)(l.dO,{checked:w.prompt,onCheckedChange:a=>H("prompt",a),disabled:h,"aria-label":a("types.promptWaiting"),"data-testid":"notifications-toggle-prompt"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("types.completion")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("types.completionDesc")})]}),(0,d.jsx)(l.dO,{checked:w.completion,onCheckedChange:a=>H("completion",a),disabled:h,"aria-label":a("types.completion"),"data-testid":"notifications-toggle-completion"})]})]}),(0,d.jsx)(l.$n,{variant:"secondary",onClick:G,disabled:h,"data-testid":"notifications-unsubscribe",children:a("unsubscribe")})]}):(0,d.jsxs)(l.$n,{variant:"primary",onClick:F,disabled:h||s||!q,"data-testid":"notifications-enable",children:[(0,d.jsx)(K.A,{className:"h-4 w-4"}),h?a("enabling"):a("enable")]})]}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("unsupported")})}),(0,d.jsx)(l.Zp,{children:(0,d.jsx)(Q,{})})]})}function Q(){let a=(0,f.c)("notifications"),{showToast:b}=(0,L.dj)(),[c,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(N),[m,n]=(0,e.useState)([...O]),o=(0,e.useCallback)(async c=>{k(c),i(!0);try{if(!(await fetch("/api/push/escalation",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:c})})).ok)throw Error("update failed");b(a("toast.updated"),"success")}catch{k(j),b(a("toast.error"),"error")}finally{i(!1)}},[j,b,a]);return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("escalation.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("escalation.toggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("escalation.toggleDesc")})]}),(0,d.jsx)(l.dO,{checked:j.enabled,onCheckedChange:a=>o({...j,enabled:a}),disabled:c||h,"aria-label":a("escalation.toggle"),"data-testid":"notifications-toggle-escalation"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:a("escalation.threshold")}),(0,d.jsx)("select",{className:"rounded-md border border-border bg-background px-2 py-1 text-sm text-foreground",value:String(j.thresholdMinutes),disabled:c||h||!j.enabled,"aria-label":a("escalation.threshold"),"data-testid":"notifications-escalation-threshold",onChange:a=>o({...j,thresholdMinutes:Number(a.target.value)}),children:m.map(b=>(0,d.jsx)("option",{value:String(b),children:a("escalation.minutes",{count:b})},b))})]})]})}function R(){let a=(0,f.c)("notifications"),{enabled:b,setEnabled:c}=(0,M.qG)(),{enabled:e,setEnabled:g}=(0,M.Ql)();return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("inApp.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("inApp.waitingToggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("inApp.waitingToggleDesc")})]}),(0,d.jsx)(l.dO,{checked:b,onCheckedChange:c,"aria-label":a("inApp.waitingToggle"),"data-testid":"notifications-toggle-inapp-waiting"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("inApp.soundToggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("inApp.soundToggleDesc")})]}),(0,d.jsx)(l.dO,{checked:e,onCheckedChange:g,"aria-label":a("inApp.soundToggle"),"data-testid":"notifications-toggle-inapp-sound"})]})]})}function S({heading:a,children:b}){return(0,d.jsxs)("div",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:a}),b]})}function T({onNavigate:a}){let b=(0,f.c)("common"),c=(0,f.c)("skills");return(0,d.jsx)(S,{heading:b("settings.sections.quickLinks"),children:(0,d.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,d.jsx)(A(),{href:"/repositories",className:"block","data-testid":"more-link-repositories",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:"Repositories"}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:"Manage repositories and worktrees"})]})}),(0,d.jsx)(A(),{href:"/skills",className:"block","data-testid":"more-link-skills",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:b("nav.skills")}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:c("page.description")})]})}),(0,d.jsx)(A(),{href:"/skills/installed",className:"block","data-testid":"more-link-skills-installed",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:c("dashboard.title")}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:c("dashboard.description")})]})})]})})}function U(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.general"),children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(p,{}),(0,d.jsx)(t,{}),(0,d.jsx)(y,{})]})})}function V(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.notifications"),children:(0,d.jsx)(P,{})})}function W(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.externalApps"),children:(0,d.jsx)(J,{})})}function X(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.about"),children:(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-muted-foreground",children:"CommandMate - A local control plane for agent CLIs."})})})}function Y(){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(T,{}),(0,d.jsx)(U,{}),(0,d.jsx)(V,{}),(0,d.jsx)(W,{}),(0,d.jsx)(X,{})]})}c(74132),c(67693),c(90102);var Z=c(98033),$=c(34592),_=c(62197);let aa=[{id:"general",labelKey:"settings.sections.general"},{id:"notifications",labelKey:"settings.sections.notifications"},{id:"externalApps",labelKey:"settings.sections.externalApps"},{id:"about",labelKey:"settings.sections.about"}];function ab(){let a=(0,f.c)("common"),{isOpen:b,close:c}=(0,_.V0)();return(0,d.jsx)(Z.a,{isOpen:b,onClose:c,title:a("settings.title"),size:"lg",children:(0,d.jsxs)($.tU,{defaultValue:"general",orientation:"vertical",variant:"pill",className:"flex gap-6 min-h-[60vh]","data-testid":"settings-dialog",children:[(0,d.jsx)($.j7,{"aria-label":a("settings.categoriesLabel"),className:"sticky top-0 w-40 shrink-0 flex-col items-stretch self-start",children:aa.map(b=>(0,d.jsx)($.Xi,{value:b.id,"data-testid":`settings-dialog-tab-${b.id}`,className:"justify-start",children:a(b.labelKey)},b.id))}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)($.av,{value:"general",className:"mt-0",children:(0,d.jsx)(U,{})}),(0,d.jsx)($.av,{value:"notifications",className:"mt-0",children:(0,d.jsx)(V,{})}),(0,d.jsx)($.av,{value:"externalApps",className:"mt-0",children:(0,d.jsx)(W,{})}),(0,d.jsxs)($.av,{value:"about",className:"mt-0",children:[(0,d.jsx)(T,{onNavigate:c}),(0,d.jsx)(X,{})]})]})]})})}},73790:(a,b,c)=>{"use strict";c.d(b,{T:()=>h});var d=c(21124),e=c(38301),f=c.n(e),g=c(35595);let h=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)("textarea",{ref:c,className:(0,g.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-surface dark:bg-surface-2 px-3 py-2 text-sm 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",a),...b}));h.displayName="Textarea"},74132:(a,b,c)=>{"use strict";c.d(b,{dS:()=>k,rM:()=>l});var d=c(38301),e=c(42378),f=c(20481),g=c(63474),h=c(63157),i=c(74930),j=c(96823);function k(a,b,c){return`${a}|${b??"-"}|${c??"no-since"}`}function l(){let a=(0,f.c)("notifications"),{showToast:b}=(0,g.dj)(),{addListener:c}=(0,i.xM)(),{enabled:k}=(0,j.qG)(),l=(0,e.usePathname)(),m=(0,e.useRouter)(),n=(0,h.rC)();return(0,d.useRef)({enabled:k,pathname:l,worktrees:n?.worktrees,showToast:b,t:a,router:m}).current={enabled:k,pathname:l,worktrees:n?.worktrees,showToast:b,t:a,router:m},(0,d.useRef)(new Set),null}},74892:(a,b,c)=>{"use strict";c.d(b,{d:()=>i});var d=c(21124),e=c(38301),f=c.n(e),g=c(75441),h=c(35595);let i=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.bL,{ref:c,className:(0,h.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50","data-[state=checked]:bg-accent-600 data-[state=unchecked]:bg-muted",a),...b,children:(0,d.jsx)(g.zi,{className:(0,h.cn)("pointer-events-none block h-4 w-4 rounded-full bg-surface shadow-lg ring-0 transition-transform","data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));i.displayName="Switch"},74930:(a,b,c)=>{"use strict";c.d(b,{tS:()=>i,xM:()=>j,T3:()=>k});var d=c(21124),e=c(38301);c(12055);let f=()=>{},g={status:"disconnected",connected:!1,subscribe:f,unsubscribe:f,addListener:()=>f},h=(0,e.createContext)(null);function i({children:a,enabled:b=!0}){let c=(0,e.useRef)(new Set),f=(0,e.useRef)(new Map),{status:g,subscribe:i,unsubscribe:j}=function(a={}){let{onEvent:b,onStatusChange:c,autoReconnect:d=!0,reconnectBaseDelay:f=1e3,reconnectMaxDelay:g=3e4,livenessTimeout:h=75e3,livenessCheckInterval:i=5e3,enabled:j=!0}=a,[k,l]=(0,e.useState)("disconnected"),m=(0,e.useRef)(null),n=(0,e.useRef)(null),o=(0,e.useRef)(0),p=(0,e.useRef)(new Set),q=(0,e.useRef)(!1);(0,e.useRef)(0);let r=(0,e.useRef)(()=>{});(0,e.useRef)(b).current=b;let s=(0,e.useRef)(c);s.current=c;let t=(0,e.useCallback)(a=>{l(a),s.current?.(a)},[]),u=(0,e.useCallback)(()=>{null!==n.current&&(clearTimeout(n.current),n.current=null)},[]),v=(0,e.useCallback)(()=>{if(q.current||!d||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;u();let a=function(a,b,c,d=Math.random){return Math.max(0,Math.round(Math.min(b*2**Math.max(0,a),c)*(1+(2*d()-1)*.2)))}(o.current,f,g);o.current+=1,n.current=setTimeout(()=>{n.current=null,r.current()},a)},[d,f,g,u]);r.current=(0,e.useCallback)(()=>{},[j,t,u,v]),(0,e.useCallback)(()=>{let a=m.current;if(a){a.onopen=null,a.onmessage=null,a.onerror=null,a.onclose=null,m.current=null;try{a.close(4001,"half-open")}catch{}t("disconnected"),v()}},[t,v]),(0,e.useCallback)(()=>{if(u(),q.current=!0,m.current){try{m.current.close(1e3,"Client disconnect")}catch{}m.current=null}},[u]);let w=(0,e.useCallback)(a=>{let b=m.current,c="undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null;if(b&&c&&b.readyState===c.OPEN)try{b.send(JSON.stringify(a))}catch{}},[]);return{status:k,subscribe:(0,e.useCallback)(a=>{p.current.has(a)||(p.current.add(a),w({type:"subscribe",worktreeId:a}))},[w]),unsubscribe:(0,e.useCallback)(a=>{p.current.has(a)&&(p.current.delete(a),w({type:"unsubscribe",worktreeId:a}))},[w]),send:w}}({enabled:b,onEvent:(0,e.useCallback)(a=>{c.current.forEach(b=>{try{b(a)}catch{}})},[])}),k=(0,e.useCallback)(a=>{let b=f.current,c=b.get(a)??0;b.set(a,c+1),0===c&&i(a)},[i]),l=(0,e.useCallback)(a=>{let b=f.current,c=b.get(a)??0;c<=1?(b.delete(a),j(a)):b.set(a,c-1)},[j]),m=(0,e.useCallback)(a=>(c.current.add(a),()=>{c.current.delete(a)}),[]),n=(0,e.useMemo)(()=>({status:g,connected:"connected"===g,subscribe:k,unsubscribe:l,addListener:m}),[g,k,l,m]);return(0,d.jsx)(h.Provider,{value:n,children:a})}function j(){return(0,e.useContext)(h)??g}function k(a){let{addListener:b}=j();(0,e.useRef)(a).current=a}},75567:(a,b,c)=>{var d={"./en/pwa.json":[51262,1262],"./ja/pwa.json":[46072,6072]};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=75567,a.exports=e},76047:(a,b,c)=>{"use strict";c.d(b,{P0:()=>Z,oQ:()=>Y,tJ:()=>U,xk:()=>X,xq:()=>_,yW:()=>$});var d=c(21124),e=c(38301),f=c(23312),g=c(42378),h=c(52761),i=c(20481),j=c(55992),k=c(45523),l=c(67565),m=c(75903),n=c(50987),o=c(59268),p=c(75234),q=c(38882),r=c(70175),s=c(60988),t=c(34487),u=c(25345),v=c(96558),w=c(97950),x=c(75692),y=c(57898),z=c(88285),A=c(71563),B=c(35595),C=c(11010),D=c(64632),E=c(89184),F=c(5772),G=c(63157),H=c(12480),I=c(85744),J=c(78352),K=c(22317),L=c(1637),M=c(89877),N=c(85647),O=c(63474),P=c(85678),Q=c(17252);let R=[{key:"sessions",href:"/sessions"},{key:"repositories",href:"/repositories"},{key:"review",href:"/review"},{key:"skills",href:"/skills"},{key:"more",href:"/more"}],S={sessions:m.A,repositories:n.A,review:o.A,skills:p.A,more:q.A};function T({worktree:a,className:b}){let c=(0,i.c)("common"),e=a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isSessionRunning?"ready":"idle",f=(0,L.Mq)(e,Object.values(a.sessionStatusByCli??{}).some(a=>(0,M.px)(a)));return(0,d.jsx)(K.m,{status:e,size:"sm",label:f?c(L.rH):void 0,className:(0,B.cn)(b,f&&L.Jd),"data-unclassified":f?"true":void 0})}function U(a){if(!(a instanceof HTMLElement))return!1;let b=a.tagName;return!!("INPUT"===b||"TEXTAREA"===b||"SELECT"===b||a.isContentEditable||a.closest('[role="log"]'))}let V=(0,B.cn)("flex cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-sm","text-foreground","data-[selected=true]:bg-accent-500/15 data-[selected=true]:text-accent-700","dark:data-[selected=true]:text-accent-300"),W="shrink-0 text-muted-foreground";function X(){if("undefined"==typeof document)return null;let a=document.querySelector("[data-instance-id]");return a?.getAttribute("data-instance-id")?.trim()||null}function Y(a){if("undefined"==typeof document)return!1;let b=Array.from(document.querySelectorAll('[data-testid="message-input-textarea"]'));if(0===b.length)return!1;let c=document.activeElement,d=b.find(a=>a===c)??b[0],e=d.value,f=""===e.trim()?a:`${e}
|
|
13
|
+
`,children:(0,d.jsx)(l.A,{className:"h-4 w-4"})})]})}function s({toasts:a,onClose:b}){let[c,g]=(0,e.useState)(!1),h=(0,d.jsx)("div",{"data-testid":"toast-container","aria-live":"polite",className:"fixed bottom-4 right-4 flex flex-col gap-2",style:{zIndex:m.M.TOAST},children:a.map(a=>(0,d.jsx)(r,{id:a.id,message:a.message,type:a.type,onClose:b,duration:a.duration,onClick:a.onClick},a.id))});return c?(0,f.createPortal)(h,document.body):null}function t(){let[a,b]=(0,e.useState)([]),c=(0,e.useRef)(0),d=(0,e.useCallback)((a,d="info",e=p,f)=>{let g=`toast-${++c.current}-${Date.now()}`,h={id:g,message:a,type:d,duration:e,...f?.onClick?{onClick:f.onClick}:{}};return b(a=>[...a,h]),g},[]),f=(0,e.useCallback)(a=>{b(b=>b.filter(b=>b.id!==a))},[]),g=(0,e.useCallback)(()=>{b([])},[]);return(0,e.useMemo)(()=>({toasts:a,showToast:d,removeToast:f,clearToasts:g}),[a,d,f,g])}let u=(0,e.createContext)(null);function v({children:a}){let b=t();return(0,d.jsxs)(u.Provider,{value:b,children:[a,(0,d.jsx)(s,{toasts:b.toasts,onClose:b.removeToast})]})}function w(){let a=(0,e.useContext)(u),b=t();return a??b}},64182:(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/global-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/global-error.tsx","default")},64632:(a,b,c)=>{"use strict";c.d(b,{C:()=>h,E:()=>g});var d=c(21124),e=c(38301);let f=(0,e.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function g({children:a}){let[b,c]=(0,e.useState)(!1),g=(0,e.useCallback)(()=>c(a=>!a),[]),h=(0,e.useMemo)(()=>({open:b,setOpen:c,toggle:g}),[b,g]);return(0,d.jsx)(f.Provider,{value:h,children:a})}function h(){return(0,e.useContext)(f)}},66125:(a,b,c)=>{var d={"./en/error.json":[22980,2980],"./ja/error.json":[10450,450]};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=66125,a.exports=e},67693:(a,b,c)=>{"use strict";c.d(b,{H:()=>g});var d=c(38301),e=c(74930),f=c(96823);function g(){let{addListener:a}=(0,e.xM)(),{enabled:b}=(0,f.Ql)();return(0,d.useRef)({enabled:b}).current={enabled:b},(0,d.useRef)(new Set),null}c(74132)},68132:(a,b,c)=>{Promise.resolve().then(c.bind(c,39800))},68232:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>h,dI:()=>d,gB:()=>f,vK:()=>g});let d=["en","ja"],e="en",f="locale",g={en:"English",ja:"日本語"};function h(a){return"string"==typeof a&&d.includes(a)}},70288:(a,b,c)=>{var d={"./en/home.json":[41825,1825],"./ja/home.json":[26159,6159]};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=70288,a.exports=e},70911:(a,b,c)=>{"use strict";c.d(b,{$2:()=>g,B1:()=>o,CO:()=>j,If:()=>i,NP:()=>h,TR:()=>k,wp:()=>f});var d=c(61916);let e="commandmate.worktree.surfaceMode-",f="/api/settings/default-surface-mode";function g(a,b){return`${e}${a}-split-${b}`}function h(a){return`${e}${a}-mobile`}function i(a,b){}function j(){}function k(a,b){let c=void 0===b?null:b;return c?(i(a,c),c):n()}let l=d.wf,m=new Set;function n(){return l}function o(a){if(!(0,d.jg)(a))return!1;let b=n()!==a;if(l=a,i("commandmate.settings.defaultSurfaceMode",a),b)for(let a of m)a();return b}},72280:(a,b,c)=>{"use strict";c.d(b,{n:()=>e});var d=c(21124);function e({className:a="w-3.5 h-3.5",color:b}){return(0,d.jsx)("svg",{className:`${a} flex-shrink-0`,viewBox:"0 0 24 24",fill:b??"none",stroke:b?"none":"currentColor",strokeWidth:2*!b,"aria-hidden":"true",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})})}},72637:(a,b,c)=>{var d={"./en/prompt.json":[72816,2816],"./ja/prompt.json":[80066,7685]};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=72637,a.exports=e},73060:(a,b,c)=>{"use strict";c.d(b,{uN:()=>y,gZ:()=>ab,O3:()=>Y});var d=c(21124),e=c(38301),f=c(20481),g=c(71613),h=c(70584),i=c(24417),j=c(47089),k=c(8849),l=c(85866),m=c(17252),n=c(89907);function o(a){return!!a&&"object"==typeof a&&Array.isArray(a.defaultSelectedAgents)&&a.defaultSelectedAgents.length>0&&Array.isArray(a.available)&&a.available.length>0&&"number"==typeof a.minAgents&&"number"==typeof a.maxAgents}function p(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)("idle"),[v,w]=(0,e.useState)(null);(0,e.useCallback)(async()=>{try{let a=await fetch(`${n.zk}?include=installed`);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!o(b))throw Error("unexpected body");c(b),q(b.defaultSelectedAgents),(0,n.IK)(b.defaultSelectedAgents)}catch{w(a("settings.defaultAgents.loadError"))}finally{s(!1)}},[a]);let x=(0,e.useCallback)(a=>{q(a),u("idle"),w(null)},[]),y=(0,e.useCallback)((a,b)=>{let c=a+b;if(c<0||c>=p.length)return;let d=[...p];[d[a],d[c]]=[d[c],d[a]],x(d)},[p,x]),z=(0,e.useCallback)(async b=>{u("saving"),w(null);try{let d=await fetch(n.zk,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:b})}),e=await d.json().catch(()=>null);if(!d.ok||!o(e)){u("error"),w(e?.error??a("settings.defaultAgents.saveError"));return}c(a=>({...e,installed:a?.installed})),q(e.defaultSelectedAgents),(0,n.IK)(e.defaultSelectedAgents),u("saved")}catch{u("error"),w(a("settings.defaultAgents.saveError"))}},[a]);if(r)return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})});if(!b)return(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-agents-load-error",children:v??a("settings.defaultAgents.loadError")})});let A=b.installed??[],B=b.available.filter(a=>!p.includes(a)),C=p.length<b.minAgents,D=p.length>b.maxAgents,E=!C&&!D&&"saving"!==t,F=b=>A.includes(b)?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded bg-success-subtle px-1.5 py-0.5 text-xs text-success-foreground","data-testid":`default-agents-installed-${b}`,children:[(0,d.jsx)(g.A,{className:"h-3 w-3","aria-hidden":"true"}),a("settings.defaultAgents.installed")]}):(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:a("settings.defaultAgents.notInstalled")});return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-agents-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultAgents.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.appliesToNew")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-selected",children:p.map((c,e)=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-agents-row-${c}`,children:[(0,d.jsx)("span",{className:"w-6 text-xs text-muted-foreground",children:e+1}),(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),0===e&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":"default-agents-primary-badge",children:a("settings.defaultAgents.primary")}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,-1),disabled:0===e,"aria-label":a("settings.defaultAgents.moveUp"),"data-testid":`default-agents-up-${c}`,children:(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,1),disabled:e===p.length-1,"aria-label":a("settings.defaultAgents.moveDown"),"data-testid":`default-agents-down-${c}`,children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x(p.filter(a=>a!==c)),disabled:p.length<=b.minAgents,"aria-label":a("settings.defaultAgents.remove"),"data-testid":`default-agents-remove-${c}`,children:(0,d.jsx)(j.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))}),B.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs text-muted-foreground",children:a("settings.defaultAgents.addLabel")}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-available",children:B.map(c=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x([...p,c]),disabled:p.length>=b.maxAgents,"aria-label":a("settings.defaultAgents.add"),"data-testid":`default-agents-add-${c}`,children:(0,d.jsx)(k.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))})]}),(C||D)&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-range-error",children:a("settings.defaultAgents.range",{min:b.minAgents,max:b.maxAgents})}),v&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-error",children:v}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.$n,{size:"sm",onClick:()=>void z(p),disabled:!E,"data-testid":"default-agents-save",children:"saving"===t?a("settings.defaultAgents.saving"):a("settings.defaultAgents.save")}),(0,d.jsx)(l.$n,{size:"sm",variant:"ghost",onClick:()=>void z(null),disabled:!b.configured||"saving"===t,"data-testid":"default-agents-reset",children:a("settings.defaultAgents.reset")}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":"default-agents-state",children:"saved"===t?a("settings.defaultAgents.saved"):b.configured?a("settings.defaultAgents.configured"):a("settings.defaultAgents.usingBuiltIn")})]}),b.configured&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-agents-builtin",children:a("settings.defaultAgents.builtIn",{agents:b.constantDefault.map(m.oo).join(", ")})})]})})}var q=c(70911),r=c(61916);function s(a){return!!a&&"object"==typeof a&&(0,r.jg)(a.defaultSurfaceMode)&&(0,r.jg)(a.constantDefault)&&Array.isArray(a.available)&&a.available.length>0&&a.available.every(r.jg)}function t(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)("idle"),[k,m]=(0,e.useState)(null),n=(0,e.useCallback)(async()=>{try{let a=await fetch(q.wp);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!s(b))throw Error("unexpected body");c(b),(0,q.B1)(b.defaultSurfaceMode)}catch{m({kind:"load"})}finally{h(!1)}},[]),o=(0,e.useCallback)(async a=>{j("saving"),m(null),c(b=>b?{...b,defaultSurfaceMode:a}:b);try{let b=await fetch(q.wp,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),d=await b.json().catch(()=>null);if(!b.ok||!s(d)){j("error"),m({kind:"save",detail:d?.error}),n();return}c(d),(0,q.B1)(d.defaultSurfaceMode),j("saved")}catch{j("error"),m({kind:"save"}),n()}},[n]),p=k?k.detail??a("load"===k.kind?"settings.defaultSurfaceMode.loadError":"settings.defaultSurfaceMode.saveError"):null;return g?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})}):b?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-surface-mode-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultSurfaceMode.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.appliesToNew")})]}),(0,d.jsx)("div",{role:"radiogroup","aria-label":a("settings.defaultSurfaceMode.title"),className:"space-y-2","data-selected":b.defaultSurfaceMode,children:b.available.map(c=>(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-surface-mode-option-${c}`,children:[(0,d.jsx)("input",{type:"radio",name:"default-surface-mode",value:c,className:"mt-0.5",checked:b.defaultSurfaceMode===c,disabled:"saving"===i,onChange:()=>void o(c),"data-testid":`default-surface-mode-radio-${c}`}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm text-foreground",children:a(`settings.defaultSurfaceMode.mode.${c}`)}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a(`settings.defaultSurfaceMode.hint.${c}`)})]})]},c))}),p&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-surface-mode-error",children:p}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-surface-mode-state",children:"saving"===i?a("settings.defaultSurfaceMode.saving"):"saved"===i?a("settings.defaultSurfaceMode.saved"):b.configured?a("settings.defaultSurfaceMode.configured"):a("settings.defaultSurfaceMode.usingBuiltIn")})]})}):(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-surface-mode-load-error",children:p??a("settings.defaultSurfaceMode.loadError")})})}var u=c(2535),v=c(16945),w=c(9212);function x(a){let b=a.trim();if(!b)return null;try{let a=JSON.parse(b);if(!a||"object"!=typeof a)return null;let c=a.type;if("plan"!==c&&"output"!==c&&"done"!==c)return null;return a}catch{return null}}function y({worktreeId:a,instances:b,variant:c="card"}){let g=(0,f.c)("common"),{versions:h,isLoading:i,loadError:j,run:k,isUpdating:n,update:o}=function(a=!0){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(a),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(!0),n=(0,e.useCallback)(async(b=!1)=>{if(a){h(!0);try{let a=await fetch(`/api/agents/versions${b?"?refresh=1":""}`);if(!a.ok)throw Error(String(a.status));let d=await a.json();if(!(d&&"object"==typeof d&&Array.isArray(d.tools)&&Array.isArray(d.updatable)))throw Error("unexpected body");if(!m.current)return;c(d.tools),f(!1)}catch{if(!m.current)return;f(!0)}finally{m.current&&h(!1)}}},[a]),o=(0,e.useCallback)(async a=>{if(k)return;l(!0),j({tool:a,command:null,output:"",ok:null,previousVersion:null,installed:null,error:null});let b=a=>{m.current&&j(b=>b?{...b,ok:!1,error:a}:b)};try{let c=await fetch("/api/agents/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a})});if(!c.ok||!c.body){let a=await c.json().catch(()=>null);b(a?.error??`Request failed (${c.status})`);return}let d=c.body.getReader(),e=new TextDecoder,f="",g=a=>{m.current&&j(b=>b?"plan"===a.type?{...b,command:a.command}:"output"===a.type?{...b,output:b.output+a.text}:{...b,ok:a.ok,previousVersion:a.previousVersion,installed:a.installed,error:a.error??null}:b)};for(;;){let{done:a,value:b}=await d.read();if(a)break;let c=(f+=e.decode(b,{stream:!0})).split("\n");for(let a of(f=c.pop()??"",c)){let b=x(a);b&&g(b)}}let h=x(f);h&&g(h)}catch(a){b(a instanceof Error?a.message:String(a))}finally{m.current&&l(!1),await n(!0)}},[k,n]);return{versions:b,isLoading:g,loadError:d,run:i,isUpdating:k,reload:n,update:o}}(!0),[p,q]=(0,e.useState)(0),r=function(a,b,c){let[d,f]=(0,e.useState)({});return d}(0,0,0),[s,t]=(0,e.useState)({}),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null),B=k?.ok===!0,C=(0,e.useCallback)(a=>(b??[]).filter(b=>b.cliTool===a&&r[b.id]),[b,r]),D=(0,e.useCallback)(async b=>{if(a){z(null);try{let c=new URLSearchParams({cliTool:b.cliTool,instance:b.id}),d=await fetch(`/api/worktrees/${a}/kill-session?${c.toString()}`,{method:"POST"});if(!d.ok&&404!==d.status)throw Error(String(d.status));t(a=>({...a,[b.id]:!0})),q(a=>a+1)}catch{z(g("agentUpdates.restartError"))}}},[a,g]),E=i&&!h?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),g("loadingPage")]}):j&&!h?(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"agent-updates-load-error",children:g("agentUpdates.loadError")}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"agent-updates",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:g("agentUpdates.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("agentUpdates.description")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"agent-updates-rows",children:(h??[]).map(b=>{var c;let e=C(b.tool),f=b.updatable&&null!==b.installed;return(0,d.jsxs)("li",{className:"rounded-md border border-border bg-surface px-3 py-2","data-testid":`agent-updates-row-${b.tool}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(c=b.tool,(0,m.oo)(c)||c)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-installed-${b.tool}`,children:b.installed?g("agentUpdates.installed",{version:b.installed}):g("agentUpdates.notInstalled")}),b.updateAvailable&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":`agent-updates-available-${b.tool}`,children:g("agentUpdates.available",{version:b.latestVersion??""})}),b.dismissedInCodex&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-dismissed-${b.tool}`,children:g("agentUpdates.dismissed")}),f&&(0,d.jsxs)(l.$n,{size:"sm",className:"ml-auto",disabled:n,onClick:()=>void o(b.tool),"data-testid":`agent-updates-update-${b.tool}`,children:[(0,d.jsx)(u.A,{className:"h-4 w-4","aria-hidden":"true"}),n&&k?.tool===b.tool?g("agentUpdates.updating"):g("agentUpdates.update")]})]}),f&&e.length>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-start gap-1 text-xs text-warning-foreground","data-testid":`agent-updates-restart-warning-${b.tool}`,children:[(0,d.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0","aria-hidden":"true"}),(0,d.jsx)("span",{children:g("agentUpdates.restartWarning",{sessions:e.map(a=>a.alias).join(", ")})})]}),f&&0===e.length&&void 0===a&&(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":`agent-updates-restart-notice-${b.tool}`,children:g("agentUpdates.restartNotice")}),B&&k?.tool===b.tool&&e.map(a=>(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsxs)(l.$n,{size:"sm",variant:"ghost",disabled:s[a.id],onClick:()=>void D(a),"data-testid":`agent-updates-restart-${a.id}`,children:[(0,d.jsx)(w.A,{className:"h-4 w-4","aria-hidden":"true"}),g("agentUpdates.restart",{alias:a.alias})]}),s[a.id]&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:g("agentUpdates.restarted")})]},a.id))]},b.tool)})}),k&&(0,d.jsxs)("div",{className:"space-y-2","data-testid":"agent-updates-run",children:[k.command&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"agent-updates-command",children:g("agentUpdates.running",{command:k.command})}),k.output&&(0,d.jsx)("pre",{ref:A,"data-testid":"agent-updates-output",className:"max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-terminal-surface p-2 text-xs text-terminal-foreground",children:k.output}),!0===k.ok&&(0,d.jsx)("div",{className:"text-xs text-success-foreground","data-testid":"agent-updates-success",children:g("agentUpdates.succeeded",{from:k.previousVersion??"?",to:k.installed??"?"})}),!1===k.ok&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-failure",children:g("agentUpdates.failed",{error:k.error??""})})]}),y&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-restart-error",children:y})]});return"plain"===c?E:(0,d.jsx)(l.Zp,{children:E})}var z=c(3991),A=c.n(z);function B({appId:a,pollInterval:b=3e4,showResponseTime:c=!1,compact:g=!1}){let h=(0,f.c)("externalApps"),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!0);if((0,e.useCallback)(async()=>{try{let b=await fetch(`/api/external-apps/${a}/health`);if(b.ok){let a=await b.json();j(a)}else j({id:a,healthy:!1,lastChecked:Date.now(),error:"Failed to check health"})}catch{j({id:a,healthy:!1,lastChecked:Date.now(),error:"Network error"})}finally{l(!1)}},[a]),k)return(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse"}),!g&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:h("status.checking")})]});let m=i?.healthy??!1,n=m?"bg-success":"bg-muted-foreground",o=h(m?"status.running":"status.stopped");return g?(0,d.jsx)("span",{className:`inline-block h-2.5 w-2.5 rounded-full ${n}`,title:o}):(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:`inline-block h-2.5 w-2.5 rounded-full ${n}`}),(0,d.jsx)("span",{className:`text-xs ${m?"text-success-foreground":"text-muted-foreground"}`,children:o}),c&&i?.responseTime!==void 0&&(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",i.responseTime,"ms)"]})]})}function C({app:a,onEdit:b,onDelete:c}){var g;let h=(0,f.c)("externalApps"),i=(0,f.c)("common"),[j,k]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=async()=>{n(!0);try{await c(a.id)}finally{n(!1),k(!1)}},p=`/proxy/${a.pathPrefix}/`;return(0,d.jsxs)(l.Zp,{padding:"md",className:"relative",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between mb-3",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("h4",{className:"text-base font-semibold text-foreground truncate",children:a.displayName}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 font-mono truncate",children:a.name})]}),(0,d.jsx)(l.Ex,{variant:{sveltekit:"warning",streamlit:"error",nextjs:"info",other:"gray"}[a.appType]||"gray",children:{sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"}[g=a.appType]||g})]}),(0,d.jsxs)("div",{className:"space-y-2 mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.status")}),(0,d.jsx)(B,{appId:a.id,pollInterval:3e4})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.port")}),(0,d.jsxs)("span",{className:"text-sm font-mono text-foreground",children:[":",a.targetPort]})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.path")}),(0,d.jsxs)("span",{className:"text-sm font-mono text-foreground truncate max-w-[150px]",children:["/proxy/",a.pathPrefix,"/"]})]}),a.websocketEnabled&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground",children:h("card.websocket")}),(0,d.jsx)(l.Ex,{variant:"info",children:h("card.enabled")})]}),!a.enabled&&(0,d.jsx)("div",{className:"mt-2 py-1 px-2 bg-warning-subtle border border-warning-border rounded text-xs text-warning-foreground",children:h("card.disabledNotice")})]}),j?(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:h("card.deleteConfirm",{name:a.displayName})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(l.$n,{variant:"danger",size:"sm",onClick:o,disabled:m,loading:m,children:h("card.delete")}),(0,d.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>k(!1),disabled:m,children:i("cancel")})]})]}):(0,d.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:()=>window.open(p,"_blank"),disabled:!a.enabled,children:h("card.open")}),(0,d.jsx)(l.$n,{variant:"secondary",size:"sm",onClick:()=>b(a),children:h("card.settings")}),(0,d.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>k(!0),className:"text-danger-foreground hover:bg-danger-subtle",children:h("card.delete")})]})]})}var D=c(35595);let E={MIN:1024,MAX:65535},F=/^[a-zA-Z0-9-]+$/,G={sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"},H=["sveltekit","streamlit","nextjs","other"].map(a=>({value:a,label:G[a]}));function I({isOpen:a,onClose:b,editApp:c,onSave:g}){let h=(0,f.c)("externalApps"),i=(0,f.c)("common"),j=!!c,[k,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(!0),[B,C]=(0,e.useState)({}),[G,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),L=async a=>{a.preventDefault(),K(null);let d=function(a,b){let c={};if(a.displayName?.trim()||(c.displayName="Display name is required"),!b&&(a.name?.trim()?F.test(a.name)||(c.name="Only alphanumeric characters and hyphens are allowed"):c.name="Identifier name is required",a.pathPrefix?.trim()?F.test(a.pathPrefix)||(c.pathPrefix="Only alphanumeric characters and hyphens are allowed"):c.pathPrefix="Path prefix is required"),a.targetPort){var d;"number"!=typeof a.targetPort||Number.isInteger(d=a.targetPort)&&d>=E.MIN&&d<=E.MAX||(c.targetPort=`Port must be between ${E.MIN} and ${E.MAX}`)}else c.targetPort="Port number is required";return b||a.appType||(c.appType="App type is required"),c}({displayName:k,name:n,pathPrefix:p,targetPort:r,appType:t},j);if(Object.keys(d).length>0)return void C(d);C({}),I(!0);try{if(j&&c){let a=await fetch(`/api/external-apps/${c.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:k,description:x||void 0,targetPort:r||void 0,websocketEnabled:v,enabled:z})});if(!a.ok){let b=await a.json();throw Error(b.error||h("form.updateFailed"))}}else{let a=await fetch("/api/external-apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:k,name:n,pathPrefix:p,targetPort:r,appType:t,websocketEnabled:v,description:x||void 0})});if(!a.ok){let b=await a.json();throw Error(b.error||h("form.createFailed"))}}g(),b()}catch(a){K(a instanceof Error?a.message:h("form.genericError"))}finally{I(!1)}};return(0,d.jsx)(l.Jh,{isOpen:a,onClose:b,title:j?h("form.editTitle"):h("form.addTitle"),size:"md",children:(0,d.jsxs)("form",{onSubmit:L,className:"space-y-4",children:[(0,d.jsx)("div",{className:"rounded-md bg-warning-subtle p-3 mb-4 border border-warning-border",children:(0,d.jsx)("p",{className:"text-sm text-warning-foreground",children:h("form.securityWarning")})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"displayName",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.displayName")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"displayName",type:"text",value:k,onChange:a=>m(a.target.value),className:B.displayName?"border-danger":"",placeholder:h("form.displayNamePlaceholder"),disabled:G}),B.displayName&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.displayName})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"name",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.identifierName")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"name",type:"text",value:n,onChange:a=>o(a.target.value),className:`font-mono ${B.name?"border-danger":""}`,placeholder:h("form.identifierNamePlaceholder"),disabled:G}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.identifierNameHelp")}),B.name&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.name})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"pathPrefix",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.pathPrefix")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("span",{className:"text-sm text-muted-foreground mr-1",children:"/proxy/"}),(0,d.jsx)(l.pd,{id:"pathPrefix",type:"text",value:p,onChange:a=>q(a.target.value),className:`w-auto flex-1 font-mono ${B.pathPrefix?"border-danger":""}`,placeholder:h("form.pathPrefixPlaceholder"),disabled:G}),(0,d.jsx)("span",{className:"text-sm text-muted-foreground ml-1",children:"/"})]}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.pathPrefixHelp")}),B.pathPrefix&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.pathPrefix})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"targetPort",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.portNumber")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsx)(l.pd,{id:"targetPort",type:"number",value:r,onChange:a=>s(a.target.value?parseInt(a.target.value,10):""),className:`font-mono ${B.targetPort?"border-danger":""}`,placeholder:h("form.portNumberPlaceholder"),min:E.MIN,max:E.MAX,disabled:G}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:h("form.portNumberHelp",{min:E.MIN,max:E.MAX})}),B.targetPort&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.targetPort})]}),!j&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{htmlFor:"appType",className:"block text-sm font-medium text-foreground mb-1",children:[h("form.appType")," ",(0,d.jsx)("span",{className:"text-danger",children:"*"})]}),(0,d.jsxs)("select",{id:"appType",value:t,onChange:a=>u(a.target.value),className:(0,D.cn)((0,l.j1)(),B.appType&&"border-danger"),disabled:G,children:[(0,d.jsx)("option",{value:"",children:h("form.appTypePlaceholder")}),H.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),B.appType&&(0,d.jsx)("p",{className:"mt-1 text-xs text-danger",children:B.appType})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{htmlFor:"description",className:"block text-sm font-medium text-foreground mb-1",children:h("form.description")}),(0,d.jsx)(l.k_,{id:"description",value:x,onChange:a=>y(a.target.value),placeholder:h("form.descriptionPlaceholder"),rows:2,disabled:G})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.dO,{id:"websocketEnabled",checked:v,onCheckedChange:w,disabled:G}),(0,d.jsx)("label",{htmlFor:"websocketEnabled",className:"text-sm text-foreground",children:h("form.websocketLabel")})]}),j&&(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.dO,{id:"enabled",checked:z,onCheckedChange:A,disabled:G}),(0,d.jsx)("label",{htmlFor:"enabled",className:"text-sm text-foreground",children:h("form.enabledLabel")})]}),J&&(0,d.jsx)("div",{className:"p-3 bg-danger-subtle border border-danger-border rounded text-sm text-danger-foreground",children:J}),(0,d.jsxs)("div",{className:"flex justify-end gap-2 pt-4 border-t border-border",children:[(0,d.jsx)(l.$n,{type:"button",variant:"ghost",onClick:b,disabled:G,children:i("cancel")}),(0,d.jsx)(l.$n,{type:"submit",variant:"primary",loading:G,children:j?h("form.save"):h("form.add")})]})]})})}function J(){let a=(0,f.c)("externalApps"),b=(0,f.c)("common"),[c,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!0),[j,k]=(0,e.useState)(null),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)(async()=>{try{k(null);let a=await fetch("/api/external-apps");if(!a.ok)throw Error("Failed to fetch external apps");let b=await a.json();g(b.apps||[])}catch(a){k(a instanceof Error?a.message:"An error occurred")}finally{i(!1)}},[]),r=(0,e.useCallback)(a=>{p(a),n(!0)},[]),s=(0,e.useCallback)(()=>{p(null),n(!0)},[]),t=(0,e.useCallback)(async a=>{try{let b=await fetch(`/api/external-apps/${a}`,{method:"DELETE"});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to delete app")}q()}catch(a){console.error("Failed to delete app:",a)}},[q]),u=(0,e.useCallback)(()=>{q()},[q]),v=(0,e.useCallback)(()=>{n(!1),p(null)},[]);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"flex items-center justify-end",children:(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:s,children:a("manager.addApp")})}),h?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,d.jsx)(l.y$,{size:"xl",variant:"accent"}),(0,d.jsx)("span",{className:"ml-3 text-muted-foreground",children:a("manager.loading")})]})}):j?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-danger-foreground mb-4",children:a("manager.loadError")}),(0,d.jsx)(l.$n,{variant:"secondary",size:"sm",onClick:q,children:b("retry")})]})}):0===c.length?(0,d.jsx)(l.Zp,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-4",children:a("manager.empty")}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:a("manager.emptyHelp")}),(0,d.jsx)(l.$n,{variant:"primary",size:"sm",onClick:s,children:a("manager.addFirst")})]})}):(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:c.map(a=>(0,d.jsx)(C,{app:a,onEdit:r,onDelete:t},a.id))}),(0,d.jsx)(I,{isOpen:m,onClose:v,editApp:o,onSave:u})]})}var K=c(47268),L=c(63474),M=c(96823);let N={enabled:!0,thresholdMinutes:10},O=[5,10,30,60];function P(){let a=(0,f.c)("notifications"),{showToast:b}=(0,L.dj)(),[c,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!0),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)({prompt:!0,completion:!1}),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(null),E=null!==u&&!1!==C,F=(0,e.useCallback)(async()=>{if(q){i(!0);try{let c=await Notification.requestPermission();if("granted"!==c){t("denied"===c),b(a("toast.error"),"error");return}if(!await navigator.serviceWorker.getRegistration())return void b(a("toast.error"),"error");let d=await navigator.serviceWorker.ready,e=await d.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(a){let b="=".repeat((4-a.length%4)%4),c=atob((a+b).replace(/-/g,"+").replace(/_/g,"/")),d=new Uint8Array(new ArrayBuffer(c.length));for(let a=0;a<c.length;a++)d[a]=c.charCodeAt(a);return d}(q)}),f=await fetch("/api/push/subscriptions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:e.toJSON(),deviceLabel:navigator.userAgent.slice(0,120)})});if(!f.ok)throw Error("subscribe request failed");let g=await f.json();v(e.endpoint),D(!0),B(null),g.subscription?.preferences&&x(g.subscription.preferences),z(g.subscription?.defaultsNoticePending===!0),t(!1),b(a("toast.enabled"),"success")}catch{b(a("toast.error"),"error")}finally{i(!1)}}},[q,b,a]),G=(0,e.useCallback)(async()=>{i(!0);try{let c=await navigator.serviceWorker.getRegistration(),d=c?await c.pushManager.getSubscription():null,e=d?.endpoint??u;d&&await d.unsubscribe(),e&&await fetch("/api/push/subscriptions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:e})}),v(null),D(null),B(null),b(a("toast.disabled"),"info")}catch{b(a("toast.error"),"error")}finally{i(!1)}},[u,b,a]),H=(0,e.useCallback)(async(c,d)=>{if(!u)return;let e={...w,[c]:d};x(e);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:u,preferences:e})})).ok)throw Error("update failed");b(a("toast.updated"),"success")}catch{x(w),b(a("toast.error"),"error")}},[u,w,b,a]),I=(0,e.useCallback)(async c=>{if(!u)return;let d=c?{...w,completion:!1}:w;z(!1),c&&x(d),i(!0);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:u,...c?{preferences:d}:{},acknowledgeDefaultsNotice:!0})})).ok)throw Error("acknowledge failed");b(a(c?"defaultsNotice.adopted":"defaultsNotice.kept"),"success")}catch{x(w),z(!0),b(a("toast.error"),"error")}finally{i(!1)}},[u,w,b,a]);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(l.Zp,{children:(0,d.jsx)(R,{})}),(0,d.jsx)(l.Zp,{children:c?(0,d.jsx)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:(0,d.jsx)(l.y$,{size:"sm"})}):j?m?(0,d.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"notifications-ios-guidance",children:a("ios.guidance")}):!1===o?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("notConfigured")}):(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("description")}),s&&(0,d.jsx)("p",{className:"text-sm text-danger-foreground","data-testid":"notifications-permission-denied",children:a("permission.denied")}),(()=>{if(null===A)return null;let b="removed"===A.state,c=A.statusCode,e=b?null===c?a("delivery.removedUnknownStatus"):a("delivery.removed",{status:String(c)}):null===c?a("delivery.failingUnknownStatus",{count:A.failureCount}):a("delivery.failing",{count:A.failureCount,status:String(c)});return(0,d.jsxs)("div",{className:b?"space-y-2 rounded-lg border border-danger-border bg-danger-subtle p-3":"space-y-2 rounded-lg border border-warning-border bg-warning-subtle p-3","data-testid":"notifications-delivery-health","data-delivery-state":A.state,children:[(0,d.jsx)("p",{className:b?"text-sm font-semibold text-danger-foreground":"text-sm font-semibold text-warning-foreground",children:a(b?"delivery.headingRemoved":"delivery.headingFailing")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:e}),403===c&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"notifications-delivery-apns-hint",children:a("delivery.apnsHint")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:a("delivery.since",{timestamp:new Date(A.firstFailureAt).toLocaleString()})})]})})(),E?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-foreground",children:a("enabledOnThisDevice")}),y&&(0,d.jsxs)("div",{className:"space-y-3 rounded-lg border border-info-border bg-info-subtle p-3","data-testid":"notifications-defaults-notice",children:[(0,d.jsx)("p",{className:"text-sm font-semibold text-info-foreground",children:a("defaultsNotice.heading")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:a("defaultsNotice.completionChanged")}),(0,d.jsx)("p",{className:"text-xs text-foreground",children:a("defaultsNotice.failuresAdded")}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(l.$n,{variant:"primary",onClick:()=>I(!0),disabled:h,"data-testid":"notifications-defaults-notice-adopt",children:a("defaultsNotice.adopt")}),(0,d.jsx)(l.$n,{variant:"secondary",onClick:()=>I(!1),disabled:h,"data-testid":"notifications-defaults-notice-keep",children:a("defaultsNotice.keep")})]})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("types.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("types.promptWaiting")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("types.promptWaitingDesc")})]}),(0,d.jsx)(l.dO,{checked:w.prompt,onCheckedChange:a=>H("prompt",a),disabled:h,"aria-label":a("types.promptWaiting"),"data-testid":"notifications-toggle-prompt"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("types.completion")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("types.completionDesc")})]}),(0,d.jsx)(l.dO,{checked:w.completion,onCheckedChange:a=>H("completion",a),disabled:h,"aria-label":a("types.completion"),"data-testid":"notifications-toggle-completion"})]})]}),(0,d.jsx)(l.$n,{variant:"secondary",onClick:G,disabled:h,"data-testid":"notifications-unsubscribe",children:a("unsubscribe")})]}):(0,d.jsxs)(l.$n,{variant:"primary",onClick:F,disabled:h||s||!q,"data-testid":"notifications-enable",children:[(0,d.jsx)(K.A,{className:"h-4 w-4"}),h?a("enabling"):a("enable")]})]}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("unsupported")})}),(0,d.jsx)(l.Zp,{children:(0,d.jsx)(Q,{})})]})}function Q(){let a=(0,f.c)("notifications"),{showToast:b}=(0,L.dj)(),[c,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(N),[m,n]=(0,e.useState)([...O]),o=(0,e.useCallback)(async c=>{k(c),i(!0);try{if(!(await fetch("/api/push/escalation",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:c})})).ok)throw Error("update failed");b(a("toast.updated"),"success")}catch{k(j),b(a("toast.error"),"error")}finally{i(!1)}},[j,b,a]);return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("escalation.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("escalation.toggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("escalation.toggleDesc")})]}),(0,d.jsx)(l.dO,{checked:j.enabled,onCheckedChange:a=>o({...j,enabled:a}),disabled:c||h,"aria-label":a("escalation.toggle"),"data-testid":"notifications-toggle-escalation"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:a("escalation.threshold")}),(0,d.jsx)("select",{className:"rounded-md border border-border bg-background px-2 py-1 text-sm text-foreground",value:String(j.thresholdMinutes),disabled:c||h||!j.enabled,"aria-label":a("escalation.threshold"),"data-testid":"notifications-escalation-threshold",onChange:a=>o({...j,thresholdMinutes:Number(a.target.value)}),children:m.map(b=>(0,d.jsx)("option",{value:String(b),children:a("escalation.minutes",{count:b})},b))})]})]})}function R(){let a=(0,f.c)("notifications"),{enabled:b,setEnabled:c}=(0,M.qG)(),{enabled:e,setEnabled:g}=(0,M.Ql)();return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:a("inApp.heading")}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("inApp.waitingToggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("inApp.waitingToggleDesc")})]}),(0,d.jsx)(l.dO,{checked:b,onCheckedChange:c,"aria-label":a("inApp.waitingToggle"),"data-testid":"notifications-toggle-inapp-waiting"})]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a("inApp.soundToggle")}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a("inApp.soundToggleDesc")})]}),(0,d.jsx)(l.dO,{checked:e,onCheckedChange:g,"aria-label":a("inApp.soundToggle"),"data-testid":"notifications-toggle-inapp-sound"})]})]})}function S({heading:a,children:b}){return(0,d.jsxs)("div",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:a}),b]})}function T({onNavigate:a}){let b=(0,f.c)("common"),c=(0,f.c)("skills");return(0,d.jsx)(S,{heading:b("settings.sections.quickLinks"),children:(0,d.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,d.jsx)(A(),{href:"/repositories",className:"block","data-testid":"more-link-repositories",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:"Repositories"}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:"Manage repositories and worktrees"})]})}),(0,d.jsx)(A(),{href:"/skills",className:"block","data-testid":"more-link-skills",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:b("nav.skills")}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:c("page.description")})]})}),(0,d.jsx)(A(),{href:"/skills/installed",className:"block","data-testid":"more-link-skills-installed",onClick:a,children:(0,d.jsxs)(l.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:c("dashboard.title")}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:c("dashboard.description")})]})})]})})}function U(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.general"),children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(p,{}),(0,d.jsx)(t,{}),(0,d.jsx)(y,{})]})})}function V(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.notifications"),children:(0,d.jsx)(P,{})})}function W(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.externalApps"),children:(0,d.jsx)(J,{})})}function X(){let a=(0,f.c)("common");return(0,d.jsx)(S,{heading:a("settings.sections.about"),children:(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-muted-foreground",children:"CommandMate - A local control plane for agent CLIs."})})})}function Y(){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(T,{}),(0,d.jsx)(U,{}),(0,d.jsx)(V,{}),(0,d.jsx)(W,{}),(0,d.jsx)(X,{})]})}c(74132),c(67693),c(90102);var Z=c(98033),$=c(34592),_=c(62197);let aa=[{id:"general",labelKey:"settings.sections.general"},{id:"notifications",labelKey:"settings.sections.notifications"},{id:"externalApps",labelKey:"settings.sections.externalApps"},{id:"about",labelKey:"settings.sections.about"}];function ab(){let a=(0,f.c)("common"),{isOpen:b,close:c}=(0,_.V0)();return(0,d.jsx)(Z.a,{isOpen:b,onClose:c,title:a("settings.title"),size:"lg",children:(0,d.jsxs)($.tU,{defaultValue:"general",orientation:"vertical",variant:"pill",className:"flex gap-6 min-h-[60vh]","data-testid":"settings-dialog",children:[(0,d.jsx)($.j7,{"aria-label":a("settings.categoriesLabel"),className:"sticky top-0 w-40 shrink-0 flex-col items-stretch self-start",children:aa.map(b=>(0,d.jsx)($.Xi,{value:b.id,"data-testid":`settings-dialog-tab-${b.id}`,className:"justify-start",children:a(b.labelKey)},b.id))}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)($.av,{value:"general",className:"mt-0",children:(0,d.jsx)(U,{})}),(0,d.jsx)($.av,{value:"notifications",className:"mt-0",children:(0,d.jsx)(V,{})}),(0,d.jsx)($.av,{value:"externalApps",className:"mt-0",children:(0,d.jsx)(W,{})}),(0,d.jsxs)($.av,{value:"about",className:"mt-0",children:[(0,d.jsx)(T,{onNavigate:c}),(0,d.jsx)(X,{})]})]})]})})}},73790:(a,b,c)=>{"use strict";c.d(b,{T:()=>h});var d=c(21124),e=c(38301),f=c.n(e),g=c(35595);let h=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)("textarea",{ref:c,className:(0,g.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-surface dark:bg-surface-2 px-3 py-2 text-sm 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",a),...b}));h.displayName="Textarea"},74132:(a,b,c)=>{"use strict";c.d(b,{dS:()=>k,rM:()=>l});var d=c(38301),e=c(42378),f=c(20481),g=c(63474),h=c(63157),i=c(74930),j=c(96823);function k(a,b,c){return`${a}|${b??"-"}|${c??"no-since"}`}function l(){let a=(0,f.c)("notifications"),{showToast:b}=(0,g.dj)(),{addListener:c}=(0,i.xM)(),{enabled:k}=(0,j.qG)(),l=(0,e.usePathname)(),m=(0,e.useRouter)(),n=(0,h.rC)();return(0,d.useRef)({enabled:k,pathname:l,worktrees:n?.worktrees,showToast:b,t:a,router:m}).current={enabled:k,pathname:l,worktrees:n?.worktrees,showToast:b,t:a,router:m},(0,d.useRef)(new Set),null}},74892:(a,b,c)=>{"use strict";c.d(b,{d:()=>i});var d=c(21124),e=c(38301),f=c.n(e),g=c(75441),h=c(35595);let i=f().forwardRef(({className:a,...b},c)=>(0,d.jsx)(g.bL,{ref:c,className:(0,h.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50","data-[state=checked]:bg-accent-600 data-[state=unchecked]:bg-muted",a),...b,children:(0,d.jsx)(g.zi,{className:(0,h.cn)("pointer-events-none block h-4 w-4 rounded-full bg-surface shadow-lg ring-0 transition-transform","data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));i.displayName="Switch"},74930:(a,b,c)=>{"use strict";c.d(b,{tS:()=>i,xM:()=>j,T3:()=>k});var d=c(21124),e=c(38301);c(12055);let f=()=>{},g={status:"disconnected",connected:!1,subscribe:f,unsubscribe:f,addListener:()=>f},h=(0,e.createContext)(null);function i({children:a,enabled:b=!0}){let c=(0,e.useRef)(new Set),f=(0,e.useRef)(new Map),{status:g,subscribe:i,unsubscribe:j}=function(a={}){let{onEvent:b,onStatusChange:c,autoReconnect:d=!0,reconnectBaseDelay:f=1e3,reconnectMaxDelay:g=3e4,livenessTimeout:h=75e3,livenessCheckInterval:i=5e3,enabled:j=!0}=a,[k,l]=(0,e.useState)("disconnected"),m=(0,e.useRef)(null),n=(0,e.useRef)(null),o=(0,e.useRef)(0),p=(0,e.useRef)(new Set),q=(0,e.useRef)(!1);(0,e.useRef)(0);let r=(0,e.useRef)(()=>{});(0,e.useRef)(b).current=b;let s=(0,e.useRef)(c);s.current=c;let t=(0,e.useCallback)(a=>{l(a),s.current?.(a)},[]),u=(0,e.useCallback)(()=>{null!==n.current&&(clearTimeout(n.current),n.current=null)},[]),v=(0,e.useCallback)(()=>{if(q.current||!d||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;u();let a=function(a,b,c,d=Math.random){return Math.max(0,Math.round(Math.min(b*2**Math.max(0,a),c)*(1+(2*d()-1)*.2)))}(o.current,f,g);o.current+=1,n.current=setTimeout(()=>{n.current=null,r.current()},a)},[d,f,g,u]);r.current=(0,e.useCallback)(()=>{},[j,t,u,v]),(0,e.useCallback)(()=>{let a=m.current;if(a){a.onopen=null,a.onmessage=null,a.onerror=null,a.onclose=null,m.current=null;try{a.close(4001,"half-open")}catch{}t("disconnected"),v()}},[t,v]),(0,e.useCallback)(()=>{if(u(),q.current=!0,m.current){try{m.current.close(1e3,"Client disconnect")}catch{}m.current=null}},[u]);let w=(0,e.useCallback)(a=>{let b=m.current,c="undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null;if(b&&c&&b.readyState===c.OPEN)try{b.send(JSON.stringify(a))}catch{}},[]);return{status:k,subscribe:(0,e.useCallback)(a=>{p.current.has(a)||(p.current.add(a),w({type:"subscribe",worktreeId:a}))},[w]),unsubscribe:(0,e.useCallback)(a=>{p.current.has(a)&&(p.current.delete(a),w({type:"unsubscribe",worktreeId:a}))},[w]),send:w}}({enabled:b,onEvent:(0,e.useCallback)(a=>{c.current.forEach(b=>{try{b(a)}catch{}})},[])}),k=(0,e.useCallback)(a=>{let b=f.current,c=b.get(a)??0;b.set(a,c+1),0===c&&i(a)},[i]),l=(0,e.useCallback)(a=>{let b=f.current,c=b.get(a)??0;c<=1?(b.delete(a),j(a)):b.set(a,c-1)},[j]),m=(0,e.useCallback)(a=>(c.current.add(a),()=>{c.current.delete(a)}),[]),n=(0,e.useMemo)(()=>({status:g,connected:"connected"===g,subscribe:k,unsubscribe:l,addListener:m}),[g,k,l,m]);return(0,d.jsx)(h.Provider,{value:n,children:a})}function j(){return(0,e.useContext)(h)??g}function k(a){let{addListener:b}=j();(0,e.useRef)(a).current=a}},75567:(a,b,c)=>{var d={"./en/pwa.json":[51262,1262],"./ja/pwa.json":[46072,6072]};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=75567,a.exports=e},76047:(a,b,c)=>{"use strict";c.d(b,{P0:()=>Z,oQ:()=>Y,tJ:()=>U,xk:()=>X,xq:()=>_,yW:()=>$});var d=c(21124),e=c(38301),f=c(23312),g=c(42378),h=c(52761),i=c(20481),j=c(55992),k=c(45523),l=c(67565),m=c(75903),n=c(50987),o=c(59268),p=c(75234),q=c(38882),r=c(70175),s=c(60988),t=c(34487),u=c(25345),v=c(96558),w=c(97950),x=c(75692),y=c(57898),z=c(88285),A=c(71563),B=c(35595),C=c(11010),D=c(64632),E=c(89184),F=c(5772),G=c(63157),H=c(12480),I=c(85744),J=c(78352),K=c(22317),L=c(1637),M=c(89877),N=c(85647),O=c(63474),P=c(85678),Q=c(17252);let R=[{key:"sessions",href:"/sessions"},{key:"repositories",href:"/repositories"},{key:"review",href:"/review"},{key:"skills",href:"/skills"},{key:"more",href:"/more"}],S={sessions:m.A,repositories:n.A,review:o.A,skills:p.A,more:q.A};function T({worktree:a,className:b}){let c=(0,i.c)("common"),e=a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isSessionRunning?"ready":"idle",f=(0,L.Mq)(e,Object.values(a.sessionStatusByCli??{}).some(a=>(0,M.px)(a)));return(0,d.jsx)(K.m,{status:e,size:"sm",label:f?c(L.rH):void 0,className:(0,B.cn)(b,f&&L.Jd),"data-unclassified":f?"true":void 0})}function U(a){if(!(a instanceof HTMLElement))return!1;let b=a.tagName;return!!("INPUT"===b||"TEXTAREA"===b||"SELECT"===b||a.isContentEditable||a.closest('[role="log"]'))}let V=(0,B.cn)("flex cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-sm","text-foreground","data-[selected=true]:bg-accent-500/15 data-[selected=true]:text-accent-700","dark:data-[selected=true]:text-accent-300"),W="shrink-0 text-muted-foreground";function X(){if("undefined"==typeof document)return null;let a=document.querySelector("[data-instance-id]");return a?.getAttribute("data-instance-id")?.trim()||null}function Y(a){if("undefined"==typeof document)return!1;let b=Array.from(document.querySelectorAll('[data-testid="message-input-textarea"]'));if(0===b.length)return!1;let c=document.activeElement,d=b.find(a=>a===c)??b[0],e=d.value,f=""===e.trim()?a:`${e}
|
|
14
14
|
|
|
15
15
|
${a}`,g=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;return g?g.call(d,f):d.value=f,d.dispatchEvent(new Event("input",{bubbles:!0})),d.focus(),d.setSelectionRange(f.length,f.length),!0}async function Z(a,b,c){try{let[d,e]=await Promise.all([fetch(`/api/worktrees/${a}/cli-reference`),fetch(`/api/worktrees/${a}/resolve-target?instance=${encodeURIComponent(b.id)}`)]);if(!d.ok||!e.ok)return null;let[f,g]=await Promise.all([d.json(),e.json()]);return(0,P.Bz)({binary:f.binary,worktreeId:f.worktreeId,instanceId:g.instanceId,instanceLabel:b.alias,toolLabel:(0,Q.oo)(g.cliToolId),portPrefix:f.portPrefix,locale:c})}catch{return null}}let $={ja:{heading:"委任 (/delegate)",menuItem:"委任方法をコンポーザーに挿入",inserted:"委任方法をコンポーザーに挿入しました",self:"自分自身には委任できません",noComposer:"コンポーザーが見つかりません。worktree 画面を開いてから実行してください",failed:"委任方法を作成できませんでした"},en:{heading:"Delegate (/delegate)",menuItem:"Insert delegation brief into the composer",inserted:"Delegation brief inserted into the composer",self:"That is this session — nothing to delegate to",noComposer:"No composer on screen. Open a worktree screen and try again",failed:"Could not build the delegation brief"}};function _(){let{open:a,setOpen:b}=(0,D.C)(),{setOpen:c}=(0,E.K)(),m=(0,h.Hq)(),n=(0,g.usePathname)(),o=(0,j.Ym)(),p=(0,i.c)("commandPalette"),q=(0,i.c)("common"),{theme:K,setTheme:L}=(0,k.D)(),{setSize:M,isMobile:P}=(0,F.Ps)(),{currentLocale:U,switchLocale:_}=(0,I.g)(),aa=(0,G.rC)(),{showToast:ab}=(0,O.dj)(),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(""),[ag,ah]=(0,e.useState)([]),ai=(0,e.useRef)(null);(0,e.useRef)(null),(0,e.useRef)(a);let aj=(0,e.useCallback)((a,c)=>{c&&ah(a=>(function(a,b){let c=a.filter(a=>a.kind!==b.kind||a.id!==b.id),d=[b,...c].slice(0,8);try{localStorage.setItem("cm.palette.recents",JSON.stringify(d))}catch{}return d})(a,c)),b(!1),a()},[b]),ak=(0,e.useCallback)(async a=>{let b=$["ja"===o?"ja":"en"];if(function(a){let b=/^\/worktrees\/([^/?#]+)/.exec(a??"");return b?decodeURIComponent(b[1]):null}(n)===a.worktree.id&&X()===a.instance.id)return void ab(b.self,"info");let c=await Z(a.worktree.id,a.instance,o);if(null===c)return void ab(b.failed,"error");let d=Y(c);ab(d?b.inserted:b.noComposer,d?"success":"error")},[o,n,ab]),al=(0,e.useCallback)(async()=>{try{await J.Rx.sync(),await aa?.refresh?.(),ab(p("actions.syncSuccess"),"success")}catch{ab(p("actions.syncError"),"error")}},[aa,ab,p]),am="dark"===K,an=""===ae.trim(),ao=aa?.error??null,ap=aa?.isLoading??!1,aq=ao?[]:aa?.worktrees??[],ar=aq.length>0,as=!ao&&ap&&0===aq.length,at=!function(a){let b=a.trim().toLowerCase();return""!==b&&(b.startsWith("/")||b.includes("delegate"))}(ae)?[]:function(a){let b=[];for(let c of a)for(let a of c.agentInstances?.length?c.agentInstances:c.cliToolId?[{id:c.cliToolId,cliTool:c.cliToolId,alias:(0,Q.oo)(c.cliToolId),order:0}]:[])b.push({worktree:c,instance:a});return b}(aq),au=$["ja"===o?"ja":"en"],av=[...aq].sort((a,b)=>{let c=+!!a.isSessionRunning,d=+!!b.isSessionRunning;if(c!==d)return d-c;let e=a.updatedAt?new Date(a.updatedAt).getTime():0;return(b.updatedAt?new Date(b.updatedAt).getTime():0)-e}),aw=an?av.slice(0,8):av,ax=[{id:"theme",label:am?p("actions.toLight"):p("actions.toDark"),icon:am?r.A:s.A,run:()=>L(am?"light":"dark")},...P?[]:H.Uf.map(a=>({id:`displaysize:${a}`,label:`${p("actions.displaySizePrefix")}: ${q(`displaySize.${a}`)}`,icon:t.A,run:()=>M(a)})),{id:"sync",label:p("actions.syncRepositories"),icon:u.A,run:()=>{al()}},{id:"locale",label:p("actions.switchLanguage"),icon:v.A,run:()=>_("ja"===U?"en":"ja")},{id:"github",label:p("actions.openGitHub"),icon:w.A,run:()=>window.open("https://github.com/kewton/MyCodeBranchDesk","_blank","noopener,noreferrer")},{id:"keyboardShortcuts",label:p("actions.keyboardShortcuts"),icon:x.A,run:()=>c(!0)}],ay=an?ag.map(a=>{if("nav"===a.kind){let b=R.find(b=>b.key===a.id);if(!b)return null;let c=S[b.key],e=q(`nav.${b.key}`);return{id:`nav-${b.key}`,value:`recent nav ${b.key}`,node:(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(c,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e})]}),onSelect:()=>aj(()=>m.push(b.href),{kind:"nav",id:b.key})}}if("worktree"===a.kind){let b=aq.find(b=>b.id===a.id);if(!b)return null;let c=b.repositoryDisplayName||b.repositoryName||"",e=b.branch||b.name;return{id:`worktree-${b.id}`,value:`recent worktree ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(y.A,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e}),c&&(0,d.jsx)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:c}),(0,d.jsx)(T,{worktree:b,className:c?"ml-2":"ml-auto"})]}),onSelect:()=>aj(()=>m.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id})}}let b=ax.find(b=>b.id===a.id);if(!b)return null;let c=b.icon;return{id:`action-${b.id}`,value:`recent action ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b.label})]}),onSelect:()=>aj(b.run,{kind:"action",id:b.id})}}).filter(a=>null!==a):[];return ac?(0,f.createPortal)((0,d.jsx)(d.Fragment,{children:a&&(0,d.jsxs)("div",{className:"fixed inset-0 overflow-y-auto",style:{zIndex:C.M.MODAL},"data-testid":"command-palette",children:[(0,d.jsx)("div",{"data-state":"open","aria-hidden":"true",className:"fixed inset-0 bg-black/40 backdrop-blur-sm transition-opacity data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-200",onClick:()=>b(!1)}),(0,d.jsx)("div",{className:"relative flex min-h-full items-start justify-center p-4 pt-[15vh]",children:(0,d.jsx)("div",{"data-state":"open","data-testid":"command-palette-panel",className:(0,B.cn)("relative w-full max-w-lg overflow-hidden rounded-xl bg-surface/95 shadow-2xl ring-1 ring-border backdrop-blur-xl","data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-200"),children:(0,d.jsxs)(l.uB,{label:p("title"),className:(0,B.cn)("flex flex-col","[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pb-1 [&_[cmdk-group-heading]]:pt-2","[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3",children:[(0,d.jsx)(z.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0 text-muted-foreground"}),(0,d.jsx)(l.uB.Input,{ref:ai,value:ae,onValueChange:af,placeholder:p("placeholder"),"data-testid":"command-palette-input",className:"flex-1 bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground"})]}),(0,d.jsxs)(l.uB.List,{className:"max-h-[min(60vh,360px)] overflow-y-auto p-2",children:[(0,d.jsx)(l.uB.Empty,{"data-testid":"command-palette-empty",className:"py-6 text-center text-sm text-muted-foreground",children:p("empty")}),as&&(0,d.jsx)(l.uB.Loading,{"data-testid":"command-palette-loading",className:"py-6 text-center text-sm text-muted-foreground",children:p("loading")}),ay.length>0&&(0,d.jsx)(l.uB.Group,{heading:p("groups.recent"),children:ay.map(a=>(0,d.jsx)(l.uB.Item,{value:a.value,onSelect:a.onSelect,className:V,children:a.node},a.id))}),(0,d.jsx)(l.uB.Group,{heading:p("groups.navigation"),children:R.map(a=>{let b=q(`nav.${a.key}`),c=S[a.key];return(0,d.jsxs)(l.uB.Item,{value:`nav ${b} ${a.href}`,onSelect:()=>aj(()=>m.push(a.href),{kind:"nav",id:a.key}),className:V,children:[c&&(0,d.jsx)(c,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b})]},a.key)})}),ar&&(function(a){let b=new Map;for(let c of a){let a=c.repositoryDisplayName||c.repositoryName||"",d=a||"\0unnamed",e=b.get(d);e?e.worktrees.push(c):b.set(d,{key:d,repository:a,worktrees:[c]})}return[...b.values()]})(aw).map(a=>(0,d.jsx)(l.uB.Group,{heading:a.repository||p("groups.worktrees"),children:a.worktrees.map(b=>{let c=b.branch||b.name;return(0,d.jsxs)(l.uB.Item,{value:`worktree ${a.repository} ${c} ${b.name} ${b.id}`,onSelect:()=>aj(()=>m.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id}),className:V,children:[(0,d.jsx)(y.A,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:c}),(0,d.jsx)(T,{worktree:b,className:"ml-auto"})]},b.id)})},a.key)),at.length>0&&(0,d.jsx)(l.uB.Group,{heading:au.heading,children:at.map(a=>{let b=a.worktree.branch||a.worktree.name;return(0,d.jsxs)(l.uB.Item,{"data-testid":`palette-delegate-${a.worktree.id}-${a.instance.id}`,value:`/delegate ${a.worktree.id} ${a.instance.id} ${a.instance.alias} ${b}`,onSelect:()=>aj(()=>{ak(a)}),className:V,children:[(0,d.jsx)(A.A,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.instance.alias}),(0,d.jsxs)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:[b," / ",a.instance.id]})]},`${a.worktree.id}:${a.instance.id}`)})}),(0,d.jsx)(l.uB.Group,{heading:p("groups.actions"),children:ax.map(a=>{let b=a.icon;return(0,d.jsxs)(l.uB.Item,{value:`action ${a.id} ${a.label}`,onSelect:()=>aj(a.run,{kind:"action",id:a.id}),className:V,children:[(0,d.jsx)(b,{size:16,className:W,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.label})]},a.id)})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 border-t border-border bg-surface-2 px-3 py-2 text-[11px] text-muted-foreground",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(N.u,{children:"↑"}),(0,d.jsx)(N.u,{children:"↓"}),p("footer.navigate")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(N.u,{children:"↵"}),p("footer.select")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(N.u,{children:"esc"}),p("footer.close")]})]})]})})})]})}),document.body):null}},77560:(a,b,c)=>{"use strict";c.d(b,{$h:()=>l,DR:()=>e,IH:()=>j,Iu:()=>d,Nb:()=>m,SD:()=>f,_d:()=>i,bm:()=>n,ks:()=>h,t7:()=>k,z7:()=>g});let d=7e3,e=["in_review","approval","stalled"],f="in_review",g="filter",h=`/review?${g}=approval`;function i(a){return a&&e.includes(a)?a:null}let j=["claude","codex","copilot","antigravity","opencode"],k=1e3,l=5,m=100,n=1e3},78162:(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:"32x32",url:(0,d.fillMetadataSegment)(".",await a.params,"icon.png")+"?eeae29d23f3aae17"}]},78352:(a,b,c)=>{"use strict";c.d(b,{$T:()=>s,E:()=>n,GQ:()=>u,O0:()=>h,Rx:()=>q,gC:()=>r,hD:()=>f,hS:()=>t,xd:()=>i,y:()=>p});var d=c(16730),e=c(38557);class f extends Error{constructor(a,b,c,d){super(a),this.status=b,this.data=c,this.name="ApiError",this.kind=d??(b>0?"http":"network")}}async function g(a,b,c){if(!(a.headers.get("content-type")||"").includes("application/json"))return b;try{return await a.json()}catch{return b}}function h(a){return a.redirected&&(a.url??"").includes("/login")?new f("Authentication required",401):null}function i(a){return a.headers?(a.headers.get("content-type")||"").includes("application/json")?null:new f("Unexpected response format",a.status):null}let j=null;function k(a){let b=Date.now();null!==j&&j.reachable===a&&b-j.at<d.T2||(j={reachable:a,at:b},(0,e.nG)(a))}async function l(a,b,c){let d=b.signal??void 0;if(d?.aborted)throw new f("Request aborted",0,void 0,"aborted");if(c<=0||"function"!=typeof AbortController)return fetch(a,b);let e=new AbortController,g=!1,h=setTimeout(()=>{g=!0,e.abort()},c),i=()=>e.abort();d?.addEventListener("abort",i);try{return await fetch(a,{...b,signal:e.signal})}catch(a){if(d?.aborted)throw new f("Request aborted",0,a,"aborted");if(g)throw new f(`Request timed out after ${c}ms`,0,a,"timeout");throw a}finally{clearTimeout(h),d?.removeEventListener("abort",i)}}function m(a){return new Promise(b=>setTimeout(b,a))}async function n(a,b){let{timeoutMs:c,retries:e,...g}=b??{},h=(g.method??"GET").toUpperCase(),i=(0,d.nk)(h)?Math.max(0,e??d.SR):0,j=void 0===c?(0,d.Z3)(h):c??d.Hi,n=Date.now(),o=a=>a<i&&Date.now()-n<d.Ct;for(let b=0;;b++){if("undefined"!=typeof navigator&&!1===navigator.onLine)throw new f("No network connection",0,void 0,"offline");try{let c=await l(a,g,j);if(k(!0),(0,d.PS)(c.status)&&o(b)){await m((0,d.BV)(b));continue}return c}catch(c){let a=function(a){if(a instanceof f)return a;let b=a instanceof Error?a.name:"";return"AbortError"===b||"TimeoutError"===b?new f("Request aborted",0,a,"aborted"):new f(a instanceof Error?a.message:"Unknown error",0,a,"network")}(c);if("aborted"===a.kind||(k(!1),!o(b)))throw a;await m((0,d.BV)(b))}}}async function o(a,b){try{let c=new Headers(b?.headers);c.set("Content-Type","application/json");let d=await n(a,{...b,headers:c}),e=h(d);if(e)throw e;if(!d.ok){let a=await g(d,{},"error-body");throw new f(a.error||`HTTP error ${d.status}`,d.status,a)}let j=i(d);if(j)throw j;return d.json()}catch(a){if(a instanceof f)throw a;throw new f(a instanceof Error?a.message:"Unknown error",0,a)}}let p={getAll:async()=>o("/api/worktrees"),getById:async a=>o(`/api/worktrees/${a}`),updateDescription:async(a,b)=>o(`/api/worktrees/${a}`,{method:"PATCH",body:JSON.stringify({description:b})}),updateLink:async(a,b)=>o(`/api/worktrees/${a}`,{method:"PATCH",body:JSON.stringify({link:b})}),toggleFavorite:async(a,b)=>o(`/api/worktrees/${a}`,{method:"PATCH",body:JSON.stringify({favorite:b})}),updateStatus:async(a,b)=>o(`/api/worktrees/${a}`,{method:"PATCH",body:JSON.stringify({status:b})}),updateCliTool:async(a,b)=>o(`/api/worktrees/${a}`,{method:"PATCH",body:JSON.stringify({cliToolId:b})}),markAsViewed:async a=>o(`/api/worktrees/${a}/viewed`,{method:"PATCH"}),async getMessages(a,b,c,d){let e=new URLSearchParams;return b&&e.append("cliTool",b),c&&e.append("includeArchived","true"),"number"==typeof d&&Number.isFinite(d)&&e.append("limit",String(d)),o(`/api/worktrees/${a}/messages${e.toString()?`?${e.toString()}`:""}`)},async sendMessage(a,b,c){var d;let e={content:b};return c?.cliToolId&&(e.cliToolId=c.cliToolId),c?.instanceId&&(e.instanceId=c.instanceId),c?.imagePath&&(e.imagePath=c.imagePath),null===(d=await o(`/api/worktrees/${a}/send`,{method:"POST",body:JSON.stringify(e)}))||"object"!=typeof d||d.timestamp instanceof Date?d:{...d,timestamp:new Date(d.timestamp)}},async uploadImageFile(a,b){let c=Date.now(),d=`${c}-${b.name}`,e=".commandmate/attachments",f=new FormData;f.append("file",new File([b],d,{type:b.type}));let h=await fetch(`/api/worktrees/${a}/upload/${e}`,{method:"POST",body:f});if(!h.ok){let a=await g(h,{},"error-body");throw Error(a?.error?.message||`Upload failed (HTTP ${h.status})`)}return{path:(await g(h,{},"response-body")).path||`${e}/${d}`}},getLogs:async a=>o(`/api/worktrees/${a}/logs`),async getLogFile(a,b,c){let d=c?.sanitize?"?sanitize=true":"";return o(`/api/worktrees/${a}/logs/${b}${d}`)},async killSession(a,b,c){let d=new URLSearchParams;b&&d.set("cliTool",b),c&&d.set("instance",c);let e=d.toString();return o(`/api/worktrees/${a}/kill-session${e?`?${e}`:""}`,{method:"POST"})}},q={scan:async a=>o("/api/repositories/scan",{method:"POST",body:JSON.stringify({repositoryPath:a})}),sync:async()=>o("/api/repositories/sync",{method:"POST"}),delete:async a=>o("/api/repositories",{method:"DELETE",body:JSON.stringify({repositoryPath:a})}),clone:async(a,b)=>o("/api/repositories/clone",{method:"POST",body:JSON.stringify({cloneUrl:a,fork:b?.fork??!1})}),getCloneStatus:async a=>o(`/api/repositories/clone/${a}`),getExcluded:async()=>o("/api/repositories/excluded"),restore:async a=>o("/api/repositories/restore",{method:"PUT",body:JSON.stringify({repositoryPath:a})}),list:async()=>o("/api/repositories"),updateDisplayName:async(a,b)=>o(`/api/repositories/${encodeURIComponent(a)}`,{method:"PUT",body:JSON.stringify({displayName:b})}),updateVisibility:async(a,b)=>o(`/api/repositories/${encodeURIComponent(a)}`,{method:"PUT",body:JSON.stringify({visible:b})}),updateEnabled:async(a,b)=>o(`/api/repositories/${encodeURIComponent(a)}`,{method:"PUT",body:JSON.stringify({enabled:b})}),validatePath:async a=>o("/api/repositories/validate-path",{method:"POST",body:JSON.stringify({repositoryPath:a})})},r={async browse(a){let b=a?`?path=${encodeURIComponent(a)}`:"";return o(`/api/fs/browse${b}`)},addRecentPath:async a=>o("/api/fs/recent-paths",{method:"POST",body:JSON.stringify({path:a})})},s={getAll:async a=>(await o(`/api/worktrees/${a}/memos`)).memos,create:async(a,b)=>(await o(`/api/worktrees/${a}/memos`,{method:"POST",body:JSON.stringify(b||{})})).memo,update:async(a,b,c)=>(await o(`/api/worktrees/${a}/memos/${b}`,{method:"PUT",body:JSON.stringify(c)})).memo,delete:async(a,b)=>o(`/api/worktrees/${a}/memos/${b}`,{method:"DELETE"}),async reorder(a,b){await o(`/api/worktrees/${a}/memos`,{method:"PATCH",body:JSON.stringify({memoIds:b})})}};function t(a){return a instanceof f||a instanceof Error?a.message:"An unknown error occurred"}let u={checkForUpdate:async()=>o("/api/app/update-check",{method:"GET"}),startUpdate:async()=>o("/api/app/update",{method:"POST"}),async ping(){try{return(await fetch("/api/auth/status",{cache:"no-store"})).ok}catch{return!1}},async getReleaseNotes(a,b){let c=new URLSearchParams({from:a,to:b});return o(`/api/app/release-notes?${c.toString()}`,{method:"GET"})}}},79689:(a,b,c)=>{"use strict";c.d(b,{E:()=>f});var d=c(21124);c(38301);var e=c(35595);function f({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("animate-pulse rounded-md bg-muted",a),"aria-hidden":"true",...b})}},79782:(a,b,c)=>{"use strict";c.d(b,{SC:()=>m,TM:()=>i,aF:()=>k});var d=c(21124),e=c(38301),f=c(20481),g=c(98033),h=c(94260);function i({isOpen:a,title:b,description:c,confirmLabel:e,cancelLabel:i,variant:j="default",onConfirm:k,onCancel:l}){let m=(0,f.c)("common"),n="danger"===j;return(0,d.jsx)(g.a,{isOpen:a,onClose:l,title:b??m("confirmDialog.title"),size:"sm",showCloseButton:!1,children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"confirm-dialog",children:[(0,d.jsx)("p",{className:"text-sm text-foreground whitespace-pre-line",children:c}),(0,d.jsxs)("div",{className:"flex justify-end gap-3",children:[(0,d.jsx)(h.$,{type:"button",variant:"secondary",size:"sm",autoFocus:n,onClick:l,"data-testid":"confirm-dialog-cancel",children:i??m("cancel")}),(0,d.jsx)(h.$,{type:"button",variant:n?"danger":"primary",size:"sm",autoFocus:!n,onClick:k,"data-testid":"confirm-dialog-confirm",children:e??m("confirmDialog.confirm")})]})]})})}let j=(0,e.createContext)(null);function k({children:a}){let[b,c]=(0,e.useState)(null),f=(0,e.useRef)(null),g=(0,e.useRef)(null),h=b?.options??g.current,k=(0,e.useCallback)(a=>new Promise(b=>{f.current=document.activeElement instanceof HTMLElement?document.activeElement:null,c(c=>(c?.resolve(!1),{options:a,resolve:b}))}),[]),l=(0,e.useCallback)(a=>{c(b=>(b?.resolve(a),null)),f.current?.focus(),f.current=null},[]);return(0,d.jsxs)(j.Provider,{value:k,children:[a,(0,d.jsx)(i,{isOpen:null!==b,title:h?.title,description:h?.description??"",confirmLabel:h?.confirmLabel,cancelLabel:h?.cancelLabel,variant:h?.variant,onConfirm:()=>l(!0),onCancel:()=>l(!1)})]})}let l=async()=>!1;function m(){return(0,e.useContext)(j)??l}},80407:(a,b,c)=>{var d={"./en/commandPalette.json":[28098,8098],"./ja/commandPalette.json":[12560,2560]};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=80407,a.exports=e},80755:(a,b,c)=>{"use strict";c.d(b,{E:()=>i});var d=c(21124);c(38301);var e=c(26691),f=c(35595);let g=(0,e.F)("inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",{variants:{variant:{success:"bg-success-subtle text-success-foreground",warning:"bg-warning-subtle text-warning-foreground",error:"bg-danger-subtle text-danger-foreground",info:"bg-accent-100 dark:bg-accent-900 text-accent-800 dark:text-accent-300",gray:"bg-muted text-muted-foreground"}},defaultVariants:{variant:"gray"}}),h={success:"bg-success",warning:"bg-warning",error:"bg-danger",info:"bg-info",gray:"bg-muted-foreground"};function i({variant:a="gray",dot:b=!1,className:c="",children:e,...i}){return(0,d.jsxs)("span",{className:(0,f.cn)(g({variant:a}),c),...i,children:[b&&(0,d.jsx)("span",{className:(0,f.cn)("mr-1.5 inline-block h-2 w-2 rounded-full",h[a]),"aria-hidden":"true"}),e]})}},80776:(a,b,c)=>{"use strict";c.d(b,{AppProviders:()=>C});var d=c(21124),e=c(37397),f=c(45523),g=c(81092),h=c(84342),i=c(5772),j=c(64632),k=c(89184),l=c(63157),m=c(52761),n=c(74930),o=c(79782),p=c(23910),q=c(62197),r=c(73060),s=c(63474),t=c(74132),u=c(67693),v=c(90102),w=c(38301),x=c(20481),y=c(25345),z=c(11010),A=c(18608);function B(){let a=(0,x.c)("pwa"),[b,c]=(0,w.useState)(null);(0,w.useRef)(!1);let e=(0,A.W)();return!b||e?null:(0,d.jsx)("div",{"data-testid":"pwa-update-toast",role:"status","aria-live":"polite",className:"pointer-events-none fixed bottom-0 right-0 flex max-w-full justify-end px-4 pb-safe",style:{zIndex:z.M.TOAST},children:(0,d.jsxs)("div",{"data-testid":"pwa-update-toast-card",className:"pointer-events-auto mb-4 flex items-center gap-3 rounded-lg border border-border bg-surface px-4 py-3 shadow-lg",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-foreground",children:a("update.available")}),(0,d.jsxs)("button",{type:"button",onClick:()=>{b.postMessage({type:"SKIP_WAITING"})},className:"inline-flex items-center gap-1.5 rounded-md bg-accent-600 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-accent-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background dark:bg-accent-500 dark:hover:bg-accent-600",children:[(0,d.jsx)(y.A,{className:"h-4 w-4"}),a("update.reload")]})]})})}function C({children:a,locale:b,messages:c,timeZone:w,authEnabled:x=!1}){return(0,d.jsx)(e.default,{locale:b,messages:c,timeZone:w,children:(0,d.jsx)(s.tE,{children:(0,d.jsx)(f.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:(0,d.jsx)(h.O,{authEnabled:x,children:(0,d.jsx)(i.W5,{children:(0,d.jsx)(g.GB,{children:(0,d.jsx)(n.tS,{children:(0,d.jsxs)(l.g7,{children:[(0,d.jsx)(t.rM,{}),(0,d.jsx)(v.o,{}),(0,d.jsx)(u.H,{}),(0,d.jsx)(j.E,{children:(0,d.jsx)(k.S,{children:(0,d.jsx)(o.aF,{children:(0,d.jsx)(p.y2,{children:(0,d.jsxs)(q.NS,{children:[(0,d.jsx)(m.Bo,{children:a}),(0,d.jsx)(B,{}),(0,d.jsx)(r.gZ,{})]})})})})})]})})})})})})})})}},80812:(a,b,c)=>{var d={"./en/externalApps.json":[37941,7941],"./ja/externalApps.json":[99211,9211]};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=80812,a.exports=e},81092:(a,b,c)=>{"use strict";c.d(b,{GB:()=>k,VF:()=>l,pT:()=>m});var d=c(21124),e=c(38301),f=c(32482);let g="updatedAt",h=(0,e.createContext)(null);function i(a,b,c,d){(0,e.useRef)(!0)}function j(a,b){switch(b.type){case"TOGGLE":return{...a,isOpen:!a.isOpen};case"SET_WIDTH":return{...a,width:b.width};case"OPEN_MOBILE_DRAWER":return{...a,isMobileDrawerOpen:!0};case"CLOSE_MOBILE_DRAWER":return{...a,isMobileDrawerOpen:!1};case"SET_SORT_KEY":return{...a,sortKey:b.sortKey};case"SET_SORT_DIRECTION":return{...a,sortDirection:b.sortDirection};case"LOAD_SORT_SETTINGS":return{...a,sortKey:b.sortKey,sortDirection:b.sortDirection};case"SET_VIEW_MODE":return{...a,viewMode:b.viewMode};case"SET_OPEN":return a.isOpen===b.isOpen?a:{...a,isOpen:b.isOpen};case"SET_REPOSITORY_ORDER":return{...a,repositoryOrder:b.repositoryOrder};case"SET_REPO_TAB_BAR_MODE":return{...a,repoTabBarMode:b.repoTabBarMode};default:return a}}function k({children:a,initialOpen:b=!0,initialWidth:c=224}){let[k,l]=(0,e.useReducer)(j,{isOpen:b,width:c,isMobileDrawerOpen:!1,sortKey:g,sortDirection:"desc",viewMode:"grouped",repositoryOrder:(0,f.ZD)(),repoTabBarMode:f.PB});i("mcbd-sidebar-sort",`${k.sortKey}:${k.sortDirection}`,()=>JSON.stringify({sortKey:k.sortKey,sortDirection:k.sortDirection}),a=>{try{let b=JSON.parse(a),c=b.sortDirection,d=(0,f.Si)(b.sortKey)?b.sortKey:g;d&&("asc"===c||"desc"===c)&&l({type:"LOAD_SORT_SETTINGS",sortKey:d,sortDirection:c})}catch{}}),i("mcbd-sidebar-view-mode",k.viewMode,()=>k.viewMode,a=>{(0,f.$m)(a)&&l({type:"SET_VIEW_MODE",viewMode:a})}),i("mcbd-sidebar-width",k.width,()=>String(k.width),a=>{let b=Number(a);!isNaN(b)&&b>0&&l({type:"SET_WIDTH",width:288===b?224:b})}),i("mcbd-sidebar-open",k.isOpen,()=>String(k.isOpen),a=>{("true"===a||"false"===a)&&l({type:"SET_OPEN",isOpen:"true"===a})}),i("mcbd-repo-tab-bar-mode",k.repoTabBarMode,()=>k.repoTabBarMode,a=>{(0,f.m3)(a)&&l({type:"SET_REPO_TAB_BAR_MODE",repoTabBarMode:a})});let m=(0,e.useCallback)(()=>{l({type:"TOGGLE"})},[]),n=(0,e.useCallback)(a=>{l({type:"SET_WIDTH",width:a})},[]),o=(0,e.useCallback)(()=>{l({type:"OPEN_MOBILE_DRAWER"})},[]),p=(0,e.useCallback)(()=>{l({type:"CLOSE_MOBILE_DRAWER"})},[]),q=(0,e.useCallback)(a=>{l({type:"SET_SORT_KEY",sortKey:a})},[]),r=(0,e.useCallback)(a=>{l({type:"SET_SORT_DIRECTION",sortDirection:a})},[]),s=(0,e.useCallback)(a=>{l({type:"SET_VIEW_MODE",viewMode:a})},[]),t=(0,e.useCallback)(a=>{l({type:"SET_REPOSITORY_ORDER",repositoryOrder:a}),(0,f.ZC)(a)},[]),u=(0,e.useCallback)(a=>{l({type:"SET_REPO_TAB_BAR_MODE",repoTabBarMode:a})},[]),v=(0,e.useMemo)(()=>({isOpen:k.isOpen,width:k.width,isMobileDrawerOpen:k.isMobileDrawerOpen,sortKey:k.sortKey,sortDirection:k.sortDirection,toggle:m,setWidth:n,openMobileDrawer:o,closeMobileDrawer:p,setSortKey:q,setSortDirection:r,viewMode:k.viewMode,setViewMode:s,repositoryOrder:k.repositoryOrder,setRepositoryOrder:t,repoTabBarMode:k.repoTabBarMode,setRepoTabBarMode:u}),[k.isOpen,k.width,k.isMobileDrawerOpen,k.sortKey,k.sortDirection,k.viewMode,k.repositoryOrder,k.repoTabBarMode,m,n,o,p,q,r,s,t,u]);return(0,d.jsx)(h.Provider,{value:v,children:a})}function l(){let a=(0,e.useContext)(h);if(!a)throw Error("useSidebarContext must be used within a SidebarProvider");return a}function m(){return(0,e.useContext)(h)}},81497:(a,b,c)=>{"use strict";c.d(b,{nR:()=>g});var d=c(21124),e=c(38301),f=c(23312);function g({content:a,delay:b=200,className:c,children:g,metadata:h}){let i=(0,e.useRef)(null),j=(0,e.useRef)(null),k=(0,e.useRef)(null),l=(0,e.useRef)(null),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)({top:-9999,left:-9999}),q=(0,e.useCallback)(()=>{null!==k.current&&(clearTimeout(k.current),k.current=null)},[]),r=(0,e.useCallback)(()=>{let a=i.current;a&&(a.scrollWidth>a.clientWidth||h)&&(q(),k.current=setTimeout(()=>{let b=a.getBoundingClientRect(),c=b.left;l.current={top:b.top,bottom:b.bottom},p({top:b.bottom+4,left:Math.min(b.left,c)}),n(!0),k.current=null},b))},[q,b,h]),s=(0,e.useCallback)(()=>{q(),n(!1)},[q]);return(0,d.jsxs)("span",{ref:i,className:c,onMouseEnter:r,onMouseLeave:s,children:[g??a,m&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsxs)("span",{ref:j,role:"tooltip","aria-hidden":"true",className:"fixed z-[9999] max-w-md px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:{top:o.top,left:o.left},children:[(0,d.jsx)("span",{className:"block break-all",children:a}),h&&(0,d.jsx)("span",{className:"mt-0.5 block whitespace-pre-line font-normal text-background/70",children:h})]}),document.body)]})}},84342:(a,b,c)=>{"use strict";c.d(b,{H:()=>h,O:()=>g});var d=c(21124),e=c(38301);let f=(0,e.createContext)(!1);function g({children:a,authEnabled:b}){return(0,d.jsx)(f.Provider,{value:b,children:a})}function h(){return(0,e.useContext)(f)}},85647:(a,b,c)=>{"use strict";c.d(b,{u:()=>f});var d=c(21124);c(38301);var e=c(35595);function f({className:a,children:b,...c}){return(0,d.jsx)("kbd",{className:(0,e.cn)("inline-flex h-5 min-w-[1.25rem] items-center justify-center rounded-sm border border-border bg-surface px-1","font-mono text-[10px] font-medium leading-none text-muted-foreground",a),...c,children:b})}},85678:(a,b,c)=>{"use strict";c.d(b,{Bz:()=>f,kj:()=>e,wx:()=>d});let d=["send","wait","capture","respond"];function e(a){let{binary:b,worktreeId:c,instanceId:d,messagePlaceholder:e}=a,f=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",g=`--instance ${d}`,h=`${f}${b}`;return{send:`${h} send ${c} "${e}" ${g}`,wait:`${h} wait ${c} ${g} --on-prompt human`,capture:`${h} capture ${c} ${g}`,respond:`${h} respond ${c} "1" ${g}`}}function f(a){let{binary:b,worktreeId:c,instanceId:d,instanceLabel:e,toolLabel:f}=a,g=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",h=`${g}${b}`,i=`--instance ${d}`,j="ja"===a.locale?"ja":"en",k=`${h} capture ${c} ${i} --pane --tail 60`,l=`${h} ask ${c} ${i} "<request>" --async`;if("ja"===j){let a=`${h} ask ${c} ${i} "<依頼文>" --timeout 1800`;return`## 別セッション「${e}」への委任
|
|
16
16
|
- 宛先: worktree \`${c}\` / instance \`${d}\`(${f})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8583,exports.ids=[964,8583],exports.modules={40964:(a,b,c)=>{c.d(b,{m:()=>
|
|
1
|
+
"use strict";exports.id=8583,exports.ids=[964,8583],exports.modules={15608:(a,b,c)=>{function d(){return globalThis.__cmLegacySessionAliases??=new Map}function e(a){return d().get(a)}function f(a){let b=d(),c=!1;for(let[d,e]of b)e===a&&(b.delete(d),c=!0);return c}c.d(b,{mc:()=>e,y:()=>f})},40964:(a,b,c)=>{c.d(b,{s4:()=>k,NN:()=>m,mf:()=>l});var d=c(15194);let e=/^[a-zA-Z0-9_-]+$/;function f(a){if(!e.test(a))throw Error(`Invalid session name format: ${a}`)}var g=c(15608);let h="mcbd-",i=/^[0-9a-f]{8}$/,j=[...d.XH].sort((a,b)=>b.length-a.length);function k(){return globalThis.__cmTmuxSessionNamespace??null}function l(a,b,c){let e=k(),i=function(a,b,c,e){var g=null===a?h:`${h}${a}-`;let i=`${g}${b}-${c}`;if(!e||e===b)return f(i),i;let j=(0,d.pL)(e,b),k=j?`${i}-${j}`:i;return f(k),k}(e,a,b,c);return null===e?i:(0,g.mc)(i)??i}function m(a){if(!a.startsWith(h))return null;let b=a.slice(h.length),c=null,d=b.indexOf("-");d>0&&i.test(b.slice(0,d))&&(c=b.slice(0,d),b=b.slice(d+1));let e=j.find(a=>b.startsWith(`${a}-`));if(!e)return null;let f=b.slice(e.length+1);return""===f?null:{namespace:c,cliToolId:e,rest:f}}}};
|