commandmate 0.21.0 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +130 -130
- package/.next/app-path-routes-manifest.json +28 -28
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +12 -12
- 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/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/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/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/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +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/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_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/todos/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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/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_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]/interrupt/route_client-reference-manifest.js +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]/prompt-response/route_client-reference-manifest.js +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_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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_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_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/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/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_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 +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +28 -28
- package/.next/server/chunks/5959.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- 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/{6488-b5e707dfdd33d633.js → 6488-d3cf14e8d95b2d03.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/{page-b73ac6531829c698.js → page-77b0ee35da06da00.js} +1 -1
- package/.next/trace +12 -12
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +3 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +71 -0
- package/dist/cli/types/api-responses.d.ts +27 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +122 -4
- package/dist/server/src/lib/detection/prompt-detector.js +39 -3
- package/dist/server/src/lib/polling/auto-yes-resolver.js +14 -5
- package/package.json +1 -1
- /package/.next/static/{_AR-TSCnEog5nL9JjjCna → E2SxtJGbNcRMnWbCC3i_-}/_buildManifest.js +0 -0
- /package/.next/static/{_AR-TSCnEog5nL9JjjCna → E2SxtJGbNcRMnWbCC3i_-}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=5959,exports.ids=[1296,5959,9358],exports.modules={60:(a,b,c)=>{"use strict";c.d(b,{Q:()=>f,b:()=>e});var d=c(26283);function e(a){return d.Md.test(a)&&!d.kD.test(a)}function f(a,b,c,d,e,g=!1){if(a=Math.max(0,a),"opencode"===d||"copilot"===d||g){let a=e(b);return a>=0?a+1:0}if("antigravity"===d){let c=e(b);return c>=0?c+1:Math.max(0,a)}if(a>=b||c){let a=e(40);return a>=0?a+1:0}if("codex"===d)return Math.max(0,a);if(a>=b-5){let a=e(50);return a>=0?a+1:Math.max(0,b-40)}return Math.max(0,a)}},2669:(a,b,c)=>{"use strict";c.d(b,{M7:()=>d,Sr:()=>g,mR:()=>h,su:()=>j,wQ:()=>i});let d="SESSION_STARTING",e="SESSION_START_FAILED",f=[d,e];class g extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}class h extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}function i(a){return k(a)===d}function j(a){let b=k(a);return void 0!==b&&f.includes(b)}function k(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},3523:(a,b,c)=>{"use strict";c.d(b,{z$:()=>C,zX:()=>D});var d=c(31766),e=c(88807),f=c(56791),g=c(69297),h=c(25129),i=c(18778),j=c(15194),k=c(8988),l=c(26283),m=c(72626),n=c(46423),o=c(93997),p=c(60),q=c(82450),r=c(56263),s=c(13033),t=c(72457),u=c(71080),v=c(45146),w=c(63865),x=c(2924);let y=(0,m.h)("response-poller");function z(a){return{response:"",isComplete:!1,lineCount:a}}function A(a,b,c,d,e,f,g,h=!1){let i=(0,p.Q)(b,c,d,e,f,h),j=a.slice(i);return{response:(0,l.aJ)(j.join("\n")),isComplete:!0,lineCount:c,promptDetection:g,bufferReset:d,captureWindowSaturated:h}}function B(a,b){let c=(0,l.KO)(b);return(0,h.gF)((0,l._A)((0,l.aJ)(a)),c)}function C(a,b,c,d=o.xE){let e=a.split("\n"),f=e.length;for(;f>0&&""===e[f-1].trim();)f--;let g=e.slice(0,f),h=g.length,i=(0,o.sl)(e.length,d),j="claude"===c?(0,l.GT)(g):-1,k=j>=0?j:h,m=h>0&&b>25&&h+25<b,q=h>0&&b>50&&h<50,r=m||q;if(!r&&h<b-5)return null;let s=Math.max(0,h-20),t=g.slice(s),u="opencode"===c?(0,l.aJ)(g.join("\n")):t.join("\n"),{promptPattern:w,separatorPattern:x,thinkingPattern:y,skipPatterns:D}=(0,l._X)(c),E=(a=60)=>{let b;if("codex"===c)b=/^›\s+(?!Implement|Find and fix|Type|Summarize)/;else if("opencode"===c){let b=0;for(let c=h-1;c>=Math.max(0,h-a);c--){let a=(0,l.aJ)(g[c]);if(l.Md.test(a)&&2==++b)return c}return -1}else b=/^[>❯]\s+\S/;for(let c=k-1;c>=Math.max(0,k-a);c--){let a=(0,l.aJ)(g[c]);if(b.test(a))return c}return -1};if("claude"===c||"codex"===c||"copilot"===c){let a=B(g.join("\n"),c);if(a.isPrompt)return A(g,b,h,r,c,E,a,i)}let F=(0,l.aJ)(u),G=w.test(F),H=x.test(F),I="codex"===c?(0,l.DR)(g,20):y.test(F),J=("codex"===c||"gemini"===c||"vibe-local"===c||"copilot"===c||"antigravity"===c)&&G&&!I,K="claude"===c&&G&&H&&!I,L="opencode"===c&&(0,p.b)(F);if(J||K||L){let a=[],d=(0,p.Q)(b,h,r,c,E,i),e=h;for(let b=d;b<k;b++){let d=g[b],f=(0,l.aJ)(d);if("codex"===c&&/^›\s+/.test(f)||"gemini"===c&&/^(%|\$|.*@.*[%$#])\s*$/.test(f)||"antigravity"===c&&/^>\s*$/.test(f)||"opencode"===c&&(l.sy.test(f)||l.uA.test(f))){e=b;break}D.some(a=>a.test(f))||a.push(d)}let f=a.join("\n").trim(),j=f.split("\n").slice(-n.$).join("\n");if(y.test(j))return z(h);if("claude"===c){let a=(0,l.aJ)(f),b=/[╭╮╰╯│]/.test(a)||/░{3,}/.test(a)||/▓{3,}/.test(a),c=/Claude Code|claude\/|v\d+\.\d+/.test(a),d=/Tip:|for shortcuts|\?\s*for help/.test(a),e=/^\s*\/Users\/.*$/m.test(a)&&a.split("\n").length<30,g=a.match(/^[>❯]\s+(\S.*)$/m);if(g){let b=a.indexOf(g[0]);if(0===a.substring(b+g[0].length).trim().split("\n").filter(a=>{let b=a.trim();return b&&!D.some(a=>a.test(b))&&!/^─+$/.test(b)}).length)return z(h)}else if((b||c||d||e)&&f.length<2e3)return z(h)}if("gemini"===c&&((f.match(/[░███]/g)||[]).length>.3*f.length||v.SI.some(a=>f.includes(a))||!f.includes("✦")&&f.length<10))return z(h);if("opencode"===c){let a=(0,l.aJ)(f);if((a.length<50||!l.Md.test(F))&&0===a.split("\n").filter(a=>{let b=a.trim();return b&&!l.sx.some(a=>a.test(b))}).length)return z(h)}return{response:f,isComplete:!0,lineCount:e,bufferReset:r,captureWindowSaturated:i}}if("opencode"!==c){let a=B(g.join("\n"),c);if(a.isPrompt)return A(g,b,h,r,c,E,a,i)}let M=[],N=r||i||b>=h-5,O=N?E(80):-1,P=N?O>=0?O+1:Math.max(0,h-80):Math.max(0,b);for(let a=P;a<Math.min(h,k);a++){let b=g[a],c=(0,l.aJ)(b);D.some(a=>a.test(c))||M.push(b)}let Q=M.join("\n").trim();return Q?{response:Q,isComplete:!1,lineCount:h}:z(h)}async function D(a,b,c){let h=(0,e.getDbInstance)(),m=c??b;try{let e=(0,f.Uim)(h,a);if(!e)return y.error("worktree-worktreeid-not"),(0,v.Et)(a,b,c),!1;if(!await (0,d.K1)(a,b,c))return y.info("session-not-running"),(0,v.Et)(a,b,c),!1;let p=(0,f.y1O)(h,a,m),z=p?.lastCapturedLine||0,A=await (0,d.Wh)(a,b,o.xE,c);if("opencode"===b||"copilot"===b){let d=(0,v.MN)(a,b,c);(0,s.IZ)(d,A,b)}let D=C(A,z,b,o.xE);if(!D||!D.isComplete){let{thinkingPattern:c}=(0,l._X)(b),d=(0,l.aJ)(A).split("\n").slice(-n.$).join("\n");return c.test(d)&&(0,f.PLg)(h,a,b,m)>0&&y.info("marked-answeredcount-pending"),!1}let E="opencode"===b||"copilot"===b,F=!(0,j.VA)(b)&&!D.captureWindowSaturated;if(F&&!D.bufferReset&&D.lineCount===z&&!p?.inProgressMessageId)return!1;if(F&&!D.bufferReset&&D.lineCount<=z)return y.info("already-saved-up-to-line-lastcapturedlin"),!1;let G=D.promptDetection??B(D.response,b);if(G.isPrompt){let d=G.rawContent||G.cleanContent,i=(0,v.MN)(a,b,c),j=(0,t.zm)(d,b);if((0,t.gv)(i,j))return y.info("duplicate-prompt-skipped",{worktreeId:a,cliToolId:b}),!1;let k=d;"copilot"===b&&(k=(0,q.LH)(d),k=(0,q.Sj)(k,r.Rf,r.ky)),(0,f.YXK)(h,a,b,m);let l=(0,f.oHS)(h,{worktreeId:a,role:"assistant",content:k,messageType:"prompt",promptData:G.promptData,timestamp:new Date,cliToolId:b,instanceId:m});return(0,f.PPx)(h,a,b,D.lineCount,m),(0,g.broadcastMessage)("message",{worktreeId:a,message:l}),(0,x.r)(h,a,b,m,"prompt_detected",{promptType:G.promptData?.type}),(0,w.J$)({worktreeId:a,worktreeName:e.name,kind:"prompt",agentName:m,excerpt:G.promptData?.question??k}).catch(()=>{}),E||(0,v.Et)(a,b,c),!0}if(!D.response||""===D.response.trim())return(0,f.PPx)(h,a,b,D.lineCount,m),!1;let H="claude"===b?(0,k.R)(D.response):void 0,I=D.response;if("gemini"===b)I=(0,q.IS)(D.response);else if("claude"===b)I=(0,q.NN)(D.response);else if("copilot"===b){let d=(0,v.MN)(a,b,c),e=(0,s.Uz)(d)||D.response;I=(0,q.LH)(e),I=(0,q.Sj)(I,r.Rf,r.ky),(0,s.q1)(d)}else if("opencode"===b){I=(0,q.aW)(D.response);let d=(0,v.MN)(a,b,c);(0,s.q1)(d)}if(!I||""===I.trim()||"[No content]"===I)return(0,f.PPx)(h,a,b,D.lineCount,m),(0,f.YXK)(h,a,b,m),!1;if(!F){let d=(0,v.MN)(a,b,c);if((0,u.j7)(d,I))return(0,f.PPx)(h,a,b,D.lineCount,m),!1}I&&await (0,i.T)(h,a,I,b),(0,f.PLg)(h,a,b,m)>0&&y.info("marked-answeredcount-pending");let J=(0,f.y1O)(h,a,m);if(F&&J&&D.lineCount<=J.lastCapturedLine)return y.info("race-condition-detected-skipping-save-re"),!1;let K=(0,f.oHS)(h,{worktreeId:a,role:"assistant",content:I,messageType:"normal",timestamp:new Date,cliToolId:b,instanceId:m,summary:H?.summary,logFileName:H?.logFileName,requestId:H?.requestId});return(0,g.broadcastMessage)("message",{worktreeId:a,message:K}),(0,w.J$)({worktreeId:a,worktreeName:e.name,kind:"completion",agentName:m,excerpt:I}).catch(()=>{}),(0,f.PPx)(h,a,b,D.lineCount,m),E&&(0,v.Et)(a,b,c),!0}catch(a){return y.error("response:check-failed",{error:a instanceof Error?a.message:String(a)}),!1}}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},8988:(a,b,c)=>{"use strict";c.d(b,{R:()=>g});let d=/📄 Session log: (.+?\/([^\/\s]+\.jsonl))/,e=/Request ID: ([^\s\n]+)/,f=/Summary: (.+?)(?:\n─|$)/s;function g(a){let b={content:a},c=d.exec(a);c&&(b.logFileName=c[2]);let g=e.exec(a);g&&(b.requestId=g[1]);let h=f.exec(a);return h&&(b.summary=h[1].trim()),b}},11508:(a,b,c)=>{"use strict";c.d(b,{H:()=>m,m:()=>n});var d=c(44265),e=c(11665),f=c(40236),g=c(93997),h=c(26283),i=c(72626),j=c(20610);let k=(0,i.h)("cli-tools/gemini");function l(a){return a instanceof Error?a.message:String(a)}let m=200;class n extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,e.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("Gemini CLI is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,e.N)(d)){await this.reconcileExistingSession(d),k.info("gemini-session-sessionname");return}try{await (0,e.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,j.Uc)),await (0,e.V1)(d,"gemini",!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),k.info("started-gemini-session:sessionname")}catch(b){let a=l(b);throw Error(`Failed to start Gemini session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,e.Xg)(a,m),d=(0,h.aJ)(c);if(h.wN.test(d))return void k.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,e.ds)(a,"Enter"),b=!0,k.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}k.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,e.Xg)(a,m),c=(0,h.aJ)(b);if(h.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}k.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,e.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,f.FW)({sessionName:d,message:b,cliToolId:"gemini"}),(0,g.gm)(d),k.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=l(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,e.N)(c)&&(await (0,e.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,j.Is)),await (0,e.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,j.Zf))),await (0,e.fY)(c)&&k.info("stopped-gemini-session:sessionname")}catch(a){throw k.error("session:stop-failed",{error:l(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}},11665:(a,b,c)=>{"use strict";c.d(b,{Ce:()=>w,GW:()=>n,KB:()=>r,N:()=>m,N6:()=>y,Sb:()=>z,V1:()=>p,Xg:()=>s,ds:()=>v,fY:()=>t,jw:()=>o,lA:()=>k,zT:()=>l});var d=c(79646),e=c(28354),f=c(93997),g=c(16983),h=c(72626);let i=(0,e.promisify)(d.execFile),j=(0,h.h)("tmux");function k(a){return`=${a}:`}async function l(a,b={}){let c,d,e,f=b.windowWidth??g.Jn,h=b.windowHeight??g.sO,m=k(a);try{c=(await i("tmux",["show-window-options","-v","-t",m,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await i("tmux",["display-message","-p","-t",m,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let n="manual"===c,o=d===f&&e===h;if(n&&o)return!1;try{return n||await i("tmux",["set-window-option","-t",m,"window-size","manual"],{timeout:5e3}),o||await i("tmux",["resize-window","-t",m,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return j.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function m(a){try{return await i("tmux",["has-session","-t",k(a)],{timeout:5e3}),!0}catch{return!1}}async function n(){try{let{stdout:a}=await i("tmux",["list-sessions","-F","#{session_name}|#{session_windows}|#{session_attached}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.trim().split("\n").map(a=>{let[b,c,d]=a.split("|");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d}})}catch{return[]}}async function o(a,b){let c,d,e,f,h;"string"==typeof a?(c=a,d=b,e=g.eu,f=g.Jn,h=g.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||g.eu,f=a.windowWidth||g.Jn,h=a.windowHeight||g.sO);try{await i("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(h)],{timeout:5e3}),await i("tmux",["set-option","-t",k(c),"history-limit",String(e)],{timeout:5e3});try{await i("tmux",["new-window","-k","-t",`${k(c)}0`,"-c",d],{timeout:5e3})}catch(a){j.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)})}await l(c,{windowWidth:f,windowHeight:h})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}}async function p(a,b,c=!0){let d=c?["send-keys","-t",k(a),b,"C-m"]:["send-keys","-t",k(a),b];try{await i("tmux",d,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send keys to tmux session: ${a}`)}}let q=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC","PageUp","PageDown","Home","End","q"]);async function r(a,b){if(0!==b.length){for(let a of b)if(!q.has(a))throw Error(`Invalid special key: ${a}`);try{for(let c=0;c<b.length;c++)await i("tmux",["send-keys","-t",k(a),b[c]],{timeout:5e3}),c<b.length-1&&await new Promise(a=>setTimeout(a,100))}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special keys to tmux session: ${a}`)}}}async function s(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await i("tmux",["capture-pane","-t",k(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function t(a){try{return await i("tmux",["kill-session","-t",k(a)],{timeout:5e3}),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let u=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function v(a,b){if(!u.has(b))throw Error(`Invalid special key: ${b}`);try{await i("tmux",["send-keys","-t",k(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function w(a){try{await i("tmux",["send-keys","-t",k(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}let x=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q"];function y(a){return x.includes(a)}async function z(a,b){await r(a,b),(0,f.gm)(a)}},13033:(a,b,c)=>{"use strict";c.d(b,{IW:()=>h,IZ:()=>l,K0:()=>g,Uz:()=>m,l1:()=>f,o0:()=>i,q1:()=>n,tb:()=>k,vQ:()=>j});var d=c(26283);let e=new Map;function f(a){return(0,d._A)((0,d.aJ)(a)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}function g(a){let b=a.split("\n"),c=[];for(let a of b){let b=f(a);!(!b||d.sx.some(a=>a.test(b)))&&(d.Md.test(b)||c.push(b))}return c}function h(a){return a.replace(/[\u2500-\u257F]/g,"").replace(/\s{2,}/g," ").trim()}function i(a){let b=(0,d.aJ)(a).split("\n"),c=[];for(let a of b){let b=h(a);b&&(d.J7.some(a=>a.test(b))||c.push(b))}return c}function j(a,b){if(0===a.length||0===b.length)return 0;let c=Math.min(a.length,b.length);for(let d=c;d>=1;d--){let c=a.slice(-d),e=b.slice(0,d),f=!0;for(let a=0;a<d;a++)if(c[a]!==e[a]){f=!1;break}if(f)return d}return 0}function k(a){e.set(a,{lines:[],lastFingerprint:[],pollCount:0})}function l(a,b,c="opencode"){let d=e.get(a);if(!d)return;let f="copilot"===c?i(b):g(b);if(0!==f.length){if(d.pollCount++,0===d.lines.length)d.lines=[...f];else{let a=j(d.lastFingerprint,f);if(a>0){let b=f.slice(a);d.lines.push(...b)}else d.lines.push(...f)}d.lastFingerprint=f.slice(-10)}}function m(a){let b=e.get(a);return b&&0!==b.lines.length?b.lines.join("\n"):""}function n(a){e.delete(a)}},18778:(a,b,c)=>{"use strict";c.d(b,{T:()=>g});var d=c(56791),e=c(41364);let f=(0,c(72626).h)("conversation-logger");async function g(a,b,c,h="claude"){let i=(0,d.r8U)(a,b);if(i)try{await (0,e.hM)(b,i.content,c,h)}catch(a){f.error("conversation:log-failed",{error:a instanceof Error?a.message:String(a)})}}},18896:(a,b,c)=>{"use strict";c.d(b,{v7:()=>d.v7,LP:()=>d.LP,pL:()=>d.pL,GE:()=>d.GE,aq:()=>d.aq,kC:()=>d.kC,xU:()=>y,bZ:()=>z,W8:()=>d.W8,W5:()=>F,_i:()=>G,_C:()=>H});var d=c(24455),e=c(31766),f=c(25129),g=c(68901),h=c(56791),i=c(88807),j=c(72626);let k=(0,j.h)("auto-yes-policy"),l=new Map;var m=c(52277),n=c(2924),o=c(52660),p=c(63869),q=c(31268),r=c(26283),s=c(77093),t=c(93997),u=c(66007);let v=(0,j.h)("auto-yes-poller"),w=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function x(a){return w.get(a)}function y(a){let b=x(a);return b?.lastServerResponseTimestamp??null}function z(a){return w.has(a)}function A(a){let b=x(a);if(b&&(b.consecutiveErrors++,b.currentInterval=(0,d.G)(b.consecutiveErrors),b.consecutiveErrors>=g.ul)){let b=(0,d.Ue)(a),c=(0,d.pL)(a);c&&(0,d.XK)(b,c,"consecutive_errors",(0,d.GE)(a)??void 0),G(a)}}async function B(a,b,c,d){let f=c??g.FW,h=await (0,e.Wh)(a,b,f,d);return(0,r._A)((0,r.aJ)(h))}async function C(a,b,e,j,u,w){let y=(0,d.v7)(a,e,w);try{let A=(0,r.KO)(e),C=(0,f.gF)(j,{...A,...u&&{precomputedLines:u}});if(!C.isPrompt||!C.promptData)return b.lastAnsweredPromptKey=null,b.lastAnsweredAt=null,"no_prompt";let D=(z=C.promptData,`${z.type}:${z.question}`);if(b.lastAnsweredPromptKey===D&&null!==b.lastAnsweredAt&&Date.now()-b.lastAnsweredAt<d.UL)return"duplicate";let E=function(a,b,c){let e=c??b,f=(0,d.v7)(a,b,e),g=Date.now(),j=l.get(f);if(j&&j.expiresAt>g)return j.policy;let m=function(a,b,c){try{let d=(0,h.MHq)((0,i.getDbInstance)(),a,b,c);if(!d)return null;return d.contract.autoYes}catch(d){return k.warn("policy-lookup-failed",{worktreeId:a,cliToolId:b,instanceId:c,error:d instanceof Error?d.message:String(d)}),null}}(a,b,e);return l.size>=200&&function(a){for(let[b,c]of l.entries())c.expiresAt<=a&&l.delete(b)}(g),l.set(f,{policy:m,expiresAt:g+5e3}),m}(a,e,w),F=function(a,b){let c=function(a){if("yes_no"===a.type)return"y";if("multiple_choice"===a.type){let b=a.options.find(a=>a.isDefault)??a.options[0];return!b||b.requiresTextInput?null:b.number.toString()}return null}(a);if(null===c)return{answer:null,suppressedBy:null};let d=function(a,b){if(!b)return null;if("off"===b.mode)return{reason:"mode-off"};let c=function(a,b){if(0===b.length)return{outcome:"no-match"};let c=function(a){let b=[a.question];if(a.instructionText&&b.push(a.instructionText),"multiple_choice"===a.type)for(let c of a.options)b.push(c.label);else b.push(...a.options);return b.map(a=>a.length>2e4?a.slice(0,2e4):a)}(a);for(let a of b){if(a.length>200||!(0,g.P0)(a).valid)return{outcome:"unusable",pattern:a};let b=new RegExp(a);for(let d of c){let c=(0,g.eJ)(b,d);if(null===c)return{outcome:"unusable",pattern:a};if(c)return{outcome:"match",pattern:a}}}return{outcome:"no-match"}}(a,b.denyPatterns);return"match"===c.outcome?{reason:"deny-pattern",pattern:c.pattern}:"unusable"===c.outcome?{reason:"deny-pattern-unusable",pattern:c.pattern}:"safe"===b.mode?"yes_no"===a.type?null:{reason:"type-not-allowed"}:"allow-listed"===b.mode?b.allowPromptTypes.includes(a.type)?null:{reason:"type-not-allowed"}:null}(a,b);return d?{answer:null,suppressedBy:d.reason,pattern:d.pattern}:{answer:c,suppressedBy:null}}(C.promptData,E);F.suppressedBy&&((0,m.ZS)(a,e,w,{reason:F.suppressedBy,mode:E?.mode??null,promptType:C.promptData.type,pattern:F.pattern}),v.warn("poller:auto-yes-suppressed-by-policy",{worktreeId:a,cliToolId:e,instanceId:w,reason:F.suppressedBy,mode:E?.mode??null,pattern:F.pattern,promptType:C.promptData.type}));let G=F.answer;if(null===G)return"no_answer";let H=q.s.getInstance().getTool(e).getSessionName(a,w);try{await (0,p.t)({sessionName:H,answer:G,cliToolId:e,promptData:C.promptData})}finally{(0,t.gm)(H)}var z,B=Date.now();let I=x(y);I&&(I.lastServerResponseTimestamp=B);let J=x(y);J&&(J.consecutiveErrors=0,J.currentInterval=d.ps),b.lastAnsweredPromptKey=D,b.lastAnsweredAt=Date.now(),v.info("poller:response-sent",{worktreeId:a,cliToolId:e,instanceId:w}),(0,n.r)((0,i.getDbInstance)(),a,e,w??e,"prompt_answered_auto",{promptType:C.promptData.type});let K=null;try{K=(0,o.pG)((0,i.getDbInstance)(),{worktreeId:a,cliToolId:e,instanceId:w??e,promptData:C.promptData,answer:G,answeredBy:"auto",content:C.rawContent||C.cleanContent})}catch(b){v.warn("poller:prompt-audit-record-failed",{worktreeId:a,cliToolId:e,instanceId:w,error:(0,s.u1)(b)})}if(K){let b=K;Promise.resolve().then(c.bind(c,69297)).then(({broadcastMessage:c})=>{c(b.created?"message":"message_updated",{worktreeId:a,message:b.message})}).catch(()=>{})}let[{startPolling:L},{broadcastTerminalSnapshotAfterInteraction:M}]=await Promise.all([Promise.resolve().then(c.bind(c,95220)),Promise.resolve().then(c.bind(c,99508))]);return L(a,e,w),M(a,e,w),"responded"}catch{return A(y),v.warn("poller:detect-respond-error",{worktreeId:a,cliToolId:e,instanceId:w}),"error"}}async function D(a,b,c){let e=(0,d.v7)(a,b,c),f=x(e);if("valid"===function(a,b){if(!b)return"stopped";let c=(0,d.Ue)(a),e=(0,d.pL)(a);if(!e)return G(a),"expired";let f=(0,d.GE)(a)??void 0,g=(0,d.aq)(c,e,f);return g?.enabled?"valid":(G(a),"expired")}(e,f)){try{let h=(0,d.aq)(a,b,c),i=h?.stopPattern?g.FW:g.Ke,j=await B(a,b,i,c),k=j.split("\n");if(function(a,b,c){if(b.stopCheckBaselineLength<0)return b.stopCheckBaselineLength=c.length,!1;let e=b.stopCheckBaselineLength;if(c.length>e){let f=c.substring(e);return b.stopCheckBaselineLength=c.length,(0,d.Cs)(a,f,G)}return c.length<e&&(b.stopCheckBaselineLength=c.length),!1}(e,f,j))return;let l=await C(a,f,b,j,k,c);if("responded"===l)return void E(a,b,c,d.ZO);if("no_prompt"===l){let e=k.slice(-d.Re).join("\n");if((0,r.ut)(b,e))return void E(a,b,c,g.QN)}}catch(d){A(e),v.warn("poller:poll-error",{worktreeId:a,cliToolId:b,instanceId:c,error:(0,s.u1)(d)})}E(a,b,c)}}function E(a,b,c,e){let f=x((0,d.v7)(a,b,c));if(!f)return;let g=Math.max(e??f.currentInterval,d.ps);f.timerId=setTimeout(()=>{D(a,b,c)},g)}function F(a,b,c){if(!(0,u.h6)(a))return{started:!1,reason:"invalid worktree ID"};let e=c??b,f=(0,d.aq)(a,b,e);if(!f?.enabled)return{started:!1,reason:"auto-yes not enabled"};let g=(0,d.v7)(a,b,e),h=x(g);if(!h&&w.size>=d.fC)return{started:!1,reason:"max concurrent pollers reached"};if(h&&h.cliToolId===b)return{started:!0,reason:"already_running"};h&&G(g);let i={timerId:null,cliToolId:b,instanceId:e,consecutiveErrors:0,currentInterval:d.ps,lastServerResponseTimestamp:null,lastAnsweredPromptKey:null,lastAnsweredAt:null,stopCheckBaselineLength:-1};return w.set(g,i),l.delete(g),i.timerId=setTimeout(()=>{D(a,b,e)},d.ps),v.info("poller:started",{worktreeId:a,cliToolId:b,instanceId:e}),{started:!0}}function G(a){let b=x(a);b&&(b.timerId&&clearTimeout(b.timerId),w.delete(a),l.delete(a),v.info("poller:stopped",{compositeKey:a}))}function H(a){(0,d._9)(Array.from(w.keys()),a).forEach(a=>G(a))}},20610:(a,b,c)=>{"use strict";c.d(b,{CV:()=>i,Em:()=>l,Is:()=>g,KI:()=>j,PY:()=>k,Uc:()=>d,Zf:()=>h,pL:()=>e,x9:()=>f});let d=100,e=100,f=200,g=300,h=500,i=500,j=2e3,k=200,l=100},21684:(a,b,c)=>{"use strict";c.d(b,{U:()=>g});var d=c(33873),e=c.n(d),f=c(87447);function g(){return(0,f._p)("CM_LOG_DIR")||e().join(process.cwd(),"data","logs")}},25129:(a,b,c)=>{"use strict";c.d(b,{gF:()=>B,xn:()=>v});var d=c(72626),e=c(68652),f=c(26283);let g=/^\s*[\u276F\u25CF\u203A][^\d]*(\d+)(?:\.(?!\d)|\s{2,})\s*(.+)$/,h=/^\s*[^\d]{0,3}(\d+)(?:\.(?!\d)|\s+)\s*(.+)$/,i=/^[-─]+$/,j=/^\s*\[[^\]]*\d+\s+lines?\]/i,k=/^\s*[…]?\s*[+\-↑↓⏵⏷]?\s*\d+\s+(?:pending|more)\b/i,l=/Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,m=/Enter\s+to\s+select\b.*\bnavigate\b/i,n=/press\s+(?:enter|number)\s+to\s+confirm/i,o=/press\s+number\s+to\s+confirm/i,p=/(?:select|choose|pick|which|what|how|where|enter|type|specify|confirm|approve|accept|reject|decide|preference|option)/i,q=[/type\s+here/i,/tell\s+(me|claude)/i,/enter\s+/i,/custom/i,/differently/i];function r(a,b){if(0===b.length)return!0;let c=b[0].number;return a<c&&a>=c-2}function s(a){return{isPrompt:!1,cleanContent:a.trim()}}function t(a){return 0!==a.length&&!!(a.includes("?")||a.includes("?")||p.test(a))}function u(a,b){let c=b.endsWith("?")||b.endsWith("?");return!!(!c&&/^\s{2,}[^\d]/.test(a)&&!/^\s*\d+\./.test(a)||!c&&/^\s{4,}/.test(a)&&!/^\s*\d+\.\s/.test(a)||b.length<5&&!c||/^[\/~]/.test(b)||b.length>=2&&/^[a-zA-Z0-9_-]+$/.test(b))}function v(a,b="yes_no"){let c=a.toLowerCase().trim();if("multiple_choice"===b){if(/^\d+$/.test(c))return c;throw Error("Invalid answer for multiple choice prompt. Expected a number.")}if("yes"===c||"y"===c)return"y";if("no"===c||"n"===c)return"n";throw Error("Invalid answer for yes/no prompt. Expected 'yes', 'no', 'y', or 'n'.")}let w=(0,d.h)("prompt-detector"),x=null;function y(a){let b=a.split("\n"),c=(b.length>200?b.slice(-200):b).join("\n");return c.length>5e3&&(c=c.slice(-5e3)),c}let z=[{regex:/^(.+)\s+\(y\/n\)\s*$/m},{regex:/^(.+)\s+\[y\/N\]\s*$/m,defaultOption:"no"},{regex:/^(.+)\s+\[Y\/n\]\s*$/m,defaultOption:"yes"},{regex:/^(.+)\s+\(yes\/no\)\s*$/m}];function A(a,b,c,d){return{isPrompt:!0,promptData:{type:"yes_no",question:a,options:["yes","no"],status:"pending",...void 0!==d&&{defaultOption:d},instructionText:c},cleanContent:b,rawContent:c}}function B(a,b){let c=(0,e.N)(a),d=c===a&&b?.precomputedLines?b.precomputedLines:c.split("\n"),p=d.slice(-50).join("\n"),v=p===x;v||w.debug("detectPrompt:start",{outputLength:c.length}),x=p;let B=d.slice(-20).join("\n"),C=function(a,b,c){var d,p;a=(0,e.N)(a);let v=b?.requireDefaultIndicator??!0,w=a.split("\n"),x=w.length;for(;x>0&&""===w[x-1].trim();)x--;let y=Math.max(0,x-50),z=!1;for(let a=x-1;a>=y;a--){let b=m.test(w[a]);if(l.test(w[a])||b){x=a,z=b;break}}let A=w.slice(y,x);for(let b of A)if(f.l8.test(b))return s(a);let B=!1,C=!1;for(let a of A){let b=a.trim();if(!B&&n.test(b)){B=!0,o.test(b)&&(C=!0);break}}if(v){let b=!1;for(let a of A){let c=a.trim();if(g.test(c)){b=!0;break}}if(!b&&!B)return s(a)}let D=[],E=-1,F=0;for(let b=x-1;b>=y;b--){let c=w[b].trim();if(j.test(c)||k.test(c)){F++;continue}let d=c.match(g);if(d){let a=parseInt(d[1],10);if(a<=20&&r(a,D)){let b=d[2].trim();D.unshift({number:a,label:b,isDefault:!0}),F=0;continue}}let e=c.match(h);if(e){let a=parseInt(e[1],10);if(a>20);else if(r(a,D)){let b=e[2].trim();D.unshift({number:a,label:b,isDefault:!1}),F=0;continue}}if(0===D.length&&(c.startsWith("❯")||c.startsWith("●")||c.startsWith("›")))return s(a);if(D.length>0&&c&&!i.test(c)){let a=w[b];if(/^\s{4,}/.test(a)&&u(a,c)){if(++F>25){E=b;break}continue}if(t(c)){E=b;break}if(u(a,c)){if(++F>(/^\s{4,}/.test(a)?25:5)){E=b;break}continue}E=b;break}}if(!function(a){if(0===a.length||1!==a[0])return!1;let b=0;for(let c=1;c<a.length;c++){let d=a[c]-a[c-1];if(d<1||d>2||(2===d&&b++,b>1))return!1}return!0}(D.map(a=>a.number)))return s(a);let G=D.some(a=>a.isDefault),H=v&&B;if(D.length<2||v&&!G&&!H||!v&&!G&&(-1===E||!t(w[E]?.trim()??"")&&!function(a,b,c,d){let e=Math.max(d,b-3);for(let c=b-1;c>=e;c--){let b=a[c]?.trim()??"";if(!(!b||i.test(b))&&t(b))return!0}return!1}(w,E,0,y)))return s(a);let I=function(a,b){if(b<0)return"Please select an option:";let c=[];for(let d=Math.max(0,b-5);d<=b;d++){let b=a[d].trim();b&&!i.test(b)&&c.push(b)}return c.join(" ")}(w,E),J=function(a,b,c){if(b<0)return;let d=Math.max(0,b-19),e=a.slice(d,c).map(a=>a.trimEnd()).join("\n").trim();return e.length>0?e:void 0}(w,E,x),K=B?C?"answer_only":"answer_then_enter":void 0;return d=a,p=z,{isPrompt:!0,promptData:{type:"multiple_choice",question:I.trim(),options:D.map(a=>{let b=q.some(b=>b.test(a.label));return{number:a.number,label:a.label,isDefault:a.isDefault,requiresTextInput:b}}),status:"pending",instructionText:J,...K?{submitMode:K}:{},...p?{isAskUserQuestion:!0}:{}},cleanContent:I.trim(),rawContent:c(d.trim())}}(c,b,y);if(C.isPrompt)return v||w.info("detectPrompt:multipleChoice",{isPrompt:!0,question:C.promptData?.question,optionsCount:C.promptData?.options?.length}),C;let D=B.trim();for(let a of z){let b=B.match(a.regex);if(b){let c=b[1].trim();return A(c,c,D,a.defaultOption)}}let E=B.match(/^(.*?)Approve\?\s*$/m);if(E){let a=E[1].trim();return A(a?`${a} Approve?`:"Approve?",a||"Approve?",D)}return v||w.debug("detectPrompt:complete",{isPrompt:!1}),{isPrompt:!1,cleanContent:c.trim()}}},25754:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>g,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},26838:(a,b,c)=>{"use strict";c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.21.0"}function k(){return j()}async function l(){try{var a,b,c;if(null!==i.result&&Date.now()-i.fetchedAt<36e5||i.rateLimitResetAt&&(!(Date.now()>=i.rateLimitResetAt)||(i.rateLimitResetAt=null,0)))return i.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${k()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?i.rateLimitResetAt=1e3*parseInt(b,10):i.rateLimitResetAt=Date.now()+36e5}(d),i.result;if(!d.ok)return i.result;let e=await d.json(),j=k(),l=e.tag_name.replace(/^v/,""),m={hasUpdate:function(a,b){if(!g.test(a)||!g.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[h,i,j]=c(b);return h!==d?h>d:i!==e?i>e:j>f}(j,e.tag_name),currentVersion:j,latestVersion:l,releaseUrl:(a=e.html_url).startsWith(f.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,h.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return i.result=m,i.fetchedAt=Date.now(),m}catch{return i.result}}},30618:(a,b,c)=>{"use strict";c.d(b,{xT:()=>w,Ui:()=>x});var d=c(44265),e=c(11665),f=c(40236),g=c(93997),h=c(29021),i=c(33873),j=c(72626);let k=(0,j.h)("cli-tools/opencode-config"),l=/^[a-zA-Z0-9._:/-]{1,100}$/,m=/^[a-zA-Z0-9._:/@-]{1,200}$/;async function n(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return k.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return k.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return k.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&l.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?k.warn("ollama-api-timeout"):k.warn("failed-to-fetch")}return a}async function o(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return k.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return k.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return k.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&m.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?k.warn("lm-studio-api"):k.warn("failed-to-fetch")}return a}async function p(a){let b=function(a){let b=i.resolve(a);try{if(!h.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return h.realpathSync(b)}(a),c=i.join(b,"opencode.json");if(h.existsSync(c))return;let[d,e]=await Promise.all([n(),o()]),f={};if(Object.keys(d).length>0&&(f.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:d}),Object.keys(e).length>0&&(f.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:e}),0!==Object.keys(f).length)try{h.writeFileSync(c,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:f},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return;k.warn("failed-to-write-opencodejson:error-insta")}}var q=c(79646),r=c(28354),s=c(20610);let t=(0,j.h)("cli-tools/opencode"),u=(0,r.promisify)(q.execFile);function v(a){return a instanceof Error?a.message:String(a)}let w=200;class x extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,e.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("OpenCode is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,e.N)(d)){await this.reconcileExistingSession(d,{windowWidth:80,windowHeight:w}),t.info("opencode-session-sessionname");return}try{await p(b),await (0,e.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc));try{await u("tmux",["resize-window","-t",(0,e.lA)(d),"-x","80","-y",String(w)])}catch{}await (0,e.V1)(d,"opencode",!0),await new Promise(a=>setTimeout(a,15e3)),t.info("started-opencode-session:sessionname")}catch(b){let a=v(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,e.N)(d))throw Error(`OpenCode session ${d} does not exist. Start the session first.`);try{await (0,f.FW)({sessionName:d,message:b,cliToolId:"opencode"}),(0,g.gm)(d),t.info("sent-message-to-opencode-session:session")}catch(b){let a=v(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,e.N)(c)?(await (0,e.V1)(c,"/exit",!0),await new Promise(a=>setTimeout(a,s.KI)),await (0,e.N)(c)&&await (0,e.fY)(c)):await (0,e.fY)(c),(0,g.gm)(c),t.info("stopped-opencode-session:sessionname")}catch(a){throw t.error("session:stop-failed",{error:v(a)}),a}}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},31268:(a,b,c)=>{"use strict";c.d(b,{s:()=>K});var d=c(44265),e=c(57905);class f extends d.M{async isInstalled(){return await (0,e.zw)()}async isRunning(a,b){return await (0,e.Yq)(a,b)}async startSession(a,b,c){await (0,e.R7)({worktreeId:a,worktreePath:b,instanceId:c})}async sendMessage(a,b,c){await (0,e.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=`
|
|
1
|
+
exports.id=5959,exports.ids=[1296,5959,9358],exports.modules={60:(a,b,c)=>{"use strict";c.d(b,{Q:()=>f,b:()=>e});var d=c(26283);function e(a){return d.Md.test(a)&&!d.kD.test(a)}function f(a,b,c,d,e,g=!1){if(a=Math.max(0,a),"opencode"===d||"copilot"===d||g){let a=e(b);return a>=0?a+1:0}if("antigravity"===d){let c=e(b);return c>=0?c+1:Math.max(0,a)}if(a>=b||c){let a=e(40);return a>=0?a+1:0}if("codex"===d)return Math.max(0,a);if(a>=b-5){let a=e(50);return a>=0?a+1:Math.max(0,b-40)}return Math.max(0,a)}},2669:(a,b,c)=>{"use strict";c.d(b,{M7:()=>d,Sr:()=>g,mR:()=>h,su:()=>j,wQ:()=>i});let d="SESSION_STARTING",e="SESSION_START_FAILED",f=[d,e];class g extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}class h extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}function i(a){return k(a)===d}function j(a){let b=k(a);return void 0!==b&&f.includes(b)}function k(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},3523:(a,b,c)=>{"use strict";c.d(b,{z$:()=>C,zX:()=>D});var d=c(31766),e=c(88807),f=c(56791),g=c(69297),h=c(25129),i=c(18778),j=c(15194),k=c(8988),l=c(26283),m=c(72626),n=c(46423),o=c(93997),p=c(60),q=c(82450),r=c(56263),s=c(13033),t=c(72457),u=c(71080),v=c(45146),w=c(63865),x=c(2924);let y=(0,m.h)("response-poller");function z(a){return{response:"",isComplete:!1,lineCount:a}}function A(a,b,c,d,e,f,g,h=!1){let i=(0,p.Q)(b,c,d,e,f,h),j=a.slice(i);return{response:(0,l.aJ)(j.join("\n")),isComplete:!0,lineCount:c,promptDetection:g,bufferReset:d,captureWindowSaturated:h}}function B(a,b){let c=(0,l.KO)(b);return(0,h.gF)((0,l._A)((0,l.aJ)(a)),c)}function C(a,b,c,d=o.xE){let e=a.split("\n"),f=e.length;for(;f>0&&""===e[f-1].trim();)f--;let g=e.slice(0,f),h=g.length,i=(0,o.sl)(e.length,d),j="claude"===c?(0,l.GT)(g):-1,k=j>=0?j:h,m=h>0&&b>25&&h+25<b,q=h>0&&b>50&&h<50,r=m||q;if(!r&&h<b-5)return null;let s=Math.max(0,h-20),t=g.slice(s),u="opencode"===c?(0,l.aJ)(g.join("\n")):t.join("\n"),{promptPattern:w,separatorPattern:x,thinkingPattern:y,skipPatterns:D}=(0,l._X)(c),E=(a=60)=>{let b;if("codex"===c)b=/^›\s+(?!Implement|Find and fix|Type|Summarize)/;else if("opencode"===c){let b=0;for(let c=h-1;c>=Math.max(0,h-a);c--){let a=(0,l.aJ)(g[c]);if(l.Md.test(a)&&2==++b)return c}return -1}else b=/^[>❯]\s+\S/;for(let c=k-1;c>=Math.max(0,k-a);c--){let a=(0,l.aJ)(g[c]);if(b.test(a))return c}return -1};if("claude"===c||"codex"===c||"copilot"===c){let a=B(g.join("\n"),c);if(a.isPrompt)return A(g,b,h,r,c,E,a,i)}let F=(0,l.aJ)(u),G=w.test(F),H=x.test(F),I="codex"===c?(0,l.DR)(g,20):y.test(F),J=("codex"===c||"gemini"===c||"vibe-local"===c||"copilot"===c||"antigravity"===c)&&G&&!I,K="claude"===c&&G&&H&&!I,L="opencode"===c&&(0,p.b)(F);if(J||K||L){let a=[],d=(0,p.Q)(b,h,r,c,E,i),e=h;for(let b=d;b<k;b++){let d=g[b],f=(0,l.aJ)(d);if("codex"===c&&/^›\s+/.test(f)||"gemini"===c&&/^(%|\$|.*@.*[%$#])\s*$/.test(f)||"antigravity"===c&&/^>\s*$/.test(f)||"opencode"===c&&(l.sy.test(f)||l.uA.test(f))){e=b;break}D.some(a=>a.test(f))||a.push(d)}let f=a.join("\n").trim(),j=f.split("\n").slice(-n.$).join("\n");if(y.test(j))return z(h);if("claude"===c){let a=(0,l.aJ)(f),b=/[╭╮╰╯│]/.test(a)||/░{3,}/.test(a)||/▓{3,}/.test(a),c=/Claude Code|claude\/|v\d+\.\d+/.test(a),d=/Tip:|for shortcuts|\?\s*for help/.test(a),e=/^\s*\/Users\/.*$/m.test(a)&&a.split("\n").length<30,g=a.match(/^[>❯]\s+(\S.*)$/m);if(g){let b=a.indexOf(g[0]);if(0===a.substring(b+g[0].length).trim().split("\n").filter(a=>{let b=a.trim();return b&&!D.some(a=>a.test(b))&&!/^─+$/.test(b)}).length)return z(h)}else if((b||c||d||e)&&f.length<2e3)return z(h)}if("gemini"===c&&((f.match(/[░███]/g)||[]).length>.3*f.length||v.SI.some(a=>f.includes(a))||!f.includes("✦")&&f.length<10))return z(h);if("opencode"===c){let a=(0,l.aJ)(f);if((a.length<50||!l.Md.test(F))&&0===a.split("\n").filter(a=>{let b=a.trim();return b&&!l.sx.some(a=>a.test(b))}).length)return z(h)}return{response:f,isComplete:!0,lineCount:e,bufferReset:r,captureWindowSaturated:i}}if("opencode"!==c){let a=B(g.join("\n"),c);if(a.isPrompt)return A(g,b,h,r,c,E,a,i)}let M=[],N=r||i||b>=h-5,O=N?E(80):-1,P=N?O>=0?O+1:Math.max(0,h-80):Math.max(0,b);for(let a=P;a<Math.min(h,k);a++){let b=g[a],c=(0,l.aJ)(b);D.some(a=>a.test(c))||M.push(b)}let Q=M.join("\n").trim();return Q?{response:Q,isComplete:!1,lineCount:h}:z(h)}async function D(a,b,c){let h=(0,e.getDbInstance)(),m=c??b;try{let e=(0,f.Uim)(h,a);if(!e)return y.error("worktree-worktreeid-not"),(0,v.Et)(a,b,c),!1;if(!await (0,d.K1)(a,b,c))return y.info("session-not-running"),(0,v.Et)(a,b,c),!1;let p=(0,f.y1O)(h,a,m),z=p?.lastCapturedLine||0,A=await (0,d.Wh)(a,b,o.xE,c);if("opencode"===b||"copilot"===b){let d=(0,v.MN)(a,b,c);(0,s.IZ)(d,A,b)}let D=C(A,z,b,o.xE);if(!D||!D.isComplete){let{thinkingPattern:c}=(0,l._X)(b),d=(0,l.aJ)(A).split("\n").slice(-n.$).join("\n");return c.test(d)&&(0,f.PLg)(h,a,b,m)>0&&y.info("marked-answeredcount-pending"),!1}let E="opencode"===b||"copilot"===b,F=!(0,j.VA)(b)&&!D.captureWindowSaturated;if(F&&!D.bufferReset&&D.lineCount===z&&!p?.inProgressMessageId)return!1;if(F&&!D.bufferReset&&D.lineCount<=z)return y.info("already-saved-up-to-line-lastcapturedlin"),!1;let G=D.promptDetection??B(D.response,b);if(G.isPrompt){let d=G.rawContent||G.cleanContent,i=(0,v.MN)(a,b,c),j=(0,t.zm)(d,b);if((0,t.gv)(i,j))return y.info("duplicate-prompt-skipped",{worktreeId:a,cliToolId:b}),!1;let k=d;"copilot"===b&&(k=(0,q.LH)(d),k=(0,q.Sj)(k,r.Rf,r.ky)),(0,f.YXK)(h,a,b,m);let l=(0,f.oHS)(h,{worktreeId:a,role:"assistant",content:k,messageType:"prompt",promptData:G.promptData,timestamp:new Date,cliToolId:b,instanceId:m});return(0,f.PPx)(h,a,b,D.lineCount,m),(0,g.broadcastMessage)("message",{worktreeId:a,message:l}),(0,x.r)(h,a,b,m,"prompt_detected",{promptType:G.promptData?.type}),(0,w.J$)({worktreeId:a,worktreeName:e.name,kind:"prompt",agentName:m,excerpt:G.promptData?.question??k}).catch(()=>{}),E||(0,v.Et)(a,b,c),!0}if(!D.response||""===D.response.trim())return(0,f.PPx)(h,a,b,D.lineCount,m),!1;let H="claude"===b?(0,k.R)(D.response):void 0,I=D.response;if("gemini"===b)I=(0,q.IS)(D.response);else if("claude"===b)I=(0,q.NN)(D.response);else if("copilot"===b){let d=(0,v.MN)(a,b,c),e=(0,s.Uz)(d)||D.response;I=(0,q.LH)(e),I=(0,q.Sj)(I,r.Rf,r.ky),(0,s.q1)(d)}else if("opencode"===b){I=(0,q.aW)(D.response);let d=(0,v.MN)(a,b,c);(0,s.q1)(d)}if(!I||""===I.trim()||"[No content]"===I)return(0,f.PPx)(h,a,b,D.lineCount,m),(0,f.YXK)(h,a,b,m),!1;if(!F){let d=(0,v.MN)(a,b,c);if((0,u.j7)(d,I))return(0,f.PPx)(h,a,b,D.lineCount,m),!1}I&&await (0,i.T)(h,a,I,b),(0,f.PLg)(h,a,b,m)>0&&y.info("marked-answeredcount-pending");let J=(0,f.y1O)(h,a,m);if(F&&J&&D.lineCount<=J.lastCapturedLine)return y.info("race-condition-detected-skipping-save-re"),!1;let K=(0,f.oHS)(h,{worktreeId:a,role:"assistant",content:I,messageType:"normal",timestamp:new Date,cliToolId:b,instanceId:m,summary:H?.summary,logFileName:H?.logFileName,requestId:H?.requestId});return(0,g.broadcastMessage)("message",{worktreeId:a,message:K}),(0,w.J$)({worktreeId:a,worktreeName:e.name,kind:"completion",agentName:m,excerpt:I}).catch(()=>{}),(0,f.PPx)(h,a,b,D.lineCount,m),E&&(0,v.Et)(a,b,c),!0}catch(a){return y.error("response:check-failed",{error:a instanceof Error?a.message:String(a)}),!1}}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},8988:(a,b,c)=>{"use strict";c.d(b,{R:()=>g});let d=/📄 Session log: (.+?\/([^\/\s]+\.jsonl))/,e=/Request ID: ([^\s\n]+)/,f=/Summary: (.+?)(?:\n─|$)/s;function g(a){let b={content:a},c=d.exec(a);c&&(b.logFileName=c[2]);let g=e.exec(a);g&&(b.requestId=g[1]);let h=f.exec(a);return h&&(b.summary=h[1].trim()),b}},11508:(a,b,c)=>{"use strict";c.d(b,{H:()=>m,m:()=>n});var d=c(44265),e=c(11665),f=c(40236),g=c(93997),h=c(26283),i=c(72626),j=c(20610);let k=(0,i.h)("cli-tools/gemini");function l(a){return a instanceof Error?a.message:String(a)}let m=200;class n extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,e.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("Gemini CLI is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,e.N)(d)){await this.reconcileExistingSession(d),k.info("gemini-session-sessionname");return}try{await (0,e.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,j.Uc)),await (0,e.V1)(d,"gemini",!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),k.info("started-gemini-session:sessionname")}catch(b){let a=l(b);throw Error(`Failed to start Gemini session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,e.Xg)(a,m),d=(0,h.aJ)(c);if(h.wN.test(d))return void k.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,e.ds)(a,"Enter"),b=!0,k.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}k.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,e.Xg)(a,m),c=(0,h.aJ)(b);if(h.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}k.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,e.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,f.FW)({sessionName:d,message:b,cliToolId:"gemini"}),(0,g.gm)(d),k.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=l(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,e.N)(c)&&(await (0,e.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,j.Is)),await (0,e.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,j.Zf))),await (0,e.fY)(c)&&k.info("stopped-gemini-session:sessionname")}catch(a){throw k.error("session:stop-failed",{error:l(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}},11665:(a,b,c)=>{"use strict";c.d(b,{Ce:()=>w,GW:()=>n,KB:()=>r,N:()=>m,N6:()=>y,Sb:()=>z,V1:()=>p,Xg:()=>s,ds:()=>v,fY:()=>t,jw:()=>o,lA:()=>k,zT:()=>l});var d=c(79646),e=c(28354),f=c(93997),g=c(16983),h=c(72626);let i=(0,e.promisify)(d.execFile),j=(0,h.h)("tmux");function k(a){return`=${a}:`}async function l(a,b={}){let c,d,e,f=b.windowWidth??g.Jn,h=b.windowHeight??g.sO,m=k(a);try{c=(await i("tmux",["show-window-options","-v","-t",m,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await i("tmux",["display-message","-p","-t",m,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let n="manual"===c,o=d===f&&e===h;if(n&&o)return!1;try{return n||await i("tmux",["set-window-option","-t",m,"window-size","manual"],{timeout:5e3}),o||await i("tmux",["resize-window","-t",m,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return j.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function m(a){try{return await i("tmux",["has-session","-t",k(a)],{timeout:5e3}),!0}catch{return!1}}async function n(){try{let{stdout:a}=await i("tmux",["list-sessions","-F","#{session_name}|#{session_windows}|#{session_attached}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.trim().split("\n").map(a=>{let[b,c,d]=a.split("|");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d}})}catch{return[]}}async function o(a,b){let c,d,e,f,h;"string"==typeof a?(c=a,d=b,e=g.eu,f=g.Jn,h=g.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||g.eu,f=a.windowWidth||g.Jn,h=a.windowHeight||g.sO);try{await i("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(h)],{timeout:5e3}),await i("tmux",["set-option","-t",k(c),"history-limit",String(e)],{timeout:5e3});try{await i("tmux",["new-window","-k","-t",`${k(c)}0`,"-c",d],{timeout:5e3})}catch(a){j.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)})}await l(c,{windowWidth:f,windowHeight:h})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}}async function p(a,b,c=!0){let d=c?["send-keys","-t",k(a),b,"C-m"]:["send-keys","-t",k(a),b];try{await i("tmux",d,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send keys to tmux session: ${a}`)}}let q=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC","PageUp","PageDown","Home","End","q"]);async function r(a,b){if(0!==b.length){for(let a of b)if(!q.has(a))throw Error(`Invalid special key: ${a}`);try{for(let c=0;c<b.length;c++)await i("tmux",["send-keys","-t",k(a),b[c]],{timeout:5e3}),c<b.length-1&&await new Promise(a=>setTimeout(a,100))}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special keys to tmux session: ${a}`)}}}async function s(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await i("tmux",["capture-pane","-t",k(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function t(a){try{return await i("tmux",["kill-session","-t",k(a)],{timeout:5e3}),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let u=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function v(a,b){if(!u.has(b))throw Error(`Invalid special key: ${b}`);try{await i("tmux",["send-keys","-t",k(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function w(a){try{await i("tmux",["send-keys","-t",k(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}let x=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q"];function y(a){return x.includes(a)}async function z(a,b){await r(a,b),(0,f.gm)(a)}},13033:(a,b,c)=>{"use strict";c.d(b,{IW:()=>h,IZ:()=>l,K0:()=>g,Uz:()=>m,l1:()=>f,o0:()=>i,q1:()=>n,tb:()=>k,vQ:()=>j});var d=c(26283);let e=new Map;function f(a){return(0,d._A)((0,d.aJ)(a)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}function g(a){let b=a.split("\n"),c=[];for(let a of b){let b=f(a);!(!b||d.sx.some(a=>a.test(b)))&&(d.Md.test(b)||c.push(b))}return c}function h(a){return a.replace(/[\u2500-\u257F]/g,"").replace(/\s{2,}/g," ").trim()}function i(a){let b=(0,d.aJ)(a).split("\n"),c=[];for(let a of b){let b=h(a);b&&(d.J7.some(a=>a.test(b))||c.push(b))}return c}function j(a,b){if(0===a.length||0===b.length)return 0;let c=Math.min(a.length,b.length);for(let d=c;d>=1;d--){let c=a.slice(-d),e=b.slice(0,d),f=!0;for(let a=0;a<d;a++)if(c[a]!==e[a]){f=!1;break}if(f)return d}return 0}function k(a){e.set(a,{lines:[],lastFingerprint:[],pollCount:0})}function l(a,b,c="opencode"){let d=e.get(a);if(!d)return;let f="copilot"===c?i(b):g(b);if(0!==f.length){if(d.pollCount++,0===d.lines.length)d.lines=[...f];else{let a=j(d.lastFingerprint,f);if(a>0){let b=f.slice(a);d.lines.push(...b)}else d.lines.push(...f)}d.lastFingerprint=f.slice(-10)}}function m(a){let b=e.get(a);return b&&0!==b.lines.length?b.lines.join("\n"):""}function n(a){e.delete(a)}},18778:(a,b,c)=>{"use strict";c.d(b,{T:()=>g});var d=c(56791),e=c(41364);let f=(0,c(72626).h)("conversation-logger");async function g(a,b,c,h="claude"){let i=(0,d.r8U)(a,b);if(i)try{await (0,e.hM)(b,i.content,c,h)}catch(a){f.error("conversation:log-failed",{error:a instanceof Error?a.message:String(a)})}}},18896:(a,b,c)=>{"use strict";c.d(b,{v7:()=>d.v7,LP:()=>d.LP,pL:()=>d.pL,GE:()=>d.GE,aq:()=>d.aq,kC:()=>d.kC,xU:()=>y,bZ:()=>z,W8:()=>d.W8,W5:()=>F,_i:()=>G,_C:()=>H});var d=c(24455),e=c(31766),f=c(25129),g=c(68901),h=c(56791),i=c(88807),j=c(72626);let k=(0,j.h)("auto-yes-policy"),l=new Map;var m=c(52277),n=c(2924),o=c(52660),p=c(63869),q=c(31268),r=c(26283),s=c(77093),t=c(93997),u=c(66007);let v=(0,j.h)("auto-yes-poller"),w=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function x(a){return w.get(a)}function y(a){let b=x(a);return b?.lastServerResponseTimestamp??null}function z(a){return w.has(a)}function A(a){let b=x(a);if(b&&(b.consecutiveErrors++,b.currentInterval=(0,d.G)(b.consecutiveErrors),b.consecutiveErrors>=g.ul)){let b=(0,d.Ue)(a),c=(0,d.pL)(a);c&&(0,d.XK)(b,c,"consecutive_errors",(0,d.GE)(a)??void 0),G(a)}}async function B(a,b,c,d){let f=c??g.FW,h=await (0,e.Wh)(a,b,f,d);return(0,r._A)((0,r.aJ)(h))}async function C(a,b,e,j,u,w){let y=(0,d.v7)(a,e,w);try{let A=(0,r.KO)(e),C=(0,f.gF)(j,{...A,...u&&{precomputedLines:u}});if(!C.isPrompt||!C.promptData)return b.lastAnsweredPromptKey=null,b.lastAnsweredAt=null,"no_prompt";let D=(z=C.promptData,`${z.type}:${z.question}`);if(b.lastAnsweredPromptKey===D&&null!==b.lastAnsweredAt&&Date.now()-b.lastAnsweredAt<d.UL)return"duplicate";let E=function(a,b,c){let e=c??b,f=(0,d.v7)(a,b,e),g=Date.now(),j=l.get(f);if(j&&j.expiresAt>g)return j.policy;let m=function(a,b,c){try{let d=(0,h.MHq)((0,i.getDbInstance)(),a,b,c);if(!d)return null;return d.contract.autoYes}catch(d){return k.warn("policy-lookup-failed",{worktreeId:a,cliToolId:b,instanceId:c,error:d instanceof Error?d.message:String(d)}),null}}(a,b,e);return l.size>=200&&function(a){for(let[b,c]of l.entries())c.expiresAt<=a&&l.delete(b)}(g),l.set(f,{policy:m,expiresAt:g+5e3}),m}(a,e,w),F=function(a,b){let c=function(a){if("yes_no"===a.type)return"y";if("multiple_choice"===a.type){let b=a.options.find(a=>a.isDefault)??a.options[0];return!b||b.requiresTextInput?null:b.number.toString()}return null}(a);if(null===c)return{answer:null,suppressedBy:null};let d=function(a,b){if(!b)return null;if("off"===b.mode)return{reason:"mode-off"};let c=function(a,b){if(0===b.length)return{outcome:"no-match"};let c=function(a){let b=[a.question];if(a.approvalTarget&&b.push(a.approvalTarget),"multiple_choice"===a.type)for(let c of a.options)b.push(c.label);else b.push(...a.options);return b.map(a=>a.length>2e4?a.slice(0,2e4):a)}(a);for(let a of b){if(a.length>200||!(0,g.P0)(a).valid)return{outcome:"unusable",pattern:a};let b=new RegExp(a);for(let d of c){let c=(0,g.eJ)(b,d);if(null===c)return{outcome:"unusable",pattern:a};if(c)return{outcome:"match",pattern:a}}}return{outcome:"no-match"}}(a,b.denyPatterns);return"match"===c.outcome?{reason:"deny-pattern",pattern:c.pattern}:"unusable"===c.outcome?{reason:"deny-pattern-unusable",pattern:c.pattern}:"safe"===b.mode?"yes_no"===a.type?null:{reason:"type-not-allowed"}:"allow-listed"===b.mode?b.allowPromptTypes.includes(a.type)?null:{reason:"type-not-allowed"}:null}(a,b);return d?{answer:null,suppressedBy:d.reason,pattern:d.pattern}:{answer:c,suppressedBy:null}}(C.promptData,E);F.suppressedBy&&((0,m.ZS)(a,e,w,{reason:F.suppressedBy,mode:E?.mode??null,promptType:C.promptData.type,pattern:F.pattern}),v.warn("poller:auto-yes-suppressed-by-policy",{worktreeId:a,cliToolId:e,instanceId:w,reason:F.suppressedBy,mode:E?.mode??null,pattern:F.pattern,promptType:C.promptData.type}));let G=F.answer;if(null===G)return"no_answer";let H=q.s.getInstance().getTool(e).getSessionName(a,w);try{await (0,p.t)({sessionName:H,answer:G,cliToolId:e,promptData:C.promptData})}finally{(0,t.gm)(H)}var z,B=Date.now();let I=x(y);I&&(I.lastServerResponseTimestamp=B);let J=x(y);J&&(J.consecutiveErrors=0,J.currentInterval=d.ps),b.lastAnsweredPromptKey=D,b.lastAnsweredAt=Date.now(),v.info("poller:response-sent",{worktreeId:a,cliToolId:e,instanceId:w}),(0,n.r)((0,i.getDbInstance)(),a,e,w??e,"prompt_answered_auto",{promptType:C.promptData.type});let K=null;try{K=(0,o.pG)((0,i.getDbInstance)(),{worktreeId:a,cliToolId:e,instanceId:w??e,promptData:C.promptData,answer:G,answeredBy:"auto",content:C.rawContent||C.cleanContent})}catch(b){v.warn("poller:prompt-audit-record-failed",{worktreeId:a,cliToolId:e,instanceId:w,error:(0,s.u1)(b)})}if(K){let b=K;Promise.resolve().then(c.bind(c,69297)).then(({broadcastMessage:c})=>{c(b.created?"message":"message_updated",{worktreeId:a,message:b.message})}).catch(()=>{})}let[{startPolling:L},{broadcastTerminalSnapshotAfterInteraction:M}]=await Promise.all([Promise.resolve().then(c.bind(c,95220)),Promise.resolve().then(c.bind(c,99508))]);return L(a,e,w),M(a,e,w),"responded"}catch{return A(y),v.warn("poller:detect-respond-error",{worktreeId:a,cliToolId:e,instanceId:w}),"error"}}async function D(a,b,c){let e=(0,d.v7)(a,b,c),f=x(e);if("valid"===function(a,b){if(!b)return"stopped";let c=(0,d.Ue)(a),e=(0,d.pL)(a);if(!e)return G(a),"expired";let f=(0,d.GE)(a)??void 0,g=(0,d.aq)(c,e,f);return g?.enabled?"valid":(G(a),"expired")}(e,f)){try{let h=(0,d.aq)(a,b,c),i=h?.stopPattern?g.FW:g.Ke,j=await B(a,b,i,c),k=j.split("\n");if(function(a,b,c){if(b.stopCheckBaselineLength<0)return b.stopCheckBaselineLength=c.length,!1;let e=b.stopCheckBaselineLength;if(c.length>e){let f=c.substring(e);return b.stopCheckBaselineLength=c.length,(0,d.Cs)(a,f,G)}return c.length<e&&(b.stopCheckBaselineLength=c.length),!1}(e,f,j))return;let l=await C(a,f,b,j,k,c);if("responded"===l)return void E(a,b,c,d.ZO);if("no_prompt"===l){let e=k.slice(-d.Re).join("\n");if((0,r.ut)(b,e))return void E(a,b,c,g.QN)}}catch(d){A(e),v.warn("poller:poll-error",{worktreeId:a,cliToolId:b,instanceId:c,error:(0,s.u1)(d)})}E(a,b,c)}}function E(a,b,c,e){let f=x((0,d.v7)(a,b,c));if(!f)return;let g=Math.max(e??f.currentInterval,d.ps);f.timerId=setTimeout(()=>{D(a,b,c)},g)}function F(a,b,c){if(!(0,u.h6)(a))return{started:!1,reason:"invalid worktree ID"};let e=c??b,f=(0,d.aq)(a,b,e);if(!f?.enabled)return{started:!1,reason:"auto-yes not enabled"};let g=(0,d.v7)(a,b,e),h=x(g);if(!h&&w.size>=d.fC)return{started:!1,reason:"max concurrent pollers reached"};if(h&&h.cliToolId===b)return{started:!0,reason:"already_running"};h&&G(g);let i={timerId:null,cliToolId:b,instanceId:e,consecutiveErrors:0,currentInterval:d.ps,lastServerResponseTimestamp:null,lastAnsweredPromptKey:null,lastAnsweredAt:null,stopCheckBaselineLength:-1};return w.set(g,i),l.delete(g),i.timerId=setTimeout(()=>{D(a,b,e)},d.ps),v.info("poller:started",{worktreeId:a,cliToolId:b,instanceId:e}),{started:!0}}function G(a){let b=x(a);b&&(b.timerId&&clearTimeout(b.timerId),w.delete(a),l.delete(a),v.info("poller:stopped",{compositeKey:a}))}function H(a){(0,d._9)(Array.from(w.keys()),a).forEach(a=>G(a))}},20610:(a,b,c)=>{"use strict";c.d(b,{CV:()=>i,Em:()=>l,Is:()=>g,KI:()=>j,PY:()=>k,Uc:()=>d,Zf:()=>h,pL:()=>e,x9:()=>f});let d=100,e=100,f=200,g=300,h=500,i=500,j=2e3,k=200,l=100},21684:(a,b,c)=>{"use strict";c.d(b,{U:()=>g});var d=c(33873),e=c.n(d),f=c(87447);function g(){return(0,f._p)("CM_LOG_DIR")||e().join(process.cwd(),"data","logs")}},25129:(a,b,c)=>{"use strict";c.d(b,{gF:()=>F,xn:()=>y});var d=c(72626),e=c(68652),f=c(26283);let g=/^\s*[\u276F\u25CF\u203A][^\d]*(\d+)(?:\.(?!\d)|\s{2,})\s*(.+)$/,h=/^\s*[^\d]{0,3}(\d+)(?:\.(?!\d)|\s+)\s*(.+)$/,i=/^[-─]+$/,j=/^\s*\[[^\]]*\d+\s+lines?\]/i,k=/^\s*[…]?\s*[+\-↑↓⏵⏷]?\s*\d+\s+(?:pending|more)\b/i,l=/Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,m=/Enter\s+to\s+select\b.*\bnavigate\b/i,n=/press\s+(?:enter|number)\s+to\s+confirm/i,o=/press\s+number\s+to\s+confirm/i,p=/(?:select|choose|pick|which|what|how|where|enter|type|specify|confirm|approve|accept|reject|decide|preference|option)/i,q=[/type\s+here/i,/tell\s+(me|claude)/i,/enter\s+/i,/custom/i,/differently/i];function r(a,b){if(0===b.length)return!0;let c=b[0].number;return a<c&&a>=c-2}function s(a){return{isPrompt:!1,cleanContent:a.trim()}}function t(a){return 0!==a.length&&!!(a.includes("?")||a.includes("?")||p.test(a))}function u(a,b){let c=b.endsWith("?")||b.endsWith("?");return!!(!c&&/^\s{2,}[^\d]/.test(a)&&!/^\s*\d+\./.test(a)||!c&&/^\s{4,}/.test(a)&&!/^\s*\d+\.\s/.test(a)||b.length<5&&!c||/^[\/~]/.test(b)||b.length>=2&&/^[a-zA-Z0-9_-]+$/.test(b))}let v=/^[⏺⎿●○•✔✓✖✗✘›»❯└├>]/;function w(a,b){let c=Math.max(0,b-12);for(let d=b-1;d>=c;d--)if(function(a){if(void 0===a)return!1;let b=a.trim();return""!==b&&(v.test(b)||i.test(b))}(a[d]))return d+1;return c}function x(a,b,c){let d=a.slice(b,c).map(a=>a.trimEnd()).join("\n").trim();return d.length>0?d:void 0}function y(a,b="yes_no"){let c=a.toLowerCase().trim();if("multiple_choice"===b){if(/^\d+$/.test(c))return c;throw Error("Invalid answer for multiple choice prompt. Expected a number.")}if("yes"===c||"y"===c)return"y";if("no"===c||"n"===c)return"n";throw Error("Invalid answer for yes/no prompt. Expected 'yes', 'no', 'y', or 'n'.")}let z=(0,d.h)("prompt-detector"),A=null;function B(a){let b=a.split("\n"),c=(b.length>200?b.slice(-200):b).join("\n");return c.length>5e3&&(c=c.slice(-5e3)),c}let C=[{regex:/^(.+)\s+\(y\/n\)\s*$/m},{regex:/^(.+)\s+\[y\/N\]\s*$/m,defaultOption:"no"},{regex:/^(.+)\s+\[Y\/n\]\s*$/m,defaultOption:"yes"},{regex:/^(.+)\s+\(yes\/no\)\s*$/m}];function D(a,b,c,d){let{startLine:e,endLine:f}=function(a,b,c){let d=c.index??0,e=a=>a.split("\n").length-1,f=b+e(a.slice(0,d));return{startLine:f,endLine:f+e(c[0])}}(b,c,d);return x(a,w(a,e),f+1)}function E(a,b,c,d,e){return{isPrompt:!0,promptData:{type:"yes_no",question:a,options:["yes","no"],status:"pending",...void 0!==e&&{defaultOption:e},instructionText:c,...void 0!==d&&{approvalTarget:d}},cleanContent:b,rawContent:c}}function F(a,b){let c=(0,e.N)(a),d=c===a&&b?.precomputedLines?b.precomputedLines:c.split("\n"),p=d.slice(-50).join("\n"),v=p===A;v||z.debug("detectPrompt:start",{outputLength:c.length}),A=p;let y=d.slice(-20).join("\n"),F=Math.max(0,d.length-20),G=function(a,b,c){a=(0,e.N)(a);let d=b?.requireDefaultIndicator??!0,p=a.split("\n"),v=p.length;for(;v>0&&""===p[v-1].trim();)v--;let y=Math.max(0,v-50),z=!1;for(let a=v-1;a>=y;a--){let b=m.test(p[a]);if(l.test(p[a])||b){v=a,z=b;break}}let A=p.slice(y,v);for(let b of A)if(f.l8.test(b))return s(a);let B=!1,C=!1;for(let a of A){let b=a.trim();if(!B&&n.test(b)){B=!0,o.test(b)&&(C=!0);break}}if(d){let b=!1;for(let a of A){let c=a.trim();if(g.test(c)){b=!0;break}}if(!b&&!B)return s(a)}let D=[],E=-1,F=0;for(let b=v-1;b>=y;b--){let c=p[b].trim();if(j.test(c)||k.test(c)){F++;continue}let d=c.match(g);if(d){let a=parseInt(d[1],10);if(a<=20&&r(a,D)){let b=d[2].trim();D.unshift({number:a,label:b,isDefault:!0}),F=0;continue}}let e=c.match(h);if(e){let a=parseInt(e[1],10);if(a>20);else if(r(a,D)){let b=e[2].trim();D.unshift({number:a,label:b,isDefault:!1}),F=0;continue}}if(0===D.length&&(c.startsWith("❯")||c.startsWith("●")||c.startsWith("›")))return s(a);if(D.length>0&&c&&!i.test(c)){let a=p[b];if(/^\s{4,}/.test(a)&&u(a,c)){if(++F>25){E=b;break}continue}if(t(c)){E=b;break}if(u(a,c)){if(++F>(/^\s{4,}/.test(a)?25:5)){E=b;break}continue}E=b;break}}if(!function(a){if(0===a.length||1!==a[0])return!1;let b=0;for(let c=1;c<a.length;c++){let d=a[c]-a[c-1];if(d<1||d>2||(2===d&&b++,b>1))return!1}return!0}(D.map(a=>a.number)))return s(a);let G=D.some(a=>a.isDefault),H=d&&B;if(D.length<2||d&&!G&&!H||!d&&!G&&(-1===E||!t(p[E]?.trim()??"")&&!function(a,b,c,d){let e=Math.max(d,b-3);for(let c=b-1;c>=e;c--){let b=a[c]?.trim()??"";if(!(!b||i.test(b))&&t(b))return!0}return!1}(p,E,0,y)))return s(a);let I=function(a,b){if(b<0)return"Please select an option:";let c=[];for(let d=Math.max(0,b-5);d<=b;d++){let b=a[d].trim();b&&!i.test(b)&&c.push(b)}return c.join(" ")}(p,E),J=function(a,b,c){if(b<0)return;let d=Math.max(0,b-19),e=a.slice(d,c).map(a=>a.trimEnd()).join("\n").trim();return e.length>0?e:void 0}(p,E,v),K=function(a,b,c){if(!(b<0))return x(a,w(a,b),c)}(p,E,v);var L=a,M=B?C?"answer_only":"answer_then_enter":void 0,N=z;let{instructionText:O,approvalTarget:P}={instructionText:J,approvalTarget:K}??{};return{isPrompt:!0,promptData:{type:"multiple_choice",question:I.trim(),options:D.map(a=>{let b=q.some(b=>b.test(a.label));return{number:a.number,label:a.label,isDefault:a.isDefault,requiresTextInput:b}}),status:"pending",instructionText:O,...void 0!==P?{approvalTarget:P}:{},...M?{submitMode:M}:{},...N?{isAskUserQuestion:!0}:{}},cleanContent:I.trim(),rawContent:c(L.trim())}}(c,b,B);if(G.isPrompt)return v||z.info("detectPrompt:multipleChoice",{isPrompt:!0,question:G.promptData?.question,optionsCount:G.promptData?.options?.length}),G;let H=y.trim();for(let a of C){let b=y.match(a.regex);if(b){let c=b[1].trim();return E(c,c,H,D(d,y,F,b),a.defaultOption)}}let I=y.match(/^(.*?)Approve\?\s*$/m);if(I){let a=I[1].trim();return E(a?`${a} Approve?`:"Approve?",a||"Approve?",H,D(d,y,F,I))}return v||z.debug("detectPrompt:complete",{isPrompt:!1}),{isPrompt:!1,cleanContent:c.trim()}}},25754:(a,b,c)=>{"use strict";c.d(b,{Xn:()=>e,d9:()=>g,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},26838:(a,b,c)=>{"use strict";c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.21.1"}function k(){return j()}async function l(){try{var a,b,c;if(null!==i.result&&Date.now()-i.fetchedAt<36e5||i.rateLimitResetAt&&(!(Date.now()>=i.rateLimitResetAt)||(i.rateLimitResetAt=null,0)))return i.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${k()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?i.rateLimitResetAt=1e3*parseInt(b,10):i.rateLimitResetAt=Date.now()+36e5}(d),i.result;if(!d.ok)return i.result;let e=await d.json(),j=k(),l=e.tag_name.replace(/^v/,""),m={hasUpdate:function(a,b){if(!g.test(a)||!g.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[h,i,j]=c(b);return h!==d?h>d:i!==e?i>e:j>f}(j,e.tag_name),currentVersion:j,latestVersion:l,releaseUrl:(a=e.html_url).startsWith(f.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,h.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return i.result=m,i.fetchedAt=Date.now(),m}catch{return i.result}}},30618:(a,b,c)=>{"use strict";c.d(b,{xT:()=>w,Ui:()=>x});var d=c(44265),e=c(11665),f=c(40236),g=c(93997),h=c(29021),i=c(33873),j=c(72626);let k=(0,j.h)("cli-tools/opencode-config"),l=/^[a-zA-Z0-9._:/-]{1,100}$/,m=/^[a-zA-Z0-9._:/@-]{1,200}$/;async function n(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return k.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return k.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return k.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&l.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?k.warn("ollama-api-timeout"):k.warn("failed-to-fetch")}return a}async function o(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return k.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return k.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return k.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&m.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?k.warn("lm-studio-api"):k.warn("failed-to-fetch")}return a}async function p(a){let b=function(a){let b=i.resolve(a);try{if(!h.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return h.realpathSync(b)}(a),c=i.join(b,"opencode.json");if(h.existsSync(c))return;let[d,e]=await Promise.all([n(),o()]),f={};if(Object.keys(d).length>0&&(f.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:d}),Object.keys(e).length>0&&(f.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:e}),0!==Object.keys(f).length)try{h.writeFileSync(c,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:f},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return;k.warn("failed-to-write-opencodejson:error-insta")}}var q=c(79646),r=c(28354),s=c(20610);let t=(0,j.h)("cli-tools/opencode"),u=(0,r.promisify)(q.execFile);function v(a){return a instanceof Error?a.message:String(a)}let w=200;class x extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,e.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("OpenCode is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,e.N)(d)){await this.reconcileExistingSession(d,{windowWidth:80,windowHeight:w}),t.info("opencode-session-sessionname");return}try{await p(b),await (0,e.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc));try{await u("tmux",["resize-window","-t",(0,e.lA)(d),"-x","80","-y",String(w)])}catch{}await (0,e.V1)(d,"opencode",!0),await new Promise(a=>setTimeout(a,15e3)),t.info("started-opencode-session:sessionname")}catch(b){let a=v(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,e.N)(d))throw Error(`OpenCode session ${d} does not exist. Start the session first.`);try{await (0,f.FW)({sessionName:d,message:b,cliToolId:"opencode"}),(0,g.gm)(d),t.info("sent-message-to-opencode-session:session")}catch(b){let a=v(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,e.N)(c)?(await (0,e.V1)(c,"/exit",!0),await new Promise(a=>setTimeout(a,s.KI)),await (0,e.N)(c)&&await (0,e.fY)(c)):await (0,e.fY)(c),(0,g.gm)(c),t.info("stopped-opencode-session:sessionname")}catch(a){throw t.error("session:stop-failed",{error:v(a)}),a}}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},31268:(a,b,c)=>{"use strict";c.d(b,{s:()=>K});var d=c(44265),e=c(57905);class f extends d.M{async isInstalled(){return await (0,e.zw)()}async isRunning(a,b){return await (0,e.Yq)(a,b)}async startSession(a,b,c){await (0,e.R7)({worktreeId:a,worktreePath:b,instanceId:c})}async sendMessage(a,b,c){await (0,e.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=`
|
|
2
2
|
`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,e.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var g=c(11665),h=c(40236),i=c(93997),j=c(26283),k=c(72626),l=c(20610);let m=(0,k.h)("cli-tools/codex");function n(a){return a instanceof Error?a.message:String(a)}class o extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("Codex CLI is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),m.info("codex-session-sessionname");return}try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,l.Uc)),await (0,g.V1)(d,"codex",!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d),m.info("started-codex-session:sessionname")}catch(b){let a=n(b);throw Error(`Failed to start Codex session: ${a}`)}}async waitForReady(a){let b=!1,c=!1;for(let d=0;d<30;d++){try{let d=await (0,g.Xg)(a,50),e=(0,j.aJ)(d);if((0,j.zZ)(e))return void m.info("codex-prompt-detected");let f=(0,j.Qh)(e);if("update"===f&&!b){await (0,g.V1)(a,"2",!1),b=!0,m.info("skipped-codex-update"),await new Promise(a=>setTimeout(a,l.CV));continue}if("press-enter"===f){await (0,g.ds)(a,"Enter"),m.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,l.CV));continue}if("trust"===f&&!c){await (0,g.V1)(a,"1",!1),c=!0,m.info("auto-trusted-folder-for"),await new Promise(a=>setTimeout(a,l.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}m.info("codex-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if((0,j.zZ)(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw m.info("codex-prompt-not"),Error("Codex prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Codex session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"codex"}),(0,i.gm)(d),m.info("sent-message-to-codex-session:sessionnam")}catch(b){let a=n(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,l.Zf))),await (0,g.fY)(c)&&m.info("stopped-codex-session:sessionname")}catch(a){throw m.error("session:stop-failed",{error:n(a)}),a}}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var p=c(11508),q=c(15194),r=c(88807),s=c(56791);let t=(0,k.h)("cli-tools/vibe-local");function u(a){return a instanceof Error?a.message:String(a)}class v extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("vibe-local is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),t.info("vibe-local-session");return}try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,l.Uc));let c="vibe-local -y";try{let b=(0,r.getDbInstance)(),d=(0,s.Uim)(b,a);d?.vibeLocalModel&&q.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,q.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,g.V1)(d,c,!0),await new Promise(a=>setTimeout(a,5e3)),t.info("started-vibe-local-session:sessionname")}catch(b){let a=u(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Vibe Local session ${d} does not exist. Start the session first.`);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"vibe-local",submitEnterCount:2,interEnterWaitMs:l.PY}),(0,i.gm)(d),t.info("sent-message-to-vibe-local-session:sessi")}catch(b){let a=u(b);throw Error(`Failed to send message to Vibe Local: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,l.Is)),await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,l.Zf))),await (0,g.fY)(c)&&t.info("stopped-vibe-local-session:sessionname")}catch(a){throw t.error("session:stop-failed",{error:u(a)}),a}}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var w=c(30618),x=c(79646),y=c(56263),z=c(77093);let A=(0,k.h)("cli-tools/copilot"),B=new Set(["model","agent","theme"]);class C extends d.M{async isInstalled(){try{return await new Promise((a,b)=>{(0,x.execFile)("gh",["--version"],{timeout:5e3},c=>{c?b(c):a()})}),await new Promise((a,b)=>{(0,x.execFile)("gh",["copilot","--help"],{timeout:5e3},c=>{c?b(c):a()})}),!0}catch{return!1}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c){if(!await this.isInstalled())throw Error("GitHub Copilot CLI is not installed. Install with: gh extension install github/gh-copilot");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),A.info("copilot-session-exists");return}try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,l.Uc)),await (0,g.V1)(d,"gh copilot",!0),await new Promise(a=>setTimeout(a,4e3)),await this.waitForReady(d),A.info("started-copilot-session")}catch(b){let a=(0,z.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}async waitForReady(a){for(let b=0;b<30;b++){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(j.Du.test(c))return void A.info("copilot-prompt-detected")}catch{}await new Promise(a=>setTimeout(a,1e3))}A.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3){let c=Date.now();for(;Date.now()-c<b;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(j.Du.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}A.info("copilot-prompt-not-detected")}extractSlashCommand(a){let b=a.trim();if(!b.startsWith("/"))return null;let c=b.match(/^\/(\S+)/);return c?c[1]:null}async waitForSelectionList(a){let b=Date.now();for(;Date.now()-b<5e3;){await new Promise(a=>setTimeout(a,300));try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(j.Mi.test(c))return A.info("copilot-selection-list-detected"),!0}catch{}}return A.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&B.has(a)){await (0,g.V1)(d,b,!0),await this.waitForSelectionList(d),(0,i.gm)(d),A.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,h.FW)({sessionName:d,message:b,cliToolId:"copilot",textInputWaitMs:y.L1,verifyDelayMs:y.wp}),(0,i.gm)(d),A.info("sent-message-to-copilot-session")}catch(b){let a=(0,z.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await (0,g.V1)(d,`/model ${b}`,!0),await this.waitForSelectionList(d)&&await (0,g.ds)(d,"C-m"),await this.waitForPrompt(d,y.pL),(0,i.gm)(d),A.info("copilot-model-switched",{model:b})}catch(c){let a=(0,z.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,l.Is)),await (0,g.V1)(c,"exit",!0),await new Promise(a=>setTimeout(a,l.Zf))),await (0,g.fY)(c)&&A.info("stopped-copilot-session")}catch(a){throw A.error("session:stop-failed",{error:(0,z.u1)(a)}),a}}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="gh"}}let D=(0,k.h)("cli-tools/antigravity");function E(a){return a instanceof Error?a.message:String(a)}let F=/\?\s+for\s+shortcuts/,G=/Do you trust the contents of this project\?/;function H(a){return F.test(a)&&!G.test(a)}class I extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c,d){if(!await this.isInstalled())throw Error("Antigravity CLI (agy) is not installed or not in PATH");let e=this.getSessionName(a,c);if(await (0,g.N)(e)){await this.reconcileExistingSession(e),D.info("antigravity-session-exists");return}try{await (0,g.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,l.Uc));let a=d?`agy --model '${d.replace(/'/g,"'\\''")}'`:"agy";await (0,g.V1)(e,a,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),D.info("started-antigravity-session")}catch(b){let a=E(b);throw Error(`Failed to start Antigravity session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,g.Xg)(a,50),d=(0,j.aJ)(c);if(H(d))return void D.info("antigravity-prompt-detected");if(!b&&G.test(d)){await (0,g.ds)(a,"Enter"),b=!0,D.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}D.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(H(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw D.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Antigravity session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"antigravity"}),(0,i.gm)(d),D.info("sent-message-to-antigravity-session")}catch(b){let a=E(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,l.Zf)));let a=await (0,g.fY)(c);(0,i.gm)(c),a&&D.info("stopped-antigravity-session")}catch(a){throw D.error("session:stop-failed",{error:E(a)}),a}}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var J=c(95220);class K{constructor(){this.tools=new Map,this.tools.set("claude",new f),this.tools.set("codex",new o),this.tools.set("gemini",new p.m),this.tools.set("vibe-local",new v),this.tools.set("opencode",new w.Ui),this.tools.set("copilot",new C),this.tools.set("antigravity",new I)}static getInstance(){return K.instance||(K.instance=new K),K.instance}getTool(a){let b=this.tools.get(a);if(!b)throw Error(`CLI tool '${a}' not found`);return b}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(a){let b=this.getTool(a),c=await b.isInstalled();return{id:b.id,name:b.name,command:b.command,installed:c}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async a=>{let b=await a.isInstalled();return{id:a.id,name:a.name,command:a.command,installed:b}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(a=>a.installed)}stopPollers(a,b,c){(0,J.stopPolling)(a,b,c)}}},31766:(a,b,c)=>{"use strict";c.d(b,{Wh:()=>p,WD:()=>q,K1:()=>o});var d=c(31268),e=c(72626),f=c(11665);let g={streamingOutput:!1,explicitResize:!1,snapshotFallback:!0};class h{async unsubscribe(){}}class i{async ensureSession(a,b){await (0,f.N)(a)||await (0,f.jw)(a,b)}async sessionExists(a){return(0,f.N)(a)}async sendInput(a,b){await (0,f.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for PollingTmuxTransport: ${b}`);await (0,f.ds)(a,b)}async resize(){throw Error("PollingTmuxTransport does not support explicit resize")}async captureSnapshot(a,b){return(0,f.Xg)(a,b)}async subscribe(){return new h}getCapabilities(){return g}async killSession(a){return(0,f.fY)(a)}}let j=null;var k=c(93997);let l=(0,e.h)("cli-session");function m(){return j||(j=new i),j}function n(a,b,c){let e=d.s.getInstance().getTool(b),f=e.getSessionName(a,c);return{cliTool:e,sessionName:f}}async function o(a,b,c){let{sessionName:d}=n(a,b,c);return m().sessionExists(d)}async function p(a,b,c=1e3,d){let e=l.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutput:start",{requestedLines:c});let{cliTool:f,sessionName:g}=n(a,b,d),h=m();try{let a=await (0,k.aq)(g,c,async()=>{if(!await h.sessionExists(g))throw Error(`${f.name} session ${g} does not exist`);return await h.captureSnapshot(g,{startLine:-k.xE})});return e.debug("captureSessionOutput:success",{actualLines:a.split("\n").length,lastFewLines:a.split("\n").slice(-3).join(" | ")}),a}catch(b){let a=b instanceof Error?b.message:String(b);if(a.includes("does not exist"))throw e.debug("captureSessionOutput:sessionNotFound",{sessionName:g}),b;throw e.error("captureSessionOutput:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function q(a,b,c=5e3,d){let e=l.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutputFresh:start",{requestedLines:c});let{cliTool:f,sessionName:g}=n(a,b,d),h=m();try{let a=await h.captureSnapshot(g,{startLine:-c});return a.length>0?(0,k.vF)(g,a,c):(0,k.gm)(g),(0,k.wd)(a,c)}catch(b){(0,k.gm)(g);let a=b instanceof Error?b.message:String(b);throw e.error("captureSessionOutputFresh:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}},34405:(a,b,c)=>{"use strict";c.d(b,{G:()=>e,_:()=>d});let d=1e4,e=1e3},34892:(a,b,c)=>{"use strict";c.d(b,{$:()=>m});var d=c(56791),e=c(31268),f=c(31766),g=c(95595),h=c(18896),i=c(52277),j=c(34405),k=c(93997),l=c(48083);async function m(a,b,c,m){let n=m??c,o=e.s.getInstance().getTool(c),p=(0,l.CE)(b,c,m);if(!await o.isRunning(b,m))return{isRunning:!1,content:"",lineCount:0,cliToolId:c,sessionStatus:"idle",sessionStatusReason:"session_not_running",lastStopEventAt:p};let q=(0,d.y1O)(a,b,n),r=q?.lastCapturedLine||0,s=await (0,f.Wh)(b,c,j._,m),t=s.split("\n"),u=t.length,v=((0,k.sl)(u,Math.min(j._,k.xE))?t:t.slice(Math.max(0,r))).join("\n"),w=(0,h.v7)(b,c,m),x=(0,h.xU)(w),y=x?new Date(x):void 0,z=(0,g.WC)(s,c,y),A="running"===z.status&&z.reason===g.gv.THINKING_INDICATOR,B=z.hasActivePrompt,C="waiting"===z.status&&g.ug.has(z.reason),D=z.reason===g.gv.CODEX_PAGER,E="running"===z.status&&z.reason===g.gv.DEFAULT||"ready"===z.status&&z.reason===g.gv.NO_RECENT_OUTPUT,F=t.slice(-100).join("\n"),G=(0,h.aq)(b,c,m);return{isRunning:!0,cliToolId:c,sessionStatus:z.status,sessionStatusReason:z.reason,content:v,fullOutput:s,realtimeSnippet:F,lineCount:u,lastCapturedLine:r,isComplete:B,isGenerating:A,thinking:A,thinkingMessage:A?"Claude is thinking...":null,isPromptWaiting:B,promptData:B?z.promptDetection.promptData??null:null,autoYes:{enabled:G?.enabled??!1,expiresAt:G?.enabled?G.expiresAt:null,stopReason:G?.stopReason,lastSuppression:(0,i.gb)(b,c,m)},isSelectionListActive:C,isPagerActive:D,isUnclassifiedActive:E,lastServerResponseTimestamp:x,serverPollerActive:(0,h.bZ)(w),lastStopEventAt:p}}},39727:()=>{},40236:(a,b,c)=>{"use strict";c.d(b,{FW:()=>l});var d=c(11665),e=c(93997),f=c(26283),g=c(20610);let h=(0,c(72626).h)("cli-tools/submit-verified-sender"),i=/\[Pasted text[\s#]/,j=/^\/[A-Za-z]/,k=/^\s*(?:ctx:\d+%\s*)?[>❯›]/;async function l(a){let{sessionName:b,message:c,cliToolId:l,textInputWaitMs:m=g.pL,submitEnterCount:n=1,interEnterWaitMs:o=g.pL,verifyAttempts:p=4,verifyDelayMs:q=g.x9}=a;await (0,d.V1)(b,c,!1),await new Promise(a=>setTimeout(a,m));for(let a=0;a<Math.max(1,n);a++)await (0,d.KB)(b,["Enter"]),a<n-1&&await new Promise(a=>setTimeout(a,o));let r=Math.max(1,p);for(let a=0;a<r;a++){await new Promise(a=>setTimeout(a,q));let g=function(a,b,c){let d=(0,f.aJ)(a).split("\n").slice(-12),e=d.join("\n");if((0,f.ut)(b,e))return"submitted";let g=function(a){for(let b=a.length-1;b>=0;b--)if(k.test(a[b]))return a[b];return null}(d);if(!g)return"submitted";let h=g.replace(k,"").trim();return 0===h.length?"submitted":i.test(g)||function(a,b){let c=b.split("\n").map(a=>a.trim()).find(a=>a.length>0)??"";return 0!==c.length&&c.startsWith(a)}(h,c)?"pending":j.test(h)?"replaced":"submitted"}(await (0,d.Xg)(b,{startLine:-12}),l,c);if("submitted"===g)return void(0,e.gm)(b);if("replaced"===g){try{await (0,d.Ce)(b)}catch(a){h.error("submit-clear-input-failed",{sessionName:b,cliToolId:l,error:a instanceof Error?a.message:String(a)})}throw(0,e.gm)(b),h.error("submit-replaced-by-tui-completion",{sessionName:b,cliToolId:l,attempt:a}),Error(`Message was replaced by a TUI autocompletion for session ${b}; the input no longer matches the sent text. Cleared the input line without submitting to avoid executing a different command.`)}h.warn("submit-not-confirmed:resending-enter",{sessionName:b,cliToolId:l,attempt:a}),await (0,d.KB)(b,["Enter"])}throw(0,e.gm)(b),h.error("submit-verification-failed",{sessionName:b,cliToolId:l,attempts:r}),Error(`Message submit could not be confirmed for session ${b} after ${r} attempts (typed but unsent)`)}},41364:(a,b,c)=>{"use strict";c.d(b,{Gv:()=>o,hM:()=>n});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(1634),i=c(21684),j=c(72626),k=c(15194);function l(a="claude"){return g().join((0,i.U)(),a)}async function m(a="claude"){let b=l(a);try{await e().access(b)}catch{await e().mkdir(b,{recursive:!0})}}async function n(a,b,c,d="claude"){await m(d);let f=function(a,b="claude"){let c=(0,h.GP)(new Date,"yyyy-MM-dd"),d=`${a}-${c}.md`,e=l(b);return g().join(e,d)}(a,d),i=(0,h.GP)(new Date,"yyyy-MM-dd HH:mm:ss"),j="";try{j=await e().readFile(f,"utf-8")}catch{let b=(0,k.hR)(d)?k.ef[d]:d;j=`# ${b} Conversation Log: ${a}
|
|
3
3
|
|
|
4
4
|
Created: ${i}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6130,exports.ids=[6130],exports.modules={26838:(a,b,c)=>{c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.21.
|
|
1
|
+
"use strict";exports.id=6130,exports.ids=[6130],exports.modules={26838:(a,b,c)=>{c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.21.1"}function k(){return j()}async function l(){try{var a,b,c;if(null!==i.result&&Date.now()-i.fetchedAt<36e5||i.rateLimitResetAt&&(!(Date.now()>=i.rateLimitResetAt)||(i.rateLimitResetAt=null,0)))return i.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${k()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?i.rateLimitResetAt=1e3*parseInt(b,10):i.rateLimitResetAt=Date.now()+36e5}(d),i.result;if(!d.ok)return i.result;let e=await d.json(),j=k(),l=e.tag_name.replace(/^v/,""),m={hasUpdate:function(a,b){if(!g.test(a)||!g.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[h,i,j]=c(b);return h!==d?h>d:i!==e?i>e:j>f}(j,e.tag_name),currentVersion:j,latestVersion:l,releaseUrl:(a=e.html_url).startsWith(f.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,h.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return i.result=m,i.fetchedAt=Date.now(),m}catch{return i.result}}},88573:(a,b,c)=>{c.d(b,{Lw:()=>s});let d="https://raw.githubusercontent.com/Kewton/commandmate-skills/main/catalog/v1/catalog.json",e=[d],f=/^[A-Za-z0-9/+=_."-]{1,128}$/;var g=c(72626),h=c(13075);let i=(0,g.h)("lib/skills/catalog-client"),j={FETCH_FAILED:"SKILL_CATALOG_FETCH_FAILED",RATE_LIMITED:"SKILL_CATALOG_RATE_LIMITED",OVERSIZED:"SKILL_CATALOG_OVERSIZED",MALFORMED:"SKILL_CATALOG_MALFORMED",INVALID_SCHEMA:"SKILL_CATALOG_INVALID_SCHEMA"},k=globalThis.__skillCatalogCache??={catalog:null,validatedAt:0,confirmedAt:0,etag:null,revision:null,rateLimitResetAt:null,inflight:null};class l extends Error{}let m={[j.FETCH_FAILED]:"The Skill Catalog could not be retrieved.",[j.RATE_LIMITED]:"The Skill Catalog origin is rate limiting requests.",[j.OVERSIZED]:"The Skill Catalog response exceeded the allowed size.",[j.MALFORMED]:"The Skill Catalog response was not valid JSON.",[j.INVALID_SCHEMA]:"The Skill Catalog response did not match the supported Catalog schema."};function n(a){return new Date(a).toISOString()}function o(a,b,c){return{catalog:a,fetchedAt:n(k.validatedAt),revalidatedAt:n(k.confirmedAt),state:b,stale:"stale"===b,offline:"stale"===b,staleReason:c,source:{repository:"Kewton/commandmate-skills",ref:"main",revision:k.revision}}}function p(a,b=[]){return k.catalog?{ok:!0,snapshot:o(k.catalog,"stale",a)}:{ok:!1,failure:{code:a,message:m[a],errors:b}}}async function q(a,b){let c=a.headers.get("Content-Length");if(null!==c){let a=Number(c);if(!Number.isFinite(a)||a<0||a>b)throw new l("content-length out of bounds")}let d=a.body;if(!d||"function"!=typeof d.getReader){let c=await a.text();if(new TextEncoder().encode(c).length>b)throw new l("body exceeded size cap");return c}let e=d.getReader(),f=[],g=0;for(;;){let{done:a,value:c}=await e.read();if(a)break;if(c){if((g+=c.byteLength)>b)throw await e.cancel(),new l("body exceeded size cap");f.push(c)}}let h=new Uint8Array(g),i=0;for(let a of f)h.set(a,i),i+=a.byteLength;return new TextDecoder("utf-8").decode(h)}async function r(a){let b,c,g;if(!e.includes(d))return p(j.FETCH_FAILED);let m={Accept:"application/json","User-Agent":`CommandMate/${a}`};null!==k.catalog&&null!==k.etag&&(m["If-None-Match"]=k.etag);try{b=await fetch(d,{headers:m,cache:"no-store",signal:AbortSignal.timeout(5e3)})}catch{return i.warn("catalog-fetch-failed",{reason:j.FETCH_FAILED}),p(j.FETCH_FAILED)}if(304===b.status&&null!==k.catalog)return k.confirmedAt=Date.now(),{ok:!0,snapshot:o(k.catalog,"revalidated",null)};if(403===b.status||429===b.status)return!function(a){let b=Date.now(),c=b+864e5,d=a.headers.get("X-RateLimit-Reset");if(null!==d){let a=Number(d);if(Number.isFinite(a)&&a>0){k.rateLimitResetAt=Math.min(1e3*a,c);return}}let e=a.headers.get("Retry-After");if(null!==e){let a=Number(e);if(Number.isFinite(a)&&a>0){k.rateLimitResetAt=Math.min(b+1e3*a,c);return}}k.rateLimitResetAt=b+36e5}(b),i.warn("catalog-rate-limited",{status:b.status}),p(j.RATE_LIMITED);if(!b.ok)return i.warn("catalog-fetch-failed",{status:b.status}),p(j.FETCH_FAILED);try{c=await q(b,1048576)}catch(b){let a=b instanceof l?j.OVERSIZED:j.FETCH_FAILED;return i.warn("catalog-body-rejected",{reason:a}),p(a)}try{g=JSON.parse(c)}catch{return i.warn("catalog-malformed",{reason:j.MALFORMED}),p(j.MALFORMED)}let n=(0,h.JJ)(g);if(!n.ok)return i.warn("catalog-invalid-schema",{errorCount:n.errors.length}),p(j.INVALID_SCHEMA,n.errors);let r=Date.now();return k.catalog=n.value,k.validatedAt=r,k.confirmedAt=r,k.etag=b.headers.get("ETag"),k.revision=function(a){if(null===a)return null;let b=a.trim();return f.test(b)?b:null}(k.etag),{ok:!0,snapshot:o(n.value,"fresh",null)}}async function s(a={}){let{hostVersion:b="0.0.0",forceRevalidate:c=!1}=a;return!c&&null!==k.catalog&&Date.now()-k.confirmedAt<9e5&&null!==k.catalog?{ok:!0,snapshot:o(k.catalog,"cached",null)}:null!==k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0))?p(j.RATE_LIMITED):(null===k.inflight&&(k.inflight=r(b).finally(()=>{k.inflight=null})),k.inflight)}},90164:(a,b,c)=>{c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"wasm": [],
|
|
18
18
|
"assets": [],
|
|
19
19
|
"env": {
|
|
20
|
-
"__NEXT_BUILD_ID": "
|
|
21
|
-
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "
|
|
22
|
-
"__NEXT_PREVIEW_MODE_ID": "
|
|
23
|
-
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "
|
|
24
|
-
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "
|
|
20
|
+
"__NEXT_BUILD_ID": "E2SxtJGbNcRMnWbCC3i_-",
|
|
21
|
+
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "U1rdfL/Ikg/uW7s9gm5pECed8CiG1d9tab1v3r/drtQ=",
|
|
22
|
+
"__NEXT_PREVIEW_MODE_ID": "ec7400441ebeae0287614adf82f5f4ef",
|
|
23
|
+
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "801555bba8c5319e14dcfcc5511575b71292a49167c57ab00a9a7cae49c20ea6",
|
|
24
|
+
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "4fd7f07ddb84abe7336890771555723190bfb53d839b6d87cb6dc06c8679bd86"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-180bebdee221b6f4.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-6092074a0dc78280.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-180bebdee221b6f4.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-6092074a0dc78280.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/E2SxtJGbNcRMnWbCC3i_-/_buildManifest.js" defer=""></script><script src="/_next/static/E2SxtJGbNcRMnWbCC3i_-/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"E2SxtJGbNcRMnWbCC3i_-","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{},"edge":{},"encryptionKey":"
|
|
1
|
+
{"node":{},"edge":{},"encryptionKey":"U1rdfL/Ikg/uW7s9gm5pECed8CiG1d9tab1v3r/drtQ="}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6488],{2317:(e,t,r)=>{r.d(t,{V:()=>a});var n=r(12115);function o(){try{let e="__localStorage_test__";return window.localStorage.setItem(e,"test"),window.localStorage.removeItem(e),!0}catch(e){return!1}}function a(e){let{key:t,defaultValue:r,validate:a,serialize:s=JSON.stringify,deserialize:i=JSON.parse}=e,c=(0,n.useRef)(r),l=(0,n.useRef)(a),u=(0,n.useRef)(s),d=(0,n.useRef)(i);c.current=r,l.current=a,u.current=s,d.current=i;let[f,p]=(0,n.useState)(!1),[y,m]=(0,n.useState)(r),h=(0,n.useCallback)(()=>{if(!o())return c.current;try{let e=window.localStorage.getItem(t);if(null===e)return c.current;let r=d.current(e);if(l.current)return l.current(r)?r:c.current;return r}catch(e){return c.current}},[t]),w=(0,n.useCallback)(e=>{if(o())try{let r=u.current(e);window.localStorage.setItem(t,r)}catch(e){}},[t]),g=(0,n.useCallback)(e=>{m(t=>{let r="function"==typeof e?e(t):e;return w(r),r})},[w]),S=(0,n.useCallback)(()=>{if(o())try{window.localStorage.removeItem(t)}catch(e){}m(c.current)},[t]);return(0,n.useEffect)(()=>{p(o()),m(h())},[h]),{value:y,setValue:g,removeValue:S,isAvailable:f}}},7636:(e,t,r)=>{r.d(t,{LV:()=>c,Si:()=>o,UZ:()=>s,Xn:()=>u,_s:()=>d,nO:()=>l,s6:()=>i});let n=["updatedAt","repositoryName","branchName","status","lastSent"],o=e=>n.includes(e),a={waiting:0,ready:1,running:2,generating:3,idle:4};function s(e){let t=new Set;for(let r of e)!1===r.visible&&t.add(r.path);return t}function i(e,t){return 0===t.size?e.slice():e.filter(e=>{let r=e.repositoryPath;return!r||!t.has(r)})}function c(e){let t=function(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)|0;return Math.abs(t)}(e)%360;return"hsl(".concat(t,", ").concat(65,"%, ").concat(60,"%)")}function l(e,t){if(!e&&!t)return 0;if(!e)return 1;if(!t)return -1;let r=e instanceof Date?e.getTime():new Date(e).getTime();return(t instanceof Date?t.getTime():new Date(t).getTime())-r}function u(e,t,r){let n=[...e];return n.sort((e,n)=>{let o=0;switch(t){case"updatedAt":{let t=e=>e?e instanceof Date?e.getTime():new Date(e).getTime():0,r=t(e.lastActivity);o=t(n.lastActivity)-r;break}case"repositoryName":{let t=e.repositoryName.toLowerCase(),r=n.repositoryName.toLowerCase();o=t.localeCompare(r);break}case"branchName":{let t=e.name.toLowerCase(),r=n.name.toLowerCase();o=t.localeCompare(r);break}case"status":o=a[e.status]-a[n.status];break;case"lastSent":{let t=l(e.lastActivity,n.lastActivity);if(!e.lastActivity&&!n.lastActivity){o=0;break}if(!e.lastActivity)return 1;if(!n.lastActivity)return -1;o=t;break}default:o=0}return("updatedAt"===t||"lastSent"===t?"desc"===r:"asc"===r)?o:-o}),n}function d(e,t,r){let n=new Map;for(let t of e){let e=t.repositoryName;n.has(e)||n.set(e,[]),n.get(e).push(t)}return[...n.keys()].sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).map(e=>({repositoryName:e,branches:u(n.get(e),t,r)}))}},22592:(e,t,r)=>{r.d(t,{Ps:()=>d,W5:()=>u});var n=r(95155),o=r(12115),a=r(38218),s=r(68704);let i="data-pc-size",c={size:s.r5,setSize:()=>{},isMobile:!1,factor:s.d8[s.r5].factor,isAvailable:!1},l=(0,o.createContext)(c);function u(e){let{children:t}=e,{size:r,setSize:c,isAvailable:u}=(0,s.of)(),d=(0,a.a)();(0,o.useEffect)(()=>{if("undefined"==typeof document)return;let e=document.documentElement;return d?void e.removeAttribute(i):(e.setAttribute(i,r),()=>{e.removeAttribute(i)})},[r,d]);let f=(0,o.useMemo)(()=>({size:r,setSize:c,isMobile:d,factor:s.d8[r].factor,isAvailable:u}),[r,c,d,u]);return(0,n.jsx)(l.Provider,{value:f,children:t})}function d(){return(0,o.useContext)(l)}},32916:(e,t,r)=>{r.d(t,{GB:()=>u,VF:()=>d});var n=r(95155),o=r(12115),a=r(7636);let s="updatedAt",i=(0,o.createContext)(null);function c(e,t,r,n){let a=(0,o.useRef)(!0);(0,o.useEffect)(()=>{try{let t=localStorage.getItem(e);t&&n(t)}catch(e){}},[]),(0,o.useEffect)(()=>{if(a.current){a.current=!1;return}try{localStorage.setItem(e,r())}catch(e){}},[t])}function l(e,t){switch(t.type){case"TOGGLE":return{...e,isOpen:!e.isOpen};case"SET_WIDTH":return{...e,width:t.width};case"OPEN_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!0};case"CLOSE_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!1};case"SET_SORT_KEY":return{...e,sortKey:t.sortKey};case"SET_SORT_DIRECTION":return{...e,sortDirection:t.sortDirection};case"LOAD_SORT_SETTINGS":return{...e,sortKey:t.sortKey,sortDirection:t.sortDirection};case"SET_VIEW_MODE":return{...e,viewMode:t.viewMode};default:return e}}function u(e){let{children:t,initialOpen:r=!0,initialWidth:u=224}=e,[d,f]=(0,o.useReducer)(l,{isOpen:r,width:u,isMobileDrawerOpen:!1,sortKey:s,sortDirection:"desc",viewMode:"grouped"});c("mcbd-sidebar-sort","".concat(d.sortKey,":").concat(d.sortDirection),()=>JSON.stringify({sortKey:d.sortKey,sortDirection:d.sortDirection}),e=>{try{let t=JSON.parse(e),r=t.sortDirection,n=(0,a.Si)(t.sortKey)?t.sortKey:s;n&&("asc"===r||"desc"===r)&&f({type:"LOAD_SORT_SETTINGS",sortKey:n,sortDirection:r})}catch(e){}}),c("mcbd-sidebar-view-mode",d.viewMode,()=>d.viewMode,e=>{("grouped"===e||"flat"===e)&&f({type:"SET_VIEW_MODE",viewMode:e})}),c("mcbd-sidebar-width",d.width,()=>String(d.width),e=>{let t=Number(e);!isNaN(t)&&t>0&&f({type:"SET_WIDTH",width:288===t?224:t})});let p=(0,o.useCallback)(()=>{f({type:"TOGGLE"})},[]),y=(0,o.useCallback)(e=>{f({type:"SET_WIDTH",width:e})},[]),m=(0,o.useCallback)(()=>{f({type:"OPEN_MOBILE_DRAWER"})},[]),h=(0,o.useCallback)(()=>{f({type:"CLOSE_MOBILE_DRAWER"})},[]),w=(0,o.useCallback)(e=>{f({type:"SET_SORT_KEY",sortKey:e})},[]),g=(0,o.useCallback)(e=>{f({type:"SET_SORT_DIRECTION",sortDirection:e})},[]),S=(0,o.useCallback)(e=>{f({type:"SET_VIEW_MODE",viewMode:e})},[]),b=(0,o.useMemo)(()=>({isOpen:d.isOpen,width:d.width,isMobileDrawerOpen:d.isMobileDrawerOpen,sortKey:d.sortKey,sortDirection:d.sortDirection,toggle:p,setWidth:y,openMobileDrawer:m,closeMobileDrawer:h,setSortKey:w,setSortDirection:g,viewMode:d.viewMode,setViewMode:S}),[d.isOpen,d.width,d.isMobileDrawerOpen,d.sortKey,d.sortDirection,d.viewMode,p,y,m,h,w,g,S]);return(0,n.jsx)(i.Provider,{value:b,children:t})}function d(){let e=(0,o.useContext)(i);if(!e)throw Error("useSidebarContext must be used within a SidebarProvider");return e}},38218:(e,t,r)=>{r.d(t,{D:()=>a,a:()=>s});var n=r(12115);let o=n.useLayoutEffect,a=768;function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{breakpoint:t=a}=e,[r,s]=(0,n.useState)(!1);return o(()=>{let e=window.matchMedia("(max-width: ".concat(t-1,"px)"));s(e.matches);let r=e=>{s(e.matches)};return e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}},[t]),r}},39649:(e,t,r)=>{r.d(t,{$f:()=>d,H8:()=>u});var n=r(95155),o=r(12115),a=r(80344);let s={PROCESSING:2e3,SESSION_RUNNING:5e3,IDLE:1e4},i=(0,o.createContext)(null),c={selectedWorktreeId:null,worktrees:[],repositories:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function l(e,t){switch(t.type){case"SET_WORKTREES":return{...e,worktrees:t.worktrees,isLoading:!1};case"SET_REPOSITORIES":return{...e,repositories:t.repositories};case"SELECT_WORKTREE":{var r;let n=null!=(r=e.worktrees.find(e=>e.id===t.id))?r:null;return{...e,selectedWorktreeId:t.id,selectedWorktreeDetail:null!=n?n:e.selectedWorktreeDetail,isLoadingDetail:null===n}}case"SET_WORKTREE_DETAIL":return{...e,selectedWorktreeDetail:t.detail};case"SET_LOADING":return{...e,isLoading:t.isLoading};case"SET_LOADING_DETAIL":return{...e,isLoadingDetail:t.isLoadingDetail};case"SET_ERROR":return{...e,error:t.error,isLoading:!1};default:return e}}function u(e){let{children:t,externalWorktrees:r,externalRepositories:u}=e,d=void 0!==r,[f,p]=(0,o.useReducer)(l,c);(0,o.useEffect)(()=>{d&&r&&p({type:"SET_WORKTREES",worktrees:r})},[d,r]),(0,o.useEffect)(()=>{d&&u&&p({type:"SET_REPOSITORIES",repositories:u})},[d,u]);let y=(0,o.useCallback)(async()=>{if(!d){p({type:"SET_LOADING",isLoading:!0}),p({type:"SET_ERROR",error:null});try{var e;let t=await a.y.getAll();p({type:"SET_WORKTREES",worktrees:t.worktrees}),p({type:"SET_REPOSITORIES",repositories:null!=(e=t.repositories)?e:[]})}catch(e){p({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktrees"})}}},[d]),m=(0,o.useCallback)(async e=>{p({type:"SELECT_WORKTREE",id:e}),p({type:"SET_ERROR",error:null});try{a.y.markAsViewed(e).catch(e=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",e)});let t=await a.y.getById(e);p({type:"SET_WORKTREE_DETAIL",detail:t})}catch(e){p({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktree detail"})}finally{p({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),h=(0,o.useCallback)(async()=>{await y()},[y]);(0,o.useEffect)(()=>{d||y()},[y,d]),(0,o.useEffect)(()=>{if(d)return;let e=null,t=!0,r=async()=>{if(t)try{var n,o;let i=await a.y.getAll();p({type:"SET_WORKTREES",worktrees:i.worktrees}),p({type:"SET_REPOSITORIES",repositories:null!=(n=i.repositories)?n:[]});let c=(o=i.worktrees).some(e=>e.isProcessing||e.isWaitingForResponse)?s.PROCESSING:o.some(e=>e.isSessionRunning)?s.SESSION_RUNNING:s.IDLE;t&&(e=setTimeout(r,c))}catch(n){if(n instanceof a.hD&&401===n.status)return;console.error("[WorktreeSelectionContext] Polling error:",n),t&&(e=setTimeout(r,s.SESSION_RUNNING))}};return r(),()=>{t=!1,e&&clearTimeout(e)}},[d]);let w={selectedWorktreeId:f.selectedWorktreeId,worktrees:f.worktrees,repositories:f.repositories,selectedWorktreeDetail:f.selectedWorktreeDetail,isLoadingDetail:f.isLoadingDetail,error:f.error,selectWorktree:m,refreshWorktrees:h};return(0,n.jsx)(i.Provider,{value:w,children:t})}function d(){let e=(0,o.useContext)(i);if(!e)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return e}},52703:(e,t,r)=>{r.d(t,{Oo:()=>o,ST:()=>n,zS:()=>a});let n="client_version",o="version_mismatch";function a(e){let t;try{t=JSON.parse(e)}catch(e){return null}if(!t||"object"!=typeof t)return null;let r=t;if("broadcast"===r.type){let e=r.data;return e&&"object"==typeof e?"string"!=typeof e.type?null:(void 0===e.worktreeId&&"string"==typeof r.worktreeId&&(e.worktreeId=r.worktreeId),e):null}return"string"==typeof r.type?r:null}},63365:(e,t,r)=>{r.d(t,{tS:()=>u,xM:()=>d,T3:()=>f});var n=r(95155),o=r(12115),a=r(52703);function s(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null}let i=()=>{},c={status:"disconnected",connected:!1,subscribe:i,unsubscribe:i,addListener:()=>i},l=(0,o.createContext)(null);function u(e){let{children:t,enabled:r=!0}=e,i=(0,o.useRef)(new Set),c=(0,o.useRef)(new Map),{status:u,subscribe:d,unsubscribe:f}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onEvent:t,onStatusChange:r,autoReconnect:n=!0,reconnectBaseDelay:i=1e3,reconnectMaxDelay:c=3e4,enabled:l=!0}=e,[u,d]=(0,o.useState)("disconnected"),f=(0,o.useRef)(null),p=(0,o.useRef)(null),y=(0,o.useRef)(0),m=(0,o.useRef)(new Set),h=(0,o.useRef)(!1),w=(0,o.useRef)(t);w.current=t;let g=(0,o.useRef)(r);g.current=r;let S=(0,o.useCallback)(e=>{var t;d(e),null==(t=g.current)||t.call(g,e)},[]),b=(0,o.useCallback)(()=>{null!==p.current&&(clearTimeout(p.current),p.current=null)},[]),E=(0,o.useCallback)(()=>{if(!l)return;let e=s();if(!e||f.current&&(f.current.readyState===e.OPEN||f.current.readyState===e.CONNECTING))return;b(),h.current=!1,S("connecting");let t="https:"===window.location.protocol?"wss:":"ws:",r=new e("".concat(t,"//").concat(window.location.host));f.current=r,r.onopen=()=>{y.current=0,S("connected");try{r.send(JSON.stringify({type:a.ST,version:"0.21.0"}))}catch(e){}m.current.forEach(e=>{try{r.send(JSON.stringify({type:"subscribe",worktreeId:e}))}catch(e){}})},r.onmessage=e=>{var t;let r="string"==typeof e.data?e.data:String(e.data),n=(0,a.zS)(r);n&&(null==(t=w.current)||t.call(w,n))},r.onerror=()=>{S("error")},r.onclose=()=>{var e;if(f.current=null,S("disconnected"),h.current||!n||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;let t=(e=y.current,Math.min(i*2**Math.max(0,e),c));y.current+=1,p.current=setTimeout(()=>{p.current=null,E()},t)}},[l,n,i,c,S,b]),T=(0,o.useCallback)(()=>{if(b(),h.current=!0,f.current){try{f.current.close(1e3,"Client disconnect")}catch(e){}f.current=null}},[b]),C=(0,o.useCallback)(e=>{let t=f.current,r=s();if(t&&r&&t.readyState===r.OPEN)try{t.send(JSON.stringify(e))}catch(e){}},[]),k=(0,o.useCallback)(e=>{m.current.has(e)||(m.current.add(e),C({type:"subscribe",worktreeId:e}))},[C]),v=(0,o.useCallback)(e=>{m.current.has(e)&&(m.current.delete(e),C({type:"unsubscribe",worktreeId:e}))},[C]);return(0,o.useEffect)(()=>{if(l)return E(),()=>{T()}},[l,E,T]),(0,o.useEffect)(()=>{if(!l||"undefined"==typeof document)return;let e=()=>{"visible"===document.visibilityState&&(f.current||(y.current=0,E()))};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[l,E]),{status:u,subscribe:k,unsubscribe:v,send:C}}({enabled:r,onEvent:(0,o.useCallback)(e=>{i.current.forEach(t=>{try{t(e)}catch(e){}})},[])}),p=(0,o.useCallback)(e=>{var t;let r=c.current,n=null!=(t=r.get(e))?t:0;r.set(e,n+1),0===n&&d(e)},[d]),y=(0,o.useCallback)(e=>{var t;let r=c.current,n=null!=(t=r.get(e))?t:0;n<=1?(r.delete(e),f(e)):r.set(e,n-1)},[f]),m=(0,o.useCallback)(e=>(i.current.add(e),()=>{i.current.delete(e)}),[]),h=(0,o.useMemo)(()=>({status:u,connected:"connected"===u,subscribe:p,unsubscribe:y,addListener:m}),[u,p,y,m]);return(0,n.jsx)(l.Provider,{value:h,children:t})}function d(){var e;return null!=(e=(0,o.useContext)(l))?e:c}function f(e){let{addListener:t}=d(),r=(0,o.useRef)(e);r.current=e,(0,o.useEffect)(()=>t(e=>r.current(e)),[t])}},65380:(e,t,r)=>{r.d(t,{H:()=>i,O:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)(!1);function s(e){let{children:t,authEnabled:r}=e;return(0,n.jsx)(a.Provider,{value:r,children:t})}function i(){return(0,o.useContext)(a)}},66966:(e,t,r)=>{r.d(t,{g7:()=>c,rC:()=>u,Fn:()=>l});var n=r(95155),o=r(12115),a=r(63365),s=r(39649);let i=(0,o.createContext)(null);function c(e){let{children:t}=e,{worktrees:r,repositories:c,isLoading:l,error:u,refresh:d}=function(){let[e,t]=(0,o.useState)([]),[r,n]=(0,o.useState)([]),[s,i]=(0,o.useState)(!0),[c,l]=(0,o.useState)(null),u=(0,o.useRef)(null),d=(0,o.useRef)([]),f=(0,o.useRef)(null),{connected:p,subscribe:y,unsubscribe:m,addListener:h}=(0,a.xM)(),w=(0,o.useRef)(p);w.current=p;let g=(0,o.useCallback)(async()=>{try{var e,r;l(null);let a=await fetch("/api/worktrees");if(!a.ok)throw Error("Failed to fetch worktrees: ".concat(a.status));let s=await a.json(),i=null!=(e=s.worktrees)?e:[],c=null!=(r=s.repositories)?r:[];(0,o.startTransition)(()=>{t(i),n(c)}),d.current=i}catch(e){l(e instanceof Error?e:Error(String(e)))}finally{i(!1)}},[]);(0,o.useEffect)(()=>{g()},[g]);let S=(0,o.useCallback)(()=>d.current.some(e=>!0===e.isSessionRunning),[]),b=(0,o.useCallback)(()=>{let e=S();return w.current?e?2e4:6e4:e?5e3:3e4},[S]),E=(0,o.useCallback)(()=>{null!==u.current&&(clearInterval(u.current),u.current=null),f.current=null},[]),T=(0,o.useCallback)(()=>{E();let e=b();f.current=e,u.current=setInterval(()=>{g()},e)},[b,g,E]);(0,o.useEffect)(()=>{let e=()=>{document.hidden?E():(g(),T())},t=setTimeout(()=>{T()},0);return document.addEventListener("visibilitychange",e),()=>{clearTimeout(t),E(),document.removeEventListener("visibilitychange",e)}},[g,T,E]),(0,o.useEffect)(()=>{if(d.current=e,"undefined"!=typeof document&&document.hidden||null===f.current)return;let t=b();f.current!==t&&T()},[e,p,b,T]);let C=e.map(e=>e.id).sort().join(" ");return(0,o.useEffect)(()=>{let e=C.length>0?C.split(" "):[];return e.forEach(e=>y(e)),()=>{e.forEach(e=>m(e))}},[C,y,m]),(0,o.useEffect)(()=>h(e=>{if("session_status_changed"===e.type&&"string"==typeof e.worktreeId){let r=e.worktreeId,n=e.isRunning;if("boolean"==typeof n){if((null!=e.cliTool||null!=e.instance)&&!1===n)return void g();(0,o.startTransition)(()=>{t(e=>{let t=!1,o=e.map(e=>e.id===r&&e.isSessionRunning!==n?(t=!0,{...e,isSessionRunning:n}):e);return t?o:e})})}}else("message"===e.type||"message_updated"===e.type)&&g()}),[h,g]),{worktrees:e,repositories:r,isLoading:s,error:c,refresh:g}}(),f=(0,o.useMemo)(()=>({worktrees:r,repositories:c,isLoading:l,error:u,refresh:d}),[r,c,l,u,d]);return(0,n.jsx)(i.Provider,{value:f,children:(0,n.jsx)(s.H8,{externalWorktrees:r,externalRepositories:c,children:t})})}function l(){let e=(0,o.useContext)(i);if(null===e)throw Error("useWorktreesCacheContext must be used within a WorktreesCacheProvider");return e}function u(){return(0,o.useContext)(i)}},68704:(e,t,r)=>{r.d(t,{Uf:()=>a,d8:()=>s,fM:()=>i,of:()=>l,r5:()=>o,rq:()=>c});var n=r(2317);let o="medium",a=["large","medium","small","xsmall"],s={large:{value:"large",rootFontSizePx:18,factor:1.125,terminalFontSize:16},medium:{value:"medium",rootFontSizePx:16,factor:1,terminalFontSize:14},small:{value:"small",rootFontSizePx:14,factor:.875,terminalFontSize:12},xsmall:{value:"xsmall",rootFontSizePx:12.5,factor:.78,terminalFontSize:11}};function i(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(s,e)}function c(e){return s[e].terminalFontSize}function l(){let{value:e,setValue:t,isAvailable:r}=(0,n.V)({key:"mcbd-pc-display-size",defaultValue:o,validate:i});return{size:e,setSize:t,isAvailable:r}}},70628:(e,t,r)=>{r.d(t,{K:()=>i,S:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function s(e){let{children:t}=e,[r,s]=(0,o.useState)(!1),i=(0,o.useCallback)(()=>s(e=>!e),[]),c=(0,o.useMemo)(()=>({open:r,setOpen:s,toggle:i}),[r,i]);return(0,n.jsx)(a.Provider,{value:c,children:t})}function i(){return(0,o.useContext)(a)}},80344:(e,t,r)=>{r.d(t,{$T:()=>l,GQ:()=>d,Rx:()=>i,gC:()=>c,hD:()=>n,hS:()=>u,y:()=>s});class n extends Error{constructor(e,t,r){super(e),this.status=t,this.data=r,this.name="ApiError"}}async function o(e,t,r){if(!(e.headers.get("content-type")||"").includes("application/json"))return t;try{return await e.json()}catch(e){return t}}async function a(e,t){try{let r=new Headers(null==t?void 0:t.headers);r.set("Content-Type","application/json");let a=await fetch(e,{...t,headers:r}),s=a.headers.get("content-type")||"";if(a.redirected&&a.url.includes("/login"))throw new n("Authentication required",401);if(!a.ok){let e=await o(a,{},"error-body");throw new n(e.error||"HTTP error ".concat(a.status),a.status,e)}if(!s.includes("application/json"))throw new n("Unexpected response format",a.status);return a.json()}catch(e){if(e instanceof n)throw e;throw new n(e instanceof Error?e.message:"Unknown error",0,e)}}let s={getAll:async()=>a("/api/worktrees"),getById:async e=>a("/api/worktrees/".concat(e)),updateDescription:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({description:t})}),updateLink:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({link:t})}),toggleFavorite:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({favorite:t})}),updateStatus:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({status:t})}),updateCliTool:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({cliToolId:t})}),markAsViewed:async e=>a("/api/worktrees/".concat(e,"/viewed"),{method:"PATCH"}),async getMessages(e,t,r,n){let o=new URLSearchParams;return t&&o.append("cliTool",t),r&&o.append("includeArchived","true"),"number"==typeof n&&Number.isFinite(n)&&o.append("limit",String(n)),a("/api/worktrees/".concat(e,"/messages").concat(o.toString()?"?".concat(o.toString()):""))},async sendMessage(e,t,r){let n={content:t};return(null==r?void 0:r.cliToolId)&&(n.cliToolId=r.cliToolId),(null==r?void 0:r.instanceId)&&(n.instanceId=r.instanceId),(null==r?void 0:r.imagePath)&&(n.imagePath=r.imagePath),a("/api/worktrees/".concat(e,"/send"),{method:"POST",body:JSON.stringify(n)})},async uploadImageFile(e,t){let r=Date.now(),n="".concat(r,"-").concat(t.name),a=".commandmate/attachments",s=new FormData;s.append("file",new File([t],n,{type:t.type}));let i=await fetch("/api/worktrees/".concat(e,"/upload/").concat(a),{method:"POST",body:s});if(!i.ok){var c;let e=await o(i,{},"error-body");throw Error((null==e||null==(c=e.error)?void 0:c.message)||"Upload failed (HTTP ".concat(i.status,")"))}return{path:(await o(i,{},"response-body")).path||"".concat(a,"/").concat(n)}},getLogs:async e=>a("/api/worktrees/".concat(e,"/logs")),async getLogFile(e,t,r){let n=(null==r?void 0:r.sanitize)?"?sanitize=true":"";return a("/api/worktrees/".concat(e,"/logs/").concat(t).concat(n))},async killSession(e,t,r){let n=new URLSearchParams;t&&n.set("cliTool",t),r&&n.set("instance",r);let o=n.toString();return a("/api/worktrees/".concat(e,"/kill-session").concat(o?"?".concat(o):""),{method:"POST"})}},i={scan:async e=>a("/api/repositories/scan",{method:"POST",body:JSON.stringify({repositoryPath:e})}),sync:async()=>a("/api/repositories/sync",{method:"POST"}),delete:async e=>a("/api/repositories",{method:"DELETE",body:JSON.stringify({repositoryPath:e})}),async clone(e,t){var r;return a("/api/repositories/clone",{method:"POST",body:JSON.stringify({cloneUrl:e,fork:null!=(r=null==t?void 0:t.fork)&&r})})},getCloneStatus:async e=>a("/api/repositories/clone/".concat(e)),getExcluded:async()=>a("/api/repositories/excluded"),restore:async e=>a("/api/repositories/restore",{method:"PUT",body:JSON.stringify({repositoryPath:e})}),list:async()=>a("/api/repositories"),updateDisplayName:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({displayName:t})}),updateVisibility:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({visible:t})}),updateEnabled:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({enabled:t})}),validatePath:async e=>a("/api/repositories/validate-path",{method:"POST",body:JSON.stringify({repositoryPath:e})})},c={async browse(e){let t=e?"?path=".concat(encodeURIComponent(e)):"";return a("/api/fs/browse".concat(t))},addRecentPath:async e=>a("/api/fs/recent-paths",{method:"POST",body:JSON.stringify({path:e})})},l={getAll:async e=>(await a("/api/worktrees/".concat(e,"/memos"))).memos,create:async(e,t)=>(await a("/api/worktrees/".concat(e,"/memos"),{method:"POST",body:JSON.stringify(t||{})})).memo,update:async(e,t,r)=>(await a("/api/worktrees/".concat(e,"/memos/").concat(t),{method:"PUT",body:JSON.stringify(r)})).memo,delete:async(e,t)=>a("/api/worktrees/".concat(e,"/memos/").concat(t),{method:"DELETE"}),async reorder(e,t){await a("/api/worktrees/".concat(e,"/memos"),{method:"PATCH",body:JSON.stringify({memoIds:t})})}};function u(e){return e instanceof n||e instanceof Error?e.message:"An unknown error occurred"}let d={checkForUpdate:async()=>a("/api/app/update-check",{method:"GET"}),startUpdate:async()=>a("/api/app/update",{method:"POST"}),async ping(){try{return(await fetch("/api/auth/status",{cache:"no-store"})).ok}catch(e){return!1}}}},89275:(e,t,r)=>{r.d(t,{Bo:()=>u,Hq:()=>c});var n=r(95155),o=r(12115),a=r(20063);let s={startTransition:e=>e()},i=(0,o.createContext)(null);function c(){var e;let t=(0,a.useRouter)(),{startTransition:r}=null!=(e=(0,o.useContext)(i))?e:s;return(0,o.useMemo)(()=>({push:e=>r(()=>t.push(e)),replace:e=>r(()=>t.replace(e))}),[t,r])}function l(e){let{onCommit:t}=e,r=(0,a.usePathname)(),n=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(!n.current){n.current=!0;return}t()},[r,t]),null}function u(e){let{children:t}=e,r=(0,o.useRef)(null),a=(0,o.useCallback)(()=>{var e;null==(e=r.current)||e.call(r)},[]),s=(0,o.useCallback)(e=>{var t;t=()=>new Promise(t=>{let n=!1,o=()=>{n||(n=!0,t())};r.current=o,e(),window.setTimeout(o,500)}),"undefined"==typeof document||"function"!=typeof document.startViewTransition||"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?t():document.startViewTransition(t)},[]),c=(0,o.useMemo)(()=>({startTransition:s}),[s]);return(0,n.jsxs)(i.Provider,{value:c,children:[(0,n.jsx)(l,{onCommit:a}),t]})}},92614:(e,t,r)=>{r.d(t,{C:()=>i,E:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function s(e){let{children:t}=e,[r,s]=(0,o.useState)(!1),i=(0,o.useCallback)(()=>s(e=>!e),[]),c=(0,o.useMemo)(()=>({open:r,setOpen:s,toggle:i}),[r,i]);return(0,n.jsx)(a.Provider,{value:c,children:t})}function i(){return(0,o.useContext)(a)}},94442:(e,t,r)=>{r.d(t,{dj:()=>E,tE:()=>b});var n=r(95155),o=r(12115),a=r(47650),s=r(18955),i=r(42529),c=r(78874),l=r(52056),u=r(23327),d=r(65229),f=r(59854),p=r(9900),y=r(9286);function m(e){let{type:t,iconColor:r}=e,o="h-5 w-5 ".concat(r);switch(t){case"success":return(0,n.jsx)(i.A,{className:o,"data-testid":"toast-icon-success"});case"error":return(0,n.jsx)(c.A,{className:o,"data-testid":"toast-icon-error"});case"warning":return(0,n.jsx)(l.A,{className:o,"data-testid":"toast-icon-warning"});default:return(0,n.jsx)(u.A,{className:o,"data-testid":"toast-icon-info"})}}function h(e){let{id:t,message:r,type:a,onClose:i,duration:c=3e3}=e,l=(0,s.c)("common"),u=(0,o.useRef)(null),f=function(e){switch(e){case"success":return{bgColor:"bg-success-subtle",borderColor:"border-success-border",textColor:"text-success-foreground",iconColor:"text-success-foreground"};case"error":return{bgColor:"bg-danger-subtle",borderColor:"border-danger-border",textColor:"text-danger-foreground",iconColor:"text-danger-foreground"};case"warning":return{bgColor:"bg-warning-subtle",borderColor:"border-warning-border",textColor:"text-warning-foreground",iconColor:"text-warning-foreground"};default:return{bgColor:"bg-info-subtle",borderColor:"border-info-border",textColor:"text-info-foreground",iconColor:"text-info-foreground"}}}(a),[h,w]=(0,o.useState)(!0),{shouldRender:g,isExiting:S}=(0,y.O)(h,p.Ys),b=(0,o.useRef)(i);b.current=i,(0,o.useEffect)(()=>{g||b.current(t)},[g,t]),(0,o.useEffect)(()=>(c>0&&(u.current=setTimeout(()=>{w(!1)},c)),()=>{u.current&&clearTimeout(u.current)}),[c]);let E=(0,o.useCallback)(()=>{u.current&&clearTimeout(u.current),w(!1)},[]);return(0,n.jsxs)("div",{"data-testid":"toast-".concat(t),role:"alert",className:"\n ".concat(f.bgColor,"\n ").concat(f.borderColor,"\n ").concat(f.textColor,"\n border rounded-lg shadow-lg p-4 min-w-[300px] max-w-[400px]\n flex items-start gap-3\n ").concat(S?"animate-out fade-out-0 slide-out-to-right-full duration-200 fill-mode-forwards pointer-events-none":"animate-slide-in","\n "),children:[(0,n.jsx)(m,{type:a,iconColor:f.iconColor}),(0,n.jsx)("p",{className:"flex-1 text-sm font-medium",children:r}),(0,n.jsx)("button",{"data-testid":"toast-close-button",onClick:E,"aria-label":l("closeNotification"),className:"\n ".concat(f.textColor,"\n hover:opacity-70\n focus:outline-none focus:ring-2 focus:ring-offset-2\n transition-opacity\n "),children:(0,n.jsx)(d.A,{className:"h-4 w-4"})})]})}function w(e){let{toasts:t,onClose:r}=e,[s,i]=(0,o.useState)(!1);(0,o.useEffect)(()=>{i(!0)},[]);let c=(0,n.jsx)("div",{"data-testid":"toast-container","aria-live":"polite",className:"fixed bottom-4 right-4 flex flex-col gap-2",style:{zIndex:f.M.TOAST},children:t.map(e=>(0,n.jsx)(h,{id:e.id,message:e.message,type:e.type,onClose:r,duration:e.duration},e.id))});return s?(0,a.createPortal)(c,document.body):null}function g(){let[e,t]=(0,o.useState)([]),r=(0,o.useRef)(0),n=(0,o.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3e3,a="toast-".concat(++r.current,"-").concat(Date.now()),s={id:a,message:e,type:n,duration:o};return t(e=>[...e,s]),a},[]),a=(0,o.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e))},[]),s=(0,o.useCallback)(()=>{t([])},[]);return(0,o.useMemo)(()=>({toasts:e,showToast:n,removeToast:a,clearToasts:s}),[e,n,a,s])}let S=(0,o.createContext)(null);function b(e){let{children:t}=e,r=g();return(0,n.jsxs)(S.Provider,{value:r,children:[t,(0,n.jsx)(w,{toasts:r.toasts,onClose:r.removeToast})]})}function E(){let e=(0,o.useContext)(S),t=g();return null!=e?e:t}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6488],{2317:(e,t,r)=>{r.d(t,{V:()=>a});var n=r(12115);function o(){try{let e="__localStorage_test__";return window.localStorage.setItem(e,"test"),window.localStorage.removeItem(e),!0}catch(e){return!1}}function a(e){let{key:t,defaultValue:r,validate:a,serialize:s=JSON.stringify,deserialize:i=JSON.parse}=e,c=(0,n.useRef)(r),l=(0,n.useRef)(a),u=(0,n.useRef)(s),d=(0,n.useRef)(i);c.current=r,l.current=a,u.current=s,d.current=i;let[f,p]=(0,n.useState)(!1),[y,m]=(0,n.useState)(r),h=(0,n.useCallback)(()=>{if(!o())return c.current;try{let e=window.localStorage.getItem(t);if(null===e)return c.current;let r=d.current(e);if(l.current)return l.current(r)?r:c.current;return r}catch(e){return c.current}},[t]),w=(0,n.useCallback)(e=>{if(o())try{let r=u.current(e);window.localStorage.setItem(t,r)}catch(e){}},[t]),g=(0,n.useCallback)(e=>{m(t=>{let r="function"==typeof e?e(t):e;return w(r),r})},[w]),S=(0,n.useCallback)(()=>{if(o())try{window.localStorage.removeItem(t)}catch(e){}m(c.current)},[t]);return(0,n.useEffect)(()=>{p(o()),m(h())},[h]),{value:y,setValue:g,removeValue:S,isAvailable:f}}},7636:(e,t,r)=>{r.d(t,{LV:()=>c,Si:()=>o,UZ:()=>s,Xn:()=>u,_s:()=>d,nO:()=>l,s6:()=>i});let n=["updatedAt","repositoryName","branchName","status","lastSent"],o=e=>n.includes(e),a={waiting:0,ready:1,running:2,generating:3,idle:4};function s(e){let t=new Set;for(let r of e)!1===r.visible&&t.add(r.path);return t}function i(e,t){return 0===t.size?e.slice():e.filter(e=>{let r=e.repositoryPath;return!r||!t.has(r)})}function c(e){let t=function(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)|0;return Math.abs(t)}(e)%360;return"hsl(".concat(t,", ").concat(65,"%, ").concat(60,"%)")}function l(e,t){if(!e&&!t)return 0;if(!e)return 1;if(!t)return -1;let r=e instanceof Date?e.getTime():new Date(e).getTime();return(t instanceof Date?t.getTime():new Date(t).getTime())-r}function u(e,t,r){let n=[...e];return n.sort((e,n)=>{let o=0;switch(t){case"updatedAt":{let t=e=>e?e instanceof Date?e.getTime():new Date(e).getTime():0,r=t(e.lastActivity);o=t(n.lastActivity)-r;break}case"repositoryName":{let t=e.repositoryName.toLowerCase(),r=n.repositoryName.toLowerCase();o=t.localeCompare(r);break}case"branchName":{let t=e.name.toLowerCase(),r=n.name.toLowerCase();o=t.localeCompare(r);break}case"status":o=a[e.status]-a[n.status];break;case"lastSent":{let t=l(e.lastActivity,n.lastActivity);if(!e.lastActivity&&!n.lastActivity){o=0;break}if(!e.lastActivity)return 1;if(!n.lastActivity)return -1;o=t;break}default:o=0}return("updatedAt"===t||"lastSent"===t?"desc"===r:"asc"===r)?o:-o}),n}function d(e,t,r){let n=new Map;for(let t of e){let e=t.repositoryName;n.has(e)||n.set(e,[]),n.get(e).push(t)}return[...n.keys()].sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).map(e=>({repositoryName:e,branches:u(n.get(e),t,r)}))}},22592:(e,t,r)=>{r.d(t,{Ps:()=>d,W5:()=>u});var n=r(95155),o=r(12115),a=r(38218),s=r(68704);let i="data-pc-size",c={size:s.r5,setSize:()=>{},isMobile:!1,factor:s.d8[s.r5].factor,isAvailable:!1},l=(0,o.createContext)(c);function u(e){let{children:t}=e,{size:r,setSize:c,isAvailable:u}=(0,s.of)(),d=(0,a.a)();(0,o.useEffect)(()=>{if("undefined"==typeof document)return;let e=document.documentElement;return d?void e.removeAttribute(i):(e.setAttribute(i,r),()=>{e.removeAttribute(i)})},[r,d]);let f=(0,o.useMemo)(()=>({size:r,setSize:c,isMobile:d,factor:s.d8[r].factor,isAvailable:u}),[r,c,d,u]);return(0,n.jsx)(l.Provider,{value:f,children:t})}function d(){return(0,o.useContext)(l)}},32916:(e,t,r)=>{r.d(t,{GB:()=>u,VF:()=>d});var n=r(95155),o=r(12115),a=r(7636);let s="updatedAt",i=(0,o.createContext)(null);function c(e,t,r,n){let a=(0,o.useRef)(!0);(0,o.useEffect)(()=>{try{let t=localStorage.getItem(e);t&&n(t)}catch(e){}},[]),(0,o.useEffect)(()=>{if(a.current){a.current=!1;return}try{localStorage.setItem(e,r())}catch(e){}},[t])}function l(e,t){switch(t.type){case"TOGGLE":return{...e,isOpen:!e.isOpen};case"SET_WIDTH":return{...e,width:t.width};case"OPEN_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!0};case"CLOSE_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!1};case"SET_SORT_KEY":return{...e,sortKey:t.sortKey};case"SET_SORT_DIRECTION":return{...e,sortDirection:t.sortDirection};case"LOAD_SORT_SETTINGS":return{...e,sortKey:t.sortKey,sortDirection:t.sortDirection};case"SET_VIEW_MODE":return{...e,viewMode:t.viewMode};default:return e}}function u(e){let{children:t,initialOpen:r=!0,initialWidth:u=224}=e,[d,f]=(0,o.useReducer)(l,{isOpen:r,width:u,isMobileDrawerOpen:!1,sortKey:s,sortDirection:"desc",viewMode:"grouped"});c("mcbd-sidebar-sort","".concat(d.sortKey,":").concat(d.sortDirection),()=>JSON.stringify({sortKey:d.sortKey,sortDirection:d.sortDirection}),e=>{try{let t=JSON.parse(e),r=t.sortDirection,n=(0,a.Si)(t.sortKey)?t.sortKey:s;n&&("asc"===r||"desc"===r)&&f({type:"LOAD_SORT_SETTINGS",sortKey:n,sortDirection:r})}catch(e){}}),c("mcbd-sidebar-view-mode",d.viewMode,()=>d.viewMode,e=>{("grouped"===e||"flat"===e)&&f({type:"SET_VIEW_MODE",viewMode:e})}),c("mcbd-sidebar-width",d.width,()=>String(d.width),e=>{let t=Number(e);!isNaN(t)&&t>0&&f({type:"SET_WIDTH",width:288===t?224:t})});let p=(0,o.useCallback)(()=>{f({type:"TOGGLE"})},[]),y=(0,o.useCallback)(e=>{f({type:"SET_WIDTH",width:e})},[]),m=(0,o.useCallback)(()=>{f({type:"OPEN_MOBILE_DRAWER"})},[]),h=(0,o.useCallback)(()=>{f({type:"CLOSE_MOBILE_DRAWER"})},[]),w=(0,o.useCallback)(e=>{f({type:"SET_SORT_KEY",sortKey:e})},[]),g=(0,o.useCallback)(e=>{f({type:"SET_SORT_DIRECTION",sortDirection:e})},[]),S=(0,o.useCallback)(e=>{f({type:"SET_VIEW_MODE",viewMode:e})},[]),b=(0,o.useMemo)(()=>({isOpen:d.isOpen,width:d.width,isMobileDrawerOpen:d.isMobileDrawerOpen,sortKey:d.sortKey,sortDirection:d.sortDirection,toggle:p,setWidth:y,openMobileDrawer:m,closeMobileDrawer:h,setSortKey:w,setSortDirection:g,viewMode:d.viewMode,setViewMode:S}),[d.isOpen,d.width,d.isMobileDrawerOpen,d.sortKey,d.sortDirection,d.viewMode,p,y,m,h,w,g,S]);return(0,n.jsx)(i.Provider,{value:b,children:t})}function d(){let e=(0,o.useContext)(i);if(!e)throw Error("useSidebarContext must be used within a SidebarProvider");return e}},38218:(e,t,r)=>{r.d(t,{D:()=>a,a:()=>s});var n=r(12115);let o=n.useLayoutEffect,a=768;function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{breakpoint:t=a}=e,[r,s]=(0,n.useState)(!1);return o(()=>{let e=window.matchMedia("(max-width: ".concat(t-1,"px)"));s(e.matches);let r=e=>{s(e.matches)};return e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}},[t]),r}},39649:(e,t,r)=>{r.d(t,{$f:()=>d,H8:()=>u});var n=r(95155),o=r(12115),a=r(80344);let s={PROCESSING:2e3,SESSION_RUNNING:5e3,IDLE:1e4},i=(0,o.createContext)(null),c={selectedWorktreeId:null,worktrees:[],repositories:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function l(e,t){switch(t.type){case"SET_WORKTREES":return{...e,worktrees:t.worktrees,isLoading:!1};case"SET_REPOSITORIES":return{...e,repositories:t.repositories};case"SELECT_WORKTREE":{var r;let n=null!=(r=e.worktrees.find(e=>e.id===t.id))?r:null;return{...e,selectedWorktreeId:t.id,selectedWorktreeDetail:null!=n?n:e.selectedWorktreeDetail,isLoadingDetail:null===n}}case"SET_WORKTREE_DETAIL":return{...e,selectedWorktreeDetail:t.detail};case"SET_LOADING":return{...e,isLoading:t.isLoading};case"SET_LOADING_DETAIL":return{...e,isLoadingDetail:t.isLoadingDetail};case"SET_ERROR":return{...e,error:t.error,isLoading:!1};default:return e}}function u(e){let{children:t,externalWorktrees:r,externalRepositories:u}=e,d=void 0!==r,[f,p]=(0,o.useReducer)(l,c);(0,o.useEffect)(()=>{d&&r&&p({type:"SET_WORKTREES",worktrees:r})},[d,r]),(0,o.useEffect)(()=>{d&&u&&p({type:"SET_REPOSITORIES",repositories:u})},[d,u]);let y=(0,o.useCallback)(async()=>{if(!d){p({type:"SET_LOADING",isLoading:!0}),p({type:"SET_ERROR",error:null});try{var e;let t=await a.y.getAll();p({type:"SET_WORKTREES",worktrees:t.worktrees}),p({type:"SET_REPOSITORIES",repositories:null!=(e=t.repositories)?e:[]})}catch(e){p({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktrees"})}}},[d]),m=(0,o.useCallback)(async e=>{p({type:"SELECT_WORKTREE",id:e}),p({type:"SET_ERROR",error:null});try{a.y.markAsViewed(e).catch(e=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",e)});let t=await a.y.getById(e);p({type:"SET_WORKTREE_DETAIL",detail:t})}catch(e){p({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktree detail"})}finally{p({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),h=(0,o.useCallback)(async()=>{await y()},[y]);(0,o.useEffect)(()=>{d||y()},[y,d]),(0,o.useEffect)(()=>{if(d)return;let e=null,t=!0,r=async()=>{if(t)try{var n,o;let i=await a.y.getAll();p({type:"SET_WORKTREES",worktrees:i.worktrees}),p({type:"SET_REPOSITORIES",repositories:null!=(n=i.repositories)?n:[]});let c=(o=i.worktrees).some(e=>e.isProcessing||e.isWaitingForResponse)?s.PROCESSING:o.some(e=>e.isSessionRunning)?s.SESSION_RUNNING:s.IDLE;t&&(e=setTimeout(r,c))}catch(n){if(n instanceof a.hD&&401===n.status)return;console.error("[WorktreeSelectionContext] Polling error:",n),t&&(e=setTimeout(r,s.SESSION_RUNNING))}};return r(),()=>{t=!1,e&&clearTimeout(e)}},[d]);let w={selectedWorktreeId:f.selectedWorktreeId,worktrees:f.worktrees,repositories:f.repositories,selectedWorktreeDetail:f.selectedWorktreeDetail,isLoadingDetail:f.isLoadingDetail,error:f.error,selectWorktree:m,refreshWorktrees:h};return(0,n.jsx)(i.Provider,{value:w,children:t})}function d(){let e=(0,o.useContext)(i);if(!e)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return e}},52703:(e,t,r)=>{r.d(t,{Oo:()=>o,ST:()=>n,zS:()=>a});let n="client_version",o="version_mismatch";function a(e){let t;try{t=JSON.parse(e)}catch(e){return null}if(!t||"object"!=typeof t)return null;let r=t;if("broadcast"===r.type){let e=r.data;return e&&"object"==typeof e?"string"!=typeof e.type?null:(void 0===e.worktreeId&&"string"==typeof r.worktreeId&&(e.worktreeId=r.worktreeId),e):null}return"string"==typeof r.type?r:null}},63365:(e,t,r)=>{r.d(t,{tS:()=>u,xM:()=>d,T3:()=>f});var n=r(95155),o=r(12115),a=r(52703);function s(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null}let i=()=>{},c={status:"disconnected",connected:!1,subscribe:i,unsubscribe:i,addListener:()=>i},l=(0,o.createContext)(null);function u(e){let{children:t,enabled:r=!0}=e,i=(0,o.useRef)(new Set),c=(0,o.useRef)(new Map),{status:u,subscribe:d,unsubscribe:f}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onEvent:t,onStatusChange:r,autoReconnect:n=!0,reconnectBaseDelay:i=1e3,reconnectMaxDelay:c=3e4,enabled:l=!0}=e,[u,d]=(0,o.useState)("disconnected"),f=(0,o.useRef)(null),p=(0,o.useRef)(null),y=(0,o.useRef)(0),m=(0,o.useRef)(new Set),h=(0,o.useRef)(!1),w=(0,o.useRef)(t);w.current=t;let g=(0,o.useRef)(r);g.current=r;let S=(0,o.useCallback)(e=>{var t;d(e),null==(t=g.current)||t.call(g,e)},[]),b=(0,o.useCallback)(()=>{null!==p.current&&(clearTimeout(p.current),p.current=null)},[]),E=(0,o.useCallback)(()=>{if(!l)return;let e=s();if(!e||f.current&&(f.current.readyState===e.OPEN||f.current.readyState===e.CONNECTING))return;b(),h.current=!1,S("connecting");let t="https:"===window.location.protocol?"wss:":"ws:",r=new e("".concat(t,"//").concat(window.location.host));f.current=r,r.onopen=()=>{y.current=0,S("connected");try{r.send(JSON.stringify({type:a.ST,version:"0.21.1"}))}catch(e){}m.current.forEach(e=>{try{r.send(JSON.stringify({type:"subscribe",worktreeId:e}))}catch(e){}})},r.onmessage=e=>{var t;let r="string"==typeof e.data?e.data:String(e.data),n=(0,a.zS)(r);n&&(null==(t=w.current)||t.call(w,n))},r.onerror=()=>{S("error")},r.onclose=()=>{var e;if(f.current=null,S("disconnected"),h.current||!n||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;let t=(e=y.current,Math.min(i*2**Math.max(0,e),c));y.current+=1,p.current=setTimeout(()=>{p.current=null,E()},t)}},[l,n,i,c,S,b]),T=(0,o.useCallback)(()=>{if(b(),h.current=!0,f.current){try{f.current.close(1e3,"Client disconnect")}catch(e){}f.current=null}},[b]),C=(0,o.useCallback)(e=>{let t=f.current,r=s();if(t&&r&&t.readyState===r.OPEN)try{t.send(JSON.stringify(e))}catch(e){}},[]),k=(0,o.useCallback)(e=>{m.current.has(e)||(m.current.add(e),C({type:"subscribe",worktreeId:e}))},[C]),v=(0,o.useCallback)(e=>{m.current.has(e)&&(m.current.delete(e),C({type:"unsubscribe",worktreeId:e}))},[C]);return(0,o.useEffect)(()=>{if(l)return E(),()=>{T()}},[l,E,T]),(0,o.useEffect)(()=>{if(!l||"undefined"==typeof document)return;let e=()=>{"visible"===document.visibilityState&&(f.current||(y.current=0,E()))};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[l,E]),{status:u,subscribe:k,unsubscribe:v,send:C}}({enabled:r,onEvent:(0,o.useCallback)(e=>{i.current.forEach(t=>{try{t(e)}catch(e){}})},[])}),p=(0,o.useCallback)(e=>{var t;let r=c.current,n=null!=(t=r.get(e))?t:0;r.set(e,n+1),0===n&&d(e)},[d]),y=(0,o.useCallback)(e=>{var t;let r=c.current,n=null!=(t=r.get(e))?t:0;n<=1?(r.delete(e),f(e)):r.set(e,n-1)},[f]),m=(0,o.useCallback)(e=>(i.current.add(e),()=>{i.current.delete(e)}),[]),h=(0,o.useMemo)(()=>({status:u,connected:"connected"===u,subscribe:p,unsubscribe:y,addListener:m}),[u,p,y,m]);return(0,n.jsx)(l.Provider,{value:h,children:t})}function d(){var e;return null!=(e=(0,o.useContext)(l))?e:c}function f(e){let{addListener:t}=d(),r=(0,o.useRef)(e);r.current=e,(0,o.useEffect)(()=>t(e=>r.current(e)),[t])}},65380:(e,t,r)=>{r.d(t,{H:()=>i,O:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)(!1);function s(e){let{children:t,authEnabled:r}=e;return(0,n.jsx)(a.Provider,{value:r,children:t})}function i(){return(0,o.useContext)(a)}},66966:(e,t,r)=>{r.d(t,{g7:()=>c,rC:()=>u,Fn:()=>l});var n=r(95155),o=r(12115),a=r(63365),s=r(39649);let i=(0,o.createContext)(null);function c(e){let{children:t}=e,{worktrees:r,repositories:c,isLoading:l,error:u,refresh:d}=function(){let[e,t]=(0,o.useState)([]),[r,n]=(0,o.useState)([]),[s,i]=(0,o.useState)(!0),[c,l]=(0,o.useState)(null),u=(0,o.useRef)(null),d=(0,o.useRef)([]),f=(0,o.useRef)(null),{connected:p,subscribe:y,unsubscribe:m,addListener:h}=(0,a.xM)(),w=(0,o.useRef)(p);w.current=p;let g=(0,o.useCallback)(async()=>{try{var e,r;l(null);let a=await fetch("/api/worktrees");if(!a.ok)throw Error("Failed to fetch worktrees: ".concat(a.status));let s=await a.json(),i=null!=(e=s.worktrees)?e:[],c=null!=(r=s.repositories)?r:[];(0,o.startTransition)(()=>{t(i),n(c)}),d.current=i}catch(e){l(e instanceof Error?e:Error(String(e)))}finally{i(!1)}},[]);(0,o.useEffect)(()=>{g()},[g]);let S=(0,o.useCallback)(()=>d.current.some(e=>!0===e.isSessionRunning),[]),b=(0,o.useCallback)(()=>{let e=S();return w.current?e?2e4:6e4:e?5e3:3e4},[S]),E=(0,o.useCallback)(()=>{null!==u.current&&(clearInterval(u.current),u.current=null),f.current=null},[]),T=(0,o.useCallback)(()=>{E();let e=b();f.current=e,u.current=setInterval(()=>{g()},e)},[b,g,E]);(0,o.useEffect)(()=>{let e=()=>{document.hidden?E():(g(),T())},t=setTimeout(()=>{T()},0);return document.addEventListener("visibilitychange",e),()=>{clearTimeout(t),E(),document.removeEventListener("visibilitychange",e)}},[g,T,E]),(0,o.useEffect)(()=>{if(d.current=e,"undefined"!=typeof document&&document.hidden||null===f.current)return;let t=b();f.current!==t&&T()},[e,p,b,T]);let C=e.map(e=>e.id).sort().join(" ");return(0,o.useEffect)(()=>{let e=C.length>0?C.split(" "):[];return e.forEach(e=>y(e)),()=>{e.forEach(e=>m(e))}},[C,y,m]),(0,o.useEffect)(()=>h(e=>{if("session_status_changed"===e.type&&"string"==typeof e.worktreeId){let r=e.worktreeId,n=e.isRunning;if("boolean"==typeof n){if((null!=e.cliTool||null!=e.instance)&&!1===n)return void g();(0,o.startTransition)(()=>{t(e=>{let t=!1,o=e.map(e=>e.id===r&&e.isSessionRunning!==n?(t=!0,{...e,isSessionRunning:n}):e);return t?o:e})})}}else("message"===e.type||"message_updated"===e.type)&&g()}),[h,g]),{worktrees:e,repositories:r,isLoading:s,error:c,refresh:g}}(),f=(0,o.useMemo)(()=>({worktrees:r,repositories:c,isLoading:l,error:u,refresh:d}),[r,c,l,u,d]);return(0,n.jsx)(i.Provider,{value:f,children:(0,n.jsx)(s.H8,{externalWorktrees:r,externalRepositories:c,children:t})})}function l(){let e=(0,o.useContext)(i);if(null===e)throw Error("useWorktreesCacheContext must be used within a WorktreesCacheProvider");return e}function u(){return(0,o.useContext)(i)}},68704:(e,t,r)=>{r.d(t,{Uf:()=>a,d8:()=>s,fM:()=>i,of:()=>l,r5:()=>o,rq:()=>c});var n=r(2317);let o="medium",a=["large","medium","small","xsmall"],s={large:{value:"large",rootFontSizePx:18,factor:1.125,terminalFontSize:16},medium:{value:"medium",rootFontSizePx:16,factor:1,terminalFontSize:14},small:{value:"small",rootFontSizePx:14,factor:.875,terminalFontSize:12},xsmall:{value:"xsmall",rootFontSizePx:12.5,factor:.78,terminalFontSize:11}};function i(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(s,e)}function c(e){return s[e].terminalFontSize}function l(){let{value:e,setValue:t,isAvailable:r}=(0,n.V)({key:"mcbd-pc-display-size",defaultValue:o,validate:i});return{size:e,setSize:t,isAvailable:r}}},70628:(e,t,r)=>{r.d(t,{K:()=>i,S:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function s(e){let{children:t}=e,[r,s]=(0,o.useState)(!1),i=(0,o.useCallback)(()=>s(e=>!e),[]),c=(0,o.useMemo)(()=>({open:r,setOpen:s,toggle:i}),[r,i]);return(0,n.jsx)(a.Provider,{value:c,children:t})}function i(){return(0,o.useContext)(a)}},80344:(e,t,r)=>{r.d(t,{$T:()=>l,GQ:()=>d,Rx:()=>i,gC:()=>c,hD:()=>n,hS:()=>u,y:()=>s});class n extends Error{constructor(e,t,r){super(e),this.status=t,this.data=r,this.name="ApiError"}}async function o(e,t,r){if(!(e.headers.get("content-type")||"").includes("application/json"))return t;try{return await e.json()}catch(e){return t}}async function a(e,t){try{let r=new Headers(null==t?void 0:t.headers);r.set("Content-Type","application/json");let a=await fetch(e,{...t,headers:r}),s=a.headers.get("content-type")||"";if(a.redirected&&a.url.includes("/login"))throw new n("Authentication required",401);if(!a.ok){let e=await o(a,{},"error-body");throw new n(e.error||"HTTP error ".concat(a.status),a.status,e)}if(!s.includes("application/json"))throw new n("Unexpected response format",a.status);return a.json()}catch(e){if(e instanceof n)throw e;throw new n(e instanceof Error?e.message:"Unknown error",0,e)}}let s={getAll:async()=>a("/api/worktrees"),getById:async e=>a("/api/worktrees/".concat(e)),updateDescription:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({description:t})}),updateLink:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({link:t})}),toggleFavorite:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({favorite:t})}),updateStatus:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({status:t})}),updateCliTool:async(e,t)=>a("/api/worktrees/".concat(e),{method:"PATCH",body:JSON.stringify({cliToolId:t})}),markAsViewed:async e=>a("/api/worktrees/".concat(e,"/viewed"),{method:"PATCH"}),async getMessages(e,t,r,n){let o=new URLSearchParams;return t&&o.append("cliTool",t),r&&o.append("includeArchived","true"),"number"==typeof n&&Number.isFinite(n)&&o.append("limit",String(n)),a("/api/worktrees/".concat(e,"/messages").concat(o.toString()?"?".concat(o.toString()):""))},async sendMessage(e,t,r){let n={content:t};return(null==r?void 0:r.cliToolId)&&(n.cliToolId=r.cliToolId),(null==r?void 0:r.instanceId)&&(n.instanceId=r.instanceId),(null==r?void 0:r.imagePath)&&(n.imagePath=r.imagePath),a("/api/worktrees/".concat(e,"/send"),{method:"POST",body:JSON.stringify(n)})},async uploadImageFile(e,t){let r=Date.now(),n="".concat(r,"-").concat(t.name),a=".commandmate/attachments",s=new FormData;s.append("file",new File([t],n,{type:t.type}));let i=await fetch("/api/worktrees/".concat(e,"/upload/").concat(a),{method:"POST",body:s});if(!i.ok){var c;let e=await o(i,{},"error-body");throw Error((null==e||null==(c=e.error)?void 0:c.message)||"Upload failed (HTTP ".concat(i.status,")"))}return{path:(await o(i,{},"response-body")).path||"".concat(a,"/").concat(n)}},getLogs:async e=>a("/api/worktrees/".concat(e,"/logs")),async getLogFile(e,t,r){let n=(null==r?void 0:r.sanitize)?"?sanitize=true":"";return a("/api/worktrees/".concat(e,"/logs/").concat(t).concat(n))},async killSession(e,t,r){let n=new URLSearchParams;t&&n.set("cliTool",t),r&&n.set("instance",r);let o=n.toString();return a("/api/worktrees/".concat(e,"/kill-session").concat(o?"?".concat(o):""),{method:"POST"})}},i={scan:async e=>a("/api/repositories/scan",{method:"POST",body:JSON.stringify({repositoryPath:e})}),sync:async()=>a("/api/repositories/sync",{method:"POST"}),delete:async e=>a("/api/repositories",{method:"DELETE",body:JSON.stringify({repositoryPath:e})}),async clone(e,t){var r;return a("/api/repositories/clone",{method:"POST",body:JSON.stringify({cloneUrl:e,fork:null!=(r=null==t?void 0:t.fork)&&r})})},getCloneStatus:async e=>a("/api/repositories/clone/".concat(e)),getExcluded:async()=>a("/api/repositories/excluded"),restore:async e=>a("/api/repositories/restore",{method:"PUT",body:JSON.stringify({repositoryPath:e})}),list:async()=>a("/api/repositories"),updateDisplayName:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({displayName:t})}),updateVisibility:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({visible:t})}),updateEnabled:async(e,t)=>a("/api/repositories/".concat(encodeURIComponent(e)),{method:"PUT",body:JSON.stringify({enabled:t})}),validatePath:async e=>a("/api/repositories/validate-path",{method:"POST",body:JSON.stringify({repositoryPath:e})})},c={async browse(e){let t=e?"?path=".concat(encodeURIComponent(e)):"";return a("/api/fs/browse".concat(t))},addRecentPath:async e=>a("/api/fs/recent-paths",{method:"POST",body:JSON.stringify({path:e})})},l={getAll:async e=>(await a("/api/worktrees/".concat(e,"/memos"))).memos,create:async(e,t)=>(await a("/api/worktrees/".concat(e,"/memos"),{method:"POST",body:JSON.stringify(t||{})})).memo,update:async(e,t,r)=>(await a("/api/worktrees/".concat(e,"/memos/").concat(t),{method:"PUT",body:JSON.stringify(r)})).memo,delete:async(e,t)=>a("/api/worktrees/".concat(e,"/memos/").concat(t),{method:"DELETE"}),async reorder(e,t){await a("/api/worktrees/".concat(e,"/memos"),{method:"PATCH",body:JSON.stringify({memoIds:t})})}};function u(e){return e instanceof n||e instanceof Error?e.message:"An unknown error occurred"}let d={checkForUpdate:async()=>a("/api/app/update-check",{method:"GET"}),startUpdate:async()=>a("/api/app/update",{method:"POST"}),async ping(){try{return(await fetch("/api/auth/status",{cache:"no-store"})).ok}catch(e){return!1}}}},89275:(e,t,r)=>{r.d(t,{Bo:()=>u,Hq:()=>c});var n=r(95155),o=r(12115),a=r(20063);let s={startTransition:e=>e()},i=(0,o.createContext)(null);function c(){var e;let t=(0,a.useRouter)(),{startTransition:r}=null!=(e=(0,o.useContext)(i))?e:s;return(0,o.useMemo)(()=>({push:e=>r(()=>t.push(e)),replace:e=>r(()=>t.replace(e))}),[t,r])}function l(e){let{onCommit:t}=e,r=(0,a.usePathname)(),n=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(!n.current){n.current=!0;return}t()},[r,t]),null}function u(e){let{children:t}=e,r=(0,o.useRef)(null),a=(0,o.useCallback)(()=>{var e;null==(e=r.current)||e.call(r)},[]),s=(0,o.useCallback)(e=>{var t;t=()=>new Promise(t=>{let n=!1,o=()=>{n||(n=!0,t())};r.current=o,e(),window.setTimeout(o,500)}),"undefined"==typeof document||"function"!=typeof document.startViewTransition||"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?t():document.startViewTransition(t)},[]),c=(0,o.useMemo)(()=>({startTransition:s}),[s]);return(0,n.jsxs)(i.Provider,{value:c,children:[(0,n.jsx)(l,{onCommit:a}),t]})}},92614:(e,t,r)=>{r.d(t,{C:()=>i,E:()=>s});var n=r(95155),o=r(12115);let a=(0,o.createContext)({open:!1,setOpen:()=>{},toggle:()=>{}});function s(e){let{children:t}=e,[r,s]=(0,o.useState)(!1),i=(0,o.useCallback)(()=>s(e=>!e),[]),c=(0,o.useMemo)(()=>({open:r,setOpen:s,toggle:i}),[r,i]);return(0,n.jsx)(a.Provider,{value:c,children:t})}function i(){return(0,o.useContext)(a)}},94442:(e,t,r)=>{r.d(t,{dj:()=>E,tE:()=>b});var n=r(95155),o=r(12115),a=r(47650),s=r(18955),i=r(42529),c=r(78874),l=r(52056),u=r(23327),d=r(65229),f=r(59854),p=r(9900),y=r(9286);function m(e){let{type:t,iconColor:r}=e,o="h-5 w-5 ".concat(r);switch(t){case"success":return(0,n.jsx)(i.A,{className:o,"data-testid":"toast-icon-success"});case"error":return(0,n.jsx)(c.A,{className:o,"data-testid":"toast-icon-error"});case"warning":return(0,n.jsx)(l.A,{className:o,"data-testid":"toast-icon-warning"});default:return(0,n.jsx)(u.A,{className:o,"data-testid":"toast-icon-info"})}}function h(e){let{id:t,message:r,type:a,onClose:i,duration:c=3e3}=e,l=(0,s.c)("common"),u=(0,o.useRef)(null),f=function(e){switch(e){case"success":return{bgColor:"bg-success-subtle",borderColor:"border-success-border",textColor:"text-success-foreground",iconColor:"text-success-foreground"};case"error":return{bgColor:"bg-danger-subtle",borderColor:"border-danger-border",textColor:"text-danger-foreground",iconColor:"text-danger-foreground"};case"warning":return{bgColor:"bg-warning-subtle",borderColor:"border-warning-border",textColor:"text-warning-foreground",iconColor:"text-warning-foreground"};default:return{bgColor:"bg-info-subtle",borderColor:"border-info-border",textColor:"text-info-foreground",iconColor:"text-info-foreground"}}}(a),[h,w]=(0,o.useState)(!0),{shouldRender:g,isExiting:S}=(0,y.O)(h,p.Ys),b=(0,o.useRef)(i);b.current=i,(0,o.useEffect)(()=>{g||b.current(t)},[g,t]),(0,o.useEffect)(()=>(c>0&&(u.current=setTimeout(()=>{w(!1)},c)),()=>{u.current&&clearTimeout(u.current)}),[c]);let E=(0,o.useCallback)(()=>{u.current&&clearTimeout(u.current),w(!1)},[]);return(0,n.jsxs)("div",{"data-testid":"toast-".concat(t),role:"alert",className:"\n ".concat(f.bgColor,"\n ").concat(f.borderColor,"\n ").concat(f.textColor,"\n border rounded-lg shadow-lg p-4 min-w-[300px] max-w-[400px]\n flex items-start gap-3\n ").concat(S?"animate-out fade-out-0 slide-out-to-right-full duration-200 fill-mode-forwards pointer-events-none":"animate-slide-in","\n "),children:[(0,n.jsx)(m,{type:a,iconColor:f.iconColor}),(0,n.jsx)("p",{className:"flex-1 text-sm font-medium",children:r}),(0,n.jsx)("button",{"data-testid":"toast-close-button",onClick:E,"aria-label":l("closeNotification"),className:"\n ".concat(f.textColor,"\n hover:opacity-70\n focus:outline-none focus:ring-2 focus:ring-offset-2\n transition-opacity\n "),children:(0,n.jsx)(d.A,{className:"h-4 w-4"})})]})}function w(e){let{toasts:t,onClose:r}=e,[s,i]=(0,o.useState)(!1);(0,o.useEffect)(()=>{i(!0)},[]);let c=(0,n.jsx)("div",{"data-testid":"toast-container","aria-live":"polite",className:"fixed bottom-4 right-4 flex flex-col gap-2",style:{zIndex:f.M.TOAST},children:t.map(e=>(0,n.jsx)(h,{id:e.id,message:e.message,type:e.type,onClose:r,duration:e.duration},e.id))});return s?(0,a.createPortal)(c,document.body):null}function g(){let[e,t]=(0,o.useState)([]),r=(0,o.useRef)(0),n=(0,o.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3e3,a="toast-".concat(++r.current,"-").concat(Date.now()),s={id:a,message:e,type:n,duration:o};return t(e=>[...e,s]),a},[]),a=(0,o.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e))},[]),s=(0,o.useCallback)(()=>{t([])},[]);return(0,o.useMemo)(()=>({toasts:e,showToast:n,removeToast:a,clearToasts:s}),[e,n,a,s])}let S=(0,o.createContext)(null);function b(e){let{children:t}=e,r=g();return(0,n.jsxs)(S.Provider,{value:r,children:[t,(0,n.jsx)(w,{toasts:r.toasts,onClose:r.removeToast})]})}function E(){let e=(0,o.useContext)(S),t=g();return null!=e?e:t}}}]);
|