@kodax-ai/kodax 0.7.89 → 0.7.90

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 (68) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +8 -0
  3. package/README_CN.md +2 -0
  4. package/dist/chunks/{agent-AKCXT573.js → agent-W35WYLTH.js} +1 -1
  5. package/dist/chunks/argument-completer-SRCHPEMA.js +2 -0
  6. package/dist/chunks/{chunk-4Y6OSDZE.js → chunk-4KJQ7QGO.js} +1 -1
  7. package/dist/chunks/{chunk-W5RPVR3O.js → chunk-6FLHNFYV.js} +1 -1
  8. package/dist/chunks/{chunk-BOMSVUJS.js → chunk-7KPBUO2F.js} +2 -2
  9. package/dist/chunks/{chunk-SOIIBADK.js → chunk-DBFWNUGB.js} +2 -2
  10. package/dist/chunks/{chunk-IFD6TUQU.js → chunk-JNBAIFJR.js} +1 -1
  11. package/dist/chunks/{chunk-CQHLFQSU.js → chunk-KG3QIIDU.js} +2 -2
  12. package/dist/chunks/{chunk-W2LRTZBJ.js → chunk-KINDGE7G.js} +40 -40
  13. package/dist/chunks/{chunk-5UBP47VJ.js → chunk-NCK7ASJL.js} +57 -57
  14. package/dist/chunks/{chunk-72H6JNPN.js → chunk-R3BXINQ2.js} +124 -124
  15. package/dist/chunks/{chunk-S74F7MFN.js → chunk-T256QEDN.js} +1 -1
  16. package/dist/chunks/{chunk-QQBFQCMF.js → chunk-TDSTNXNR.js} +9 -9
  17. package/dist/chunks/{chunk-A63MGLH6.js → chunk-ZACJCRHT.js} +1 -1
  18. package/dist/chunks/{chunk-GL6GVYF4.js → chunk-ZDOLJSTE.js} +4 -4
  19. package/dist/chunks/{chunk-PROPMIT4.js → chunk-ZVICRZVA.js} +1 -1
  20. package/dist/chunks/{client-ZXBSEDS4.js → client-RWXK22GN.js} +1 -1
  21. package/dist/chunks/{compaction-config-HVHPJ6CS.js → compaction-config-MD2PQSAM.js} +1 -1
  22. package/dist/chunks/{construction-bootstrap-WF6KQ7XV.js → construction-bootstrap-KB6GB6IY.js} +1 -1
  23. package/dist/chunks/{dist-BCT3UNMA.js → dist-2NRXEHLI.js} +1 -1
  24. package/dist/chunks/host-JAXBBRCV.js +2 -0
  25. package/dist/chunks/{run-manager-ZOV7EKTZ.js → run-manager-EI264JTO.js} +1 -1
  26. package/dist/chunks/{utils-BEWYGEMB.js → utils-SDMYKIZG.js} +1 -1
  27. package/dist/index.d.ts +14 -14
  28. package/dist/index.js +1 -1
  29. package/dist/kodax_bootstrap.js +1 -1
  30. package/dist/kodax_cli.js +927 -927
  31. package/dist/runtime-worker.js +679 -679
  32. package/dist/sandbox-workspace-session.js +61 -61
  33. package/dist/sdk-a2a.d.ts +8 -8
  34. package/dist/sdk-a2a.js +1 -1
  35. package/dist/sdk-agent.d.ts +12 -12
  36. package/dist/sdk-agent.js +1 -1
  37. package/dist/sdk-coding.d.ts +13 -13
  38. package/dist/sdk-coding.js +1 -1
  39. package/dist/sdk-experimental-memory.d.ts +3 -3
  40. package/dist/sdk-experimental-memory.js +1 -1
  41. package/dist/sdk-mcp.js +1 -1
  42. package/dist/sdk-repl.d.ts +9 -9
  43. package/dist/sdk-repl.js +1 -1
  44. package/dist/sdk-runtime.d.ts +2 -2
  45. package/dist/sdk-runtime.js +1 -1
  46. package/dist/sdk-sandbox.js +1 -1
  47. package/dist/sdk-session.d.ts +5 -5
  48. package/dist/sdk-session.js +1 -1
  49. package/dist/sdk-skills.js +1 -1
  50. package/dist/types-chunks/{bash-prefix-extractor.d-BLlhCRI-.d.ts → bash-prefix-extractor.d-DBxWweqC.d.ts} +2 -2
  51. package/dist/types-chunks/{capsule.d-Cw4UlPTC.d.ts → capsule.d-Bc1-UYaj.d.ts} +2 -2
  52. package/dist/types-chunks/{controller.d-BvwWz6yP.d.ts → controller.d-CTvvOy_V.d.ts} +1 -1
  53. package/dist/types-chunks/{controller.d-1tydJm7c.d.ts → controller.d-CnQqfSI5.d.ts} +1 -1
  54. package/dist/types-chunks/{guardrail.d-DqWHIgt6.d.ts → guardrail.d-DqP4s46f.d.ts} +2 -2
  55. package/dist/types-chunks/{history-retrieval.d-ia-4iJpw.d.ts → history-retrieval.d-D0LNyBED.d.ts} +1 -1
  56. package/dist/types-chunks/{public-api.d-CMZa4JPa.d.ts → public-api.d-CrBB7m8F.d.ts} +4 -4
  57. package/dist/types-chunks/{repl.d-Byu2osV-.d.ts → repl.d-qijzfmA1.d.ts} +5 -5
  58. package/dist/types-chunks/{review-inbox.d-D3T-RxRs.d.ts → review-inbox.d-dAtGH3g2.d.ts} +1 -1
  59. package/dist/types-chunks/{run-manager.d-D0aKe12e.d.ts → run-manager.d-PEct-5KE.d.ts} +1 -1
  60. package/dist/types-chunks/{sdk-session-BEM7yvJB.d.ts → sdk-session-BIeiLU8G.d.ts} +2 -2
  61. package/dist/types-chunks/{shell-command-sets.d-_SHjU3KP.d.ts → shell-command-sets.d-RvEIrqHQ.d.ts} +1 -1
  62. package/dist/types-chunks/{types.d-B_IFJlti.d.ts → types.d-B9Fhknxd.d.ts} +1 -1
  63. package/dist/types-chunks/{types.d-BqK7eZ5u.d.ts → types.d-Do_AsIIs.d.ts} +2 -2
  64. package/dist/types-chunks/{types.d-DeokRBs7.d.ts → types.d-EjZTEEVu.d.ts} +2 -1
  65. package/dist/types-chunks/{utils.d-0h1NTEsX.d.ts → utils.d-BvayexqQ.d.ts} +5 -5
  66. package/package.json +1 -1
  67. package/dist/chunks/argument-completer-BJGY57H2.js +0 -2
  68. package/dist/chunks/host-V6ENYZAQ.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{$ as wo,$a as ic,Aa as qt,Ba as Ia,Ca as Ma,D as Nn,Da as Oa,E as $n,Ea as Pa,F as da,Fa as vt,G as po,Ga as Da,H as ua,Ha as Na,Ia as $a,Ja as qa,K as la,Ka,L as fa,La as Xa,M as ma,Ma as za,N as Ht,Na as jn,O as go,Oa as Ya,Pa as Ja,Qa,R as ho,Ra as Za,S as To,Sa as ec,T as vo,Ta as Bn,U as yo,Ua as Po,V as ya,Va as Do,W as ka,Wa as tc,Xa as nc,Y as ko,Ya as rc,Z as Ro,Za as No,_a as oc,a as Me,ab as sc,ba as bo,ca as Ra,da as wa,ea as Eo,f as Pr,fa as xo,h as $s,i as Dr,ja as Vt,k as Nr,l as yn,la as ba,ma as Ea,na as So,o as jt,pa as _o,ra as Co,sa as xa,ta as Sa,va as Ao,wa as _a,xa as Io,xc as ac,ya as Ca,yc as $e,z as mo,za as Aa}from"./chunk-A63MGLH6.js";import{a as Mo}from"./chunk-O2ZV775M.js";import{A as Oo,o as Fa,t as Ua,u as Wa,v as Ga,y as Ha}from"./chunk-BOMSVUJS.js";import{$b as Wt,$d as va,Ba as bn,D as Gs,F as Br,G as Fr,Gd as Be,Ha as Ut,Hd as lo,I as Ur,Ia as zr,Ka as Yr,Kb as na,La as Jr,Lb as ra,Mb as oa,Na as Qr,Oa as Zr,Od as fo,Pb as Sn,Rb as _n,S as Vs,Sa as eo,Sb as Cn,T as qs,Td as ca,V as Ks,Va as to,Vb as An,Vd as pa,W as Xs,Wb as In,Wd as ga,X as Wr,Xd as ha,Y as zs,Yb as io,Yd as Ta,Za as En,Zb as je,_a as xn,a as vn,ac as so,b as Ns,bb as no,bc as Mn,bd as co,cc as On,da as Rn,dc as Pn,eb as ro,ec as ao,fa as Gr,fb as oo,fc as ia,ga as Hr,gb as ta,ha as wn,ia as Ys,ja as Vr,ka as qr,l as $r,la as Js,ma as tt,me as La,nd as sa,o as Ls,oa as Qs,od as aa,p as Lr,q as js,s as Bs,sd as Dn,se as ja,t as Fs,td as Gt,te as Ln,u as kn,ua as Kr,ue as Ba,v as Us,va as Xr,w as Bt,wa as Zs,we as Va,x as Ws,xa as ea,xd as uo,z as jr,za as Ft,zb as Oe}from"./chunk-5UBP47VJ.js";import{h as Hs}from"./chunk-W5RPVR3O.js";import{D as Je,Pa as we,R as Ji,T as ln,ab as wr,bb as fn,cb as br,db as Er,e as Rr,fb as xr,gb as Qi,k as un,na as Qe,ua as Ze}from"./chunk-UNEC2WXJ.js";import{Aa as _r,Ab as ps,B as es,Db as gs,Eb as hs,Ga as ss,Gb as Ts,Ia as Cr,Jb as Ar,Kb as Ir,Ke as Tn,L as ts,Nb as ht,O as ns,Ob as vs,Td as ys,Xd as ks,Yd as Rs,Yf as Tt,Zf as As,ef as ws,fb as as,g as mn,ha as Sr,ib as cs,ig as Is,k as ne,l as Le,mg as Ms,nf as Mr,ng as Os,o as Lt,of as bs,pf as Es,pg as Ps,q as pn,qb as Ie,r as Zi,rf as xs,sb as ds,sf as Ss,t as et,ta as gt,tf as _s,ua as rs,uf as Cs,vb as ms,vf as Or,vg as Ds,wa as os,za as is}from"./chunk-72H6JNPN.js";import{K as fs,h as gn,j as hn,k as us,p as ls}from"./chunk-5247AKGN.js";import{a as o}from"./chunk-ONUPGMER.js";var Kt=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var $o=class extends Kt{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Lo=class extends Kt{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},jo=class extends Kt{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function zl(){return new Fn}o(zl,"createSessionControl");function Bo(e,t){let n=new AbortController,r=!1,i=o(p=>{r||(r=!0,n.abort(p))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new Fn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let a=e.session?.id,c=a!=null,d=a??Yl(),f=!c&&e.session?.autoResume!==!0&&e.session?.resume!==!0?rc({...e.session??{},id:d}):e.session,l={...e,...e.agentMode!==void 0?{agentMode:jt(e.agentMode)}:{},...f!==void 0?{session:f}:{},abortSignal:n.signal,sessionControl:s},g=$e(l,t);return{id:d,get currentProvider(){return s.getProvider()},get currentModel(){return s.getModel()},get currentReasoning(){return s.getReasoning()},get aborted(){return r},get attached(){return s.isAttached()},setProvider:o(p=>s.setProvider(p),"setProvider"),setModel:o(p=>s.setModel(p),"setModel"),setReasoning:o(p=>s.setReasoning(p),"setReasoning"),abort:o(p=>i(p),"abort"),result:g}}o(Bo,"startKodaX");function Yl(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o(Yl,"generateSessionId");var Fn=class{static{o(this,"SessionControlImpl")}mutators=null;providerValue;modelValue;reasoningValue;hasPendingProvider=!1;hasPendingModel=!1;hasPendingReasoning=!1;seed(t){this.providerValue=t.provider,this.modelValue=t.model,this.reasoningValue=t.reasoning}setProvider(t){this.providerValue=t,this.mutators?this.mutators.setProvider(t):this.hasPendingProvider=!0}setModel(t){this.modelValue=t,this.mutators?this.mutators.setModel(t):this.hasPendingModel=!0}setReasoning(t){this.reasoningValue=t,this.mutators?this.mutators.setReasoning(t):this.hasPendingReasoning=!0}getProvider(){return this.providerValue??""}getModel(){return this.modelValue}getReasoning(){return this.reasoningValue}isAttached(){return this.mutators!==null}_attach(t){this.mutators,this.mutators=t,this.hasPendingProvider&&this.providerValue!==void 0&&t.setProvider(this.providerValue),this.hasPendingModel&&t.setModel(this.modelValue),this.hasPendingReasoning&&t.setReasoning(this.reasoningValue),this.hasPendingProvider=!1,this.hasPendingModel=!1,this.hasPendingReasoning=!1}};function Jl(e,t){return e.kind!=="revise_count"?{ok:!0}:e.count<=3?{ok:!0}:{ok:!1,severity:"warn",reason:`boundedRevise: revise_count for harness="${e.harness}" reached ${e.count}, exceeding soft threshold 3`}}o(Jl,"observe");var Fo={id:"boundedRevise",description:"Per-harness revise count must stay within the soft threshold; crossings emit a warn signal for dispatch-eval (hard cap enforced by the budget controller).",observe:Jl};function Ql(e,t){return typeof e.maxBudget!="number"?{ok:!0}:e.maxBudget<=t.systemCap.maxBudget?{ok:!0}:{ok:!1,severity:"clamp",reason:`budgetCeiling: manifest.maxBudget=${e.maxBudget} exceeds systemCap.maxBudget=${t.systemCap.maxBudget}`,patch:{clampMaxBudget:t.systemCap.maxBudget}}}o(Ql,"admit");var Uo={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:Ql};function Zl(e,t){return{ok:!0}}o(Zl,"observe");var cc={id:"harnessSelectionTiming",description:"FEATURE_193 V2 no-op shell \u2014 predicate always admits since V1 Scout retired. Kept registered for admission-framework / audit-array compat.",observe:Zl};function ef(e,t){if(e.kind!=="mutation_recorded")return{ok:!0};let n=t.recorder;return typeof n.todoUpdateCount!="number"?{ok:!0}:n.todoUpdateCount>0?{ok:!0}:n.workerTrivialDeclaration===!0?{ok:!0}:{ok:!1,severity:"warn",reason:`planBeforeMutate: Worker mutated ${e.file} without a prior todo_update plan commit and without a trivial declaration`}}o(ef,"observe");var dc={id:"planBeforeMutate",description:"Worker mutations should be preceded by a todo_update plan commit (or an explicit trivial declaration). Missing plan is a warn-only signal in v0.7.36.",observe:ef};function Wo(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"spawn_agent":case"send_message":case"followup_task":case"wait_agent":case"interrupt_agent":case"list_agents":case"agent_output":case"emit_verdict":case"scaffold_tool":case"validate_tool":case"stage_construction":case"test_tool":case"activate_tool":case"scaffold_agent":case"validate_agent":case"stage_agent_construction":case"test_agent":case"activate_agent":case"worktree_create":case"worktree_remove":return"subagent";default:return"subagent"}}o(Wo,"resolveToolCapability");function tf(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(tf,"getToolName");function nf(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let a of e.tools){let c=tf(a);if(!c)continue;let d=Wo(c);n.has(d)||r.push({name:c,capability:d})}if(r.length===0)return{ok:!0};let i=r.map(a=>a.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(a=>`${a.name}=${a.capability}`).join(", ")}`,patch:{removeTools:i}}}o(nf,"admit");var Go={id:"toolPermission",description:"Every tool in manifest.tools must resolve to a capability tier that systemCap.allowedToolCapabilities permits; offending tools are clamped via removeTools.",admit:nf};var uc=[Uo,Go,Fo,cc,dc];function rf(){ss();for(let e of uc)ns(e)}o(rf,"registerCodingInvariants");var Un=class{static{o(this,"KodaXClient")}options;sessionId;messages=[];contextTokenSnapshot;constructor(t){this.options=t,this.sessionId=t.session?.id??"",this.messages=t.session?.initialMessages?[...t.session.initialMessages]:[],this.contextTokenSnapshot=t.context?.contextTokenSnapshot}async send(t){let n=this.messages.length>0?this.messages:this.options.session?.initialMessages,r=await $e({...this.options,session:{...this.options.session,id:this.sessionId||void 0,initialMessages:n},context:{...this.options.context,contextTokenSnapshot:this.contextTokenSnapshot}},t);return this.sessionId=r.sessionId,this.messages=r.messages,this.contextTokenSnapshot=r.contextTokenSnapshot,r}getSessionId(){return this.sessionId}getMessages(){return[...this.messages]}clear(){this.messages=[],this.sessionId="",this.contextTokenSnapshot=void 0}};function lc(e){return/\bworkflows?\b|工作流(?!程)|ワークフロー|워크플로우/iu.test(e)}o(lc,"hasExplicitNaturalLanguageWorkflowIntent");function Gv(e){return{action:e.source==="command"?"suggest":"none"}}o(Gv,"decideWorkflowInvocation");function Hv(e){return e.outcome==="started"||e.outcome==="cancelled"}o(Hv,"workflowStartOutcomeConsumesTurn");var of="KODAX_VERIFIER_PROVIDER",sf="KODAX_VERIFIER_MODEL";function af(e){if(Ze(e))try{return Qe(e)}catch{return}}o(af,"tryGetProvider");function Wn(e){let t=e.env??process.env,n=t[of],r=t[sf];if(n&&r){let i=af(n);if(i)return{provider:i,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}o(Wn,"resolveVerifierProvider");function Ho(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let i={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...i,criteria:n.criteria}:i}o(Ho,"resolveEffectiveVerification");function cf(e){let t=e.provider??"anthropic";if(Ze(t))try{let n=Wn({mainProvider:Qe(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}o(cf,"resolveVerifierAttribution");function Vo(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??cf(e),i={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:Ho(e),...r?{verifier:r}:{}};try{n(i)}catch{}}o(Vo,"emitEffectiveTaskConfig");var fc="kodax-review-findings",mc="kodax-investigation-shards",pc="kodax-lookup-shards",gc="kodax-child-result";var hc="kodax-budget-request";function nt(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(nt,"buildManagedStatusBudgetFields");function Xt(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(Xt,"incrementManagedBudgetUsage");function uf(e,t=200){e.totalBudget+=t}o(uf,"extendManagedWorkBudget");function Hn(e,t,n=!1){if(!e?.askUser)return!1;if(!n){let r=Math.ceil(t.totalBudget*.9);if(t.spentBudget<r)return!1}return t.lastApprovalBudgetTotal!==t.totalBudget}o(Hn,"canRequestAdditionalWorkBudget");async function qo(e,t,n){let r=e?.askUser;if(!r||!Hn(e,t,n.force))return"skipped";let i=n.additionalUnits??200,s=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),a=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=Ie(await r({question:a?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${s}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${i} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${s}%) and needs more work. Add ${i} more work units?`,allowCustomInput:!1,options:[{label:a?`\u7EE7\u7EED (+${i})`:`Continue (+${i})`,value:"continue",description:a?`\u8FFD\u52A0 ${i} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${i} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:a?"\u505C\u6B62":"Stop here",value:"stop",description:a?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${po(n.summary,80)}`:`Finish now with the current best result. Latest note: ${po(n.summary,80)}`}],default:"continue"})),d=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=d,uf(t,i),"approved"):(t.lastApprovalBudgetTotal=d,"denied")}o(qo,"maybeRequestAdditionalWorkBudget");import{readdir as pf,readFile as vc,stat as gf}from"node:fs/promises";import{execFile as hf}from"node:child_process";import{promisify as Tf}from"node:util";import yt from"node:path";import Ko from"node:path";import{mkdir as lf,unlink as ff,writeFile as mf}from"node:fs/promises";function Fe(e){return e.context?.taskSurface??"cli"}o(Fe,"getManagedTaskSurface");function Ue(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Ko.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Ko.resolve(n,".agent","managed-tasks")}o(Ue,"getManagedTaskWorkspaceRoot");async function Q(e,t,n="utf8"){await $r(e,async()=>{await lf(Ko.dirname(e),{recursive:!0}),await mf(e,t,"utf8")})}o(Q,"writeManagedTaskFile");async function Tc(e){await $r(e,async()=>{try{await ff(e)}catch(t){if(t.code!=="ENOENT")throw t}})}o(Tc,"deleteManagedTaskFile");var vf=Tf(hf),yc=3600*1e3,Vn="checkpoint.json";function Xo(e){let t=e.session?.id?.trim();return t||void 0}o(Xo,"getCheckpointSessionId");function yf(e,t){return t?e.sessionId===t:!1}o(yf,"checkpointBelongsToSession");async function qn(e){let t=yt.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await vf("git",["rev-parse","--short","HEAD"],{cwd:t,windowsHide:!0});return n.trim()||void 0}catch{return}}o(qn,"getGitHeadCommit");async function zo(e,t){await Q(yt.join(e,Vn),`${JSON.stringify(t,null,2)}
2
+ import{$ as wo,$a as ic,Aa as qt,Ba as Ia,Ca as Ma,D as Nn,Da as Oa,E as $n,Ea as Pa,F as da,Fa as vt,G as po,Ga as Da,H as ua,Ha as Na,Ia as $a,Ja as qa,K as la,Ka,L as fa,La as Xa,M as ma,Ma as za,N as Ht,Na as jn,O as go,Oa as Ya,Pa as Ja,Qa,R as ho,Ra as Za,S as To,Sa as ec,T as vo,Ta as Bn,U as yo,Ua as Po,V as ya,Va as Do,W as ka,Wa as tc,Xa as nc,Y as ko,Ya as rc,Z as Ro,Za as No,_a as oc,a as Me,ab as sc,ba as bo,ca as Ra,da as wa,ea as Eo,f as Pr,fa as xo,h as $s,i as Dr,ja as Vt,k as Nr,l as yn,la as ba,ma as Ea,na as So,o as jt,pa as _o,ra as Co,sa as xa,ta as Sa,va as Ao,wa as _a,xa as Io,xc as ac,ya as Ca,yc as $e,z as mo,za as Aa}from"./chunk-ZACJCRHT.js";import{a as Mo}from"./chunk-O2ZV775M.js";import{A as Oo,o as Fa,t as Ua,u as Wa,v as Ga,y as Ha}from"./chunk-7KPBUO2F.js";import{$b as Wt,$d as va,Ba as bn,D as Gs,F as Br,G as Fr,Gd as Be,Ha as Ut,Hd as lo,I as Ur,Ia as zr,Ka as Yr,Kb as na,La as Jr,Lb as ra,Mb as oa,Na as Qr,Oa as Zr,Od as fo,Pb as Sn,Rb as _n,S as Vs,Sa as eo,Sb as Cn,T as qs,Td as ca,V as Ks,Va as to,Vb as An,Vd as pa,W as Xs,Wb as In,Wd as ga,X as Wr,Xd as ha,Y as zs,Yb as io,Yd as Ta,Za as En,Zb as je,_a as xn,a as vn,ac as so,b as Ns,bb as no,bc as Mn,bd as co,cc as On,da as Rn,dc as Pn,eb as ro,ec as ao,fa as Gr,fb as oo,fc as ia,ga as Hr,gb as ta,ha as wn,ia as Ys,ja as Vr,ka as qr,l as $r,la as Js,ma as tt,me as La,nd as sa,o as Ls,oa as Qs,od as aa,p as Lr,q as js,s as Bs,sd as Dn,se as ja,t as Fs,td as Gt,te as Ln,u as kn,ua as Kr,ue as Ba,v as Us,va as Xr,w as Bt,wa as Zs,we as Va,x as Ws,xa as ea,xd as uo,z as jr,za as Ft,zb as Oe}from"./chunk-NCK7ASJL.js";import{h as Hs}from"./chunk-6FLHNFYV.js";import{D as Je,Pa as we,R as Ji,T as ln,ab as wr,bb as fn,cb as br,db as Er,e as Rr,fb as xr,gb as Qi,k as un,na as Qe,ua as Ze}from"./chunk-UNEC2WXJ.js";import{Aa as _r,Ab as ps,B as es,Db as gs,Eb as hs,Ga as ss,Gb as Ts,Ia as Cr,Jb as Ar,Kb as Ir,Ke as Tn,L as ts,Nb as ht,O as ns,Ob as vs,Td as ys,Xd as ks,Yd as Rs,Yf as Tt,Zf as As,ef as ws,fb as as,g as mn,ha as Sr,ib as cs,ig as Is,k as ne,l as Le,mg as Ms,nf as Mr,ng as Os,o as Lt,of as bs,pf as Es,pg as Ps,q as pn,qb as Ie,r as Zi,rf as xs,sb as ds,sf as Ss,t as et,ta as gt,tf as _s,ua as rs,uf as Cs,vb as ms,vf as Or,vg as Ds,wa as os,za as is}from"./chunk-R3BXINQ2.js";import{K as fs,h as gn,j as hn,k as us,p as ls}from"./chunk-5247AKGN.js";import{a as o}from"./chunk-ONUPGMER.js";var Kt=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var $o=class extends Kt{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Lo=class extends Kt{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},jo=class extends Kt{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function zl(){return new Fn}o(zl,"createSessionControl");function Bo(e,t){let n=new AbortController,r=!1,i=o(p=>{r||(r=!0,n.abort(p))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new Fn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let a=e.session?.id,c=a!=null,d=a??Yl(),f=!c&&e.session?.autoResume!==!0&&e.session?.resume!==!0?rc({...e.session??{},id:d}):e.session,l={...e,...e.agentMode!==void 0?{agentMode:jt(e.agentMode)}:{},...f!==void 0?{session:f}:{},abortSignal:n.signal,sessionControl:s},g=$e(l,t);return{id:d,get currentProvider(){return s.getProvider()},get currentModel(){return s.getModel()},get currentReasoning(){return s.getReasoning()},get aborted(){return r},get attached(){return s.isAttached()},setProvider:o(p=>s.setProvider(p),"setProvider"),setModel:o(p=>s.setModel(p),"setModel"),setReasoning:o(p=>s.setReasoning(p),"setReasoning"),abort:o(p=>i(p),"abort"),result:g}}o(Bo,"startKodaX");function Yl(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o(Yl,"generateSessionId");var Fn=class{static{o(this,"SessionControlImpl")}mutators=null;providerValue;modelValue;reasoningValue;hasPendingProvider=!1;hasPendingModel=!1;hasPendingReasoning=!1;seed(t){this.providerValue=t.provider,this.modelValue=t.model,this.reasoningValue=t.reasoning}setProvider(t){this.providerValue=t,this.mutators?this.mutators.setProvider(t):this.hasPendingProvider=!0}setModel(t){this.modelValue=t,this.mutators?this.mutators.setModel(t):this.hasPendingModel=!0}setReasoning(t){this.reasoningValue=t,this.mutators?this.mutators.setReasoning(t):this.hasPendingReasoning=!0}getProvider(){return this.providerValue??""}getModel(){return this.modelValue}getReasoning(){return this.reasoningValue}isAttached(){return this.mutators!==null}_attach(t){this.mutators,this.mutators=t,this.hasPendingProvider&&this.providerValue!==void 0&&t.setProvider(this.providerValue),this.hasPendingModel&&t.setModel(this.modelValue),this.hasPendingReasoning&&t.setReasoning(this.reasoningValue),this.hasPendingProvider=!1,this.hasPendingModel=!1,this.hasPendingReasoning=!1}};function Jl(e,t){return e.kind!=="revise_count"?{ok:!0}:e.count<=3?{ok:!0}:{ok:!1,severity:"warn",reason:`boundedRevise: revise_count for harness="${e.harness}" reached ${e.count}, exceeding soft threshold 3`}}o(Jl,"observe");var Fo={id:"boundedRevise",description:"Per-harness revise count must stay within the soft threshold; crossings emit a warn signal for dispatch-eval (hard cap enforced by the budget controller).",observe:Jl};function Ql(e,t){return typeof e.maxBudget!="number"?{ok:!0}:e.maxBudget<=t.systemCap.maxBudget?{ok:!0}:{ok:!1,severity:"clamp",reason:`budgetCeiling: manifest.maxBudget=${e.maxBudget} exceeds systemCap.maxBudget=${t.systemCap.maxBudget}`,patch:{clampMaxBudget:t.systemCap.maxBudget}}}o(Ql,"admit");var Uo={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:Ql};function Zl(e,t){return{ok:!0}}o(Zl,"observe");var cc={id:"harnessSelectionTiming",description:"FEATURE_193 V2 no-op shell \u2014 predicate always admits since V1 Scout retired. Kept registered for admission-framework / audit-array compat.",observe:Zl};function ef(e,t){if(e.kind!=="mutation_recorded")return{ok:!0};let n=t.recorder;return typeof n.todoUpdateCount!="number"?{ok:!0}:n.todoUpdateCount>0?{ok:!0}:n.workerTrivialDeclaration===!0?{ok:!0}:{ok:!1,severity:"warn",reason:`planBeforeMutate: Worker mutated ${e.file} without a prior todo_update plan commit and without a trivial declaration`}}o(ef,"observe");var dc={id:"planBeforeMutate",description:"Worker mutations should be preceded by a todo_update plan commit (or an explicit trivial declaration). Missing plan is a warn-only signal in v0.7.36.",observe:ef};function Wo(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"spawn_agent":case"send_message":case"followup_task":case"wait_agent":case"interrupt_agent":case"list_agents":case"agent_output":case"emit_verdict":case"scaffold_tool":case"validate_tool":case"stage_construction":case"test_tool":case"activate_tool":case"scaffold_agent":case"validate_agent":case"stage_agent_construction":case"test_agent":case"activate_agent":case"worktree_create":case"worktree_remove":return"subagent";default:return"subagent"}}o(Wo,"resolveToolCapability");function tf(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(tf,"getToolName");function nf(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let a of e.tools){let c=tf(a);if(!c)continue;let d=Wo(c);n.has(d)||r.push({name:c,capability:d})}if(r.length===0)return{ok:!0};let i=r.map(a=>a.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(a=>`${a.name}=${a.capability}`).join(", ")}`,patch:{removeTools:i}}}o(nf,"admit");var Go={id:"toolPermission",description:"Every tool in manifest.tools must resolve to a capability tier that systemCap.allowedToolCapabilities permits; offending tools are clamped via removeTools.",admit:nf};var uc=[Uo,Go,Fo,cc,dc];function rf(){ss();for(let e of uc)ns(e)}o(rf,"registerCodingInvariants");var Un=class{static{o(this,"KodaXClient")}options;sessionId;messages=[];contextTokenSnapshot;constructor(t){this.options=t,this.sessionId=t.session?.id??"",this.messages=t.session?.initialMessages?[...t.session.initialMessages]:[],this.contextTokenSnapshot=t.context?.contextTokenSnapshot}async send(t){let n=this.messages.length>0?this.messages:this.options.session?.initialMessages,r=await $e({...this.options,session:{...this.options.session,id:this.sessionId||void 0,initialMessages:n},context:{...this.options.context,contextTokenSnapshot:this.contextTokenSnapshot}},t);return this.sessionId=r.sessionId,this.messages=r.messages,this.contextTokenSnapshot=r.contextTokenSnapshot,r}getSessionId(){return this.sessionId}getMessages(){return[...this.messages]}clear(){this.messages=[],this.sessionId="",this.contextTokenSnapshot=void 0}};function lc(e){return/\bworkflows?\b|工作流(?!程)|ワークフロー|워크플로우/iu.test(e)}o(lc,"hasExplicitNaturalLanguageWorkflowIntent");function Gv(e){return{action:e.source==="command"?"suggest":"none"}}o(Gv,"decideWorkflowInvocation");function Hv(e){return e.outcome==="started"||e.outcome==="cancelled"}o(Hv,"workflowStartOutcomeConsumesTurn");var of="KODAX_VERIFIER_PROVIDER",sf="KODAX_VERIFIER_MODEL";function af(e){if(Ze(e))try{return Qe(e)}catch{return}}o(af,"tryGetProvider");function Wn(e){let t=e.env??process.env,n=t[of],r=t[sf];if(n&&r){let i=af(n);if(i)return{provider:i,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}o(Wn,"resolveVerifierProvider");function Ho(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let i={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...i,criteria:n.criteria}:i}o(Ho,"resolveEffectiveVerification");function cf(e){let t=e.provider??"anthropic";if(Ze(t))try{let n=Wn({mainProvider:Qe(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}o(cf,"resolveVerifierAttribution");function Vo(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??cf(e),i={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:Ho(e),...r?{verifier:r}:{}};try{n(i)}catch{}}o(Vo,"emitEffectiveTaskConfig");var fc="kodax-review-findings",mc="kodax-investigation-shards",pc="kodax-lookup-shards",gc="kodax-child-result";var hc="kodax-budget-request";function nt(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(nt,"buildManagedStatusBudgetFields");function Xt(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(Xt,"incrementManagedBudgetUsage");function uf(e,t=200){e.totalBudget+=t}o(uf,"extendManagedWorkBudget");function Hn(e,t,n=!1){if(!e?.askUser)return!1;if(!n){let r=Math.ceil(t.totalBudget*.9);if(t.spentBudget<r)return!1}return t.lastApprovalBudgetTotal!==t.totalBudget}o(Hn,"canRequestAdditionalWorkBudget");async function qo(e,t,n){let r=e?.askUser;if(!r||!Hn(e,t,n.force))return"skipped";let i=n.additionalUnits??200,s=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),a=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=Ie(await r({question:a?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${s}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${i} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${s}%) and needs more work. Add ${i} more work units?`,allowCustomInput:!1,options:[{label:a?`\u7EE7\u7EED (+${i})`:`Continue (+${i})`,value:"continue",description:a?`\u8FFD\u52A0 ${i} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${i} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:a?"\u505C\u6B62":"Stop here",value:"stop",description:a?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${po(n.summary,80)}`:`Finish now with the current best result. Latest note: ${po(n.summary,80)}`}],default:"continue"})),d=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=d,uf(t,i),"approved"):(t.lastApprovalBudgetTotal=d,"denied")}o(qo,"maybeRequestAdditionalWorkBudget");import{readdir as pf,readFile as vc,stat as gf}from"node:fs/promises";import{execFile as hf}from"node:child_process";import{promisify as Tf}from"node:util";import yt from"node:path";import Ko from"node:path";import{mkdir as lf,unlink as ff,writeFile as mf}from"node:fs/promises";function Fe(e){return e.context?.taskSurface??"cli"}o(Fe,"getManagedTaskSurface");function Ue(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Ko.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Ko.resolve(n,".agent","managed-tasks")}o(Ue,"getManagedTaskWorkspaceRoot");async function Q(e,t,n="utf8"){await $r(e,async()=>{await lf(Ko.dirname(e),{recursive:!0}),await mf(e,t,"utf8")})}o(Q,"writeManagedTaskFile");async function Tc(e){await $r(e,async()=>{try{await ff(e)}catch(t){if(t.code!=="ENOENT")throw t}})}o(Tc,"deleteManagedTaskFile");var vf=Tf(hf),yc=3600*1e3,Vn="checkpoint.json";function Xo(e){let t=e.session?.id?.trim();return t||void 0}o(Xo,"getCheckpointSessionId");function yf(e,t){return t?e.sessionId===t:!1}o(yf,"checkpointBelongsToSession");async function qn(e){let t=yt.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await vf("git",["rev-parse","--short","HEAD"],{cwd:t,windowsHide:!0});return n.trim()||void 0}catch{return}}o(qn,"getGitHeadCommit");async function zo(e,t){await Q(yt.join(e,Vn),`${JSON.stringify(t,null,2)}
3
3
  `,"utf8")}o(zo,"writeCheckpoint");async function rt(e){await Tc(yt.join(e,Vn))}o(rt,"deleteCheckpoint");async function Yo(e){let t=e.context?.gitRoot,n=Fe(e),r=Ue(e,n),i;try{i=await pf(r)}catch{return}let s=await qn(t),a=Xo(e),c=Date.now();for(let d of i){let u=yt.join(r,d),f=yt.join(u,Vn);try{let l=await gf(f);if(!l.isFile())continue;let g=await vc(f,"utf8"),p=JSON.parse(g);if(!p||typeof p!="object")continue;let m=p;if(m.version!==1||typeof m.taskId!="string"||typeof m.createdAt!="string"||typeof m.gitCommit!="string"||typeof m.harnessProfile!="string"||m.sessionId!==void 0&&typeof m.sessionId!="string")continue;if(m.processId!==void 0||m.pid!==void 0){let M=m.processId??m.pid;if(typeof M!="number"||!Number.isFinite(M))continue}let v=m.processId??m.pid,h={version:1,taskId:m.taskId,...typeof m.sessionId=="string"&&m.sessionId.trim()?{sessionId:m.sessionId}:{},...typeof v=="number"&&Number.isFinite(v)?{processId:v}:{},createdAt:m.createdAt,gitCommit:m.gitCommit,objective:typeof m.objective=="string"?m.objective:"",harnessProfile:m.harnessProfile,currentRound:typeof m.currentRound=="number"?m.currentRound:1,completedWorkerIds:Array.isArray(m.completedWorkerIds)?m.completedWorkerIds.filter(M=>typeof M=="string"):[],scoutCompleted:m.scoutCompleted===!0},y=new Date(h.createdAt).getTime();if(Number.isNaN(y))continue;let w=c-l.mtimeMs;if(w>yc||w<0){await rt(u);continue}if(!yf(h,a))continue;if(s&&h.gitCommit&&h.gitCommit!==s){await rt(u);continue}let k=yt.join(u,"managed-task.json"),x=await vc(k,"utf8"),S=JSON.parse(x);if(!S||typeof S!="object")continue;let _=S;if(!_.contract?.taskId||!_.evidence?.workspaceDir)continue;return{checkpoint:h,workspaceDir:u,managedTask:_}}catch{continue}}}o(Yo,"findValidCheckpoint");import j from"node:path";function Jo(e){let t=e?.runtime;return t?`${["# Runtime Execution Guide","","Use this guide to drive live verification against the runtime under test.","",t.cwd?`- Working directory: ${t.cwd}`:void 0,t.startupCommand?`- Startup command: ${t.startupCommand}`:void 0,t.readySignal?`- Ready signal: ${t.readySignal}`:void 0,t.baseUrl?`- Base URL: ${t.baseUrl}`:void 0,t.env&&Object.keys(t.env).length>0?`- Environment keys: ${Object.keys(t.env).join(", ")}`:void 0,"","Execution protocol:",t.startupCommand?"1. Start or confirm the runtime using the declared startup command before accepting the task.":"1. Confirm the target runtime is available before accepting the task.",t.readySignal||t.baseUrl?"2. Wait until the runtime is ready, using the ready signal or base URL when available.":"2. Confirm runtime readiness using the strongest observable signal you have.",t.uiFlows?.length?["3. Execute the declared UI flows:",...t.uiFlows.map((r,i)=>` ${i+1}. ${r}`)].join(`
4
4
  `):"3. Execute the critical user-facing flow when browser verification is required.",t.apiChecks?.length?["4. Run the declared API checks:",...t.apiChecks.map((r,i)=>` ${i+1}. ${r}`)].join(`
5
5
  `):void 0,t.dbChecks?.length?["5. Run the declared DB checks:",...t.dbChecks.map((r,i)=>` ${i+1}. ${r}`)].join(`
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{k as xn}from"./chunk-5UBP47VJ.js";import{Ia as X,Wa as ir,Ya as ar,_a as Te,db as _e,fb as bn,ib as vn,t as T,zc as se}from"./chunk-72H6JNPN.js";import{a as s}from"./chunk-ONUPGMER.js";import{spawn as hr,spawnSync as Xe}from"node:child_process";import{createHash as un,randomUUID as H}from"node:crypto";import{once as dr}from"node:events";import{constants as rt,existsSync as br,lstatSync as vr,mkdirSync as cr,readFileSync as xr,readdirSync as jn,realpathSync as ce,renameSync as $n,rmSync as Be,statSync as fn,writeFileSync as lr,writeSync as Ro}from"node:fs";import{copyFile as kr,lstat as tt,mkdir as K,readFile as he,realpath as Fe,rename as ot,rm as G,rmdir as st,stat as nn,writeFile as be}from"node:fs/promises";import{createRequire as it}from"node:module";import{createServer as at}from"node:net";import te from"node:os";import i from"node:path";import dt from"node:readline";import{fileURLToPath as ur,pathToFileURL as Ar}from"node:url";var ae="0.0.65",{DEFAULT_WINDOWS_PROXY_PORT_RANGE:ct,SandboxManager:kn,getSrtWinPath:lt,getWindowsSandboxUserStatus:Mn,grantWindowsAcl:ut,installWindowsSandbox:ft,resolveSrtWin:pt,revokeWindowsAcl:Er}=await import("@anthropic-ai/sandbox-runtime");function wt(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:3,asrtVersion:ae,platform:process.platform,backend:e,genericCommandExecution:!0,controls:["filesystem","network","environment","timeout","output"],ordinaryCallsTriggerSetup:!1,setupMayElevate:process.platform==="win32",unavailableBehavior:"structured-no-execution",permissionFallback:"normal-permission-policy"}}s(wt,"sandboxRuntimeCapability");var qn=1048576,Kn=12e4,Xn=it(import.meta.url),Rr=process.env.KODAX_BUNDLED==="true"?void 0:Ar(Xn.resolve("@anthropic-ai/sandbox-runtime")).href,mt=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),gt=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),yt=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",i.join(".cargo","credentials.toml"),i.join(".config","gcloud"),i.join(".config","gh"),i.join(".config","openai"),i.join(".config","anthropic"),".gitconfig",i.join(".config","git","config"),".terraformrc",i.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",i.join(".config","fish","config.fish"),i.join(".config","fish","fish_variables"),".bash_history",".zsh_history",i.join(".m2","settings.xml"),i.join(".m2","settings-security.xml"),i.join(".gradle","gradle.properties"),i.join(".nuget","NuGet","NuGet.Config"),i.join(".pip","pip.conf"),i.join(".config","pip","pip.conf"),i.join(".cache","huggingface","token"),i.join(".huggingface","token"),i.join(".config","rclone","rclone.conf"),i.join(".local","share","keyrings"),i.join("Library","Keychains"),i.join("AppData","Roaming","Microsoft","Protect"),i.join("AppData","Roaming","Microsoft","Credentials"),i.join("AppData","Roaming","Microsoft","Vault"),i.join("AppData","Local","Microsoft","Credentials"),i.join("AppData","Local","Microsoft","Protect"),i.join("AppData","Local","Microsoft","Vault"),".password-store",".env",".envrc",".pgpass",".env.local",".env.development",".env.production",".env.test",".env.staging",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json","id_rsa","id_dsa","id_ecdsa","id_ed25519"],St=["runtime","mcp-tokens","mcp-clients","integrations","sandbox-runtime","processes","learned","config.json","auth.json","trusted-project-rules.json",".env",".envrc",".pgpass",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json"],Gn=["runtime","processes","learned"],ht=String.raw`
2
+ import{k as xn}from"./chunk-NCK7ASJL.js";import{Ia as X,Wa as ir,Ya as ar,_a as Te,db as _e,fb as bn,ib as vn,t as $,zc as se}from"./chunk-R3BXINQ2.js";import{a as s}from"./chunk-ONUPGMER.js";import{spawn as hr,spawnSync as Xe}from"node:child_process";import{createHash as un,randomUUID as H}from"node:crypto";import{once as dr}from"node:events";import{constants as tt,existsSync as br,lstatSync as vr,mkdirSync as cr,readFileSync as xr,readdirSync as Mn,realpathSync as ce,renameSync as $n,rmSync as Be,statSync as fn,writeFileSync as lr,writeSync as $o}from"node:fs";import{copyFile as kr,lstat as ot,mkdir as K,readFile as be,realpath as Fe,rename as st,rm as G,rmdir as it,stat as nn,writeFile as ve}from"node:fs/promises";import{createRequire as at}from"node:module";import{createServer as dt}from"node:net";import te from"node:os";import i from"node:path";import ct from"node:readline";import{fileURLToPath as ur,pathToFileURL as Ar}from"node:url";var ae="0.0.65",{DEFAULT_WINDOWS_PROXY_PORT_RANGE:lt,SandboxManager:kn,getSrtWinPath:ut,getWindowsSandboxUserStatus:jn,grantWindowsAcl:ft,installWindowsSandbox:pt,resolveSrtWin:wt,revokeWindowsAcl:Er}=await import("@anthropic-ai/sandbox-runtime");function mt(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:3,asrtVersion:ae,platform:process.platform,backend:e,genericCommandExecution:!0,controls:["filesystem","network","environment","timeout","output"],ordinaryCallsTriggerSetup:!1,setupMayElevate:process.platform==="win32",unavailableBehavior:"structured-no-execution",permissionFallback:"normal-permission-policy"}}s(mt,"sandboxRuntimeCapability");var qn=1048576,Kn=12e4,Xn=at(import.meta.url),Rr=process.env.KODAX_BUNDLED==="true"?void 0:Ar(Xn.resolve("@anthropic-ai/sandbox-runtime")).href,gt=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),yt=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),St=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",i.join(".cargo","credentials.toml"),i.join(".config","gcloud"),i.join(".config","gh"),i.join(".config","openai"),i.join(".config","anthropic"),".gitconfig",i.join(".config","git","config"),".terraformrc",i.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",i.join(".config","fish","config.fish"),i.join(".config","fish","fish_variables"),".bash_history",".zsh_history",i.join(".m2","settings.xml"),i.join(".m2","settings-security.xml"),i.join(".gradle","gradle.properties"),i.join(".nuget","NuGet","NuGet.Config"),i.join(".pip","pip.conf"),i.join(".config","pip","pip.conf"),i.join(".cache","huggingface","token"),i.join(".huggingface","token"),i.join(".config","rclone","rclone.conf"),i.join(".local","share","keyrings"),i.join("Library","Keychains"),i.join("AppData","Roaming","Microsoft","Protect"),i.join("AppData","Roaming","Microsoft","Credentials"),i.join("AppData","Roaming","Microsoft","Vault"),i.join("AppData","Local","Microsoft","Credentials"),i.join("AppData","Local","Microsoft","Protect"),i.join("AppData","Local","Microsoft","Vault"),".password-store",".env",".envrc",".pgpass",".env.local",".env.development",".env.production",".env.test",".env.staging",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json","id_rsa","id_dsa","id_ecdsa","id_ed25519"],ht=["runtime","mcp-tokens","mcp-clients","integrations","sandbox-runtime","processes","learned","config.json","auth.json","trusted-project-rules.json",".env",".envrc",".pgpass",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json"],Gn=["runtime","processes","learned"],bt=String.raw`
3
3
  $ErrorActionPreference = 'Stop'
4
4
  $payload = [Console]::In.ReadToEnd() | ConvertFrom-Json
5
5
  $mutex = [System.Threading.Mutex]::new($false, 'Local\KodaXAsrtAclGuard-v1')
@@ -189,7 +189,7 @@ try {
189
189
  }
190
190
  $mutex.Dispose()
191
191
  }
192
- `,Wn=new Set,Pr=new Set,fr=JSON.stringify(ar),An=JSON.stringify(ir),bt=String.raw`
192
+ `,Wn=new Set,Pr=new Set,fr=JSON.stringify(ar),An=JSON.stringify(ir),vt=String.raw`
193
193
  const { spawn } = require('node:child_process');
194
194
  const { writeSync } = require('node:fs');
195
195
  const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
@@ -220,7 +220,7 @@ child.once('error', (error) => {
220
220
  child.once('exit', (code, signal) => {
221
221
  process.exitCode = signal ? 1 : code ?? 1;
222
222
  });
223
- `,vt="eval(Buffer.from(process.argv[1],'base64').toString('utf8'))",xt=JSON.stringify(vt),kt=Buffer.from(bt,"utf8").toString("base64"),At=JSON.stringify(kt),Cr=String.raw`
223
+ `,xt="eval(Buffer.from(process.argv[1],'base64').toString('utf8'))",kt=JSON.stringify(xt),At=Buffer.from(vt,"utf8").toString("base64"),Et=JSON.stringify(At),Cr=String.raw`
224
224
  import { spawn } from 'node:child_process';
225
225
  import { randomUUID } from 'node:crypto';
226
226
  import { readFile, rm, writeFile } from 'node:fs/promises';
@@ -435,8 +435,8 @@ try {
435
435
  const command = [
436
436
  quote(bootstrap),
437
437
  '-e',
438
- quote(${xt}),
439
- ${At},
438
+ quote(${kt}),
439
+ ${Et},
440
440
  Buffer.from(JSON.stringify({
441
441
  command: request.command,
442
442
  args: childArgs,
@@ -510,10 +510,10 @@ try {
510
510
  process.exitCode = 1;
511
511
  }
512
512
  }
513
- `,me,He=0,Et=3e4,Oe,je,Tn=!1,ie;function de(e){return e instanceof Error?e.message:String(e)}s(de,"errorText");function Me(e,...n){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&n.includes(e.code)}s(Me,"isFileSystemError");async function pr(e){try{return await he(e)}catch(n){if(Me(n,"ENOENT"))return;throw n}}s(pr,"readFileIfPresent");async function Rt(e,n){let r=await pr(n);if(r?.equals(e))return;if(r!==void 0)throw new Error(`Prepared Windows sandbox runner failed integrity verification: ${n}.`);let t=`${n}.${process.pid}.${H()}.tmp`;try{await be(t,e,{flag:"wx",mode:448});try{await ot(t,n)}catch(o){if(!(await pr(n))?.equals(e))throw o}}finally{await G(t,{force:!0})}}s(Rt,"installWindowsRunnerCopy");async function _n(){if(Oe===void 0){let e=(async()=>{let n=await he(lt()),r=un("sha256").update(n).digest("hex").slice(0,16),t=i.join(i.resolve(X()),"sandbox-runtime","runner",ae,process.arch,r),o=i.join(t,"srt-win.exe");await K(mn(),{recursive:!0,mode:448}),await K(t,{recursive:!0,mode:448}),await Rt(n,o);let a={path:o,directory:t,srtWin:pt({path:o})};return je=a,a})();Oe=e,e.catch(()=>{Oe===e&&(Oe=void 0,je=void 0)})}return Oe}s(_n,"prepareWindowsSandboxRunner");function ke(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(je===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return je}s(ke,"requirePreparedWindowsRunner");var O=new Set,q=new Map,En,ve=35e3,le="[acl_cleanup_unconfirmed]",Q=class extends Error{static{s(this,"WindowsSandboxAclAdmissionError")}constructor(n,r){super(n,r),this.name="WindowsSandboxAclAdmissionError"}};function pn(e){return e.diagnostics.some(n=>n.startsWith(le))}s(pn,"doctorHasWindowsSandboxAclCleanupBlock");function wn(){let e=Object.entries(process.env).find(([n,r])=>n.toUpperCase()==="PROGRAMDATA"&&r!==void 0)?.[1]??"C:\\ProgramData";return i.join(i.resolve(e),"KodaX","sandbox-runtime","acl-poison")}s(wn,"windowsSandboxAclPoisonDirectory");function mn(){return i.dirname(wn())}s(mn,"windowsSandboxAclCoordinationDirectory");function Jn(){return i.join(i.resolve(X()),"sandbox-runtime","acl-poison")}s(Jn,"legacyWindowsSandboxAclPoisonDirectory");function Pt(){return i.join(mn(),"acl-poison-staging")}s(Pt,"windowsSandboxAclPoisonStagingDirectory");function Ct(){return i.join(i.resolve(X()),"sandbox-runtime","acl-poison-staging")}s(Ct,"legacyWindowsSandboxAclPoisonStagingDirectory");function xe(){return i.join(mn(),"acl-recovery.lock")}s(xe,"windowsSandboxAclRecoveryLockFile");function $r(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let r=n;if(r.version!==1&&r.version!==2||r.state!==void 0&&r.state!=="active"&&r.state!=="unconfirmed"||r.policyKey!==void 0&&typeof r.policyKey!="string"||r.holderPid!==void 0&&(typeof r.holderPid!="number"||!Number.isSafeInteger(r.holderPid)||r.holderPid<=0)||r.holderProcessStartIdentity!==void 0&&typeof r.holderProcessStartIdentity!="string"||r.pid!==void 0&&(typeof r.pid!="number"||!Number.isSafeInteger(r.pid)||r.pid<=0)||r.processStartIdentity!==void 0&&typeof r.processStartIdentity!="string"||r.windowsBootIdentity!==void 0&&typeof r.windowsBootIdentity!="string")throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:r.version,...r.state==="active"||r.state==="unconfirmed"?{state:r.state}:{},...typeof r.policyKey=="string"?{policyKey:r.policyKey}:{},...typeof r.holderPid=="number"?{holderPid:r.holderPid}:{},...typeof r.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:r.holderProcessStartIdentity}:{},...typeof r.pid=="number"?{pid:r.pid}:{},...typeof r.processStartIdentity=="string"?{processStartIdentity:r.processStartIdentity}:{},...typeof r.windowsBootIdentity=="string"?{windowsBootIdentity:r.windowsBootIdentity}:{}}}s($r,"parseWindowsSandboxAclPoisonOwner");function Ge(){return[...new Set([wn(),Jn()])].flatMap(n=>{let r;try{r=jn(n)}catch(t){if(Me(t,"ENOENT"))return[];throw t}return r.filter(t=>t.endsWith(".json")).map(t=>{let o=i.join(n,t);try{let a=$r(xr(o,"utf8"));return{file:o,owner:i.basename(o).startsWith("unconfirmed-")?{...a,state:"unconfirmed"}:a}}catch(a){throw new Q(`Windows sandbox ACL cleanup was not confirmed because its poison marker is unreadable: ${o}. `+On(),{cause:a})}})})}s(Ge,"readWindowsSandboxAclPoisonOwners");function Ae(){if(process.platform!=="win32")return;if(En!==void 0)return En??void 0;let e=String.raw`
513
+ `,ge,He=0,Rt=3e4,Oe,Me,Tn=!1,ie;function de(e){return e instanceof Error?e.message:String(e)}s(de,"errorText");function je(e,...n){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&n.includes(e.code)}s(je,"isFileSystemError");async function pr(e){try{return await be(e)}catch(n){if(je(n,"ENOENT"))return;throw n}}s(pr,"readFileIfPresent");async function Pt(e,n){let r=await pr(n);if(r?.equals(e))return;if(r!==void 0)throw new Error(`Prepared Windows sandbox runner failed integrity verification: ${n}.`);let t=`${n}.${process.pid}.${H()}.tmp`;try{await ve(t,e,{flag:"wx",mode:448});try{await st(t,n)}catch(o){if(!(await pr(n))?.equals(e))throw o}}finally{await G(t,{force:!0})}}s(Pt,"installWindowsRunnerCopy");async function _n(){if(Oe===void 0){let e=(async()=>{let n=await be(ut()),r=un("sha256").update(n).digest("hex").slice(0,16),t=i.join(i.resolve(X()),"sandbox-runtime","runner",ae,process.arch,r),o=i.join(t,"srt-win.exe");await K(mn(),{recursive:!0,mode:448}),await K(t,{recursive:!0,mode:448}),await Pt(n,o);let a={path:o,directory:t,srtWin:wt({path:o})};return Me=a,a})();Oe=e,e.catch(()=>{Oe===e&&(Oe=void 0,Me=void 0)})}return Oe}s(_n,"prepareWindowsSandboxRunner");function Ae(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(Me===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return Me}s(Ae,"requirePreparedWindowsRunner");var O=new Set,q=new Map,En,xe=35e3,le="[acl_cleanup_unconfirmed]",Z=class extends Error{static{s(this,"WindowsSandboxAclAdmissionError")}constructor(n,r){super(n,r),this.name="WindowsSandboxAclAdmissionError"}};function pn(e){return e.diagnostics.some(n=>n.startsWith(le))}s(pn,"doctorHasWindowsSandboxAclCleanupBlock");function wn(){let e=Object.entries(process.env).find(([n,r])=>n.toUpperCase()==="PROGRAMDATA"&&r!==void 0)?.[1]??"C:\\ProgramData";return i.join(i.resolve(e),"KodaX","sandbox-runtime","acl-poison")}s(wn,"windowsSandboxAclPoisonDirectory");function mn(){return i.dirname(wn())}s(mn,"windowsSandboxAclCoordinationDirectory");function Jn(){return i.join(i.resolve(X()),"sandbox-runtime","acl-poison")}s(Jn,"legacyWindowsSandboxAclPoisonDirectory");function Ct(){return i.join(mn(),"acl-poison-staging")}s(Ct,"windowsSandboxAclPoisonStagingDirectory");function $t(){return i.join(i.resolve(X()),"sandbox-runtime","acl-poison-staging")}s($t,"legacyWindowsSandboxAclPoisonStagingDirectory");function ke(){return i.join(mn(),"acl-recovery.lock")}s(ke,"windowsSandboxAclRecoveryLockFile");function $r(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let r=n;if(r.version!==1&&r.version!==2||r.state!==void 0&&r.state!=="active"&&r.state!=="unconfirmed"||r.policyKey!==void 0&&typeof r.policyKey!="string"||r.holderPid!==void 0&&(typeof r.holderPid!="number"||!Number.isSafeInteger(r.holderPid)||r.holderPid<=0)||r.holderProcessStartIdentity!==void 0&&typeof r.holderProcessStartIdentity!="string"||r.pid!==void 0&&(typeof r.pid!="number"||!Number.isSafeInteger(r.pid)||r.pid<=0)||r.processStartIdentity!==void 0&&typeof r.processStartIdentity!="string"||r.windowsBootIdentity!==void 0&&typeof r.windowsBootIdentity!="string")throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:r.version,...r.state==="active"||r.state==="unconfirmed"?{state:r.state}:{},...typeof r.policyKey=="string"?{policyKey:r.policyKey}:{},...typeof r.holderPid=="number"?{holderPid:r.holderPid}:{},...typeof r.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:r.holderProcessStartIdentity}:{},...typeof r.pid=="number"?{pid:r.pid}:{},...typeof r.processStartIdentity=="string"?{processStartIdentity:r.processStartIdentity}:{},...typeof r.windowsBootIdentity=="string"?{windowsBootIdentity:r.windowsBootIdentity}:{}}}s($r,"parseWindowsSandboxAclPoisonOwner");function Ge(){return[...new Set([wn(),Jn()])].flatMap(n=>{let r;try{r=Mn(n)}catch(t){if(je(t,"ENOENT"))return[];throw t}return r.filter(t=>t.endsWith(".json")).map(t=>{let o=i.join(n,t);try{let a=$r(xr(o,"utf8"));return{file:o,owner:i.basename(o).startsWith("unconfirmed-")?{...a,state:"unconfirmed"}:a}}catch(a){throw new Z(`Windows sandbox ACL cleanup was not confirmed because its poison marker is unreadable: ${o}. `+On(),{cause:a})}})})}s(Ge,"readWindowsSandboxAclPoisonOwners");function Ee(){if(process.platform!=="win32")return;if(En!==void 0)return En??void 0;let e=String.raw`
514
514
  # KodaXWindowsBootIdentity-v1
515
515
  $boot = (Get-CimInstance Win32_OperatingSystem -ErrorAction Stop).LastBootUpTime
516
516
  [Console]::Out.Write($boot.ToUniversalTime().Ticks.ToString([Globalization.CultureInfo]::InvariantCulture))
517
- `,n=Xe(Gr(),["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),r=n.status===0?n.stdout.trim():"",t=/^\d+$/.test(r)?`windows-boot-${r}`:void 0;return En=t??null,t}s(Ae,"readWindowsBootIdentity");function On(){return`After stopping every KodaX and KodaX Space process, run "${je?.path??"srt-win.exe"}" acl recover --force --json, then delete "${wn()}" and "${Jn()}".`}s(On,"windowsSandboxAclManualRecoveryInstruction");function Wr(e,n=Ae()){if(e.find(({windowsBootIdentity:a})=>a===void 0||n===void 0)!==void 0)return new Q("An unconfirmed Windows sandbox process tree has no verifiable Windows boot identity. "+On());let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Q(`An unconfirmed Windows sandbox process tree${o} from the same Windows boot may still have live descendants; restart Windows before retrying. `+On())}s(Wr,"persistentWindowsSandboxAclPoisonError");function Nn(e,n,r="unconfirmed",t){if(process.platform!=="win32")return;let o=Ae(),a=_e(process.pid),c=H(),d=`${r==="unconfirmed"?"unconfirmed-":""}owner-${c}.json`,l=JSON.stringify({version:1,state:r,...t===void 0?{}:{policyKey:t},holderPid:process.pid,...a===void 0?{}:{holderProcessStartIdentity:a},...e===void 0?{}:{pid:e},...n===void 0?{}:{processStartIdentity:n},...o===void 0?{}:{windowsBootIdentity:o}}),u=s((f,p)=>{cr(f,{recursive:!0,mode:448});let w=i.join(f,d);if(r==="unconfirmed")return lr(w,l,{flag:"wx",mode:384}),w;cr(p,{recursive:!0,mode:448});let h=i.join(p,`owner-${c}.tmp`);return lr(h,l,{flag:"wx",mode:384}),$n(h,w),w},"persist"),g=u(wn(),Pt());try{let f=u(Jn(),Ct());q.set(g,f)}catch(f){if(r==="active")try{Be(g,{force:!0})}catch(p){throw new AggregateError([f,p],"Windows sandbox owner compatibility marker and primary rollback both failed.")}throw f}return g}s(Nn,"persistWindowsSandboxAclPoisonOwner");function $t(e){let n=Nn(void 0,void 0,"active",e);if(n!==void 0){O.add(n);let r=q.get(n);r!==void 0&&O.add(r)}return n}s($t,"createWindowsSandboxAclOwnerMarker");function Ne(e){if(e===void 0)return;let n=q.get(e);try{n!==void 0&&Be(n,{force:!0}),Be(e,{force:!0}),O.delete(e),n!==void 0&&O.delete(n),q.delete(e)}catch(r){throw O.delete(e),n!==void 0&&O.delete(n),ue(r),new Error("Windows sandbox owner poison marker could not be cleared.",{cause:r})}}s(Ne,"confirmWindowsSandboxAclOwnerStopped");async function ze(e,n){ue(n);let r=await Un(e,void 0,void 0,n);if(ue(r),r!==n)throw r}s(ze,"retainWindowsSandboxAclOwnerPoison");function Tr(e,n,r){if(e===void 0)return Nn(n,r,"unconfirmed");let t=q.get(e),o=i.join(i.dirname(e),`unconfirmed-${i.basename(e)}`),a=t===void 0?void 0:i.join(i.dirname(t),`unconfirmed-${i.basename(t)}`);if(br(o))return O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o;try{return $n(e,o),t!==void 0&&a!==void 0&&$n(t,a),O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o}catch(c){try{let d=Nn(n,r,"unconfirmed");return O.delete(e),t!==void 0&&O.delete(t),q.delete(e),d}catch(d){throw O.delete(e),t!==void 0&&O.delete(t),q.delete(e),new AggregateError([c,d],"Windows sandbox ACL poison write-ahead failed.")}}}s(Tr,"writeAheadWindowsSandboxAclOwnerPoison");async function Un(e,n,r,t){if(process.platform!=="win32")return t;let o;try{return o=Tr(e,n,r),await se(xe(),async()=>{},ve),t}catch(a){return new AggregateError([t,a],o===void 0?"Windows sandbox owner termination and durable ACL poison recording both failed.":"Windows sandbox owner termination was not confirmed and ACL poison serialization failed.")}}s(Un,"transitionWindowsSandboxAclOwnerToPoison");function Wt(e,n){return O.has(e)}s(Wt,"isVerifiedActiveWindowsSandboxAclOwner");function Vn(e){if(e.state!=="active"||e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=_e(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return Me(r,"ESRCH")?"stale":"unknown"}}s(Vn,"windowsSandboxAclOwnerLiveness");function Hn(e,n,r){return n.state!=="active"?!1:O.has(e)?r===void 0||n.policyKey===r:r!==void 0&&n.policyKey===r&&Vn(n)==="live"}s(Hn,"isCompatibleWindowsSandboxAclOwner");function zn(e){let n=Ge().filter(({file:r,owner:t})=>!Hn(r,t,e));if(n.length!==0)throw Wr(n.map(({owner:r})=>r))}s(zn,"assertNoPersistentWindowsSandboxAclPoison");async function _r(e,n,r,t){let o=new Error(r);if(process.platform==="win32"){let a=await Un(t,e,n,o);return ue(a),a instanceof Error?a:o}return ue(o),o}s(_r,"recordUnconfirmedWindowsSandboxOwner");function Or(e){return process.platform==="win32"?`${e} process-tree termination was not confirmed; restart Windows before retrying.`:`${e} process-tree termination was not confirmed; stop the retained process tree before retrying.`}s(Or,"unconfirmedSandboxProcessTreeMessage");function rn(){let e=ke(),n=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"acl","recover","--json"],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),r=(n.stderr??"").trim();if(n.error)throw new Error(`Windows sandbox ACL recovery failed to start: ${n.error.message}`,{cause:n.error});let t;try{t=JSON.parse((n.stdout??"").trim())}catch(a){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(n.status)}): ${r||"(empty stderr)"}.`,{cause:a})}let o=typeof t=="object"&&t!==null?t:void 0;if(n.status!==0||typeof o?.deadBrokers!="number"||!Number.isSafeInteger(o.deadBrokers)||o.deadBrokers<0||typeof o.acesRevoked!="number"||!Number.isSafeInteger(o.acesRevoked)||o.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(n.status)}${n.signal?`, signal ${n.signal}`:""}): ${r||"(empty stderr)"}.`);Tn=!0}s(rn,"recoverWindowsSandboxAcls");function Tt(e){return e instanceof Error&&e.message.startsWith("learning store lock timed out:")}s(Tt,"isWindowsSandboxAclRecoveryLockTimeout");var tn=class extends Q{static{s(this,"ForeignWindowsSandboxAclOwnerContentionError")}constructor(n){super("Another Windows sandbox owner is active for the shared sandbox account; wait for it to close or stop the other KodaX/KodaX Space process, then retry.",{cause:n}),this.name="ForeignWindowsSandboxAclOwnerContentionError"}},on=class extends Q{static{s(this,"StaleWindowsSandboxAclOwnerContentionError")}constructor(n){super(n.message,{cause:n}),this.name="StaleWindowsSandboxAclOwnerContentionError"}};function Nr(e){!Tt(e)&&!(e instanceof tn)&&!(e instanceof on)&&ue(e)}s(Nr,"recordWindowsSandboxAclAdmissionFailure");function qe(e,n=Ae()){let r=Wr(e.map(({owner:t})=>t),n);return e.every(({owner:t})=>t.state==="active")?e.some(({owner:t})=>Vn(t)==="stale")?new on(r):new tn(r):r}s(qe,"windowsSandboxAclPoisonSnapshotError");function _t(){let e=Ge();if(e.length===0)return;let n=Ae();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){rn();for(let t of e)Be(t.file,{force:!0});zn();return}return e.every(({owner:t})=>Vn(t)!=="stale")?new Q("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; wait for sandboxed commands to finish and stop other KodaX or KodaX Space processes, then retry."):qe(e,n)}s(_t,"windowsSandboxAclSetupBlockWithLock");function wr(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(le)),`${le} ${n.message}`]}}s(wr,"withWindowsSandboxAclSetupBlock");function Ir(e){yn();let n=Ge(),r=n.filter(({file:t,owner:o})=>!Hn(t,o,e));if(Tn){if(r.length>0)throw qe(r);return}if(r.length>0){let t=Ae();if(!(t!==void 0&&r.every(({owner:a})=>a.windowsBootIdentity!==void 0&&a.windowsBootIdentity!==t)))throw qe(r,t)}if(n.length>0){Tn=!0;return}rn();for(let t of r)Be(t.file,{force:!0});zn(e)}s(Ir,"ensureWindowsSandboxAclRecoveryWithLock");async function sn(e){if(process.platform==="win32")try{await se(xe(),async()=>Ir(e),ve)}catch(n){throw Nr(n),n}}s(sn,"ensureWindowsSandboxAclRecovery");async function Lr(e){if(process.platform!=="win32")return;let n;try{return await se(xe(),async()=>{try{Ir(e)}catch(r){throw Nr(r),r}return n=$t(e),n},ve)}catch(r){if(n===void 0)throw r;try{Ne(n)}catch(t){throw new AggregateError([r,t],"Windows sandbox owner admission and marker cleanup both failed.")}throw r}}s(Lr,"admitWindowsSandboxAclOwner");async function In(e){if(process.platform!=="win32")return;let n;try{if(e===void 0||!O.has(e))return;if(n=$r(xr(e,"utf8")).policyKey,n!==void 0){await se(xe(),async()=>{let t=q.get(e),o=new Set([e,t].filter(d=>d!==void 0)),a=Ge().filter(({file:d})=>!o.has(d)),c=a.filter(({file:d,owner:l})=>!Hn(d,l,n));if(c.length>0)throw qe(c);if(a.length>0){Ne(e);return}rn(),Ne(e)},ve);return}let r=Tr(e,void 0,void 0);await se(xe(),async()=>{rn(),Ne(r),e!==r&&Ne(e)},ve)}catch(r){let t=n===void 0?r:await Un(e,void 0,void 0,r);throw ue(t),t}}s(In,"confirmWindowsSandboxAclRecovery");function Rn(){ie!==void 0&&(Er({sandboxUserSid:ie.sandboxUserSid,holderPid:process.pid,srtWin:ie.runner.srtWin}),ie=void 0)}s(Rn,"releasePreparedWindowsRunnerGrant");function Ot(e,n){if(!(ie?.runner.path===e.path&&ie.sandboxUserSid===n)){process.removeListener("exit",Rn),Rn();try{ut({read:[e.directory,e.path],write:[],sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(r){try{Er({sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(t){throw new AggregateError([r,t],"Windows sandbox runner ACL grant failed and its partial grant could not be revoked.")}throw r}ie={runner:e,sandboxUserSid:n},process.once("exit",Rn)}}s(Ot,"retainPreparedWindowsRunnerGrant");async function Nt(){let[e,n]=ct;for(let r=0;r<5;r+=1){let t=at();t.listen(0,"127.0.0.1"),await dr(t,"listening");let o=t.address();if(typeof o=="object"&&o!==null&&(o.port<e||o.port>n))return{server:t,target:`127.0.0.1:${o.port}`};let a=dr(t,"close");t.close(),await a}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`)}s(Nt,"bindWindowsWfpProbe");function mr(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}s(mr,"windowsRunnerFailureCode");function It(e){return Me(e,"ETIMEDOUT")?"wfp_probe_timeout":Me(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}s(It,"windowsRunnerSpawnFailureCode");async function Lt(e){let{server:n,target:r}=await Nt();try{let t=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${It(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let a;try{a=JSON.parse((t.stdout??"").trim())}catch{let c=t.status===null?"wfp_probe_timeout":mr(o);throw new Error(`[${c}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(a.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||a.egress_probe!=="blocked")throw new Error(`[${mr(o)}] Windows sandbox WFP probe to ${String(a.target??r)} was ${String(a.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}s(Lt,"verifyPreparedWindowsWfp");function Dr(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}s(Dr,"windowsSandboxAccountDiagnostics");function Dt(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}s(Dt,"parseBrokerObservation");function gn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}s(gn,"sandboxJavaScriptCommand");async function Z(e={}){if(e.refresh||me===void 0||Date.now()>=He){let n=Bt();me=n,He=Number.POSITIVE_INFINITY,n.then(r=>{me===n&&(He=r.ready?Number.POSITIVE_INFINITY:Date.now()+Et)},()=>{me===n&&(me=void 0,He=0)})}return me}s(Z,"doctorSandboxRuntime");async function Bt(){let e=[],n=!1;kn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:kn.checkDependencies();e.push(...r.warnings,...r.errors);let t=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let d=JSON.parse(await he(Xn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));d.version!==ae&&(t=!0,e.push(`ASRT package version mismatch: expected ${ae}, found ${String(d.version)}.`))}catch(d){t=!0,e.push(`ASRT package provenance check failed: ${de(d)}`)}let o=gn(),a=Te({args:["--version"],env:Ee(),isElectron:o===process.execPath&&process.versions.electron!==void 0}),c=Xe(o,a.args,{env:a.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(c.status!==0){t=!0;let d=c.error?.message??(c.stderr.trim()||o);e.push(`JavaScript Skill interpreter is unavailable: ${d}.`)}if(process.platform==="win32"){try{let d=await _n(),l=Mn({srtWin:d.srtWin}),u=Dr(l);if(u.length>0||!l.sid)t=!0,e.push(...u);else{Ot(d,l.sid);let g=Xr(an(),l.sid,l.groupSid,!1,"read");g.length>0&&(t=!0,e.push(`[acl_guards_missing] ${g.length} persistent Windows sandbox ACL guard(s) are missing. Run "kodax sandbox setup" once to install them outside the startup path.`)),await Lt(d)}}catch(d){t=!0,e.push(de(d))}try{let d=Ge().filter(({file:l,owner:u})=>!Wt(l,u));if(d.length>0){let l=Ae();l!==void 0&&d.every(({owner:g})=>g.windowsBootIdentity!==void 0&&g.windowsBootIdentity!==l)||(n=!0,e.push(`${le} `+qe(d,l).message))}}catch(d){n=!0,e.push(`${le} ${de(d)}`)}}return{ready:kn.isSupportedPlatform()&&!t&&!n,platform:process.platform,version:ae,diagnostics:e,setupRequired:t}}s(Bt,"inspectSandboxRuntime");async function Ft(){let e=await Z({refresh:!0});try{let t=_t();if(t!==void 0)return wr(e,t)}catch(t){let o=t instanceof Error?t:new Error(String(t));return wr(e,o)}if(e.ready||pn(e)||!e.setupRequired)return e;let n=!1;try{let t=await _n(),o=Mn({srtWin:t.srtWin});n=Dr(o).length===0&&o.sid!==void 0}catch{n=!1}if(n){Dn(an(),"read");let t=await Z({refresh:!0});if(t.ready)return t}if(ft().cancelled)throw new Error("Sandbox setup was cancelled.");return await _n(),Dn(an(),"read"),Z({refresh:!0})}s(Ft,"setupWindowsSandboxRuntimeWithLock");async function jt(){return process.platform!=="win32"?Z({refresh:!0}):se(xe(),Ft,ve)}s(jt,"setupSandboxRuntime");function ge(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(le));return n!==void 0?[n.slice(le.length).trim()]:['Run "kodax sandbox setup". Windows will show a UAC prompt for the one-time sandbox account and network policy setup.',"The terminal itself does not need to be started as Administrator; approve the UAC prompt when it appears."]}return e.platform==="darwin"?['KodaX uses macOS Seatbelt through sandbox-exec. Install the missing dependency, then rerun "kodax sandbox doctor".',"Homebrew: brew install ripgrep"]:e.platform==="linux"?['KodaX uses bubblewrap on Linux. Install bubblewrap, socat, and ripgrep, then rerun "kodax sandbox doctor".',"Debian/Ubuntu: sudo apt install bubblewrap socat ripgrep","Fedora/RHEL: sudo dnf install bubblewrap socat ripgrep","Arch Linux: sudo pacman -S bubblewrap socat ripgrep"]:[`KodaX sandbox is not supported on ${e.platform}.`]}s(ge,"sandboxSetupGuidance");async function Mo(e={}){let n=await Z({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:ge(n)};if(pn(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};try{let r=await jt();return{status:r.ready?"ready":"unavailable",attempted:!0,doctor:r,guidance:ge(r)}}catch(r){let t=await Z({refresh:!0}),o=de(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:ge(t),error:o}}}s(Mo,"prepareSandboxRuntimeForSetup");function re(e,n){let r=e.replaceAll("\\","/").replace(/^\.\//,"");if(!r||i.posix.isAbsolute(r)||r.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return r}s(re,"canonicalRelative");function _(e,n){let r=i.relative(e,n);return r===""||!r.startsWith("..")&&!i.isAbsolute(r)}s(_,"isInside");function Br(e){let n=e.split(i.sep).map(r=>r.toLowerCase());return n.some(r=>mt.has(r))||n.some(r=>gt.has(r)||r.startsWith(".env."))}s(Br,"isSensitiveRelative");async function Mt(e,n){await K(n,{recursive:!0,mode:448});let r=[...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))];await be(i.join(n,"SKILL.md"),await he(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of r){let a=re(o.relativePath,`Skill ${e.name} support file`),c=i.join(n,t,...a.split("/"));await K(i.dirname(c),{recursive:!0,mode:448}),await be(c,await he(o.path),{mode:384})}}s(Mt,"copySkillSnapshot");async function qt(e,n){let r=new Map;for(let[t,o]of Object.entries(e.admissions)){let a=await e.registry.loadFull(t),c=new Map((a.scripts??[]).map(l=>[`scripts/${re(l.relativePath,`Skill ${t} script`)}`,l])),d=i.join(n,t.replace(/[^A-Za-z0-9._-]/g,"_"));await Mt(a,d);for(let l of o){let u=re(l,`toolPolicy.skillScripts.${t}`);if(!c.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);r.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:i.join(d,...u.split("/"))})}}return r}s(qt,"snapshotAdmissions");function Kt(e){return e.mode==="deny"?[]:e.origins.map(n=>{let r=new URL(n);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(Kt,"networkEndpoints");function Ee(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return Yn(n)}s(Ee,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}s(Yn,"normalizedSandboxEnvironment");function Fr(e,n){return Yn({...e,...n})}s(Fr,"mergeSandboxEnvironment");function Xt(e){let n=i.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(n))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(n===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(n===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(n===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(n)&&process.platform==="win32")return{command:process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${n||"<none>"}.`)}s(Xt,"interpreterFor");var gr=250,Gt=1500;async function Jt(e,n,r=Kn,t=qn,o){let a=[],c=[],d=e.pid===void 0?void 0:_e(e.pid),l=0,u,g=s(()=>{},"reportStopRequested"),f,p,w=new Promise(y=>{g=y}),h=s(y=>{if(u!==void 0)return;u=y,g();let A=!1,E,L;f=new Promise((R,F)=>{E=R,L=F}),f.catch(()=>{});let P=s(async R=>{let F=await _r(e.pid,d,Or("Sandbox broker"),o);return R===void 0?F:new AggregateError([F,R],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),z=s(R=>{A||(A=!0,p!==void 0&&clearTimeout(p),R===void 0?E():L(R))},"finish");p=setTimeout(()=>{try{e.kill("SIGKILL"),P().then(z)}catch(R){P(R).then(z)}},Gt),vn(e,{expectedProcessStartIdentity:d,forceMs:gr,taskkillMs:gr}).then(async R=>z(R.status==="unknown"?await P():void 0),async R=>z(await P(R)))},"requestStop"),k=s((y,A)=>{l+=A.byteLength,l>t?h(new Error(`Sandboxed command output exceeded ${t} bytes.`)):y.push(A)},"append");e.stdout?.on("data",y=>{k(a,y)}),e.stderr?.on("data",y=>{k(c,y)});let b=setTimeout(()=>{h(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),v=s(()=>{let y=n?.reason;h(y instanceof Error?y:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",v,{once:!0}),n?.aborted&&v();try{let y=new Promise((E,L)=>{e.once("error",L),e.once("close",P=>E(P??1))}),A=await Promise.race([y,w.then(()=>1)]);if(u!==void 0)throw await f,u;return{exitCode:A,stdout:Buffer.concat(a).toString("utf8"),stderr:Buffer.concat(c).toString("utf8")}}finally{clearTimeout(b),p!==void 0&&clearTimeout(p),n?.removeEventListener("abort",v)}}s(Jt,"collectProcess");async function jr(e,n,r=Kn,t=qn){let o=process.platform==="win32"?await hn():te.tmpdir(),a=i.join(o,`kodax-asrt-${process.pid}-${H()}.json`),c=process.platform==="win32"?nr(e.config):{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,a]}},d={...e,bootstrapCommand:e.bootstrapCommand??gn(),config:c};await be(a,JSON.stringify(d),{mode:384});let l,u,g;try{if(process.platform==="win32"){await rr(),g=await xn();let h=await tr(!0);if(h.length===1)throw h[0];if(h.length>1)throw new AggregateError(h,"Cached workspace sandbox reset was not confirmed before standalone execution.")}let f=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",a]:["--input-type=module","-e",Cr,Rr,a],p=Te({args:f,env:Ee(),isElectron:process.versions.electron!==void 0});u=await Lr();let w=hr(process.execPath,p.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:p.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0,detached:process.platform!=="win32"});return bn(w),await Jt(w,n,r,t,u)}catch(f){throw l=f,f}finally{let f=[];try{await G(a,{force:!0})}catch(p){f.push(p)}try{await In(u)}catch(p){f.push(p)}if(g!==void 0)try{await g()}catch(p){f.push(p)}if(f.length>0)throw l!==void 0&&f.unshift(l),f.length===1?f[0]:new AggregateError(f,"Sandbox broker cleanup was not confirmed.")}}s(jr,"runBrokerResult");async function Ut(e,n){let r=await jr(e,n);if(r.exitCode!==0){let t=r.stderr.trim()||r.stdout.trim();throw new Error(`Sandboxed Skill script failed (${r.exitCode}): ${t}`)}return r.stdout}s(Ut,"runBroker");async function Vt(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script input")),o=await Fe(t);if(!_(r,o)||Br(i.relative(r,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await nn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}s(Vt,"workspaceSource");async function Ht(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script output target"));if(!_(i.resolve(e),t)||Br(i.relative(i.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await K(i.dirname(t),{recursive:!0}),!_(r,await Fe(i.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await nn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}s(Ht,"workspaceTarget");async function zt(e,n,r,t){if(r.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of r.inputs){let a=await Vt(e,o.path),c=re(o.as??i.basename(a),"Skill script staged input"),d=i.resolve(n,"inputs",...c.split("/"));if(!_(i.join(n,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await K(i.dirname(d),{recursive:!0,mode:448}),await kr(a,d)}}s(zt,"stageInputFiles");async function Yt(e,n,r,t,o){if(r.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let c of r.outputs){let d=re(c.path,"Skill script staged output"),l=i.resolve(n,"outputs",...d.split("/")),u=await Fe(l);if(!_(i.join(n,"outputs"),u)||(await tt(l)).isSymbolicLink()||!(await nn(l)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let g=await Ht(e,c.target);if(o!==void 0&&Mr(e,!0)+(await nn(l)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await kr(l,g,rt.COPYFILE_EXCL),a.push(i.relative(e,g))}return a}s(Yt,"promoteOutputs");function Mr(e,n=!1){let r=0;for(let t of jn(e,{withFileTypes:!0})){if(n&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=i.join(e,t.name);t.isDirectory()?r+=Mr(o):t.isFile()&&(r+=fn(o).size)}return r}s(Mr,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let n=ke();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:[...new Set([...e.filesystem.allowRead,n.directory])],denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}s(Zn,"withPreparedWindowsRunner");function Zt(e,n,r,t){let o=te.homedir(),a=process.platform==="win32"?an():[o],c=s(d=>i.isAbsolute(d)?process.platform==="win32"?[d,i.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:a,allowRead:[e,n,...new Set([...c(process.execPath),...c(t)])],allowWrite:[e],denyWrite:a}})}s(Zt,"sandboxConfig");function Qt(){let e=[te.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&i.isAbsolute(n)).map(n=>i.resolve(n)))]}s(Qt,"canonicalTempDirectories");function qr(e){return[i.join(e,".git","config"),i.join(e,".git","hooks")].filter(r=>{try{return fn(r),!0}catch{return!1}})}s(qr,"existingWorkspaceDenyWrites");function Qn(e,n,r){let t=yt.map(a=>i.resolve(e,a)).filter(a=>i.relative(a,n)!==""),o=process.platform==="win32"?[i.resolve(n),mn()]:[i.resolve(r),...St.map(a=>i.resolve(n,a))];return[...new Set([...o,...t])]}s(Qn,"workspaceShellSensitiveReadDenies");function er(e){let n=[...new Set(e.map(t=>i.resolve(t)))].filter(t=>fn(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>_(o,t))||r.push(t);return r}s(er,"existingMinimalWindowsAclGuardRoots");function Kr(e){return i.resolve(e).toLowerCase()}s(Kr,"windowsAclGuardKey");function Ln(e,n){let r=Kr(e),t=n==="read"?Wn:new Set([...Wn,...Pr]);for(let o of t)if(r===o||r.startsWith(o.endsWith(i.sep)?o:`${o}${i.sep}`))return!0;return!1}s(Ln,"windowsAclGuardCovers");function an(){let e=i.resolve(te.homedir()),n=i.resolve(X());return er(Qn(e,n,i.join(n,"sandbox-runtime")))}s(an,"windowsPersistentAclGuardRoots");function Xr(e,n,r,t,o){let a=er(e);if(a.length===0)return[];let c=JSON.stringify({sid:n,tokenSids:[n,r,"S-1-1-0","S-1-5-11","S-1-5-32-545"].filter(g=>g!==void 0),install:t,paths:a.map(g=>({path:g,directory:fn(g).isDirectory(),mode:o}))}),d=Gr(),l=Xe(d,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(ht,"utf16le").toString("base64")],{input:c,encoding:"utf8",timeout:t&&o==="read"?15*6e4:t?15e3:5e3,windowsHide:!0});if(l.error||l.status!==0){let g=(l.error?.message||l.stderr||l.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${g}`)}let u;try{let g=JSON.parse(l.stdout.trim());u=Array.isArray(g.missing)?g.missing.filter(f=>typeof f=="string"):[]}catch(g){throw new Error(`Windows sandbox ACL guard returned invalid output: ${de(g)}`)}if(u.length===0){let g=o==="read"?Wn:Pr;for(let f of a)g.add(Kr(f))}return u}s(Xr,"runWindowsAclGuard");function Gr(){let e=process.env.ProgramFiles??"C:\\Program Files",n=i.join(e,"PowerShell","7","pwsh.exe");return br(n)?n:i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}s(Gr,"windowsAclPowerShellExecutable");function Dn(e,n){if(process.platform!=="win32"||e.length===0)return;let r=e.filter(c=>!Ln(c,n));if(r.length===0)return;let t=ke(),o=Mn({srtWin:t.srtWin});if(!o.sid)throw new Error("Windows sandbox account SID is unavailable for ACL guards.");if(Xr(r,o.sid,o.groupSid,!0,n).length>0)throw new Error("Windows sandbox ACL guards were not installed completely.")}s(Dn,"installWindowsAclGuards");function nr(e){return process.platform!=="win32"?e:{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead.filter(n=>!Ln(n,"read")),denyWrite:e.filesystem.denyWrite?.filter(n=>!Ln(n,"write"))}}}s(nr,"withoutWindowsAsrtDenyPropagation");function eo(e,n){let r;try{r=ce.native(n)}catch{return[]}let t=[];for(let o of e){let a;try{a=ce.native(o)}catch{continue}if(!_(a,r))t.push(o);else if(a!==r){let c=i.relative(a,r).split(i.sep),d=a;try{for(let l of c){for(let u of jn(d,{withFileTypes:!0}))u.name!==l&&t.push(i.join(d,u.name));d=i.join(d,l)}}catch{}}}return process.platform!=="win32"&&t.push(n),[...new Set(t)]}s(eo,"workspaceShellWriteRoots");function no(e,n){let r=process.platform==="win32"?n:i.resolve(e);return i.join(te.tmpdir(),"kodax-sandbox",un("sha256").update(r).digest("hex").slice(0,16))}s(no,"workspaceShellTempRoot");function ro(e,n){return i.join(no(e,n),`${process.pid}-${H()}`)}s(ro,"createWorkspaceShellTempDirectory");async function Pn(e){await G(e,{recursive:!0,force:!0}),await st(i.dirname(e)).catch(n=>{if(n.code!=="ENOENT"&&n.code!=="ENOTEMPTY")throw n})}s(Pn,"removeWorkspaceShellTempDirectory");function to(e){return process.platform==="win32"?e===void 0?[]:[i.dirname(e)]:Qt()}s(to,"workspaceShellTempWriteRoots");function oo(e,n,r){try{let t=ce.native(n),o=i.resolve(n),a=i.resolve(e);if(!_(o,a)||a===o)return;for(;a!==o;)try{let c=ce.native(a);if(c===t||!_(t,c))return;let d=i.relative(t,c).split(i.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||r&&Gn.some(l=>l===d)?void 0:c}catch(c){if(!r||c.code!=="ENOENT")return;try{vr(a);return}catch(l){if(l.code!=="ENOENT")return}let d=i.dirname(a);if(d===a)return;a=d}return}catch{return}}s(oo,"windowsAgentHomeAccessRoot");function Jr(e,n){if(!n)return{read:[],write:[]};let r=s((t,o)=>[...new Set(t.flatMap(a=>{let c=oo(a,e,o);return c?[c]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}s(Jr,"windowsAgentHomeAccessRoots");function Ke(e){return e??(process.platform==="win32"?process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}s(Ke,"workspaceShellExecutable");function so(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}s(so,"shellEnvironmentValue");function io(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:i.join(n,"Programs"),n,process.env.APPDATA,i.join(e,"AppData","Local","Programs"),i.join(e,"AppData","Local"),i.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[i.resolve(t)]))].filter(t=>_(e,t)).sort((t,o)=>o.length-t.length)}s(io,"workspaceShellUserDataBoundaries");function ao(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!vr(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&_(d,n));if(t===void 0)return[];let[o]=i.relative(t,n).split(i.sep);if(!o)return[];let a=i.join(t,o),c=[];for(let d=i.dirname(n);d.toLowerCase()!==a.toLowerCase()&&_(a,d);d=i.dirname(d))c.push(d);return c}s(ao,"workspaceShellLinkedTargetAncestors");function dn(e,n){let r=i.resolve(te.homedir()),t=i.resolve(X()),o=Qn(r,t,i.join(t,"sandbox-runtime")),a=io(r),c=new Map,d=s(f=>{let p=i.resolve(f);if(!(p===i.parse(p).root||p.toLowerCase()===r.toLowerCase()||_(t,p)||_(p,t)||o.some(w=>_(w,p))))return p},"safe"),l=s((f,p)=>{let w=d(f);if(w===void 0)return;let h;try{h=ce(w)}catch{return}if(d(h)===void 0)return;let k=p?[w,h].filter(b=>_(r,b)):[w,h];for(let b of k)c.set(process.platform==="win32"?b.toLowerCase():b,b);if(p&&k.includes(h))for(let b of ao(w,h,a)){let v=d(b);v!==void 0&&_(r,v)&&c.set(v.toLowerCase(),v)}},"remember");for(let f of(so(e,"PATH")??"").split(i.delimiter)){let p=f.trim().replace(/^"(.*)"$/,"$1");p&&i.isAbsolute(p)&&l(p,!0)}let u=Ke(n);i.isAbsolute(u)&&l(i.dirname(u),!0);let g=gn();if(i.isAbsolute(g)){let f=d(g);f!==void 0&&c.set(process.platform==="win32"?f.toLowerCase():f,f),l(i.dirname(g),!1)}return[...c.values()].sort((f,p)=>f.toLowerCase().localeCompare(p.toLowerCase()))}s(dn,"workspaceShellRuntimeReadScopes");function Ur(e,n,r,t,o=dn(process.env,Ke())){let a=i.resolve(X()),c=i.join(a,"sandbox-runtime"),d=i.resolve(te.homedir()),l=Qn(d,a,c),u=process.platform==="win32"?er(l):l.filter(p=>p!==a),g=process.platform==="win32"?Jr(a,r):{read:[],write:[]},f=eo([e,...to(n),...g.write,...t?.write??[]],a);return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:[...new Set([...o,...g.read,...t?.read??[]])],allowWrite:f,denyWrite:[c,...Gn.map(p=>i.join(a,p)),...qr(e)]}})}s(Ur,"workspaceShellSandboxConfig");function Vr(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform!=="win32"?a:Hr(a)}s(Vr,"workspaceShellSessionSandboxConfig");function Hr(e){let n=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(r=>n.some(t=>_(t,r)))}}}s(Hr,"boundedWindowsWorkspaceDenies");function co(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform==="win32"?Hr(a):a}s(co,"workspaceShellCommandSandboxConfig");function Ye(e,n){return[...new Set((e??[]).map(r=>i.resolve(n,r)))]}s(Ye,"normalizedSandboxPaths");function lo(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(lo,"sdkSandboxEndpoints");async function qo(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=i.resolve(e.cwd),r=e.network??{mode:"deny"},t=lo(r),o=await Z();if(!o.ready){if(!pn(o))return{status:"unavailable",sandboxed:!1,doctor:o};if(await sn(),o.setupRequired)return{status:"unavailable",sandboxed:!1,doctor:o}}let a=Fr(e.inheritEnvironment===!0?process.env:Ee(),e.env??{}),c={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:Ye(e.filesystem.allowRead,n),allowWrite:Ye(e.filesystem.allowWrite,n),denyRead:Ye(e.filesystem.denyRead,n),denyWrite:Ye(e.filesystem.denyWrite,n)}}),command:e.command,args:e.args??[],cwd:n,env:a,endpoints:t,allowAllNetwork:r.mode==="allow"},d=await jr(c,e.signal,e.timeoutMs??Kn,e.maxOutputBytes??qn);return{status:"completed",sandboxed:!0,exitCode:d.exitCode,stdout:d.stdout,stderr:d.stderr}}s(qo,"runKodaXSandboxed");var uo=5*6e4,fo=3e4,po=3e4,Ze=1500,wo=13e4,mo=8,I=new Map,De=new Set,ye=new Set,Se=new Set,Ie,Bn,cn=!1;function ue(e){let n=e instanceof Error?e:new Error(String(e));if(process.platform!=="win32"){Bn??=n;return}Ie??=n}s(ue,"recordWindowsSandboxAclFailure");function yn(){if(process.platform!=="win32"&&Bn!==void 0)throw new Error("Sandbox process cleanup was not confirmed; stop the retained process tree before more sandboxed commands.",{cause:Bn});if(process.platform==="win32"&&Ie!==void 0)throw Ie instanceof Q?Ie:new Error("Windows sandbox ACL cleanup was not confirmed; stop the retained owner or restart Windows before more sandboxed commands.",{cause:Ie})}s(yn,"assertWindowsSandboxAclProcessSafe");function Sn(e){yn(),process.platform==="win32"&&zn(e)}s(Sn,"assertWindowsSandboxAclSafe");function zr(e){ye.add(e),e.then(()=>ye.delete(e),()=>ye.delete(e))}s(zr,"trackWorkspaceSessionReset");function go(e){Se.add(e),e.then(()=>Se.delete(e),n=>{Se.delete(e),T({source:"sandbox:workspace-session",level:"error",message:"Workspace sandbox durable ACL poison transition failed.",detail:n})})}s(go,"trackWindowsSandboxAclTransition");async function yo(){for(;Se.size>0;)await Promise.allSettled([...Se])}s(yo,"waitForWindowsSandboxAclTransitions");async function rr(){for(;ye.size>0;)await Promise.allSettled([...ye]);await yo(),yn()}s(rr,"waitForWorkspaceSessionResets");async function tr(e=!1){let n=[...I.values()];I.clear();let r=[];for(let t of n)try{await(await t).close(e)}catch(o){r.push(o),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox shutdown could not confirm ACL reset.",detail:o})}return r}s(tr,"closeCachedWorkspaceSessions");var Yr=s(()=>{cn=!1,tr()},"closeWorkspaceSessionsBeforeExit");function So(){cn||(cn=!0,process.once("beforeExit",Yr))}s(So,"registerWorkspaceSessionBeforeExit");async function Ko(){for(process.removeListener("beforeExit",Yr),cn=!1;De.size>0;)await Promise.allSettled([...De]);let e=await tr();try{await rr()}catch(n){e.push(n)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Workspace sandbox shutdown was not confirmed.")}s(Ko,"shutdownAsrtWorkspaceSessions");function Zr(){let e=new Error("ASRT workspace session preparation timed out.");return e.name="TimeoutError",e}s(Zr,"workspacePreparationTimeoutError");function ln(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Zr()}s(ln,"throwIfWorkspacePreparationStopped");function Fn(e,n,r){return ln(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let a=!1,c,d=s(u=>{a||(a=!0,c&&clearTimeout(c),n?.removeEventListener("abort",l),u())},"finish"),l=s(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(c=setTimeout(()=>{d(()=>o(Zr()))},Math.max(0,r-Date.now())),c.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}s(Fn,"waitForWorkspacePreparation");async function hn(){let e=i.join(X(),"sandbox-runtime");return await K(e,{recursive:!0,mode:448}),e}s(hn,"sandboxControlDirectory");function ho(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-workspace-session",e];if(import.meta.url.endsWith(".ts"))return["--import",Ar(Xn.resolve("tsx")).href,ur(new URL("./sandbox-workspace-session-entry.ts",import.meta.url)),e];let n=i.dirname(ur(import.meta.url)),r=i.basename(n)==="chunks"?i.dirname(n):n;return[i.join(r,"sandbox-workspace-session.js"),e]}s(ho,"workspaceSessionEntryArgs");function Qe(e,n){let r=n?"ref":"unref";e[r]();for(let t of e.stdio){if(!t)continue;t[r]?.()}}s(Qe,"setWorkspaceSessionReferenced");async function Qr(e,n,r){if(e)return n();let t=await xn(r);try{return await n()}finally{await t()}}s(Qr,"withExclusiveFileSystemEffectFence");async function bo(e,n,r,t,o,a,c){let d=process.platform==="win32"?ro(e,o):void 0;d!==void 0&&await K(d,{recursive:!0,mode:448});let l=await hn();process.platform==="win32"&&Dn(qr(e),"write");let u=i.join(l,`workspace-${process.pid}-${H()}.json`),g=nr(Vr(e,d,n,r,t));await be(u,JSON.stringify({config:g}),{mode:384});let f=Te({args:ho(u),env:Ee(),isElectron:process.versions.electron!==void 0}),p;try{p=await Lr(o)}catch(S){let m=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]),x=[S,...m.flatMap(C=>C.status==="rejected"?[C.reason]:[])];throw x.length===1?S:new AggregateError(x,"Workspace sandbox owner admission and pre-launch cleanup both failed.")}let w;try{w=hr(process.execPath,f.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:f.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0})}catch(S){let m=[S];try{await In(p)}catch(C){await ze(p,C),m.push(C)}let x=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]);throw m.push(...x.flatMap(C=>C.status==="rejected"?[C.reason]:[])),m.length===1?S:new AggregateError(m,"Workspace sandbox owner launch cleanup failed.")}bn(w);let h=w.pid===void 0?void 0:_e(w.pid),k=w.stdio[3];if(!k)throw new Error("ASRT workspace session control pipe was not created.");let b=dt.createInterface({input:k}),v=new Map,y="",A=!1,E=!1,L=!1,P=!1,z=0,R=0,F,j,oe,fe=new Promise(S=>{w.once("exit",(m,x)=>S({code:m,signal:x}))}),pe=fe.then(async()=>{if(d!==void 0)try{await Pn(d)}catch(S){T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox temp cleanup failed.",detail:S})}}),Je=s(async(S=!1)=>{let m=await fe;await pe;let x=[];if(!S&&(m.code!==0||m.signal!==null)){let C=m.signal===null?`code ${m.code??"unknown"}`:`signal ${m.signal}`;x.push(new Error(`ASRT workspace session ACL reset was not confirmed (${C}): ${y.trim()||"no diagnostics"}`))}try{await In(p)}catch(C){x.push(C)}if(x.length===1)throw x[0];if(x.length>1)throw new AggregateError(x,"Workspace sandbox cleanup was not confirmed.")},"confirmCleanReset"),D,J,B=new Promise((S,m)=>{D=S,J=m}),Re=s(()=>{P||(P=!0,c())},"evict"),Ue=s(async()=>{if(!E||!L||R!==0||w.exitCode!==null||w.signalCode!==null||!w.stdin.writable)return!1;try{w.stdin.end()}catch{return!1}let S;try{let m=await Promise.race([fe,new Promise(x=>{S=setTimeout(x,process.platform==="win32"?wo:Ze)})]);return m!==void 0&&m.code===0&&m.signal===null}finally{S!==void 0&&clearTimeout(S)}},"waitForOrderlyClose"),N,Pe=!1,or=!1,Y=s(()=>N||(or=!0,N=(async()=>{try{if(await Ue())return;if((await vn(w,{gracefulStdinEnd:!1,gracefulMs:Ze,forceMs:Ze,taskkillMs:Ze})).status==="unknown")throw await _r(w.pid,h,Or("ASRT workspace session"),p);Pe=!0}finally{b.close(),k.destroy(),w.stdin.destroy()}})().finally(Re),N),"terminate"),ee=s(S=>{if(!A){A=!0,J(S);for(let m of v.values())m.reject(S);v.clear()}},"fail");w.stderr.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),w.stdout.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),b.on("line",S=>{let m;try{m=JSON.parse(S)}catch{ee(new Error("ASRT workspace session returned malformed control data.")),Y();return}if(m.type==="ready"){m.ok?(L=!0,D()):J(new Error(m.error??"ASRT workspace session failed."));return}if(m.type!=="result"||!m.id){ee(new Error("ASRT workspace session returned an invalid control response.")),Y();return}let x=v.get(m.id);x&&(v.delete(m.id),x.resolve(m))}),w.once("error",S=>{ee(S),Y()}),b.once("close",()=>{E||A||(ee(new Error("ASRT workspace session control pipe closed unexpectedly.")),Y())}),w.once("exit",(S,m)=>{j&&clearTimeout(j);let x=new Error(`ASRT workspace session exited ${m??S??1}: ${y.trim()||"no diagnostics"}`);!or&&(S!==0||m!==null||!E)&&go(ze(p,x)),ee(x),Re()});let nt=setTimeout(()=>{ee(new Error("ASRT workspace session initialization timed out.")),Y()},fo);try{await B.finally(()=>clearTimeout(nt))}catch(S){E=!0;let m=[S],x=!1;try{await Y(),x=!0}catch(C){m.push(C)}if(x)try{await Je(Pe)}catch(C){await ze(p,C),m.push(C)}throw await G(u,{force:!0}),m.length===1?S:new AggregateError(m,`Workspace sandbox startup cleanup failed: ${de(m.at(-1))}`)}let Ve=s(async(S,m)=>{if(A||E&&S==="wrap")throw new Error("ASRT workspace session is unavailable.");let x=`workspace_${++z}`,C=new Promise((M,we)=>{v.set(x,{resolve:M,reject:we})}),ne=setTimeout(()=>{ee(new Error(`ASRT workspace session ${S} request timed out.`)),Y()},po);ne.unref();try{await new Promise((M,we)=>{w.stdin.write(`${JSON.stringify({id:x,type:S,request:m})}
518
- `,$e=>$e?we($e):M())})}catch(M){throw v.delete(x),clearTimeout(ne),ee(M instanceof Error?M:new Error(String(M))),Y(),M}return C.finally(()=>clearTimeout(ne))},"request"),sr=s(()=>{if(j&&clearTimeout(j),!(R>0||E||A)){if(process.platform==="win32"){Qe(w,!1);return}j=setTimeout(()=>{Ce.close().catch(S=>{T({source:"sandbox:workspace-session",level:"warn",message:"Idle workspace sandbox session could not confirm ACL reset.",detail:S})})},uo),j.unref(),Qe(w,!1)}},"scheduleIdleClose"),Ce={policyKey:o,...d===void 0?{}:{tempDirectory:d},async acquire(S,m,x){if(Sn(o),ln(m,x),A||E)throw new Error("ASRT workspace session is unavailable.");j&&clearTimeout(j),Qe(w,!0),R+=1;let C=!1,ne=s(()=>{if(C)return!1;C=!0,R-=1;let U=R===0;return R===0&&(F?.(),F=void 0),sr(),U},"finalize"),M=s(async()=>{ne()&&process.platform==="win32"&&await Ce.close(a)},"finalizeAndCloseIfIdle"),we=s((U,$)=>{T({source:"sandbox:workspace-session",level:"warn",message:U,detail:$}),ne()&&Ce.close(a).catch(V=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace sandbox cleanup could not retire its session.",detail:V})})},"retireAfterCleanupFailure"),$e=Ve("wrap",S),We;try{We=await Fn($e,m,x)}catch(U){throw $e.then(async $=>{if(!$.ok||!$.invocation)return;let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}).then(M,$=>we("Late workspace sandbox preparation cleanup failed.",$)),U}try{if(!We.ok||!We.invocation){ne();let $=new Error(We.error??"ASRT workspace wrapping failed.");try{await Ce.close(a)}catch(W){let V=W instanceof Error?W.message:String(W);throw new Error(`${$.message} Workspace session reset failed: ${V}`,{cause:$})}throw $}try{ln(m,x)}catch($){try{let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}catch(W){we("Cancelled workspace sandbox preparation cleanup failed.",W)}throw await M(),$}let U=!1;return{invocation:We.invocation,async release(){if(U)return;U=!0;let $;try{let V=await Ve("cleanup");if(!V.ok)throw new Error(V.error??"ASRT command cleanup failed.")}catch(V){$=V}let W;try{await M()}catch(V){W=V}if($!==void 0&&W!==void 0)throw new AggregateError([$,W],"Workspace sandbox command cleanup and policy-group reset both failed.");if($!==void 0)throw $;if(W!==void 0)throw W}}}catch(U){throw ne(),U}},async close(S=!1){return oe||(E=!0,Re(),oe=(async()=>{j&&clearTimeout(j),Qe(w,!0),R>0&&await new Promise(m=>{F=m}),await Qr(a||S,async()=>{await Y(),await Je()},o)})().catch(async m=>{throw await ze(p,m),m}),zr(oe),oe)}};return sr(),Ce}s(bo,"startWorkspaceSessionClientWithFence");function yr(e,n,r,t,o,a,c){return Qr(a,async()=>{if(et(e,n,r,t)!==o)throw new Error("Sandbox policy paths changed before ACL initialization.");return Sn(o),await sn(o),bo(e,n,r,t,o,a,c)},o)}s(yr,"startWorkspaceSessionClient");function Cn(e){return[...new Set(e.map(n=>{let r=i.resolve(n);return process.platform==="win32"?r.toLowerCase():r}))].sort()}s(Cn,"normalizedWorkspacePolicyPaths");function Le(e){let n=s(t=>{let o=i.resolve(t);return process.platform==="win32"?o.toLowerCase():o},"normalize"),r=null;try{r=n(ce.native(e))}catch{}return{lexical:n(e),canonical:r}}s(Le,"workspacePolicyPathIdentity");function en(e){let n=new Map;for(let r of e){let t=Le(r);n.set(`${t.lexical}\0${t.canonical??""}`,t)}return[...n.values()].sort((r,t)=>r.lexical.localeCompare(t.lexical)||(r.canonical??"").localeCompare(t.canonical??""))}s(en,"workspacePolicyPathIdentities");function et(e,n,r,t){let o=Vr(e,void 0,n,r,t);return un("sha256").update(JSON.stringify({workspace:Le(e),agentHome:Le(X()),tempBase:Le(te.tmpdir()),filesystem:{allowRead:en(o.filesystem.allowRead),allowWrite:en(o.filesystem.allowWrite),denyRead:en(o.filesystem.denyRead),denyWrite:en(o.filesystem.denyWrite)},network:o.network,windowsRunner:process.platform==="win32"?{version:ae,architecture:process.arch,path:Le(ke().path)}:null,ephemeral:n?.ephemeral===!0})).digest("hex")}s(et,"workspaceShellPolicyKey");function vo(e){return process.platform!=="win32"?!0:(e?.write??[]).every(n=>{try{return ce.native(n),!0}catch{return!1}})}s(vo,"workspaceShellFilesystemAccessIsRepresentable");async function Sr(e,n,r,t=dn(process.env,Ke()),o=t,a=!1){if(process.platform==="win32"){if(ye.size>0||Se.size>0)return}else await rr();yn();let c=await Z();if(!c.ready&&!pn(c))return;if(process.platform!=="win32"){let v=X();await Promise.all([hn(),...Gn.map(y=>K(i.join(v,y),{recursive:!0,mode:448}))])}let d=et(e,process.platform==="win32"?n:void 0,r,t);if(!c.ready&&(await sn(d),c.setupRequired))return;await sn(d),Sn(d),So();let l=process.platform==="win32"?n:void 0,u=process.platform==="win32"?e.toLowerCase():e,g=Cn,f=g(t),p=JSON.stringify(f)===JSON.stringify(g(o)),w=(r?.read.length??0)>0||(r?.write.length??0)>0,h=l===void 0&&!w&&p?"workspace":un("sha256").update(JSON.stringify({read:[...l?.read??[]].map(v=>v.toLowerCase()).sort(),write:[...l?.write??[]].map(v=>v.toLowerCase()).sort(),additionalRead:Cn(r?.read??[]),additionalWrite:Cn(r?.write??[]),runtimeReadScopes:f})).digest("hex"),k=process.platform==="win32"?d:`${u}\0${h}`;if(process.platform==="win32"&&a){let v=l?.ephemeral===!0?void 0:k;for(let[y,A]of[...I])if(y!==v){I.delete(y);try{await(await A).close(!0)}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring the previous Windows workspace sandbox scope failed.",detail:E}),E}}}if(l?.ephemeral===!0)return yr(e,l,r,t,d,a,()=>{});let b=I.get(k);if(b&&(I.delete(k),I.set(k,b)),!b){if(process.platform!=="win32"&&h!=="workspace"){let v=[...I.keys()].filter(y=>!y.endsWith("\0workspace"));if(v.length>=mo){let y=v[0],A=I.get(y);if(I.delete(y),A)try{await(await A).close()}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring an old scoped workspace sandbox failed.",detail:E}),E}}}b=yr(e,l,r,t,d,a,()=>{I.get(k)===b&&I.delete(k)}),I.set(k,b),b.catch(()=>{I.get(k)===b&&I.delete(k)})}return b}s(Sr,"getWorkspaceSession");function Xo(e){let n=i.resolve(e.workspaceRoot),r=dn(process.platform==="win32"?{}:process.env,Ke()),t=process.platform==="win32"?void 0:Sr(n,void 0,void 0,r,r);return t!==void 0&&(De.add(t),t.then(()=>De.delete(t),()=>De.delete(t)),t.catch(o=>{T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox warm-up failed; admitted commands will use normal permission fallback.",detail:o})})),{processTreeContainment:process.platform==="linux"?"root-exit-drains":void 0,async prepare(o){if(!o.toolCallId){o.reportObservation?.({version:1,state:"not_selected"});return}let a={id:o.toolCallId,name:"bash",input:{...o.toolInput}},c=await e.shouldSandbox(a);if(!c){o.reportObservation?.({version:1,state:"not_selected"});return}let d=typeof c=="object"?c.agentHomeAccess:void 0,l=process.platform==="win32"&&d!==void 0?Jr(i.resolve(X()),d):d,u=typeof c=="object"?c.filesystemAccess:void 0;if(!vo(u)){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let g=process.platform==="win32"&&l?.ephemeral===!0,f=Ke(o.executable),p=o.args??(process.platform==="win32"?["/d","/s","/c",o.command]:["-c",o.command]),w=Yn(o.env),h=dn(w,f),k,b;try{t!==void 0&&(await Fn(t.then(()=>{},()=>{}),o.signal,o.deadlineAt),ln(o.signal,o.deadlineAt));let v=Sr(n,l,u,h,r),y;try{y=await Fn(v,o.signal,o.deadlineAt)}catch(D){if(process.platform==="win32"&&(o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt)){let J=v.then(async B=>{B&&await B.close()},async()=>{});zr(J),J.catch(B=>{T({source:"sandbox:workspace-session",level:"warn",message:"Late cancelled workspace session rollback failed.",detail:B})})}throw D}if(!y){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let A=y.policyKey;b=y;let E=await hn(),L=i.join(E,`kodax-asrt-shell-${process.pid}-${H()}.json`),P=i.join(E,`kodax-asrt-observation-${process.pid}-${H()}.json`),z=w;if(process.platform==="win32"){let D=y.tempDirectory;if(D===void 0)throw new Error("Windows workspace sandbox temp directory is unavailable.");z=Fr(w,{TEMP:D,TMP:D,TMPDIR:D,GIT_CONFIG_GLOBAL:"NUL",GIT_CONFIG_NOSYSTEM:"1"})}let R={config:nr(co(n,y.tempDirectory,l,u,h)),command:f,args:p,windowsVerbatimArguments:o.windowsVerbatimArguments===!0,cwd:o.cwd,env:z,endpoints:[],allowAllNetwork:!0,bootstrapCommand:gn(),fallbackToNormalExecution:!0,observationBackend:wt().backend,observationFile:P,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${H()}\0
519
- `},F=await y.acquire(R,o.signal,o.deadlineAt);k=F;let j={...R,wrappedInvocation:F.invocation},oe=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",L]:["--input-type=module","-e",Cr,Rr,L],fe=Te({args:oe,env:Ee(),isElectron:process.versions.electron!==void 0});await be(L,JSON.stringify(j),{mode:384});let pe,Je=s(async()=>{g||(pe===void 0&&(pe=b?.close(!1)??Promise.resolve(),pe.catch(D=>{T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox session retirement failed.",detail:D})})),process.platform==="win32"&&await pe)},"retireWorkspaceSession");return{executable:process.execPath,args:fe.args,env:fe.env,fileSystemEffectPolicyKey:A,authorizeStart:s(()=>Sn(A),"authorizeStart"),async cleanup(D){let J,B=[];try{J=await he(P,"utf8").then(Dt).catch(N=>{if(N.code!=="ENOENT")throw N})}catch(N){B.push(N)}let Re=await Promise.allSettled([G(L,{force:!0}),G(P,{force:!0})]);for(let N of Re)N.status==="rejected"&&B.push(N.reason);try{await F.release()}catch(N){B.push(N)}let Ue=D?.execution==="started_or_unknown"&&J===void 0;if(Ue&&B.push(new Error("Required OS sandbox execution could not be attested; the workspace session must be retired and the command was not retried")),B.length>0){let N=Ue?"Required OS sandbox execution could not be attested and request cleanup failed; the workspace session must be retired and the command was not retried.":"Required OS sandbox request cleanup failed; the workspace session must be retired.",Pe=new AggregateError(B,N);throw T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox command cleanup failed.",detail:Pe}),Pe}return J},retire:Je}}catch(v){let y=[v],A=o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt,E=!1;if(k)try{await k.release()}catch(P){E=!0,y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox lease release failed.",detail:P})}if(A&&process.platform==="win32"&&b&&k===void 0)throw b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Cancelled workspace preparation cleanup could not retire its session.",detail:P})}),v;if(process.platform==="win32"&&b)try{await b.close()}catch(P){y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})}else E&&b&&b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})});if(A)throw v;let L=y.length===1?v:new AggregateError(y,`Workspace sandbox preparation failed and cleanup was incomplete: ${y.map(de).join(" | ")}`);T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox preparation failed; using normal permission fallback.",detail:L}),o.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}}}}s(Xo,"createAsrtShellSandbox");async function Go(e){let n=await Z();if(!n.ready)throw new Error(`ASRT ${ae} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let r=i.join(e.snapshotRoot,H()),t=i.join(r,"skills");await K(t,{recursive:!0,mode:448});try{let o=await qt(e,t),a=Kt(e.network),c=Promise.resolve();return{async run(d,l){let u=c,g;if(c=new Promise(f=>{g=f}),await u,l.signal?.aborted)throw g?.(),l.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(d.args.length>64||d.args.some(h=>h.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(d.inputs.length>32||d.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let f=re(d.script,"Skill script"),p=o.get(`${d.skill}\0${f}`);if(!p)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(i.extname(p.snapshotPath).toLowerCase())&&d.args.some(h=>/[&|<>^]/.test(h)))throw new Error("Batch Skill script arguments cannot contain command operators.");let w=i.join(l.workspaceRoot,".kodax-a2a-script",H());try{await K(i.join(w,"inputs"),{recursive:!0,mode:448}),await K(i.join(w,"outputs"),{recursive:!0,mode:448}),await zt(l.workspaceRoot,w,d,e.workspaceAccess);let h=Xt(p.snapshotPath),k=await Ut({config:Zt(w,r,a,h.command),command:h.command,args:[...h.args,...d.args],cwd:w,env:Ee(),endpoints:a},l.signal),b=await Yt(l.workspaceRoot,w,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:k.trim(),outputs:b})}finally{await G(w,{recursive:!0,force:!0})}}finally{g?.()}},async dispose(){await c,await G(r,{recursive:!0,force:!0})}}}catch(o){throw await G(r,{recursive:!0,force:!0}),o}}s(Go,"createAsrtSkillScriptRunner");export{ae as a,wt as b,Z as c,jt as d,ge as e,Mo as f,qo as g,Ko as h,Xo as i,Go as j};
517
+ `,n=Xe(Gr(),["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),r=n.status===0?n.stdout.trim():"",t=/^\d+$/.test(r)?`windows-boot-${r}`:void 0;return En=t??null,t}s(Ee,"readWindowsBootIdentity");function On(){return`After stopping every KodaX and KodaX Space process, run "${Me?.path??"srt-win.exe"}" acl recover --force --json, then delete "${wn()}" and "${Jn()}".`}s(On,"windowsSandboxAclManualRecoveryInstruction");function Wr(e,n=Ee()){if(e.find(({windowsBootIdentity:a})=>a===void 0||n===void 0)!==void 0)return new Z("An unconfirmed Windows sandbox process tree has no verifiable Windows boot identity. "+On());let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Z(`An unconfirmed Windows sandbox process tree${o} from the same Windows boot may still have live descendants; restart Windows before retrying. `+On())}s(Wr,"persistentWindowsSandboxAclPoisonError");function Nn(e,n,r="unconfirmed",t){if(process.platform!=="win32")return;let o=Ee(),a=_e(process.pid),c=H(),d=`${r==="unconfirmed"?"unconfirmed-":""}owner-${c}.json`,l=JSON.stringify({version:1,state:r,...t===void 0?{}:{policyKey:t},holderPid:process.pid,...a===void 0?{}:{holderProcessStartIdentity:a},...e===void 0?{}:{pid:e},...n===void 0?{}:{processStartIdentity:n},...o===void 0?{}:{windowsBootIdentity:o}}),u=s((f,p)=>{cr(f,{recursive:!0,mode:448});let w=i.join(f,d);if(r==="unconfirmed")return lr(w,l,{flag:"wx",mode:384}),w;cr(p,{recursive:!0,mode:448});let h=i.join(p,`owner-${c}.tmp`);return lr(h,l,{flag:"wx",mode:384}),$n(h,w),w},"persist"),g=u(wn(),Ct());try{let f=u(Jn(),$t());q.set(g,f)}catch(f){if(r==="active")try{Be(g,{force:!0})}catch(p){throw new AggregateError([f,p],"Windows sandbox owner compatibility marker and primary rollback both failed.")}throw f}return g}s(Nn,"persistWindowsSandboxAclPoisonOwner");function Wt(e){let n=Nn(void 0,void 0,"active",e);if(n!==void 0){O.add(n);let r=q.get(n);r!==void 0&&O.add(r)}return n}s(Wt,"createWindowsSandboxAclOwnerMarker");function Ne(e){if(e===void 0)return;let n=q.get(e);try{n!==void 0&&Be(n,{force:!0}),Be(e,{force:!0}),O.delete(e),n!==void 0&&O.delete(n),q.delete(e)}catch(r){throw O.delete(e),n!==void 0&&O.delete(n),ue(r),new Error("Windows sandbox owner poison marker could not be cleared.",{cause:r})}}s(Ne,"confirmWindowsSandboxAclOwnerStopped");async function ze(e,n){ue(n);let r=await Un(e,void 0,void 0,n);if(ue(r),r!==n)throw r}s(ze,"retainWindowsSandboxAclOwnerPoison");function Tr(e,n,r){if(e===void 0)return Nn(n,r,"unconfirmed");let t=q.get(e),o=i.join(i.dirname(e),`unconfirmed-${i.basename(e)}`),a=t===void 0?void 0:i.join(i.dirname(t),`unconfirmed-${i.basename(t)}`);if(br(o))return O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o;try{return $n(e,o),t!==void 0&&a!==void 0&&$n(t,a),O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o}catch(c){try{let d=Nn(n,r,"unconfirmed");return O.delete(e),t!==void 0&&O.delete(t),q.delete(e),d}catch(d){throw O.delete(e),t!==void 0&&O.delete(t),q.delete(e),new AggregateError([c,d],"Windows sandbox ACL poison write-ahead failed.")}}}s(Tr,"writeAheadWindowsSandboxAclOwnerPoison");async function Un(e,n,r,t){if(process.platform!=="win32")return t;let o;try{return o=Tr(e,n,r),await se(ke(),async()=>{},xe),t}catch(a){return new AggregateError([t,a],o===void 0?"Windows sandbox owner termination and durable ACL poison recording both failed.":"Windows sandbox owner termination was not confirmed and ACL poison serialization failed.")}}s(Un,"transitionWindowsSandboxAclOwnerToPoison");function Tt(e,n){return O.has(e)}s(Tt,"isVerifiedActiveWindowsSandboxAclOwner");function Vn(e){if(e.state!=="active"||e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=_e(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return je(r,"ESRCH")?"stale":"unknown"}}s(Vn,"windowsSandboxAclOwnerLiveness");function Hn(e,n,r){return n.state!=="active"?!1:O.has(e)?r===void 0||n.policyKey===r:r!==void 0&&n.policyKey===r&&Vn(n)==="live"}s(Hn,"isCompatibleWindowsSandboxAclOwner");function zn(e){let n=Ge().filter(({file:r,owner:t})=>!Hn(r,t,e));if(n.length!==0)throw Wr(n.map(({owner:r})=>r))}s(zn,"assertNoPersistentWindowsSandboxAclPoison");async function _r(e,n,r,t){let o=new Error(r);if(process.platform==="win32"){let a=await Un(t,e,n,o);return ue(a),a instanceof Error?a:o}return ue(o),o}s(_r,"recordUnconfirmedWindowsSandboxOwner");function Or(e){return process.platform==="win32"?`${e} process-tree termination was not confirmed; restart Windows before retrying.`:`${e} process-tree termination was not confirmed; stop the retained process tree before retrying.`}s(Or,"unconfirmedSandboxProcessTreeMessage");function rn(){let e=Ae(),n=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"acl","recover","--json"],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),r=(n.stderr??"").trim();if(n.error)throw new Error(`Windows sandbox ACL recovery failed to start: ${n.error.message}`,{cause:n.error});let t;try{t=JSON.parse((n.stdout??"").trim())}catch(a){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(n.status)}): ${r||"(empty stderr)"}.`,{cause:a})}let o=typeof t=="object"&&t!==null?t:void 0;if(n.status!==0||typeof o?.deadBrokers!="number"||!Number.isSafeInteger(o.deadBrokers)||o.deadBrokers<0||typeof o.acesRevoked!="number"||!Number.isSafeInteger(o.acesRevoked)||o.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(n.status)}${n.signal?`, signal ${n.signal}`:""}): ${r||"(empty stderr)"}.`);Tn=!0}s(rn,"recoverWindowsSandboxAcls");function _t(e){return e instanceof Error&&e.message.startsWith("learning store lock timed out:")}s(_t,"isWindowsSandboxAclRecoveryLockTimeout");var tn=class extends Z{static{s(this,"ForeignWindowsSandboxAclOwnerContentionError")}constructor(n){super("Another Windows sandbox owner is active for the shared sandbox account; wait for it to close or stop the other KodaX/KodaX Space process, then retry.",{cause:n}),this.name="ForeignWindowsSandboxAclOwnerContentionError"}},on=class extends Z{static{s(this,"StaleWindowsSandboxAclOwnerContentionError")}constructor(n){super(n.message,{cause:n}),this.name="StaleWindowsSandboxAclOwnerContentionError"}};function Nr(e){!_t(e)&&!(e instanceof tn)&&!(e instanceof on)&&ue(e)}s(Nr,"recordWindowsSandboxAclAdmissionFailure");function qe(e,n=Ee()){let r=Wr(e.map(({owner:t})=>t),n);return e.every(({owner:t})=>t.state==="active")?e.some(({owner:t})=>Vn(t)==="stale")?new on(r):new tn(r):r}s(qe,"windowsSandboxAclPoisonSnapshotError");function Ot(){let e=Ge();if(e.length===0)return;let n=Ee();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){rn();for(let t of e)Be(t.file,{force:!0});zn();return}return e.every(({owner:t})=>Vn(t)!=="stale")?new Z("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; wait for sandboxed commands to finish and stop other KodaX or KodaX Space processes, then retry."):qe(e,n)}s(Ot,"windowsSandboxAclSetupBlockWithLock");function wr(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(le)),`${le} ${n.message}`]}}s(wr,"withWindowsSandboxAclSetupBlock");function Ir(e){yn();let n=Ge(),r=n.filter(({file:t,owner:o})=>!Hn(t,o,e));if(Tn){if(r.length>0)throw qe(r);return}if(r.length>0){let t=Ee();if(!(t!==void 0&&r.every(({owner:a})=>a.windowsBootIdentity!==void 0&&a.windowsBootIdentity!==t)))throw qe(r,t)}if(n.length>0){Tn=!0;return}rn();for(let t of r)Be(t.file,{force:!0});zn(e)}s(Ir,"ensureWindowsSandboxAclRecoveryWithLock");async function sn(e){if(process.platform==="win32")try{await se(ke(),async()=>Ir(e),xe)}catch(n){throw Nr(n),n}}s(sn,"ensureWindowsSandboxAclRecovery");async function Lr(e){if(process.platform!=="win32")return;let n;try{return await se(ke(),async()=>{try{Ir(e)}catch(r){throw Nr(r),r}return n=Wt(e),n},xe)}catch(r){if(n===void 0)throw r;try{Ne(n)}catch(t){throw new AggregateError([r,t],"Windows sandbox owner admission and marker cleanup both failed.")}throw r}}s(Lr,"admitWindowsSandboxAclOwner");async function In(e){if(process.platform!=="win32")return;let n;try{if(e===void 0||!O.has(e))return;if(n=$r(xr(e,"utf8")).policyKey,n!==void 0){await se(ke(),async()=>{let t=q.get(e),o=new Set([e,t].filter(d=>d!==void 0)),a=Ge().filter(({file:d})=>!o.has(d)),c=a.filter(({file:d,owner:l})=>!Hn(d,l,n));if(c.length>0)throw qe(c);if(a.length>0){Ne(e);return}rn(),Ne(e)},xe);return}let r=Tr(e,void 0,void 0);await se(ke(),async()=>{rn(),Ne(r),e!==r&&Ne(e)},xe)}catch(r){let t=n===void 0?r:await Un(e,void 0,void 0,r);throw ue(t),t}}s(In,"confirmWindowsSandboxAclRecovery");function Rn(){ie!==void 0&&(Er({sandboxUserSid:ie.sandboxUserSid,holderPid:process.pid,srtWin:ie.runner.srtWin}),ie=void 0)}s(Rn,"releasePreparedWindowsRunnerGrant");function Nt(e,n){if(!(ie?.runner.path===e.path&&ie.sandboxUserSid===n)){process.removeListener("exit",Rn),Rn();try{ft({read:[e.directory,e.path],write:[],sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(r){try{Er({sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(t){throw new AggregateError([r,t],"Windows sandbox runner ACL grant failed and its partial grant could not be revoked.")}throw r}ie={runner:e,sandboxUserSid:n},process.once("exit",Rn)}}s(Nt,"retainPreparedWindowsRunnerGrant");async function It(){let[e,n]=lt;for(let r=0;r<5;r+=1){let t=dt();t.listen(0,"127.0.0.1"),await dr(t,"listening");let o=t.address();if(typeof o=="object"&&o!==null&&(o.port<e||o.port>n))return{server:t,target:`127.0.0.1:${o.port}`};let a=dr(t,"close");t.close(),await a}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`)}s(It,"bindWindowsWfpProbe");function mr(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}s(mr,"windowsRunnerFailureCode");function Lt(e){return je(e,"ETIMEDOUT")?"wfp_probe_timeout":je(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}s(Lt,"windowsRunnerSpawnFailureCode");async function Dt(e){let{server:n,target:r}=await It();try{let t=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${Lt(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let a;try{a=JSON.parse((t.stdout??"").trim())}catch{let c=t.status===null?"wfp_probe_timeout":mr(o);throw new Error(`[${c}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(a.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||a.egress_probe!=="blocked")throw new Error(`[${mr(o)}] Windows sandbox WFP probe to ${String(a.target??r)} was ${String(a.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}s(Dt,"verifyPreparedWindowsWfp");function Dr(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}s(Dr,"windowsSandboxAccountDiagnostics");function Bt(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}s(Bt,"parseBrokerObservation");function gn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}s(gn,"sandboxJavaScriptCommand");async function Y(e={}){if(e.refresh||ge===void 0||Date.now()>=He){let n=Ft();ge=n,He=Number.POSITIVE_INFINITY,n.then(r=>{ge===n&&(He=r.ready?Number.POSITIVE_INFINITY:Date.now()+Rt)},()=>{ge===n&&(ge=void 0,He=0)})}return ge}s(Y,"doctorSandboxRuntime");async function Ft(){let e=[],n=!1;kn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:kn.checkDependencies();e.push(...r.warnings,...r.errors);let t=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let d=JSON.parse(await be(Xn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));d.version!==ae&&(t=!0,e.push(`ASRT package version mismatch: expected ${ae}, found ${String(d.version)}.`))}catch(d){t=!0,e.push(`ASRT package provenance check failed: ${de(d)}`)}let o=gn(),a=Te({args:["--version"],env:Re(),isElectron:o===process.execPath&&process.versions.electron!==void 0}),c=Xe(o,a.args,{env:a.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(c.status!==0){t=!0;let d=c.error?.message??(c.stderr.trim()||o);e.push(`JavaScript Skill interpreter is unavailable: ${d}.`)}if(process.platform==="win32"){try{let d=await _n(),l=jn({srtWin:d.srtWin}),u=Dr(l);if(u.length>0||!l.sid)t=!0,e.push(...u);else{Nt(d,l.sid);let g=Xr(an(),l.sid,l.groupSid,!1,"read");g.length>0&&(t=!0,e.push(`[acl_guards_missing] ${g.length} persistent Windows sandbox ACL guard(s) are missing. Run "kodax sandbox setup" once to install them outside the startup path.`)),await Dt(d)}}catch(d){t=!0,e.push(de(d))}try{let d=Ge().filter(({file:l,owner:u})=>!Tt(l,u));if(d.length>0){let l=Ee();l!==void 0&&d.every(({owner:g})=>g.windowsBootIdentity!==void 0&&g.windowsBootIdentity!==l)||(n=!0,e.push(`${le} `+qe(d,l).message))}}catch(d){n=!0,e.push(`${le} ${de(d)}`)}}return{ready:kn.isSupportedPlatform()&&!t&&!n,platform:process.platform,version:ae,diagnostics:e,setupRequired:t}}s(Ft,"inspectSandboxRuntime");async function Mt(){let e=await Y({refresh:!0});try{let t=Ot();if(t!==void 0)return wr(e,t)}catch(t){let o=t instanceof Error?t:new Error(String(t));return wr(e,o)}if(e.ready||pn(e)||!e.setupRequired)return e;let n=!1;try{let t=await _n(),o=jn({srtWin:t.srtWin});n=Dr(o).length===0&&o.sid!==void 0}catch{n=!1}if(n){Dn(an(),"read");let t=await Y({refresh:!0});if(t.ready)return t}if(pt().cancelled)throw new Error("Sandbox setup was cancelled.");return await _n(),Dn(an(),"read"),Y({refresh:!0})}s(Mt,"setupWindowsSandboxRuntimeWithLock");async function jt(){return process.platform!=="win32"?Y({refresh:!0}):se(ke(),Mt,xe)}s(jt,"setupSandboxRuntime");function ye(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(le));return n!==void 0?[n.slice(le.length).trim()]:['Run "kodax sandbox setup". Windows will show a UAC prompt for the one-time sandbox account and network policy setup.',"The terminal itself does not need to be started as Administrator; approve the UAC prompt when it appears."]}return e.platform==="darwin"?['KodaX uses macOS Seatbelt through sandbox-exec. Install the missing dependency, then rerun "kodax sandbox doctor".',"Homebrew: brew install ripgrep"]:e.platform==="linux"?['KodaX uses bubblewrap on Linux. Install bubblewrap, socat, and ripgrep, then rerun "kodax sandbox doctor".',"Debian/Ubuntu: sudo apt install bubblewrap socat ripgrep","Fedora/RHEL: sudo dnf install bubblewrap socat ripgrep","Arch Linux: sudo pacman -S bubblewrap socat ripgrep"]:[`KodaX sandbox is not supported on ${e.platform}.`]}s(ye,"sandboxSetupGuidance");async function Xo(e={}){let n=await Y({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:ye(n)};if(pn(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:ye(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:ye(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:ye(n)};try{let r=await jt();return{status:r.ready?"ready":"unavailable",attempted:!0,doctor:r,guidance:ye(r)}}catch(r){let t=await Y({refresh:!0}),o=de(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:ye(t),error:o}}}s(Xo,"prepareSandboxRuntimeForSetup");function re(e,n){let r=e.replaceAll("\\","/").replace(/^\.\//,"");if(!r||i.posix.isAbsolute(r)||r.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return r}s(re,"canonicalRelative");function _(e,n){let r=i.relative(e,n);return r===""||!r.startsWith("..")&&!i.isAbsolute(r)}s(_,"isInside");function Br(e){let n=e.split(i.sep).map(r=>r.toLowerCase());return n.some(r=>gt.has(r))||n.some(r=>yt.has(r)||r.startsWith(".env."))}s(Br,"isSensitiveRelative");async function qt(e,n){await K(n,{recursive:!0,mode:448});let r=[...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))];await ve(i.join(n,"SKILL.md"),await be(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of r){let a=re(o.relativePath,`Skill ${e.name} support file`),c=i.join(n,t,...a.split("/"));await K(i.dirname(c),{recursive:!0,mode:448}),await ve(c,await be(o.path),{mode:384})}}s(qt,"copySkillSnapshot");async function Kt(e,n){let r=new Map;for(let[t,o]of Object.entries(e.admissions)){let a=await e.registry.loadFull(t),c=new Map((a.scripts??[]).map(l=>[`scripts/${re(l.relativePath,`Skill ${t} script`)}`,l])),d=i.join(n,t.replace(/[^A-Za-z0-9._-]/g,"_"));await qt(a,d);for(let l of o){let u=re(l,`toolPolicy.skillScripts.${t}`);if(!c.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);r.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:i.join(d,...u.split("/"))})}}return r}s(Kt,"snapshotAdmissions");function Xt(e){return e.mode==="deny"?[]:e.origins.map(n=>{let r=new URL(n);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(Xt,"networkEndpoints");function Re(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return Yn(n)}s(Re,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}s(Yn,"normalizedSandboxEnvironment");function Fr(e,n){return Yn({...e,...n})}s(Fr,"mergeSandboxEnvironment");function Gt(e){let n=i.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(n))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(n===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(n===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(n===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(n)&&process.platform==="win32")return{command:process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${n||"<none>"}.`)}s(Gt,"interpreterFor");var gr=250,Jt=1500;async function Ut(e,n,r=Kn,t=qn,o){let a=[],c=[],d=e.pid===void 0?void 0:_e(e.pid),l=0,u,g=s(()=>{},"reportStopRequested"),f,p,w=new Promise(S=>{g=S}),h=s(S=>{if(u!==void 0)return;u=S,g();let A=!1,E,L;f=new Promise((R,M)=>{E=R,L=M}),f.catch(()=>{});let P=s(async R=>{let M=await _r(e.pid,d,Or("Sandbox broker"),o);return R===void 0?M:new AggregateError([M,R],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),z=s(R=>{A||(A=!0,p!==void 0&&clearTimeout(p),R===void 0?E():L(R))},"finish");p=setTimeout(()=>{try{e.kill("SIGKILL"),P().then(z)}catch(R){P(R).then(z)}},Jt),vn(e,{expectedProcessStartIdentity:d,forceMs:gr,taskkillMs:gr}).then(async R=>z(R.status==="unknown"?await P():void 0),async R=>z(await P(R)))},"requestStop"),k=s((S,A)=>{l+=A.byteLength,l>t?h(new Error(`Sandboxed command output exceeded ${t} bytes.`)):S.push(A)},"append");e.stdout?.on("data",S=>{k(a,S)}),e.stderr?.on("data",S=>{k(c,S)});let b=setTimeout(()=>{h(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),v=s(()=>{let S=n?.reason;h(S instanceof Error?S:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",v,{once:!0}),n?.aborted&&v();try{let S=new Promise((E,L)=>{e.once("error",L),e.once("close",P=>E(P??1))}),A=await Promise.race([S,w.then(()=>1)]);if(u!==void 0)throw await f,u;return{exitCode:A,stdout:Buffer.concat(a).toString("utf8"),stderr:Buffer.concat(c).toString("utf8")}}finally{clearTimeout(b),p!==void 0&&clearTimeout(p),n?.removeEventListener("abort",v)}}s(Ut,"collectProcess");async function Mr(e,n,r=Kn,t=qn){let o=process.platform==="win32"?await hn():te.tmpdir(),a=i.join(o,`kodax-asrt-${process.pid}-${H()}.json`),c=process.platform==="win32"?nr(e.config):{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,a]}},d={...e,bootstrapCommand:e.bootstrapCommand??gn(),config:c};await ve(a,JSON.stringify(d),{mode:384});let l,u,g;try{if(process.platform==="win32"){await rr(),g=await xn();let h=await tr(!0);if(h.length===1)throw h[0];if(h.length>1)throw new AggregateError(h,"Cached workspace sandbox reset was not confirmed before standalone execution.")}let f=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",a]:["--input-type=module","-e",Cr,Rr,a],p=Te({args:f,env:Re(),isElectron:process.versions.electron!==void 0});u=await Lr();let w=hr(process.execPath,p.args,{cwd:process.platform==="win32"?Ae().directory:void 0,env:p.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0,detached:process.platform!=="win32"});return bn(w),await Ut(w,n,r,t,u)}catch(f){throw l=f,f}finally{let f=[];try{await G(a,{force:!0})}catch(p){f.push(p)}try{await In(u)}catch(p){f.push(p)}if(g!==void 0)try{await g()}catch(p){f.push(p)}if(f.length>0)throw l!==void 0&&f.unshift(l),f.length===1?f[0]:new AggregateError(f,"Sandbox broker cleanup was not confirmed.")}}s(Mr,"runBrokerResult");async function Vt(e,n){let r=await Mr(e,n);if(r.exitCode!==0){let t=r.stderr.trim()||r.stdout.trim();throw new Error(`Sandboxed Skill script failed (${r.exitCode}): ${t}`)}return r.stdout}s(Vt,"runBroker");async function Ht(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script input")),o=await Fe(t);if(!_(r,o)||Br(i.relative(r,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await nn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}s(Ht,"workspaceSource");async function zt(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script output target"));if(!_(i.resolve(e),t)||Br(i.relative(i.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await K(i.dirname(t),{recursive:!0}),!_(r,await Fe(i.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await nn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}s(zt,"workspaceTarget");async function Yt(e,n,r,t){if(r.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of r.inputs){let a=await Ht(e,o.path),c=re(o.as??i.basename(a),"Skill script staged input"),d=i.resolve(n,"inputs",...c.split("/"));if(!_(i.join(n,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await K(i.dirname(d),{recursive:!0,mode:448}),await kr(a,d)}}s(Yt,"stageInputFiles");async function Zt(e,n,r,t,o){if(r.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let c of r.outputs){let d=re(c.path,"Skill script staged output"),l=i.resolve(n,"outputs",...d.split("/")),u=await Fe(l);if(!_(i.join(n,"outputs"),u)||(await ot(l)).isSymbolicLink()||!(await nn(l)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let g=await zt(e,c.target);if(o!==void 0&&jr(e,!0)+(await nn(l)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await kr(l,g,tt.COPYFILE_EXCL),a.push(i.relative(e,g))}return a}s(Zt,"promoteOutputs");function jr(e,n=!1){let r=0;for(let t of Mn(e,{withFileTypes:!0})){if(n&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=i.join(e,t.name);t.isDirectory()?r+=jr(o):t.isFile()&&(r+=fn(o).size)}return r}s(jr,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let n=Ae();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:[...new Set([...e.filesystem.allowRead,n.directory])],denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}s(Zn,"withPreparedWindowsRunner");function Qt(e,n,r,t){let o=te.homedir(),a=process.platform==="win32"?an():[o],c=s(d=>i.isAbsolute(d)?process.platform==="win32"?[d,i.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:a,allowRead:[e,n,...new Set([...c(process.execPath),...c(t)])],allowWrite:[e],denyWrite:a}})}s(Qt,"sandboxConfig");function eo(){let e=[te.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&i.isAbsolute(n)).map(n=>i.resolve(n)))]}s(eo,"canonicalTempDirectories");function qr(e){return[i.join(e,".git","config"),i.join(e,".git","hooks")].filter(r=>{try{return fn(r),!0}catch{return!1}})}s(qr,"existingWorkspaceDenyWrites");function Qn(e,n,r){let t=St.map(a=>i.resolve(e,a)).filter(a=>i.relative(a,n)!==""),o=process.platform==="win32"?[i.resolve(n),mn()]:[i.resolve(r),...ht.map(a=>i.resolve(n,a))];return[...new Set([...o,...t])]}s(Qn,"workspaceShellSensitiveReadDenies");function er(e){let n=[...new Set(e.map(t=>i.resolve(t)))].filter(t=>fn(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>_(o,t))||r.push(t);return r}s(er,"existingMinimalWindowsAclGuardRoots");function Kr(e){return i.resolve(e).toLowerCase()}s(Kr,"windowsAclGuardKey");function Ln(e,n){let r=Kr(e),t=n==="read"?Wn:new Set([...Wn,...Pr]);for(let o of t)if(r===o||r.startsWith(o.endsWith(i.sep)?o:`${o}${i.sep}`))return!0;return!1}s(Ln,"windowsAclGuardCovers");function an(){let e=i.resolve(te.homedir()),n=i.resolve(X());return er(Qn(e,n,i.join(n,"sandbox-runtime")))}s(an,"windowsPersistentAclGuardRoots");function Xr(e,n,r,t,o){let a=er(e);if(a.length===0)return[];let c=JSON.stringify({sid:n,tokenSids:[n,r,"S-1-1-0","S-1-5-11","S-1-5-32-545"].filter(g=>g!==void 0),install:t,paths:a.map(g=>({path:g,directory:fn(g).isDirectory(),mode:o}))}),d=Gr(),l=Xe(d,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(bt,"utf16le").toString("base64")],{input:c,encoding:"utf8",timeout:t&&o==="read"?15*6e4:t?15e3:5e3,windowsHide:!0});if(l.error||l.status!==0){let g=(l.error?.message||l.stderr||l.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${g}`)}let u;try{let g=JSON.parse(l.stdout.trim());u=Array.isArray(g.missing)?g.missing.filter(f=>typeof f=="string"):[]}catch(g){throw new Error(`Windows sandbox ACL guard returned invalid output: ${de(g)}`)}if(u.length===0){let g=o==="read"?Wn:Pr;for(let f of a)g.add(Kr(f))}return u}s(Xr,"runWindowsAclGuard");function Gr(){let e=process.env.ProgramFiles??"C:\\Program Files",n=i.join(e,"PowerShell","7","pwsh.exe");return br(n)?n:i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}s(Gr,"windowsAclPowerShellExecutable");function Dn(e,n){if(process.platform!=="win32"||e.length===0)return;let r=e.filter(c=>!Ln(c,n));if(r.length===0)return;let t=Ae(),o=jn({srtWin:t.srtWin});if(!o.sid)throw new Error("Windows sandbox account SID is unavailable for ACL guards.");if(Xr(r,o.sid,o.groupSid,!0,n).length>0)throw new Error("Windows sandbox ACL guards were not installed completely.")}s(Dn,"installWindowsAclGuards");function nr(e){return process.platform!=="win32"?e:{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead.filter(n=>!Ln(n,"read")),denyWrite:e.filesystem.denyWrite?.filter(n=>!Ln(n,"write"))}}}s(nr,"withoutWindowsAsrtDenyPropagation");function no(e,n){let r;try{r=ce.native(n)}catch{return[]}let t=[];for(let o of e){let a;try{a=ce.native(o)}catch{continue}if(!_(a,r))t.push(o);else if(a!==r){let c=i.relative(a,r).split(i.sep),d=a;try{for(let l of c){for(let u of Mn(d,{withFileTypes:!0}))u.name!==l&&t.push(i.join(d,u.name));d=i.join(d,l)}}catch{}}}return process.platform!=="win32"&&t.push(n),[...new Set(t)]}s(no,"workspaceShellWriteRoots");function ro(e,n){let r=process.platform==="win32"?n:i.resolve(e);return i.join(te.tmpdir(),"kodax-sandbox",un("sha256").update(r).digest("hex").slice(0,16))}s(ro,"workspaceShellTempRoot");function to(e,n){return i.join(ro(e,n),`${process.pid}-${H()}`)}s(to,"createWorkspaceShellTempDirectory");async function Pn(e){await G(e,{recursive:!0,force:!0}),await it(i.dirname(e)).catch(n=>{if(n.code!=="ENOENT"&&n.code!=="ENOTEMPTY")throw n})}s(Pn,"removeWorkspaceShellTempDirectory");function oo(e){return process.platform==="win32"?e===void 0?[]:[i.dirname(e)]:eo()}s(oo,"workspaceShellTempWriteRoots");function so(e,n,r){try{let t=ce.native(n),o=i.resolve(n),a=i.resolve(e);if(!_(o,a)||a===o)return;for(;a!==o;)try{let c=ce.native(a);if(c===t||!_(t,c))return;let d=i.relative(t,c).split(i.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||r&&Gn.some(l=>l===d)?void 0:c}catch(c){if(!r||c.code!=="ENOENT")return;try{vr(a);return}catch(l){if(l.code!=="ENOENT")return}let d=i.dirname(a);if(d===a)return;a=d}return}catch{return}}s(so,"windowsAgentHomeAccessRoot");function Jr(e,n){if(!n)return{read:[],write:[]};let r=s((t,o)=>[...new Set(t.flatMap(a=>{let c=so(a,e,o);return c?[c]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}s(Jr,"windowsAgentHomeAccessRoots");function Ke(e){return e??(process.platform==="win32"?process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}s(Ke,"workspaceShellExecutable");function io(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}s(io,"shellEnvironmentValue");function ao(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:i.join(n,"Programs"),n,process.env.APPDATA,i.join(e,"AppData","Local","Programs"),i.join(e,"AppData","Local"),i.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[i.resolve(t)]))].filter(t=>_(e,t)).sort((t,o)=>o.length-t.length)}s(ao,"workspaceShellUserDataBoundaries");function co(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!vr(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&_(d,n));if(t===void 0)return[];let[o]=i.relative(t,n).split(i.sep);if(!o)return[];let a=i.join(t,o),c=[];for(let d=i.dirname(n);d.toLowerCase()!==a.toLowerCase()&&_(a,d);d=i.dirname(d))c.push(d);return c}s(co,"workspaceShellLinkedTargetAncestors");function dn(e,n){let r=i.resolve(te.homedir()),t=i.resolve(X()),o=Qn(r,t,i.join(t,"sandbox-runtime")),a=ao(r),c=new Map,d=s(f=>{let p=i.resolve(f);if(!(p===i.parse(p).root||p.toLowerCase()===r.toLowerCase()||_(t,p)||_(p,t)||o.some(w=>_(w,p))))return p},"safe"),l=s((f,p)=>{let w=d(f);if(w===void 0)return;let h;try{h=ce(w)}catch{return}if(d(h)===void 0)return;let k=p?[w,h].filter(b=>_(r,b)):[w,h];for(let b of k)c.set(process.platform==="win32"?b.toLowerCase():b,b);if(p&&k.includes(h))for(let b of co(w,h,a)){let v=d(b);v!==void 0&&_(r,v)&&c.set(v.toLowerCase(),v)}},"remember");for(let f of(io(e,"PATH")??"").split(i.delimiter)){let p=f.trim().replace(/^"(.*)"$/,"$1");p&&i.isAbsolute(p)&&l(p,!0)}let u=Ke(n);i.isAbsolute(u)&&l(i.dirname(u),!0);let g=gn();if(i.isAbsolute(g)){let f=d(g);f!==void 0&&c.set(process.platform==="win32"?f.toLowerCase():f,f),l(i.dirname(g),!1)}return[...c.values()].sort((f,p)=>f.toLowerCase().localeCompare(p.toLowerCase()))}s(dn,"workspaceShellRuntimeReadScopes");function Ur(e,n,r,t,o=dn(process.env,Ke())){let a=i.resolve(X()),c=i.join(a,"sandbox-runtime"),d=i.resolve(te.homedir()),l=Qn(d,a,c),u=process.platform==="win32"?er(l):l.filter(p=>p!==a),g=process.platform==="win32"?Jr(a,r):{read:[],write:[]},f=no([e,...oo(n),...g.write,...t?.write??[]],a);return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:[...new Set([...o,...g.read,...t?.read??[]])],allowWrite:f,denyWrite:[c,...Gn.map(p=>i.join(a,p)),...qr(e)]}})}s(Ur,"workspaceShellSandboxConfig");function Vr(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform!=="win32"?a:Hr(a)}s(Vr,"workspaceShellSessionSandboxConfig");function Hr(e){let n=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(r=>n.some(t=>_(t,r)))}}}s(Hr,"boundedWindowsWorkspaceDenies");function lo(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform==="win32"?Hr(a):a}s(lo,"workspaceShellCommandSandboxConfig");function Ye(e,n){return[...new Set((e??[]).map(r=>i.resolve(n,r)))]}s(Ye,"normalizedSandboxPaths");function uo(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(uo,"sdkSandboxEndpoints");async function Go(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=i.resolve(e.cwd),r=e.network??{mode:"deny"},t=uo(r),o=await Y();if(!o.ready){if(!pn(o))return{status:"unavailable",sandboxed:!1,doctor:o};if(await sn(),o.setupRequired)return{status:"unavailable",sandboxed:!1,doctor:o}}let a=Fr(e.inheritEnvironment===!0?process.env:Re(),e.env??{}),c={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:Ye(e.filesystem.allowRead,n),allowWrite:Ye(e.filesystem.allowWrite,n),denyRead:Ye(e.filesystem.denyRead,n),denyWrite:Ye(e.filesystem.denyWrite,n)}}),command:e.command,args:e.args??[],cwd:n,env:a,endpoints:t,allowAllNetwork:r.mode==="allow"},d=await Mr(c,e.signal,e.timeoutMs??Kn,e.maxOutputBytes??qn);return{status:"completed",sandboxed:!0,exitCode:d.exitCode,stdout:d.stdout,stderr:d.stderr}}s(Go,"runKodaXSandboxed");var fo=5*6e4,po=3e4,wo=3e4,Ze=1500,zr=13e4,mo=zr,go=wo,yo=mo,So=8,I=new Map,De=new Set,Se=new Set,he=new Set,Ie,Bn,cn=!1;function ue(e){let n=e instanceof Error?e:new Error(String(e));if(process.platform!=="win32"){Bn??=n;return}Ie??=n}s(ue,"recordWindowsSandboxAclFailure");function yn(){if(process.platform!=="win32"&&Bn!==void 0)throw new Error("Sandbox process cleanup was not confirmed; stop the retained process tree before more sandboxed commands.",{cause:Bn});if(process.platform==="win32"&&Ie!==void 0)throw Ie instanceof Z?Ie:new Error("Windows sandbox ACL cleanup was not confirmed; stop the retained owner or restart Windows before more sandboxed commands.",{cause:Ie})}s(yn,"assertWindowsSandboxAclProcessSafe");function Sn(e){yn(),process.platform==="win32"&&zn(e)}s(Sn,"assertWindowsSandboxAclSafe");function Yr(e){Se.add(e),e.then(()=>Se.delete(e),()=>Se.delete(e))}s(Yr,"trackWorkspaceSessionReset");function ho(e){he.add(e),e.then(()=>he.delete(e),n=>{he.delete(e),$({source:"sandbox:workspace-session",level:"error",message:"Workspace sandbox durable ACL poison transition failed.",detail:n})})}s(ho,"trackWindowsSandboxAclTransition");async function bo(){for(;he.size>0;)await Promise.allSettled([...he])}s(bo,"waitForWindowsSandboxAclTransitions");async function rr(){for(;Se.size>0;)await Promise.allSettled([...Se]);await bo(),yn()}s(rr,"waitForWorkspaceSessionResets");async function tr(e=!1){let n=[...I.values()];I.clear();let r=[];for(let t of n)try{await(await t).close(e)}catch(o){r.push(o),$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox shutdown could not confirm ACL reset.",detail:o})}return r}s(tr,"closeCachedWorkspaceSessions");var Zr=s(()=>{cn=!1,tr()},"closeWorkspaceSessionsBeforeExit");function vo(){cn||(cn=!0,process.once("beforeExit",Zr))}s(vo,"registerWorkspaceSessionBeforeExit");async function Jo(){for(process.removeListener("beforeExit",Zr),cn=!1;De.size>0;)await Promise.allSettled([...De]);let e=await tr();try{await rr()}catch(n){e.push(n)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Workspace sandbox shutdown was not confirmed.")}s(Jo,"shutdownAsrtWorkspaceSessions");function Qr(){let e=new Error("ASRT workspace session preparation timed out.");return e.name="TimeoutError",e}s(Qr,"workspacePreparationTimeoutError");function ln(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Qr()}s(ln,"throwIfWorkspacePreparationStopped");function Fn(e,n,r){return ln(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let a=!1,c,d=s(u=>{a||(a=!0,c&&clearTimeout(c),n?.removeEventListener("abort",l),u())},"finish"),l=s(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(c=setTimeout(()=>{d(()=>o(Qr()))},Math.max(0,r-Date.now())),c.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}s(Fn,"waitForWorkspacePreparation");async function hn(){let e=i.join(X(),"sandbox-runtime");return await K(e,{recursive:!0,mode:448}),e}s(hn,"sandboxControlDirectory");function xo(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-workspace-session",e];if(import.meta.url.endsWith(".ts"))return["--import",Ar(Xn.resolve("tsx")).href,ur(new URL("./sandbox-workspace-session-entry.ts",import.meta.url)),e];let n=i.dirname(ur(import.meta.url)),r=i.basename(n)==="chunks"?i.dirname(n):n;return[i.join(r,"sandbox-workspace-session.js"),e]}s(xo,"workspaceSessionEntryArgs");function Qe(e,n){let r=n?"ref":"unref";e[r]();for(let t of e.stdio){if(!t)continue;t[r]?.()}}s(Qe,"setWorkspaceSessionReferenced");async function et(e,n,r){if(e)return n();let t=await xn(r);try{return await n()}finally{await t()}}s(et,"withExclusiveFileSystemEffectFence");async function ko(e,n,r,t,o,a,c){let d=process.platform==="win32"?to(e,o):void 0;d!==void 0&&await K(d,{recursive:!0,mode:448});let l=await hn();process.platform==="win32"&&Dn(qr(e),"write");let u=i.join(l,`workspace-${process.pid}-${H()}.json`),g=nr(Vr(e,d,n,r,t));await ve(u,JSON.stringify({config:g}),{mode:384});let f=Te({args:xo(u),env:Re(),isElectron:process.versions.electron!==void 0}),p;try{p=await Lr(o)}catch(y){let m=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]),x=[y,...m.flatMap(C=>C.status==="rejected"?[C.reason]:[])];throw x.length===1?y:new AggregateError(x,"Workspace sandbox owner admission and pre-launch cleanup both failed.")}let w;try{w=hr(process.execPath,f.args,{cwd:process.platform==="win32"?Ae().directory:void 0,env:f.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0})}catch(y){let m=[y];try{await In(p)}catch(C){await ze(p,C),m.push(C)}let x=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]);throw m.push(...x.flatMap(C=>C.status==="rejected"?[C.reason]:[])),m.length===1?y:new AggregateError(m,"Workspace sandbox owner launch cleanup failed.")}bn(w);let h=w.pid===void 0?void 0:_e(w.pid),k=w.stdio[3];if(!k)throw new Error("ASRT workspace session control pipe was not created.");let b=ct.createInterface({input:k}),v=new Map,S="",A=!1,E=!1,L=!1,P=!1,z=0,R=0,M,j,oe,fe=new Promise(y=>{w.once("exit",(m,x)=>y({code:m,signal:x}))}),pe=fe.then(async()=>{if(d!==void 0)try{await Pn(d)}catch(y){$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox temp cleanup failed.",detail:y})}}),Je=s(async(y=!1)=>{let m=await fe;await pe;let x=[];if(!y&&(m.code!==0||m.signal!==null)){let C=m.signal===null?`code ${m.code??"unknown"}`:`signal ${m.signal}`;x.push(new Error(`ASRT workspace session ACL reset was not confirmed (${C}): ${S.trim()||"no diagnostics"}`))}try{await In(p)}catch(C){x.push(C)}if(x.length===1)throw x[0];if(x.length>1)throw new AggregateError(x,"Workspace sandbox cleanup was not confirmed.")},"confirmCleanReset"),B,J,F=new Promise((y,m)=>{B=y,J=m}),Pe=s(()=>{P||(P=!0,c())},"evict"),Ue=s(async()=>{if(!E||!L||R!==0||w.exitCode!==null||w.signalCode!==null||!w.stdin.writable)return!1;try{w.stdin.end()}catch{return!1}let y;try{let m=await Promise.race([fe,new Promise(x=>{y=setTimeout(x,process.platform==="win32"?zr:Ze)})]);return m!==void 0&&m.code===0&&m.signal===null}finally{y!==void 0&&clearTimeout(y)}},"waitForOrderlyClose"),N,Ce=!1,or=!1,Q=s(()=>N||(or=!0,N=(async()=>{try{if(await Ue())return;if((await vn(w,{gracefulStdinEnd:!1,gracefulMs:Ze,forceMs:Ze,taskkillMs:Ze})).status==="unknown")throw await _r(w.pid,h,Or("ASRT workspace session"),p);Ce=!0}finally{b.close(),k.destroy(),w.stdin.destroy()}})().finally(Pe),N),"terminate"),ee=s(y=>{if(!A){A=!0,J(y);for(let m of v.values())m.reject(y);v.clear()}},"fail");w.stderr.on("data",y=>{S=(S+y.toString("utf8")).slice(-16384)}),w.stdout.on("data",y=>{S=(S+y.toString("utf8")).slice(-16384)}),b.on("line",y=>{let m;try{m=JSON.parse(y)}catch{ee(new Error("ASRT workspace session returned malformed control data.")),Q();return}if(m.type==="ready"){m.ok?(L=!0,B()):J(new Error(m.error??"ASRT workspace session failed."));return}if(m.type!=="result"||!m.id){ee(new Error("ASRT workspace session returned an invalid control response.")),Q();return}let x=v.get(m.id);x&&(v.delete(m.id),x.resolve(m))}),w.once("error",y=>{ee(y),Q()}),b.once("close",()=>{E||A||(ee(new Error("ASRT workspace session control pipe closed unexpectedly.")),Q())}),w.once("exit",(y,m)=>{j&&clearTimeout(j);let x=new Error(`ASRT workspace session exited ${m??y??1}: ${S.trim()||"no diagnostics"}`);!or&&(y!==0||m!==null||!E)&&ho(ze(p,x)),ee(x),Pe()});let rt=setTimeout(()=>{ee(new Error("ASRT workspace session initialization timed out.")),Q()},po);try{await F.finally(()=>clearTimeout(rt))}catch(y){E=!0;let m=[y],x=!1;try{await Q(),x=!0}catch(C){m.push(C)}if(x)try{await Je(Ce)}catch(C){await ze(p,C),m.push(C)}throw await G(u,{force:!0}),m.length===1?y:new AggregateError(m,`Workspace sandbox startup cleanup failed: ${de(m.at(-1))}`)}let Ve=s(async(y,m)=>{if(A||E&&y==="wrap")throw new Error("ASRT workspace session is unavailable.");let x=`workspace_${++z}`,C=new Promise((D,me)=>{v.set(x,{resolve:D,reject:me})}),ne=setTimeout(()=>{ee(new Error(`ASRT workspace session ${y} request timed out.`)),we.close(a).catch(D=>{$({source:"sandbox:workspace-session",level:"warn",message:"Timed-out workspace sandbox request could not retire its session.",detail:D})})},y==="cleanup"?yo:go);ne.unref();try{await new Promise((D,me)=>{w.stdin.write(`${JSON.stringify({id:x,type:y,request:m})}
518
+ `,$e=>$e?me($e):D())})}catch(D){throw v.delete(x),clearTimeout(ne),ee(D instanceof Error?D:new Error(String(D))),Q(),D}return C.finally(()=>clearTimeout(ne))},"request"),sr=s(()=>{if(j&&clearTimeout(j),!(R>0||E||A)){if(process.platform==="win32"){Qe(w,!1);return}j=setTimeout(()=>{we.close().catch(y=>{$({source:"sandbox:workspace-session",level:"warn",message:"Idle workspace sandbox session could not confirm ACL reset.",detail:y})})},fo),j.unref(),Qe(w,!1)}},"scheduleIdleClose"),we={policyKey:o,...d===void 0?{}:{tempDirectory:d},async acquire(y,m,x){if(Sn(o),ln(m,x),A||E)throw new Error("ASRT workspace session is unavailable.");j&&clearTimeout(j),Qe(w,!0),R+=1;let C=!1,ne=s(()=>{if(C)return!1;C=!0,R-=1;let U=R===0;return R===0&&(M?.(),M=void 0),sr(),U},"finalize"),D=s(async()=>{ne()&&process.platform==="win32"&&await we.close(a)},"finalizeAndCloseIfIdle"),me=s((U,W)=>{$({source:"sandbox:workspace-session",level:"warn",message:U,detail:W}),ne()&&we.close(a).catch(V=>{$({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace sandbox cleanup could not retire its session.",detail:V})})},"retireAfterCleanupFailure"),$e=Ve("wrap",y),We;try{We=await Fn($e,m,x)}catch(U){throw $e.then(async W=>{if(!W.ok||!W.invocation)return;let T=await Ve("cleanup");if(!T.ok)throw new Error(T.error??"ASRT command cleanup failed.")}).then(D,W=>me("Late workspace sandbox preparation cleanup failed.",W)),U}try{if(!We.ok||!We.invocation){ne();let W=new Error(We.error??"ASRT workspace wrapping failed.");try{await we.close(a)}catch(T){let V=T instanceof Error?T.message:String(T);throw new Error(`${W.message} Workspace session reset failed: ${V}`,{cause:W})}throw W}try{ln(m,x)}catch(W){try{let T=await Ve("cleanup");if(!T.ok)throw new Error(T.error??"ASRT command cleanup failed.")}catch(T){me("Cancelled workspace sandbox preparation cleanup failed.",T)}throw await D(),W}let U=!1;return{invocation:We.invocation,async release(){if(U)return;U=!0;let W;try{let V=await Ve("cleanup");if(!V.ok)throw new Error(V.error??"ASRT command cleanup failed.")}catch(V){W=V}let T;try{await D()}catch(V){T=V}if(W!==void 0&&T!==void 0)throw new AggregateError([W,T],"Workspace sandbox command cleanup and policy-group reset both failed.");if(W!==void 0)throw W;if(T!==void 0)throw T}}}catch(U){throw ne(),U}},async close(y=!1){return oe||(E=!0,Pe(),oe=(async()=>{j&&clearTimeout(j),Qe(w,!0),R>0&&await new Promise(m=>{M=m}),await et(a||y,async()=>{await Q(),await Je()},o)})().catch(async m=>{throw await ze(p,m),m}),Yr(oe),oe)}};return sr(),we}s(ko,"startWorkspaceSessionClientWithFence");function yr(e,n,r,t,o,a,c){return et(a,async()=>{if(nt(e,n,r,t)!==o)throw new Error("Sandbox policy paths changed before ACL initialization.");return Sn(o),await sn(o),ko(e,n,r,t,o,a,c)},o)}s(yr,"startWorkspaceSessionClient");function Cn(e){return[...new Set(e.map(n=>{let r=i.resolve(n);return process.platform==="win32"?r.toLowerCase():r}))].sort()}s(Cn,"normalizedWorkspacePolicyPaths");function Le(e){let n=s(t=>{let o=i.resolve(t);return process.platform==="win32"?o.toLowerCase():o},"normalize"),r=null;try{r=n(ce.native(e))}catch{}return{lexical:n(e),canonical:r}}s(Le,"workspacePolicyPathIdentity");function en(e){let n=new Map;for(let r of e){let t=Le(r);n.set(`${t.lexical}\0${t.canonical??""}`,t)}return[...n.values()].sort((r,t)=>r.lexical.localeCompare(t.lexical)||(r.canonical??"").localeCompare(t.canonical??""))}s(en,"workspacePolicyPathIdentities");function nt(e,n,r,t){let o=Vr(e,void 0,n,r,t);return un("sha256").update(JSON.stringify({workspace:Le(e),agentHome:Le(X()),tempBase:Le(te.tmpdir()),filesystem:{allowRead:en(o.filesystem.allowRead),allowWrite:en(o.filesystem.allowWrite),denyRead:en(o.filesystem.denyRead),denyWrite:en(o.filesystem.denyWrite)},network:o.network,windowsRunner:process.platform==="win32"?{version:ae,architecture:process.arch,path:Le(Ae().path)}:null,ephemeral:n?.ephemeral===!0})).digest("hex")}s(nt,"workspaceShellPolicyKey");function Ao(e){return process.platform!=="win32"?!0:(e?.write??[]).every(n=>{try{return ce.native(n),!0}catch{return!1}})}s(Ao,"workspaceShellFilesystemAccessIsRepresentable");async function Sr(e,n,r,t=dn(process.env,Ke()),o=t,a=!1){if(process.platform==="win32"){if(Se.size>0||he.size>0)return}else await rr();yn();let c=await Y();if(!c.ready&&!pn(c))return;if(process.platform!=="win32"){let v=X();await Promise.all([hn(),...Gn.map(S=>K(i.join(v,S),{recursive:!0,mode:448}))])}let d=nt(e,process.platform==="win32"?n:void 0,r,t);if(!c.ready&&(await sn(d),c.setupRequired))return;await sn(d),Sn(d),vo();let l=process.platform==="win32"?n:void 0,u=process.platform==="win32"?e.toLowerCase():e,g=Cn,f=g(t),p=JSON.stringify(f)===JSON.stringify(g(o)),w=(r?.read.length??0)>0||(r?.write.length??0)>0,h=l===void 0&&!w&&p?"workspace":un("sha256").update(JSON.stringify({read:[...l?.read??[]].map(v=>v.toLowerCase()).sort(),write:[...l?.write??[]].map(v=>v.toLowerCase()).sort(),additionalRead:Cn(r?.read??[]),additionalWrite:Cn(r?.write??[]),runtimeReadScopes:f})).digest("hex"),k=process.platform==="win32"?d:`${u}\0${h}`;if(process.platform==="win32"&&a){let v=l?.ephemeral===!0?void 0:k;for(let[S,A]of[...I])if(S!==v){I.delete(S);try{await(await A).close(!0)}catch(E){throw $({source:"sandbox:workspace-session",level:"warn",message:"Retiring the previous Windows workspace sandbox scope failed.",detail:E}),E}}}if(l?.ephemeral===!0)return yr(e,l,r,t,d,a,()=>{});let b=I.get(k);if(b&&(I.delete(k),I.set(k,b)),!b){if(process.platform!=="win32"&&h!=="workspace"){let v=[...I.keys()].filter(S=>!S.endsWith("\0workspace"));if(v.length>=So){let S=v[0],A=I.get(S);if(I.delete(S),A)try{await(await A).close()}catch(E){throw $({source:"sandbox:workspace-session",level:"warn",message:"Retiring an old scoped workspace sandbox failed.",detail:E}),E}}}b=yr(e,l,r,t,d,a,()=>{I.get(k)===b&&I.delete(k)}),I.set(k,b),b.catch(()=>{I.get(k)===b&&I.delete(k)})}return b}s(Sr,"getWorkspaceSession");function Uo(e){let n=i.resolve(e.workspaceRoot),r=dn(process.platform==="win32"?{}:process.env,Ke()),t=process.platform==="win32"?void 0:Sr(n,void 0,void 0,r,r);return t!==void 0&&(De.add(t),t.then(()=>De.delete(t),()=>De.delete(t)),t.catch(o=>{$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox warm-up failed; admitted commands will use normal permission fallback.",detail:o})})),{processTreeContainment:process.platform==="linux"?"root-exit-drains":void 0,async prepare(o){if(!o.toolCallId){o.reportObservation?.({version:1,state:"not_selected"});return}let a={id:o.toolCallId,name:"bash",input:{...o.toolInput}},c=await e.shouldSandbox(a);if(!c){o.reportObservation?.({version:1,state:"not_selected"});return}let d=typeof c=="object"?c.agentHomeAccess:void 0,l=process.platform==="win32"&&d!==void 0?Jr(i.resolve(X()),d):d,u=typeof c=="object"?c.filesystemAccess:void 0;if(!Ao(u)){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let g=process.platform==="win32"&&l?.ephemeral===!0,f=Ke(o.executable),p=o.args??(process.platform==="win32"?["/d","/s","/c",o.command]:["-c",o.command]),w=Yn(o.env),h=dn(w,f),k,b;try{t!==void 0&&(await Fn(t.then(()=>{},()=>{}),o.signal,o.deadlineAt),ln(o.signal,o.deadlineAt));let v=Sr(n,l,u,h,r),S;try{S=await Fn(v,o.signal,o.deadlineAt)}catch(B){if(process.platform==="win32"&&(o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt)){let J=v.then(async F=>{F&&await F.close()},async()=>{});Yr(J),J.catch(F=>{$({source:"sandbox:workspace-session",level:"warn",message:"Late cancelled workspace session rollback failed.",detail:F})})}throw B}if(!S){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let A=S.policyKey;b=S;let E=await hn(),L=i.join(E,`kodax-asrt-shell-${process.pid}-${H()}.json`),P=i.join(E,`kodax-asrt-observation-${process.pid}-${H()}.json`),z=w;if(process.platform==="win32"){let B=S.tempDirectory;if(B===void 0)throw new Error("Windows workspace sandbox temp directory is unavailable.");z=Fr(w,{TEMP:B,TMP:B,TMPDIR:B,GIT_CONFIG_GLOBAL:"NUL",GIT_CONFIG_NOSYSTEM:"1"})}let R={config:nr(lo(n,S.tempDirectory,l,u,h)),command:f,args:p,windowsVerbatimArguments:o.windowsVerbatimArguments===!0,cwd:o.cwd,env:z,endpoints:[],allowAllNetwork:!0,bootstrapCommand:gn(),fallbackToNormalExecution:!0,observationBackend:mt().backend,observationFile:P,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${H()}\0
519
+ `},M=await S.acquire(R,o.signal,o.deadlineAt);k=M;let j={...R,wrappedInvocation:M.invocation},oe=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",L]:["--input-type=module","-e",Cr,Rr,L],fe=Te({args:oe,env:Re(),isElectron:process.versions.electron!==void 0});await ve(L,JSON.stringify(j),{mode:384});let pe,Je=s(async()=>{g||(pe===void 0&&(pe=b?.close(!1)??Promise.resolve(),pe.catch(B=>{$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox session retirement failed.",detail:B})})),process.platform==="win32"&&await pe)},"retireWorkspaceSession");return{executable:process.execPath,args:fe.args,env:fe.env,fileSystemEffectPolicyKey:A,authorizeStart:s(()=>Sn(A),"authorizeStart"),async cleanup(B){let J,F=[];try{J=await be(P,"utf8").then(Bt).catch(N=>{if(N.code!=="ENOENT")throw N})}catch(N){F.push(N)}let Pe=await Promise.allSettled([G(L,{force:!0}),G(P,{force:!0})]);for(let N of Pe)N.status==="rejected"&&F.push(N.reason);try{await M.release()}catch(N){F.push(N)}let Ue=B?.execution==="started_or_unknown"&&J===void 0;if(Ue&&F.push(new Error("Required OS sandbox execution could not be attested; the workspace session must be retired and the command was not retried")),F.length>0){let N=Ue?"Required OS sandbox execution could not be attested and request cleanup failed; the workspace session must be retired and the command was not retried.":"Required OS sandbox request cleanup failed; the workspace session must be retired.",Ce=new AggregateError(F,N);throw $({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox command cleanup failed.",detail:Ce}),Ce}return J},retire:Je}}catch(v){let S=[v],A=o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt,E=!1;if(k)try{await k.release()}catch(P){E=!0,S.push(P),$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox lease release failed.",detail:P})}if(A&&process.platform==="win32"&&b&&k===void 0)throw b.close().catch(P=>{$({source:"sandbox:workspace-session",level:"warn",message:"Cancelled workspace preparation cleanup could not retire its session.",detail:P})}),v;if(process.platform==="win32"&&b)try{await b.close()}catch(P){S.push(P),$({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})}else E&&b&&b.close().catch(P=>{$({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})});if(A)throw v;let L=S.length===1?v:new AggregateError(S,`Workspace sandbox preparation failed and cleanup was incomplete: ${S.map(de).join(" | ")}`);$({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox preparation failed; using normal permission fallback.",detail:L}),o.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}}}}s(Uo,"createAsrtShellSandbox");async function Vo(e){let n=await Y();if(!n.ready)throw new Error(`ASRT ${ae} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let r=i.join(e.snapshotRoot,H()),t=i.join(r,"skills");await K(t,{recursive:!0,mode:448});try{let o=await Kt(e,t),a=Xt(e.network),c=Promise.resolve();return{async run(d,l){let u=c,g;if(c=new Promise(f=>{g=f}),await u,l.signal?.aborted)throw g?.(),l.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(d.args.length>64||d.args.some(h=>h.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(d.inputs.length>32||d.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let f=re(d.script,"Skill script"),p=o.get(`${d.skill}\0${f}`);if(!p)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(i.extname(p.snapshotPath).toLowerCase())&&d.args.some(h=>/[&|<>^]/.test(h)))throw new Error("Batch Skill script arguments cannot contain command operators.");let w=i.join(l.workspaceRoot,".kodax-a2a-script",H());try{await K(i.join(w,"inputs"),{recursive:!0,mode:448}),await K(i.join(w,"outputs"),{recursive:!0,mode:448}),await Yt(l.workspaceRoot,w,d,e.workspaceAccess);let h=Gt(p.snapshotPath),k=await Vt({config:Qt(w,r,a,h.command),command:h.command,args:[...h.args,...d.args],cwd:w,env:Re(),endpoints:a},l.signal),b=await Zt(l.workspaceRoot,w,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:k.trim(),outputs:b})}finally{await G(w,{recursive:!0,force:!0})}}finally{g?.()}},async dispose(){await c,await G(r,{recursive:!0,force:!0})}}}catch(o){throw await G(r,{recursive:!0,force:!0}),o}}s(Vo,"createAsrtSkillScriptRunner");export{ae as a,mt as b,Y as c,jt as d,ye as e,Xo as f,Go as g,Jo as h,Uo as i,Vo as j};