open-walnut 0.6.11 → 0.6.12

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.
Files changed (35) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/cli-fast.js +4 -4
  3. package/dist/cli.js +52905 -52312
  4. package/dist/daemon-binaries/acp-daemon-core.cjs +9 -9
  5. package/dist/daemon-binaries/acp-worker.js +7 -7
  6. package/dist/daemon-binaries/acp-worker.js.version +1 -1
  7. package/dist/daemon-binaries/dtach-linux-x64 +0 -0
  8. package/dist/data/skills/walnut-rich-output/SKILL.md +2 -0
  9. package/dist/integrations/mail/index.js +2 -2
  10. package/dist/web/server.js +651 -58
  11. package/dist/web/static/assets/{OfficePreview-DBB8usOU.js → OfficePreview-BRP7aPKQ.js} +2 -2
  12. package/dist/web/static/assets/{docx-preview-DO-M-r7C.js → docx-preview-gD4iKJ2e.js} +1 -1
  13. package/dist/web/static/assets/{index-CDsfHTKk.js → index-B6JtEMq9.js} +1 -1
  14. package/dist/web/static/assets/{index-BH5SrTkh.js → index-B9wMLqkB.js} +1 -1
  15. package/dist/web/static/assets/{index-DrdLtoY7.js → index-BRHuQKnl.js} +1 -1
  16. package/dist/web/static/assets/{index-CJ8rBjS7.js → index-BVcrg2AK.js} +1 -1
  17. package/dist/web/static/assets/{index-Cf1FGt6z.js → index-CYk1zlE1.js} +1 -1
  18. package/dist/web/static/assets/{index-CwQ1J8zo.js → index-Cn8ACC-j.js} +423 -415
  19. package/dist/web/static/assets/{index-BiuGmgtx.js → index-CrRDEOok.js} +1 -1
  20. package/dist/web/static/assets/{index-CDJk2V31.js → index-D3pjiTcv.js} +1 -1
  21. package/dist/web/static/assets/{index-geB69Fz-.css → index-DEgRybbe.css} +1 -1
  22. package/dist/web/static/assets/{index-B0owO7hE.js → index-DZ_5YKaM.js} +1 -1
  23. package/dist/web/static/assets/{index-v_Hru-Ce.js → index-Dd57HhSU.js} +1 -1
  24. package/dist/web/static/assets/{index-ShZZkmTY.js → index-Din30GxM.js} +1 -1
  25. package/dist/web/static/assets/{index-Cr-efJVK.js → index-DxakwTTa.js} +1 -1
  26. package/dist/web/static/assets/{index-CCA160yl.js → index-DyOtvfYi.js} +1 -1
  27. package/dist/web/static/assets/{index-DfAlsi9y.js → index-QQY1_2Fb.js} +1 -1
  28. package/dist/web/static/assets/{index-2Y51Cotd.js → index-lCNb4QzD.js} +1 -1
  29. package/dist/web/static/assets/{index-D22ZkaJd.js → index-rSSibhKo.js} +1 -1
  30. package/dist/web/static/assets/{index-htULZnWT.js → index-tKpaCzaP.js} +1 -1
  31. package/dist/web/static/assets/{index-Cfz0y2sX.js → index-weeQuzTe.js} +1 -1
  32. package/dist/web/static/assets/{jszip.min-Cu9P_1RA.js → jszip.min-CSpmuVKF.js} +1 -1
  33. package/dist/web/static/assets/{pptx-preview.es-O80sMMc7.js → pptx-preview.es-5Knb-k-O.js} +1 -1
  34. package/dist/web/static/index.html +2 -2
  35. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
- var xe=Object.create;var{getPrototypeOf:Ee,defineProperty:ee,getOwnPropertyNames:me,getOwnPropertyDescriptor:_e}=Object,ae=Object.prototype.hasOwnProperty;function ge(r){return this[r]}var Oe,Pe,oe=(r,o,i)=>{var d=r!=null&&typeof r==="object";if(d){var m=o?Oe??=new WeakMap:Pe??=new WeakMap,y=m.get(r);if(y)return y}i=r!=null?xe(Ee(r)):{};let k=o||!r||!r.__esModule||!ae.call(r,"default")?ee(i,"default",{value:r,enumerable:!0}):i;if(r&&typeof r==="object"||typeof r==="function"){for(let A of me(r))if(!ae.call(k,A))ee(k,A,{get:ge.bind(r,A),enumerable:!0})}if(d)m.set(r,k);return k},Ne=(r)=>{var o=(fe??=new WeakMap).get(r),i;if(o)return o;if(o=ee({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function"){for(var d of me(r))if(!ae.call(o,d))ee(o,d,{get:ge.bind(r,d),enumerable:!(i=_e(r,d))||i.enumerable})}return fe.set(r,o),o},fe;var We=(r)=>r;function $e(r,o){this[r]=We.bind(null,o)}var Te=(r,o)=>{for(var i in o)ee(r,i,{get:o[i],enumerable:!0,configurable:!0,set:$e.bind(o,i)})};var nn={};Te(nn,{createAcpDaemon:()=>en});module.exports=Ne(nn);var l=oe(require("node:fs"),1),K=oe(require("node:path"),1),Ce=require("node:child_process"),Re=oe(require("node:readline"),1),Ae=require("node:string_decoder");function de(r,o){let i={...r};for(let[d,m]of Object.entries(o??{}))if(m==="")delete i[d];else i[d]=m;return i}var be=require("node:child_process"),he=oe(require("node:os"),1),Se=require("node:string_decoder"),De=15000,je=1500,Le=3000,pe=4194304,ye=50,we={gpt:"GPT",mini:"Mini",codex:"Codex"},ve=process.platform==="win32",N=(r)=>r!==null&&typeof r==="object"&&!Array.isArray(r);function Je(r){if(!r.CODEX_CONFIG)return{};let o;try{o=JSON.parse(r.CODEX_CONFIG)}catch{throw Error("CODEX_CONFIG is not valid JSON")}if(!N(o))throw Error("CODEX_CONFIG must be a JSON object");let i=(d)=>{let m=o[d];if(m===void 0||m===null)return;if(typeof m!=="string")throw Error(`CODEX_CONFIG.${d} is not a string`);return m};return{model:i("model"),effort:i("model_reasoning_effort")}}function Fe(r){let o='"';for(let i of r){let d=i.codePointAt(0);if(i==='"'||i==="\\")o+=`\\${i}`;else if(d<32||d===127)o+=`\\u${d.toString(16).toUpperCase().padStart(4,"0")}`;else if(d>=55296&&d<=57343)throw Error("cwd contains a lone surrogate");else o+=i}return`projects={ ${o}" = { trust_level = "trusted" } }`}function Ge(r){let o=(i)=>Object.hasOwn(we,i.toLowerCase())?we[i.toLowerCase()]:i;return r.split("-").map(o).join("-")}function Ke(r){return r.flatMap((o)=>o.supportedReasoningEfforts.map((i)=>({modelId:`${o.id}[${i.reasoningEffort}]`,name:`${Ge(o.displayName)} (${i.reasoningEffort})`,description:`${o.description} ${i.description}`})))}function qe(r,o,i){let d=r.find((y)=>y.id===o);if(d)return`${d.id}[${i??d.defaultReasoningEffort}]`;if(o)return`${o}[${i??"medium"}]`;let m=r.find((y)=>y.isDefault);return m?`${m.id}[${i??m.defaultReasoningEffort}]`:void 0}function Ve(r,o){let i=(h,g)=>{if(!h)throw Error(`${o}${g}`)};i(N(r)," is not an object");let d=r;for(let h of["id","displayName","description","defaultReasoningEffort"])i(typeof d[h]==="string",`.${h} is not a string`);i(typeof d.isDefault==="boolean",".isDefault is not a boolean"),i(Array.isArray(d.supportedReasoningEfforts),".supportedReasoningEfforts is not an array");let m=d.supportedReasoningEfforts.map((h,g)=>{i(N(h)&&typeof h.reasoningEffort==="string"&&typeof h.description==="string",`.supportedReasoningEfforts[${g}] needs a string reasoningEffort and description`);let{reasoningEffort:I,description:j}=h;return{reasoningEffort:I,description:j}}),{id:y,displayName:k,description:A,defaultReasoningEffort:q,isDefault:v}=d;return{id:y,displayName:k,description:A,defaultReasoningEffort:q,isDefault:v,supportedReasoningEfforts:m}}function ce(r,o){if(r==null||typeof r==="string")return r;throw Error(`${o} is not a string`)}function ze(r){if(!N(r))return"unknown rpc error";let o=typeof r.message==="string"&&r.message?r.message:"unknown rpc error";return r.code!==void 0?`${o} (code ${String(r.code)})`:o}class ke{onLine;onOverflow;decoder=new Se.StringDecoder("utf8");pending="";constructor(r,o){this.onLine=r;this.onOverflow=o}push(r){this.take(this.decoder.write(r))}end(){this.take(this.decoder.end());let r=this.pending;if(this.pending="",r)this.onLine(r)}take(r){let o=0;for(let i=r.indexOf(`
2
- `);i!==-1;i=r.indexOf(`
3
- `,o)){let d=this.pending+r.slice(o,i);if(this.pending="",o=i+1,d.length>pe)return this.onOverflow();this.onLine(d)}if(this.pending+=r.slice(o),this.pending.length>pe)this.pending="",this.onOverflow()}}function Ie(r,o={}){if(!r)return Promise.reject(Error("codex binary path is empty"));let i=o.cwd??he.default.homedir(),d=o.env??process.env,m=o.timeoutMs??De,y,k;try{y=Je(d),k=Fe(i)}catch(A){return Promise.reject(A)}return new Promise((A,q)=>{let v;try{v=be.spawn(r,["app-server","-c",k],{cwd:i,env:d,stdio:["pipe","pipe","pipe"],detached:!ve})}catch(a){return q(Error(`codex app-server spawn failed: ${a.message}`))}let h=!1,g=!1,I=0,j,V,W=new Map,T=()=>[...W.values()].map((a)=>a.method).join(", ")||"a response",M=(a)=>{let c=v.pid;if(g||c===void 0)return;try{if(ve)v.kill(a);else if(c>1)process.kill(-c,a)}catch{}},D=()=>{g=!0,clearTimeout(j),clearTimeout(V)},x=(a,c)=>{if(h)return;h=!0,clearTimeout(O);try{v.stdin.end()}catch{}if(!g)j=setTimeout(()=>{M("SIGTERM"),V=setTimeout(()=>M("SIGKILL"),Le),V.unref()},je),j.unref();if(a)q(Error(`${a.message} (stderr bytes=${I})`));else A(c)},O=setTimeout(()=>x(Error(`codex app-server did not answer ${T()} within ${Math.round(m/1000)}s`)),m);O.unref(),v.once("error",(a)=>{if(v.pid===void 0)D();x(Error(`codex app-server spawn failed: ${a.message}`))}),v.once("close",(a,c)=>{D(),x(Error(`codex app-server exited (${c?`signal ${c}`:`code ${a}`}) before answering ${T()}`))});for(let a of[v.stdin,v.stdout,v.stderr])a.on("error",()=>{});v.stderr.on("data",(a)=>{I+=a.length});let L=(a)=>{if(!h)try{v.stdin.write(`${JSON.stringify({jsonrpc:"2.0",...a})}
4
- `)}catch{}},J=1,X=(a,c,P)=>{let E=J++;W.set(E,{method:a,onResult:(B)=>{try{P(B)}catch(e){x(Error(`codex app-server ${a} returned an unexpected shape: ${e.message}`))}}}),L({id:E,method:a,params:c})},z,F,H=()=>{if(!z||!F)return;let a=y.model??z.model,c=y.effort??z.effort;x(null,{models:Ke(F),currentModelId:qe(F,a,c)})},Y=[],ne=new Set,re=0,Q=(a)=>{X("model/list",{cursor:a,limit:null},(c)=>{if(!N(c)||!Array.isArray(c.data))throw Error("result.data is not an array");let P=re++;c.data.forEach((B,e)=>Y.push(Ve(B,`page ${P} data[${e}]`)));let E=ce(c.nextCursor,"result.nextCursor");if(E){if(ne.has(E))throw Error("nextCursor repeats");if(re>=ye)throw Error(`more than ${ye} pages`);return ne.add(E),Q(E)}if(Y.length===0)throw Error("no models");F=Y,H()})},te=new ke((a)=>{if(h||!a.trim())return;let c;try{c=JSON.parse(a)}catch{return x(Error(`codex app-server wrote invalid JSON (${a.length} chars) while waiting for ${T()}`))}if(!N(c))return x(Error(`codex app-server wrote a non-object message while waiting for ${T()}`));if(typeof c.method==="string"){if(c.id!==void 0&&c.id!==null)L({id:c.id,error:{code:-32601,message:"not supported by the model probe"}});return}let P=typeof c.id==="number"?W.get(c.id):void 0;if(!P)return;if(W.delete(c.id),c.error!==void 0&&c.error!==null)return x(Error(`codex app-server ${P.method} failed: ${ze(c.error)}`));P.onResult(c.result)},()=>x(Error(`codex app-server wrote a line over ${pe} characters while waiting for ${T()}`)));v.stdout.on("data",(a)=>{if(!h)te.push(a)}),v.stdout.once("end",()=>{if(!h)te.end()}),X("initialize",{clientInfo:{name:"walnut-model-probe",version:"1"},capabilities:{experimentalApi:!0,requestAttestation:!1}},(a)=>{if(!N(a))throw Error("result is not an object");L({method:"initialized"}),X("config/read",{includeLayers:!1,cwd:i},(c)=>{if(!N(c)||!N(c.config))throw Error("result.config is not an object");z={model:ce(c.config.model,"config.model"),effort:ce(c.config.model_reasoning_effort,"config.model_reasoning_effort")},H()}),Q(null)})})}var Be=7200000,Ue=86400000,Xe=60000,He=120000,Ye=1000,Qe=750,Ze=750;function en(r){let{streamsDir:o,daemonDir:i,sendEvent:d,isWsOpen:m,log:y}=r,k=r.idleKillMs??Be,A=r.cancelRpcTimeoutMs??Ye,q=r.abortWaitMs??Qe,v=r.killGraceMs??Ze,h=r.setIntervalFn??setInterval,g=new Map,I=K.default.join(i,"acp-workers.json");V();function j(e){return K.default.join(o,e+".acp.jsonl")}function V(){for(let e of[i,o])l.default.mkdirSync(e,{recursive:!0,mode:448}),l.default.chmodSync(e,448);if(l.default.existsSync(I))l.default.chmodSync(I,384)}function W(e){if(l.default.mkdirSync(K.default.dirname(e),{recursive:!0,mode:448}),l.default.chmodSync(K.default.dirname(e),448),l.default.existsSync(e))l.default.chmodSync(e,384)}function T(){let e={};for(let[t,n]of g)if(n.state==="running"&&n.proc.pid)e[t]=n.proc.pid;try{l.default.writeFileSync(I,JSON.stringify(e),{mode:384}),l.default.chmodSync(I,384)}catch{}}function M(e,t,n,s=He){let p=e.nextRpcId++;return e.lastActivity=Date.now(),new Promise((u)=>{let f=setTimeout(()=>{e.pendingRpc.delete(p),u({id:p,ok:!1,error:{kind:"internal",message:`worker op timeout: ${t}`}})},s);e.pendingRpc.set(p,{resolve:u,timer:f});try{e.proc.stdin.write(JSON.stringify({id:p,op:t,params:n})+`
5
- `)}catch(w){clearTimeout(f),e.pendingRpc.delete(p),u({id:p,ok:!1,error:{kind:"internal",message:`worker stdin write failed: ${w.message}`}})}})}function D(e,t){if(t<=e.pushOffset)return;let n;try{let u=l.default.openSync(e.journalPath,"r");try{n=Buffer.alloc(t-e.pushOffset),l.default.readSync(u,n,0,n.length,e.pushOffset)}finally{l.default.closeSync(u)}}catch{return}let s=n.toString("utf-8"),p=e.pushOffset;for(let u of s.split(`
6
- `)){let f=p+Buffer.byteLength(u,"utf-8")+1,w=p;if(p=f,f>t)break;if(!u.trim())continue;x(e,u);for(let b of e.subscribers)if(m(b))try{d(b,"jsonl",{sid:e.sid,line:u,v:f})}catch{}}e.pushOffset=Math.min(t,p),e.lastActivity=Date.now()}function x(e,t){let n;try{n=JSON.parse(t)}catch{return}if(n.kind!=="meta"||!n.event)return;if(n.event.type==="prompt-dispatched"||n.event.type==="turn-started")e.activeCommandId=n.event.commandId??null,O();else if(n.event.type==="turn-ended"||n.event.type==="turn-interrupted")e.terminalVersion++,e.activeCommandId=null,O();else if(n.event.type==="control-prompt-accepted")e.activeControlCommandId=n.event.commandId??null,O();else if(n.event.type==="control-ended")e.terminalVersion++,e.activeControlCommandId=null,O()}function O(){let e=[...g.values()].filter((t)=>t.state==="running"&&(t.activeCommandId!==null||t.activeControlCommandId!==null)).map((t)=>t.sid);try{l.default.writeFileSync(K.default.join(i,"acp-busy.json"),JSON.stringify({busySids:e,updatedAt:Date.now()}),{mode:384})}catch{}}function L(e,t,n){let s=t.pushOffset;if(n>=s)return;let p;try{let f=l.default.openSync(t.journalPath,"r");try{p=Buffer.alloc(s-n),l.default.readSync(f,p,0,p.length,n)}finally{l.default.closeSync(f)}}catch{return}let u=n;for(let f of p.toString("utf-8").split(`
7
- `)){let w=u+Buffer.byteLength(f,"utf-8")+1;if(u=w,w>s||!f.trim())continue;if(m(e))try{d(e,"jsonl",{sid:t.sid,line:f,v:w})}catch{}}}function J(e,t){let n=g.get(e);if(!n||n.state==="dead")return;n.state="dead";for(let{timer:s,resolve:p}of n.pendingRpc.values())clearTimeout(s),p({id:-1,ok:!1,error:{kind:"internal",message:"worker died: "+t}});n.pendingRpc.clear();try{D(n,l.default.statSync(n.journalPath).size)}catch{}if(!n.stopping)Q(n.journalPath,"worker-crash");try{D(n,l.default.statSync(n.journalPath).size)}catch{}for(let s of n.subscribers)if(m(s))try{d(s,"acp_state",{sid:e,state:"dead",reason:t})}catch{}if(n.proc.pid&&n.proc.exitCode===null)a(n.proc.pid,"SIGKILL");g.delete(e),T(),O(),y("info","acp: worker reaped",{sid:e,reason:t})}async function X(e,t){let{sid:n,cwd:s,workerCmd:p,adapterCmd:u,env:f,providerSessionId:w,mcpServers:b}=t,C=g.get(n);if(C&&C.state==="running")return C.subscribers.add(e),L(e,C,t.fromOffset??0),{ok:!0,result:{alive:!0,state:(await M(C,"getState")).result,journalPath:C.journalPath}};if(!Array.isArray(p)||p.length===0)return{ok:!1,error:"acpStart: missing workerCmd"};if(!Array.isArray(u)||u.length===0)return{ok:!1,error:"acpStart: missing adapterCmd"};let Z=j(n);W(Z);let G;try{G=Ce.spawn(p[0],[...p.slice(1),"--journal",Z],{cwd:s,stdio:["pipe","pipe","pipe"],env:de(process.env,f),detached:!0}),await new Promise((_,S)=>{G.once("spawn",_),G.once("error",S)})}catch(_){return{ok:!1,error:"acpStart: worker spawn failed: "+_.message,errorKind:"adapter_spawn_failed"}}let ue=0;try{ue=l.default.statSync(Z).size}catch{}let R={sid:n,proc:G,journalPath:Z,pushOffset:ue,subscribers:new Set([e]),pendingRpc:new Map,nextRpcId:1,lastActivity:Date.now(),state:"running",stopping:!1,aborting:!1,terminalVersion:0,activeCommandId:null,activeControlCommandId:null};g.set(n,R),T(),Re.default.createInterface({input:G.stdout,terminal:!1}).on("line",(_)=>{if(!_.trim())return;let S;try{S=JSON.parse(_)}catch{return}if(S.ev==="journal"&&typeof S.offset==="number"){D(R,S.offset);return}if(S.ev==="adapter_stderr"&&typeof S.bytes==="number"){y("debug","acp worker stderr",{sid:n,bytes:S.bytes});return}if(typeof S.id==="number"){let se=R.pendingRpc.get(S.id);if(se)R.pendingRpc.delete(S.id),clearTimeout(se.timer),R.lastActivity=Date.now(),se.resolve(S)}}),G.stderr.on("data",(_)=>{y("debug","acp worker stderr",{sid:n,bytes:_.length})}),G.on("exit",(_)=>{if(y("info","acp: worker exited",{sid:n,code:_}),R.aborting)return;J(n,R.stopping?"stopped":"worker-exit")}),L(e,R,t.fromOffset??0);let ie=await M(R,"initialize",{adapterCommand:u,cwd:s,env:f});if(!ie.ok)return J(n,"initialize-failed"),{ok:!1,error:"acp initialize failed: "+(ie.error?.message??"?"),errorKind:ie.error?.kind};let U=w?await M(R,"loadSession",{providerSessionId:w,cwd:s,mcpServers:b}):await M(R,"newSession",{cwd:s,mcpServers:b});if(!U.ok){if(U.error?.kind==="load_failed")return{ok:!1,error:U.error.message,errorKind:"load_failed"};return J(n,"session-setup-failed"),{ok:!1,error:"acp session setup failed: "+(U.error?.message??"?"),errorKind:U.error?.kind}}let Me=await M(R,"getState");return{ok:!0,result:{alive:!1,session:U.result,state:Me.result,journalPath:Z}}}async function z(e,t,n){if(t==="cancel")return F(e,n);let s=g.get(e);if(!s||s.state!=="running")return{id:-1,ok:!1,error:{kind:"no_worker",message:"no live ACP worker for "+e}};return M(s,t,n)}async function F(e,t){let n=g.get(e);if(!n||n.state!=="running")return{id:-1,ok:!1,error:{kind:"no_worker",message:"no live ACP worker for "+e}};let s=n.terminalVersion,p=n.activeCommandId??void 0,u=n.activeControlCommandId??void 0,f=await M(n,"cancel",t,A);await E(()=>n.terminalVersion>s,q),n.aborting=!0,n.stopping=!0;let w=n.proc.pid,b=w?await P(w):n.proc.exitCode!==null;try{D(n,l.default.statSync(n.journalPath).size)}catch{}let C=n.terminalVersion>s;if(b&&!C){if(u)B(n.journalPath,{type:"control-ended",commandId:u,stopReason:"cancelled"});else if(p)B(n.journalPath,{type:"turn-interrupted",reason:"user-cancelled",commandId:p});if(u||p)try{D(n,l.default.statSync(n.journalPath).size)}catch{}}if(J(e,"aborted"),!b)return y("error","acp: process group survived hard abort",{sid:e,pid:w}),{id:f.id,ok:!1,error:{kind:"internal",message:`ACP process group ${w??"unknown"} remained alive after SIGKILL`}};return{id:f.id,ok:!0,result:{aborted:!0,providerClosedTurn:C,cancelAccepted:f.ok}}}async function H(e){let t=g.get(e);if(!t||t.state!=="running")return;t.stopping=!0,await M(t,"shutdown"),setTimeout(()=>{if(g.get(e)!==t||t.state!=="running")return;if(t.proc.pid&&t.proc.exitCode===null)a(t.proc.pid,"SIGKILL");J(e,"stopped")},6000)}function Y(e,t,n){let s=g.get(t);if(!s||s.state!=="running")return!1;return s.subscribers.add(e),L(e,s,n),!0}function ne(e){for(let t of g.values())t.subscribers.delete(e)}function re(e){let t=g.get(e);return!!t&&t.state==="running"}h(()=>{let e=Date.now();for(let[t,n]of g){if(n.state!=="running")continue;if(n.pendingRpc.size>0)continue;let s=n.activeCommandId!==null||n.activeControlCommandId!==null,p=s?Math.max(k,Ue):k;if(e-n.lastActivity>p)y("info","acp: idle kill",{sid:t,idleMs:e-n.lastActivity,turnOpen:s}),H(t)}O()},Xe);function Q(e,t){W(e);let n=null,s=null,p=new Set;if(le(e,(f)=>{let w;try{w=JSON.parse(f)}catch{return}if(w.kind!=="meta"||!w.event)return;let b=w.event;switch(b.type){case"prompt-dispatched":case"turn-started":n=b.commandId??n;break;case"turn-ended":case"turn-interrupted":n=null;break;case"control-prompt-accepted":s=b.commandId??null;break;case"control-ended":s=null;break;case"permission-requested":if(b.providerRequestId)p.add(b.providerRequestId);break;case"permission-answered":case"permission-auto-cancelled":if(b.providerRequestId)p.delete(b.providerRequestId);break}}),!n&&!s&&p.size===0)return;let u=[];for(let f of p)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"permission-auto-cancelled",providerRequestId:f}}));if(n)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"turn-interrupted",reason:t,commandId:n}}));if(s)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"control-ended",commandId:s,stopReason:t}}));try{l.default.appendFileSync(e,u.join(`
1
+ var Me=Object.create;var{getPrototypeOf:Ee,defineProperty:ee,getOwnPropertyNames:me,getOwnPropertyDescriptor:Oe}=Object,ae=Object.prototype.hasOwnProperty;function ge(r){return this[r]}var _e,Pe,oe=(r,o,s)=>{var d=r!=null&&typeof r==="object";if(d){var m=o?_e??=new WeakMap:Pe??=new WeakMap,y=m.get(r);if(y)return y}s=r!=null?Me(Ee(r)):{};let S=o||!r||!r.__esModule||!ae.call(r,"default")?ee(s,"default",{value:r,enumerable:!0}):s;if(r&&typeof r==="object"||typeof r==="function"){for(let A of me(r))if(!ae.call(S,A))ee(S,A,{get:ge.bind(r,A),enumerable:!0})}if(d)m.set(r,S);return S},Te=(r)=>{var o=(fe??=new WeakMap).get(r),s;if(o)return o;if(o=ee({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function"){for(var d of me(r))if(!ae.call(o,d))ee(o,d,{get:ge.bind(r,d),enumerable:!(s=Oe(r,d))||s.enumerable})}return fe.set(r,o),o},fe;var Ne=(r)=>r;function We(r,o){this[r]=Ne.bind(null,o)}var $e=(r,o)=>{for(var s in o)ee(r,s,{get:o[s],enumerable:!0,configurable:!0,set:We.bind(o,s)})};var nn={};$e(nn,{createAcpDaemon:()=>en});module.exports=Te(nn);var l=oe(require("node:fs"),1),K=oe(require("node:path"),1),Ce=require("node:child_process"),Re=oe(require("node:readline"),1),Ae=require("node:string_decoder");function de(r,o){let s={...r};for(let[d,m]of Object.entries(o??{}))if(m==="")delete s[d];else s[d]=m;return s}var be=require("node:child_process"),he=oe(require("node:os"),1),ke=require("node:string_decoder"),je=15000,De=1500,Le=3000,pe=4194304,ye=50,we={gpt:"GPT",mini:"Mini",codex:"Codex"},ve=process.platform==="win32",T=(r)=>r!==null&&typeof r==="object"&&!Array.isArray(r);function Je(r){if(!r.CODEX_CONFIG)return{};let o;try{o=JSON.parse(r.CODEX_CONFIG)}catch{throw Error("CODEX_CONFIG is not valid JSON")}if(!T(o))throw Error("CODEX_CONFIG must be a JSON object");let s=(d)=>{let m=o[d];if(m===void 0||m===null)return;if(typeof m!=="string")throw Error(`CODEX_CONFIG.${d} is not a string`);return m};return{model:s("model"),effort:s("model_reasoning_effort")}}function Fe(r){let o='"';for(let s of r){let d=s.codePointAt(0);if(s==='"'||s==="\\")o+=`\\${s}`;else if(d<32||d===127)o+=`\\u${d.toString(16).toUpperCase().padStart(4,"0")}`;else if(d>=55296&&d<=57343)throw Error("cwd contains a lone surrogate");else o+=s}return`projects={ ${o}" = { trust_level = "trusted" } }`}function Ge(r){let o=(s)=>Object.hasOwn(we,s.toLowerCase())?we[s.toLowerCase()]:s;return r.split("-").map(o).join("-")}function Ke(r){return r.flatMap((o)=>o.supportedReasoningEfforts.map((s)=>({modelId:`${o.id}[${s.reasoningEffort}]`,name:`${Ge(o.displayName)} (${s.reasoningEffort})`,description:`${o.description} ${s.description}`})))}function qe(r,o,s){let d=r.find((y)=>y.id===o);if(d)return`${d.id}[${s??d.defaultReasoningEffort}]`;if(o)return`${o}[${s??"medium"}]`;let m=r.find((y)=>y.isDefault);return m?`${m.id}[${s??m.defaultReasoningEffort}]`:void 0}function Ve(r,o){let s=(h,g)=>{if(!h)throw Error(`${o}${g}`)};s(T(r)," is not an object");let d=r;for(let h of["id","displayName","description","defaultReasoningEffort"])s(typeof d[h]==="string",`.${h} is not a string`);s(typeof d.isDefault==="boolean",".isDefault is not a boolean"),s(Array.isArray(d.supportedReasoningEfforts),".supportedReasoningEfforts is not an array");let m=d.supportedReasoningEfforts.map((h,g)=>{s(T(h)&&typeof h.reasoningEffort==="string"&&typeof h.description==="string",`.supportedReasoningEfforts[${g}] needs a string reasoningEffort and description`);let{reasoningEffort:I,description:D}=h;return{reasoningEffort:I,description:D}}),{id:y,displayName:S,description:A,defaultReasoningEffort:q,isDefault:v}=d;return{id:y,displayName:S,description:A,defaultReasoningEffort:q,isDefault:v,supportedReasoningEfforts:m}}function ce(r,o){if(r==null||typeof r==="string")return r;throw Error(`${o} is not a string`)}function ze(r){if(!T(r))return"unknown rpc error";let o=typeof r.message==="string"&&r.message?r.message:"unknown rpc error";return r.code!==void 0?`${o} (code ${String(r.code)})`:o}class Se{onLine;onOverflow;decoder=new ke.StringDecoder("utf8");pending="";constructor(r,o){this.onLine=r;this.onOverflow=o}push(r){this.take(this.decoder.write(r))}end(){this.take(this.decoder.end());let r=this.pending;if(this.pending="",r)this.onLine(r)}take(r){let o=0;for(let s=r.indexOf(`
2
+ `);s!==-1;s=r.indexOf(`
3
+ `,o)){let d=this.pending+r.slice(o,s);if(this.pending="",o=s+1,d.length>pe)return this.onOverflow();this.onLine(d)}if(this.pending+=r.slice(o),this.pending.length>pe)this.pending="",this.onOverflow()}}function Ie(r,o={}){if(!r)return Promise.reject(Error("codex binary path is empty"));let s=o.cwd??he.default.homedir(),d=o.env??process.env,m=o.timeoutMs??je,y,S;try{y=Je(d),S=Fe(s)}catch(A){return Promise.reject(A)}return new Promise((A,q)=>{let v;try{v=be.spawn(r,["app-server","-c",S],{cwd:s,env:d,stdio:["pipe","pipe","pipe"],detached:!ve})}catch(a){return q(Error(`codex app-server spawn failed: ${a.message}`))}let h=!1,g=!1,I=0,D,V,N=new Map,W=()=>[...N.values()].map((a)=>a.method).join(", ")||"a response",x=(a)=>{let c=v.pid;if(g||c===void 0)return;try{if(ve)v.kill(a);else if(c>1)process.kill(-c,a)}catch{}},j=()=>{g=!0,clearTimeout(D),clearTimeout(V)},M=(a,c)=>{if(h)return;h=!0,clearTimeout(_);try{v.stdin.end()}catch{}if(!g)D=setTimeout(()=>{x("SIGTERM"),V=setTimeout(()=>x("SIGKILL"),Le),V.unref()},De),D.unref();if(a)q(Error(`${a.message} (stderr bytes=${I})`));else A(c)},_=setTimeout(()=>M(Error(`codex app-server did not answer ${W()} within ${Math.round(m/1000)}s`)),m);_.unref(),v.once("error",(a)=>{if(v.pid===void 0)j();M(Error(`codex app-server spawn failed: ${a.message}`))}),v.once("close",(a,c)=>{j(),M(Error(`codex app-server exited (${c?`signal ${c}`:`code ${a}`}) before answering ${W()}`))});for(let a of[v.stdin,v.stdout,v.stderr])a.on("error",()=>{});v.stderr.on("data",(a)=>{I+=a.length});let L=(a)=>{if(!h)try{v.stdin.write(`${JSON.stringify({jsonrpc:"2.0",...a})}
4
+ `)}catch{}},J=1,X=(a,c,P)=>{let E=J++;N.set(E,{method:a,onResult:(B)=>{try{P(B)}catch(e){M(Error(`codex app-server ${a} returned an unexpected shape: ${e.message}`))}}}),L({id:E,method:a,params:c})},z,F,H=()=>{if(!z||!F)return;let a=y.model??z.model,c=y.effort??z.effort;M(null,{models:Ke(F),currentModelId:qe(F,a,c)})},Y=[],ne=new Set,re=0,Q=(a)=>{X("model/list",{cursor:a,limit:null},(c)=>{if(!T(c)||!Array.isArray(c.data))throw Error("result.data is not an array");let P=re++;c.data.forEach((B,e)=>Y.push(Ve(B,`page ${P} data[${e}]`)));let E=ce(c.nextCursor,"result.nextCursor");if(E){if(ne.has(E))throw Error("nextCursor repeats");if(re>=ye)throw Error(`more than ${ye} pages`);return ne.add(E),Q(E)}if(Y.length===0)throw Error("no models");F=Y,H()})},te=new Se((a)=>{if(h||!a.trim())return;let c;try{c=JSON.parse(a)}catch{return M(Error(`codex app-server wrote invalid JSON (${a.length} chars) while waiting for ${W()}`))}if(!T(c))return M(Error(`codex app-server wrote a non-object message while waiting for ${W()}`));if(typeof c.method==="string"){if(c.id!==void 0&&c.id!==null)L({id:c.id,error:{code:-32601,message:"not supported by the model probe"}});return}let P=typeof c.id==="number"?N.get(c.id):void 0;if(!P)return;if(N.delete(c.id),c.error!==void 0&&c.error!==null)return M(Error(`codex app-server ${P.method} failed: ${ze(c.error)}`));P.onResult(c.result)},()=>M(Error(`codex app-server wrote a line over ${pe} characters while waiting for ${W()}`)));v.stdout.on("data",(a)=>{if(!h)te.push(a)}),v.stdout.once("end",()=>{if(!h)te.end()}),X("initialize",{clientInfo:{name:"walnut-model-probe",version:"1"},capabilities:{experimentalApi:!0,requestAttestation:!1}},(a)=>{if(!T(a))throw Error("result is not an object");L({method:"initialized"}),X("config/read",{includeLayers:!1,cwd:s},(c)=>{if(!T(c)||!T(c.config))throw Error("result.config is not an object");z={model:ce(c.config.model,"config.model"),effort:ce(c.config.model_reasoning_effort,"config.model_reasoning_effort")},H()}),Q(null)})})}var Be=7200000,Ue=86400000,Xe=60000,He=120000,Ye=1000,Qe=750,Ze=750;function en(r){let{streamsDir:o,daemonDir:s,sendEvent:d,isWsOpen:m,log:y}=r,S=r.idleKillMs??Be,A=r.cancelRpcTimeoutMs??Ye,q=r.abortWaitMs??Qe,v=r.killGraceMs??Ze,h=r.setIntervalFn??setInterval,g=new Map,I=K.default.join(s,"acp-workers.json");V();function D(e){return K.default.join(o,e+".acp.jsonl")}function V(){for(let e of[s,o])l.default.mkdirSync(e,{recursive:!0,mode:448}),l.default.chmodSync(e,448);if(l.default.existsSync(I))l.default.chmodSync(I,384)}function N(e){if(l.default.mkdirSync(K.default.dirname(e),{recursive:!0,mode:448}),l.default.chmodSync(K.default.dirname(e),448),l.default.existsSync(e))l.default.chmodSync(e,384)}function W(){let e={};for(let[t,n]of g)if(n.state==="running"&&n.proc.pid)e[t]=n.proc.pid;try{l.default.writeFileSync(I,JSON.stringify(e),{mode:384}),l.default.chmodSync(I,384)}catch{}}function x(e,t,n,i=He){let p=e.nextRpcId++;return e.lastActivity=Date.now(),new Promise((u)=>{let f=setTimeout(()=>{e.pendingRpc.delete(p),u({id:p,ok:!1,error:{kind:"internal",message:`worker op timeout: ${t}`}})},i);e.pendingRpc.set(p,{resolve:u,timer:f});try{e.proc.stdin.write(JSON.stringify({id:p,op:t,params:n})+`
5
+ `)}catch(w){clearTimeout(f),e.pendingRpc.delete(p),u({id:p,ok:!1,error:{kind:"internal",message:`worker stdin write failed: ${w.message}`}})}})}function j(e,t){if(t<=e.pushOffset)return;let n;try{let u=l.default.openSync(e.journalPath,"r");try{n=Buffer.alloc(t-e.pushOffset),l.default.readSync(u,n,0,n.length,e.pushOffset)}finally{l.default.closeSync(u)}}catch{return}let i=n.toString("utf-8"),p=e.pushOffset;for(let u of i.split(`
6
+ `)){let f=p+Buffer.byteLength(u,"utf-8")+1,w=p;if(p=f,f>t)break;if(!u.trim())continue;M(e,u);for(let b of e.subscribers)if(m(b))try{d(b,"jsonl",{sid:e.sid,line:u,v:f})}catch{}}e.pushOffset=Math.min(t,p),e.lastActivity=Date.now()}function M(e,t){let n;try{n=JSON.parse(t)}catch{return}if(n.kind!=="meta"||!n.event)return;if(n.event.type==="prompt-dispatched"||n.event.type==="turn-started")e.activeCommandId=n.event.commandId??null,_();else if(n.event.type==="turn-ended"||n.event.type==="turn-interrupted")e.terminalVersion++,e.activeCommandId=null,_();else if(n.event.type==="control-prompt-accepted")e.activeControlCommandId=n.event.commandId??null,_();else if(n.event.type==="control-ended")e.terminalVersion++,e.activeControlCommandId=null,_()}function _(){let e=[...g.values()].filter((t)=>t.state==="running"&&(t.activeCommandId!==null||t.activeControlCommandId!==null)).map((t)=>t.sid);try{l.default.writeFileSync(K.default.join(s,"acp-busy.json"),JSON.stringify({busySids:e,updatedAt:Date.now()}),{mode:384})}catch{}}function L(e,t,n){let i=t.pushOffset;if(n>=i)return;let p;try{let f=l.default.openSync(t.journalPath,"r");try{p=Buffer.alloc(i-n),l.default.readSync(f,p,0,p.length,n)}finally{l.default.closeSync(f)}}catch{return}let u=n;for(let f of p.toString("utf-8").split(`
7
+ `)){let w=u+Buffer.byteLength(f,"utf-8")+1;if(u=w,w>i||!f.trim())continue;if(m(e))try{d(e,"jsonl",{sid:t.sid,line:f,v:w})}catch{}}}function J(e,t){let n=g.get(e);if(!n||n.state==="dead")return;n.state="dead";for(let{timer:i,resolve:p}of n.pendingRpc.values())clearTimeout(i),p({id:-1,ok:!1,error:{kind:"internal",message:"worker died: "+t}});n.pendingRpc.clear();try{j(n,l.default.statSync(n.journalPath).size)}catch{}if(!n.stopping)Q(n.journalPath,"worker-crash");try{j(n,l.default.statSync(n.journalPath).size)}catch{}for(let i of n.subscribers)if(m(i))try{d(i,"acp_state",{sid:e,state:"dead",reason:t})}catch{}if(n.proc.pid&&n.proc.exitCode===null)a(n.proc.pid,"SIGKILL");g.delete(e),W(),_(),y("info","acp: worker reaped",{sid:e,reason:t})}async function X(e,t){let{sid:n,cwd:i,workerCmd:p,adapterCmd:u,env:f,providerSessionId:w,mcpServers:b}=t,C=g.get(n);if(C&&C.state==="running")return C.subscribers.add(e),L(e,C,t.fromOffset??0),{ok:!0,result:{alive:!0,state:(await x(C,"getState")).result,journalPath:C.journalPath}};if(!Array.isArray(p)||p.length===0)return{ok:!1,error:"acpStart: missing workerCmd"};if(!Array.isArray(u)||u.length===0)return{ok:!1,error:"acpStart: missing adapterCmd"};let Z=D(n);N(Z);let G;try{G=Ce.spawn(p[0],[...p.slice(1),"--journal",Z],{cwd:i,stdio:["pipe","pipe","pipe"],env:de(process.env,f),detached:!0}),await new Promise((O,k)=>{G.once("spawn",O),G.once("error",k)})}catch(O){return{ok:!1,error:"acpStart: worker spawn failed: "+O.message,errorKind:"adapter_spawn_failed"}}let ue=0;try{ue=l.default.statSync(Z).size}catch{}let R={sid:n,proc:G,journalPath:Z,pushOffset:ue,subscribers:new Set([e]),pendingRpc:new Map,nextRpcId:1,lastActivity:Date.now(),state:"running",stopping:!1,aborting:!1,terminalVersion:0,activeCommandId:null,activeControlCommandId:null};g.set(n,R),W(),Re.default.createInterface({input:G.stdout,terminal:!1}).on("line",(O)=>{if(!O.trim())return;let k;try{k=JSON.parse(O)}catch{return}if(k.ev==="journal"&&typeof k.offset==="number"){j(R,k.offset);return}if(k.ev==="adapter_stderr"&&typeof k.bytes==="number"){y("debug","acp worker stderr",{sid:n,bytes:k.bytes});return}if(typeof k.id==="number"){let ie=R.pendingRpc.get(k.id);if(ie)R.pendingRpc.delete(k.id),clearTimeout(ie.timer),R.lastActivity=Date.now(),ie.resolve(k)}}),G.stderr.on("data",(O)=>{y("debug","acp worker stderr",{sid:n,bytes:O.length})}),G.on("exit",(O)=>{if(y("info","acp: worker exited",{sid:n,code:O}),R.aborting)return;J(n,R.stopping?"stopped":"worker-exit")}),L(e,R,t.fromOffset??0);let se=await x(R,"initialize",{adapterCommand:u,cwd:i,env:f});if(!se.ok)return J(n,"initialize-failed"),{ok:!1,error:"acp initialize failed: "+(se.error?.message??"?"),errorKind:se.error?.kind};let U=w?await x(R,"loadSession",{providerSessionId:w,cwd:i,mcpServers:b}):await x(R,"newSession",{cwd:i,mcpServers:b});if(!U.ok){if(U.error?.kind==="load_failed")return{ok:!1,error:U.error.message,errorKind:"load_failed"};return J(n,"session-setup-failed"),{ok:!1,error:"acp session setup failed: "+(U.error?.message??"?"),errorKind:U.error?.kind}}let xe=await x(R,"getState");return{ok:!0,result:{alive:!1,session:U.result,state:xe.result,journalPath:Z}}}async function z(e,t,n){if(t==="cancel")return F(e,n);let i=g.get(e);if(!i||i.state!=="running")return{id:-1,ok:!1,error:{kind:"no_worker",message:"no live ACP worker for "+e}};return x(i,t,n)}async function F(e,t){let n=g.get(e);if(!n||n.state!=="running")return{id:-1,ok:!1,error:{kind:"no_worker",message:"no live ACP worker for "+e}};let i=n.terminalVersion,p=n.activeCommandId??void 0,u=n.activeControlCommandId??void 0,f=await x(n,"cancel",t,A);await E(()=>n.terminalVersion>i,q),n.aborting=!0,n.stopping=!0;let w=n.proc.pid,b=w?await P(w):n.proc.exitCode!==null;try{j(n,l.default.statSync(n.journalPath).size)}catch{}let C=n.terminalVersion>i;if(b&&!C){if(u)B(n.journalPath,{type:"control-ended",commandId:u,stopReason:"cancelled"});else if(p)B(n.journalPath,{type:"turn-interrupted",reason:"user-cancelled",commandId:p});if(u||p)try{j(n,l.default.statSync(n.journalPath).size)}catch{}}if(J(e,"aborted"),!b)return y("error","acp: process group survived hard abort",{sid:e,pid:w}),{id:f.id,ok:!1,error:{kind:"internal",message:`ACP process group ${w??"unknown"} remained alive after SIGKILL`}};return{id:f.id,ok:!0,result:{aborted:!0,providerClosedTurn:C,cancelAccepted:f.ok}}}async function H(e){let t=g.get(e);if(!t||t.state!=="running")return;t.stopping=!0,await x(t,"shutdown"),setTimeout(()=>{if(g.get(e)!==t||t.state!=="running")return;if(t.proc.pid&&t.proc.exitCode===null)a(t.proc.pid,"SIGKILL");J(e,"stopped")},6000)}function Y(e,t,n){let i=g.get(t);if(!i||i.state!=="running")return!1;return i.subscribers.add(e),L(e,i,n),!0}function ne(e){for(let t of g.values())t.subscribers.delete(e)}function re(e){let t=g.get(e);return!!t&&t.state==="running"}h(()=>{let e=Date.now();for(let[t,n]of g){if(n.state!=="running")continue;if(n.pendingRpc.size>0)continue;let i=n.activeCommandId!==null||n.activeControlCommandId!==null,p=i?Math.max(S,Ue):S;if(e-n.lastActivity>p)y("info","acp: idle kill",{sid:t,idleMs:e-n.lastActivity,turnOpen:i}),H(t)}_()},Xe);function Q(e,t){N(e);let n=null,i=null,p=new Set;if(le(e,(f)=>{let w;try{w=JSON.parse(f)}catch{return}if(w.kind!=="meta"||!w.event)return;let b=w.event;switch(b.type){case"prompt-dispatched":case"turn-started":n=b.commandId??n;break;case"turn-ended":case"turn-interrupted":n=null;break;case"control-prompt-accepted":i=b.commandId??null;break;case"control-ended":i=null;break;case"permission-requested":if(b.providerRequestId)p.add(b.providerRequestId);break;case"permission-answered":case"permission-auto-cancelled":if(b.providerRequestId)p.delete(b.providerRequestId);break}}),!n&&!i&&p.size===0)return;let u=[];for(let f of p)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"permission-auto-cancelled",providerRequestId:f}}));if(n)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"turn-interrupted",reason:t,commandId:n}}));if(i)u.push(JSON.stringify({kind:"meta",ts:Date.now(),event:{type:"control-ended",commandId:i,stopReason:t}}));try{l.default.appendFileSync(e,u.join(`
8
8
  `)+`
9
- `),y("info","acp: journal repaired",{journalPath:e,reason:t,interruptedTurn:!!n,cancelledPermissions:p.size})}catch{}}function le(e,t){let n;try{n=l.default.openSync(e,"r");let s=Buffer.allocUnsafe(65536),p=new Ae.StringDecoder("utf8"),u="";for(;;){let f=l.default.readSync(n,s,0,s.length,null);if(f===0)break;let b=(u+p.write(s.subarray(0,f))).split(`
10
- `);u=b.pop()??"";for(let C of b)if(C.trim())t(C)}u+=p.end()}catch{return}finally{if(n!==void 0)try{l.default.closeSync(n)}catch{}}}function te(){V();try{let t=JSON.parse(l.default.readFileSync(I,"utf-8"));for(let[n,s]of Object.entries(t))if(a(s,"SIGKILL"))y("info","acp: straggler process group killed",{sid:n,pid:s})}catch{}try{l.default.writeFileSync(I,"{}",{mode:384}),l.default.chmodSync(I,384)}catch{}let e=[];try{e=l.default.readdirSync(o).filter((t)=>t.endsWith(".acp.jsonl"))}catch{}for(let t of e)Q(K.default.join(o,t),"daemon-restart")}function a(e,t){if(!Number.isInteger(e)||e<=1)return!1;try{return process.kill(-e,t),!0}catch{try{return process.kill(e,t),!0}catch{return!1}}}function c(e){try{return process.kill(-e,0),!0}catch{try{return process.kill(e,0),!0}catch{return!1}}}async function P(e){if(a(e,"SIGTERM"),await E(()=>!c(e),v))return!0;return a(e,"SIGKILL"),E(()=>!c(e),v)}async function E(e,t){let n=Date.now()+t;while(!e()&&Date.now()<n)await new Promise((s)=>setTimeout(s,20));return e()}function B(e,t){W(e),l.default.appendFileSync(e,JSON.stringify({kind:"meta",ts:Date.now(),event:t})+`
9
+ `),y("info","acp: journal repaired",{journalPath:e,reason:t,interruptedTurn:!!n,cancelledPermissions:p.size})}catch{}}function le(e,t){let n;try{n=l.default.openSync(e,"r");let i=Buffer.allocUnsafe(65536),p=new Ae.StringDecoder("utf8"),u="";for(;;){let f=l.default.readSync(n,i,0,i.length,null);if(f===0)break;let b=(u+p.write(i.subarray(0,f))).split(`
10
+ `);u=b.pop()??"";for(let C of b)if(C.trim())t(C)}u+=p.end()}catch{return}finally{if(n!==void 0)try{l.default.closeSync(n)}catch{}}}function te(){V();try{let t=JSON.parse(l.default.readFileSync(I,"utf-8"));for(let[n,i]of Object.entries(t))if(a(i,"SIGKILL"))y("info","acp: straggler process group killed",{sid:n,pid:i})}catch{}try{l.default.writeFileSync(I,"{}",{mode:384}),l.default.chmodSync(I,384)}catch{}let e=[];try{e=l.default.readdirSync(o).filter((t)=>t.endsWith(".acp.jsonl"))}catch{}for(let t of e)Q(K.default.join(o,t),"daemon-restart")}function a(e,t){if(!Number.isInteger(e)||e<=1)return!1;try{return process.kill(-e,t),!0}catch{try{return process.kill(e,t),!0}catch{return!1}}}function c(e){try{return process.kill(-e,0),!0}catch{try{return process.kill(e,0),!0}catch{return!1}}}async function P(e){if(a(e,"SIGTERM"),await E(()=>!c(e),v))return!0;return a(e,"SIGKILL"),E(()=>!c(e),v)}async function E(e,t){let n=Date.now()+t;while(!e()&&Date.now()<n)await new Promise((i)=>setTimeout(i,20));return e()}function B(e,t){N(e),l.default.appendFileSync(e,JSON.stringify({kind:"meta",ts:Date.now(),event:t})+`
11
11
  `)}return{modelCatalog:(e,t)=>Ie(e,{cwd:t.cwd,env:de(process.env,t.env)}),acpStart:X,acpOp:z,acpAbortTurn:F,acpStop:H,subscribe:Y,removeSubscriber:ne,hasWorker:re,startupRepair:te,workers:g}}