vibemux-worker-preview 0.2.1-preview.74 → 0.2.2-preview.75
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.
|
@@ -5,7 +5,7 @@ var Pp=Object.create;var zi=Object.defineProperty;var Ep=Object.getOwnPropertyDe
|
|
|
5
5
|
`)+`\r
|
|
6
6
|
\r
|
|
7
7
|
`+r)}function kt(e,t,r,n,o,s){if(e.listenerCount("wsClientError")){let i=new Error(o);Error.captureStackTrace(i,kt),e.emit("wsClientError",i,r,t)}else Ir(r,n,o,s)}});import xp from"dotenv";var Oe=e=>e.replace(/\/+$/,""),Hi=e=>{let t=Oe(e);return t.startsWith("https://")?`${t.replace("https://","wss://")}/api/control-plane/executors/ws`:t.startsWith("http://")?`${t.replace("http://","ws://")}/api/control-plane/executors/ws`:`${t}/api/control-plane/executors/ws`},Vi=e=>{let t=Oe(e);return t.startsWith("https://")?`${t.replace("https://","wss://")}/api/preview-tunnels/ws`:t.startsWith("http://")?`${t.replace("http://","ws://")}/api/preview-tunnels/ws`:`${t}/api/preview-tunnels/ws`};var st=async e=>{let t=await fetch(e.url,{method:e.method??"GET",headers:{...e.body===void 0?{}:{"Content-Type":"application/json"},...e.headers??{}},body:e.body===void 0?void 0:JSON.stringify(e.body)});if(!t.ok){let r=await t.json().catch(()=>({message:e.errorMessage}));throw new Error(r.message||e.errorMessage)}return await t.json()};var lr=async(e,t)=>st({url:`${Oe(t)}/api/control-plane/executors/pair`,method:"POST",body:e,errorMessage:"Pair request failed."});var Et=e=>e?.trim().toUpperCase()||"",bt=e=>!!(e.executorId?.trim()&&e.executorToken?.trim()),Kr=(e,t)=>{let r=Et(e);return!r||!bt(t)?!1:r===Et(t.lastPairedPairingCode)},Xr=()=>"This pairing code already completed on this worker. Reusing the saved executor token instead of pairing again.";var _p=new Map([["\u914D\u5BF9\u7801\u5DF2\u4F7F\u7528\u3002","This pairing code has already been used."],["\u914D\u5BF9\u7801\u5DF2\u8FC7\u671F\u3002","This pairing code has expired."],["\u914D\u5BF9\u7801\u4E0D\u5B58\u5728\u3002","This pairing code does not exist."]]),Ap=new Set(["This pairing code has already been used.","This pairing code has expired.","This pairing code does not exist."]),Ji=e=>{let t=e.trim();return _p.get(t)||t},Mp=e=>Ap.has(Ji(e)),Ki=()=>"This worker is already paired locally. If you only want to reconnect after a restart, start the worker again without `connect --pairing-code ...`.",Yr=(e,t)=>{let r=Ji(e);return!t||!Mp(r)?r:`${r} ${Ki()}`},Xi=e=>e?`${Ki()} Use \`connect --pairing-code <CODE>\` only when you want to pair this machine for the first time or move it to a different account.`:"Missing required flag: --pairing-code";import{existsSync as Po,readFileSync as Eo}from"node:fs";import ye from"node:path";import{fileURLToPath as Yi}from"node:url";var xo=null,Co=null,vo=null,Op=(e,t)=>{let r=ye.relative(t,e);return r===""||!r.startsWith("..")&&!ye.isAbsolute(r)},Bp=e=>{try{let t=JSON.parse(Eo(e,"utf8"));return!!(t.name&&t.version)}catch{return!1}},Wp=()=>{let e=process.env.VIBEMUX_RUNTIME_ROOT?.trim();if(e){let r=ye.resolve(e),n=Yi(import.meta.url);if(Op(n,r))return r}let t=ye.dirname(Yi(import.meta.url));for(;;){let r=ye.join(t,"package.json");if(Po(r)&&Bp(r))return t;let n=ye.dirname(t);if(n===t)return process.cwd();t=n}},ie=()=>(xo||(xo=Wp()),xo),it=()=>{if(!Co){let e=ye.join(ie(),"package.json");Co=Po(e)?JSON.parse(Eo(e,"utf8")):{}}return Co},It=()=>{if(!vo){let e=ye.join(ie(),"runtime","worker-release.json");vo=Po(e)?JSON.parse(Eo(e,"utf8")):{}}return vo},ue=()=>it().version?.trim()||process.env.npm_package_version?.trim()||"0.0.0",ur=()=>ye.join(ie(),"dist-worker","apps","worker","src","index.js"),Qi=()=>ye.join(ie(),"dist-worker","apps","worker","web"),Qr=()=>{let e=process.platform==="win32"?"vibemux-worker.cmd":"vibemux-worker";return ye.join(ie(),"bin",e)};import{cpSync as oa,existsSync as Ke,mkdirSync as _o,readFileSync as nn,rmSync as im,writeFileSync as Ao}from"node:fs";import{randomUUID as am}from"node:crypto";import We from"node:os";import A from"node:path";var Zr=["Pi","OpenCode","Codex","ClaudeCode"];var Np=[...Zr],Dp=new Set(Zr),qv=new Set(Np),Up={OpenCode:{id:"OpenCode",label:"OpenCode",transport:"SDK",modelIdStrategy:"canonical",workerOnly:!0,agentType:"OpenCode"},Codex:{id:"Codex",label:"Codex",transport:"STDIO",modelIdStrategy:"native",workerOnly:!0,agentType:"Codex"},ClaudeCode:{id:"ClaudeCode",label:"Claude Code",transport:"STDIO",modelIdStrategy:"native",workerOnly:!0,agentType:"ClaudeCode"},Pi:{id:"Pi",label:"Pi",transport:"SDK",modelIdStrategy:"canonical",workerOnly:!0,agentType:"Pi"}},Zi=e=>typeof e=="string"&&Dp.has(e);var ea=e=>Up[e],Tt=e=>e;var bo=(e,t)=>{let r=e.trim(),n=t.trim();return r&&n?`${r}/${n}`:""},Rt=(e,t,r)=>ea(e).modelIdStrategy==="canonical"?r?.trim()||"":$p(t,r),at=e=>{let t=e?.trim()||"";if(!t)return null;let[r,...n]=t.split("/"),o=n.join("/");return!r||!o?null:{providerId:r,modelId:o}},ta=e=>e?.trim().toLowerCase()||"",$p=(e,t)=>{let r=t?.trim()||"";if(!r)return"";let n=at(r);return n&&ta(n.providerId)===ta(e)?n.modelId:r};var Lp=e=>{let t="",r=!1,n='"',o=!1;for(let s=0;s<e.length;s+=1){let i=e[s],a=e[s+1];if(r){if(t+=i,o){o=!1;continue}if(i==="\\"){o=!0;continue}i===n&&(r=!1);continue}if(i==='"'||i==="'"){r=!0,n=i,t+=i;continue}if(i==="/"&&a==="/"){for(s+=2;s<e.length&&e[s]!==`
|
|
8
|
-
`;)s+=1;s<e.length&&(t+=e[s]);continue}if(i==="/"&&a==="*"){for(s+=2;s<e.length-1&&!(e[s]==="*"&&e[s+1]==="/");)s+=1;s+=1;continue}t+=i}return t},jp=e=>{let t="",r=!1,n='"',o=!1;for(let s=0;s<e.length;s+=1){let i=e[s];if(r){if(t+=i,o){o=!1;continue}if(i==="\\"){o=!0;continue}i===n&&(r=!1);continue}if(i==='"'||i==="'"){r=!0,n=i,t+=i;continue}if(i===","){let a=s+1;for(;a<e.length&&/\s/.test(e[a]);)a+=1;if(e[a]==="}"||e[a]==="]")continue}t+=i}return t},Fp=e=>jp(Lp(e)),de=e=>{let t=e?.trim();if(!t)return{};try{let r=JSON.parse(Fp(t));return r&&typeof r=="object"?r:{}}catch(r){throw new Error(r instanceof Error?`OpenCode \u914D\u7F6E JSON/JSONC \u65E0\u6548\uFF1A${r.message}`:"OpenCode \u914D\u7F6E JSON/JSONC \u65E0\u6548")}};var ct="built-in://vibemux",Io=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Gp=(e,t,r)=>{let n=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")||`${e}-${r+1}`;return`${e}-${r+1}-${n}`};var qp=e=>e.replace(/\/+$/,""),zp=e=>e.startsWith("sse://")?`http://${e.slice(6)}`:e,Hp=e=>{if(!e.executorToken?.trim())return null;let t={Authorization:`Bearer ${e.executorToken}`};return e.actingUserId?.trim()&&(t["x-vibemux-acting-user"]=e.actingUserId.trim()),{type:"remote",url:`${qp(e.cloudUrl)}/mcp/executor`,enabled:!0,headers:t}},Vp=e=>{let t=e.replace(/^stdio:\/\//,"").trim();return t?{command:t}:null},Jp=e=>{let t=zp(e).trim();return t?{type:"remote",url:t,enabled:!0}:null},lt=(e,t)=>e.filter(r=>r.enabled).reduce((r,n,o)=>{let s=n.id?.trim()||Gp("mcp",n.name,o),i=n.target===ct?Hp(t):n.transport==="stdio"||n.target.startsWith("stdio://")?Vp(n.target):Jp(n.target);return i&&(r[s]=i),r},{}),en=(e,t,r)=>{let n=de(e),o=Io(n)?{...n}:{},s=Io(o.mcp)?{...o.mcp}:Io(o.mcpServers)?{...o.mcpServers}:{},i=lt(t,r),{mcpServers:a,...c}=o,l={...c,mcp:{...s,...i}};return JSON.stringify(l,null,2)};var _t=e=>`'${e.replace(/'/g,"'\\''")}'`,ut=(e,t=[])=>r=>`command -v ${e} >/dev/null 2>&1 && ${e}${t.length>0?` ${t.join(" ")}`:""} ${_t(r)}`,ke=(e,t=[])=>r=>`[ -x "${e}" ] && "${e}"${t.length>0?` ${t.join(" ")}`:""} ${_t(r)}`,Be=e=>t=>`command -v open >/dev/null 2>&1 && open -Ra "${e}" && open -a "${e}" ${_t(t)}`,dr=e=>t=>e?`command -v open >/dev/null 2>&1 && open -Ra "${e}" && open -a "${e}" ${_t(t)}`:`command -v open >/dev/null 2>&1 && open ${_t(t)}`,Kp=e=>`command -v ghostty >/dev/null 2>&1 && ghostty --working-directory=${_t(e)}`;var Yv={vscode:{label:"VS Code",description:"Visual Studio Code",commandBuilders:[ut("code",["--reuse-window"]),...["/opt/homebrew/bin/code","/usr/local/bin/code","/usr/bin/code","/snap/bin/code","/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code","$HOME/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code"].map(e=>ke(e,["--reuse-window"])),Be("Visual Studio Code")]},"vscode-insiders":{label:"VS Code Insiders",description:"Visual Studio Code - Insiders",commandBuilders:[ut("code-insiders",["--reuse-window"]),...["/opt/homebrew/bin/code-insiders","/usr/local/bin/code-insiders","/usr/bin/code-insiders","/snap/bin/code-insiders","/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders","$HOME/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders"].map(e=>ke(e,["--reuse-window"])),Be("Visual Studio Code - Insiders")]},cursor:{label:"Cursor",description:"Cursor editor",commandBuilders:[ut("cursor"),ke("/Applications/Cursor.app/Contents/Resources/app/bin/cursor"),ke("$HOME/Applications/Cursor.app/Contents/Resources/app/bin/cursor"),Be("Cursor")]},windsurf:{label:"Windsurf",description:"Windsurf editor",commandBuilders:[ut("windsurf"),ke("/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf"),ke("$HOME/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf"),Be("Windsurf")]},zed:{label:"Zed",description:"Zed editor",commandBuilders:[ut("zed"),ke("/Applications/Zed.app/Contents/MacOS/zed"),ke("$HOME/Applications/Zed.app/Contents/MacOS/zed"),Be("Zed")]},intellij:{label:"IntelliJ IDEA",description:"JetBrains IntelliJ IDEA",commandBuilders:[ut("idea"),Be("IntelliJ IDEA"),Be("IntelliJ IDEA CE")]},xcode:{label:"Xcode",description:"Xcode project editor",commandBuilders:[ut("xed"),ke("/usr/bin/xed"),Be("Xcode")]},ghostty:{label:"Ghostty",description:"Ghostty terminal",commandBuilders:[Kp,ke("/Applications/Ghostty.app/Contents/MacOS/ghostty",["--working-directory"]),ke("$HOME/Applications/Ghostty.app/Contents/MacOS/ghostty",["--working-directory"]),Be("Ghostty")]},finder:{label:"Finder",description:"Open the folder in Finder",commandBuilders:[dr()]},terminal:{label:"Terminal",description:"Open the folder in Terminal.app",commandBuilders:[dr("Terminal")]},iterm:{label:"iTerm",description:"Open the folder in iTerm",commandBuilders:[dr("iTerm"),dr("iTerm2")]},warp:{label:"Warp",description:"Open the folder in Warp",commandBuilders:[dr("Warp")]}};var Xp={defaultModel:"",agent:"",permissionPolicy:""},Yp={defaultModel:"gpt-5.4",sandbox:"workspace-write",approval:"never",reasoningEffort:"medium",reasoningSummary:"auto"},Qp={defaultModel:"sonnet",permissionMode:"bypassPermissions",planMode:!1},Zp={defaultModel:"",agentDir:""},ra={OpenCode:Xp,Codex:Yp,ClaudeCode:Qp,Pi:Zp},sP={...ra};var em=e=>({OpenCode:{...e.OpenCode},Codex:{...e.Codex},ClaudeCode:{...e.ClaudeCode},Pi:{...e.Pi}}),pr=(e,t)=>{let r=em(ra);return e?.OpenCode&&(r.OpenCode={...r.OpenCode,...e.OpenCode}),e?.Codex&&(r.Codex={...r.Codex,...e.Codex}),e?.ClaudeCode&&(r.ClaudeCode={...r.ClaudeCode,...e.ClaudeCode}),e?.Pi&&(r.Pi={...r.Pi,...e.Pi}),!r.OpenCode.defaultModel.trim()&&t?.trim()&&(r.OpenCode.defaultModel=t.trim()),r};var tn=null,tm=()=>tn||(tn=It(),tn),Je=()=>process.env.VIBEMUX_WORKER_RELEASE_CHANNEL?.trim()||tm().channel?.trim()||"production",rm=e=>e==="preview"?"vibemux-worker-preview":"vibemux-worker",nm=e=>e==="preview"?"preview":"latest",om=()=>(process.env.npm_config_registry?.trim()||"https://registry.npmjs.org").replace(/\/$/,""),sm=async e=>{let t=await fetch(`${om()}/${e}`,{method:"GET",signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error(`\u67E5\u8BE2 npm \u5305\u5931\u8D25\uFF0CHTTP ${t.status}`);return await t.json()},dt=async()=>{let e=ue(),t=Je(),r=it().name?.trim()||"",n=rm(t),o=nm(t);if(r!==n)return{ok:!0,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:"\u5F53\u524D\u662F\u6E90\u7801\u6A21\u5F0F\u6216\u975E npm Worker \u5305\uFF0C\u8DF3\u8FC7\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u3002"};try{let i=(await sm(n))["dist-tags"]?.[o]?.trim();return i?i===e?{ok:!0,currentVersion:e,latestVersion:i,channel:t,available:!1,packageName:n,packageTag:o,message:`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C ${e}\u3002`}:{ok:!0,currentVersion:e,latestVersion:i,channel:t,available:!0,packageName:n,packageTag:o,message:`\u68C0\u6D4B\u5230\u65B0\u7248\u672C ${i}\u3002`}:{ok:!1,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:`\u672A\u627E\u5230 npm dist-tag: ${o}`}}catch(s){return{ok:!1,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:s instanceof Error?s.message:"\u67E5\u8BE2 npm \u66F4\u65B0\u5931\u8D25"}}};var sa=A.join(We.homedir(),".vibemux"),cm=A.join(We.homedir(),".vibemux-dev"),lm=A.join(We.homedir(),".vibemux-preview"),um="http://127.0.0.1:8989",dm=48100,pm=["config.json","machine-id","workspace","runtime"],mm=["config.json","machine-id","runtime"],fm=new Set(["http://127.0.0.1:8989","http://localhost:8989","http://127.0.0.1:18989","http://localhost:18989","ws://127.0.0.1:8989","ws://localhost:8989","ws://127.0.0.1:18989","ws://localhost:18989"]),ia=()=>!!process.env.VIBEMUX_CLOUD_URL?.trim(),rn=()=>process.env.VIBEMUX_CLOUD_URL?.trim()||It().defaultCloudUrl?.trim()||um,gm=["
|
|
8
|
+
`;)s+=1;s<e.length&&(t+=e[s]);continue}if(i==="/"&&a==="*"){for(s+=2;s<e.length-1&&!(e[s]==="*"&&e[s+1]==="/");)s+=1;s+=1;continue}t+=i}return t},jp=e=>{let t="",r=!1,n='"',o=!1;for(let s=0;s<e.length;s+=1){let i=e[s];if(r){if(t+=i,o){o=!1;continue}if(i==="\\"){o=!0;continue}i===n&&(r=!1);continue}if(i==='"'||i==="'"){r=!0,n=i,t+=i;continue}if(i===","){let a=s+1;for(;a<e.length&&/\s/.test(e[a]);)a+=1;if(e[a]==="}"||e[a]==="]")continue}t+=i}return t},Fp=e=>jp(Lp(e)),de=e=>{let t=e?.trim();if(!t)return{};try{let r=JSON.parse(Fp(t));return r&&typeof r=="object"?r:{}}catch(r){throw new Error(r instanceof Error?`OpenCode \u914D\u7F6E JSON/JSONC \u65E0\u6548\uFF1A${r.message}`:"OpenCode \u914D\u7F6E JSON/JSONC \u65E0\u6548")}};var ct="built-in://vibemux",Io=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Gp=(e,t,r)=>{let n=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")||`${e}-${r+1}`;return`${e}-${r+1}-${n}`};var qp=e=>e.replace(/\/+$/,""),zp=e=>e.startsWith("sse://")?`http://${e.slice(6)}`:e,Hp=e=>{if(!e.executorToken?.trim())return null;let t={Authorization:`Bearer ${e.executorToken}`};return e.actingUserId?.trim()&&(t["x-vibemux-acting-user"]=e.actingUserId.trim()),{type:"remote",url:`${qp(e.cloudUrl)}/mcp/executor`,enabled:!0,headers:t}},Vp=e=>{let t=e.replace(/^stdio:\/\//,"").trim();return t?{command:t}:null},Jp=e=>{let t=zp(e).trim();return t?{type:"remote",url:t,enabled:!0}:null},lt=(e,t)=>e.filter(r=>r.enabled).reduce((r,n,o)=>{let s=n.id?.trim()||Gp("mcp",n.name,o),i=n.target===ct?Hp(t):n.transport==="stdio"||n.target.startsWith("stdio://")?Vp(n.target):Jp(n.target);return i&&(r[s]=i),r},{}),en=(e,t,r)=>{let n=de(e),o=Io(n)?{...n}:{},s=Io(o.mcp)?{...o.mcp}:Io(o.mcpServers)?{...o.mcpServers}:{},i=lt(t,r),{mcpServers:a,...c}=o,l={...c,mcp:{...s,...i}};return JSON.stringify(l,null,2)};var _t=e=>`'${e.replace(/'/g,"'\\''")}'`,ut=(e,t=[])=>r=>`command -v ${e} >/dev/null 2>&1 && ${e}${t.length>0?` ${t.join(" ")}`:""} ${_t(r)}`,ke=(e,t=[])=>r=>`[ -x "${e}" ] && "${e}"${t.length>0?` ${t.join(" ")}`:""} ${_t(r)}`,Be=e=>t=>`command -v open >/dev/null 2>&1 && open -Ra "${e}" && open -a "${e}" ${_t(t)}`,dr=e=>t=>e?`command -v open >/dev/null 2>&1 && open -Ra "${e}" && open -a "${e}" ${_t(t)}`:`command -v open >/dev/null 2>&1 && open ${_t(t)}`,Kp=e=>`command -v ghostty >/dev/null 2>&1 && ghostty --working-directory=${_t(e)}`;var Yv={vscode:{label:"VS Code",description:"Visual Studio Code",commandBuilders:[ut("code",["--reuse-window"]),...["/opt/homebrew/bin/code","/usr/local/bin/code","/usr/bin/code","/snap/bin/code","/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code","$HOME/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code"].map(e=>ke(e,["--reuse-window"])),Be("Visual Studio Code")]},"vscode-insiders":{label:"VS Code Insiders",description:"Visual Studio Code - Insiders",commandBuilders:[ut("code-insiders",["--reuse-window"]),...["/opt/homebrew/bin/code-insiders","/usr/local/bin/code-insiders","/usr/bin/code-insiders","/snap/bin/code-insiders","/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders","$HOME/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code-insiders"].map(e=>ke(e,["--reuse-window"])),Be("Visual Studio Code - Insiders")]},cursor:{label:"Cursor",description:"Cursor editor",commandBuilders:[ut("cursor"),ke("/Applications/Cursor.app/Contents/Resources/app/bin/cursor"),ke("$HOME/Applications/Cursor.app/Contents/Resources/app/bin/cursor"),Be("Cursor")]},windsurf:{label:"Windsurf",description:"Windsurf editor",commandBuilders:[ut("windsurf"),ke("/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf"),ke("$HOME/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf"),Be("Windsurf")]},zed:{label:"Zed",description:"Zed editor",commandBuilders:[ut("zed"),ke("/Applications/Zed.app/Contents/MacOS/zed"),ke("$HOME/Applications/Zed.app/Contents/MacOS/zed"),Be("Zed")]},intellij:{label:"IntelliJ IDEA",description:"JetBrains IntelliJ IDEA",commandBuilders:[ut("idea"),Be("IntelliJ IDEA"),Be("IntelliJ IDEA CE")]},xcode:{label:"Xcode",description:"Xcode project editor",commandBuilders:[ut("xed"),ke("/usr/bin/xed"),Be("Xcode")]},ghostty:{label:"Ghostty",description:"Ghostty terminal",commandBuilders:[Kp,ke("/Applications/Ghostty.app/Contents/MacOS/ghostty",["--working-directory"]),ke("$HOME/Applications/Ghostty.app/Contents/MacOS/ghostty",["--working-directory"]),Be("Ghostty")]},finder:{label:"Finder",description:"Open the folder in Finder",commandBuilders:[dr()]},terminal:{label:"Terminal",description:"Open the folder in Terminal.app",commandBuilders:[dr("Terminal")]},iterm:{label:"iTerm",description:"Open the folder in iTerm",commandBuilders:[dr("iTerm"),dr("iTerm2")]},warp:{label:"Warp",description:"Open the folder in Warp",commandBuilders:[dr("Warp")]}};var Xp={defaultModel:"",agent:"",permissionPolicy:""},Yp={defaultModel:"gpt-5.4",sandbox:"workspace-write",approval:"never",reasoningEffort:"medium",reasoningSummary:"auto"},Qp={defaultModel:"sonnet",permissionMode:"bypassPermissions",planMode:!1},Zp={defaultModel:"",agentDir:""},ra={OpenCode:Xp,Codex:Yp,ClaudeCode:Qp,Pi:Zp},sP={...ra};var em=e=>({OpenCode:{...e.OpenCode},Codex:{...e.Codex},ClaudeCode:{...e.ClaudeCode},Pi:{...e.Pi}}),pr=(e,t)=>{let r=em(ra);return e?.OpenCode&&(r.OpenCode={...r.OpenCode,...e.OpenCode}),e?.Codex&&(r.Codex={...r.Codex,...e.Codex}),e?.ClaudeCode&&(r.ClaudeCode={...r.ClaudeCode,...e.ClaudeCode}),e?.Pi&&(r.Pi={...r.Pi,...e.Pi}),!r.OpenCode.defaultModel.trim()&&t?.trim()&&(r.OpenCode.defaultModel=t.trim()),r};var tn=null,tm=()=>tn||(tn=It(),tn),Je=()=>process.env.VIBEMUX_WORKER_RELEASE_CHANNEL?.trim()||tm().channel?.trim()||"production",rm=e=>e==="preview"?"vibemux-worker-preview":"vibemux-worker",nm=e=>e==="preview"?"preview":"latest",om=()=>(process.env.npm_config_registry?.trim()||"https://registry.npmjs.org").replace(/\/$/,""),sm=async e=>{let t=await fetch(`${om()}/${e}`,{method:"GET",signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error(`\u67E5\u8BE2 npm \u5305\u5931\u8D25\uFF0CHTTP ${t.status}`);return await t.json()},dt=async()=>{let e=ue(),t=Je(),r=it().name?.trim()||"",n=rm(t),o=nm(t);if(r!==n)return{ok:!0,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:"\u5F53\u524D\u662F\u6E90\u7801\u6A21\u5F0F\u6216\u975E npm Worker \u5305\uFF0C\u8DF3\u8FC7\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u3002"};try{let i=(await sm(n))["dist-tags"]?.[o]?.trim();return i?i===e?{ok:!0,currentVersion:e,latestVersion:i,channel:t,available:!1,packageName:n,packageTag:o,message:`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C ${e}\u3002`}:{ok:!0,currentVersion:e,latestVersion:i,channel:t,available:!0,packageName:n,packageTag:o,message:`\u68C0\u6D4B\u5230\u65B0\u7248\u672C ${i}\u3002`}:{ok:!1,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:`\u672A\u627E\u5230 npm dist-tag: ${o}`}}catch(s){return{ok:!1,currentVersion:e,channel:t,available:!1,packageName:n,packageTag:o,message:s instanceof Error?s.message:"\u67E5\u8BE2 npm \u66F4\u65B0\u5931\u8D25"}}};var sa=A.join(We.homedir(),".vibemux"),cm=A.join(We.homedir(),".vibemux-dev"),lm=A.join(We.homedir(),".vibemux-preview"),um="http://127.0.0.1:8989",dm=48100,pm=["config.json","machine-id","workspace","runtime"],mm=["config.json","machine-id","runtime"],fm=new Set(["http://127.0.0.1:8989","http://localhost:8989","http://127.0.0.1:18989","http://localhost:18989","ws://127.0.0.1:8989","ws://localhost:8989","ws://127.0.0.1:18989","ws://localhost:18989"]),ia=()=>!!process.env.VIBEMUX_CLOUD_URL?.trim(),rn=()=>process.env.VIBEMUX_CLOUD_URL?.trim()||It().defaultCloudUrl?.trim()||um,gm=["vibemux.xyz"],To=e=>gm.some(t=>e.includes(t)),hm=e=>{if(process.env.NODE_ENV==="development"||ia())return!1;let t=It().defaultCloudUrl?.trim();if(!t)return!1;if(fm.has(e?.trim()||""))return!0;let r=To(t),n=To(e||"");return r!==n},aa=()=>{let e=rn();return Je()==="preview"||To(e)?"preview":process.env.NODE_ENV==="development"?"development":"production"},ym=()=>{switch(aa()){case"development":return cm;case"preview":return lm;default:return sa}},km=()=>{let e=sa;switch(aa()){case"development":return[A.join(e,"worker-dev")];case"preview":return process.env.NODE_ENV==="development"?[A.join(e,"worker-dev-preview"),A.join(e,"worker-preview")]:[A.join(e,"worker-preview"),A.join(e,"worker-dev-preview")];default:return[A.join(e,"worker")]}},na=e=>mm.some(t=>Ke(A.join(e,t))),wm=(e,t)=>{let r=A.join(e,"config.json");if(Ke(r))try{let n=JSON.parse(nn(r,"utf8"));(n.workspaceRoot?.trim()||"")===A.join(e,"workspace")&&(n.workspaceRoot=A.join(t,"workspace")),Ao(A.join(t,"config.json"),`${JSON.stringify(n,null,2)}
|
|
9
9
|
`,"utf8")}catch{oa(r,A.join(t,"config.json"))}},Sm=e=>{if(na(e))return;let t=km().find(r=>r!==e&&na(r));if(t){_o(e,{recursive:!0});for(let r of pm){if(r==="config.json")continue;let n=A.join(t,r),o=A.join(e,r);!Ke(n)||Ke(o)||oa(n,o,{recursive:!0})}Ke(A.join(e,"config.json"))||wm(t,e)}},xm=()=>{let e=Number(process.env.VIBEMUX_WORKER_PORT?.trim());if(Number.isFinite(e)&&e>0)return e;let t=It().defaultLocalServerPort;return Number.isFinite(t)&&t?t:dm},Cm=()=>{let e=process.env.OPENCODE_CONFIG_PATH?.trim();if(e)return[e];let t=A.join(We.homedir(),".config","opencode");return[A.join(t,"opencode.json"),A.join(t,"opencode.jsonc")]},ca=()=>{let e=process.env.CODEX_HOME?.trim()||A.join(We.homedir(),".codex");return A.join(e,"config.toml")},la=()=>{let e=process.env.CODEX_HOME?.trim()||A.join(We.homedir(),".codex");return A.join(e,"auth.json")},vm=()=>{let e=process.env.CLAUDE_HOME?.trim()||A.join(We.homedir(),".claude");return[A.join(e,"settings.json"),A.join(e,"config.json")]},ua=()=>process.env.PI_AGENT_DIR?.trim()||A.join(We.homedir(),".pi","agent"),At=e=>{if(!Ke(e))return"";try{return nn(e,"utf8").trim()}catch{return""}},Ro=e=>!!e&&typeof e=="object"&&!Array.isArray(e),da=(e,t)=>Object.entries(t).reduce((r,[n,o])=>{let s=r[n];return Ro(s)&&Ro(o)?(r[n]=da({...s},o),r):(r[n]=o,r)},{...e}),pa=()=>{let e=Cm().map(t=>({path:t,content:At(t)})).filter(t=>t.content.trim());if(e.length===0)return{opencodeConfigContent:"",defaultModel:"",sourcePaths:[]};try{if(e.length===1){let o=de(e[0].content),s=Object.entries(o.default??{}).find(([,i])=>typeof i=="string"&&i.trim());return{opencodeConfigContent:e[0].content,defaultModel:s?`${s[0]}/${String(s[1]).trim()}`:"",sourcePaths:e.map(i=>i.path)}}let t=e.reduce((o,s)=>{let i=de(s.content);return da(o,i)},{}),r=Ro(t.default)?t.default:{},n=Object.entries(r).find(([,o])=>typeof o=="string"&&o.trim());return{opencodeConfigContent:JSON.stringify(t,null,2),defaultModel:n?`${n[0]}/${String(n[1]).trim()}`:"",sourcePaths:e.map(o=>o.path)}}catch{return{opencodeConfigContent:"",defaultModel:"",sourcePaths:e.map(t=>t.path)}}},Pm=()=>{let e=pa();return{opencodeConfigContent:e.opencodeConfigContent,defaultModel:e.defaultModel}},Em=()=>{let e=process.env.VIBEMUX_WORKER_HOME?.trim();if(e)return e;let t=process.env.VIBEMUX_HOME?.trim();return t?A.join(t,"worker"):ym()},Ee=()=>{let e=A.resolve(Em());return!process.env.VIBEMUX_WORKER_HOME?.trim()&&!process.env.VIBEMUX_HOME?.trim()&&Sm(e),e},Mo=()=>A.join(Ee(),"config.json"),bm=()=>A.join(Ee(),"machine-id"),Im=()=>{let e=Ee(),t=bm();if(Ke(t)){let n=nn(t,"utf8").trim();if(n)return n}_o(e,{recursive:!0});let r=am();return Ao(t,`${r}
|
|
10
10
|
`,"utf8"),r},Tm=()=>({cloudUrl:rn(),machineId:Im(),machineName:We.hostname(),opencodeConfigContent:"",codexConfigContent:"",codexAuthContent:"",claudeCodeConfigContent:"",piAgentDir:ua(),defaultModel:"",agentSettings:pr(),mcpServers:[],workspaceRoot:A.join(Ee(),"workspace"),maxConcurrency:5,labels:[],capabilities:["code-execution","git-operations"],localServerPort:Number(process.env.VIBEMUX_WORKER_PORT||xm()),projectBindings:[]}),C=()=>{let e=Mo(),t=Ke(e)?JSON.parse(nn(e,"utf8")):{},r={...Tm(),...t},n=Pm();ia()&&(r.cloudUrl=rn()),hm(r.cloudUrl)&&(r.cloudUrl=rn());let o=Number(process.env.VIBEMUX_WORKER_PORT?.trim());return Number.isFinite(o)&&o>0&&(r.localServerPort=o),r.opencodeConfigContent?.trim()||(r.opencodeConfigContent=n.opencodeConfigContent),r.codexConfigContent?.trim()||(r.codexConfigContent=At(ca())),r.codexAuthContent?.trim()||(r.codexAuthContent=At(la())),r.claudeCodeConfigContent?.trim()||(r.claudeCodeConfigContent=Oo()),r.piAgentDir?.trim()||(r.piAgentDir=ua()),r.defaultModel?.trim()||(r.defaultModel=n.defaultModel),r.agentSettings=pr(r.agentSettings,r.defaultModel),r},be=e=>{let t=Ee();_o(t,{recursive:!0}),Ao(Mo(),`${JSON.stringify(e,null,2)}
|
|
11
11
|
`,"utf8")},ma=()=>pa().opencodeConfigContent,on=()=>At(ca()),sn=()=>At(la()),Oo=()=>{for(let e of vm()){let t=At(e);if(t.trim())return t}return""},an=(e=C(),t)=>en(e.opencodeConfigContent,e.mcpServers??[],{cloudUrl:e.cloudUrl,executorToken:e.executorToken,actingUserId:t}),cn=()=>{im(Mo(),{force:!0})},ln=()=>{let e={...C(),executorName:void 0,executorId:void 0,executorToken:void 0,lastPairedPairingCode:void 0};return be(e),e};import{existsSync as pn}from"node:fs";import{stdin as va,stdout as Pa}from"node:process";import fr from"node:path";import{createInterface as Km}from"node:readline/promises";import{existsSync as Um}from"node:fs";import $m from"node:os";import ha from"node:path";import{spawn as Lm}from"node:child_process";import{accessSync as Rm,constants as _m,existsSync as Am}from"node:fs";import{delimiter as Bo,dirname as Mm,isAbsolute as Om,join as Bm}from"node:path";import{spawnSync as Wm}from"node:child_process";var z=(e,t,r)=>{let n=Wm(e,t,{cwd:r?.cwd,encoding:"utf8",env:r?.env,stdio:r?.streamOutput?"inherit":"pipe",timeout:r?.timeout??12e4});return{ok:n.status===0,stdout:n.stdout?.trim()??"",stderr:n.stderr?.trim()??"",error:n.error instanceof Error?n.error.message:void 0}},G=(e,t)=>e.stdout||e.stderr||e.error||t,q=(e,t=["--version"])=>z(e,t).ok,Nm=e=>{let t=process.env.PATH??"";t.split(Bo).filter(Boolean).includes(e)||(process.env.PATH=t?`${e}${Bo}${t}`:e)},Wo=e=>{if(!Am(e))return!1;try{return Rm(e,_m.X_OK),!0}catch{return!1}},ga=e=>{let t=(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";").map(r=>r.trim().toLowerCase()).filter(Boolean);if(t.some(r=>e.toLowerCase().endsWith(r)))return Wo(e)?e:null;for(let r of t){let n=`${e}${r}`;if(Wo(n))return n}return null},fa=e=>process.platform==="win32"?ga(e):Wo(e)?e:null,re=e=>{if(e.includes("/")||e.includes("\\")||Om(e))return fa(e);for(let t of(process.env.PATH??"").split(Bo).filter(Boolean)){let r=Bm(t,e),n=process.platform==="win32"?ga(r):fa(r);if(n)return Nm(Mm(n)),n}return null},Dm=(e,t,r)=>typeof process.getuid=="function"&&process.getuid()===0?{command:e,args:t}:q("sudo")?r?.interactiveAuth?{command:"sudo",args:[e,...t]}:q("sudo",["-n","true"])?{command:"sudo",args:["-n",e,...t]}:null:null,Ne=(e,t,r,n)=>{let o=Dm(e,t,n);return o?z(o.command,o.args,{streamOutput:n?.streamOutput,timeout:r}):{ok:!1,stdout:"",stderr:"",error:n?.interactiveAuth?"\u7F3A\u5C11 sudo \u80FD\u529B\uFF0C\u65E0\u6CD5\u81EA\u52A8\u5B89\u88C5\u3002":"\u7F3A\u5C11 root \u6216\u514D\u5BC6 sudo \u6743\u9650\uFF0C\u65E0\u6CD5\u81EA\u52A8\u5B89\u88C5\u3002"}};var mr=900*1e3,ya=15e3,jm=()=>process.env.CLAUDE_HOME?.trim()||ha.join($m.homedir(),".claude"),Fm=e=>e==="codex-cli"?"Codex CLI":e==="codex-auth"?"Codex \u767B\u5F55":e==="claude-cli"?"Claude Code CLI":e==="claude-auth"?"Claude Code \u8BA4\u8BC1":e,un=(e,t,r)=>({id:e,label:Fm(e),ok:r.ok,changed:r.changed,detail:r.detail,skipped:r.skipped,installer:t?.installer,commandSummary:t?.commandSummary}),ka=(e,t,r,n,o,s)=>{let i={installer:r,commandSummary:t},a=z("npm",["install","-g",e],{streamOutput:s?.streamOutput,timeout:mr});return!a.ok&&process.platform!=="win32"&&(a=Ne("npm",["install","-g",e],mr,s)),un(n,i,{ok:a.ok,changed:a.ok,detail:G(a,o)})},wa=()=>q("npm")?{installer:"npm",commandSummary:"npm install -g @openai/codex",manualHint:"\u8BF7\u5148\u5B89\u88C5 Node.js/npm\uFF0C\u7136\u540E\u6267\u884C `npm install -g @openai/codex`\u3002",run(e){return ka("@openai/codex","npm install -g @openai/codex","npm","codex-cli","\u5B89\u88C5 Codex CLI \u5931\u8D25",e)}}:null,Sa=()=>process.platform==="darwin"&&q("brew")?{installer:"brew",commandSummary:"brew install --cask claude-code",manualHint:"\u8BF7\u5148\u6267\u884C `brew install --cask claude-code`\uFF0C\u7136\u540E\u8FD0\u884C `claude` \u5B8C\u6210\u767B\u5F55\u3002",run(e){let t={installer:"brew",commandSummary:"brew install --cask claude-code"},r=z("brew",["install","--cask","claude-code"],{streamOutput:e?.streamOutput,timeout:mr});return un("claude-cli",t,{ok:r.ok,changed:r.ok,detail:G(r,"\u5B89\u88C5 Claude Code CLI \u5931\u8D25")})}}:process.platform==="win32"&&q("winget")?{installer:"winget",commandSummary:"winget install Anthropic.ClaudeCode",manualHint:"\u8BF7\u5148\u6267\u884C `winget install Anthropic.ClaudeCode`\uFF0C\u7136\u540E\u8FD0\u884C `claude` \u5B8C\u6210\u767B\u5F55\u3002",run(e){let t={installer:"winget",commandSummary:"winget install Anthropic.ClaudeCode"},r=z("winget",["install","--id","Anthropic.ClaudeCode","--exact","--source","winget","--accept-package-agreements","--accept-source-agreements"],{streamOutput:e?.streamOutput,timeout:mr});return un("claude-cli",t,{ok:r.ok,changed:r.ok,detail:G(r,"\u5B89\u88C5 Claude Code CLI \u5931\u8D25")})}}:q("npm")?{installer:"npm",commandSummary:"npm install -g @anthropic-ai/claude-code",manualHint:"\u8BF7\u5148\u5B89\u88C5 Node.js/npm\uFF0C\u7136\u540E\u6267\u884C `npm install -g @anthropic-ai/claude-code`\u3002",run(e){return ka("@anthropic-ai/claude-code","npm install -g @anthropic-ai/claude-code","npm","claude-cli","\u5B89\u88C5 Claude Code CLI \u5931\u8D25",e)}}:process.platform!=="win32"&&q("bash")&&q("curl")?{installer:"install.sh",commandSummary:"curl -fsSL https://claude.ai/install.sh | bash",manualHint:"\u8BF7\u6267\u884C `curl -fsSL https://claude.ai/install.sh | bash`\uFF0C\u7136\u540E\u8FD0\u884C `claude` \u5B8C\u6210\u767B\u5F55\u3002",run(e){let t={installer:"install.sh",commandSummary:"curl -fsSL https://claude.ai/install.sh | bash"},r=z("bash",["-lc","curl -fsSL https://claude.ai/install.sh | bash"],{streamOutput:e?.streamOutput,timeout:mr});return un("claude-cli",t,{ok:r.ok,changed:r.ok,detail:G(r,"\u5B89\u88C5 Claude Code CLI \u5931\u8D25")})}}:null,Gm=()=>{let e=re("codex"),t=e?z(e,["--version"]):null,r=wa();return{id:"codex-cli",label:"Codex CLI",ok:!!(e&&t?.ok),detail:e&&t?.ok?t.stdout||e:"\u672A\u68C0\u6D4B\u5230 `codex` \u53EF\u6267\u884C\u6587\u4EF6\u3002",autoInstallable:!!r,installer:r?.installer,installCommand:r?.commandSummary,hint:r?.manualHint||"\u8BF7\u5148\u5B89\u88C5 Codex CLI\uFF0C\u5E76\u786E\u8BA4 `codex` \u5DF2\u8FDB\u5165 PATH\u3002"}},qm=async()=>{let e=re("codex");if(!e)return{id:"codex-auth",label:"Codex \u767B\u5F55",ok:!1,detail:"\u672A\u68C0\u6D4B\u5230 `codex`\uFF0C\u6682\u65F6\u65E0\u6CD5\u68C0\u67E5\u767B\u5F55\u72B6\u6001\u3002",autoInstallable:!1,hint:"\u8BF7\u5148\u5B89\u88C5 Codex CLI\uFF0C\u518D\u8FD0\u884C `codex` \u5B8C\u6210\u767B\u5F55\u3002"};let t=await new Promise(r=>{let n=Lm(e,["app-server"],{env:process.env,stdio:["pipe","pipe","pipe"]}),o="",s="",i=!1,a=0,c=-1,l=-1,d=g=>{i||(i=!0,clearTimeout(p),n.killed||n.kill("SIGTERM"),r(g))},u=g=>{n.stdin.write(`${JSON.stringify(g)}
|
package/package.json
CHANGED