commandmate 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +19 -23
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/1.pack +0 -0
- package/.next/cache/webpack/client-production/2.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +69 -55
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/route.js +8 -8
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -2
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js +4 -4
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +6 -6
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +2 -4
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +8 -8
- package/.next/server/chunks/{3294.js → 1628.js} +3 -3
- package/.next/server/chunks/185.js +36 -0
- package/.next/server/chunks/3860.js +1 -1
- package/.next/server/chunks/4893.js +2 -2
- package/.next/server/chunks/4952.js +1 -1
- package/.next/server/chunks/5488.js +6 -6
- package/.next/server/chunks/7425.js +34 -31
- package/.next/server/chunks/7566.js +2 -2
- package/.next/server/chunks/8199.js +1 -0
- package/.next/server/chunks/8585.js +1 -1
- package/.next/server/chunks/8693.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/12-00c528d46a0a0a1d.js +1 -0
- package/.next/static/chunks/{13.feeafc7cc620f8c4.js → 13.b9521543496f4468.js} +1 -1
- package/.next/static/chunks/1334.bfedf44ee9fe2761.js +1 -0
- package/.next/static/chunks/143.eb6b4671490cd223.js +1 -0
- package/.next/static/chunks/{3574.7a94c27e6a496a56.js → 1442.74b5f4de9a4b4e1b.js} +1 -1
- package/.next/static/chunks/2083-b5bed0c77cc53281.js +1 -0
- package/.next/static/chunks/2725.eb2d236c8030711c.js +1 -0
- package/.next/static/chunks/3398-3d40a17387bd554b.js +1 -0
- package/.next/static/chunks/3516.3c576047408cae6b.js +1 -0
- package/.next/static/chunks/3559.422c6ca760b85750.js +1 -0
- package/.next/static/chunks/3956.52c5b9a0071a641d.js +1 -0
- package/.next/static/chunks/4012.32b576a4fa621774.js +1 -0
- package/.next/static/chunks/4212.e7ba1009bc1da62d.js +131 -0
- package/.next/static/chunks/4303.caf91e86105d5e70.js +1 -0
- package/.next/static/chunks/4327.4dcda9b6fab6a385.js +82 -0
- package/.next/static/chunks/4671.d86d21d0dfdace41.js +1 -0
- package/.next/static/chunks/5518.ec88dcb5a27b17fe.js +1 -0
- package/.next/static/chunks/6434.08d262283371d333.js +1 -0
- package/.next/static/chunks/{656.5e2de0173f5a06bd.js → 656.dc26b973d07d9627.js} +5 -5
- package/.next/static/chunks/7119.01777af21b55740c.js +1 -0
- package/.next/static/chunks/7293.fb88bb102af4aa04.js +1 -0
- package/.next/static/chunks/8913-40625650292eb3d0.js +1 -0
- package/.next/static/chunks/8977.fc18b8260cd8bc1f.js +1 -0
- package/.next/static/chunks/9552.d959149efd41e84b.js +1 -0
- package/.next/static/chunks/app/layout-7198a7a49aa21a97.js +1 -0
- package/.next/static/chunks/app/page-7498cf75e69d9227.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-0599f64a8e80d255.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-94ad7a1ce1f0c440.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-175b618c047bc992.js +1 -0
- package/.next/static/chunks/d3ac728e.daf595a898e9b720.js +1 -0
- package/.next/static/chunks/webpack-f7111aab807d73b9.js +1 -0
- package/.next/static/css/f7dc01350168df01.css +3 -0
- package/.next/trace +5 -5
- package/README.md +66 -56
- package/dist/server/server.js +5 -0
- package/dist/server/src/lib/auto-yes-manager.js +58 -18
- package/dist/server/src/lib/claude-session.js +9 -3
- package/dist/server/src/lib/cli-session.js +60 -10
- package/dist/server/src/lib/cli-tools/codex.js +7 -7
- package/dist/server/src/lib/cli-tools/gemini.js +3 -0
- package/dist/server/src/lib/cli-tools/opencode-config.js +179 -33
- package/dist/server/src/lib/cli-tools/opencode.js +5 -0
- package/dist/server/src/lib/cli-tools/vibe-local.js +3 -0
- package/dist/server/src/lib/cmate-parser.js +7 -7
- package/dist/server/src/lib/db-migrations.js +18 -1
- package/dist/server/src/lib/errors.js +153 -0
- package/dist/server/src/lib/prompt-answer-sender.js +3 -0
- package/dist/server/src/lib/prompt-detector.js +49 -7
- package/dist/server/src/lib/resource-cleanup.js +257 -0
- package/dist/server/src/lib/schedule-manager.js +269 -83
- package/dist/server/src/lib/tmux-capture-cache.js +221 -0
- package/dist/server/src/lib/tmux.js +41 -20
- package/dist/server/src/types/markdown-editor.js +9 -1
- package/package.json +11 -8
- package/.next/server/chunks/539.js +0 -35
- package/.next/server/chunks/7458.js +0 -1
- package/.next/server/chunks/7808.js +0 -1
- package/.next/static/chunks/1038-3509435b68c0967e.js +0 -1
- package/.next/static/chunks/1098.49268c9fe1b028fa.js +0 -1
- package/.next/static/chunks/2335-98a211e00b94c7ac.js +0 -1
- package/.next/static/chunks/3559.f073f72c4466ce0e.js +0 -1
- package/.next/static/chunks/3843.3fdda732987f7bb8.js +0 -1
- package/.next/static/chunks/4212.52c1bb34fc97d0d0.js +0 -131
- package/.next/static/chunks/4327.157a4c226d919531.js +0 -60
- package/.next/static/chunks/4362.7bd6f0282e49d79b.js +0 -1
- package/.next/static/chunks/4721.40615a5f4f32b5fb.js +0 -1
- package/.next/static/chunks/5112.17318d1c6b28044b.js +0 -1
- package/.next/static/chunks/6406.9653f0d41ab85059.js +0 -1
- package/.next/static/chunks/6792.3c01ac4dda4b5c6d.js +0 -1
- package/.next/static/chunks/8091-d65d2ab6daed23c6.js +0 -1
- package/.next/static/chunks/8125.245a9df052d274fb.js +0 -1
- package/.next/static/chunks/8522.1607e96011c66877.js +0 -1
- package/.next/static/chunks/8841.dadeb1ece8e46004.js +0 -1
- package/.next/static/chunks/8885.f8d9912b40d74811.js +0 -1
- package/.next/static/chunks/9178-88850a7c48deea07.js +0 -1
- package/.next/static/chunks/9552.b7dfb7903ead934b.js +0 -1
- package/.next/static/chunks/app/layout-9110f9a5e41c6bf4.js +0 -1
- package/.next/static/chunks/app/page-9e523a8f415bc707.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-4a3c0861367e0391.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-8fb4dc30b58a5681.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-5d85a7e508ce36d3.js +0 -1
- package/.next/static/chunks/d3ac728e.6c9c508274d4d2d5.js +0 -1
- package/.next/static/chunks/webpack-81c97591dd5567ac.js +0 -1
- package/.next/static/css/45b3a41370668314.css +0 -3
- /package/.next/static/chunks/{30d07d85-393352a92199f695.js → 30d07d85.1dc99a921fc18e34.js} +0 -0
- /package/.next/static/{p3hosTZoJ22r35fWwUoLr → dwGMLEU53HOvFOWqiZOT0}/_buildManifest.js +0 -0
- /package/.next/static/{p3hosTZoJ22r35fWwUoLr → dwGMLEU53HOvFOWqiZOT0}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";exports.id=185,exports.ids=[185],exports.modules={11865:(e,t,a)=>{a.d(t,{Ix:()=>m,pm:()=>g});var r=a(10326),s=a(17577),l=a(28567),n=a(69669),o=a(18019),i=a(94019),c=a(22202);let d=3e3;function u({type:e,iconColor:t}){let a=`h-5 w-5 ${t}`;switch(e){case"success":return r.jsx(l.Z,{className:a,"data-testid":"toast-icon-success"});case"error":return r.jsx(n.Z,{className:a,"data-testid":"toast-icon-error"});default:return r.jsx(o.Z,{className:a,"data-testid":"toast-icon-info"})}}function x({id:e,message:t,type:a,onClose:l,duration:n=d}){let o=(0,s.useRef)(null),c=function(e){switch(e){case"success":return{bgColor:"bg-green-50",borderColor:"border-green-200",textColor:"text-green-800",iconColor:"text-green-500"};case"error":return{bgColor:"bg-red-50",borderColor:"border-red-200",textColor:"text-red-800",iconColor:"text-red-500"};default:return{bgColor:"bg-cyan-50",borderColor:"border-cyan-200",textColor:"text-cyan-800",iconColor:"text-cyan-500"}}}(a),x=(0,s.useCallback)(()=>{o.current&&clearTimeout(o.current),l(e)},[e,l]);return(0,r.jsxs)("div",{"data-testid":`toast-${e}`,role:"alert",className:`
|
|
2
|
+
${c.bgColor}
|
|
3
|
+
${c.borderColor}
|
|
4
|
+
${c.textColor}
|
|
5
|
+
border rounded-lg shadow-lg p-4 min-w-[300px] max-w-[400px]
|
|
6
|
+
flex items-start gap-3
|
|
7
|
+
animate-slide-in
|
|
8
|
+
`,children:[r.jsx(u,{type:a,iconColor:c.iconColor}),r.jsx("p",{className:"flex-1 text-sm font-medium",children:t}),r.jsx("button",{"data-testid":"toast-close-button",onClick:x,"aria-label":"Close notification",className:`
|
|
9
|
+
${c.textColor}
|
|
10
|
+
hover:opacity-70
|
|
11
|
+
focus:outline-none focus:ring-2 focus:ring-offset-2
|
|
12
|
+
transition-opacity
|
|
13
|
+
`,children:r.jsx(i.Z,{className:"h-4 w-4"})})]})}function m({toasts:e,onClose:t}){return r.jsx("div",{"data-testid":"toast-container","aria-live":"polite",className:"fixed bottom-4 right-4 flex flex-col gap-2",style:{zIndex:c.k.TOAST},children:e.map(e=>r.jsx(x,{id:e.id,message:e.message,type:e.type,onClose:t,duration:e.duration},e.id))})}function g(){let[e,t]=(0,s.useState)([]),a=(0,s.useRef)(0);return{toasts:e,showToast:(0,s.useCallback)((e,r="info",s=d)=>{let l=`toast-${++a.current}-${Date.now()}`,n={id:l,message:e,type:r,duration:s};return t(e=>[...e,n]),l},[]),removeToast:(0,s.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e))},[]),clearToasts:(0,s.useCallback)(()=>{t([])},[])}}},17706:(e,t,a)=>{a.d(t,{Vw:()=>D});var r=a(10326),s=a(17577);a(90434);var l=a(87403),n=a(2982),o=a(35047),i=a(3885),c=a(61421),d=a(2491);function u({status:e,label:t}){let a=c.F4[e],s=`${t}: ${a.label}`;return"spinner"===a.type?r.jsx("span",{className:`w-2 h-2 rounded-full flex-shrink-0 border-2 border-t-transparent animate-spin ${a.className}`,title:s,"aria-label":s}):r.jsx("span",{className:`w-2 h-2 rounded-full flex-shrink-0 ${a.className}`,title:s,"aria-label":s})}let x=(0,s.memo)(function({branch:e,isSelected:t,onClick:a}){return(0,r.jsxs)("button",{"data-testid":"branch-list-item",onClick:a,"aria-current":t?"true":void 0,className:`
|
|
14
|
+
w-full px-4 py-3 flex flex-col gap-1
|
|
15
|
+
hover:bg-gray-800 transition-colors
|
|
16
|
+
focus:outline-none focus:ring-2 focus:ring-inset focus:ring-cyan-500
|
|
17
|
+
${t?"bg-gray-700 border-l-2 border-cyan-500":"border-l-2 border-transparent"}
|
|
18
|
+
`,children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 w-full",children:[e.cliStatus&&Object.keys(e.cliStatus).length>0&&r.jsx("div",{className:"flex items-center gap-1 flex-shrink-0","aria-label":"CLI tool status",children:Object.entries(e.cliStatus).map(([e,t])=>r.jsx(u,{status:t??"idle",label:(0,d.Ds)(e)},e))}),(0,r.jsxs)("div",{className:"flex-1 min-w-0 text-left",children:[r.jsx("p",{className:"text-sm font-medium text-white truncate",children:e.name}),r.jsx("p",{className:"text-xs text-gray-400 truncate",children:e.repositoryName})]}),e.hasUnread&&r.jsx("span",{"data-testid":"unread-indicator",className:"w-2 h-2 rounded-full bg-cyan-500 flex-shrink-0","aria-label":"Has unread messages"})]}),e.description&&r.jsx("div",{"data-testid":"branch-description",className:"pl-6 pr-2 mt-1 text-left",children:r.jsx("p",{className:"text-xs text-gray-400 line-clamp-2",children:e.description})})]})}),m=[{key:"updatedAt",label:"Updated"},{key:"repositoryName",label:"Repository"},{key:"branchName",label:"Branch"},{key:"status",label:"Status"}],g=(0,s.memo)(function(){let{sortKey:e,sortDirection:t,setSortKey:a,setSortDirection:n}=(0,l.Sz)(),[o,i]=(0,s.useState)(!1),c=(0,s.useRef)(null);(0,s.useEffect)(()=>{function e(e){c.current&&!c.current.contains(e.target)&&i(!1)}if(o)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[o]),(0,s.useEffect)(()=>{function e(e){"Escape"===e.key&&i(!1)}if(o)return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]);let d=(0,s.useCallback)(()=>{i(e=>!e)},[]),u=(0,s.useCallback)(r=>{r===e?n("asc"===t?"desc":"asc"):(a(r),n("updatedAt"===r?"desc":"asc")),i(!1)},[e,t,a,n]),x=(0,s.useCallback)(()=>{n("asc"===t?"desc":"asc")},[t,n]),g=m.find(t=>t.key===e)?.label||"Sort";return(0,r.jsxs)("div",{ref:c,className:"relative","data-testid":"sort-selector",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsxs)("button",{type:"button",onClick:d,"aria-expanded":o,"aria-haspopup":"listbox","aria-label":`Sort by ${g}`,className:" flex items-center gap-1 px-2 py-1 rounded text-xs text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ",children:[r.jsx(h,{className:"w-3 h-3"}),r.jsx("span",{className:"hidden sm:inline",children:g})]}),r.jsx("button",{type:"button",onClick:x,"aria-label":"asc"===t?"Sort ascending":"Sort descending",className:" p-1 rounded text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ",children:"asc"===t?r.jsx(p,{className:"w-3 h-3"}):r.jsx(b,{className:"w-3 h-3"})})]}),o&&r.jsx("div",{role:"listbox","aria-label":"Sort options",className:" absolute right-0 top-full mt-1 z-50 min-w-[140px] py-1 rounded-md shadow-lg bg-gray-800 border border-gray-600 ",children:m.map(a=>(0,r.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.key,onClick:()=>u(a.key),className:`
|
|
19
|
+
w-full px-3 py-2 text-left text-sm
|
|
20
|
+
flex items-center justify-between
|
|
21
|
+
hover:bg-gray-700 transition-colors
|
|
22
|
+
${e===a.key?"text-blue-400":"text-gray-300"}
|
|
23
|
+
`,children:[r.jsx("span",{children:a.label}),e===a.key&&r.jsx("span",{className:"text-xs",children:"asc"===t?"ASC":"DESC"})]},a.key))})]})});function h({className:e}){return r.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"})})}function p({className:e}){return r.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 15l7-7 7 7"})})}function b({className:e}){return r.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})}var f=a(34643);let y=["en","ja"],v={en:"English",ja:"日本語"};function j(){let{currentLocale:e,switchLocale:t}={currentLocale:(0,f.bU)(),switchLocale:e=>{y.includes(e)&&(function(e){let t="https:"===window.location.protocol;document.cookie=`locale=${e};path=/;max-age=31536000;SameSite=Lax${t?";Secure":""}`}(e),localStorage.setItem("locale",e),window.location.reload())}};return r.jsx("select",{value:e,onChange:e=>t(e.target.value),"aria-label":"Language",className:" w-full px-3 py-2 rounded-md bg-gray-800 text-white border border-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-sm ",children:y.map(e=>r.jsx("option",{value:e,children:v[e]},e))})}var w=a(14831),k=a(60850),N=a(72607);function C(){let{theme:e,setTheme:t}=(0,w.F)(),[a,l]=(0,s.useState)(!1);if(!a)return r.jsx("div",{"data-testid":"theme-toggle-placeholder",className:"w-8 h-8","aria-hidden":"true"});let n="dark"===e;return r.jsx("button",{"data-testid":"theme-toggle",onClick:()=>t(n?"light":"dark"),className:"p-1.5 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 transition-colors focus:outline-none focus:ring-2 focus:ring-cyan-500","aria-label":n?"Switch to light mode":"Switch to dark mode",title:n?"Switch to light mode":"Switch to dark mode",children:n?r.jsx(k.Z,{className:"w-5 h-5","data-testid":"theme-icon-sun"}):r.jsx(N.Z,{className:"w-5 h-5","data-testid":"theme-icon-moon"})})}var S=a(6162),L=a(94001);function z(){let e=(0,S.T)("auth"),t=(0,L.m)(),[a,l]=(0,s.useState)(!1);if(!t)return null;async function n(){l(!0);try{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"}catch{window.location.href="/login"}}return r.jsx("button",{type:"button",onClick:n,disabled:a,"data-testid":"logout-button",className:" w-full px-3 py-2 text-sm text-left rounded-md text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:opacity-50 transition-colors ",children:a?"...":e("logout.button")})}var $=a(18421);let E={waiting:0,ready:1,running:2,generating:3,idle:4},M=(0,s.memo)(function(){let e=(0,o.useRouter)(),{worktrees:t,selectedWorktreeId:a,selectWorktree:n}=(0,i.Mu)(),{closeMobileDrawer:c,sortKey:d,sortDirection:u}=(0,l.Sz)(),[m,h]=(0,s.useState)(""),p=(0,s.useMemo)(()=>{let e=t.map($.I_),a=e;if(m.trim()){let t=m.toLowerCase();a=e.filter(e=>e.name.toLowerCase().includes(t)||e.repositoryName.toLowerCase().includes(t))}return function(e,t,a){let r=[...e];return r.sort((e,r)=>{let s=0;switch(t){case"updatedAt":{let t=e=>e?e instanceof Date?e.getTime():new Date(e).getTime():0,a=t(e.lastActivity);s=t(r.lastActivity)-a;break}case"repositoryName":{let t=e.repositoryName.toLowerCase(),a=r.repositoryName.toLowerCase();s=t.localeCompare(a);break}case"branchName":{let t=e.name.toLowerCase(),a=r.name.toLowerCase();s=t.localeCompare(a);break}case"status":s=E[e.status]-E[r.status]}return("updatedAt"===t?"desc"===a:"asc"===a)?s:-s}),r}(a,d,u)},[t,m,d,u]),b=t=>{n(t),e.push(`/worktrees/${t}`),c()};return(0,r.jsxs)("nav",{"data-testid":"sidebar","aria-label":"Branch navigation",className:"h-full flex flex-col bg-gray-900 text-white",role:"navigation",children:[r.jsx("div",{"data-testid":"sidebar-header",className:"flex-shrink-0 px-4 py-4 border-b border-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[r.jsx("h2",{className:"text-lg font-semibold text-white",children:"Branches"}),r.jsx(g,{})]})}),r.jsx("div",{className:"flex-shrink-0 px-4 py-3 border-b border-gray-700",children:r.jsx("input",{type:"text",placeholder:"Search branches...",value:m,onChange:e=>h(e.target.value),className:" w-full px-3 py-2 rounded-md bg-gray-800 text-white placeholder-gray-400 border border-gray-600 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent "})}),r.jsx("div",{"data-testid":"branch-list",className:"flex-1 overflow-y-auto",children:0===p.length?r.jsx("div",{className:"px-4 py-8 text-center text-gray-400",children:m?"No branches found":"No branches available"}):p.map(e=>r.jsx(x,{branch:e,isSelected:e.id===a,onClick:()=>b(e.id)},e.id))}),(0,r.jsxs)("div",{className:"flex-shrink-0 px-4 py-3 border-t border-gray-700 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"flex-1",children:r.jsx(j,{})}),r.jsx(C,{})]}),r.jsx(z,{})]})]})});var T=a(22202);let A="transform transition-transform duration-300 ease-out",D=(0,s.memo)(function({children:e}){let{isOpen:t,isMobileDrawerOpen:a,closeMobileDrawer:s}=(0,l.Sz)();return(0,n.d)()?(0,r.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[a&&r.jsx("div",{"data-testid":"drawer-overlay",className:"fixed inset-0 bg-black/50 z-40",onClick:s,"aria-hidden":"true"}),r.jsx("aside",{"data-testid":"sidebar-container",className:`
|
|
24
|
+
fixed left-0 top-0 h-full w-72 z-50
|
|
25
|
+
${A}
|
|
26
|
+
${a?"translate-x-0":"-translate-x-full"}
|
|
27
|
+
`,role:"complementary",children:r.jsx(M,{})}),r.jsx("main",{className:"flex-1 min-h-0 overflow-hidden",role:"main",children:e})]}):(0,r.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex",children:[r.jsx("aside",{"data-testid":"sidebar-container",className:`
|
|
28
|
+
fixed left-0 top-0 h-full w-72
|
|
29
|
+
border-r border-gray-200 dark:border-gray-600
|
|
30
|
+
${A}
|
|
31
|
+
${t?"translate-x-0":"-translate-x-full"}
|
|
32
|
+
`,style:{zIndex:T.k.SIDEBAR},role:"complementary","aria-hidden":!t,children:r.jsx(M,{})}),r.jsx("main",{className:`
|
|
33
|
+
flex-1 min-w-0 h-full overflow-hidden
|
|
34
|
+
transition-[padding] duration-300 ease-out
|
|
35
|
+
${t?"md:pl-72":"md:pl-0"}
|
|
36
|
+
`,role:"main",children:e})]})})},28676:(e,t,a)=>{a.d(t,{u:()=>o});var r=a(10326),s=a(17577),l=a(60962),n=a(22202);function o({isOpen:e,onClose:t,title:a,children:o,size:i="lg",showCloseButton:c=!0,disableClose:d=!1}){let u=(0,s.useRef)(null);return e?(0,l.createPortal)((0,r.jsxs)("div",{className:"fixed inset-0 overflow-y-auto",style:{zIndex:n.k.MODAL},children:[r.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 transition-opacity",onClick:d?void 0:t}),r.jsx("div",{className:"relative flex min-h-full items-center justify-center p-2 sm:p-4",children:(0,r.jsxs)("div",{ref:u,className:`relative w-full ${{sm:"max-w-[calc(100vw-2rem)] sm:max-w-md",md:"max-w-[calc(100vw-2rem)] sm:max-w-2xl",lg:"max-w-[calc(100vw-2rem)] sm:max-w-4xl",xl:"max-w-[calc(100vw-2rem)] sm:max-w-6xl",full:"max-w-[calc(100vw-2rem)] sm:max-w-[95vw]"}[i]} max-h-[calc(100vh-1rem)] sm:max-h-[calc(100vh-2rem)] flex flex-col bg-white dark:bg-gray-900 rounded-lg shadow-xl transform transition-all`,children:[(a||c)&&(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 sm:px-6 py-3 sm:py-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0",children:[r.jsx("h3",{className:"text-base sm:text-lg font-semibold text-gray-900 dark:text-gray-100 truncate pr-2",children:a}),c&&r.jsx("button",{onClick:t,className:"text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 transition-colors flex-shrink-0",children:r.jsx("svg",{className:"w-5 h-5 sm:w-6 sm:h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),r.jsx("div",{className:"px-4 sm:px-6 py-3 sm:py-4 overflow-y-auto flex-1 min-h-0",children:o})]})})]}),document.body):null}},77758:(e,t,a)=>{a.d(t,{Ct:()=>c,zx:()=>s,Zb:()=>l,aY:()=>i,Ol:()=>n,ll:()=>o,u_:()=>d.u});var r=a(10326);function s({variant:e="primary",size:t="md",fullWidth:a=!1,loading:s=!1,disabled:l,className:n="",children:o,...i}){let c=["btn",{primary:"btn-primary",secondary:"btn-secondary",danger:"btn-danger",ghost:"bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500"}[e],{sm:"btn-sm",md:"",lg:"btn-lg"}[t],a?"w-full":"",l||s?"opacity-50 cursor-not-allowed":"",n].filter(Boolean).join(" ");return(0,r.jsxs)("button",{className:c,disabled:l||s,...i,children:[s&&(0,r.jsxs)("svg",{className:"animate-spin -ml-1 mr-2 h-4 w-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),o]})}function l({hover:e=!1,padding:t="md",className:a="",children:s,...l}){let n=["card",e?"card-hover":"",{none:"",sm:"p-3",md:"p-4",lg:"p-6"}[t],a].filter(Boolean).join(" ");return r.jsx("div",{className:n,...l,children:s})}function n({className:e="",children:t,...a}){return r.jsx("div",{className:`mb-3 ${e}`,...a,children:t})}function o({className:e="",children:t,...a}){return r.jsx("h3",{className:`text-lg font-semibold text-gray-900 dark:text-gray-100 ${e}`,...a,children:t})}function i({className:e="",children:t,...a}){return r.jsx("div",{className:e,...a,children:t})}function c({variant:e="gray",dot:t=!1,className:a="",children:s,...l}){let n=["badge",{success:"badge-success",warning:"badge-warning",error:"badge-error",info:"badge-info",gray:"badge-gray"}[e],a].filter(Boolean).join(" ");return(0,r.jsxs)("span",{className:n,...l,children:[t&&r.jsx("span",{className:`mr-1.5 inline-block h-2 w-2 rounded-full ${{success:"bg-green-600",warning:"bg-yellow-600",error:"bg-red-600",info:"bg-blue-600",gray:"bg-gray-600"}[e]}`,"aria-hidden":"true"}),s]})}a(17577);var d=a(28676)},11867:(e,t,a)=>{a.d(t,{n:()=>d});var r=a(10326),s=a(17577),l=a(77758),n=a(11865),o=a(73002),i=a(91515),c=a(51223);function d({worktreeId:e}){let[t,a]=(0,s.useState)([]),[d,u]=(0,s.useState)(null),[x,m]=(0,s.useState)(null),[g,h]=(0,s.useState)(!0),[p,b]=(0,s.useState)(null),[f,y]=(0,s.useState)(""),[v,j]=(0,s.useState)(0),[w,k]=(0,s.useState)("all"),[N,C]=(0,s.useState)(!1),{toasts:S,showToast:L,removeToast:z}=(0,n.pm)(),$=(0,s.useMemo)(()=>"all"===w?t:t.filter(e=>e.toLowerCase().includes(w)),[t,w]),E=async t=>{try{h(!0),b(null);let a=await o.Iv.getLogFile(e,t);m(a.content),u(t),y(""),j(0)}catch(e){b((0,o.zG)(e))}finally{h(!1)}},M=(0,s.useCallback)(async()=>{if(d)try{C(!0);let t=await o.Iv.getLogFile(e,d,{sanitize:!0});await (0,i.v)(t.content),L("Log copied to clipboard (sanitized)","success")}catch(e){L(`Failed to export log: ${(0,o.zG)(e)}`,"error")}finally{C(!1)}},[e,d,L]),T=(0,s.useMemo)(()=>{let e;if(!f||!x)return[];let t=RegExp((0,c.hr)(f),"gi"),a=[];for(;null!==(e=t.exec(x));)a.push({index:e.index,length:e[0].length});return a},[f,x]),A=()=>{T.length>0&&j(e=>(e+1)%T.length)},D=()=>{T.length>0&&j(e=>(e-1+T.length)%T.length)},I=(0,s.useMemo)(()=>{if(!x||!f||0===T.length)return x;let e="",t=0;return T.forEach((a,r)=>{e+=(0,c.Xv)(x.substring(t,a.index));let s=x.substring(a.index,a.index+a.length),l=r===v;e+=`<mark class="${l?"bg-yellow-400 text-black":"bg-yellow-200 text-black"}" data-match-index="${r}">${(0,c.Xv)(s)}</mark>`,t=a.index+a.length}),e+=(0,c.Xv)(x.substring(t))},[x,f,T,v]);return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(l.Zb,{padding:"md",children:[r.jsx(l.Ol,{children:(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[r.jsx(l.ll,{children:"Log Files"}),r.jsx(l.Ct,{variant:"gray",children:$.length})]}),(0,r.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,r.jsxs)(l.zx,{variant:"all"===w?"primary":"ghost",size:"sm",onClick:()=>k("all"),children:["All (",t.length,")"]}),(0,r.jsxs)(l.zx,{variant:"claude"===w?"primary":"ghost",size:"sm",onClick:()=>k("claude"),children:["Claude (",t.filter(e=>e.toLowerCase().includes("claude")).length,")"]}),(0,r.jsxs)(l.zx,{variant:"codex"===w?"primary":"ghost",size:"sm",onClick:()=>k("codex"),children:["Codex (",t.filter(e=>e.toLowerCase().includes("codex")).length,")"]}),(0,r.jsxs)(l.zx,{variant:"gemini"===w?"primary":"ghost",size:"sm",onClick:()=>k("gemini"),children:["Gemini (",t.filter(e=>e.toLowerCase().includes("gemini")).length,")"]})]})]})}),(0,r.jsxs)(l.aY,{children:[g&&0===t.length&&r.jsx("div",{className:"text-center py-4",children:r.jsx("div",{className:"inline-block animate-spin rounded-full h-6 w-6 border-4 border-gray-300 border-t-blue-600"})}),p&&r.jsx("div",{className:"p-3 bg-red-50 border border-red-200 rounded text-sm text-red-800",children:p}),!g&&0===$.length&&!p&&r.jsx("p",{className:"text-sm text-gray-600 text-center py-4",children:"all"===w?"No log files found":`No ${w} log files found`}),$.length>0&&r.jsx("div",{className:"space-y-2",children:$.map(e=>r.jsx("button",{onClick:()=>E(e),className:`w-full text-left px-3 py-2 rounded text-sm font-mono transition-colors ${d===e?"bg-blue-50 text-blue-700 border border-blue-200":"hover:bg-gray-50 border border-transparent"}`,children:e},e))})]})]}),d&&(0,r.jsxs)(l.Zb,{padding:"md",children:[r.jsx(l.Ol,{children:(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[r.jsx(l.ll,{className:"font-mono text-base",children:d}),(0,r.jsxs)("div",{className:"flex gap-2",children:[r.jsx(l.zx,{variant:"ghost",size:"sm",onClick:M,disabled:!d||N,title:"Copy sanitized log to clipboard",children:N?"Exporting...":"Export"}),r.jsx(l.zx,{variant:"ghost",size:"sm",onClick:()=>{u(null),m(null),y(""),j(0)},children:"Close"})]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[r.jsx("input",{type:"text",value:f,onChange:e=>y(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),e.shiftKey?D():A())},placeholder:"Search in log file...",className:"input w-full pr-20"}),T.length>0&&(0,r.jsxs)("div",{className:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-gray-500",children:[v+1," / ",T.length]})]}),T.length>0&&(0,r.jsxs)("div",{className:"flex gap-1",children:[r.jsx(l.zx,{variant:"ghost",size:"sm",onClick:D,disabled:0===T.length,title:"Previous match (Shift+Enter)",children:"↑"}),r.jsx(l.zx,{variant:"ghost",size:"sm",onClick:A,disabled:0===T.length,title:"Next match (Enter)",children:"↓"})]})]})]})}),(0,r.jsxs)(l.aY,{children:[g&&r.jsx("div",{className:"text-center py-8",children:r.jsx("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"})}),!g&&x&&r.jsx("div",{className:"bg-gray-900 text-gray-100 rounded p-4 overflow-x-auto max-h-[500px] scrollbar-thin",children:f&&T.length>0?r.jsx("pre",{className:"text-xs font-mono whitespace-pre-wrap",dangerouslySetInnerHTML:{__html:I||""}}):r.jsx("pre",{className:"text-xs font-mono whitespace-pre-wrap",children:x})}),!g&&f&&0===T.length&&x&&(0,r.jsxs)("div",{className:"text-center py-4 text-sm text-gray-500",children:['No matches found for "',f,'"']})]})]}),r.jsx(n.Ix,{toasts:S,onClose:z})]})}},15470:(e,t,a)=>{a.d(t,{R:()=>x});var r=a(10326),s=a(17577),l=a(73002);function n(e,t){if(!t.trim())return e;let a=t.toLowerCase();return e.map(e=>({...e,commands:e.commands.filter(e=>{let t=e.name.toLowerCase().includes(a),r=e.description.toLowerCase().includes(a);return t||r})})).filter(e=>e.commands.length>0)}function o({groups:e,onSelect:t,highlightedIndex:a=-1,className:s=""}){let l=0;return 0===e.length?r.jsx("div",{className:`text-sm text-gray-500 p-4 text-center ${s}`,children:"No commands available"}):r.jsx("div",{className:`overflow-y-auto ${s}`,children:e.map(e=>(0,r.jsxs)("div",{className:"mb-2",children:[r.jsx("div",{className:"px-3 py-1.5 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider bg-gray-50 dark:bg-gray-800",children:e.label}),r.jsx("div",{children:e.commands.map(e=>{let s=l;l++;let n=s===a;return(0,r.jsxs)("button",{type:"button","data-command-item":!0,"data-highlighted":n,onClick:()=>t(e),className:`w-full px-3 py-2 text-left flex items-start gap-2 hover:bg-cyan-50 dark:hover:bg-cyan-900/30 transition-colors ${n?"bg-cyan-100 dark:bg-cyan-900/40":""}`,children:[(0,r.jsxs)("span",{className:"text-cyan-600 dark:text-cyan-400 font-mono text-sm flex-shrink-0",children:["/",e.name]}),r.jsx("span",{className:"text-gray-600 dark:text-gray-300 text-sm truncate",children:e.description})]},e.name)})})]},e.category))})}let i=(0,s.memo)(function({isOpen:e,groups:t,onSelect:a,onClose:l,isMobile:i=!1,position:c,onFreeInput:d}){let[u,x]=(0,s.useState)(""),[m,g]=(0,s.useState)(0),h=(0,s.useRef)(null),p=(0,s.useMemo)(()=>n(t,u),[t,u]),b=(0,s.useMemo)(()=>p.flatMap(e=>e.commands),[p]);(0,s.useEffect)(()=>{e&&(x(""),g(0),setTimeout(()=>{h.current?.focus()},50))},[e]);let f=(0,s.useCallback)(e=>{a(e),l()},[a,l]),y=(0,s.useCallback)(t=>{if(e)switch(t.key){case"Escape":t.preventDefault(),l();break;case"ArrowDown":t.preventDefault(),g(e=>Math.min(e+1,b.length-1));break;case"ArrowUp":t.preventDefault(),g(e=>Math.max(e-1,0));break;case"Enter":t.preventDefault(),b[m]&&f(b[m])}},[e,b,m,l,f]);return((0,s.useEffect)(()=>{if(e)return document.addEventListener("keydown",y),()=>{document.removeEventListener("keydown",y)}},[e,y]),e)?i?(0,r.jsxs)(r.Fragment,{children:[r.jsx("div",{className:"fixed inset-0 bg-black/50 z-40",onClick:l,"aria-hidden":"true"}),(0,r.jsxs)("div",{"data-testid":"slash-command-bottom-sheet",className:"fixed bottom-0 left-0 right-0 bg-white dark:bg-gray-900 rounded-t-xl z-50 max-h-[70vh] flex flex-col shadow-xl",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700",children:[r.jsx("h2",{className:"text-lg font-semibold dark:text-gray-100",children:"Commands"}),r.jsx("button",{type:"button",onClick:l,"aria-label":"Close",className:"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800",children:r.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),r.jsx("div",{className:"px-4 py-2 border-b border-gray-100 dark:border-gray-700",children:r.jsx("input",{ref:h,type:"text",value:u,onChange:e=>x(e.target.value),placeholder:"Search commands...",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 rounded-lg focus:outline-none focus:ring-2 focus:ring-cyan-500"})}),d&&(0,r.jsxs)("button",{type:"button","data-testid":"free-input-button",onClick:()=>d(u),className:"w-full px-4 py-3 text-left border-b border-gray-100 dark:border-gray-700 flex items-center gap-2 hover:bg-cyan-50 dark:hover:bg-cyan-900/30 transition-colors",children:[r.jsx("span",{className:"text-cyan-600 dark:text-cyan-400",children:r.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),r.jsx("span",{className:"text-gray-600 dark:text-gray-400",children:"Enter custom command..."})]}),r.jsx(o,{groups:p,onSelect:f,highlightedIndex:m,className:"flex-1 overflow-y-auto pb-20"})]})]}):(0,r.jsxs)("div",{role:"listbox",className:"absolute bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-50 w-80 max-h-96 flex flex-col",style:c?{top:c.top,left:c.left}:{bottom:"100%",left:0,marginBottom:"4px"},children:[r.jsx("div",{className:"px-3 py-2 border-b border-gray-100 dark:border-gray-700",children:r.jsx("input",{ref:h,type:"text",value:u,onChange:e=>x(e.target.value),placeholder:"Search commands...",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 rounded focus:outline-none focus:ring-1 focus:ring-cyan-500"})}),d&&(0,r.jsxs)("button",{type:"button","data-testid":"free-input-button",onClick:()=>d(u),className:"w-full px-3 py-2 text-left border-b border-gray-100 dark:border-gray-700 flex items-center gap-2 hover:bg-cyan-50 dark:hover:bg-cyan-900/30 transition-colors text-sm",children:[r.jsx("span",{className:"text-cyan-600 dark:text-cyan-400",children:r.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),r.jsx("span",{className:"text-gray-600 dark:text-gray-400",children:"Enter custom command..."})]}),r.jsx(o,{groups:p,onSelect:f,highlightedIndex:m,className:"flex-1 overflow-y-auto"}),(0,r.jsxs)("div",{className:"px-3 py-1.5 border-t border-gray-100 dark:border-gray-700 text-xs text-gray-400 dark:text-gray-500 flex gap-3",children:[(0,r.jsxs)("span",{children:[r.jsx("kbd",{className:"px-1 py-0.5 bg-gray-100 dark:bg-gray-700 rounded",children:"Enter"})," select"]}),(0,r.jsxs)("span",{children:[r.jsx("kbd",{className:"px-1 py-0.5 bg-gray-100 dark:bg-gray-700 rounded",children:"Esc"})," close"]})]})]}):null}),c=(0,s.memo)(function({worktreeId:e,cliToolId:t,disabled:a=!1,onInterrupt:l}){let[n,o]=(0,s.useState)(!1),i=(0,s.useRef)(0),c=(0,s.useCallback)(async()=>{let a=Date.now();if(!(a-i.current<1e3)){i.current=a,o(!0);try{let a=await fetch(`/api/worktrees/${e}/interrupt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cliToolId:t})});if(a.ok)l?.();else{let e=await a.json().catch(()=>({}));console.error("[InterruptButton] Failed to send interrupt:",e.error||a.statusText)}}catch(e){console.error("[InterruptButton] Error sending interrupt:",e)}finally{o(!1)}}},[e,t,l]);return r.jsx("button",{type:"button",onClick:c,disabled:a||n,className:"flex-shrink-0 p-2 text-orange-600 hover:bg-orange-50 rounded-full transition-colors disabled:text-gray-300 disabled:hover:bg-transparent","aria-label":"Stop processing","data-testid":"interrupt-button",children:n?(0,r.jsxs)("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):r.jsx(d,{})})});function d(){return r.jsx("svg",{className:"h-5 w-5",fill:"currentColor",viewBox:"0 0 24 24",children:r.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})})}var u=a(2982);let x=(0,s.memo)(function({worktreeId:e,onMessageSent:t,cliToolId:a,isSessionRunning:o=!1}){let[d,x]=(0,s.useState)(""),[m,g]=(0,s.useState)(!1),[h,p]=(0,s.useState)(null),[b,f]=(0,s.useState)(!1),[y,v]=(0,s.useState)(!1),[j,w]=(0,s.useState)(!1),k=(0,s.useRef)(null),N=(0,s.useRef)(null),C=(0,s.useRef)(!1),S=(0,s.useRef)(null),L=(0,u.d)(),{groups:z}=function(e,t){let[a,r]=(0,s.useState)([]),[o,i]=(0,s.useState)(!0),[c,d]=(0,s.useState)(null),[u,x]=(0,s.useState)(""),[m,g]=(0,s.useState)(t||"claude"),h=(0,s.useCallback)(async()=>{try{i(!0),d(null);let a=e?`/api/worktrees/${e}/slash-commands`:"/api/slash-commands";t&&(a+=`?cliTool=${t}`);let s=await fetch(a);if(!s.ok)throw Error(`HTTP error ${s.status}`);let l=await s.json();r(l.groups),g(l.cliTool||t||"claude")}catch(e){d((0,l.zG)(e)),r([])}finally{i(!1)}},[e,t]),p=(0,s.useMemo)(()=>a.flatMap(e=>e.commands),[a]),b=(0,s.useMemo)(()=>n(a,u),[a,u]);return{groups:a,filteredGroups:b,allCommands:p,loading:o,error:c,filter:u,setFilter:x,refresh:(0,s.useCallback)(()=>{h()},[h]),cliTool:m}}(e,a);(0,s.useEffect)(()=>{let e=k.current;e&&(d?(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,160)}px`):e.style.height="24px")},[d]);let $=(0,s.useCallback)(async()=>{if(!b&&d.trim()&&!m)try{g(!0),p(null);let r=a||"claude";await l.Iv.sendMessage(e,d.trim(),r),x(""),w(!1),t?.(r)}catch(e){p((0,l.zG)(e))}finally{g(!1)}},[b,d,m,e,a,t]),E=(0,s.useCallback)(async e=>{e.preventDefault(),await $()},[$]),M=(0,s.useCallback)(()=>{f(!0),C.current=!1,N.current&&clearTimeout(N.current)},[]),T=(0,s.useCallback)(()=>{f(!1),C.current=!0,N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{C.current=!1},300)},[]),A=(0,s.useCallback)(e=>{x(`/${e.name} `),v(!1),k.current?.focus()},[]),D=(0,s.useCallback)(()=>{v(!1),w(!1),k.current?.focus()},[]),I=(0,s.useCallback)(e=>{v(!1),w(!0),x(e?`/${e}`:"/"),setTimeout(()=>{k.current?.focus()},50)},[]),R=(0,s.useCallback)(e=>{let t=e.target.value;if(x(t),""===t){w(!1),v(!1);return}j||("/"===t||t.startsWith("/")&&!t.includes(" ")?v(!0):v(!1))},[j]),B=(0,s.useCallback)(e=>{let{keyCode:t}=e.nativeEvent;if(229!==t){if("Escape"===e.key&&y){e.preventDefault(),D();return}if(C.current&&"Enter"===e.key){C.current=!1;return}if("Enter"===e.key&&!b&&(!y||j)){if(L)return;e.shiftKey||(e.preventDefault(),$())}}},[y,j,b,L,$,D]);return(0,r.jsxs)("div",{ref:S,className:"space-y-2 relative",children:[h&&r.jsx("div",{className:"p-2 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-800 rounded text-sm text-red-800 dark:text-red-300",children:h}),(0,r.jsxs)("form",{onSubmit:E,className:"flex items-end gap-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-lg px-4 py-2 focus-within:border-cyan-500 focus-within:ring-1 focus-within:ring-cyan-500",children:[L&&r.jsx("button",{type:"button",onClick:()=>{j&&w(!1),v(!0)},className:"flex-shrink-0 p-2 text-gray-500 hover:text-cyan-600 hover:bg-cyan-50 dark:text-gray-400 dark:hover:text-cyan-400 dark:hover:bg-cyan-900/30 rounded-full transition-colors","aria-label":"Show slash commands","data-testid":"mobile-command-button",children:r.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 20l4-16m2 16l4-16M6 9h14M4 15h14"})})}),r.jsx("textarea",{ref:k,value:d,onChange:R,onKeyDown:B,onCompositionStart:M,onCompositionEnd:T,placeholder:L?"Type your message...":"Type your message... (/ for commands, Shift+Enter for line break)",disabled:m,rows:1,className:"flex-1 outline-none bg-transparent resize-none py-1 overflow-y-auto scrollbar-thin",style:{minHeight:"24px",maxHeight:"160px"}}),r.jsx(c,{worktreeId:e,cliToolId:a||"claude",disabled:!o}),r.jsx("button",{type:"submit",disabled:!d.trim()||m,className:"flex-shrink-0 p-2 text-cyan-600 hover:bg-cyan-50 dark:text-cyan-400 dark:hover:bg-cyan-900/30 rounded-full transition-colors disabled:text-gray-300 dark:disabled:text-gray-600 disabled:hover:bg-transparent","aria-label":"Send message",children:m?(0,r.jsxs)("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):r.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 19l9 2-9-18-9 18 9-2zm0 0v-8"})})})]}),r.jsx(i,{isOpen:y,groups:z,onSelect:A,onClose:D,isMobile:L,onFreeInput:I})]})})},61421:(e,t,a)=>{a.d(t,{F4:()=>s,Ie:()=>n,xh:()=>l});let r={idle:"bg-gray-500",ready:"bg-green-500",spinner:"border-blue-500",waiting:"bg-yellow-500",error:"bg-red-500"},s={idle:{className:r.idle,label:"Idle",type:"dot"},ready:{className:r.ready,label:"Ready",type:"dot"},running:{className:r.spinner,label:"Running",type:"spinner"},waiting:{className:r.waiting,label:"Waiting for response",type:"dot"},generating:{className:r.spinner,label:"Generating",type:"spinner"}},l={idle:{className:r.idle,label:"Idle",type:"dot"},ready:{className:r.ready,label:"Ready",type:"dot"},running:{className:r.spinner,label:"Running",type:"spinner"},waiting:{className:r.waiting,label:"Waiting for response",type:"dot"},error:{className:r.error,label:"Error",type:"dot"}},n={idle:{className:r.idle,label:"Idle - No active session",type:"dot"},ready:{className:r.ready,label:"Ready - Waiting for input",type:"dot"},running:{className:r.spinner,label:"Running - Processing",type:"spinner"},waiting:{className:r.waiting,label:"Waiting - User input required",type:"dot"},error:{className:r.error,label:"Error",type:"dot"}}},22202:(e,t,a)=>{a.d(t,{k:()=>r});let r={DROPDOWN:10,SIDEBAR:30,MODAL:50,MAXIMIZED_EDITOR:55,TOAST:60,CONTEXT_MENU:70}},2982:(e,t,a)=>{a.d(t,{G:()=>s,d:()=>l});var r=a(17577);let s=768;function l(e={}){let{breakpoint:t=s}=e,[a,l]=(0,r.useState)(!1);return a}},2491:(e,t,a)=>{a.d(t,{Ds:()=>l,Ho:()=>o,Ns:()=>i,tK:()=>r,ts:()=>n});let r=["claude","codex","gemini","vibe-local","opencode"],s={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode"};function l(e){return s[e]??e}function n(e,t="Assistant"){return e&&r.includes(e)?l(e):t}let o=128,i=2097152},91515:(e,t,a)=>{a.d(t,{v:()=>s});let r=/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\[[0-9;]*m/g;async function s(e){if(!e||0===e.trim().length)return;let t=e.replace(r,"");await navigator.clipboard.writeText(t)}},41593:(e,t,a)=>{a.d(t,{G:()=>n});var r=a(27808),s=a(18811);let l={en:s._,ja:r.ja};function n(e){return l[e]??s._}},77465:(e,t,a)=>{a.d(t,{Fq:()=>r}),a(2491);let r=["claude","codex"]},51223:(e,t,a)=>{function r(e,t){let a=null;return(...r)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...r),a=null},t)}}function s(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function l(e){let t=new Set;for(let a of e){t.add(a);let e=a.split("/"),r="";for(let a=0;a<e.length-1;a++)r=r?`${r}/${e[a]}`:e[a],t.add(r)}return t}function n(e,t=30){return e.length<=t?e:`${e.substring(0,t-3)}...`}function o(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}a.d(t,{Ds:()=>r,Ps:()=>l,Xv:()=>o,aS:()=>n,hr:()=>s})},18421:(e,t,a)=>{a.d(t,{He:()=>s,I_:()=>l});var r=a(77465);function s(e){return e?e.isWaitingForResponse?"waiting":e.isProcessing?"running":e.isRunning?"ready":"idle":"idle"}function l(e){let t=!!e.lastAssistantMessageAt&&(!e.lastViewedAt||new Date(e.lastAssistantMessageAt)>new Date(e.lastViewedAt)),a=e.selectedAgents??r.Fq,l={};for(let t of a)l[t]=s(e.sessionStatusByCli?.[t]);return{id:e.id,name:e.name,repositoryName:e.repositoryName,status:"idle",hasUnread:t,lastActivity:e.updatedAt,description:e.description,cliStatus:l}}},63601:(e,t,a)=>{a.r(t),a.d(t,{default:()=>s});var r=a(66621);let s=e=>[{type:"image/png",sizes:"180x180",url:(0,r.fillMetadataSegment)(".",e.params,"apple-icon.png")+"?31a89e65aa4ac65b"}]},71150:(e,t,a)=>{a.r(t),a.d(t,{default:()=>s});var r=a(66621);let s=e=>[{type:"image/png",sizes:"32x32",url:(0,r.fillMetadataSegment)(".",e.params,"icon.png")+"?32d9127ba30ee286"}]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=3860,exports.ids=[3860],exports.modules={4703:(e,r,t)=>{var o={"./en/auth.json":[5795,5795],"./ja/auth.json":[73074,3074]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=4703,e.exports=s},34519:(e,r,t)=>{var o={"./en/autoYes.json":[58744,8744],"./ja/autoYes.json":[80369,369]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=34519,e.exports=s},41440:(e,r,t)=>{var o={"./en/common.json":[39582,9582],"./ja/common.json":[93348,3348]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=41440,e.exports=s},87269:(e,r,t)=>{var o={"./en/error.json":[17266,7266],"./ja/error.json":[16837,6837]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=87269,e.exports=s},35268:(e,r,t)=>{var o={"./en/prompt.json":[94559,4559],"./ja/prompt.json":[45853,5853]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=35268,e.exports=s},16114:(e,r,t)=>{var o={"./en/schedule.json":[86228,6228],"./ja/schedule.json":[82314,2314]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=16114,e.exports=s},31985:(e,r,t)=>{var o={"./en/worktree.json":[32683,2683],"./ja/worktree.json":[95823,5823]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=31985,e.exports=s},20319:(e,r,t)=>{Promise.resolve().then(t.t.bind(t,12994,23)),Promise.resolve().then(t.t.bind(t,96114,23)),Promise.resolve().then(t.t.bind(t,9727,23)),Promise.resolve().then(t.t.bind(t,79671,23)),Promise.resolve().then(t.t.bind(t,41868,23)),Promise.resolve().then(t.t.bind(t,84759,23))},47864:(e,r,t)=>{Promise.resolve().then(t.bind(t,2108))},2108:(e,r,t)=>{"use strict";t.d(r,{AppProviders:()=>d});var o=t(10326),s=t(5269),n=t(87403),i=t(3885),a=t(94001);function d({children:e,locale:r,messages:t,timeZone:d,authEnabled:c=!1}){return o.jsx(s.Z,{locale:r,messages:t,timeZone:d,children:o.jsx(a.H,{authEnabled:c,children:o.jsx(n.Hn,{children:o.jsx(i._I,{children:e})})})})}},94001:(e,r,t)=>{"use strict";t.d(r,{H:()=>i,m:()=>a});var o=t(10326),s=t(17577);let n=(0,s.createContext)(!1);function i({children:e,authEnabled:r}){return o.jsx(n.Provider,{value:r,children:e})}function a(){return(0,s.useContext)(n)}},87403:(e,r,t)=>{"use strict";t.d(r,{Hn:()=>a,Sz:()=>d});var o=t(10326),s=t(17577);let n=(0,s.createContext)(null);function i(e,r){switch(r.type){case"TOGGLE":return{...e,isOpen:!e.isOpen};case"SET_WIDTH":return{...e,width:r.width};case"OPEN_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!0};case"CLOSE_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!1};case"SET_SORT_KEY":return{...e,sortKey:r.sortKey};case"SET_SORT_DIRECTION":return{...e,sortDirection:r.sortDirection};case"LOAD_SORT_SETTINGS":return{...e,sortKey:r.sortKey,sortDirection:r.sortDirection};default:return e}}function a({children:e,initialOpen:r=!0,initialWidth:t=288}){let[a,d]=(0,s.useReducer)(i,{isOpen:r,width:t,isMobileDrawerOpen:!1,sortKey:"updatedAt",sortDirection:"desc"}),c=(0,s.useCallback)(()=>{d({type:"TOGGLE"})},[]),l=(0,s.useCallback)(e=>{d({type:"SET_WIDTH",width:e})},[]),u=(0,s.useCallback)(()=>{d({type:"OPEN_MOBILE_DRAWER"})},[]),p=(0,s.useCallback)(()=>{d({type:"CLOSE_MOBILE_DRAWER"})},[]),y=(0,s.useCallback)(e=>{d({type:"SET_SORT_KEY",sortKey:e})},[]),h=(0,s.useCallback)(e=>{d({type:"SET_SORT_DIRECTION",sortDirection:e})},[]),m={isOpen:a.isOpen,width:a.width,isMobileDrawerOpen:a.isMobileDrawerOpen,sortKey:a.sortKey,sortDirection:a.sortDirection,toggle:c,setWidth:l,openMobileDrawer:u,closeMobileDrawer:p,setSortKey:y,setSortDirection:h};return o.jsx(n.Provider,{value:m,children:e})}function d(){let e=(0,s.useContext)(n);if(!e)throw Error("useSidebarContext must be used within a SidebarProvider");return e}},3885:(e,r,t)=>{"use strict";t.d(r,{Mu:()=>l,_I:()=>c});var o=t(10326),s=t(17577),n=t(73002);let i=(0,s.createContext)(null),a={selectedWorktreeId:null,worktrees:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function d(e,r){switch(r.type){case"SET_WORKTREES":return{...e,worktrees:r.worktrees,isLoading:!1};case"SELECT_WORKTREE":return{...e,selectedWorktreeId:r.id};case"SET_WORKTREE_DETAIL":return{...e,selectedWorktreeDetail:r.detail};case"SET_LOADING":return{...e,isLoading:r.isLoading};case"SET_LOADING_DETAIL":return{...e,isLoadingDetail:r.isLoadingDetail};case"SET_ERROR":return{...e,error:r.error,isLoading:!1};default:return e}}function c({children:e}){let[r,t]=(0,s.useReducer)(d,a),c=(0,s.useCallback)(async()=>{t({type:"SET_LOADING",isLoading:!0}),t({type:"SET_ERROR",error:null});try{let e=await n.Iv.getAll();t({type:"SET_WORKTREES",worktrees:e.worktrees})}catch(e){t({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktrees"})}},[]),l=(0,s.useCallback)(async e=>{t({type:"SELECT_WORKTREE",id:e}),t({type:"SET_LOADING_DETAIL",isLoadingDetail:!0}),t({type:"SET_ERROR",error:null});try{n.Iv.markAsViewed(e).catch(e=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",e)});let r=await n.Iv.getById(e);t({type:"SET_WORKTREE_DETAIL",detail:r})}catch(e){t({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktree detail"})}finally{t({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),u=(0,s.useCallback)(async()=>{await c()},[c]),p={selectedWorktreeId:r.selectedWorktreeId,worktrees:r.worktrees,selectedWorktreeDetail:r.selectedWorktreeDetail,isLoadingDetail:r.isLoadingDetail,error:r.error,selectWorktree:l,refreshWorktrees:u};return o.jsx(i.Provider,{value:p,children:e})}function l(){let e=(0,s.useContext)(i);if(!e)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return e}},73002:(e,r,t)=>{"use strict";t.d(r,{Iv:()=>n,J1:()=>i,nE:()=>a,zG:()=>d});class o extends Error{constructor(e,r,t){super(e),this.status=r,this.data=t,this.name="ApiError"}}async function s(e,r){try{let t=new Headers(r?.headers);t.set("Content-Type","application/json");let s=await fetch(e,{...r,headers:t}),n=s.headers.get("content-type")||"";if(s.redirected&&s.url.includes("/login"))throw new o("Authentication required",401);if(!s.ok){let e=n.includes("application/json")?await s.json().catch(()=>({})):{};throw new o(e.error||`HTTP error ${s.status}`,s.status,e)}if(!n.includes("application/json"))throw new o("Unexpected response format",s.status);return s.json()}catch(e){if(e instanceof o)throw e;throw new o(e instanceof Error?e.message:"Unknown error",0,e)}}let n={getAll:async()=>s("/api/worktrees"),getById:async e=>s(`/api/worktrees/${e}`),updateDescription:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({description:r})}),updateLink:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({link:r})}),toggleFavorite:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({favorite:r})}),updateStatus:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({status:r})}),updateCliTool:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({cliToolId:r})}),markAsViewed:async e=>s(`/api/worktrees/${e}/viewed`,{method:"PATCH"}),async getMessages(e,r){let t=new URLSearchParams;return r&&t.append("cliTool",r),s(`/api/worktrees/${e}/messages${t.toString()?`?${t.toString()}`:""}`)},async sendMessage(e,r,t){let o={content:r};return t&&(o.cliToolId=t),s(`/api/worktrees/${e}/send`,{method:"POST",body:JSON.stringify(o)})},getLogs:async e=>s(`/api/worktrees/${e}/logs`),async getLogFile(e,r,t){let o=t?.sanitize?"?sanitize=true":"";return s(`/api/worktrees/${e}/logs/${r}${o}`)},killSession:async(e,r)=>s(`/api/worktrees/${e}/kill-session`,{method:"POST",body:r?JSON.stringify({cliToolId:r}):void 0})},i={scan:async e=>s("/api/repositories/scan",{method:"POST",body:JSON.stringify({repositoryPath:e})}),sync:async()=>s("/api/repositories/sync",{method:"POST"}),delete:async e=>s("/api/repositories",{method:"DELETE",body:JSON.stringify({repositoryPath:e})}),clone:async e=>s("/api/repositories/clone",{method:"POST",body:JSON.stringify({cloneUrl:e})}),getCloneStatus:async e=>s(`/api/repositories/clone/${e}`),getExcluded:async()=>s("/api/repositories/excluded"),restore:async e=>s("/api/repositories/restore",{method:"PUT",body:JSON.stringify({repositoryPath:e})})},a={getAll:async e=>(await s(`/api/worktrees/${e}/memos`)).memos,create:async(e,r)=>(await s(`/api/worktrees/${e}/memos`,{method:"POST",body:JSON.stringify(r||{})})).memo,update:async(e,r,t)=>(await s(`/api/worktrees/${e}/memos/${r}`,{method:"PUT",body:JSON.stringify(t)})).memo,delete:async(e,r)=>s(`/api/worktrees/${e}/memos/${r}`,{method:"DELETE"})};function d(e){return e instanceof o||e instanceof Error?e.message:"An unknown error occurred"}},25086:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>c,metadata:()=>d});var o=t(19510),s=t(2126),n=t(89907),i=t(57735);let a=(0,t(68570).createProxy)(String.raw`/home/runner/work/CommandMate/CommandMate/src/components/providers/AppProviders.tsx#AppProviders`);t(5023);let d={title:"CommandMate",description:"Git worktree management with Claude CLI and tmux sessions"};async function c({children:e}){let r=await (0,s.Z)(),t=await (0,n.Z)(),d=await (0,i.Z)();return o.jsx("html",{lang:r,children:o.jsx("body",{className:"min-h-screen bg-gray-50",children:o.jsx(a,{locale:r,messages:t,timeZone:d,authEnabled:!!process.env.CM_AUTH_TOKEN_HASH,children:e})})})}},72901:(e,r,t)=>{"use strict";t.d(r,{Z:()=>i});var o=t(10442),s=t(71615);let n=["en","ja"],i=(0,o.Z)(async({requestLocale:e})=>{let r=await e;if(!r||!n.includes(r)){let e=await (0,s.cookies)(),t=e.get("locale")?.value;if(t&&n.includes(t))r=t;else{let e=(await (0,s.headers)()).get("accept-language")??"";r=n.find(r=>e.includes(r))??"en"}}let[o,i,a,d,c,l,u]=await Promise.all([t(41440)(`./${r}/common.json`),t(31985)(`./${r}/worktree.json`),t(34519)(`./${r}/autoYes.json`),t(87269)(`./${r}/error.json`),t(35268)(`./${r}/prompt.json`),t(4703)(`./${r}/auth.json`),t(16114)(`./${r}/schedule.json`)]);return{locale:r,timeZone:"UTC",messages:{common:o.default,worktree:i.default,autoYes:a.default,error:d.default,prompt:c.default,auth:l.default,schedule:u.default}}})},5023:()=>{}};
|
|
1
|
+
exports.id=3860,exports.ids=[3860],exports.modules={4703:(e,r,t)=>{var o={"./en/auth.json":[5795,5795],"./ja/auth.json":[73074,3074]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=4703,e.exports=s},34519:(e,r,t)=>{var o={"./en/autoYes.json":[58744,8744],"./ja/autoYes.json":[80369,369]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=34519,e.exports=s},41440:(e,r,t)=>{var o={"./en/common.json":[39582,9582],"./ja/common.json":[93348,3348]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=41440,e.exports=s},87269:(e,r,t)=>{var o={"./en/error.json":[17266,7266],"./ja/error.json":[16837,6837]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=87269,e.exports=s},35268:(e,r,t)=>{var o={"./en/prompt.json":[94559,4559],"./ja/prompt.json":[45853,5853]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=35268,e.exports=s},16114:(e,r,t)=>{var o={"./en/schedule.json":[86228,6228],"./ja/schedule.json":[82314,2314]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=16114,e.exports=s},31985:(e,r,t)=>{var o={"./en/worktree.json":[32683,2683],"./ja/worktree.json":[95823,5823]};function s(e){if(!t.o(o,e))return Promise.resolve().then(()=>{var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r});var r=o[e],s=r[0];return t.e(r[1]).then(()=>t.t(s,19))}s.keys=()=>Object.keys(o),s.id=31985,e.exports=s},20319:(e,r,t)=>{Promise.resolve().then(t.t.bind(t,12994,23)),Promise.resolve().then(t.t.bind(t,96114,23)),Promise.resolve().then(t.t.bind(t,9727,23)),Promise.resolve().then(t.t.bind(t,79671,23)),Promise.resolve().then(t.t.bind(t,41868,23)),Promise.resolve().then(t.t.bind(t,84759,23))},47864:(e,r,t)=>{Promise.resolve().then(t.bind(t,2108))},2108:(e,r,t)=>{"use strict";t.d(r,{AppProviders:()=>c});var o=t(10326),s=t(5269),n=t(14831),i=t(87403),a=t(3885),d=t(94001);function c({children:e,locale:r,messages:t,timeZone:c,authEnabled:l=!1}){return o.jsx(s.Z,{locale:r,messages:t,timeZone:c,children:o.jsx(n.f,{attribute:"class",defaultTheme:"dark",enableSystem:!1,children:o.jsx(d.H,{authEnabled:l,children:o.jsx(i.Hn,{children:o.jsx(a._I,{children:e})})})})})}},94001:(e,r,t)=>{"use strict";t.d(r,{H:()=>i,m:()=>a});var o=t(10326),s=t(17577);let n=(0,s.createContext)(!1);function i({children:e,authEnabled:r}){return o.jsx(n.Provider,{value:r,children:e})}function a(){return(0,s.useContext)(n)}},87403:(e,r,t)=>{"use strict";t.d(r,{Hn:()=>a,Sz:()=>d});var o=t(10326),s=t(17577);let n=(0,s.createContext)(null);function i(e,r){switch(r.type){case"TOGGLE":return{...e,isOpen:!e.isOpen};case"SET_WIDTH":return{...e,width:r.width};case"OPEN_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!0};case"CLOSE_MOBILE_DRAWER":return{...e,isMobileDrawerOpen:!1};case"SET_SORT_KEY":return{...e,sortKey:r.sortKey};case"SET_SORT_DIRECTION":return{...e,sortDirection:r.sortDirection};case"LOAD_SORT_SETTINGS":return{...e,sortKey:r.sortKey,sortDirection:r.sortDirection};default:return e}}function a({children:e,initialOpen:r=!0,initialWidth:t=288}){let[a,d]=(0,s.useReducer)(i,{isOpen:r,width:t,isMobileDrawerOpen:!1,sortKey:"updatedAt",sortDirection:"desc"}),c=(0,s.useCallback)(()=>{d({type:"TOGGLE"})},[]),l=(0,s.useCallback)(e=>{d({type:"SET_WIDTH",width:e})},[]),u=(0,s.useCallback)(()=>{d({type:"OPEN_MOBILE_DRAWER"})},[]),p=(0,s.useCallback)(()=>{d({type:"CLOSE_MOBILE_DRAWER"})},[]),y=(0,s.useCallback)(e=>{d({type:"SET_SORT_KEY",sortKey:e})},[]),m=(0,s.useCallback)(e=>{d({type:"SET_SORT_DIRECTION",sortDirection:e})},[]),h={isOpen:a.isOpen,width:a.width,isMobileDrawerOpen:a.isMobileDrawerOpen,sortKey:a.sortKey,sortDirection:a.sortDirection,toggle:c,setWidth:l,openMobileDrawer:u,closeMobileDrawer:p,setSortKey:y,setSortDirection:m};return o.jsx(n.Provider,{value:h,children:e})}function d(){let e=(0,s.useContext)(n);if(!e)throw Error("useSidebarContext must be used within a SidebarProvider");return e}},3885:(e,r,t)=>{"use strict";t.d(r,{Mu:()=>l,_I:()=>c});var o=t(10326),s=t(17577),n=t(73002);let i=(0,s.createContext)(null),a={selectedWorktreeId:null,worktrees:[],selectedWorktreeDetail:null,isLoading:!0,isLoadingDetail:!1,error:null};function d(e,r){switch(r.type){case"SET_WORKTREES":return{...e,worktrees:r.worktrees,isLoading:!1};case"SELECT_WORKTREE":return{...e,selectedWorktreeId:r.id};case"SET_WORKTREE_DETAIL":return{...e,selectedWorktreeDetail:r.detail};case"SET_LOADING":return{...e,isLoading:r.isLoading};case"SET_LOADING_DETAIL":return{...e,isLoadingDetail:r.isLoadingDetail};case"SET_ERROR":return{...e,error:r.error,isLoading:!1};default:return e}}function c({children:e}){let[r,t]=(0,s.useReducer)(d,a),c=(0,s.useCallback)(async()=>{t({type:"SET_LOADING",isLoading:!0}),t({type:"SET_ERROR",error:null});try{let e=await n.Iv.getAll();t({type:"SET_WORKTREES",worktrees:e.worktrees})}catch(e){t({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktrees"})}},[]),l=(0,s.useCallback)(async e=>{t({type:"SELECT_WORKTREE",id:e}),t({type:"SET_LOADING_DETAIL",isLoadingDetail:!0}),t({type:"SET_ERROR",error:null});try{n.Iv.markAsViewed(e).catch(e=>{console.warn("[WorktreeSelectionContext] Failed to mark as viewed:",e)});let r=await n.Iv.getById(e);t({type:"SET_WORKTREE_DETAIL",detail:r})}catch(e){t({type:"SET_ERROR",error:e instanceof Error?e.message:"Failed to fetch worktree detail"})}finally{t({type:"SET_LOADING_DETAIL",isLoadingDetail:!1})}},[]),u=(0,s.useCallback)(async()=>{await c()},[c]),p={selectedWorktreeId:r.selectedWorktreeId,worktrees:r.worktrees,selectedWorktreeDetail:r.selectedWorktreeDetail,isLoadingDetail:r.isLoadingDetail,error:r.error,selectWorktree:l,refreshWorktrees:u};return o.jsx(i.Provider,{value:p,children:e})}function l(){let e=(0,s.useContext)(i);if(!e)throw Error("useWorktreeSelection must be used within a WorktreeSelectionProvider");return e}},73002:(e,r,t)=>{"use strict";t.d(r,{Iv:()=>n,J1:()=>i,nE:()=>a,zG:()=>d});class o extends Error{constructor(e,r,t){super(e),this.status=r,this.data=t,this.name="ApiError"}}async function s(e,r){try{let t=new Headers(r?.headers);t.set("Content-Type","application/json");let s=await fetch(e,{...r,headers:t}),n=s.headers.get("content-type")||"";if(s.redirected&&s.url.includes("/login"))throw new o("Authentication required",401);if(!s.ok){let e=n.includes("application/json")?await s.json().catch(()=>({})):{};throw new o(e.error||`HTTP error ${s.status}`,s.status,e)}if(!n.includes("application/json"))throw new o("Unexpected response format",s.status);return s.json()}catch(e){if(e instanceof o)throw e;throw new o(e instanceof Error?e.message:"Unknown error",0,e)}}let n={getAll:async()=>s("/api/worktrees"),getById:async e=>s(`/api/worktrees/${e}`),updateDescription:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({description:r})}),updateLink:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({link:r})}),toggleFavorite:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({favorite:r})}),updateStatus:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({status:r})}),updateCliTool:async(e,r)=>s(`/api/worktrees/${e}`,{method:"PATCH",body:JSON.stringify({cliToolId:r})}),markAsViewed:async e=>s(`/api/worktrees/${e}/viewed`,{method:"PATCH"}),async getMessages(e,r){let t=new URLSearchParams;return r&&t.append("cliTool",r),s(`/api/worktrees/${e}/messages${t.toString()?`?${t.toString()}`:""}`)},async sendMessage(e,r,t){let o={content:r};return t&&(o.cliToolId=t),s(`/api/worktrees/${e}/send`,{method:"POST",body:JSON.stringify(o)})},getLogs:async e=>s(`/api/worktrees/${e}/logs`),async getLogFile(e,r,t){let o=t?.sanitize?"?sanitize=true":"";return s(`/api/worktrees/${e}/logs/${r}${o}`)},killSession:async(e,r)=>s(`/api/worktrees/${e}/kill-session`,{method:"POST",body:r?JSON.stringify({cliToolId:r}):void 0})},i={scan:async e=>s("/api/repositories/scan",{method:"POST",body:JSON.stringify({repositoryPath:e})}),sync:async()=>s("/api/repositories/sync",{method:"POST"}),delete:async e=>s("/api/repositories",{method:"DELETE",body:JSON.stringify({repositoryPath:e})}),clone:async e=>s("/api/repositories/clone",{method:"POST",body:JSON.stringify({cloneUrl:e})}),getCloneStatus:async e=>s(`/api/repositories/clone/${e}`),getExcluded:async()=>s("/api/repositories/excluded"),restore:async e=>s("/api/repositories/restore",{method:"PUT",body:JSON.stringify({repositoryPath:e})})},a={getAll:async e=>(await s(`/api/worktrees/${e}/memos`)).memos,create:async(e,r)=>(await s(`/api/worktrees/${e}/memos`,{method:"POST",body:JSON.stringify(r||{})})).memo,update:async(e,r,t)=>(await s(`/api/worktrees/${e}/memos/${r}`,{method:"PUT",body:JSON.stringify(t)})).memo,delete:async(e,r)=>s(`/api/worktrees/${e}/memos/${r}`,{method:"DELETE"})};function d(e){return e instanceof o||e instanceof Error?e.message:"An unknown error occurred"}},25086:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>c,metadata:()=>d});var o=t(19510),s=t(2126),n=t(89907),i=t(57735);let a=(0,t(68570).createProxy)(String.raw`/home/runner/work/CommandMate/CommandMate/src/components/providers/AppProviders.tsx#AppProviders`);t(5023);let d={title:"CommandMate",description:"Git worktree management with Claude CLI and tmux sessions"};async function c({children:e}){let r=await (0,s.Z)(),t=await (0,n.Z)(),d=await (0,i.Z)();return o.jsx("html",{lang:r,suppressHydrationWarning:!0,children:o.jsx("body",{className:"min-h-screen bg-gray-50 dark:bg-cmd-bg-dark",children:o.jsx(a,{locale:r,messages:t,timeZone:d,authEnabled:!!process.env.CM_AUTH_TOKEN_HASH,children:e})})})}},72901:(e,r,t)=>{"use strict";t.d(r,{Z:()=>i});var o=t(10442),s=t(71615);let n=["en","ja"],i=(0,o.Z)(async({requestLocale:e})=>{let r=await e;if(!r||!n.includes(r)){let e=await (0,s.cookies)(),t=e.get("locale")?.value;if(t&&n.includes(t))r=t;else{let e=(await (0,s.headers)()).get("accept-language")??"";r=n.find(r=>e.includes(r))??"en"}}let[o,i,a,d,c,l,u]=await Promise.all([t(41440)(`./${r}/common.json`),t(31985)(`./${r}/worktree.json`),t(34519)(`./${r}/autoYes.json`),t(87269)(`./${r}/error.json`),t(35268)(`./${r}/prompt.json`),t(4703)(`./${r}/auth.json`),t(16114)(`./${r}/schedule.json`)]);return{locale:r,timeZone:"UTC",messages:{common:o.default,worktree:i.default,autoYes:a.default,error:d.default,prompt:c.default,auth:l.default,schedule:u.default}}})},5023:()=>{}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=4893,exports.ids=[4893],exports.modules={33016:(e,t,s)=>{let{EMPTY_BUFFER:r}=s(69030),i=Buffer[Symbol.species];function o(e,t,s,r,i){for(let o=0;o<i;o++)s[r+o]=e[o]^t[3&o]}function n(e,t){for(let s=0;s<e.length;s++)e[s]^=t[3&s]}if(e.exports={concat:function(e,t){if(0===e.length)return r;if(1===e.length)return e[0];let s=Buffer.allocUnsafe(t),o=0;for(let t=0;t<e.length;t++){let r=e[t];s.set(r,o),o+=r.length}return o<t?new i(s.buffer,s.byteOffset,o):s},mask:o,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){let s;return(e.readOnly=!0,Buffer.isBuffer(t))?t:(t instanceof ArrayBuffer?s=new i(t):ArrayBuffer.isView(t)?s=new i(t.buffer,t.byteOffset,t.byteLength):(s=Buffer.from(t),e.readOnly=!1),s)},unmask:n},!process.env.WS_NO_BUFFER_UTIL)try{let t=s(58359);e.exports.mask=function(e,s,r,i,n){n<48?o(e,s,r,i,n):t.mask(e,s,r,i,n)},e.exports.unmask=function(e,s){e.length<32?n(e,s):t.unmask(e,s)}}catch(e){}},69030:e=>{let t=["nodebuffer","arraybuffer","fragments"],s="undefined"!=typeof Blob;s&&t.push("blob"),e.exports={BINARY_TYPES:t,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:s,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},65767:(e,t,s)=>{let{kForOnEventAttribute:r,kListener:i}=s(69030),o=Symbol("kCode"),n=Symbol("kData"),a=Symbol("kError"),h=Symbol("kMessage"),l=Symbol("kReason"),c=Symbol("kTarget"),d=Symbol("kType"),f=Symbol("kWasClean");class _{constructor(e){this[c]=null,this[d]=e}get target(){return this[c]}get type(){return this[d]}}Object.defineProperty(_.prototype,"target",{enumerable:!0}),Object.defineProperty(_.prototype,"type",{enumerable:!0});class u extends _{constructor(e,t={}){super(e),this[o]=void 0===t.code?0:t.code,this[l]=void 0===t.reason?"":t.reason,this[f]=void 0!==t.wasClean&&t.wasClean}get code(){return this[o]}get reason(){return this[l]}get wasClean(){return this[f]}}Object.defineProperty(u.prototype,"code",{enumerable:!0}),Object.defineProperty(u.prototype,"reason",{enumerable:!0}),Object.defineProperty(u.prototype,"wasClean",{enumerable:!0});class p extends _{constructor(e,t={}){super(e),this[a]=void 0===t.error?null:t.error,this[h]=void 0===t.message?"":t.message}get error(){return this[a]}get message(){return this[h]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class m extends _{constructor(e,t={}){super(e),this[n]=void 0===t.data?null:t.data}get data(){return this[n]}}function y(e,t,s){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,s):e.call(t,s)}Object.defineProperty(m.prototype,"data",{enumerable:!0}),e.exports={CloseEvent:u,ErrorEvent:p,Event:_,EventTarget:{addEventListener(e,t,s={}){let o;for(let o of this.listeners(e))if(!s[r]&&o[i]===t&&!o[r])return;if("message"===e)o=function(e,s){let r=new m("message",{data:s?e:e.toString()});r[c]=this,y(t,this,r)};else if("close"===e)o=function(e,s){let r=new u("close",{code:e,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[c]=this,y(t,this,r)};else if("error"===e)o=function(e){let s=new p("error",{error:e,message:e.message});s[c]=this,y(t,this,s)};else{if("open"!==e)return;o=function(){let e=new _("open");e[c]=this,y(t,this,e)}}o[r]=!!s[r],o[i]=t,s.once?this.once(e,o):this.on(e,o)},removeEventListener(e,t){for(let s of this.listeners(e))if(s[i]===t&&!s[r]){this.removeListener(e,s);break}}},MessageEvent:m}},68718:(e,t,s)=>{let{tokenChars:r}=s(71187);function i(e,t,s){void 0===e[t]?e[t]=[s]:e[t].push(s)}e.exports={format:function(e){return Object.keys(e).map(t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map(e=>[t].concat(Object.keys(e).map(t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map(e=>!0===e?t:`${t}=${e}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(e){let t,s;let o=Object.create(null),n=Object.create(null),a=!1,h=!1,l=!1,c=-1,d=-1,f=-1,_=0;for(;_<e.length;_++)if(d=e.charCodeAt(_),void 0===t){if(-1===f&&1===r[d])-1===c&&(c=_);else if(0!==_&&(32===d||9===d))-1===f&&-1!==c&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let s=e.slice(c,f);44===d?(i(o,s,n),n=Object.create(null)):t=s,c=f=-1}else throw SyntaxError(`Unexpected character at index ${_}`)}else if(void 0===s){if(-1===f&&1===r[d])-1===c&&(c=_);else if(32===d||9===d)-1===f&&-1!==c&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_),i(n,e.slice(c,f),!0),44===d&&(i(o,t,n),n=Object.create(null),t=void 0),c=f=-1}else if(61===d&&-1!==c&&-1===f)s=e.slice(c,_),c=f=-1;else throw SyntaxError(`Unexpected character at index ${_}`)}else if(h){if(1!==r[d])throw SyntaxError(`Unexpected character at index ${_}`);-1===c?c=_:a||(a=!0),h=!1}else if(l){if(1===r[d])-1===c&&(c=_);else if(34===d&&-1!==c)l=!1,f=_;else if(92===d)h=!0;else throw SyntaxError(`Unexpected character at index ${_}`)}else if(34===d&&61===e.charCodeAt(_-1))l=!0;else if(-1===f&&1===r[d])-1===c&&(c=_);else if(-1!==c&&(32===d||9===d))-1===f&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let r=e.slice(c,f);a&&(r=r.replace(/\\/g,""),a=!1),i(n,s,r),44===d&&(i(o,t,n),n=Object.create(null),t=void 0),s=void 0,c=f=-1}else throw SyntaxError(`Unexpected character at index ${_}`);if(-1===c||l||32===d||9===d)throw SyntaxError("Unexpected end of input");-1===f&&(f=_);let u=e.slice(c,f);return void 0===t?i(o,u,n):(void 0===s?i(n,u,!0):a?i(n,s,u.replace(/\\/g,"")):i(n,s,u),i(o,t,n)),o}}},80189:e=>{let t=Symbol("kDone"),s=Symbol("kRun");class r{constructor(e){this[t]=()=>{this.pending--,this[s]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[s]()}[s](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[t])}}}e.exports=r},27767:(e,t,s)=>{let r;let i=s(71568),o=s(33016),n=s(80189),{kStatusCode:a}=s(69030),h=Buffer[Symbol.species],l=Buffer.from([0,0,255,255]),c=Symbol("permessage-deflate"),d=Symbol("total-length"),f=Symbol("callback"),_=Symbol("buffers"),u=Symbol("error");class p{constructor(e,t,s){this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,r||(r=new n(void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10))}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[f];this._deflate.close(),this._deflate=null,e&&e(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let t=this._options,s=e.find(e=>(!1!==t.serverNoContextTakeover||!e.server_no_context_takeover)&&(!e.server_max_window_bits||!1!==t.serverMaxWindowBits&&("number"!=typeof t.serverMaxWindowBits||!(t.serverMaxWindowBits>e.server_max_window_bits)))&&("number"!=typeof t.clientMaxWindowBits||!!e.client_max_window_bits));if(!s)throw Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:(!0===s.client_max_window_bits||!1===t.clientMaxWindowBits)&&delete s.client_max_window_bits,s}acceptAsClient(e){let t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let s=e[t];if(s.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){let e=+s;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){let e=+s;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if("client_no_context_takeover"===t||"server_no_context_takeover"===t){if(!0!==s)throw TypeError(`Invalid value for parameter "${t}": ${s}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=s})}),e}decompress(e,t,s){r.add(r=>{this._decompress(e,t,(e,t)=>{r(),s(e,t)})})}compress(e,t,s){r.add(r=>{this._compress(e,t,(e,t)=>{r(),s(e,t)})})}_decompress(e,t,s){let r=this._isServer?"client":"server";if(!this._inflate){let e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?i.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=i.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[d]=0,this._inflate[_]=[],this._inflate.on("error",g),this._inflate.on("data",y)}this._inflate[f]=s,this._inflate.write(e),t&&this._inflate.write(l),this._inflate.flush(()=>{let e=this._inflate[u];if(e){this._inflate.close(),this._inflate=null,s(e);return}let i=o.concat(this._inflate[_],this._inflate[d]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[d]=0,this._inflate[_]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,i)})}_compress(e,t,s){let r=this._isServer?"server":"client";if(!this._deflate){let e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?i.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=i.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[d]=0,this._deflate[_]=[],this._deflate.on("data",m)}this._deflate[f]=s,this._deflate.write(e),this._deflate.flush(i.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=o.concat(this._deflate[_],this._deflate[d]);t&&(e=new h(e.buffer,e.byteOffset,e.length-4)),this._deflate[f]=null,this._deflate[d]=0,this._deflate[_]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,e)})}}function m(e){this[_].push(e),this[d]+=e.length}function y(e){if(this[d]+=e.length,this[c]._maxPayload<1||this[d]<=this[c]._maxPayload){this[_].push(e);return}this[u]=RangeError("Max payload size exceeded"),this[u].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[u][a]=1009,this.removeListener("data",y),this.reset()}function g(e){if(this[c]._inflate=null,this[u]){this[f](this[u]);return}e[a]=1007,this[f](e)}e.exports=p},90263:(e,t,s)=>{let{Writable:r}=s(76162),i=s(27767),{BINARY_TYPES:o,EMPTY_BUFFER:n,kStatusCode:a,kWebSocket:h}=s(69030),{concat:l,toArrayBuffer:c,unmask:d}=s(33016),{isValidStatusCode:f,isValidUTF8:_}=s(71187),u=Buffer[Symbol.species];class p extends r{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||o[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[h]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new u(t.buffer,t.byteOffset+e,t.length-e),new u(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let s=this._buffers[0],r=t.length-e;e>=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new u(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((48&t[0])!=0){e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));return}let s=(64&t[0])==64;if(s&&!this._extensions[i.extensionName]){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(this._fin=(128&t[0])==128,this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(s){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(!this._fragmented){e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));return}this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));return}if(s){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));return}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=(128&t[1])==128,this._isServer){if(!this._masked){e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"));return}}else if(this._masked){e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));return}126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),s=t.readUInt32BE(0);if(s>2097151){e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"));return}this._payloadLength=4294967296*s+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!=0&&d(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));return}this._fragments.push(s)}this.dataMessage(t),0===this._state&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?l(s,t):"arraybuffer"===this._binaryType?c(l(s,t)):"blob"===this._binaryType?new Blob(s):s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)}))}else{let r=l(s,t);if(!this._skipUTF8Validation&&!_(r)){e(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));return}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(8===this._opcode){if(0===e.length)this._loop=!1,this.emit("conclude",1005,n),this.end();else{let s=e.readUInt16BE(0);if(!f(s)){t(this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE"));return}let r=new u(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(r)){t(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));return}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)}))}createError(e,t,s,r,i){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[a]=r,o}}e.exports=p},22404:(e,t,s)=>{let r;let{Duplex:i}=s(76162),{randomFillSync:o}=s(84770),n=s(27767),{EMPTY_BUFFER:a,kWebSocket:h,NOOP:l}=s(69030),{isBlob:c,isValidStatusCode:d}=s(71187),{mask:f,toBuffer:_}=s(33016),u=Symbol("kByteLength"),p=Buffer.alloc(4),m=8192;class y{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=l,this[h]=void 0}static frame(e,t){let s,i;let n=!1,a=2,h=!1;t.mask&&(s=t.maskBuffer||p,t.generateMask?t.generateMask(s):(8192===m&&(void 0===r&&(r=Buffer.alloc(8192)),o(r,0,8192),m=0),s[0]=r[m++],s[1]=r[m++],s[2]=r[m++],s[3]=r[m++]),h=(s[0]|s[1]|s[2]|s[3])==0,a=6),"string"==typeof e?i=(!t.mask||h)&&void 0!==t[u]?t[u]:(e=Buffer.from(e)).length:(i=e.length,n=t.mask&&t.readOnly&&!h);let l=i;i>=65536?(a+=8,l=127):i>125&&(a+=2,l=126);let c=Buffer.allocUnsafe(n?i+a:a);return(c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=l,126===l?c.writeUInt16BE(i,2):127===l&&(c[2]=c[3]=0,c.writeUIntBE(i,4,6)),t.mask)?(c[1]|=128,c[a-4]=s[0],c[a-3]=s[1],c[a-2]=s[2],c[a-1]=s[3],h)?[c,e]:n?(f(e,s,c,a,i),[c]):(f(e,s,e,0,i),[c,e]):[c,e]}close(e,t,s,r){let i;if(void 0===e)i=a;else if("number"==typeof e&&d(e)){if(void 0!==t&&t.length){let s=Buffer.byteLength(t);if(s>123)throw RangeError("The message must not be greater than 123 bytes");(i=Buffer.allocUnsafe(2+s)).writeUInt16BE(e,0),"string"==typeof t?i.write(t,2):i.set(t,2)}else(i=Buffer.allocUnsafe(2)).writeUInt16BE(e,0)}else throw TypeError("First argument must be a valid error code number");let o={[u]:i.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,i,!1,o,r]):this.sendFrame(y.frame(i,o),r)}ping(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),r>125)throw RangeError("The data size must not be greater than 125 bytes");let o={[u]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):0!==this._state?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(y.frame(e,o),s)}pong(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),r>125)throw RangeError("The data size must not be greater than 125 bytes");let o={[u]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):0!==this._state?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(y.frame(e,o),s)}send(e,t,s){let r,i;let o=this._extensions[n.extensionName],a=t.binary?2:1,h=t.compress;"string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),this._firstFragment?(this._firstFragment=!1,h&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(h=r>=o._threshold),this._compress=h):(h=!1,a=0),t.fin&&(this._firstFragment=!0);let l={[u]:r,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:i,rsv1:h};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,l,s]):this.getBlobData(e,this._compress,l,s):0!==this._state?this.enqueue([this.dispatch,e,this._compress,l,s]):this.dispatch(e,this._compress,l,s)}getBlobData(e,t,s,r){this._bufferedBytes+=s[u],this._state=2,e.arrayBuffer().then(e=>{if(this._socket.destroyed){let e=Error("The socket was closed while the blob was being read");process.nextTick(g,this,e,r);return}this._bufferedBytes-=s[u];let i=_(e);t?this.dispatch(i,t,s,r):(this._state=0,this.sendFrame(y.frame(i,s),r),this.dequeue())}).catch(e=>{process.nextTick(b,this,e,r)})}dispatch(e,t,s,r){if(!t){this.sendFrame(y.frame(e,s),r);return}let i=this._extensions[n.extensionName];this._bufferedBytes+=s[u],this._state=1,i.compress(e,s.fin,(e,t)=>{if(this._socket.destroyed){g(this,Error("The socket was closed while data was being compressed"),r);return}this._bufferedBytes-=s[u],this._state=0,s.readOnly=!1,this.sendFrame(y.frame(t,s),r),this.dequeue()})}dequeue(){for(;0===this._state&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][u],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][u],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}}function g(e,t,s){"function"==typeof s&&s(t);for(let s=0;s<e._queue.length;s++){let r=e._queue[s],i=r[r.length-1];"function"==typeof i&&i(t)}}function b(e,t,s){g(e,t,s),e.onerror(t)}e.exports=y},8826:(e,t,s)=>{s(9936);let{Duplex:r}=s(76162);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function n(e){this.removeListener("error",n),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let s=!0,a=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(t,s){let r=!s&&a._readableState.objectMode?t.toString():t;a.push(r)||e.pause()}),e.once("error",function(e){a.destroyed||(s=!1,a.destroy(e))}),e.once("close",function(){a.destroyed||a.push(null)}),a._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,a);return}let o=!1;e.once("error",function(e){o=!0,r(e)}),e.once("close",function(){o||r(t),process.nextTick(i,a)}),s&&e.terminate()},a._final=function(t){if(e.readyState===e.CONNECTING){e.once("open",function(){a._final(t)});return}null!==e._socket&&(e._socket._writableState.finished?(t(),a._readableState.endEmitted&&a.destroy()):(e._socket.once("finish",function(){t()}),e.close()))},a._read=function(){e.isPaused&&e.resume()},a._write=function(t,s,r){if(e.readyState===e.CONNECTING){e.once("open",function(){a._write(t,s,r)});return}e.send(t,r)},a.on("end",o),a.on("error",n),a}},35931:(e,t,s)=>{let{tokenChars:r}=s(71187);e.exports={parse:function(e){let t=new Set,s=-1,i=-1,o=0;for(;o<e.length;o++){let n=e.charCodeAt(o);if(-1===i&&1===r[n])-1===s&&(s=o);else if(0!==o&&(32===n||9===n))-1===i&&-1!==s&&(i=o);else if(44===n){if(-1===s)throw SyntaxError(`Unexpected character at index ${o}`);-1===i&&(i=o);let r=e.slice(s,i);if(t.has(r))throw SyntaxError(`The "${r}" subprotocol is duplicated`);t.add(r),s=i=-1}else throw SyntaxError(`Unexpected character at index ${o}`)}if(-1===s||-1!==i)throw SyntaxError("Unexpected end of input");let n=e.slice(s,o);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);return t.add(n),t}}},71187:(e,t,s)=>{let{isUtf8:r}=s(78893),{hasBlob:i}=s(69030);function o(e){let t=e.length,s=0;for(;s<t;)if((128&e[s])==0)s++;else if((224&e[s])==192){if(s+1===t||(192&e[s+1])!=128||(254&e[s])==192)return!1;s+=2}else if((240&e[s])==224){if(s+2>=t||(192&e[s+1])!=128||(192&e[s+2])!=128||224===e[s]&&(224&e[s+1])==128||237===e[s]&&(224&e[s+1])==160)return!1;s+=3}else{if((248&e[s])!=240||s+3>=t||(192&e[s+1])!=128||(192&e[s+2])!=128||(192&e[s+3])!=128||240===e[s]&&(240&e[s+1])==128||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}return!0}if(e.exports={isBlob:function(e){return i&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:o,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},r)e.exports.isValidUTF8=function(e){return e.length<24?o(e):r(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=s(93739);e.exports.isValidUTF8=function(e){return e.length<32?o(e):t(e)}}catch(e){}},20183:(e,t,s)=>{let r=s(17702),i=s(32615),{Duplex:o}=s(76162),{createHash:n}=s(84770),a=s(68718),h=s(27767),l=s(35931),c=s(9936),{GUID:d,kWebSocket:f}=s(69030),_=/^[+/0-9A-Za-z]{22}==$/;class u extends r{constructor(e,t){if(super(),null==(e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:c,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=i.createServer((e,t)=>{let s=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),t.end(s)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){let e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(let s of Object.keys(t))e.on(s,t[s]);return function(){for(let s of Object.keys(t))e.removeListener(s,t[s])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,s,r)=>{this.handleUpgrade(t,s,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state){e&&this.once("close",()=>{e(Error("The server is not running"))}),process.nextTick(p,this);return}if(e&&this.once("close",e),1!==this._state){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(p,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{p(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,s,r){t.on("error",m);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,n=+e.headers["sec-websocket-version"];if("GET"!==e.method){g(this,e,t,405,"Invalid HTTP method");return}if(void 0===o||"websocket"!==o.toLowerCase()){g(this,e,t,400,"Invalid Upgrade header");return}if(void 0===i||!_.test(i)){g(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(13!==n&&8!==n){g(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){y(t,400);return}let c=e.headers["sec-websocket-protocol"],d=new Set;if(void 0!==c)try{d=l.parse(c)}catch(s){g(this,e,t,400,"Invalid Sec-WebSocket-Protocol header");return}let f=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&void 0!==f){let s=new h(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let e=a.parse(f);e[h.extensionName]&&(s.accept(e[h.extensionName]),u[h.extensionName]=s)}catch(s){g(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let o={origin:e.headers[`${8===n?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(2===this.options.verifyClient.length){this.options.verifyClient(o,(o,n,a,h)=>{if(!o)return y(t,n||401,a,h);this.completeUpgrade(u,i,d,e,t,s,r)});return}if(!this.options.verifyClient(o))return y(t,401)}this.completeUpgrade(u,i,d,e,t,s,r)}completeUpgrade(e,t,s,r,i,o,l){if(!i.readable||!i.writable)return i.destroy();if(i[f])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return y(i,503);let c=n("sha1").update(t+d).digest("base64"),_=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${c}`],u=new this.options.WebSocket(null,void 0,this.options);if(s.size){let e=this.options.handleProtocols?this.options.handleProtocols(s,r):s.values().next().value;e&&(_.push(`Sec-WebSocket-Protocol: ${e}`),u._protocol=e)}if(e[h.extensionName]){let t=e[h.extensionName].params,s=a.format({[h.extensionName]:[t]});_.push(`Sec-WebSocket-Extensions: ${s}`),u._extensions=e}this.emit("headers",_,r),i.write(_.concat("\r\n").join("\r\n")),i.removeListener("error",m),u.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(p,this)})),l(u,r)}}function p(e){e._state=2,e.emit("close")}function m(){this.destroy()}function y(e,t,s,r){s=s||i.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${i.STATUS_CODES[t]}\r
|
|
2
|
-
`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join("\r\n")+"\r\n\r\n"+s)}function g(e,t,s,r,i,o){if(e.listenerCount("wsClientError")){let r=Error(i);Error.captureStackTrace(r,g),e.emit("wsClientError",r,s,t)}else y(s,r,i,o)}e.exports=u},9936:(e,t,s)=>{let r=s(17702),i=s(35240),o=s(32615),n=s(98216),a=s(82452),{randomBytes:h,createHash:l}=s(84770),{Duplex:c,Readable:d}=s(76162),{URL:f}=s(17360),_=s(27767),u=s(90263),p=s(22404),{isBlob:m}=s(71187),{BINARY_TYPES:y,EMPTY_BUFFER:g,GUID:b,kForOnEventAttribute:S,kListener:v,kStatusCode:E,kWebSocket:k,NOOP:x}=s(69030),{EventTarget:{addEventListener:w,removeEventListener:O}}=s(65767),{format:T,parse:C}=s(68718),{toBuffer:N}=s(33016),L=Symbol("kAborted"),P=[8,13],B=["CONNECTING","OPEN","CLOSING","CLOSED"],R=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class I extends r{constructor(e,t,s){super(),this._binaryType=y[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=g,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=I.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===t?t=[]:Array.isArray(t)||("object"==typeof t&&null!==t?(s=t,t=[]):t=[t]),function e(t,s,r,n){let a,c,d,u;let p={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:P[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=p.autoPong,!P.includes(p.protocolVersion))throw RangeError(`Unsupported protocol version: ${p.protocolVersion} (supported versions: ${P.join(", ")})`);if(s instanceof f)a=s;else try{a=new f(s)}catch(e){throw SyntaxError(`Invalid URL: ${s}`)}"http:"===a.protocol?a.protocol="ws:":"https:"===a.protocol&&(a.protocol="wss:"),t._url=a.href;let m="wss:"===a.protocol,y="ws+unix:"===a.protocol;if("ws:"===a.protocol||m||y?y&&!a.pathname?c="The URL's pathname is empty":a.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"',c){let e=SyntaxError(c);if(0===t._redirects)throw e;U(t,e);return}let g=m?443:80,S=h(16).toString("base64"),v=m?i.request:o.request,E=new Set;if(p.createConnection=p.createConnection||(m?W:D),p.defaultPort=p.defaultPort||g,p.port=a.port||g,p.host=a.hostname.startsWith("[")?a.hostname.slice(1,-1):a.hostname,p.headers={...p.headers,"Sec-WebSocket-Version":p.protocolVersion,"Sec-WebSocket-Key":S,Connection:"Upgrade",Upgrade:"websocket"},p.path=a.pathname+a.search,p.timeout=p.handshakeTimeout,p.perMessageDeflate&&(d=new _(!0!==p.perMessageDeflate?p.perMessageDeflate:{},!1,p.maxPayload),p.headers["Sec-WebSocket-Extensions"]=T({[_.extensionName]:d.offer()})),r.length){for(let e of r){if("string"!=typeof e||!R.test(e)||E.has(e))throw SyntaxError("An invalid or duplicated subprotocol was specified");E.add(e)}p.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(p.origin&&(p.protocolVersion<13?p.headers["Sec-WebSocket-Origin"]=p.origin:p.headers.Origin=p.origin),(a.username||a.password)&&(p.auth=`${a.username}:${a.password}`),y){let e=p.path.split(":");p.socketPath=e[0],p.path=e[1]}if(p.followRedirects){if(0===t._redirects){t._originalIpc=y,t._originalSecure=m,t._originalHostOrSocketPath=y?p.socketPath:a.host;let e=n&&n.headers;if(n={...n,headers:{}},e)for(let[t,s]of Object.entries(e))n.headers[t.toLowerCase()]=s}else if(0===t.listenerCount("redirect")){let e=y?!!t._originalIpc&&p.socketPath===t._originalHostOrSocketPath:!t._originalIpc&&a.host===t._originalHostOrSocketPath;e&&(!t._originalSecure||m)||(delete p.headers.authorization,delete p.headers.cookie,e||delete p.headers.host,p.auth=void 0)}p.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(p.auth).toString("base64")),u=t._req=v(p),t._redirects&&t.emit("redirect",t.url,u)}else u=t._req=v(p);p.timeout&&u.on("timeout",()=>{M(t,u,"Opening handshake has timed out")}),u.on("error",e=>{null===u||u[L]||(u=t._req=null,U(t,e))}),u.on("response",i=>{let o=i.headers.location,a=i.statusCode;if(o&&p.followRedirects&&a>=300&&a<400){let i;if(++t._redirects>p.maxRedirects){M(t,u,"Maximum redirects exceeded");return}u.abort();try{i=new f(o,s)}catch(e){U(t,SyntaxError(`Invalid URL: ${o}`));return}e(t,i,r,n)}else t.emit("unexpected-response",u,i)||M(t,u,`Unexpected server response: ${i.statusCode}`)}),u.on("upgrade",(e,s,r)=>{let i;if(t.emit("upgrade",e),t.readyState!==I.CONNECTING)return;u=t._req=null;let o=e.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase()){M(t,s,"Invalid Upgrade header");return}let n=l("sha1").update(S+b).digest("base64");if(e.headers["sec-websocket-accept"]!==n){M(t,s,"Invalid Sec-WebSocket-Accept header");return}let a=e.headers["sec-websocket-protocol"];if(void 0!==a?E.size?E.has(a)||(i="Server sent an invalid subprotocol"):i="Server sent a subprotocol but none was requested":E.size&&(i="Server sent no subprotocol"),i){M(t,s,i);return}a&&(t._protocol=a);let h=e.headers["sec-websocket-extensions"];if(void 0!==h){let e;if(!d){M(t,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}try{e=C(h)}catch(e){M(t,s,"Invalid Sec-WebSocket-Extensions header");return}let r=Object.keys(e);if(1!==r.length||r[0]!==_.extensionName){M(t,s,"Server indicated an extension that was not requested");return}try{d.accept(e[_.extensionName])}catch(e){M(t,s,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[_.extensionName]=d}t.setSocket(s,r,{allowSynchronousEvents:p.allowSynchronousEvents,generateMask:p.generateMask,maxPayload:p.maxPayload,skipUTF8Validation:p.skipUTF8Validation})}),p.finishRequest?p.finishRequest(u,t):u.end()}(this,e,t,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){y.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,t,s){let r=new u({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),i=new p(e,this._extensions,s.generateMask);this._receiver=r,this._sender=i,this._socket=e,r[k]=this,i[k]=this,e[k]=this,r.on("conclude",F),r.on("drain",$),r.on("error",j),r.on("message",V),r.on("ping",q),r.on("pong",z),i.onerror=X,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Y),e.on("data",Z),e.on("end",J),e.on("error",Q),this._readyState=I.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[_.extensionName]&&this._extensions[_.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=I.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==I.CLOSED){if(this.readyState===I.CONNECTING){M(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===I.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=I.CLOSING,this._sender.close(e,t,!this._isServer,e=>{!e&&(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),K(this)}}pause(){this.readyState!==I.CONNECTING&&this.readyState!==I.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState!==I.OPEN){A(this,e,s);return}void 0===t&&(t=!this._isServer),this._sender.ping(e||g,t,s)}pong(e,t,s){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState!==I.OPEN){A(this,e,s);return}void 0===t&&(t=!this._isServer),this._sender.pong(e||g,t,s)}resume(){this.readyState!==I.CONNECTING&&this.readyState!==I.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===I.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==I.OPEN){A(this,e,s);return}let r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[_.extensionName]||(r.compress=!1),this._sender.send(e||g,r,s)}terminate(){if(this.readyState!==I.CLOSED){if(this.readyState===I.CONNECTING){M(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=I.CLOSING,this._socket.destroy())}}}function U(e,t){e._readyState=I.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function D(e){return e.path=e.socketPath,n.connect(e)}function W(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=n.isIP(e.host)?"":e.host),a.connect(e)}function M(e,t,s){e._readyState=I.CLOSING;let r=Error(s);Error.captureStackTrace(r,M),t.setHeader?(t[L]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(U,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function A(e,t,s){if(t){let s=m(t)?t.size:N(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${B[e.readyState]})`);process.nextTick(s,t)}}function F(e,t){let s=this[k];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[k]&&(s._socket.removeListener("data",Z),process.nextTick(H,s._socket),1005===e?s.close():s.close(e,t))}function $(){let e=this[k];e.isPaused||e._socket.resume()}function j(e){let t=this[k];void 0!==t._socket[k]&&(t._socket.removeListener("data",Z),process.nextTick(H,t._socket),t.close(e[E])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function G(){this[k].emitClose()}function V(e,t){this[k].emit("message",e,t)}function q(e){let t=this[k];t._autoPong&&t.pong(e,!this._isServer,x),t.emit("ping",e)}function z(e){this[k].emit("pong",e)}function H(e){e.resume()}function X(e){let t=this[k];t.readyState===I.CLOSED||(t.readyState===I.OPEN&&(t._readyState=I.CLOSING,K(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function K(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),3e4)}function Y(){let e;let t=this[k];this.removeListener("close",Y),this.removeListener("data",Z),this.removeListener("end",J),t._readyState=I.CLOSING,this._readableState.endEmitted||t._closeFrameReceived||t._receiver._writableState.errorEmitted||null===(e=t._socket.read())||t._receiver.write(e),t._receiver.end(),this[k]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",G),t._receiver.on("finish",G))}function Z(e){this[k]._receiver.write(e)||this.pause()}function J(){let e=this[k];e._readyState=I.CLOSING,e._receiver.end(),this.end()}function Q(){let e=this[k];this.removeListener("error",Q),this.on("error",x),e&&(e._readyState=I.CLOSING,this.destroy())}Object.defineProperty(I,"CONNECTING",{enumerable:!0,value:B.indexOf("CONNECTING")}),Object.defineProperty(I.prototype,"CONNECTING",{enumerable:!0,value:B.indexOf("CONNECTING")}),Object.defineProperty(I,"OPEN",{enumerable:!0,value:B.indexOf("OPEN")}),Object.defineProperty(I.prototype,"OPEN",{enumerable:!0,value:B.indexOf("OPEN")}),Object.defineProperty(I,"CLOSING",{enumerable:!0,value:B.indexOf("CLOSING")}),Object.defineProperty(I.prototype,"CLOSING",{enumerable:!0,value:B.indexOf("CLOSING")}),Object.defineProperty(I,"CLOSED",{enumerable:!0,value:B.indexOf("CLOSED")}),Object.defineProperty(I.prototype,"CLOSED",{enumerable:!0,value:B.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(I.prototype,e,{enumerable:!0})}),["open","error","close","message"].forEach(e=>{Object.defineProperty(I.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[S])return t[v];return null},set(t){for(let t of this.listeners(e))if(t[S]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[S]:!0})}})}),I.prototype.addEventListener=w,I.prototype.removeEventListener=O,e.exports=I},34893:(e,t,s)=>{s.d(t,{XY:()=>r}),s(8826),s(90263),s(22404);var r=s(9936);s(20183)}};
|
|
1
|
+
"use strict";exports.id=4893,exports.ids=[4893],exports.modules={33016:(e,t,s)=>{let{EMPTY_BUFFER:r}=s(69030),i=Buffer[Symbol.species];function o(e,t,s,r,i){for(let o=0;o<i;o++)s[r+o]=e[o]^t[3&o]}function n(e,t){for(let s=0;s<e.length;s++)e[s]^=t[3&s]}if(e.exports={concat:function(e,t){if(0===e.length)return r;if(1===e.length)return e[0];let s=Buffer.allocUnsafe(t),o=0;for(let t=0;t<e.length;t++){let r=e[t];s.set(r,o),o+=r.length}return o<t?new i(s.buffer,s.byteOffset,o):s},mask:o,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){let s;return(e.readOnly=!0,Buffer.isBuffer(t))?t:(t instanceof ArrayBuffer?s=new i(t):ArrayBuffer.isView(t)?s=new i(t.buffer,t.byteOffset,t.byteLength):(s=Buffer.from(t),e.readOnly=!1),s)},unmask:n},!process.env.WS_NO_BUFFER_UTIL)try{let t=s(58359);e.exports.mask=function(e,s,r,i,n){n<48?o(e,s,r,i,n):t.mask(e,s,r,i,n)},e.exports.unmask=function(e,s){e.length<32?n(e,s):t.unmask(e,s)}}catch(e){}},69030:e=>{let t=["nodebuffer","arraybuffer","fragments"],s="undefined"!=typeof Blob;s&&t.push("blob"),e.exports={BINARY_TYPES:t,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:s,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},65767:(e,t,s)=>{let{kForOnEventAttribute:r,kListener:i}=s(69030),o=Symbol("kCode"),n=Symbol("kData"),a=Symbol("kError"),h=Symbol("kMessage"),l=Symbol("kReason"),c=Symbol("kTarget"),d=Symbol("kType"),f=Symbol("kWasClean");class _{constructor(e){this[c]=null,this[d]=e}get target(){return this[c]}get type(){return this[d]}}Object.defineProperty(_.prototype,"target",{enumerable:!0}),Object.defineProperty(_.prototype,"type",{enumerable:!0});class u extends _{constructor(e,t={}){super(e),this[o]=void 0===t.code?0:t.code,this[l]=void 0===t.reason?"":t.reason,this[f]=void 0!==t.wasClean&&t.wasClean}get code(){return this[o]}get reason(){return this[l]}get wasClean(){return this[f]}}Object.defineProperty(u.prototype,"code",{enumerable:!0}),Object.defineProperty(u.prototype,"reason",{enumerable:!0}),Object.defineProperty(u.prototype,"wasClean",{enumerable:!0});class p extends _{constructor(e,t={}){super(e),this[a]=void 0===t.error?null:t.error,this[h]=void 0===t.message?"":t.message}get error(){return this[a]}get message(){return this[h]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class m extends _{constructor(e,t={}){super(e),this[n]=void 0===t.data?null:t.data}get data(){return this[n]}}function y(e,t,s){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,s):e.call(t,s)}Object.defineProperty(m.prototype,"data",{enumerable:!0}),e.exports={CloseEvent:u,ErrorEvent:p,Event:_,EventTarget:{addEventListener(e,t,s={}){let o;for(let o of this.listeners(e))if(!s[r]&&o[i]===t&&!o[r])return;if("message"===e)o=function(e,s){let r=new m("message",{data:s?e:e.toString()});r[c]=this,y(t,this,r)};else if("close"===e)o=function(e,s){let r=new u("close",{code:e,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[c]=this,y(t,this,r)};else if("error"===e)o=function(e){let s=new p("error",{error:e,message:e.message});s[c]=this,y(t,this,s)};else{if("open"!==e)return;o=function(){let e=new _("open");e[c]=this,y(t,this,e)}}o[r]=!!s[r],o[i]=t,s.once?this.once(e,o):this.on(e,o)},removeEventListener(e,t){for(let s of this.listeners(e))if(s[i]===t&&!s[r]){this.removeListener(e,s);break}}},MessageEvent:m}},68718:(e,t,s)=>{let{tokenChars:r}=s(71187);function i(e,t,s){void 0===e[t]?e[t]=[s]:e[t].push(s)}e.exports={format:function(e){return Object.keys(e).map(t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map(e=>[t].concat(Object.keys(e).map(t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map(e=>!0===e?t:`${t}=${e}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(e){let t,s;let o=Object.create(null),n=Object.create(null),a=!1,h=!1,l=!1,c=-1,d=-1,f=-1,_=0;for(;_<e.length;_++)if(d=e.charCodeAt(_),void 0===t){if(-1===f&&1===r[d])-1===c&&(c=_);else if(0!==_&&(32===d||9===d))-1===f&&-1!==c&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let s=e.slice(c,f);44===d?(i(o,s,n),n=Object.create(null)):t=s,c=f=-1}else throw SyntaxError(`Unexpected character at index ${_}`)}else if(void 0===s){if(-1===f&&1===r[d])-1===c&&(c=_);else if(32===d||9===d)-1===f&&-1!==c&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_),i(n,e.slice(c,f),!0),44===d&&(i(o,t,n),n=Object.create(null),t=void 0),c=f=-1}else if(61===d&&-1!==c&&-1===f)s=e.slice(c,_),c=f=-1;else throw SyntaxError(`Unexpected character at index ${_}`)}else if(h){if(1!==r[d])throw SyntaxError(`Unexpected character at index ${_}`);-1===c?c=_:a||(a=!0),h=!1}else if(l){if(1===r[d])-1===c&&(c=_);else if(34===d&&-1!==c)l=!1,f=_;else if(92===d)h=!0;else throw SyntaxError(`Unexpected character at index ${_}`)}else if(34===d&&61===e.charCodeAt(_-1))l=!0;else if(-1===f&&1===r[d])-1===c&&(c=_);else if(-1!==c&&(32===d||9===d))-1===f&&(f=_);else if(59===d||44===d){if(-1===c)throw SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let r=e.slice(c,f);a&&(r=r.replace(/\\/g,""),a=!1),i(n,s,r),44===d&&(i(o,t,n),n=Object.create(null),t=void 0),s=void 0,c=f=-1}else throw SyntaxError(`Unexpected character at index ${_}`);if(-1===c||l||32===d||9===d)throw SyntaxError("Unexpected end of input");-1===f&&(f=_);let u=e.slice(c,f);return void 0===t?i(o,u,n):(void 0===s?i(n,u,!0):a?i(n,s,u.replace(/\\/g,"")):i(n,s,u),i(o,t,n)),o}}},80189:e=>{let t=Symbol("kDone"),s=Symbol("kRun");class r{constructor(e){this[t]=()=>{this.pending--,this[s]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[s]()}[s](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[t])}}}e.exports=r},27767:(e,t,s)=>{let r;let i=s(71568),o=s(33016),n=s(80189),{kStatusCode:a}=s(69030),h=Buffer[Symbol.species],l=Buffer.from([0,0,255,255]),c=Symbol("permessage-deflate"),d=Symbol("total-length"),f=Symbol("callback"),_=Symbol("buffers"),u=Symbol("error");class p{constructor(e,t,s){this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,r||(r=new n(void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10))}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[f];this._deflate.close(),this._deflate=null,e&&e(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let t=this._options,s=e.find(e=>(!1!==t.serverNoContextTakeover||!e.server_no_context_takeover)&&(!e.server_max_window_bits||!1!==t.serverMaxWindowBits&&("number"!=typeof t.serverMaxWindowBits||!(t.serverMaxWindowBits>e.server_max_window_bits)))&&("number"!=typeof t.clientMaxWindowBits||!!e.client_max_window_bits));if(!s)throw Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:(!0===s.client_max_window_bits||!1===t.clientMaxWindowBits)&&delete s.client_max_window_bits,s}acceptAsClient(e){let t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let s=e[t];if(s.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){let e=+s;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){let e=+s;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if("client_no_context_takeover"===t||"server_no_context_takeover"===t){if(!0!==s)throw TypeError(`Invalid value for parameter "${t}": ${s}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=s})}),e}decompress(e,t,s){r.add(r=>{this._decompress(e,t,(e,t)=>{r(),s(e,t)})})}compress(e,t,s){r.add(r=>{this._compress(e,t,(e,t)=>{r(),s(e,t)})})}_decompress(e,t,s){let r=this._isServer?"client":"server";if(!this._inflate){let e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?i.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=i.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[d]=0,this._inflate[_]=[],this._inflate.on("error",g),this._inflate.on("data",y)}this._inflate[f]=s,this._inflate.write(e),t&&this._inflate.write(l),this._inflate.flush(()=>{let e=this._inflate[u];if(e){this._inflate.close(),this._inflate=null,s(e);return}let i=o.concat(this._inflate[_],this._inflate[d]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[d]=0,this._inflate[_]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,i)})}_compress(e,t,s){let r=this._isServer?"server":"client";if(!this._deflate){let e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?i.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=i.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[d]=0,this._deflate[_]=[],this._deflate.on("data",m)}this._deflate[f]=s,this._deflate.write(e),this._deflate.flush(i.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=o.concat(this._deflate[_],this._deflate[d]);t&&(e=new h(e.buffer,e.byteOffset,e.length-4)),this._deflate[f]=null,this._deflate[d]=0,this._deflate[_]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,e)})}}function m(e){this[_].push(e),this[d]+=e.length}function y(e){if(this[d]+=e.length,this[c]._maxPayload<1||this[d]<=this[c]._maxPayload){this[_].push(e);return}this[u]=RangeError("Max payload size exceeded"),this[u].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[u][a]=1009,this.removeListener("data",y),this.reset()}function g(e){if(this[c]._inflate=null,this[u]){this[f](this[u]);return}e[a]=1007,this[f](e)}e.exports=p},90263:(e,t,s)=>{let{Writable:r}=s(76162),i=s(27767),{BINARY_TYPES:o,EMPTY_BUFFER:n,kStatusCode:a,kWebSocket:h}=s(69030),{concat:l,toArrayBuffer:c,unmask:d}=s(33016),{isValidStatusCode:f,isValidUTF8:_}=s(71187),u=Buffer[Symbol.species];class p extends r{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||o[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[h]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new u(t.buffer,t.byteOffset+e,t.length-e),new u(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let s=this._buffers[0],r=t.length-e;e>=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new u(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((48&t[0])!=0){e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));return}let s=(64&t[0])==64;if(s&&!this._extensions[i.extensionName]){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(this._fin=(128&t[0])==128,this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(s){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(!this._fragmented){e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));return}this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));return}if(s){e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));return}if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));return}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=(128&t[1])==128,this._isServer){if(!this._masked){e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"));return}}else if(this._masked){e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));return}126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),s=t.readUInt32BE(0);if(s>2097151){e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"));return}this._payloadLength=4294967296*s+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!=0&&d(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));return}this._fragments.push(s)}this.dataMessage(t),0===this._state&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?l(s,t):"arraybuffer"===this._binaryType?c(l(s,t)):"blob"===this._binaryType?new Blob(s):s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)}))}else{let r=l(s,t);if(!this._skipUTF8Validation&&!_(r)){e(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));return}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(8===this._opcode){if(0===e.length)this._loop=!1,this.emit("conclude",1005,n),this.end();else{let s=e.readUInt16BE(0);if(!f(s)){t(this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE"));return}let r=new u(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(r)){t(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));return}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)}))}createError(e,t,s,r,i){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[a]=r,o}}e.exports=p},22404:(e,t,s)=>{let r;let{Duplex:i}=s(76162),{randomFillSync:o}=s(84770),n=s(27767),{EMPTY_BUFFER:a,kWebSocket:h,NOOP:l}=s(69030),{isBlob:c,isValidStatusCode:d}=s(71187),{mask:f,toBuffer:_}=s(33016),u=Symbol("kByteLength"),p=Buffer.alloc(4),m=8192;class y{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=l,this[h]=void 0}static frame(e,t){let s,i;let n=!1,a=2,h=!1;t.mask&&(s=t.maskBuffer||p,t.generateMask?t.generateMask(s):(8192===m&&(void 0===r&&(r=Buffer.alloc(8192)),o(r,0,8192),m=0),s[0]=r[m++],s[1]=r[m++],s[2]=r[m++],s[3]=r[m++]),h=(s[0]|s[1]|s[2]|s[3])==0,a=6),"string"==typeof e?i=(!t.mask||h)&&void 0!==t[u]?t[u]:(e=Buffer.from(e)).length:(i=e.length,n=t.mask&&t.readOnly&&!h);let l=i;i>=65536?(a+=8,l=127):i>125&&(a+=2,l=126);let c=Buffer.allocUnsafe(n?i+a:a);return(c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=l,126===l?c.writeUInt16BE(i,2):127===l&&(c[2]=c[3]=0,c.writeUIntBE(i,4,6)),t.mask)?(c[1]|=128,c[a-4]=s[0],c[a-3]=s[1],c[a-2]=s[2],c[a-1]=s[3],h)?[c,e]:n?(f(e,s,c,a,i),[c]):(f(e,s,e,0,i),[c,e]):[c,e]}close(e,t,s,r){let i;if(void 0===e)i=a;else if("number"==typeof e&&d(e)){if(void 0!==t&&t.length){let s=Buffer.byteLength(t);if(s>123)throw RangeError("The message must not be greater than 123 bytes");(i=Buffer.allocUnsafe(2+s)).writeUInt16BE(e,0),"string"==typeof t?i.write(t,2):i.set(t,2)}else(i=Buffer.allocUnsafe(2)).writeUInt16BE(e,0)}else throw TypeError("First argument must be a valid error code number");let o={[u]:i.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,i,!1,o,r]):this.sendFrame(y.frame(i,o),r)}ping(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),r>125)throw RangeError("The data size must not be greater than 125 bytes");let o={[u]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):0!==this._state?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(y.frame(e,o),s)}pong(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),r>125)throw RangeError("The data size must not be greater than 125 bytes");let o={[u]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):0!==this._state?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(y.frame(e,o),s)}send(e,t,s){let r,i;let o=this._extensions[n.extensionName],a=t.binary?2:1,h=t.compress;"string"==typeof e?(r=Buffer.byteLength(e),i=!1):c(e)?(r=e.size,i=!1):(r=(e=_(e)).length,i=_.readOnly),this._firstFragment?(this._firstFragment=!1,h&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(h=r>=o._threshold),this._compress=h):(h=!1,a=0),t.fin&&(this._firstFragment=!0);let l={[u]:r,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:i,rsv1:h};c(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,l,s]):this.getBlobData(e,this._compress,l,s):0!==this._state?this.enqueue([this.dispatch,e,this._compress,l,s]):this.dispatch(e,this._compress,l,s)}getBlobData(e,t,s,r){this._bufferedBytes+=s[u],this._state=2,e.arrayBuffer().then(e=>{if(this._socket.destroyed){let e=Error("The socket was closed while the blob was being read");process.nextTick(g,this,e,r);return}this._bufferedBytes-=s[u];let i=_(e);t?this.dispatch(i,t,s,r):(this._state=0,this.sendFrame(y.frame(i,s),r),this.dequeue())}).catch(e=>{process.nextTick(b,this,e,r)})}dispatch(e,t,s,r){if(!t){this.sendFrame(y.frame(e,s),r);return}let i=this._extensions[n.extensionName];this._bufferedBytes+=s[u],this._state=1,i.compress(e,s.fin,(e,t)=>{if(this._socket.destroyed){g(this,Error("The socket was closed while data was being compressed"),r);return}this._bufferedBytes-=s[u],this._state=0,s.readOnly=!1,this.sendFrame(y.frame(t,s),r),this.dequeue()})}dequeue(){for(;0===this._state&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][u],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][u],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}}function g(e,t,s){"function"==typeof s&&s(t);for(let s=0;s<e._queue.length;s++){let r=e._queue[s],i=r[r.length-1];"function"==typeof i&&i(t)}}function b(e,t,s){g(e,t,s),e.onerror(t)}e.exports=y},8826:(e,t,s)=>{s(9936);let{Duplex:r}=s(76162);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function n(e){this.removeListener("error",n),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let s=!0,a=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(t,s){let r=!s&&a._readableState.objectMode?t.toString():t;a.push(r)||e.pause()}),e.once("error",function(e){a.destroyed||(s=!1,a.destroy(e))}),e.once("close",function(){a.destroyed||a.push(null)}),a._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,a);return}let o=!1;e.once("error",function(e){o=!0,r(e)}),e.once("close",function(){o||r(t),process.nextTick(i,a)}),s&&e.terminate()},a._final=function(t){if(e.readyState===e.CONNECTING){e.once("open",function(){a._final(t)});return}null!==e._socket&&(e._socket._writableState.finished?(t(),a._readableState.endEmitted&&a.destroy()):(e._socket.once("finish",function(){t()}),e.close()))},a._read=function(){e.isPaused&&e.resume()},a._write=function(t,s,r){if(e.readyState===e.CONNECTING){e.once("open",function(){a._write(t,s,r)});return}e.send(t,r)},a.on("end",o),a.on("error",n),a}},35931:(e,t,s)=>{let{tokenChars:r}=s(71187);e.exports={parse:function(e){let t=new Set,s=-1,i=-1,o=0;for(;o<e.length;o++){let n=e.charCodeAt(o);if(-1===i&&1===r[n])-1===s&&(s=o);else if(0!==o&&(32===n||9===n))-1===i&&-1!==s&&(i=o);else if(44===n){if(-1===s)throw SyntaxError(`Unexpected character at index ${o}`);-1===i&&(i=o);let r=e.slice(s,i);if(t.has(r))throw SyntaxError(`The "${r}" subprotocol is duplicated`);t.add(r),s=i=-1}else throw SyntaxError(`Unexpected character at index ${o}`)}if(-1===s||-1!==i)throw SyntaxError("Unexpected end of input");let n=e.slice(s,o);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);return t.add(n),t}}},71187:(e,t,s)=>{let{isUtf8:r}=s(78893),{hasBlob:i}=s(69030);function o(e){let t=e.length,s=0;for(;s<t;)if((128&e[s])==0)s++;else if((224&e[s])==192){if(s+1===t||(192&e[s+1])!=128||(254&e[s])==192)return!1;s+=2}else if((240&e[s])==224){if(s+2>=t||(192&e[s+1])!=128||(192&e[s+2])!=128||224===e[s]&&(224&e[s+1])==128||237===e[s]&&(224&e[s+1])==160)return!1;s+=3}else{if((248&e[s])!=240||s+3>=t||(192&e[s+1])!=128||(192&e[s+2])!=128||(192&e[s+3])!=128||240===e[s]&&(240&e[s+1])==128||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}return!0}if(e.exports={isBlob:function(e){return i&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:o,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},r)e.exports.isValidUTF8=function(e){return e.length<24?o(e):r(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=s(93739);e.exports.isValidUTF8=function(e){return e.length<32?o(e):t(e)}}catch(e){}},20183:(e,t,s)=>{let r=s(17702),i=s(32615),{Duplex:o}=s(76162),{createHash:n}=s(84770),a=s(68718),h=s(27767),l=s(35931),c=s(9936),{CLOSE_TIMEOUT:d,GUID:f,kWebSocket:_}=s(69030),u=/^[+/0-9A-Za-z]{22}==$/;class p extends r{constructor(e,t){if(super(),null==(e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:d,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:c,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=i.createServer((e,t)=>{let s=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),t.end(s)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){let e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(let s of Object.keys(t))e.on(s,t[s]);return function(){for(let s of Object.keys(t))e.removeListener(s,t[s])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,s,r)=>{this.handleUpgrade(t,s,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state){e&&this.once("close",()=>{e(Error("The server is not running"))}),process.nextTick(m,this);return}if(e&&this.once("close",e),1!==this._state){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(m,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{m(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,s,r){t.on("error",y);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,n=+e.headers["sec-websocket-version"];if("GET"!==e.method){b(this,e,t,405,"Invalid HTTP method");return}if(void 0===o||"websocket"!==o.toLowerCase()){b(this,e,t,400,"Invalid Upgrade header");return}if(void 0===i||!u.test(i)){b(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(13!==n&&8!==n){b(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){g(t,400);return}let c=e.headers["sec-websocket-protocol"],d=new Set;if(void 0!==c)try{d=l.parse(c)}catch(s){b(this,e,t,400,"Invalid Sec-WebSocket-Protocol header");return}let f=e.headers["sec-websocket-extensions"],_={};if(this.options.perMessageDeflate&&void 0!==f){let s=new h(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let e=a.parse(f);e[h.extensionName]&&(s.accept(e[h.extensionName]),_[h.extensionName]=s)}catch(s){b(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let o={origin:e.headers[`${8===n?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(2===this.options.verifyClient.length){this.options.verifyClient(o,(o,n,a,h)=>{if(!o)return g(t,n||401,a,h);this.completeUpgrade(_,i,d,e,t,s,r)});return}if(!this.options.verifyClient(o))return g(t,401)}this.completeUpgrade(_,i,d,e,t,s,r)}completeUpgrade(e,t,s,r,i,o,l){if(!i.readable||!i.writable)return i.destroy();if(i[_])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return g(i,503);let c=n("sha1").update(t+f).digest("base64"),d=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${c}`],u=new this.options.WebSocket(null,void 0,this.options);if(s.size){let e=this.options.handleProtocols?this.options.handleProtocols(s,r):s.values().next().value;e&&(d.push(`Sec-WebSocket-Protocol: ${e}`),u._protocol=e)}if(e[h.extensionName]){let t=e[h.extensionName].params,s=a.format({[h.extensionName]:[t]});d.push(`Sec-WebSocket-Extensions: ${s}`),u._extensions=e}this.emit("headers",d,r),i.write(d.concat("\r\n").join("\r\n")),i.removeListener("error",y),u.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(m,this)})),l(u,r)}}function m(e){e._state=2,e.emit("close")}function y(){this.destroy()}function g(e,t,s,r){s=s||i.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${i.STATUS_CODES[t]}\r
|
|
2
|
+
`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join("\r\n")+"\r\n\r\n"+s)}function b(e,t,s,r,i,o){if(e.listenerCount("wsClientError")){let r=Error(i);Error.captureStackTrace(r,b),e.emit("wsClientError",r,s,t)}else g(s,r,i,o)}e.exports=p},9936:(e,t,s)=>{let r=s(17702),i=s(35240),o=s(32615),n=s(98216),a=s(82452),{randomBytes:h,createHash:l}=s(84770),{Duplex:c,Readable:d}=s(76162),{URL:f}=s(17360),_=s(27767),u=s(90263),p=s(22404),{isBlob:m}=s(71187),{BINARY_TYPES:y,CLOSE_TIMEOUT:g,EMPTY_BUFFER:b,GUID:S,kForOnEventAttribute:v,kListener:E,kStatusCode:k,kWebSocket:x,NOOP:w}=s(69030),{EventTarget:{addEventListener:T,removeEventListener:O}}=s(65767),{format:C,parse:N}=s(68718),{toBuffer:L}=s(33016),P=Symbol("kAborted"),B=[8,13],R=["CONNECTING","OPEN","CLOSING","CLOSED"],I=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class U extends r{constructor(e,t,s){super(),this._binaryType=y[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=b,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=U.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===t?t=[]:Array.isArray(t)||("object"==typeof t&&null!==t?(s=t,t=[]):t=[t]),function e(t,s,r,n){let a,c,d,u;let p={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:g,protocolVersion:B[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=p.autoPong,t._closeTimeout=p.closeTimeout,!B.includes(p.protocolVersion))throw RangeError(`Unsupported protocol version: ${p.protocolVersion} (supported versions: ${B.join(", ")})`);if(s instanceof f)a=s;else try{a=new f(s)}catch(e){throw SyntaxError(`Invalid URL: ${s}`)}"http:"===a.protocol?a.protocol="ws:":"https:"===a.protocol&&(a.protocol="wss:"),t._url=a.href;let m="wss:"===a.protocol,y="ws+unix:"===a.protocol;if("ws:"===a.protocol||m||y?y&&!a.pathname?c="The URL's pathname is empty":a.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"',c){let e=SyntaxError(c);if(0===t._redirects)throw e;D(t,e);return}let b=m?443:80,v=h(16).toString("base64"),E=m?i.request:o.request,k=new Set;if(p.createConnection=p.createConnection||(m?W:M),p.defaultPort=p.defaultPort||b,p.port=a.port||b,p.host=a.hostname.startsWith("[")?a.hostname.slice(1,-1):a.hostname,p.headers={...p.headers,"Sec-WebSocket-Version":p.protocolVersion,"Sec-WebSocket-Key":v,Connection:"Upgrade",Upgrade:"websocket"},p.path=a.pathname+a.search,p.timeout=p.handshakeTimeout,p.perMessageDeflate&&(d=new _(!0!==p.perMessageDeflate?p.perMessageDeflate:{},!1,p.maxPayload),p.headers["Sec-WebSocket-Extensions"]=C({[_.extensionName]:d.offer()})),r.length){for(let e of r){if("string"!=typeof e||!I.test(e)||k.has(e))throw SyntaxError("An invalid or duplicated subprotocol was specified");k.add(e)}p.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(p.origin&&(p.protocolVersion<13?p.headers["Sec-WebSocket-Origin"]=p.origin:p.headers.Origin=p.origin),(a.username||a.password)&&(p.auth=`${a.username}:${a.password}`),y){let e=p.path.split(":");p.socketPath=e[0],p.path=e[1]}if(p.followRedirects){if(0===t._redirects){t._originalIpc=y,t._originalSecure=m,t._originalHostOrSocketPath=y?p.socketPath:a.host;let e=n&&n.headers;if(n={...n,headers:{}},e)for(let[t,s]of Object.entries(e))n.headers[t.toLowerCase()]=s}else if(0===t.listenerCount("redirect")){let e=y?!!t._originalIpc&&p.socketPath===t._originalHostOrSocketPath:!t._originalIpc&&a.host===t._originalHostOrSocketPath;e&&(!t._originalSecure||m)||(delete p.headers.authorization,delete p.headers.cookie,e||delete p.headers.host,p.auth=void 0)}p.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(p.auth).toString("base64")),u=t._req=E(p),t._redirects&&t.emit("redirect",t.url,u)}else u=t._req=E(p);p.timeout&&u.on("timeout",()=>{A(t,u,"Opening handshake has timed out")}),u.on("error",e=>{null===u||u[P]||(u=t._req=null,D(t,e))}),u.on("response",i=>{let o=i.headers.location,a=i.statusCode;if(o&&p.followRedirects&&a>=300&&a<400){let i;if(++t._redirects>p.maxRedirects){A(t,u,"Maximum redirects exceeded");return}u.abort();try{i=new f(o,s)}catch(e){D(t,SyntaxError(`Invalid URL: ${o}`));return}e(t,i,r,n)}else t.emit("unexpected-response",u,i)||A(t,u,`Unexpected server response: ${i.statusCode}`)}),u.on("upgrade",(e,s,r)=>{let i;if(t.emit("upgrade",e),t.readyState!==U.CONNECTING)return;u=t._req=null;let o=e.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase()){A(t,s,"Invalid Upgrade header");return}let n=l("sha1").update(v+S).digest("base64");if(e.headers["sec-websocket-accept"]!==n){A(t,s,"Invalid Sec-WebSocket-Accept header");return}let a=e.headers["sec-websocket-protocol"];if(void 0!==a?k.size?k.has(a)||(i="Server sent an invalid subprotocol"):i="Server sent a subprotocol but none was requested":k.size&&(i="Server sent no subprotocol"),i){A(t,s,i);return}a&&(t._protocol=a);let h=e.headers["sec-websocket-extensions"];if(void 0!==h){let e;if(!d){A(t,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}try{e=N(h)}catch(e){A(t,s,"Invalid Sec-WebSocket-Extensions header");return}let r=Object.keys(e);if(1!==r.length||r[0]!==_.extensionName){A(t,s,"Server indicated an extension that was not requested");return}try{d.accept(e[_.extensionName])}catch(e){A(t,s,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[_.extensionName]=d}t.setSocket(s,r,{allowSynchronousEvents:p.allowSynchronousEvents,generateMask:p.generateMask,maxPayload:p.maxPayload,skipUTF8Validation:p.skipUTF8Validation})}),p.finishRequest?p.finishRequest(u,t):u.end()}(this,e,t,s)):(this._autoPong=s.autoPong,this._closeTimeout=s.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){y.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,t,s){let r=new u({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),i=new p(e,this._extensions,s.generateMask);this._receiver=r,this._sender=i,this._socket=e,r[x]=this,i[x]=this,e[x]=this,r.on("conclude",$),r.on("drain",j),r.on("error",G),r.on("message",q),r.on("ping",z),r.on("pong",H),i.onerror=K,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Z),e.on("data",J),e.on("end",Q),e.on("error",ee),this._readyState=U.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=U.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[_.extensionName]&&this._extensions[_.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=U.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==U.CLOSED){if(this.readyState===U.CONNECTING){A(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===U.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=U.CLOSING,this._sender.close(e,t,!this._isServer,e=>{!e&&(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState!==U.CONNECTING&&this.readyState!==U.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===U.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState!==U.OPEN){F(this,e,s);return}void 0===t&&(t=!this._isServer),this._sender.ping(e||b,t,s)}pong(e,t,s){if(this.readyState===U.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState!==U.OPEN){F(this,e,s);return}void 0===t&&(t=!this._isServer),this._sender.pong(e||b,t,s)}resume(){this.readyState!==U.CONNECTING&&this.readyState!==U.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===U.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==U.OPEN){F(this,e,s);return}let r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[_.extensionName]||(r.compress=!1),this._sender.send(e||b,r,s)}terminate(){if(this.readyState!==U.CLOSED){if(this.readyState===U.CONNECTING){A(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=U.CLOSING,this._socket.destroy())}}}function D(e,t){e._readyState=U.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function M(e){return e.path=e.socketPath,n.connect(e)}function W(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=n.isIP(e.host)?"":e.host),a.connect(e)}function A(e,t,s){e._readyState=U.CLOSING;let r=Error(s);Error.captureStackTrace(r,A),t.setHeader?(t[P]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(D,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function F(e,t,s){if(t){let s=m(t)?t.size:L(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${R[e.readyState]})`);process.nextTick(s,t)}}function $(e,t){let s=this[x];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[x]&&(s._socket.removeListener("data",J),process.nextTick(X,s._socket),1005===e?s.close():s.close(e,t))}function j(){let e=this[x];e.isPaused||e._socket.resume()}function G(e){let t=this[x];void 0!==t._socket[x]&&(t._socket.removeListener("data",J),process.nextTick(X,t._socket),t.close(e[k])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function V(){this[x].emitClose()}function q(e,t){this[x].emit("message",e,t)}function z(e){let t=this[x];t._autoPong&&t.pong(e,!this._isServer,w),t.emit("ping",e)}function H(e){this[x].emit("pong",e)}function X(e){e.resume()}function K(e){let t=this[x];t.readyState===U.CLOSED||(t.readyState===U.OPEN&&(t._readyState=U.CLOSING,Y(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Y(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function Z(){let e=this[x];if(this.removeListener("close",Z),this.removeListener("data",J),this.removeListener("end",Q),e._readyState=U.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&0!==this._readableState.length){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[x]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",V),e._receiver.on("finish",V))}function J(e){this[x]._receiver.write(e)||this.pause()}function Q(){let e=this[x];e._readyState=U.CLOSING,e._receiver.end(),this.end()}function ee(){let e=this[x];this.removeListener("error",ee),this.on("error",w),e&&(e._readyState=U.CLOSING,this.destroy())}Object.defineProperty(U,"CONNECTING",{enumerable:!0,value:R.indexOf("CONNECTING")}),Object.defineProperty(U.prototype,"CONNECTING",{enumerable:!0,value:R.indexOf("CONNECTING")}),Object.defineProperty(U,"OPEN",{enumerable:!0,value:R.indexOf("OPEN")}),Object.defineProperty(U.prototype,"OPEN",{enumerable:!0,value:R.indexOf("OPEN")}),Object.defineProperty(U,"CLOSING",{enumerable:!0,value:R.indexOf("CLOSING")}),Object.defineProperty(U.prototype,"CLOSING",{enumerable:!0,value:R.indexOf("CLOSING")}),Object.defineProperty(U,"CLOSED",{enumerable:!0,value:R.indexOf("CLOSED")}),Object.defineProperty(U.prototype,"CLOSED",{enumerable:!0,value:R.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(U.prototype,e,{enumerable:!0})}),["open","error","close","message"].forEach(e=>{Object.defineProperty(U.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[v])return t[E];return null},set(t){for(let t of this.listeners(e))if(t[v]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[v]:!0})}})}),U.prototype.addEventListener=T,U.prototype.removeEventListener=O,e.exports=U},34893:(e,t,s)=>{s.d(t,{XY:()=>r}),s(8826),s(90263),s(22404);var r=s(9936);s(20183)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=4952,exports.ids=[4952],exports.modules={89194:(e,t,s)=>{s.d(t,{Lg:()=>r,NA:()=>a});var n=s(10927),i=s(55837);let o=(0,s(43895).h)("cli-session");async function r(e,t){let s=i.g.getInstance().getTool(t).getSessionName(e);return await (0,n.Hk)(s)}async function a(e,t,s=1e3){let r=o.withContext({worktreeId:e,cliToolId:t});r.debug("captureSessionOutput:start",{requestedLines:s});let a=i.g.getInstance().getTool(t),l=a.getSessionName(e);if(!await (0,n.Hk)(l))throw r.debug("captureSessionOutput:sessionNotFound",{sessionName:l}),Error(`${a.name} session ${l} does not exist`);try{let e=await (0,n.xq)(l,{startLine:-s}),t=e.split("\n").length;return r.debug("captureSessionOutput:success",{actualLines:t,lastFewLines:e.split("\n").slice(-3).join(" | ")}),e}catch(t){let e=t instanceof Error?t.message:String(t);throw r.error("captureSessionOutput:failed",{error:e}),Error(`Failed to capture ${a.name} output: ${e}`)}}},11136:(e,t,s)=>{s.d(t,{b:()=>l});var n=s(61282),i=s(21764);let o=/^[a-zA-Z0-9_-]+$/;var r=s(10927);let a=(0,i.promisify)(n.exec);class l{async isInstalled(){try{return await a(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(e){let t=`mcbd-${this.id}-${e}`;return function(e){if(!o.test(e))throw Error(`Invalid session name format: ${e}`)}(t),t}async interrupt(e){let t=this.getSessionName(e);await (0,r.ZV)(t,"Escape")}}},55837:(e,t,s)=>{s.d(t,{g:()=>S});var n=s(11136),i=s(62648);class o extends n.b{async isInstalled(){return await (0,i.Uv)()}async isRunning(e){return await (0,i.YI)(e)}async startSession(e,t){await (0,i.ym)({worktreeId:e,worktreePath:t})}async sendMessage(e,t){await (0,i.xd)(e,t)}async killSession(e){await (0,i._f)(e)}constructor(...e){super(...e),this.id="claude",this.name="Claude Code",this.command="claude"}}var r=s(10927),a=s(61282),l=s(21764),c=s(92900);let u=(0,l.promisify)(a.exec);function m(e){return e instanceof Error?e.message:String(e)}class p extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Codex CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Codex session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100)),await (0,r.Is)(s,"codex",!0),await new Promise(e=>setTimeout(e,3e3)),await (0,r.Is)(s,"2",!0),await new Promise(e=>setTimeout(e,200)),await u(`tmux send-keys -t "${s}" Down`),await new Promise(e=>setTimeout(e,200)),await u(`tmux send-keys -t "${s}" Enter`),await new Promise(e=>setTimeout(e,200)),console.log(`✓ Started Codex session: ${s}`)}catch(t){let e=m(t);throw Error(`Failed to start Codex session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Codex session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await u(`tmux send-keys -t "${s}" C-m`),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,c.N)(s),console.log(`✓ Sent message to Codex session: ${s}`)}catch(t){let e=m(t);throw Error(`Failed to send message to Codex: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await u(`tmux send-keys -t "${t}" C-d`),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Codex session: ${t}`)}catch(t){let e=m(t);throw console.error(`Error stopping Codex session: ${e}`),t}}constructor(...e){super(...e),this.id="codex",this.name="Codex CLI",this.command="codex"}}function d(e){return e instanceof Error?e.message:String(e)}class f extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Gemini CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Gemini session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100)),await (0,r.Is)(s,"gemini",!0),await new Promise(e=>setTimeout(e,6e3)),await this.handleTrustDialog(s),console.log(`✓ Started Gemini session: ${s}`)}catch(t){let e=d(t);throw Error(`Failed to start Gemini session: ${e}`)}}async handleTrustDialog(e){for(let t=0;t<10;t++){try{let t=await (0,r.xq)(e,50);if(t.includes("Do you trust this folder?")){await (0,r.ZV)(e,"Enter"),await new Promise(e=>setTimeout(e,2e3)),console.log("✓ Auto-trusted folder for Gemini session");return}if(t.match(/^[>❯]\s*$/m)){console.log("✓ Gemini prompt detected - no trust dialog needed");return}}catch{}await new Promise(e=>setTimeout(e,1e3))}console.log("⚠ Trust dialog detection timed out - proceeding anyway")}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Gemini session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,c.N)(s),console.log(`✓ Sent message to Gemini session: ${s}`)}catch(t){let e=d(t);throw Error(`Failed to send message to Gemini: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,300)),await (0,r.Is)(t,"/quit",!0),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Gemini session: ${t}`)}catch(t){let e=d(t);throw console.error(`Error stopping Gemini session: ${e}`),t}}constructor(...e){super(...e),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var h=s(83513),g=s(97425),w=s(75748);function y(e){return e instanceof Error?e.message:String(e)}class $ extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("vibe-local is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Vibe Local session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100));let n="vibe-local -y";try{let t=(0,g.getDbInstance)(),s=(0,w.gU)(t,e);s?.vibeLocalModel&&h.Y1.test(s.vibeLocalModel)&&(n+=` -m ${s.vibeLocalModel}`);let i=s?.vibeLocalContextWindow;(0,h.ZP)(i)&&(n+=` --context-window ${Number(i)}`)}catch{}await (0,r.Is)(s,n,!0),await new Promise(e=>setTimeout(e,5e3)),console.log(`✓ Started Vibe Local session: ${s}`)}catch(t){let e=y(t);throw Error(`Failed to start Vibe Local session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Vibe Local session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,c.N)(s),console.log(`✓ Sent message to Vibe Local session: ${s}`)}catch(t){let e=y(t);throw Error(`Failed to send message to Vibe Local: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,300)),await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Vibe Local session: ${t}`)}catch(t){let e=y(t);throw console.error(`Error stopping Vibe Local session: ${e}`),t}}constructor(...e){super(...e),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var x=s(2693),C=s(59991);class S{constructor(){this.tools=new Map,this.tools.set("claude",new o),this.tools.set("codex",new p),this.tools.set("gemini",new f),this.tools.set("vibe-local",new $),this.tools.set("opencode",new x.LX)}static getInstance(){return S.instance||(S.instance=new S),S.instance}getTool(e){let t=this.tools.get(e);if(!t)throw Error(`CLI tool '${e}' not found`);return t}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(e){let t=this.getTool(e),s=await t.isInstalled();return{id:t.id,name:t.name,command:t.command,installed:s}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async e=>{let t=await e.isInstalled();return{id:e.id,name:e.name,command:e.command,installed:t}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(e=>e.installed)}stopPollers(e,t){(0,C.FN)(e,t)}}},2693:(e,t,s)=>{s.d(t,{uC:()=>d,LX:()=>f});var n=s(11136),i=s(10927),o=s(92900),r=s(92048),a=s(55315);let l=/^[a-zA-Z0-9._:/-]{1,100}$/;async function c(e){let t=function(e){let t=a.resolve(e);try{if(!r.lstatSync(t).isDirectory())throw Error(`Path is not a directory: ${t}`)}catch(e){if("ENOENT"===e.code)throw Error(`Path does not exist: ${t}`);throw e}return r.realpathSync(t)}(e),s=a.join(t,"opencode.json");if(r.existsSync(s))return;let n={};try{let e=new AbortController,t=setTimeout(()=>e.abort(),3e3),s=await fetch("http://localhost:11434/api/tags",{signal:e.signal}).finally(()=>{clearTimeout(t)});if(!s.ok){console.warn(`Ollama API returned status ${s.status}, skipping opencode.json generation`);return}let i=await s.text();if(i.length>1048576){console.warn("Ollama API response too large, skipping opencode.json generation");return}let o=JSON.parse(i);if(!o||!Array.isArray(o.models)){console.warn("Invalid Ollama API response structure, skipping opencode.json generation");return}for(let e of o.models.slice(0,100))"string"==typeof e?.name&&l.test(e.name)&&(n[e.name]={name:function(e){let t=String(e.name),s=e.details;if(!s)return t;let n=[t];return"string"==typeof s.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(s.parameter_size)&&n.push(s.parameter_size),"string"==typeof s.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(s.quantization_level)&&n.push(s.quantization_level),n.length>1?`${t} (${n.slice(1).join(", ")})`:t}(e)})}catch(e){e instanceof Error&&"AbortError"===e.name?console.warn("Ollama API timeout, skipping opencode.json generation"):console.warn("Failed to fetch Ollama models, skipping opencode.json generation");return}try{r.writeFileSync(s,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:{ollama:{npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:n}}},null,2),{encoding:"utf-8",flag:"wx"})}catch(e){if("EEXIST"===e.code)return;console.warn(`Failed to write opencode.json: ${e instanceof Error?e.message:String(e)}`)}}var u=s(61282);let m=(0,s(21764).promisify)(u.execFile);function p(e){return e instanceof Error?e.message:String(e)}let d=200;class f extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,i.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("OpenCode is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,i.Hk)(s)){console.log(`OpenCode session ${s} already exists`);return}try{await c(t),await (0,i.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100));try{await m("tmux",["resize-window","-t",s,"-x","80","-y",String(d)])}catch{}await (0,i.Is)(s,"opencode",!0),await new Promise(e=>setTimeout(e,15e3)),console.log(`Started OpenCode session: ${s}`)}catch(t){let e=p(t);throw Error(`Failed to start OpenCode session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,i.Hk)(s))throw Error(`OpenCode session ${s} does not exist. Start the session first.`);try{await (0,i.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,i.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,o.N)(s),console.log(`Sent message to OpenCode session: ${s}`)}catch(t){let e=p(t);throw Error(`Failed to send message to OpenCode: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,i.Hk)(t)?(await (0,i.Is)(t,"/exit",!0),await new Promise(e=>setTimeout(e,2e3)),await (0,i.Hk)(t)&&await (0,i.AJ)(t)):await (0,i.AJ)(t),console.log(`Stopped OpenCode session: ${t}`)}catch(t){let e=p(t);throw console.error(`Error stopping OpenCode session: ${e}`),t}}constructor(...e){super(...e),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},63661:(e,t,s)=>{s.d(t,{F:()=>r,J:()=>f});let n=(0,s(43895).h)("prompt-detector"),i=[{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 o(e,t,s,n){return{isPrompt:!0,promptData:{type:"yes_no",question:e,options:["yes","no"],status:"pending",...void 0!==n&&{defaultOption:n},instructionText:s},cleanContent:t,rawContent:s}}function r(e,t){n.debug("detectPrompt:start",{outputLength:e.length});let s=e.split("\n").slice(-20).join("\n"),r=function(e,t){let s=t?.requireDefaultIndicator??!0,n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=Math.max(0,i-50);if(s){let t=!1;for(let e=o;e<i;e++){let s=n[e].trim();if(l.test(s)){t=!0;break}}if(!t)return m(e)}let r=[],p=-1,f=0;for(let t=i-1;t>=o;t--){let s=n[t].trim(),i=s.match(l);if(i){let e=parseInt(i[1],10),t=i[2].trim();r.unshift({number:e,label:t,isDefault:!0}),f=0;continue}let o=s.match(c);if(o){let e=parseInt(o[1],10),t=o[2].trim();r.unshift({number:e,label:t,isDefault:!1}),f=0;continue}if(0===r.length&&(s.startsWith("❯")||s.startsWith("●")||s.startsWith("›")))return m(e);if(r.length>0&&s&&!u.test(s)){if(d(s)){p=t;break}if(function(e,t){let s=t.endsWith("?")||t.endsWith("?");return!!(!s&&/^\s{2,}[^\d]/.test(e)&&!/^\s*\d+\./.test(e)||t.length<5&&!s||/^[\/~]/.test(t)||t.length>=2&&/^[a-zA-Z0-9_-]+$/.test(t))}(n[t],s)){if(++f>5){p=t;break}continue}p=t;break}}if(!function(e){if(0===e.length||1!==e[0])return!1;for(let t=1;t<e.length;t++)if(e[t]!==e[t-1]+1)return!1;return!0}(r.map(e=>e.number)))return m(e);let h=r.some(e=>e.isDefault);if(r.length<2||s&&!h||!s&&(-1===p||!d(n[p]?.trim()??"")&&!function(e,t,s,n){let i=Math.max(n,t-3);for(let s=t-1;s>=i;s--){let t=e[s]?.trim()??"";if(!(!t||u.test(t))&&d(t))return!0}return!1}(n,p,0,o)))return m(e);let g=function(e,t){if(t<0)return"Please select an option:";let s=[];for(let n=Math.max(0,t-5);n<=t;n++){let t=e[n].trim();t&&!u.test(t)&&s.push(t)}return s.join(" ")}(n,p),w=function(e,t,s){if(t<0)return;let n=e.slice(Math.max(0,t-19),s).map(e=>e.trimEnd()).join("\n").trim();return n.length>0?n:void 0}(n,p,i);return{isPrompt:!0,promptData:{type:"multiple_choice",question:g.trim(),options:r.map(e=>{let t=a.some(t=>t.test(e.label));return{number:e.number,label:e.label,isDefault:e.isDefault,requiresTextInput:t}}),status:"pending",instructionText:w},cleanContent:g.trim(),rawContent:function(e){let t=e.split("\n"),s=(t.length>200?t.slice(-200):t).join("\n");return s.length>5e3&&(s=s.slice(-5e3)),s}(e.trim())}}(e,t);if(r.isPrompt)return n.info("detectPrompt:multipleChoice",{isPrompt:!0,question:r.promptData?.question,optionsCount:r.promptData?.options?.length}),r;let p=s.trim();for(let e of i){let t=s.match(e.regex);if(t){let s=t[1].trim();return o(s,s,p,e.defaultOption)}}let f=s.match(/^(.*?)Approve\?\s*$/m);if(f){let e=f[1].trim();return o(e?`${e} Approve?`:"Approve?",e||"Approve?",p)}return n.debug("detectPrompt:complete",{isPrompt:!1}),{isPrompt:!1,cleanContent:e.trim()}}let a=[/type\s+here/i,/tell\s+(me|claude)/i,/enter\s+/i,/custom/i,/differently/i],l=/^\s*[\u276F\u25CF\u203A]\s*(\d+)\.\s*(.+)$/,c=/^\s*(\d+)\.\s*(.+)$/,u=/^[-─]+$/;function m(e){return{isPrompt:!1,cleanContent:e.trim()}}let p=/(?:select|choose|pick|which|what|how|where|enter|type|specify|confirm|approve|accept|reject|decide|preference|option)/i;function d(e){return 0!==e.length&&!!(e.includes("?")||e.includes("?")||p.test(e))}function f(e,t="yes_no"){let s=e.toLowerCase().trim();if("multiple_choice"===t){if(/^\d+$/.test(s))return s;throw Error("Invalid answer for multiple choice prompt. Expected a number.")}if("yes"===s||"y"===s)return"y";if("no"===s||"n"===s)return"n";throw Error("Invalid answer for yes/no prompt. Expected 'yes', 'no', 'y', or 'n'.")}},59991:(e,t,s)=>{s.d(t,{Di:()=>S,FN:()=>P,RJ:()=>C,ci:()=>x,cn:()=>v});var n=s(89194),i=s(97425),o=s(75748),r=s(68507),a=s(63661),l=s(76966),c=s(89287),u=s(19377);let m=["Waiting for auth","⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function p(e){return{response:"",isComplete:!1,lineCount:e}}function d(e,t,s,n,i,o,r){let a=b(t,s,n,i,o),l=e.slice(a);return{response:(0,u.vp)(l.join("\n")),isComplete:!0,lineCount:s,promptDetection:r,bufferReset:n}}let f=new Map;function h(e){return(0,u.BN)((0,u.vp)(e)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}let g=new Map,w=new Map;function y(e,t){return`${e}:${t}`}function $(e,t){let s=(0,u.Sg)(t);return(0,a.F)((0,u.BN)((0,u.vp)(e)),s)}function x(e){let t=(0,u.vp)(e).split("\n"),s=-1;for(let e=t.length-1;e>=0;e--)if(/^❯\s+\S/.test(t[e])){s=e;break}let n=s>=0?s+1:0,i=t.slice(n),o=[/CLAUDE_HOOKS_/,/\/bin\/claude/,/^claude\s*$/,/@.*\s+%\s*$/,/^[^⏺]*curl.*POST/,/^[^⏺]*Content-Type/,/^[^⏺]*export\s+CLAUDE_/,/^\s*$/,/^[╭╮╰╯│─\s]+$/,/^[│╭╮╰╯].*[│╭╮╰╯]$/,/Claude Code v[\d.]+/,/^Tips for getting started/,/^Welcome back/,/Run \/init to create/,/^Recent activity/,/^No recent activity/,/▐▛███▜▌|▝▜█████▛▘|▘▘ ▝▝/,/^\s*Opus \d+\.\d+\s*·\s*Claude Max/,/\.com's Organization/,/\?\s*for shortcuts\s*$/,/^─{10,}$/,/^❯\s*$/,u.d8],r=[];for(let e of i)!o.some(t=>t.test(e))&&e.trim()&&r.push(e);return r.join("\n").trim()}function C(e){let t=e.split("\n"),s=[],n=[/^maenokota@.*%/,/^zsh:/,/^feature-issue-\d+/,/^\s*$/],i=!1,o=[];for(let e of t){if(e.includes("✦")){i=!0;let t=e.indexOf("✦"),s=e.substring(t+1).trim();s&&o.push(s);continue}if(i){if(n.some(t=>t.test(e)))continue;o.push(e)}}if(o.length>0)return o.join("\n").trim();for(let e of t)n.some(t=>t.test(e))||s.push(e);return s.join("\n").trim()}function S(e){let t=e.split("\n"),s=[];for(let e=0;e<t.length;e++){let n=h(t[e]);n&&u.n9.test(n)&&s.push(e)}let n=0;s.length>=2&&(n=s[s.length-2]+1);let i=[];for(let e=n;e<t.length;e++){let s=h(t[e]);!(!s||u.lr.some(e=>e.test(s)))&&(u.n9.test(s)||i.push(s))}return i.join("\n").trim()}function b(e,t,s,n,i){if(e=Math.max(0,e),"opencode"===n){let e=i(t);return e>=0?e+1:0}if(e>=t||s){let e=i(40);return e>=0?e+1:0}if("codex"===n)return Math.max(0,e);if(e>=t-5){let e=i(50);return e>=0?e+1:Math.max(0,t-40)}return Math.max(0,e)}async function T(e,t){let s=(0,i.getDbInstance)();try{if(!(0,o.gU)(s,e))return console.error(`Worktree ${e} not found, stopping poller`),P(e,t),!1;if(!await (0,n.Lg)(e,t))return console.log(`[checkForResponse] Session not running for ${e} (${t}), stopping poller`),P(e,t),!1;let i=(0,o.zl)(s,e,t),g=i?.lastCapturedLine||0,w=await (0,n.NA)(e,t,1e4);if("opencode"===t){let s=y(e,t);!function(e,t){let s=f.get(e);if(!s)return;let n=function(e){let t=e.split("\n"),s=[];for(let e of t){let t=h(e);!(!t||u.lr.some(e=>e.test(t)))&&(u.n9.test(t)||s.push(t))}return s}(t);if(0!==n.length){if(s.pollCount++,0===s.lines.length)s.lines=[...n];else{let e=function(e,t){if(0===e.length||0===t.length)return 0;let s=Math.min(e.length,t.length);for(let n=s;n>=1;n--){let s=e.slice(-n),i=t.slice(0,n),o=!0;for(let e=0;e<n;e++)if(s[e]!==i[e]){o=!1;break}if(o)return n}return 0}(s.lastFingerprint,n);if(e>0){let t=n.slice(e);s.lines.push(...t)}else s.lines.push(...n)}s.lastFingerprint=n.slice(-10)}}(s,w)}let T=function(e,t,s){let n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=n.slice(0,i),r=o.length,a=r>0&&t>25&&r+25<t,l=r>0&&t>50&&r<50,c=a||l;if(!c&&r<t-5)return null;let f=Math.max(0,r-20),h=o.slice(f),g="opencode"===s?(0,u.vp)(o.join("\n")):h.join("\n"),{promptPattern:w,separatorPattern:y,thinkingPattern:x,skipPatterns:C}=(0,u.bs)(s),S=(e=60)=>{let t;if("codex"===s)t=/^›\s+(?!Implement|Find and fix|Type|Summarize)/;else if("opencode"===s){let t=0;for(let s=r-1;s>=Math.max(0,r-e);s--){let e=(0,u.vp)(o[s]);if(u.n9.test(e)&&2==++t)return s}return -1}else t=/^[>❯]\s+\S/;for(let s=r-1;s>=Math.max(0,r-e);s--){let e=(0,u.vp)(o[s]);if(t.test(e))return s}return -1};if("claude"===s||"codex"===s){let e=$(o.join("\n"),s);if(e.isPrompt)return d(o,t,r,c,s,S,e)}let T=(0,u.vp)(g),v=w.test(T),P=y.test(T),k=x.test(T),I=("codex"===s||"gemini"===s||"vibe-local"===s)&&v&&!k,E="claude"===s&&v&&P&&!k,N="opencode"===s&&u.n9.test(T)&&!u.nT.test(T);if(I||E||N){let e=[],n=b(t,r,c,s,S),i=r;for(let t=n;t<r;t++){let n=o[t],r=(0,u.vp)(n);if("codex"===s&&/^›\s+/.test(r)||"gemini"===s&&/^(%|\$|.*@.*[%$#])\s*$/.test(r)||"opencode"===s&&(u.Hm.test(r)||u.bl.test(r))){i=t;break}C.some(e=>e.test(r))||e.push(n)}let a=e.join("\n").trim(),l=a.split("\n").slice(-5).join("\n");if(x.test(l))return p(r);if("claude"===s){let e=(0,u.vp)(a),t=/[╭╮╰╯│]/.test(e)||/░{3,}/.test(e)||/▓{3,}/.test(e),s=/Claude Code|claude\/|v\d+\.\d+/.test(e),n=/Tip:|for shortcuts|\?\s*for help/.test(e),i=/^\s*\/Users\/.*$/m.test(e)&&e.split("\n").length<30,o=e.match(/^[>❯]\s+(\S.*)$/m);if(o){let t=e.indexOf(o[0]);if(0===e.substring(t+o[0].length).trim().split("\n").filter(e=>{let t=e.trim();return t&&!C.some(e=>e.test(t))&&!/^─+$/.test(t)}).length)return p(r)}else if((t||s||n||i)&&a.length<2e3)return p(r)}if("gemini"===s&&((a.match(/[░███]/g)||[]).length>.3*a.length||m.some(e=>a.includes(e))||!a.includes("✦")&&a.length<10))return p(r);if("opencode"===s){let e=(0,u.vp)(a);if((e.length<50||!u.n9.test(T))&&0===e.split("\n").filter(e=>{let t=e.trim();return t&&!u.lr.some(e=>e.test(t))}).length)return p(r)}return{response:a,isComplete:!0,lineCount:i,bufferReset:c}}if("opencode"!==s){let e=$(o.join("\n"),s);if(e.isPrompt)return d(o,t,r,c,s,S,e)}let A=[],L=c||t>=r-5,M=L?S(80):-1,O=L?M>=0?M+1:Math.max(0,r-80):Math.max(0,t);for(let e=O;e<r;e++){let t=o[e],s=(0,u.vp)(t);C.some(e=>e.test(s))||A.push(t)}let D=A.join("\n").trim();return D?{response:D,isComplete:!1,lineCount:r}:p(r)}(w,g,t);if(!T||!T.isComplete){let{thinkingPattern:n}=(0,u.bs)(t),i=(0,u.vp)(w).split("\n").slice(-5).join("\n");if(n.test(i)){let n=(0,o.GP)(s,e,t);n>0&&console.log(`Marked ${n} pending prompt(s) as answered (thinking detected) for ${e}`)}return!1}let v="opencode"===t;if(!v&&!T.bufferReset&&T.lineCount===g&&!i?.inProgressMessageId)return!1;if(!T.bufferReset&&!v&&T.lineCount<=g)return console.log(`[checkForResponse] Already saved up to line ${g}, skipping (result: ${T.lineCount})`),!1;let k=T.promptDetection??$(T.response,t);if(k.isPrompt){(0,o.Mf)(s,e,t);let n=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:k.rawContent||k.cleanContent,messageType:"prompt",promptData:k.promptData,timestamp:new Date,cliToolId:t});return(0,o.IH)(s,e,t,T.lineCount),(0,r.ps)("message",{worktreeId:e,message:n}),P(e,t),!0}if(!T.response||""===T.response.trim())return(0,o.IH)(s,e,t,T.lineCount),!1;let I="claude"===t?(0,c.Z)(T.response):void 0,E=T.response;if("gemini"===t)E=C(T.response);else if("claude"===t)E=x(T.response);else if("opencode"===t){var a;E=S(T.response),a=y(e,t),f.delete(a)}if(!E||""===E.trim()||"[No content]"===E)return(0,o.IH)(s,e,t,T.lineCount),(0,o.Mf)(s,e,t),!1;E&&await (0,l.o)(s,e,E,t);let N=(0,o.GP)(s,e,t);N>0&&console.log(`Marked ${N} pending prompt(s) as answered for ${e}`);let A=(0,o.zl)(s,e,t);if(!v&&A&&T.lineCount<=A.lastCapturedLine)return console.log(`[checkForResponse] Race condition detected, skipping save (result: ${T.lineCount}, current: ${A.lastCapturedLine})`),!1;let L=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:E,messageType:"normal",timestamp:new Date,cliToolId:t,summary:I?.summary,logFileName:I?.logFileName,requestId:I?.requestId});return(0,r.ps)("message",{worktreeId:e,message:L}),(0,o.IH)(s,e,t,T.lineCount),v&&P(e,t),!0}catch(t){return console.error(`Error checking for response (${e}):`,t instanceof Error?t.message:String(t)),!1}}function v(e,t){let s=y(e,t);P(e,t),w.set(s,Date.now()),"opencode"===t&&f.set(s,{lines:[],lastFingerprint:[],pollCount:0}),function e(t,s){let n=y(t,s),i=setTimeout(async()=>{let i=w.get(n);if(i&&Date.now()-i>18e5){P(t,s);return}try{await T(t,s)}catch(e){console.error("[Poller] Error:",e)}g.has(n)&&e(t,s)},2e3);g.set(n,i)}(e,t)}function P(e,t){let s=y(e,t),n=g.get(s);n&&(clearTimeout(n),g.delete(s),w.delete(s)),f.delete(s)}}};
|
|
1
|
+
"use strict";exports.id=4952,exports.ids=[4952],exports.modules={89194:(e,t,s)=>{s.d(t,{Lg:()=>l,NA:()=>c,lh:()=>u});var n=s(10927),i=s(55837),o=s(43895),r=s(4633);let a=(0,o.h)("cli-session");async function l(e,t){let s=i.g.getInstance().getTool(t).getSessionName(e);return await (0,n.Hk)(s)}async function c(e,t,s=1e3){let o=a.withContext({worktreeId:e,cliToolId:t});o.debug("captureSessionOutput:start",{requestedLines:s});let l=i.g.getInstance().getTool(t),c=l.getSessionName(e);try{let e=await (0,r.FI)(c,s,async()=>{if(!await (0,n.Hk)(c))throw Error(`${l.name} session ${c} does not exist`);return await (0,n.xq)(c,{startLine:-r.B$})});return o.debug("captureSessionOutput:success",{actualLines:e.split("\n").length,lastFewLines:e.split("\n").slice(-3).join(" | ")}),e}catch(t){let e=t instanceof Error?t.message:String(t);if(e.includes("does not exist"))throw o.debug("captureSessionOutput:sessionNotFound",{sessionName:c}),t;throw o.error("captureSessionOutput:failed",{error:e}),Error(`Failed to capture ${l.name} output: ${e}`)}}async function u(e,t,s=5e3){let o=a.withContext({worktreeId:e,cliToolId:t});o.debug("captureSessionOutputFresh:start",{requestedLines:s});let l=i.g.getInstance().getTool(t),c=l.getSessionName(e);try{let e=await (0,n.xq)(c,{startLine:-s});return e.length>0?(0,r.UE)(c,e,s):(0,r.e5)(c),(0,r.sB)(e,s)}catch(t){(0,r.e5)(c);let e=t instanceof Error?t.message:String(t);throw o.error("captureSessionOutputFresh:failed",{error:e}),Error(`Failed to capture ${l.name} output: ${e}`)}}},11136:(e,t,s)=>{s.d(t,{b:()=>l});var n=s(61282),i=s(21764);let o=/^[a-zA-Z0-9_-]+$/;var r=s(10927);let a=(0,i.promisify)(n.exec);class l{async isInstalled(){try{return await a(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(e){let t=`mcbd-${this.id}-${e}`;return function(e){if(!o.test(e))throw Error(`Invalid session name format: ${e}`)}(t),t}async interrupt(e){let t=this.getSessionName(e);await (0,r.ZV)(t,"Escape")}}},55837:(e,t,s)=>{s.d(t,{g:()=>S});var n=s(11136),i=s(62648);class o extends n.b{async isInstalled(){return await (0,i.Uv)()}async isRunning(e){return await (0,i.YI)(e)}async startSession(e,t){await (0,i.ym)({worktreeId:e,worktreePath:t})}async sendMessage(e,t){await (0,i.xd)(e,t)}async killSession(e){await (0,i._f)(e)}constructor(...e){super(...e),this.id="claude",this.name="Claude Code",this.command="claude"}}var r=s(10927),a=s(92900),l=s(4633);function c(e){return e instanceof Error?e.message:String(e)}class u extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Codex CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Codex session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100)),await (0,r.Is)(s,"codex",!0),await new Promise(e=>setTimeout(e,3e3)),await (0,r.Is)(s,"2",!0),await new Promise(e=>setTimeout(e,200)),await (0,r.hL)(s,["Down"]),await new Promise(e=>setTimeout(e,200)),await (0,r.hL)(s,["Enter"]),await new Promise(e=>setTimeout(e,200)),console.log(`✓ Started Codex session: ${s}`)}catch(t){let e=c(t);throw Error(`Failed to start Codex session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Codex session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,a.N)(s),(0,l.e5)(s),console.log(`✓ Sent message to Codex session: ${s}`)}catch(t){let e=c(t);throw Error(`Failed to send message to Codex: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await (0,r.ZV)(t,"C-d"),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Codex session: ${t}`)}catch(t){let e=c(t);throw console.error(`Error stopping Codex session: ${e}`),t}}constructor(...e){super(...e),this.id="codex",this.name="Codex CLI",this.command="codex"}}function m(e){return e instanceof Error?e.message:String(e)}class d extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Gemini CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Gemini session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100)),await (0,r.Is)(s,"gemini",!0),await new Promise(e=>setTimeout(e,6e3)),await this.handleTrustDialog(s),console.log(`✓ Started Gemini session: ${s}`)}catch(t){let e=m(t);throw Error(`Failed to start Gemini session: ${e}`)}}async handleTrustDialog(e){for(let t=0;t<10;t++){try{let t=await (0,r.xq)(e,50);if(t.includes("Do you trust this folder?")){await (0,r.ZV)(e,"Enter"),await new Promise(e=>setTimeout(e,2e3)),console.log("✓ Auto-trusted folder for Gemini session");return}if(t.match(/^[>❯]\s*$/m)){console.log("✓ Gemini prompt detected - no trust dialog needed");return}}catch{}await new Promise(e=>setTimeout(e,1e3))}console.log("⚠ Trust dialog detection timed out - proceeding anyway")}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Gemini session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,a.N)(s),(0,l.e5)(s),console.log(`✓ Sent message to Gemini session: ${s}`)}catch(t){let e=m(t);throw Error(`Failed to send message to Gemini: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,300)),await (0,r.Is)(t,"/quit",!0),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Gemini session: ${t}`)}catch(t){let e=m(t);throw console.error(`Error stopping Gemini session: ${e}`),t}}constructor(...e){super(...e),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var p=s(83513),f=s(97425),h=s(75748);function g(e){return e instanceof Error?e.message:String(e)}class w extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("vibe-local is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Vibe Local session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100));let n="vibe-local -y";try{let t=(0,f.getDbInstance)(),s=(0,h.gU)(t,e);s?.vibeLocalModel&&p.Y1.test(s.vibeLocalModel)&&(n+=` -m ${s.vibeLocalModel}`);let i=s?.vibeLocalContextWindow;(0,p.ZP)(i)&&(n+=` --context-window ${Number(i)}`)}catch{}await (0,r.Is)(s,n,!0),await new Promise(e=>setTimeout(e,5e3)),console.log(`✓ Started Vibe Local session: ${s}`)}catch(t){let e=g(t);throw Error(`Failed to start Vibe Local session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Vibe Local session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),await (0,r.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,a.N)(s),(0,l.e5)(s),console.log(`✓ Sent message to Vibe Local session: ${s}`)}catch(t){let e=g(t);throw Error(`Failed to send message to Vibe Local: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,300)),await (0,r.ZV)(t,"C-c"),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`✓ Stopped Vibe Local session: ${t}`)}catch(t){let e=g(t);throw console.error(`Error stopping Vibe Local session: ${e}`),t}}constructor(...e){super(...e),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var y=s(2693),$=s(59991);class S{constructor(){this.tools=new Map,this.tools.set("claude",new o),this.tools.set("codex",new u),this.tools.set("gemini",new d),this.tools.set("vibe-local",new w),this.tools.set("opencode",new y.LX)}static getInstance(){return S.instance||(S.instance=new S),S.instance}getTool(e){let t=this.tools.get(e);if(!t)throw Error(`CLI tool '${e}' not found`);return t}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(e){let t=this.getTool(e),s=await t.isInstalled();return{id:t.id,name:t.name,command:t.command,installed:s}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async e=>{let t=await e.isInstalled();return{id:e.id,name:e.name,command:e.command,installed:t}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(e=>e.installed)}stopPollers(e,t){(0,$.FN)(e,t)}}},2693:(e,t,s)=>{s.d(t,{uC:()=>w,LX:()=>y});var n=s(11136),i=s(10927),o=s(92900),r=s(4633),a=s(92048),l=s(55315);let c=/^[a-zA-Z0-9._:/-]{1,100}$/,u=/^[a-zA-Z0-9._:/@-]{1,200}$/;async function m(){let e={};try{let t=new AbortController,s=setTimeout(()=>t.abort(),3e3),n=await fetch("http://localhost:11434/api/tags",{signal:t.signal}).finally(()=>{clearTimeout(s)});if(!n.ok)return console.warn(`Ollama API returned status ${n.status}, skipping model fetch`),{};let i=await n.text();if(i.length>1048576)return console.warn("Ollama API response too large, skipping model fetch"),{};let o=JSON.parse(i);if(!o||!Array.isArray(o.models))return console.warn("Invalid Ollama API response structure, skipping model fetch"),{};for(let t of o.models.slice(0,100))"string"==typeof t?.name&&c.test(t.name)&&(e[t.name]={name:function(e){let t=String(e.name),s=e.details;if(!s)return t;let n=[t];return"string"==typeof s.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(s.parameter_size)&&n.push(s.parameter_size),"string"==typeof s.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(s.quantization_level)&&n.push(s.quantization_level),n.length>1?`${t} (${n.slice(1).join(", ")})`:t}(t)})}catch(e){e instanceof Error&&"AbortError"===e.name?console.warn("Ollama API timeout, skipping model fetch"):console.warn("Failed to fetch Ollama models, skipping model fetch")}return e}async function d(){let e={};try{let t=new AbortController,s=setTimeout(()=>t.abort(),3e3),n=await fetch("http://localhost:1234/v1/models",{signal:t.signal}).finally(()=>{clearTimeout(s)});if(!n.ok)return console.warn(`LM Studio API returned status ${n.status}, skipping model fetch`),{};let i=await n.text();if(i.length>1048576)return console.warn("LM Studio API response too large, skipping model fetch"),{};let o=JSON.parse(i);if(!o||!Array.isArray(o.data))return console.warn("Invalid LM Studio API response structure, skipping model fetch"),{};for(let t of o.data.slice(0,100))"string"==typeof t?.id&&u.test(t.id)&&(e[t.id]={name:t.id})}catch(e){e instanceof Error&&"AbortError"===e.name?console.warn("LM Studio API timeout, skipping model fetch"):console.warn("Failed to fetch LM Studio models, skipping model fetch")}return e}async function p(e){let t=function(e){let t=l.resolve(e);try{if(!a.lstatSync(t).isDirectory())throw Error(`Path is not a directory: ${t}`)}catch(e){if("ENOENT"===e.code)throw Error(`Path does not exist: ${t}`);throw e}return a.realpathSync(t)}(e),s=l.join(t,"opencode.json");if(a.existsSync(s))return;let[n,i]=await Promise.all([m(),d()]),o={};if(Object.keys(n).length>0&&(o.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:n}),Object.keys(i).length>0&&(o.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:i}),0!==Object.keys(o).length)try{a.writeFileSync(s,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:o},null,2),{encoding:"utf-8",flag:"wx"})}catch(e){if("EEXIST"===e.code)return;console.warn(`Failed to write opencode.json: ${e instanceof Error?e.message:String(e)}`)}}var f=s(61282);let h=(0,s(21764).promisify)(f.execFile);function g(e){return e instanceof Error?e.message:String(e)}let w=200;class y extends n.b{async isRunning(e){let t=this.getSessionName(e);return await (0,i.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("OpenCode is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,i.Hk)(s)){console.log(`OpenCode session ${s} already exists`);return}try{await p(t),await (0,i.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100));try{await h("tmux",["resize-window","-t",s,"-x","80","-y",String(w)])}catch{}await (0,i.Is)(s,"opencode",!0),await new Promise(e=>setTimeout(e,15e3)),console.log(`Started OpenCode session: ${s}`)}catch(t){let e=g(t);throw Error(`Failed to start OpenCode session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,i.Hk)(s))throw Error(`OpenCode session ${s} does not exist. Start the session first.`);try{await (0,i.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,i.ZV)(s,"C-m"),await new Promise(e=>setTimeout(e,200)),t.includes("\n")&&await (0,o.N)(s),(0,r.e5)(s),console.log(`Sent message to OpenCode session: ${s}`)}catch(t){let e=g(t);throw Error(`Failed to send message to OpenCode: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,i.Hk)(t)?(await (0,i.Is)(t,"/exit",!0),await new Promise(e=>setTimeout(e,2e3)),await (0,i.Hk)(t)&&await (0,i.AJ)(t)):await (0,i.AJ)(t),(0,r.e5)(t),console.log(`Stopped OpenCode session: ${t}`)}catch(t){let e=g(t);throw console.error(`Error stopping OpenCode session: ${e}`),t}}constructor(...e){super(...e),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},63661:(e,t,s)=>{s.d(t,{FS:()=>a,Ju:()=>h});let n=(0,s(43895).h)("prompt-detector"),i=null,o=[{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 r(e,t,s,n){return{isPrompt:!0,promptData:{type:"yes_no",question:e,options:["yes","no"],status:"pending",...void 0!==n&&{defaultOption:n},instructionText:s},cleanContent:t,rawContent:s}}function a(e,t){let s=e.split("\n"),a=s.slice(-50).join("\n"),p=a===i;p||n.debug("detectPrompt:start",{outputLength:e.length}),i=a;let h=s.slice(-20).join("\n"),g=function(e,t){let s=t?.requireDefaultIndicator??!0,n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=Math.max(0,i-50);if(s){let t=!1;for(let e=o;e<i;e++){let s=n[e].trim();if(c.test(s)){t=!0;break}}if(!t)return d(e)}let r=[],a=-1,p=0;for(let t=i-1;t>=o;t--){let s=n[t].trim(),i=s.match(c);if(i){let e=parseInt(i[1],10),t=i[2].trim();r.unshift({number:e,label:t,isDefault:!0}),p=0;continue}let o=s.match(u);if(o){let e=parseInt(o[1],10),t=o[2].trim();r.unshift({number:e,label:t,isDefault:!1}),p=0;continue}if(0===r.length&&(s.startsWith("❯")||s.startsWith("●")||s.startsWith("›")))return d(e);if(r.length>0&&s&&!m.test(s)){if(f(s)){a=t;break}if(function(e,t){let s=t.endsWith("?")||t.endsWith("?");return!!(!s&&/^\s{2,}[^\d]/.test(e)&&!/^\s*\d+\./.test(e)||t.length<5&&!s||/^[\/~]/.test(t)||t.length>=2&&/^[a-zA-Z0-9_-]+$/.test(t))}(n[t],s)){if(++p>5){a=t;break}continue}a=t;break}}if(!function(e){if(0===e.length||1!==e[0])return!1;for(let t=1;t<e.length;t++)if(e[t]!==e[t-1]+1)return!1;return!0}(r.map(e=>e.number)))return d(e);let h=r.some(e=>e.isDefault);if(r.length<2||s&&!h||!s&&(-1===a||!f(n[a]?.trim()??"")&&!function(e,t,s,n){let i=Math.max(n,t-3);for(let s=t-1;s>=i;s--){let t=e[s]?.trim()??"";if(!(!t||m.test(t))&&f(t))return!0}return!1}(n,a,0,o)))return d(e);let g=function(e,t){if(t<0)return"Please select an option:";let s=[];for(let n=Math.max(0,t-5);n<=t;n++){let t=e[n].trim();t&&!m.test(t)&&s.push(t)}return s.join(" ")}(n,a),w=function(e,t,s){if(t<0)return;let n=e.slice(Math.max(0,t-19),s).map(e=>e.trimEnd()).join("\n").trim();return n.length>0?n:void 0}(n,a,i);return{isPrompt:!0,promptData:{type:"multiple_choice",question:g.trim(),options:r.map(e=>{let t=l.some(t=>t.test(e.label));return{number:e.number,label:e.label,isDefault:e.isDefault,requiresTextInput:t}}),status:"pending",instructionText:w},cleanContent:g.trim(),rawContent:function(e){let t=e.split("\n"),s=(t.length>200?t.slice(-200):t).join("\n");return s.length>5e3&&(s=s.slice(-5e3)),s}(e.trim())}}(e,t);if(g.isPrompt)return p||n.info("detectPrompt:multipleChoice",{isPrompt:!0,question:g.promptData?.question,optionsCount:g.promptData?.options?.length}),g;let w=h.trim();for(let e of o){let t=h.match(e.regex);if(t){let s=t[1].trim();return r(s,s,w,e.defaultOption)}}let y=h.match(/^(.*?)Approve\?\s*$/m);if(y){let e=y[1].trim();return r(e?`${e} Approve?`:"Approve?",e||"Approve?",w)}return p||n.debug("detectPrompt:complete",{isPrompt:!1}),{isPrompt:!1,cleanContent:e.trim()}}let l=[/type\s+here/i,/tell\s+(me|claude)/i,/enter\s+/i,/custom/i,/differently/i],c=/^\s*[\u276F\u25CF\u203A]\s*(\d+)\.\s*(.+)$/,u=/^\s*(\d+)\.\s*(.+)$/,m=/^[-─]+$/;function d(e){return{isPrompt:!1,cleanContent:e.trim()}}let p=/(?:select|choose|pick|which|what|how|where|enter|type|specify|confirm|approve|accept|reject|decide|preference|option)/i;function f(e){return 0!==e.length&&!!(e.includes("?")||e.includes("?")||p.test(e))}function h(e,t="yes_no"){let s=e.toLowerCase().trim();if("multiple_choice"===t){if(/^\d+$/.test(s))return s;throw Error("Invalid answer for multiple choice prompt. Expected a number.")}if("yes"===s||"y"===s)return"y";if("no"===s||"n"===s)return"n";throw Error("Invalid answer for yes/no prompt. Expected 'yes', 'no', 'y', or 'n'.")}},59991:(e,t,s)=>{s.d(t,{Di:()=>C,FN:()=>T,RJ:()=>x,ci:()=>S,cn:()=>P});var n=s(89194),i=s(97425),o=s(75748),r=s(68507),a=s(63661),l=s(76966),c=s(89287),u=s(19377);let m=["Waiting for auth","⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function d(e){return{response:"",isComplete:!1,lineCount:e}}function p(e,t,s,n,i,o,r){let a=b(t,s,n,i,o),l=e.slice(a);return{response:(0,u.vp)(l.join("\n")),isComplete:!0,lineCount:s,promptDetection:r,bufferReset:n}}let f=new Map;function h(e){return(0,u.BN)((0,u.vp)(e)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}let g=new Map,w=new Map;function y(e,t){return`${e}:${t}`}function $(e,t){let s=(0,u.Sg)(t);return(0,a.FS)((0,u.BN)((0,u.vp)(e)),s)}function S(e){let t=(0,u.vp)(e).split("\n"),s=-1;for(let e=t.length-1;e>=0;e--)if(/^❯\s+\S/.test(t[e])){s=e;break}let n=s>=0?s+1:0,i=t.slice(n),o=[/CLAUDE_HOOKS_/,/\/bin\/claude/,/^claude\s*$/,/@.*\s+%\s*$/,/^[^⏺]*curl.*POST/,/^[^⏺]*Content-Type/,/^[^⏺]*export\s+CLAUDE_/,/^\s*$/,/^[╭╮╰╯│─\s]+$/,/^[│╭╮╰╯].*[│╭╮╰╯]$/,/Claude Code v[\d.]+/,/^Tips for getting started/,/^Welcome back/,/Run \/init to create/,/^Recent activity/,/^No recent activity/,/▐▛███▜▌|▝▜█████▛▘|▘▘ ▝▝/,/^\s*Opus \d+\.\d+\s*·\s*Claude Max/,/\.com's Organization/,/\?\s*for shortcuts\s*$/,/^─{10,}$/,/^❯\s*$/,u.d8],r=[];for(let e of i)!o.some(t=>t.test(e))&&e.trim()&&r.push(e);return r.join("\n").trim()}function x(e){let t=e.split("\n"),s=[],n=[/^maenokota@.*%/,/^zsh:/,/^feature-issue-\d+/,/^\s*$/],i=!1,o=[];for(let e of t){if(e.includes("✦")){i=!0;let t=e.indexOf("✦"),s=e.substring(t+1).trim();s&&o.push(s);continue}if(i){if(n.some(t=>t.test(e)))continue;o.push(e)}}if(o.length>0)return o.join("\n").trim();for(let e of t)n.some(t=>t.test(e))||s.push(e);return s.join("\n").trim()}function C(e){let t=e.split("\n"),s=[];for(let e=0;e<t.length;e++){let n=h(t[e]);n&&u.n9.test(n)&&s.push(e)}let n=0;s.length>=2&&(n=s[s.length-2]+1);let i=[];for(let e=n;e<t.length;e++){let s=h(t[e]);!(!s||u.lr.some(e=>e.test(s)))&&(u.n9.test(s)||i.push(s))}return i.join("\n").trim()}function b(e,t,s,n,i){if(e=Math.max(0,e),"opencode"===n){let e=i(t);return e>=0?e+1:0}if(e>=t||s){let e=i(40);return e>=0?e+1:0}if("codex"===n)return Math.max(0,e);if(e>=t-5){let e=i(50);return e>=0?e+1:Math.max(0,t-40)}return Math.max(0,e)}async function k(e,t){let s=(0,i.getDbInstance)();try{if(!(0,o.gU)(s,e))return console.error(`Worktree ${e} not found, stopping poller`),T(e,t),!1;if(!await (0,n.Lg)(e,t))return console.log(`[checkForResponse] Session not running for ${e} (${t}), stopping poller`),T(e,t),!1;let i=(0,o.zl)(s,e,t),g=i?.lastCapturedLine||0,w=await (0,n.NA)(e,t,1e4);if("opencode"===t){let s=y(e,t);!function(e,t){let s=f.get(e);if(!s)return;let n=function(e){let t=e.split("\n"),s=[];for(let e of t){let t=h(e);!(!t||u.lr.some(e=>e.test(t)))&&(u.n9.test(t)||s.push(t))}return s}(t);if(0!==n.length){if(s.pollCount++,0===s.lines.length)s.lines=[...n];else{let e=function(e,t){if(0===e.length||0===t.length)return 0;let s=Math.min(e.length,t.length);for(let n=s;n>=1;n--){let s=e.slice(-n),i=t.slice(0,n),o=!0;for(let e=0;e<n;e++)if(s[e]!==i[e]){o=!1;break}if(o)return n}return 0}(s.lastFingerprint,n);if(e>0){let t=n.slice(e);s.lines.push(...t)}else s.lines.push(...n)}s.lastFingerprint=n.slice(-10)}}(s,w)}let k=function(e,t,s){let n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=n.slice(0,i),r=o.length,a=r>0&&t>25&&r+25<t,l=r>0&&t>50&&r<50,c=a||l;if(!c&&r<t-5)return null;let f=Math.max(0,r-20),h=o.slice(f),g="opencode"===s?(0,u.vp)(o.join("\n")):h.join("\n"),{promptPattern:w,separatorPattern:y,thinkingPattern:S,skipPatterns:x}=(0,u.bs)(s),C=(e=60)=>{let t;if("codex"===s)t=/^›\s+(?!Implement|Find and fix|Type|Summarize)/;else if("opencode"===s){let t=0;for(let s=r-1;s>=Math.max(0,r-e);s--){let e=(0,u.vp)(o[s]);if(u.n9.test(e)&&2==++t)return s}return -1}else t=/^[>❯]\s+\S/;for(let s=r-1;s>=Math.max(0,r-e);s--){let e=(0,u.vp)(o[s]);if(t.test(e))return s}return -1};if("claude"===s||"codex"===s){let e=$(o.join("\n"),s);if(e.isPrompt)return p(o,t,r,c,s,C,e)}let k=(0,u.vp)(g),P=w.test(k),T=y.test(k),v=S.test(k),I=("codex"===s||"gemini"===s||"vibe-local"===s)&&P&&!v,E="claude"===s&&P&&T&&!v,L="opencode"===s&&u.n9.test(k)&&!u.nT.test(k);if(I||E||L){let e=[],n=b(t,r,c,s,C),i=r;for(let t=n;t<r;t++){let n=o[t],r=(0,u.vp)(n);if("codex"===s&&/^›\s+/.test(r)||"gemini"===s&&/^(%|\$|.*@.*[%$#])\s*$/.test(r)||"opencode"===s&&(u.Hm.test(r)||u.bl.test(r))){i=t;break}x.some(e=>e.test(r))||e.push(n)}let a=e.join("\n").trim(),l=a.split("\n").slice(-5).join("\n");if(S.test(l))return d(r);if("claude"===s){let e=(0,u.vp)(a),t=/[╭╮╰╯│]/.test(e)||/░{3,}/.test(e)||/▓{3,}/.test(e),s=/Claude Code|claude\/|v\d+\.\d+/.test(e),n=/Tip:|for shortcuts|\?\s*for help/.test(e),i=/^\s*\/Users\/.*$/m.test(e)&&e.split("\n").length<30,o=e.match(/^[>❯]\s+(\S.*)$/m);if(o){let t=e.indexOf(o[0]);if(0===e.substring(t+o[0].length).trim().split("\n").filter(e=>{let t=e.trim();return t&&!x.some(e=>e.test(t))&&!/^─+$/.test(t)}).length)return d(r)}else if((t||s||n||i)&&a.length<2e3)return d(r)}if("gemini"===s&&((a.match(/[░███]/g)||[]).length>.3*a.length||m.some(e=>a.includes(e))||!a.includes("✦")&&a.length<10))return d(r);if("opencode"===s){let e=(0,u.vp)(a);if((e.length<50||!u.n9.test(k))&&0===e.split("\n").filter(e=>{let t=e.trim();return t&&!u.lr.some(e=>e.test(t))}).length)return d(r)}return{response:a,isComplete:!0,lineCount:i,bufferReset:c}}if("opencode"!==s){let e=$(o.join("\n"),s);if(e.isPrompt)return p(o,t,r,c,s,C,e)}let A=[],N=c||t>=r-5,M=N?C(80):-1,O=N?M>=0?M+1:Math.max(0,r-80):Math.max(0,t);for(let e=O;e<r;e++){let t=o[e],s=(0,u.vp)(t);x.some(e=>e.test(s))||A.push(t)}let F=A.join("\n").trim();return F?{response:F,isComplete:!1,lineCount:r}:d(r)}(w,g,t);if(!k||!k.isComplete){let{thinkingPattern:n}=(0,u.bs)(t),i=(0,u.vp)(w).split("\n").slice(-5).join("\n");if(n.test(i)){let n=(0,o.GP)(s,e,t);n>0&&console.log(`Marked ${n} pending prompt(s) as answered (thinking detected) for ${e}`)}return!1}let P="opencode"===t;if(!P&&!k.bufferReset&&k.lineCount===g&&!i?.inProgressMessageId)return!1;if(!k.bufferReset&&!P&&k.lineCount<=g)return console.log(`[checkForResponse] Already saved up to line ${g}, skipping (result: ${k.lineCount})`),!1;let v=k.promptDetection??$(k.response,t);if(v.isPrompt){(0,o.Mf)(s,e,t);let n=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:v.rawContent||v.cleanContent,messageType:"prompt",promptData:v.promptData,timestamp:new Date,cliToolId:t});return(0,o.IH)(s,e,t,k.lineCount),(0,r.ps)("message",{worktreeId:e,message:n}),T(e,t),!0}if(!k.response||""===k.response.trim())return(0,o.IH)(s,e,t,k.lineCount),!1;let I="claude"===t?(0,c.Z)(k.response):void 0,E=k.response;if("gemini"===t)E=x(k.response);else if("claude"===t)E=S(k.response);else if("opencode"===t){var a;E=C(k.response),a=y(e,t),f.delete(a)}if(!E||""===E.trim()||"[No content]"===E)return(0,o.IH)(s,e,t,k.lineCount),(0,o.Mf)(s,e,t),!1;E&&await (0,l.o)(s,e,E,t);let L=(0,o.GP)(s,e,t);L>0&&console.log(`Marked ${L} pending prompt(s) as answered for ${e}`);let A=(0,o.zl)(s,e,t);if(!P&&A&&k.lineCount<=A.lastCapturedLine)return console.log(`[checkForResponse] Race condition detected, skipping save (result: ${k.lineCount}, current: ${A.lastCapturedLine})`),!1;let N=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:E,messageType:"normal",timestamp:new Date,cliToolId:t,summary:I?.summary,logFileName:I?.logFileName,requestId:I?.requestId});return(0,r.ps)("message",{worktreeId:e,message:N}),(0,o.IH)(s,e,t,k.lineCount),P&&T(e,t),!0}catch(t){return console.error(`Error checking for response (${e}):`,t instanceof Error?t.message:String(t)),!1}}function P(e,t){let s=y(e,t);T(e,t),w.set(s,Date.now()),"opencode"===t&&f.set(s,{lines:[],lastFingerprint:[],pollCount:0}),function e(t,s){let n=y(t,s),i=setTimeout(async()=>{let i=w.get(n);if(i&&Date.now()-i>18e5){T(t,s);return}try{await k(t,s)}catch(e){console.error("[Poller] Error:",e)}g.has(n)&&e(t,s)},2e3);g.set(n,i)}(e,t)}function T(e,t){let s=y(e,t),n=g.get(s);n&&(clearTimeout(n),g.delete(s),w.delete(s)),f.delete(s)}}};
|