@kodax-ai/kodax 0.7.96 → 0.7.97-alpha.2

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 (127) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +85 -62
  3. package/README_CN.md +57 -67
  4. package/config-templates/config.example.jsonc +0 -14
  5. package/dist/chunks/{agent-7N427EVB.js → agent-J7SHFM5N.js} +1 -1
  6. package/dist/chunks/argument-completer-ZJQOWTIS.js +2 -0
  7. package/dist/chunks/{chunk-ABZDFK2X.js → chunk-2GV6MQ4T.js} +14 -14
  8. package/dist/chunks/{chunk-6QI3GOYG.js → chunk-3PS3YEDS.js} +1 -1
  9. package/dist/chunks/chunk-4VJMQDTH.js +417 -0
  10. package/dist/chunks/{chunk-NI7PBPUR.js → chunk-5DSUVP46.js} +1 -1
  11. package/dist/chunks/chunk-5P7RTSZT.js +21 -0
  12. package/dist/chunks/{chunk-XXNR6S4Q.js → chunk-6ZAQKFIM.js} +1 -1
  13. package/dist/chunks/chunk-7V2QBZ73.js +137 -0
  14. package/dist/chunks/{chunk-C7U542KM.js → chunk-F7DHZH6T.js} +1 -1
  15. package/dist/chunks/{chunk-7IMWOR34.js → chunk-HSRYDDPF.js} +1 -1
  16. package/dist/chunks/chunk-K3DQGSQU.js +372 -0
  17. package/dist/chunks/chunk-NO23K2CB.js +2 -0
  18. package/dist/chunks/{chunk-NKT3B3DR.js → chunk-OT5WHAX4.js} +1 -1
  19. package/dist/chunks/{chunk-YEAUDI6U.js → chunk-QGWHJIO4.js} +1 -1
  20. package/dist/chunks/chunk-QOFFAY5C.js +261 -0
  21. package/dist/chunks/{chunk-4PFZ7BEE.js → chunk-QVDTORL3.js} +11 -11
  22. package/dist/chunks/chunk-QZ4B4AWG.js +473 -0
  23. package/dist/chunks/chunk-RXDS6CNA.js +355 -0
  24. package/dist/chunks/{chunk-WV3DJVW4.js → chunk-VDGPJQL7.js} +135 -135
  25. package/dist/chunks/chunk-VEZ4WHPN.js +641 -0
  26. package/dist/chunks/chunk-ZPPAT25E.js +5 -0
  27. package/dist/chunks/chunk-ZQYWDI4O.js +1 -0
  28. package/dist/chunks/chunk-ZS2GUADU.js +498 -0
  29. package/dist/chunks/{chunk-GN2IY5YE.js → chunk-ZTYZYXGV.js} +1 -1
  30. package/dist/chunks/{chunk-EM4XJBTK.js → chunk-ZZQ4GDVU.js} +1 -1
  31. package/dist/chunks/{client-6WZZTTSV.js → client-MXOJ5XUN.js} +1 -1
  32. package/dist/chunks/{compaction-config-ZMEJU4U7.js → compaction-config-5VZSGKBQ.js} +1 -1
  33. package/dist/chunks/{construction-bootstrap-RX4DMHI7.js → construction-bootstrap-U2ZU2WAT.js} +1 -1
  34. package/dist/chunks/dist-CSLNWLOE.js +2 -0
  35. package/dist/chunks/dist-XXMJMJDU.js +2 -0
  36. package/dist/chunks/host-RUXYZFYN.js +2 -0
  37. package/dist/chunks/readline-helpers-JCVULR4C.js +2 -0
  38. package/dist/chunks/run-manager-DRIM5VNE.js +2 -0
  39. package/dist/chunks/utils-MQEBGKIX.js +2 -0
  40. package/dist/index.d.ts +63 -30
  41. package/dist/index.js +10 -6
  42. package/dist/kodax_bootstrap.js +1 -1
  43. package/dist/kodax_cli.js +1745 -1734
  44. package/dist/kodax_resume.js +32 -35
  45. package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
  46. package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
  47. package/dist/native/win32-x64/manifest.json +2 -2
  48. package/dist/sandbox-network-broker.js +77 -77
  49. package/dist/sdk-a2a.d.ts +33 -18
  50. package/dist/sdk-a2a.js +8 -9
  51. package/dist/sdk-agent.d.ts +33 -26
  52. package/dist/sdk-agent.js +1 -1
  53. package/dist/sdk-client.d.ts +40 -0
  54. package/dist/sdk-client.js +2 -0
  55. package/dist/sdk-coding.d.ts +87 -499
  56. package/dist/sdk-coding.js +1 -1
  57. package/dist/sdk-experimental-memory.d.ts +3 -4
  58. package/dist/sdk-experimental-memory.js +1 -1
  59. package/dist/sdk-llm.d.ts +11 -9
  60. package/dist/sdk-llm.js +1 -1
  61. package/dist/sdk-mcp.d.ts +3 -3
  62. package/dist/sdk-mcp.js +1 -1
  63. package/dist/sdk-media.d.ts +3 -1
  64. package/dist/sdk-media.js +1 -1
  65. package/dist/sdk-repl.d.ts +317 -70
  66. package/dist/sdk-repl.js +2 -2
  67. package/dist/sdk-runtime.d.ts +580 -452
  68. package/dist/sdk-runtime.js +1 -1
  69. package/dist/sdk-sandbox.js +1 -1
  70. package/dist/sdk-session.d.ts +13 -9
  71. package/dist/sdk-session.js +1 -1
  72. package/dist/sdk-skills.js +1 -1
  73. package/dist/semantic-worker.js +57 -57
  74. package/dist/types-chunks/{base.d-Bt9lhwSV.d.ts → base.d-ZBOdjDUT.d.ts} +2 -1
  75. package/dist/types-chunks/{bash-prefix-extractor.d-DWFIMg0v.d.ts → bash-prefix-extractor.d-DvswAXKS.d.ts} +136 -66
  76. package/dist/types-chunks/{capability-learning.d-gRtO03f6.d.ts → capability-learning.d-B4pxKwP4.d.ts} +1 -1
  77. package/dist/types-chunks/{capability.d-Ch5Vos33.d.ts → capability.d-DOF3r0fJ.d.ts} +1 -1
  78. package/dist/types-chunks/{capsule.d-Dj1n6s0Y.d.ts → capsule.d-B4atvlxE.d.ts} +7 -19
  79. package/dist/types-chunks/client-contract-A1jdk6xz.d.ts +1993 -0
  80. package/dist/types-chunks/{controller.d-C0IM1Tud.d.ts → controller.d-BkUJ_3sl.d.ts} +1 -1
  81. package/dist/types-chunks/{controller.d-J2t1q8Ly.d.ts → controller.d-yyKajPTi.d.ts} +140 -1380
  82. package/dist/types-chunks/{cost-tracker.d-BWI4lFWn.d.ts → cost-tracker.d-BeaenODW.d.ts} +2 -47
  83. package/dist/types-chunks/{history-retrieval.d-CPN5PMBV.d.ts → history-retrieval.d-JdFfkeF3.d.ts} +2 -2
  84. package/dist/types-chunks/{manager.d-rtmywU9M.d.ts → manager.d-C_20XqCV.d.ts} +8 -1
  85. package/dist/types-chunks/manifest.d-Bw2i-zQi.d.ts +18 -0
  86. package/dist/types-chunks/provider-credential-context.d-BH2OaB1b.d.ts +47 -0
  87. package/dist/types-chunks/provider-request-observation.d-jL8T6wVO.d.ts +34 -0
  88. package/dist/types-chunks/{public-api.d-amBop8Nk.d.ts → public-api.d-Cq8ILMte.d.ts} +52 -13
  89. package/dist/types-chunks/{resolver.d-BrwLoWNr.d.ts → resolver.d-DLY01RHx.d.ts} +4 -2
  90. package/dist/types-chunks/{types.d-CSv0_cZC.d.ts → review-inbox.d-BeaLRNHx.d.ts} +251 -3
  91. package/dist/types-chunks/{shell-command-sets.d-oejwpP_7.d.ts → review-packet.d-D4bbTbq3.d.ts} +46 -3
  92. package/dist/types-chunks/{exec-policy.d-BPESl90L.d.ts → run-manager.d-C7Q71rin.d.ts} +385 -62
  93. package/dist/types-chunks/runtime-client-info-CxnlZlW5.d.ts +175 -0
  94. package/dist/types-chunks/{sdk-session-B6XjHNU1.d.ts → sdk-session-BDFjCpDn.d.ts} +12 -4
  95. package/dist/types-chunks/{side-query.d-DHWG1JZg.d.ts → side-query.d-DTrhVd_r.d.ts} +4 -3
  96. package/dist/types-chunks/trusted-repl-entry-vbUM8R6P.d.ts +445 -0
  97. package/dist/types-chunks/{types.d-CtO8mR1s.d.ts → types.d-BJTN-RZr.d.ts} +5 -5
  98. package/dist/types-chunks/{types.d-BrQMB-hy.d.ts → types.d-BjOq57-z.d.ts} +6 -0
  99. package/dist/types-chunks/types.d-o7t9dds4.d.ts +1484 -0
  100. package/dist/types-chunks/{utils.d-DcznBeQ3.d.ts → utils.d-CWiMhFfu.d.ts} +202 -36
  101. package/docs/CLIENT_CONTRACT.md +441 -0
  102. package/docs/SDK_MIGRATION.md +123 -0
  103. package/docs/SPACE_SDK_SEAMS.md +139 -0
  104. package/package.json +10 -5
  105. package/public_docs/README.md +12 -133
  106. package/public_docs/configuration/config-files.md +8 -14
  107. package/public_docs/sdk/embedder-guide.md +494 -420
  108. package/dist/chunks/argument-completer-FAIHW7HZ.js +0 -2
  109. package/dist/chunks/chunk-66XN5AFU.js +0 -417
  110. package/dist/chunks/chunk-7O2AIFNE.js +0 -373
  111. package/dist/chunks/chunk-DSXUXUZG.js +0 -5
  112. package/dist/chunks/chunk-GYO73UYQ.js +0 -275
  113. package/dist/chunks/chunk-HPCS3LZ5.js +0 -324
  114. package/dist/chunks/chunk-HZYRLIOC.js +0 -137
  115. package/dist/chunks/chunk-SC2ELSUS.js +0 -675
  116. package/dist/chunks/chunk-TEUD5VPJ.js +0 -471
  117. package/dist/chunks/chunk-TYZ2ZAYL.js +0 -487
  118. package/dist/chunks/dist-3UCCMCYR.js +0 -2
  119. package/dist/chunks/dist-F5IWZSAY.js +0 -2
  120. package/dist/chunks/host-W2JJ3V3Q.js +0 -2
  121. package/dist/chunks/run-manager-RBWU3EVE.js +0 -2
  122. package/dist/chunks/utils-DJ4ZFJGL.js +0 -2
  123. package/dist/runtime-worker.js +0 -5381
  124. package/dist/types-chunks/review-inbox.d-CTeUIKda.d.ts +0 -225
  125. package/dist/types-chunks/run-manager.d-hm1XgEou.d.ts +0 -94
  126. package/dist/types-chunks/trusted-repl-entry-D0w5M0UZ.d.ts +0 -323
  127. package/dist/types-chunks/types.d-B1l9pWyX.d.ts +0 -146
@@ -1,6 +1,6 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{a as vn,b as xn,c as Le,d as kn,e as En,f as Rn,g as cr,h as An,k as en,l as lr,m as ur,n as fr,o as nn,p as wr}from"./chunk-6QI3GOYG.js";import{Ic as dr,Ka as me,_a as rr,ab as tr,cb as xe,db as or,hb as hn,jb as ke,mb as De,rb as ir,sb as sr,ub as ar,v as T}from"./chunk-WV3DJVW4.js";import{a}from"./chunk-ONUPGMER.js";import{spawn as Xe,spawnSync as we}from"node:child_process";import{createHash as Je,randomInt as jt,randomUUID as B}from"node:crypto";import{once as Ut}from"node:events";import{closeSync as Dn,constants as dn,existsSync as qn,fsyncSync as Ft,lstatSync as ae,mkdirSync as qr,openSync as Xr,readFileSync as Oe,readSync as Vt,readdirSync as Jr,realpathSync as K,renameSync as Kt,rmSync as fn,statSync as _e,writeFileSync as Hr,writeSync as qt}from"node:fs";import{copyFile as zr,lstat as Xt,mkdir as ne,readFile as je,realpath as Ue,rm as H,stat as cn,writeFile as Fe}from"node:fs/promises";import{createRequire as Jt}from"node:module";import{createServer as Ht}from"node:net";import U from"node:os";import l from"node:path";import{lstatSync as vt,readFileSync as xt,readdirSync as pr,realpathSync as kt}from"node:fs";import C from"node:path";import{globSync as Et}from"glob";var Rt=[".ssh",".tsh",".brev",".gnupg",".aws",".azure",".kube",".docker",".config",".npm",".pki",".terraform.d"],At=new Set(["certificatefile","controlpath","globalknownhostsfile","identityagent","identityfile","revokedhostkeys","userknownhostsfile"]);function oe(e){try{return kt.native(e).toLowerCase()}catch(r){return["ENOENT","ENOTDIR"].includes(r.code??"")||T({source:"sandbox:ssh-config",level:"warn",message:`Cannot canonicalize SSH ACL path: ${e}`,detail:r}),C.resolve(e).toLowerCase()}}a(oe,"pathKey");function gr(e,r){return r===e||r.startsWith(e.endsWith(C.sep)?e:`${e}${C.sep}`)}a(gr,"inside");function Wt(e){let r=[],n="",t;for(let o=0;o<e.length;o+=1){let i=e[o];if(i==="#"&&t===void 0)break;if(i===t){t=void 0;continue}if((i==='"'||i==="'")&&t===void 0){t=i;continue}let s=e[o+1];i==="\\"&&s!==void 0&&(['"',"'","\\"].includes(s)||t===void 0&&s===" ")?(n+=s,o+=1):/\s/.test(i)&&t===void 0?(n&&r.push(n),n=""):n+=i}return n&&r.push(n),r}a(Wt,"sshWords");function Ct(e,r,n){if(e.toLowerCase()==="none")return;if(["~","%d","${HOME}"].includes(e))return r;let t=e.replace(/^(?:~|%d|\$\{HOME\})[/\\]/,`${r}${C.sep}`);return C.isAbsolute(t)?C.resolve(t):n===void 0?void 0:C.resolve(n,t)}a(Ct,"sshPath");function Wn(e,r,n,t,o=0){let i=oe(e);if(t.has(i))return;if(o>=32){T({source:"sandbox:ssh-config",level:"warn",message:`SSH Include depth limit reached; dependencies beyond this config were not inspected: ${e}`});return}t.add(i);let s;try{s=xt(e,"utf8")}catch(d){if(d.code==="ENOENT")return;T({source:"sandbox:ssh-config",level:"warn",message:`Cannot inspect SSH configuration dependencies: ${e}`,detail:d});return}for(let d of s.split(/\r?\n/)){let c=Wt(d.replace(/^(\s*[^\s=]+)\s*=\s*/,"$1 ")),u=c.shift()?.toLowerCase();if(u!==void 0)for(let f of c){let p=Ct(f,r,u==="include"?C.join(r,".ssh"):void 0);if(p!==void 0)if(u==="include")for(let g of Et(p.replace(/\\/g,"/"),{nodir:!0}))n.push(g),Wn(g,r,n,t,o+1);else At.has(u)&&n.push(p)}}}a(Wn,"visitSshConfig");function de(e){let r=[];Wn(C.join(e,".ssh","config"),e,r,new Set);let n=oe(e),t=Rt.map(o=>C.join(e,o));for(let o of r){let i=C.relative(n,oe(o));i&&!i.startsWith(`..${C.sep}`)&&i!==".."&&!C.isAbsolute(i)&&t.push(C.join(e,i.split(C.sep)[0]))}return[...new Set(t.map(o=>C.resolve(o)))]}a(de,"windowsSandboxAclExclusions");function mr(e){let r=[];Wn(C.join(e,".ssh","config"),e,r,new Set);let n=[C.join(e,".ssh")];for(;n.length>0;){let t=n.pop();r.push(t);let o;try{if(vt(t).isSymbolicLink())continue;o=pr(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")continue;throw i}for(let i of o){if(i.isSymbolicLink())continue;let s=C.join(t,i.name);r.push(s),i.isDirectory()&&n.push(s)}}return[...new Set(r.filter(t=>gr(oe(e),oe(t))))]}a(mr,"windowsSandboxSshCleanupRoots");function Ee(e,r,n){let t=oe(r),o=n.flatMap(s=>[C.resolve(s).toLowerCase(),oe(s)]),i=e.flatMap(s=>oe(s)===t?pr(r,{withFileTypes:!0}).filter(d=>!d.isSymbolicLink()).map(d=>C.join(r,d.name)):[s]);return[...new Set(i)].filter(s=>![C.resolve(s).toLowerCase(),oe(s)].some(c=>o.some(u=>gr(u,c))))}a(Ee,"windowsSandboxAclRoots");import{fileURLToPath as _r,pathToFileURL as Yr}from"node:url";import{realpathSync as Pt,statSync as Nt}from"node:fs";import _t from"node:path";function Cn(e){let r=e.code;return r==="ENOENT"||r==="ENOTDIR"}a(Cn,"isMissingGitTrustPath");function br(e,r,n){try{let t=r(e).replaceAll("\\","/").replace(/\/+$/,"");return t===""?void 0:/^[A-Za-z]:$/.test(t)?`${t}/`:t}catch(t){if(n(t))return;throw t}}a(br,"normalizeGitSafeDirectoryRootImplementation");function Tt(e){return br(e,Pt,Cn)}a(Tt,"normalizeGitSafeDirectoryRoot");function Sr(e,r,n,t){try{let i=r(n.join(e,".git"));if(i.isDirectory()||i.isFile())return!0}catch(i){if(!t(i))throw i}if(!(n.basename(e).toLowerCase()===".git"||/[/\\]\.git[/\\]modules[/\\]/i.test(e)))return!1;try{return r(n.join(e,"HEAD")).isFile()}catch(i){if(t(i))return!1;throw i}}a(Sr,"isRepoBearingGitReadRootImplementation");function Ot(e){return Sr(e,Nt,_t,Cn)}a(Ot,"isRepoBearingGitReadRoot");function hr(e,r,n,t,o){let i=[];typeof e=="string"&&e!==""&&i.push(e);for(let c of n??[])o(c)&&i.push(c);i.push(...r??[]);let s=[],d=new Set;for(let c of i){if(s.length>=8)break;let u=t(c);if(u===void 0)continue;let f=u.toLowerCase();d.has(f)||(d.add(f),s.push(u))}return s}a(hr,"windowsGitTrustRootsImplementation");function vr(e,r,n){return hr(e,r,n,Tt,Ot)}a(vr,"windowsGitTrustRoots");function xr(e){if(e==="git_config_count")return"count";if(/^git_config_key_\d+$/.test(e))return"key";if(/^git_config_value_\d+$/.test(e))return"value"}a(xr,"gitConfigEnvKind");function It(e,r,n,t,o){let i=new Map,s=[],d,c=!1;for(let u=0;u<r;u+=1){if(e[u]!=="--env"||u+1>=r)continue;let f=e[u+1],p=f.indexOf("="),g=(p<0?f:f.slice(0,p)).toLowerCase(),w=n(g);if(w===void 0)continue;c=!0,s.push(u);let m=p<0?"":f.slice(p+1);if(w==="count"){let W=Number.parseInt(m,10);(d!==void 0||!Number.isSafeInteger(W)||W<0||String(W)!==m)&&t(),d=W;continue}let S=Number.parseInt(g.slice(`git_config_${w}_`.length),10),h=i.get(S)??{};(!Number.isSafeInteger(S)||S<0||h[w]!==void 0)&&t(),h[w]=m,i.set(S,h)}return o(i,s,d,c,t)}a(It,"parseGitConfigEnvironmentImplementation");function rn(){throw new Error("ASRT GIT_CONFIG environment has an unexpected shape.")}a(rn,"throwUnexpectedGitConfigShape");function kr(e,r,n,t,o){!t||n!==void 0&&e.size===n&&[...e].every(([d,c])=>d<n&&c.key!==void 0&&c.value!==void 0)||o();let s=[...e].map(([d,c])=>({slot:d,key:c.key,value:c.value}));return{argumentIndices:r,pairs:s,sawAny:t}}a(kr,"finishParsedGitConfigEnvironment");function Er(e,r){let n=[];for(let o of e)n.push({key:"safe.directory",value:o},{key:"safe.directory",value:`${o}/*`});n.push(...r);let t=n.flatMap((o,i)=>[`GIT_CONFIG_KEY_${i}=${o.key}`,`GIT_CONFIG_VALUE_${i}=${o.value}`]);return t.push(`GIT_CONFIG_COUNT=${n.length}`),t}a(Er,"gitSafeDirectoryAssignments");function yr(e,r){let n=[],t=new Set;for(let[o,i]of Object.entries(e)){if(i===void 0)continue;if(o===""||o.includes("=")||o.includes("\0")||i.includes("\0"))throw new Error(`Invalid ${r} environment entry.`);let s=o.toUpperCase();if(t.has(s))throw new Error(`Ambiguous ${r} environment variable: ${o}.`);t.add(s),n.push([o,i])}return n}a(yr,"validatedEnvironmentEntries");function Dt(e,r){let n=new Map,t=[],o,i=!1;for(let[u,f]of Object.entries(e)){let p=u.toLowerCase(),g=xr(p);if(g===void 0){t.push([u,f]);continue}if(i=!0,g==="count"){let S=Number.parseInt(f,10);(o!==void 0||!Number.isSafeInteger(S)||S<0||String(S)!==f)&&rn(),o=S;continue}let w=Number.parseInt(p.slice(`git_config_${g}_`.length),10),m=n.get(w)??{};(!Number.isSafeInteger(w)||w<0||m[g]!==void 0)&&rn(),m[g]=f,n.set(w,m)}let d=kr(n,[],o,i,rn).pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=Object.fromEntries(t);for(let u of Er(r,d)){let f=u.indexOf("=");c[u.slice(0,f)]=u.slice(f+1)}return c}a(Dt,"rewriteWindowsGitSafeDirectoryEnvironment");function Rr(e,r,n){let t=yr(e,"ASRT-controlled"),o=yr(r,"Windows target"),i=new Map;for(let s of t)i.set(s[0].toUpperCase(),s);for(let s of o){let d=s[0].toUpperCase();i.has(d)&&d!=="PATH"&&d!=="PATHEXT"||i.set(d,s)}return Dt(Object.fromEntries(i.values()),n)}a(Rr,"mergeWindowsSandboxTargetEnvironment");function Lt(e,r,n,t){let o=new Set(n.argumentIndices),i=[],s=!1;for(let d=0;d<e.length;d+=1)if(o.has(d)){if(!s){for(let c of t)i.push("--env",c);s=!0}d+=1}else i.push(e[d]);return n.sawAny||i.splice(r,0,...t.flatMap(d=>["--env",d])),i}a(Lt,"replaceGitConfigEnvironment");function Bt(e,r,n,t,o){let i=e.lastIndexOf("--");if(i<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let s=n(e,i),d=s.pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=t(r,d);return o(e,i,s,c)}a(Bt,"rewriteWindowsGitSafeDirectoryArgvImplementation");function Ar(){return String.raw`
3
- const isMissingGitTrustPath = ${Cn.toString()};
2
+ import{a as hn,b as vn,c as Le,d as xn,e as kn,f as En,g as cr,h as Rn,k as en,l as lr,m as ur,n as fr,o as nn,p as wr}from"./chunk-3PS3YEDS.js";import{Ic as dr,Ka as me,_a as rr,ab as tr,cb as xe,db as or,hb as Sn,jb as ke,mb as De,rb as ir,sb as sr,ub as ar,v as T}from"./chunk-VDGPJQL7.js";import{a}from"./chunk-ONUPGMER.js";import{spawn as Xe,spawnSync as we}from"node:child_process";import{createHash as Je,randomInt as jt,randomUUID as B}from"node:crypto";import{once as Ut}from"node:events";import{closeSync as In,constants as dn,existsSync as Kn,fsyncSync as Ft,lstatSync as ae,mkdirSync as qr,openSync as Xr,readFileSync as Oe,readSync as Vt,readdirSync as Jr,realpathSync as K,renameSync as Kt,rmSync as fn,statSync as _e,writeFileSync as Hr,writeSync as qt}from"node:fs";import{copyFile as zr,lstat as Xt,mkdir as ne,readFile as je,realpath as Ue,rm as H,stat as cn,writeFile as Fe}from"node:fs/promises";import{createRequire as Jt}from"node:module";import{createServer as Ht}from"node:net";import U from"node:os";import l from"node:path";import{lstatSync as vt,readFileSync as xt,readdirSync as pr,realpathSync as kt}from"node:fs";import C from"node:path";import{globSync as Et}from"glob";var Rt=[".ssh",".tsh",".brev",".gnupg",".aws",".azure",".kube",".docker",".config",".npm",".pki",".terraform.d"],At=new Set(["certificatefile","controlpath","globalknownhostsfile","identityagent","identityfile","revokedhostkeys","userknownhostsfile"]);function oe(e){try{return kt.native(e).toLowerCase()}catch(r){return["ENOENT","ENOTDIR"].includes(r.code??"")||T({source:"sandbox:ssh-config",level:"warn",message:`Cannot canonicalize SSH ACL path: ${e}`,detail:r}),C.resolve(e).toLowerCase()}}a(oe,"pathKey");function gr(e,r){return r===e||r.startsWith(e.endsWith(C.sep)?e:`${e}${C.sep}`)}a(gr,"inside");function Wt(e){let r=[],n="",t;for(let o=0;o<e.length;o+=1){let i=e[o];if(i==="#"&&t===void 0)break;if(i===t){t=void 0;continue}if((i==='"'||i==="'")&&t===void 0){t=i;continue}let s=e[o+1];i==="\\"&&s!==void 0&&(['"',"'","\\"].includes(s)||t===void 0&&s===" ")?(n+=s,o+=1):/\s/.test(i)&&t===void 0?(n&&r.push(n),n=""):n+=i}return n&&r.push(n),r}a(Wt,"sshWords");function Ct(e,r,n){if(e.toLowerCase()==="none")return;if(["~","%d","${HOME}"].includes(e))return r;let t=e.replace(/^(?:~|%d|\$\{HOME\})[/\\]/,`${r}${C.sep}`);return C.isAbsolute(t)?C.resolve(t):n===void 0?void 0:C.resolve(n,t)}a(Ct,"sshPath");function An(e,r,n,t,o=0){let i=oe(e);if(t.has(i))return;if(o>=32){T({source:"sandbox:ssh-config",level:"warn",message:`SSH Include depth limit reached; dependencies beyond this config were not inspected: ${e}`});return}t.add(i);let s;try{s=xt(e,"utf8")}catch(d){if(d.code==="ENOENT")return;T({source:"sandbox:ssh-config",level:"warn",message:`Cannot inspect SSH configuration dependencies: ${e}`,detail:d});return}for(let d of s.split(/\r?\n/)){let c=Wt(d.replace(/^(\s*[^\s=]+)\s*=\s*/,"$1 ")),u=c.shift()?.toLowerCase();if(u!==void 0)for(let f of c){let p=Ct(f,r,u==="include"?C.join(r,".ssh"):void 0);if(p!==void 0)if(u==="include")for(let g of Et(p.replace(/\\/g,"/"),{nodir:!0}))n.push(g),An(g,r,n,t,o+1);else At.has(u)&&n.push(p)}}}a(An,"visitSshConfig");function de(e){let r=[];An(C.join(e,".ssh","config"),e,r,new Set);let n=oe(e),t=Rt.map(o=>C.join(e,o));for(let o of r){let i=C.relative(n,oe(o));i&&!i.startsWith(`..${C.sep}`)&&i!==".."&&!C.isAbsolute(i)&&t.push(C.join(e,i.split(C.sep)[0]))}return[...new Set(t.map(o=>C.resolve(o)))]}a(de,"windowsSandboxAclExclusions");function mr(e){let r=[];An(C.join(e,".ssh","config"),e,r,new Set);let n=[C.join(e,".ssh")];for(;n.length>0;){let t=n.pop();r.push(t);let o;try{if(vt(t).isSymbolicLink())continue;o=pr(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")continue;throw i}for(let i of o){if(i.isSymbolicLink())continue;let s=C.join(t,i.name);r.push(s),i.isDirectory()&&n.push(s)}}return[...new Set(r.filter(t=>gr(oe(e),oe(t))))]}a(mr,"windowsSandboxSshCleanupRoots");function Ee(e,r,n){let t=oe(r),o=n.flatMap(s=>[C.resolve(s).toLowerCase(),oe(s)]),i=e.flatMap(s=>oe(s)===t?pr(r,{withFileTypes:!0}).filter(d=>!d.isSymbolicLink()).map(d=>C.join(r,d.name)):[s]);return[...new Set(i)].filter(s=>![C.resolve(s).toLowerCase(),oe(s)].some(c=>o.some(u=>gr(u,c))))}a(Ee,"windowsSandboxAclRoots");import{fileURLToPath as _r,pathToFileURL as Yr}from"node:url";import{realpathSync as Pt,statSync as Nt}from"node:fs";import _t from"node:path";function Wn(e){let r=e.code;return r==="ENOENT"||r==="ENOTDIR"}a(Wn,"isMissingGitTrustPath");function br(e,r,n){try{let t=r(e).replaceAll("\\","/").replace(/\/+$/,"");return t===""?void 0:/^[A-Za-z]:$/.test(t)?`${t}/`:t}catch(t){if(n(t))return;throw t}}a(br,"normalizeGitSafeDirectoryRootImplementation");function Tt(e){return br(e,Pt,Wn)}a(Tt,"normalizeGitSafeDirectoryRoot");function Sr(e,r,n,t){try{let i=r(n.join(e,".git"));if(i.isDirectory()||i.isFile())return!0}catch(i){if(!t(i))throw i}if(!(n.basename(e).toLowerCase()===".git"||/[/\\]\.git[/\\]modules[/\\]/i.test(e)))return!1;try{return r(n.join(e,"HEAD")).isFile()}catch(i){if(t(i))return!1;throw i}}a(Sr,"isRepoBearingGitReadRootImplementation");function Ot(e){return Sr(e,Nt,_t,Wn)}a(Ot,"isRepoBearingGitReadRoot");function hr(e,r,n,t,o){let i=[];typeof e=="string"&&e!==""&&i.push(e);for(let c of n??[])o(c)&&i.push(c);i.push(...r??[]);let s=[],d=new Set;for(let c of i){if(s.length>=8)break;let u=t(c);if(u===void 0)continue;let f=u.toLowerCase();d.has(f)||(d.add(f),s.push(u))}return s}a(hr,"windowsGitTrustRootsImplementation");function vr(e,r,n){return hr(e,r,n,Tt,Ot)}a(vr,"windowsGitTrustRoots");function xr(e){if(e==="git_config_count")return"count";if(/^git_config_key_\d+$/.test(e))return"key";if(/^git_config_value_\d+$/.test(e))return"value"}a(xr,"gitConfigEnvKind");function It(e,r,n,t,o){let i=new Map,s=[],d,c=!1;for(let u=0;u<r;u+=1){if(e[u]!=="--env"||u+1>=r)continue;let f=e[u+1],p=f.indexOf("="),g=(p<0?f:f.slice(0,p)).toLowerCase(),w=n(g);if(w===void 0)continue;c=!0,s.push(u);let m=p<0?"":f.slice(p+1);if(w==="count"){let W=Number.parseInt(m,10);(d!==void 0||!Number.isSafeInteger(W)||W<0||String(W)!==m)&&t(),d=W;continue}let S=Number.parseInt(g.slice(`git_config_${w}_`.length),10),h=i.get(S)??{};(!Number.isSafeInteger(S)||S<0||h[w]!==void 0)&&t(),h[w]=m,i.set(S,h)}return o(i,s,d,c,t)}a(It,"parseGitConfigEnvironmentImplementation");function rn(){throw new Error("ASRT GIT_CONFIG environment has an unexpected shape.")}a(rn,"throwUnexpectedGitConfigShape");function kr(e,r,n,t,o){!t||n!==void 0&&e.size===n&&[...e].every(([d,c])=>d<n&&c.key!==void 0&&c.value!==void 0)||o();let s=[...e].map(([d,c])=>({slot:d,key:c.key,value:c.value}));return{argumentIndices:r,pairs:s,sawAny:t}}a(kr,"finishParsedGitConfigEnvironment");function Er(e,r){let n=[];for(let o of e)n.push({key:"safe.directory",value:o},{key:"safe.directory",value:`${o}/*`});n.push(...r);let t=n.flatMap((o,i)=>[`GIT_CONFIG_KEY_${i}=${o.key}`,`GIT_CONFIG_VALUE_${i}=${o.value}`]);return t.push(`GIT_CONFIG_COUNT=${n.length}`),t}a(Er,"gitSafeDirectoryAssignments");function yr(e,r){let n=[],t=new Set;for(let[o,i]of Object.entries(e)){if(i===void 0)continue;if(o===""||o.includes("=")||o.includes("\0")||i.includes("\0"))throw new Error(`Invalid ${r} environment entry.`);let s=o.toUpperCase();if(t.has(s))throw new Error(`Ambiguous ${r} environment variable: ${o}.`);t.add(s),n.push([o,i])}return n}a(yr,"validatedEnvironmentEntries");function Dt(e,r){let n=new Map,t=[],o,i=!1;for(let[u,f]of Object.entries(e)){let p=u.toLowerCase(),g=xr(p);if(g===void 0){t.push([u,f]);continue}if(i=!0,g==="count"){let S=Number.parseInt(f,10);(o!==void 0||!Number.isSafeInteger(S)||S<0||String(S)!==f)&&rn(),o=S;continue}let w=Number.parseInt(p.slice(`git_config_${g}_`.length),10),m=n.get(w)??{};(!Number.isSafeInteger(w)||w<0||m[g]!==void 0)&&rn(),m[g]=f,n.set(w,m)}let d=kr(n,[],o,i,rn).pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=Object.fromEntries(t);for(let u of Er(r,d)){let f=u.indexOf("=");c[u.slice(0,f)]=u.slice(f+1)}return c}a(Dt,"rewriteWindowsGitSafeDirectoryEnvironment");function Rr(e,r,n){let t=yr(e,"ASRT-controlled"),o=yr(r,"Windows target"),i=new Map;for(let s of t)i.set(s[0].toUpperCase(),s);for(let s of o){let d=s[0].toUpperCase();i.has(d)&&d!=="PATH"&&d!=="PATHEXT"||i.set(d,s)}return Dt(Object.fromEntries(i.values()),n)}a(Rr,"mergeWindowsSandboxTargetEnvironment");function Lt(e,r,n,t){let o=new Set(n.argumentIndices),i=[],s=!1;for(let d=0;d<e.length;d+=1)if(o.has(d)){if(!s){for(let c of t)i.push("--env",c);s=!0}d+=1}else i.push(e[d]);return n.sawAny||i.splice(r,0,...t.flatMap(d=>["--env",d])),i}a(Lt,"replaceGitConfigEnvironment");function Bt(e,r,n,t,o){let i=e.lastIndexOf("--");if(i<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let s=n(e,i),d=s.pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=t(r,d);return o(e,i,s,c)}a(Bt,"rewriteWindowsGitSafeDirectoryArgvImplementation");function Ar(){return String.raw`
3
+ const isMissingGitTrustPath = ${Wn.toString()};
4
4
  const normalizeGitSafeDirectoryRootImplementation = ${br.toString()};
5
5
  const normalizeGitSafeDirectoryRoot = (root) => (
6
6
  normalizeGitSafeDirectoryRootImplementation(root, realpathSync, isMissingGitTrustPath)
@@ -45,7 +45,7 @@ const rewriteWindowsGitSafeDirectoryArgv = (argv, trustRoots) => (
45
45
  replaceGitConfigEnvironment,
46
46
  )
47
47
  );
48
- `}a(Ar,"windowsGitBrokerHelpersSource");import{createHash as Nn}from"node:crypto";import Pn from"node:path";var j=10,Be=[60080,60143];function Wr(e){return{...e,windows:{...e.windows,proxyPortRange:[...Be]},filesystem:{...e.filesystem,disabled:!0,denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]}}}a(Wr,"asrtWindowsNetworkOnlyConfig");function $t(e){return Pn.win32.resolve(e.replaceAll("/","\\")).toLowerCase()}a($t,"normalizePolicyPath");function ye(e){return[...new Set(e.map($t))].sort()}a(ye,"normalizedPolicyPaths");function Gt(e){if(e.generation.trim()==="")throw new Error("Windows sandbox v2 generation is empty.");let r=JSON.stringify({version:3,generation:e.generation,preinstalledReadRoots:ye(e.preinstalledReadRoots??[]),allowRead:ye(e.allowRead),allowWrite:ye(e.allowWrite),denyRead:ye(e.denyRead),denyWrite:ye(e.denyWrite)});return Nn("sha256").update(r,"utf8").digest("hex")}a(Gt,"windowsSandboxV2PolicyFingerprint");function Mt(e){if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("Invalid Windows sandbox v2 policy fingerprint.");let r=Nn("sha256").update("KodaX Windows sandbox v2 policy capability\0","utf8").update(e.toLowerCase(),"ascii").digest();return`S-1-5-21-${Array.from({length:4},(t,o)=>r.readUInt32LE(o*4)).join("-")}`}a(Mt,"windowsSandboxV2PolicyCapabilitySid");function Cr(e){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.setupGenerationNonce))throw new Error("Invalid Windows sandbox setup generation nonce.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Invalid Windows sandbox account SID.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Invalid Windows sandbox group SID.");if(!/^[0-9a-f]{64}$/i.test(e.asrtSha256)||!/^[0-9a-f]{64}$/i.test(e.shellSha256))throw new Error("Invalid Windows sandbox generation artifact hash.");return Nn("sha256").update(JSON.stringify({version:j,setupGenerationNonce:e.setupGenerationNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtSha256:e.asrtSha256.toLowerCase(),shellSha256:e.shellSha256.toLowerCase()}),"utf8").digest("hex")}a(Cr,"windowsSandboxV2Generation");function Pr(e){let r=new Set,n=1,t={},o=Object.entries(e);if(o.length>4096)throw new Error("Windows sandbox target environment has too many entries.");for(let[d,c]of o){if(d===""||d.includes("=")||d.includes("\0")||c.includes("\0"))throw new Error("Windows sandbox target environment contains an invalid entry.");let u=d.toUpperCase();if(r.has(u))throw new Error("Windows sandbox target environment contains ambiguous names.");r.add(u),n+=d.length+c.length+2,t[d]=c}if(n>3e4)throw new Error("Windows sandbox target environment exceeds its UTF-16 bound.");let i=Buffer.from(JSON.stringify({protocol:j,targetEnvironment:Object.entries(t).map(([d,c])=>({name:d,value:c}))}),"utf8");if(i.byteLength>512*1024)throw new Error("Windows sandbox bootstrap frame exceeds 512 KiB.");let s=Buffer.allocUnsafe(4+i.byteLength);return s.writeUInt32LE(i.byteLength,0),i.copy(s,4),s}a(Pr,"encodeWindowsSandboxV2Bootstrap");function _n(e){let r=Buffer.allocUnsafe(5);return r.writeUInt32LE(1,0),r[4]=e==="close-stdin"?5:10,r}a(_n,"encodeWindowsSandboxV2ControlFrame");function Nr(e){if(e.targetArgv.length===0||e.targetArgv[0]?.trim()==="")throw new Error("Windows sandbox v2 target argv is empty.");if(e.denyRead.length>0)throw new Error("Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.");if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.filesystemCapabilityNonce))throw new Error("Windows sandbox v2 filesystem capability nonce is invalid.");if(!/^\\\\\.\\pipe\\kodax-v2-[1-9]\d{0,9}-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.controllerPipe))throw new Error("Windows sandbox v2 controller pipe is invalid.");if(e.asrtInvocation.prefixArgs.at(-1)!=="--")throw new Error("Windows sandbox v2 ASRT prefix omitted its target separator.");if(e.asrtInvocation.prefixArgs.some(o=>{let i=o.toLowerCase();return i==="--env"||i.startsWith("--env=")}))throw new Error("Windows sandbox v2 ASRT prefix retained a target environment entry.");if(!Number.isSafeInteger(e.operationDeadlineUnixMs)||e.operationDeadlineUnixMs<=0)throw new Error("Windows sandbox v2 operation deadline is invalid.");if(!Pn.win32.isAbsolute(e.terminalRecordPath)||e.terminalRecordPath.includes("\0"))throw new Error("Windows sandbox v2 terminal record path is invalid.");if(!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.terminalNonce))throw new Error("Windows sandbox v2 terminal nonce is invalid.");if(typeof e.setupMarkerPath!="string"||typeof e.setupMarkerSha256!="string"||!Pn.win32.isAbsolute(e.setupMarkerPath)||e.setupMarkerPath.includes("\0")||!/^[0-9a-f]{64}$/i.test(e.setupMarkerSha256))throw new Error("Windows sandbox v2 setup marker proof is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Windows sandbox v2 account SID is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Windows sandbox v2 group SID is invalid.");let r=new Set(ye(e.allowRead));if(ye(e.preinstalledReadRoots).some(o=>!r.has(o)))throw new Error("Windows sandbox v2 preinstalled read root is not an allowRead root.");let n=Gt({generation:e.generation,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite}),t=Mt(n);if(e.sandboxGroupSid===e.sandboxUserSid||e.sandboxGroupSid===t)throw new Error("Windows sandbox v2 group SID must be an independent account group.");return{protocol:j,generation:e.generation,aclExclusions:e.aclExclusions??[],filesystemCapabilityNonce:e.filesystemCapabilityNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtExecutable:e.asrtInvocation.executable,asrtPrefixArgs:e.asrtInvocation.prefixArgs,targetArgv:e.targetArgv,cwd:e.cwd,policyFingerprint:n,policyCapabilitySid:t,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite,controllerPipe:e.controllerPipe,terminalRecordPath:e.terminalRecordPath,terminalNonce:e.terminalNonce.toLowerCase(),operationDeadlineUnixMs:e.operationDeadlineUnixMs,setupMarkerPath:e.setupMarkerPath,setupMarkerSha256:e.setupMarkerSha256}}a(Nr,"createWindowsSandboxV2RunRequest");function ie(e={}){let r=wr(import.meta.url,"shellSandbox",j,e);return{path:r.path,sha256:r.entry.sha256,developmentTrustRoots:r.developmentTrustRoots}}a(ie,"resolveWindowsSandboxV2Executable");var Se="0.0.65",zt="Windows ASRT filesystem/workspace-session execution is retired; use the native v2 shell sandbox.";function Yt(){if(process.platform==="win32")throw new Error(zt)}a(Yt,"rejectWindowsLegacyAsrtFilesystemBackend");var{SandboxManager:Tn,getSrtWinPath:Zt,getWindowsSandboxUserStatus:he,installWindowsSandbox:Tr,resolveSrtWin:Qt,uninstallWindowsSandbox:eo}=await import("@anthropic-ai/sandbox-runtime"),Ln=1024*1024,wn=16*1024;function Bn(e){e.failed=!0,ue.get(e.key)===e&&ue.delete(e.key)}a(Bn,"retireWindowsNetworkBrokerState");function Ve(e,r){let n=e.child;if(n===void 0)return;r?n.ref():n.unref();let t=new Set;for(let o of[n.stdin,n.stderr,n.stdio[3]])o!=null&&t.add(o);for(let o of t){let i=Reflect.get(o,r?"ref":"unref");typeof i=="function"&&i.call(o)}}a(Ve,"setWindowsNetworkBrokerReferenced");function no(e,r){if(r.length===0)return e;let n=[...new Set(r.map(o=>l.resolve(o)))],t=typeof e=="object"?e.filesystemAccess:void 0;return{...typeof e=="object"&&e.agentHomeAccess!==void 0?{agentHomeAccess:e.agentHomeAccess}:{},filesystemAccess:{read:[...new Set([...t?.read??[],...n])],write:[...new Set([...t?.write??[],...n])]}}}a(no,"withAdditionalWorkspaceRoots");function Zr(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:11,asrtVersion:Se,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",gitSafeDirectory:"authorized-repo-roots",delayedEffectDrainRecovery:"automatic",sameBootAclRecovery:"sandbox-user-process-probe",trustedTextAuthority:"host-transaction",windowsShellAuthority:"native-token-job-v2",commandLifetimeFilesystemLease:!1}}a(Zr,"sandboxRuntimeCapability");var He=1048576,ze=12e4,ln=3e4,$n=15e3,ue=new Map,Gn=new Set,ro=1e3,Or=0;function Qr(e){Or+=1,e.lastUsed=Or}a(Qr,"touchWindowsNetworkBroker");var Xn=Jt(import.meta.url),et=process.env.KODAX_BUNDLED==="true"?void 0:Yr(Xn.resolve("@anthropic-ai/sandbox-runtime")).href,to=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),oo=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),io=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",l.join(".cargo","credentials.toml"),l.join(".config","gcloud"),l.join(".config","gh"),l.join(".config","openai"),l.join(".config","anthropic"),".gitconfig",l.join(".config","git","config"),".terraformrc",l.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",l.join(".config","fish","config.fish"),l.join(".config","fish","fish_variables"),".bash_history",".zsh_history",l.join(".m2","settings.xml"),l.join(".m2","settings-security.xml"),l.join(".gradle","gradle.properties"),l.join(".nuget","NuGet","NuGet.Config"),l.join(".pip","pip.conf"),l.join(".config","pip","pip.conf"),l.join(".cache","huggingface","token"),l.join(".huggingface","token"),l.join(".config","rclone","rclone.conf"),l.join(".local","share","keyrings"),l.join("Library","Keychains"),l.join("AppData","Roaming","Microsoft","Protect"),l.join("AppData","Roaming","Microsoft","Credentials"),l.join("AppData","Roaming","Microsoft","Vault"),l.join("AppData","Local","Microsoft","Credentials"),l.join("AppData","Local","Microsoft","Protect"),l.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"],so=["native-text-state-v1","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"],nt=["native-text-state-v1","runtime","processes","learned"],ao=JSON.stringify(tr),Ir=JSON.stringify(rr),co=String.raw`
48
+ `}a(Ar,"windowsGitBrokerHelpersSource");import{createHash as Pn}from"node:crypto";import Cn from"node:path";var j=10,Be=[60080,60143];function Wr(e){return{...e,windows:{...e.windows,proxyPortRange:[...Be]},filesystem:{...e.filesystem,disabled:!0,denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]}}}a(Wr,"asrtWindowsNetworkOnlyConfig");function $t(e){return Cn.win32.resolve(e.replaceAll("/","\\")).toLowerCase()}a($t,"normalizePolicyPath");function ye(e){return[...new Set(e.map($t))].sort()}a(ye,"normalizedPolicyPaths");function Gt(e){if(e.generation.trim()==="")throw new Error("Windows sandbox v2 generation is empty.");let r=JSON.stringify({version:3,generation:e.generation,preinstalledReadRoots:ye(e.preinstalledReadRoots??[]),allowRead:ye(e.allowRead),allowWrite:ye(e.allowWrite),denyRead:ye(e.denyRead),denyWrite:ye(e.denyWrite)});return Pn("sha256").update(r,"utf8").digest("hex")}a(Gt,"windowsSandboxV2PolicyFingerprint");function Mt(e){if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("Invalid Windows sandbox v2 policy fingerprint.");let r=Pn("sha256").update("KodaX Windows sandbox v2 policy capability\0","utf8").update(e.toLowerCase(),"ascii").digest();return`S-1-5-21-${Array.from({length:4},(t,o)=>r.readUInt32LE(o*4)).join("-")}`}a(Mt,"windowsSandboxV2PolicyCapabilitySid");function Cr(e){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.setupGenerationNonce))throw new Error("Invalid Windows sandbox setup generation nonce.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Invalid Windows sandbox account SID.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Invalid Windows sandbox group SID.");if(!/^[0-9a-f]{64}$/i.test(e.asrtSha256)||!/^[0-9a-f]{64}$/i.test(e.shellSha256))throw new Error("Invalid Windows sandbox generation artifact hash.");return Pn("sha256").update(JSON.stringify({version:j,setupGenerationNonce:e.setupGenerationNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtSha256:e.asrtSha256.toLowerCase(),shellSha256:e.shellSha256.toLowerCase()}),"utf8").digest("hex")}a(Cr,"windowsSandboxV2Generation");function Pr(e){let r=new Set,n=1,t={},o=Object.entries(e);if(o.length>4096)throw new Error("Windows sandbox target environment has too many entries.");for(let[d,c]of o){if(d===""||d.includes("=")||d.includes("\0")||c.includes("\0"))throw new Error("Windows sandbox target environment contains an invalid entry.");let u=d.toUpperCase();if(r.has(u))throw new Error("Windows sandbox target environment contains ambiguous names.");r.add(u),n+=d.length+c.length+2,t[d]=c}if(n>3e4)throw new Error("Windows sandbox target environment exceeds its UTF-16 bound.");let i=Buffer.from(JSON.stringify({protocol:j,targetEnvironment:Object.entries(t).map(([d,c])=>({name:d,value:c}))}),"utf8");if(i.byteLength>512*1024)throw new Error("Windows sandbox bootstrap frame exceeds 512 KiB.");let s=Buffer.allocUnsafe(4+i.byteLength);return s.writeUInt32LE(i.byteLength,0),i.copy(s,4),s}a(Pr,"encodeWindowsSandboxV2Bootstrap");function Nn(e){let r=Buffer.allocUnsafe(5);return r.writeUInt32LE(1,0),r[4]=e==="close-stdin"?5:10,r}a(Nn,"encodeWindowsSandboxV2ControlFrame");function Nr(e){if(e.targetArgv.length===0||e.targetArgv[0]?.trim()==="")throw new Error("Windows sandbox v2 target argv is empty.");if(e.denyRead.length>0)throw new Error("Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.");if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.filesystemCapabilityNonce))throw new Error("Windows sandbox v2 filesystem capability nonce is invalid.");if(!/^\\\\\.\\pipe\\kodax-v2-[1-9]\d{0,9}-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.controllerPipe))throw new Error("Windows sandbox v2 controller pipe is invalid.");if(e.asrtInvocation.prefixArgs.at(-1)!=="--")throw new Error("Windows sandbox v2 ASRT prefix omitted its target separator.");if(e.asrtInvocation.prefixArgs.some(o=>{let i=o.toLowerCase();return i==="--env"||i.startsWith("--env=")}))throw new Error("Windows sandbox v2 ASRT prefix retained a target environment entry.");if(!Number.isSafeInteger(e.operationDeadlineUnixMs)||e.operationDeadlineUnixMs<=0)throw new Error("Windows sandbox v2 operation deadline is invalid.");if(!Cn.win32.isAbsolute(e.terminalRecordPath)||e.terminalRecordPath.includes("\0"))throw new Error("Windows sandbox v2 terminal record path is invalid.");if(!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.terminalNonce))throw new Error("Windows sandbox v2 terminal nonce is invalid.");if(typeof e.setupMarkerPath!="string"||typeof e.setupMarkerSha256!="string"||!Cn.win32.isAbsolute(e.setupMarkerPath)||e.setupMarkerPath.includes("\0")||!/^[0-9a-f]{64}$/i.test(e.setupMarkerSha256))throw new Error("Windows sandbox v2 setup marker proof is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Windows sandbox v2 account SID is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Windows sandbox v2 group SID is invalid.");let r=new Set(ye(e.allowRead));if(ye(e.preinstalledReadRoots).some(o=>!r.has(o)))throw new Error("Windows sandbox v2 preinstalled read root is not an allowRead root.");let n=Gt({generation:e.generation,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite}),t=Mt(n);if(e.sandboxGroupSid===e.sandboxUserSid||e.sandboxGroupSid===t)throw new Error("Windows sandbox v2 group SID must be an independent account group.");return{protocol:j,generation:e.generation,aclExclusions:e.aclExclusions??[],filesystemCapabilityNonce:e.filesystemCapabilityNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtExecutable:e.asrtInvocation.executable,asrtPrefixArgs:e.asrtInvocation.prefixArgs,targetArgv:e.targetArgv,cwd:e.cwd,policyFingerprint:n,policyCapabilitySid:t,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite,controllerPipe:e.controllerPipe,terminalRecordPath:e.terminalRecordPath,terminalNonce:e.terminalNonce.toLowerCase(),operationDeadlineUnixMs:e.operationDeadlineUnixMs,setupMarkerPath:e.setupMarkerPath,setupMarkerSha256:e.setupMarkerSha256}}a(Nr,"createWindowsSandboxV2RunRequest");function ie(e={}){let r=wr(import.meta.url,"shellSandbox",j,e);return{path:r.path,sha256:r.entry.sha256,developmentTrustRoots:r.developmentTrustRoots}}a(ie,"resolveWindowsSandboxV2Executable");var Se="0.0.65",zt="Windows ASRT filesystem/workspace-session execution is retired; use the native v2 shell sandbox.";function Yt(){if(process.platform==="win32")throw new Error(zt)}a(Yt,"rejectWindowsLegacyAsrtFilesystemBackend");var{SandboxManager:_n,getSrtWinPath:Zt,getWindowsSandboxUserStatus:he,installWindowsSandbox:Tr,resolveSrtWin:Qt,uninstallWindowsSandbox:eo}=await import("@anthropic-ai/sandbox-runtime"),Dn=1024*1024,wn=16*1024;function Ln(e){e.failed=!0,ue.get(e.key)===e&&ue.delete(e.key)}a(Ln,"retireWindowsNetworkBrokerState");function Ve(e,r){let n=e.child;if(n===void 0)return;r?n.ref():n.unref();let t=new Set;for(let o of[n.stdin,n.stderr,n.stdio[3]])o!=null&&t.add(o);for(let o of t){let i=Reflect.get(o,r?"ref":"unref");typeof i=="function"&&i.call(o)}}a(Ve,"setWindowsNetworkBrokerReferenced");function no(e,r){if(r.length===0)return e;let n=[...new Set(r.map(o=>l.resolve(o)))],t=typeof e=="object"?e.filesystemAccess:void 0;return{...typeof e=="object"&&e.agentHomeAccess!==void 0?{agentHomeAccess:e.agentHomeAccess}:{},filesystemAccess:{read:[...new Set([...t?.read??[],...n])],write:[...new Set([...t?.write??[],...n])]}}}a(no,"withAdditionalWorkspaceRoots");function Zr(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:11,asrtVersion:Se,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",gitSafeDirectory:"authorized-repo-roots",delayedEffectDrainRecovery:"automatic",sameBootAclRecovery:"sandbox-user-process-probe",trustedTextAuthority:"host-transaction",windowsShellAuthority:"native-token-job-v2",commandLifetimeFilesystemLease:!1}}a(Zr,"sandboxRuntimeCapability");var He=1048576,ze=12e4,ln=3e4,Bn=15e3,ue=new Map,$n=new Set,ro=1e3,Or=0;function Qr(e){Or+=1,e.lastUsed=Or}a(Qr,"touchWindowsNetworkBroker");var qn=Jt(import.meta.url),et=process.env.KODAX_BUNDLED==="true"?void 0:Yr(qn.resolve("@anthropic-ai/sandbox-runtime")).href,to=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),oo=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),io=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",l.join(".cargo","credentials.toml"),l.join(".config","gcloud"),l.join(".config","gh"),l.join(".config","openai"),l.join(".config","anthropic"),".gitconfig",l.join(".config","git","config"),".terraformrc",l.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",l.join(".config","fish","config.fish"),l.join(".config","fish","fish_variables"),".bash_history",".zsh_history",l.join(".m2","settings.xml"),l.join(".m2","settings-security.xml"),l.join(".gradle","gradle.properties"),l.join(".nuget","NuGet","NuGet.Config"),l.join(".pip","pip.conf"),l.join(".config","pip","pip.conf"),l.join(".cache","huggingface","token"),l.join(".huggingface","token"),l.join(".config","rclone","rclone.conf"),l.join(".local","share","keyrings"),l.join("Library","Keychains"),l.join("AppData","Roaming","Microsoft","Protect"),l.join("AppData","Roaming","Microsoft","Credentials"),l.join("AppData","Roaming","Microsoft","Vault"),l.join("AppData","Local","Microsoft","Credentials"),l.join("AppData","Local","Microsoft","Protect"),l.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"],so=["native-text-state-v1","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"],nt=["native-text-state-v1","runtime","processes","learned"],ao=JSON.stringify(tr),Ir=JSON.stringify(rr),co=String.raw`
49
49
  const { spawn } = require('node:child_process');
50
50
  const { writeSync } = require('node:fs');
51
51
  const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
@@ -120,7 +120,7 @@ const request = await new Promise((resolve, reject) => {
120
120
  let bytes = 0;
121
121
  process.stdin.on('data', (chunk) => {
122
122
  bytes += chunk.byteLength;
123
- if (bytes > ${Ln}) {
123
+ if (bytes > ${Dn}) {
124
124
  reject(new Error('Sandbox broker request exceeded its byte limit.'));
125
125
  process.stdin.destroy();
126
126
  return;
@@ -410,20 +410,20 @@ try {
410
410
  process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
411
411
  process.exitCode = targetStarted ? 125 : 1;
412
412
  }
413
- `,Re,tn=0,mo=3e4,ce=new Map,Ge;function Y(e){return e instanceof Error?e.message:String(e)}a(Y,"errorText");function V(e,...r){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&r.includes(e.code)}a(V,"isFileSystemError");var yo={x64:"x64",arm64:"arm64"};function bo(e){let r=yo[process.arch];if(r===void 0)return;let n=l.join(e,"vendor","srt-win",r,"srt-win.exe");return qn(n)?n:void 0}a(bo,"bundledSrtWinSidecarPath");function So(e=l.dirname(process.execPath)){if(process.env.KODAX_BUNDLED==="true"){let r=bo(e);if(r!==void 0)return r}return Zt()}a(So,"resolveSrtWinSourcePath");async function Ye(e=[],r=!0){let n=ce.get(r);if(n!==void 0){let o=await n;try{return vn(o.path,o.sha256),nn(o.developmentTrustRoots,e),o}catch{return ce.get(r)===n&&(ce.delete(r),Ge=void 0),Ye(e,r)}}if(!ce.has(r)){let o=(async()=>{let i=fr(import.meta.url,So(),Se,{untrustedWriteRoots:e,provision:r}),s=l.dirname(i.path);await ne(pn(),{recursive:!0,mode:448});let d={path:i.path,directory:s,sha256:i.sha256,developmentTrustRoots:i.developmentTrustRoots,srtWin:Qt({path:i.path})};return Ge=d,d})();ce.set(r,o),o.catch(()=>{ce.get(r)===o&&(ce.delete(r),Ge=void 0)})}let t=await ce.get(r);return nn(t.developmentTrustRoots,e),t}a(Ye,"prepareWindowsSandboxRunner");function Jn(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(Ge===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return Ge}a(Jn,"requirePreparedWindowsRunner");var on,ho=35e3,Ke="[acl_cleanup_unconfirmed]",Te=class extends Error{static{a(this,"WindowsSandboxAclAdmissionError")}recoveryAction;constructor(r,n){super(r,n),this.name="WindowsSandboxAclAdmissionError",this.recoveryAction=n?.recoveryAction}},Mn=class extends Te{static{a(this,"UnreadableWindowsSandboxAclRecoveryTicketError")}constructor(r,n){super(`Windows sandbox ACL recovery ticket is temporarily unreadable: ${r}. Sandbox admission will retry automatically; non-sandbox work remains available.`,{cause:n,recoveryAction:"automatic-retry"}),this.name="UnreadableWindowsSandboxAclRecoveryTicketError"}};function vo(e){return/^windows-boot-\d+$/.test(e)}a(vo,"isCanonicalWindowsBootIdentity");function xo(e){return e.diagnostics.some(r=>r.startsWith(Ke))}a(xo,"doctorHasWindowsSandboxAclCleanupBlock");function tt(){let e=Object.entries(process.env).find(([r,n])=>r.toUpperCase()==="PROGRAMDATA"&&n!==void 0)?.[1]??"C:\\ProgramData";return l.join(l.resolve(e),"KodaX","sandbox-runtime","acl-poison")}a(tt,"windowsSandboxAclPoisonDirectory");function pn(){return l.dirname(tt())}a(pn,"windowsSandboxAclCoordinationDirectory");function ko(e=me()){return l.join(l.resolve(e),"sandbox-runtime","acl-poison")}a(ko,"legacyWindowsSandboxAclPoisonDirectory");function Dr(){return l.join(pn(),"windows-v2-setup.lock")}a(Dr,"windowsSandboxV2SetupLockFile");var Eo="[windows_v2_acl_cutover_required]",Ro="[legacy_acl_state_ignored]",Hn=1024*1024,Pe=11,zn=8,On,ot=xn,be,Ae=new Map,$e;function In(){if(On!==void 0)return On;let e=ie({provision:!0}),r=we(e.path,["__current-user-sid"],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3}),n=r.status===0?r.stdout.trim():"";if(!/^S-\d+(?:-\d+)+$/i.test(n)){let t=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw new Error(`cannot identify the Windows v2 setup owner SID: ${t}`)}return On=n,n}a(In,"windowsSandboxV2HostUserSid");function se(){return l.join(ot(),"windows-v2-cutover.json")}a(se,"windowsSandboxV2CutoverMarkerFile");function Ao(){return l.join(ot(),"windows-v2-legacy-drain.json")}a(Ao,"windowsSandboxLegacyDrainMarkerFile");function Wo(e){if(Buffer.byteLength(e,"utf8")>Hn)throw new Error("the cutover marker exceeds its size bound");let r=JSON.parse(e);if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("the cutover marker is not an object");let n=r;if(Object.keys(n).sort().join(",")!=="filesystemCapabilityNonce,generationNonce,hostUserSid,protocol,sandboxGroupSid,sandboxUserSid,setupReadRoots,version"||n.version!==Pe||n.protocol!==j||typeof n.generationNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.generationNonce)||typeof n.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.filesystemCapabilityNonce)||typeof n.hostUserSid!="string"||typeof n.sandboxUserSid!="string"||typeof n.sandboxGroupSid!="string"||!Array.isArray(n.setupReadRoots)||n.setupReadRoots.length>1024||!n.setupReadRoots.every(o=>typeof o=="string"&&l.isAbsolute(o)&&!o.includes("\0")&&o.length<=32767)||!/^S-\d+(?:-\d+)+$/i.test(n.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxGroupSid))throw new Error("the cutover marker has an incompatible schema or SID");return{version:Pe,protocol:j,generationNonce:n.generationNonce,filesystemCapabilityNonce:n.filesystemCapabilityNonce,hostUserSid:n.hostUserSid,sandboxUserSid:n.sandboxUserSid,sandboxGroupSid:n.sandboxGroupSid,setupReadRoots:n.setupReadRoots}}a(Wo,"parseWindowsSandboxV2CutoverMarker");function it(){let e=se(),r;try{r=ae(e)}catch(n){if(V(n,"ENOENT"))return;throw n}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1)throw new Error("the cutover marker is not a private regular file");return Wo(Oe(e,"utf8"))}a(it,"readWindowsSandboxV2CutoverMarker");function Co(){let e=se(),r;try{r=ae(e)}catch(o){if(V(o,"ENOENT"))return;throw o}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1||r.size>Hn)throw new Error("the previous cutover marker is not a private bounded regular file");let n=JSON.parse(Oe(e,"utf8"));if(n===null||typeof n!="object"||Array.isArray(n))throw new Error("the previous cutover marker is not an object");let t=n;if(typeof t.version!="number"||!Number.isSafeInteger(t.version)||t.version<=0||typeof t.hostUserSid!="string"||typeof t.sandboxUserSid!="string"||typeof t.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(t.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxGroupSid))throw new Error("the previous cutover marker has an incompatible identity");if(t.setupReadRoots!==void 0&&(!Array.isArray(t.setupReadRoots)||t.setupReadRoots.length>1024||!t.setupReadRoots.every(o=>typeof o=="string"&&l.isAbsolute(o))))throw new Error("the previous cutover marker has invalid setup read roots");return{version:t.version,installing:t.state==="installing",setupReadRoots:t.setupReadRoots??[],...t.legacyAclCleanup===void 0?{}:{legacyAclCleanup:Po(t.legacyAclCleanup)},hostUserSid:t.hostUserSid,sandboxUserSid:t.sandboxUserSid,sandboxGroupSid:t.sandboxGroupSid}}a(Co,"readPreviousWindowsSandboxV2CutoverIdentity");function Po(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("invalid pending Windows SSH ACL cleanup");let r=e;if(!Array.isArray(r.roots)||r.roots.length>1024||!r.roots.every(n=>typeof n=="string"&&l.isAbsolute(n)&&!n.includes("\0"))||typeof r.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxGroupSid)||typeof r.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.filesystemCapabilityNonce))throw new Error("invalid pending Windows SSH ACL cleanup authority");return{roots:r.roots,sandboxGroupSid:r.sandboxGroupSid,filesystemCapabilityNonce:r.filesystemCapabilityNonce}}a(Po,"parseWindowsLegacyAclCleanup");function le(e){return new Error(`${Eo} ${e}. Run "kodax sandbox setup" to rotate the legacy sandbox account SID and activate Windows v2.`)}a(le,"windowsSandboxV2CutoverError");function st(e){let r;try{r=it()}catch(n){throw le(`The recorded migration state is invalid: ${Y(n)}`)}if(r===void 0)throw le("The sandbox account has not completed the Windows v2 ACL cutover");if(e.sid!==r.sandboxUserSid||e.groupSid!==r.sandboxGroupSid)throw le("The installed sandbox account identity does not match the recorded v2 generation");return r}a(st,"assertWindowsSandboxV2Cutover");function No(){let e=se();try{let r=ae(e);if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1)return;let n=JSON.parse(Oe(e,"utf8"));if(n===null||typeof n!="object"||Array.isArray(n))return;let t=Reflect.get(n,"filesystemCapabilityNonce");return typeof t=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?t.toLowerCase():void 0}catch{return}}a(No,"previousWindowsFilesystemCapabilityNonce");function Lr(e){let r;try{r=it()}catch(t){throw le(`The recorded migration state is invalid: ${Y(t)}`)}if(r===void 0)throw le("The sandbox account has not completed the Windows v2 ACL cutover");if(be!==void 0&&JSON.stringify(be)===JSON.stringify(r))return be;let n=st(he({srtWin:e.srtWin}));return be=n,n}a(Lr,"currentWindowsSandboxV2Cutover");function gn(e,r,n=!0){let t=`${e}\0${n?"provision":"verify"}`,o=Ae.get(t),i=o!==void 0;return o===void 0&&(o=Promise.resolve().then(()=>ie({sandboxReadSid:e,provision:n})),Ae.set(t,o),o.catch(()=>{Ae.get(t)===o&&Ae.delete(t)})),En(r),o.then(async s=>{if(i)try{vn(s.path,s.sha256)}catch{return Ae.get(t)===o&&Ae.delete(t),gn(e,r,n)}return nn(s.developmentTrustRoots,r),s})}a(gn,"prepareWindowsShellArtifact");function _o(){if($e===void 0){let e=Promise.resolve().then(()=>{let r=Le(),n=ae(r);if(!n.isDirectory()||n.isSymbolicLink())throw new Error("Protected native shell control state is not a regular directory.");let t=K.native(xn()),o=K.native(r);if(!O(t,o))throw new Error("Protected native shell control state escaped its cache root.");return o});$e=e,e.catch(()=>{$e===e&&($e=void 0)})}return $e}a(_o,"prepareWindowsControlDirectory");function at(e,r){qr(l.dirname(e),{recursive:!0,mode:448});let n=`${e}.${process.pid}.${B()}.tmp`,t=Buffer.from(JSON.stringify(r),"utf8"),o;try{o=Xr(n,dn.O_CREAT|dn.O_EXCL|dn.O_WRONLY,384);let i=0;for(;i<t.length;){let d=qt(o,t,i,t.length-i);if(d===0)throw new Error("Windows sandbox private-state write made no progress.");i+=d}Ft(o);let s=o;o=void 0,Dn(s),Kt(n,e)}finally{o!==void 0&&Dn(o),fn(n,{force:!0})}}a(at,"writePrivateJsonFile");async function jn(e){let r=Date.now()+ln;for(;;)try{fn(e,{force:!0});return}catch(n){if(!V(n,"EACCES","EBUSY","EPERM")||Date.now()>=r)throw n;await new Promise(t=>setTimeout(t,25))}}a(jn,"removeWindowsSandboxCutoverMarkerForSetup");function Br(e){at(se(),e)}a(Br,"writeWindowsSandboxV2CutoverMarker");function $r(e,r){let n={...e,state:"installing",setupReadRoots:[...new Set([...e.setupReadRoots,...r?.setupReadRoots??[]])],...zo(r,e.filesystemCapabilityNonce)};return be=void 0,at(se(),n),n}a($r,"stageWindowsSandboxV2CutoverMarker");async function To(){be=void 0,await jn(se())}a(To,"invalidateWindowsSandboxV2CutoverForSetup");async function Oo(){let e=l.join(pn(),"windows-v2-cutover.json");await jn(e),await jn(Ao())}a(Oo,"retireLegacyWindowsSandboxCutoverForSetup");function Io(){let e=ie({provision:!0}).path,r=we(e,["__recover-execution-denies",Le()],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:15*6e4});if(r.error!==void 0||r.status!==0){let n=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw new Error(`Windows v2 denyRead setup recovery failed: ${n}`)}}a(Io,"recoverWindowsV2ExecutionDeniesForSetup");function Do(e){let r=JSON.parse(e);if(typeof r!="object"||r===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let n=r;if(n.version!==1&&n.version!==2&&n.version!==3||n.state!==void 0&&n.state!=="active"&&n.state!=="unconfirmed"&&n.state!=="recovery_pending"||n.ticketId!==void 0&&(typeof n.ticketId!="string"||!/^[0-9a-f-]{36}$/i.test(n.ticketId))||n.policyKey!==void 0&&typeof n.policyKey!="string"||n.holderPid!==void 0&&(typeof n.holderPid!="number"||!Number.isSafeInteger(n.holderPid)||n.holderPid<=0)||n.holderProcessStartIdentity!==void 0&&typeof n.holderProcessStartIdentity!="string"||n.pid!==void 0&&(typeof n.pid!="number"||!Number.isSafeInteger(n.pid)||n.pid<=0)||n.processStartIdentity!==void 0&&typeof n.processStartIdentity!="string"||n.windowsBootIdentity!==void 0&&(typeof n.windowsBootIdentity!="string"||!vo(n.windowsBootIdentity))||n.containment!==void 0&&(typeof n.containment!="object"||n.containment===null||n.containment.kind!=="windows-job"||typeof n.containment.jobName!="string"||!/^(?:Global\\)?KodaXEffect-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(String(n.containment.jobName))||n.containment.sandboxSid!==void 0&&(typeof n.containment.sandboxSid!="string"||!/^S-1-(?:\d+-)+\d+$/i.test(String(n.containment.sandboxSid)))||typeof n.containment.supervisorPid!="number"||!Number.isSafeInteger(n.containment.supervisorPid)||Number(n.containment.supervisorPid)<=0||n.containment.supervisorProcessStartIdentity!==void 0&&typeof n.containment.supervisorProcessStartIdentity!="string"))throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:n.version,...n.state==="active"||n.state==="unconfirmed"||n.state==="recovery_pending"?{state:n.state}:{},...typeof n.ticketId=="string"?{ticketId:n.ticketId}:{},...typeof n.policyKey=="string"?{policyKey:n.policyKey}:{},...typeof n.holderPid=="number"?{holderPid:n.holderPid}:{},...typeof n.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:n.holderProcessStartIdentity}:{},...typeof n.pid=="number"?{pid:n.pid}:{},...typeof n.processStartIdentity=="string"?{processStartIdentity:n.processStartIdentity}:{},...typeof n.windowsBootIdentity=="string"?{windowsBootIdentity:n.windowsBootIdentity}:{},...n.containment===void 0?{}:{containment:{kind:"windows-job",jobName:String(n.containment.jobName),...typeof n.containment.sandboxSid=="string"?{sandboxSid:String(n.containment.sandboxSid)}:{},supervisorPid:Number(n.containment.supervisorPid),...typeof n.containment.supervisorProcessStartIdentity=="string"?{supervisorProcessStartIdentity:String(n.containment.supervisorProcessStartIdentity)}:{}}}}}a(Do,"parseWindowsSandboxAclPoisonOwner");function dt(e=me()){return[...new Set([tt(),ko(e)])].flatMap(n=>{let t;try{t=Jr(n)}catch(o){if(V(o,"ENOENT"))return[];throw o}return t.filter(o=>o.endsWith(".json")).map(o=>l.join(n,o))})}a(dt,"listWindowsSandboxAclPoisonFiles");function Gr(e=me()){return dt(e).map(r=>{try{let n=ae(r);if(!n.isFile()||n.isSymbolicLink())throw new Error("Windows sandbox ACL poison marker is not a regular file.");let t=Do(Oe(r,"utf8"));return{file:r,owner:l.basename(r).startsWith("unconfirmed-")?{...t,state:"unconfirmed"}:l.basename(r).startsWith("recovery-")?{...t,state:"recovery_pending"}:t}}catch(n){throw new Mn(r,n)}})}a(Gr,"readWindowsSandboxAclPoisonOwners");function Lo(){let e=process.env.ProgramFiles??"C:\\Program Files",r=l.join(e,"PowerShell","7","pwsh.exe");return qn(r)?r:l.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}a(Lo,"windowsAclPowerShellExecutable");function mn(){if(process.platform!=="win32")return;if(on!==void 0)return T({source:"runtime:windows",level:"debug",message:"Using cached Windows boot identity probe result.",detail:{stage:"boot-identity",cached:!0,available:on!==null}}),on??void 0;let e=String.raw`
413
+ `,Re,tn=0,mo=3e4,ce=new Map,Ge;function Y(e){return e instanceof Error?e.message:String(e)}a(Y,"errorText");function V(e,...r){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&r.includes(e.code)}a(V,"isFileSystemError");var yo={x64:"x64",arm64:"arm64"};function bo(e){let r=yo[process.arch];if(r===void 0)return;let n=l.join(e,"vendor","srt-win",r,"srt-win.exe");return Kn(n)?n:void 0}a(bo,"bundledSrtWinSidecarPath");function So(e=l.dirname(process.execPath)){if(process.env.KODAX_BUNDLED==="true"){let r=bo(e);if(r!==void 0)return r}return Zt()}a(So,"resolveSrtWinSourcePath");async function Ye(e=[],r=!0){let n=ce.get(r);if(n!==void 0){let o=await n;try{return hn(o.path,o.sha256),nn(o.developmentTrustRoots,e),o}catch{return ce.get(r)===n&&(ce.delete(r),Ge=void 0),Ye(e,r)}}if(!ce.has(r)){let o=(async()=>{let i=fr(import.meta.url,So(),Se,{untrustedWriteRoots:e,provision:r}),s=l.dirname(i.path);await ne(pn(),{recursive:!0,mode:448});let d={path:i.path,directory:s,sha256:i.sha256,developmentTrustRoots:i.developmentTrustRoots,srtWin:Qt({path:i.path})};return Ge=d,d})();ce.set(r,o),o.catch(()=>{ce.get(r)===o&&(ce.delete(r),Ge=void 0)})}let t=await ce.get(r);return nn(t.developmentTrustRoots,e),t}a(Ye,"prepareWindowsSandboxRunner");function Xn(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(Ge===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return Ge}a(Xn,"requirePreparedWindowsRunner");var on,ho=35e3,Ke="[acl_cleanup_unconfirmed]",Te=class extends Error{static{a(this,"WindowsSandboxAclAdmissionError")}recoveryAction;constructor(r,n){super(r,n),this.name="WindowsSandboxAclAdmissionError",this.recoveryAction=n?.recoveryAction}},Gn=class extends Te{static{a(this,"UnreadableWindowsSandboxAclRecoveryTicketError")}constructor(r,n){super(`Windows sandbox ACL recovery ticket is temporarily unreadable: ${r}. Sandbox admission will retry automatically; non-sandbox work remains available.`,{cause:n,recoveryAction:"automatic-retry"}),this.name="UnreadableWindowsSandboxAclRecoveryTicketError"}};function vo(e){return/^windows-boot-\d+$/.test(e)}a(vo,"isCanonicalWindowsBootIdentity");function xo(e){return e.diagnostics.some(r=>r.startsWith(Ke))}a(xo,"doctorHasWindowsSandboxAclCleanupBlock");function tt(){let e=Object.entries(process.env).find(([r,n])=>r.toUpperCase()==="PROGRAMDATA"&&n!==void 0)?.[1]??"C:\\ProgramData";return l.join(l.resolve(e),"KodaX","sandbox-runtime","acl-poison")}a(tt,"windowsSandboxAclPoisonDirectory");function pn(){return l.dirname(tt())}a(pn,"windowsSandboxAclCoordinationDirectory");function ko(e=me()){return l.join(l.resolve(e),"sandbox-runtime","acl-poison")}a(ko,"legacyWindowsSandboxAclPoisonDirectory");function Dr(){return l.join(pn(),"windows-v2-setup.lock")}a(Dr,"windowsSandboxV2SetupLockFile");var Eo="[windows_v2_acl_cutover_required]",Ro="[legacy_acl_state_ignored]",Jn=1024*1024,Pe=11,Hn=8,Tn,ot=vn,be,Ae=new Map,$e;function On(){if(Tn!==void 0)return Tn;let e=ie({provision:!0}),r=we(e.path,["__current-user-sid"],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3}),n=r.status===0?r.stdout.trim():"";if(!/^S-\d+(?:-\d+)+$/i.test(n)){let t=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw new Error(`cannot identify the Windows v2 setup owner SID: ${t}`)}return Tn=n,n}a(On,"windowsSandboxV2HostUserSid");function se(){return l.join(ot(),"windows-v2-cutover.json")}a(se,"windowsSandboxV2CutoverMarkerFile");function Ao(){return l.join(ot(),"windows-v2-legacy-drain.json")}a(Ao,"windowsSandboxLegacyDrainMarkerFile");function Wo(e){if(Buffer.byteLength(e,"utf8")>Jn)throw new Error("the cutover marker exceeds its size bound");let r=JSON.parse(e);if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("the cutover marker is not an object");let n=r;if(Object.keys(n).sort().join(",")!=="filesystemCapabilityNonce,generationNonce,hostUserSid,protocol,sandboxGroupSid,sandboxUserSid,setupReadRoots,version"||n.version!==Pe||n.protocol!==j||typeof n.generationNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.generationNonce)||typeof n.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.filesystemCapabilityNonce)||typeof n.hostUserSid!="string"||typeof n.sandboxUserSid!="string"||typeof n.sandboxGroupSid!="string"||!Array.isArray(n.setupReadRoots)||n.setupReadRoots.length>1024||!n.setupReadRoots.every(o=>typeof o=="string"&&l.isAbsolute(o)&&!o.includes("\0")&&o.length<=32767)||!/^S-\d+(?:-\d+)+$/i.test(n.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxGroupSid))throw new Error("the cutover marker has an incompatible schema or SID");return{version:Pe,protocol:j,generationNonce:n.generationNonce,filesystemCapabilityNonce:n.filesystemCapabilityNonce,hostUserSid:n.hostUserSid,sandboxUserSid:n.sandboxUserSid,sandboxGroupSid:n.sandboxGroupSid,setupReadRoots:n.setupReadRoots}}a(Wo,"parseWindowsSandboxV2CutoverMarker");function it(){let e=se(),r;try{r=ae(e)}catch(n){if(V(n,"ENOENT"))return;throw n}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1)throw new Error("the cutover marker is not a private regular file");return Wo(Oe(e,"utf8"))}a(it,"readWindowsSandboxV2CutoverMarker");function Co(){let e=se(),r;try{r=ae(e)}catch(o){if(V(o,"ENOENT"))return;throw o}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1||r.size>Jn)throw new Error("the previous cutover marker is not a private bounded regular file");let n=JSON.parse(Oe(e,"utf8"));if(n===null||typeof n!="object"||Array.isArray(n))throw new Error("the previous cutover marker is not an object");let t=n;if(typeof t.version!="number"||!Number.isSafeInteger(t.version)||t.version<=0||typeof t.hostUserSid!="string"||typeof t.sandboxUserSid!="string"||typeof t.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(t.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxGroupSid))throw new Error("the previous cutover marker has an incompatible identity");if(t.setupReadRoots!==void 0&&(!Array.isArray(t.setupReadRoots)||t.setupReadRoots.length>1024||!t.setupReadRoots.every(o=>typeof o=="string"&&l.isAbsolute(o))))throw new Error("the previous cutover marker has invalid setup read roots");return{version:t.version,installing:t.state==="installing",setupReadRoots:t.setupReadRoots??[],...t.legacyAclCleanup===void 0?{}:{legacyAclCleanup:Po(t.legacyAclCleanup)},hostUserSid:t.hostUserSid,sandboxUserSid:t.sandboxUserSid,sandboxGroupSid:t.sandboxGroupSid}}a(Co,"readPreviousWindowsSandboxV2CutoverIdentity");function Po(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("invalid pending Windows SSH ACL cleanup");let r=e;if(!Array.isArray(r.roots)||r.roots.length>1024||!r.roots.every(n=>typeof n=="string"&&l.isAbsolute(n)&&!n.includes("\0"))||typeof r.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxGroupSid)||typeof r.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.filesystemCapabilityNonce))throw new Error("invalid pending Windows SSH ACL cleanup authority");return{roots:r.roots,sandboxGroupSid:r.sandboxGroupSid,filesystemCapabilityNonce:r.filesystemCapabilityNonce}}a(Po,"parseWindowsLegacyAclCleanup");function le(e){return new Error(`${Eo} ${e}. Run "kodax sandbox setup" to rotate the legacy sandbox account SID and activate Windows v2.`)}a(le,"windowsSandboxV2CutoverError");function st(e){let r;try{r=it()}catch(n){throw le(`The recorded migration state is invalid: ${Y(n)}`)}if(r===void 0)throw le("The sandbox account has not completed the Windows v2 ACL cutover");if(e.sid!==r.sandboxUserSid||e.groupSid!==r.sandboxGroupSid)throw le("The installed sandbox account identity does not match the recorded v2 generation");return r}a(st,"assertWindowsSandboxV2Cutover");function No(){let e=se();try{let r=ae(e);if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1)return;let n=JSON.parse(Oe(e,"utf8"));if(n===null||typeof n!="object"||Array.isArray(n))return;let t=Reflect.get(n,"filesystemCapabilityNonce");return typeof t=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?t.toLowerCase():void 0}catch{return}}a(No,"previousWindowsFilesystemCapabilityNonce");function Lr(e){let r;try{r=it()}catch(t){throw le(`The recorded migration state is invalid: ${Y(t)}`)}if(r===void 0)throw le("The sandbox account has not completed the Windows v2 ACL cutover");if(be!==void 0&&JSON.stringify(be)===JSON.stringify(r))return be;let n=st(he({srtWin:e.srtWin}));return be=n,n}a(Lr,"currentWindowsSandboxV2Cutover");function gn(e,r,n=!0){let t=`${e}\0${n?"provision":"verify"}`,o=Ae.get(t),i=o!==void 0;return o===void 0&&(o=Promise.resolve().then(()=>ie({sandboxReadSid:e,provision:n})),Ae.set(t,o),o.catch(()=>{Ae.get(t)===o&&Ae.delete(t)})),kn(r),o.then(async s=>{if(i)try{hn(s.path,s.sha256)}catch{return Ae.get(t)===o&&Ae.delete(t),gn(e,r,n)}return nn(s.developmentTrustRoots,r),s})}a(gn,"prepareWindowsShellArtifact");function _o(){if($e===void 0){let e=Promise.resolve().then(()=>{let r=Le(),n=ae(r);if(!n.isDirectory()||n.isSymbolicLink())throw new Error("Protected native shell control state is not a regular directory.");let t=K.native(vn()),o=K.native(r);if(!O(t,o))throw new Error("Protected native shell control state escaped its cache root.");return o});$e=e,e.catch(()=>{$e===e&&($e=void 0)})}return $e}a(_o,"prepareWindowsControlDirectory");function at(e,r){qr(l.dirname(e),{recursive:!0,mode:448});let n=`${e}.${process.pid}.${B()}.tmp`,t=Buffer.from(JSON.stringify(r),"utf8"),o;try{o=Xr(n,dn.O_CREAT|dn.O_EXCL|dn.O_WRONLY,384);let i=0;for(;i<t.length;){let d=qt(o,t,i,t.length-i);if(d===0)throw new Error("Windows sandbox private-state write made no progress.");i+=d}Ft(o);let s=o;o=void 0,In(s),Kt(n,e)}finally{o!==void 0&&In(o),fn(n,{force:!0})}}a(at,"writePrivateJsonFile");async function Mn(e){let r=Date.now()+ln;for(;;)try{fn(e,{force:!0});return}catch(n){if(!V(n,"EACCES","EBUSY","EPERM")||Date.now()>=r)throw n;await new Promise(t=>setTimeout(t,25))}}a(Mn,"removeWindowsSandboxCutoverMarkerForSetup");function Br(e){at(se(),e)}a(Br,"writeWindowsSandboxV2CutoverMarker");function $r(e,r){let n={...e,state:"installing",setupReadRoots:[...new Set([...e.setupReadRoots,...r?.setupReadRoots??[]])],...zo(r,e.filesystemCapabilityNonce)};return be=void 0,at(se(),n),n}a($r,"stageWindowsSandboxV2CutoverMarker");async function To(){be=void 0,await Mn(se())}a(To,"invalidateWindowsSandboxV2CutoverForSetup");async function Oo(){let e=l.join(pn(),"windows-v2-cutover.json");await Mn(e),await Mn(Ao())}a(Oo,"retireLegacyWindowsSandboxCutoverForSetup");function Io(){let e=ie({provision:!0}).path,r=we(e,["__recover-execution-denies",Le()],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:15*6e4});if(r.error!==void 0||r.status!==0){let n=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw new Error(`Windows v2 denyRead setup recovery failed: ${n}`)}}a(Io,"recoverWindowsV2ExecutionDeniesForSetup");function Do(e){let r=JSON.parse(e);if(typeof r!="object"||r===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let n=r;if(n.version!==1&&n.version!==2&&n.version!==3||n.state!==void 0&&n.state!=="active"&&n.state!=="unconfirmed"&&n.state!=="recovery_pending"||n.ticketId!==void 0&&(typeof n.ticketId!="string"||!/^[0-9a-f-]{36}$/i.test(n.ticketId))||n.policyKey!==void 0&&typeof n.policyKey!="string"||n.holderPid!==void 0&&(typeof n.holderPid!="number"||!Number.isSafeInteger(n.holderPid)||n.holderPid<=0)||n.holderProcessStartIdentity!==void 0&&typeof n.holderProcessStartIdentity!="string"||n.pid!==void 0&&(typeof n.pid!="number"||!Number.isSafeInteger(n.pid)||n.pid<=0)||n.processStartIdentity!==void 0&&typeof n.processStartIdentity!="string"||n.windowsBootIdentity!==void 0&&(typeof n.windowsBootIdentity!="string"||!vo(n.windowsBootIdentity))||n.containment!==void 0&&(typeof n.containment!="object"||n.containment===null||n.containment.kind!=="windows-job"||typeof n.containment.jobName!="string"||!/^(?:Global\\)?KodaXEffect-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(String(n.containment.jobName))||n.containment.sandboxSid!==void 0&&(typeof n.containment.sandboxSid!="string"||!/^S-1-(?:\d+-)+\d+$/i.test(String(n.containment.sandboxSid)))||typeof n.containment.supervisorPid!="number"||!Number.isSafeInteger(n.containment.supervisorPid)||Number(n.containment.supervisorPid)<=0||n.containment.supervisorProcessStartIdentity!==void 0&&typeof n.containment.supervisorProcessStartIdentity!="string"))throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:n.version,...n.state==="active"||n.state==="unconfirmed"||n.state==="recovery_pending"?{state:n.state}:{},...typeof n.ticketId=="string"?{ticketId:n.ticketId}:{},...typeof n.policyKey=="string"?{policyKey:n.policyKey}:{},...typeof n.holderPid=="number"?{holderPid:n.holderPid}:{},...typeof n.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:n.holderProcessStartIdentity}:{},...typeof n.pid=="number"?{pid:n.pid}:{},...typeof n.processStartIdentity=="string"?{processStartIdentity:n.processStartIdentity}:{},...typeof n.windowsBootIdentity=="string"?{windowsBootIdentity:n.windowsBootIdentity}:{},...n.containment===void 0?{}:{containment:{kind:"windows-job",jobName:String(n.containment.jobName),...typeof n.containment.sandboxSid=="string"?{sandboxSid:String(n.containment.sandboxSid)}:{},supervisorPid:Number(n.containment.supervisorPid),...typeof n.containment.supervisorProcessStartIdentity=="string"?{supervisorProcessStartIdentity:String(n.containment.supervisorProcessStartIdentity)}:{}}}}}a(Do,"parseWindowsSandboxAclPoisonOwner");function dt(e=me()){return[...new Set([tt(),ko(e)])].flatMap(n=>{let t;try{t=Jr(n)}catch(o){if(V(o,"ENOENT"))return[];throw o}return t.filter(o=>o.endsWith(".json")).map(o=>l.join(n,o))})}a(dt,"listWindowsSandboxAclPoisonFiles");function Gr(e=me()){return dt(e).map(r=>{try{let n=ae(r);if(!n.isFile()||n.isSymbolicLink())throw new Error("Windows sandbox ACL poison marker is not a regular file.");let t=Do(Oe(r,"utf8"));return{file:r,owner:l.basename(r).startsWith("unconfirmed-")?{...t,state:"unconfirmed"}:l.basename(r).startsWith("recovery-")?{...t,state:"recovery_pending"}:t}}catch(n){throw new Gn(r,n)}})}a(Gr,"readWindowsSandboxAclPoisonOwners");function Lo(){let e=process.env.ProgramFiles??"C:\\Program Files",r=l.join(e,"PowerShell","7","pwsh.exe");return Kn(r)?r:l.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}a(Lo,"windowsAclPowerShellExecutable");function zn(){if(process.platform!=="win32")return;if(on!==void 0)return T({source:"runtime:windows",level:"debug",message:"Using cached Windows boot identity probe result.",detail:{stage:"boot-identity",cached:!0,available:on!==null}}),on??void 0;let e=String.raw`
414
414
  # KodaXWindowsBootIdentity-v1
415
415
  $boot = (Get-CimInstance Win32_OperatingSystem -ErrorAction Stop).LastBootUpTime
416
416
  [Console]::Out.Write($boot.ToUniversalTime().Ticks.ToString([Globalization.CultureInfo]::InvariantCulture))
417
- `,r=Lo(),n=Date.now(),t=we(r,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),o=t.status===0?t.stdout.trim():"",i=/^\d+$/.test(o)?`windows-boot-${o}`:void 0;on=i??null;let s=t.error?.code;return T({source:"runtime:windows",level:i===void 0?"warn":"debug",message:"Windows boot identity probe completed.",detail:{stage:"boot-identity",cached:!1,available:i!==void 0,executableKind:l.basename(r).toLowerCase()==="pwsh.exe"?"pwsh":"powershell",durationMs:Date.now()-n,timeoutMs:5e3,exitCode:t.status,errorCode:s===void 0?void 0:["ENOENT","EACCES","EPERM","ETIMEDOUT","ENOEXEC","ENOMEM","EIO"].includes(s)?s:"OTHER"}}),i}a(mn,"readWindowsBootIdentity");function Ts(){return mn()}a(Ts,"readWindowsSandboxBootIdentity");function Bo(e,r=mn()){if(e.find(({windowsBootIdentity:i})=>i===void 0||r===void 0)!==void 0)return new Te("A legacy Windows sandbox recovery ticket has no verifiable boot identity. Sandbox admission will retry recovery automatically without blocking non-sandbox work.",{recoveryAction:"automatic-retry"});let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Te(`A legacy Windows sandbox recovery ticket${o} from the current Windows boot does not contain safe process-containment proof. Sandbox admission will retry recovery automatically without blocking non-sandbox work.`,{recoveryAction:"automatic-retry"})}a(Bo,"persistentWindowsSandboxAclPoisonError");function $o(e){if(e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let r=hn(e.holderPid);if(r!==void 0)return r===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(n){return V(n,"ESRCH")?"stale":"unknown"}}a($o,"windowsSandboxAclOwnerLiveness");async function sn(e){try{let r=Jn(),n=he({srtWin:r.srtWin});return n.sid!==void 0&&n.sid!==e?!1:!await ar(e,{executable:r.srtWin.exe,prependArgs:r.srtWin.prependArgs})}catch(r){return T({source:"runtime:sandbox-setup",level:"warn",message:"Windows sandbox account process inspection failed; account rotation remains blocked.",detail:r}),!1}}a(sn,"windowsSandboxSidIsIdle");async function ct(e=3e4){let r=Jn(),n=await di({command:r.srtWin.exe,args:[...r.srtWin.prependArgs,"acl","recover","--json"],env:Z(),cwd:r.directory,controlPipe:!1},await Fi()),t,o,i=!1,s;try{if(t=Xe(n.command,[...n.args],{cwd:r.directory,env:n.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),ke(t),t.pid===void 0)throw new Error("Windows ACL recovery gate did not expose a PID.");let f=bn(t,void 0,Math.max(1,Math.min(3e4,e)),1024*1024,!0);f.catch(()=>{}),o=await ir(t.pid),i=!0,await ci(t,!0),s=await f,await o.drained}catch(f){let p=[f];if(t!==void 0)try{i||await li(t),o!==void 0?(await sr(o.jobName),await o.drained):await De(t)}catch(g){p.push(g)}throw p.length===1?f:new AggregateError(p,"Windows sandbox ACL recovery helper cleanup failed.")}finally{await H(n.gateFile,{force:!0})}let d=s.stderr.trim(),c;try{c=JSON.parse(s.stdout.trim())}catch(f){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`,{cause:f})}let u=typeof c=="object"&&c!==null?c:void 0;if(s.exitCode!==0||typeof u?.deadBrokers!="number"||!Number.isSafeInteger(u.deadBrokers)||u.deadBrokers<0||typeof u.acesRevoked!="number"||!Number.isSafeInteger(u.acesRevoked)||u.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`)}a(ct,"recoverWindowsSandboxAcls");function Go(e,r=mn()){return Bo(e.map(({owner:n})=>n),r)}a(Go,"windowsSandboxAclPoisonSnapshotError");async function Mo(){let e=Gr();if(e.length===0)return;let r=mn();if(r!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==r)){await ct();for(let t of e)fn(t.file,{force:!0});if(Gr().length>0)throw new Error("Legacy Windows sandbox recovery tickets remained after ACL recovery.");return}return e.every(({owner:t})=>$o(t)!=="stale")?new Te("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; recovery is waiting and will retry automatically; non-sandbox work remains available.",{recoveryAction:"automatic-retry"}):Go(e,r)}a(Mo,"windowsSandboxAclSetupBlockWithLock");function jo(e,r){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(n=>!n.startsWith(Ke)),`${Ke} ${r.message}`]}}a(jo,"withWindowsSandboxAclSetupBlock");async function Uo(){let[e,r]=Be,n=new Set,t;for(let o=0;o<5;o+=1){let i=jt(1024,e);for(;n.has(i);)i=i+1<e?i+1:1024;n.add(i);let s=Ht();try{return s.listen(i,"127.0.0.1"),await Ut(s,"listening"),{server:s,target:`127.0.0.1:${i}`}}catch(d){if(s.close(),!V(d,"EADDRINUSE","EACCES"))throw d;t=d}}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${r}].`,{cause:t})}a(Uo,"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"}a(Mr,"windowsRunnerFailureCode");function Fo(e){return V(e,"ETIMEDOUT")?"wfp_probe_timeout":V(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}a(Fo,"windowsRunnerSpawnFailureCode");async function Un(e){let{server:r,target:n}=await Uo();try{let t=we(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",n],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${Fo(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let i;try{i=JSON.parse((t.stdout??"").trim())}catch{let s=t.status===null?"wfp_probe_timeout":Mr(o);throw new Error(`[${s}] 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(i.target??n)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||i.egress_probe!=="blocked")throw new Error(`[${Mr(o)}] Windows sandbox WFP probe to ${String(i.target??n)} was ${String(i.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{r.close()}}a(Un,"verifyPreparedWindowsWfp");function Fn(e){let r=[];return e.provisioned||r.push("Windows sandbox account does not exist."),e.sid||r.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&r.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||r.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||r.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||r.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||r.push("Windows sandbox account credential is unavailable."),r}a(Fn,"windowsSandboxAccountDiagnostics");function Vo(e){let r=JSON.parse(e);if(typeof r!="object"||r===null)return;let n=r;if(n.version===1&&(n.state==="applied"&&n.policyId==="kodax-workspace-shell-v1"&&(n.backend==="windows-restricted-user"||n.backend==="macos-seatbelt"||n.backend==="linux-bubblewrap"||n.backend==="unsupported")||n.state==="fallback"&&n.reason==="backend_failed"&&n.execution==="normal_permission_policy"))return n}a(Vo,"parseBrokerObservation");function lt(e){let r=B(),n={...e,controlInvocationId:r},t=Buffer.from(JSON.stringify(n),"utf8");if(t.byteLength>Ln)throw new Error(`Sandbox broker request exceeded ${Ln} bytes.`);return{invocationId:r,payload:t,request:n}}a(lt,"encodeControlledBrokerRequest");function ut(e,r,n){if(e.byteLength===0)return;if(e.byteLength>wn)throw new Error("Sandbox broker control frame exceeded its byte limit.");let t=Buffer.from(e),o=t.indexOf(10);if(o<0||t.subarray(o+1).some(u=>u>32))throw new Error("Sandbox broker control channel returned an invalid frame boundary.");let i=JSON.parse(t.subarray(0,o).toString("utf8"));if(typeof i!="object"||i===null)throw new Error("Sandbox broker control channel returned a non-object frame.");let s=i;if(s.version!==1||s.invocationId!==r||typeof s.observation!="object"||s.observation===null)throw new Error("Sandbox broker control frame did not match this invocation.");let d=s.observation;if(d.version!==1)throw new Error("Sandbox broker control observation has an incompatible version.");if(d.state==="not_started"){if(d.diagnostic!==void 0&&typeof d.diagnostic!="string")throw new Error("Sandbox broker pre-target diagnostic is invalid.");return d}let c=Vo(JSON.stringify(d));if(c===void 0)throw new Error("Sandbox broker control observation is invalid.");if(c.state==="applied"&&c.backend!==n)throw new Error("Sandbox broker control observation reported the wrong backend.");return c}a(ut,"parseSandboxBrokerControl");function Ko(e){let r=e.stdio[3];return r==null?Promise.reject(new Error("Sandbox broker control pipe was not created.")):new Promise((n,t)=>{let o=[],i=0,s=!1,d=a(c=>{s||(s=!0,c===void 0?n(Buffer.concat(o)):t(c))},"finish");r.on("data",c=>{if(i+=c.byteLength,i>wn){d(new Error("Sandbox broker control frame exceeded its byte limit.")),r.destroy();return}o.push(c)}),r.once("error",d),r.once("end",()=>d())})}a(Ko,"collectSandboxBrokerControl");function yn(){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}a(yn,"sandboxJavaScriptCommand");async function z(e={}){if(e.refresh||Re===void 0||Date.now()>=tn){let r=qo();Re=r,tn=Number.POSITIVE_INFINITY,r.then(n=>{Re===r&&(tn=n.ready?Number.POSITIVE_INFINITY:Date.now()+mo)},()=>{Re===r&&(Re=void 0,tn=0)})}return Re}a(z,"doctorSandboxRuntime");async function qo(){let e=[];Tn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:Tn.checkDependencies();e.push(...r.warnings,...r.errors);let n=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let s=JSON.parse(await je(Xn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));s.version!==Se&&(n=!0,e.push(`ASRT package version mismatch: expected ${Se}, found ${String(s.version)}.`))}catch(s){n=!0,e.push(`ASRT package provenance check failed: ${Y(s)}`)}let t=yn(),o=xe({args:["--version"],env:Z(),isElectron:t===process.execPath&&process.versions.electron!==void 0}),i=we(t,o.args,{env:o.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){n=!0;let s=i.error?.message??(i.stderr.trim()||t);e.push(`JavaScript Skill interpreter is unavailable: ${s}.`)}if(process.platform==="win32"){try{let d=await Ye([],!1),c=he({srtWin:d.srtWin}),u=Fn(c);if(u.length>0||!c.sid||!c.groupSid)n=!0,e.push(...u);else{let f=await gn(c.groupSid,[],!1);en();try{be=st(c),Yo(c.sid,f.path),await Un(d)}catch(p){n=!0,e.push(Y(p))}}}catch(d){n=!0,e.push(Y(d))}let s=dt();s.length>0&&e.push(`${Ro} ${s.length} pre-v2 ACL recovery record(s) remain for migration diagnosis; Windows v2 shell admission does not read them.`)}return{ready:Tn.isSupportedPlatform()&&!n,platform:process.platform,version:Se,diagnostics:e,setupRequired:n}}a(qo,"inspectSandboxRuntime");var Xo=String.raw`
417
+ `,r=Lo(),n=Date.now(),t=we(r,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),o=t.status===0?t.stdout.trim():"",i=/^\d+$/.test(o)?`windows-boot-${o}`:void 0;on=i??null;let s=t.error?.code;return T({source:"runtime:windows",level:i===void 0?"warn":"debug",message:"Windows boot identity probe completed.",detail:{stage:"boot-identity",cached:!1,available:i!==void 0,executableKind:l.basename(r).toLowerCase()==="pwsh.exe"?"pwsh":"powershell",durationMs:Date.now()-n,timeoutMs:5e3,exitCode:t.status,errorCode:s===void 0?void 0:["ENOENT","EACCES","EPERM","ETIMEDOUT","ENOEXEC","ENOMEM","EIO"].includes(s)?s:"OTHER"}}),i}a(zn,"readWindowsBootIdentity");function Bo(e,r=zn()){if(e.find(({windowsBootIdentity:i})=>i===void 0||r===void 0)!==void 0)return new Te("A legacy Windows sandbox recovery ticket has no verifiable boot identity. Sandbox admission will retry recovery automatically without blocking non-sandbox work.",{recoveryAction:"automatic-retry"});let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Te(`A legacy Windows sandbox recovery ticket${o} from the current Windows boot does not contain safe process-containment proof. Sandbox admission will retry recovery automatically without blocking non-sandbox work.`,{recoveryAction:"automatic-retry"})}a(Bo,"persistentWindowsSandboxAclPoisonError");function $o(e){if(e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let r=Sn(e.holderPid);if(r!==void 0)return r===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(n){return V(n,"ESRCH")?"stale":"unknown"}}a($o,"windowsSandboxAclOwnerLiveness");async function sn(e){try{let r=Xn(),n=he({srtWin:r.srtWin});return n.sid!==void 0&&n.sid!==e?!1:!await ar(e,{executable:r.srtWin.exe,prependArgs:r.srtWin.prependArgs})}catch(r){return T({source:"runtime:sandbox-setup",level:"warn",message:"Windows sandbox account process inspection failed; account rotation remains blocked.",detail:r}),!1}}a(sn,"windowsSandboxSidIsIdle");async function ct(e=3e4){let r=Xn(),n=await di({command:r.srtWin.exe,args:[...r.srtWin.prependArgs,"acl","recover","--json"],env:Z(),cwd:r.directory,controlPipe:!1},await Fi()),t,o,i=!1,s;try{if(t=Xe(n.command,[...n.args],{cwd:r.directory,env:n.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),ke(t),t.pid===void 0)throw new Error("Windows ACL recovery gate did not expose a PID.");let f=yn(t,void 0,Math.max(1,Math.min(3e4,e)),1024*1024,!0);f.catch(()=>{}),o=await ir(t.pid),i=!0,await ci(t,!0),s=await f,await o.drained}catch(f){let p=[f];if(t!==void 0)try{i||await li(t),o!==void 0?(await sr(o.jobName),await o.drained):await De(t)}catch(g){p.push(g)}throw p.length===1?f:new AggregateError(p,"Windows sandbox ACL recovery helper cleanup failed.")}finally{await H(n.gateFile,{force:!0})}let d=s.stderr.trim(),c;try{c=JSON.parse(s.stdout.trim())}catch(f){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`,{cause:f})}let u=typeof c=="object"&&c!==null?c:void 0;if(s.exitCode!==0||typeof u?.deadBrokers!="number"||!Number.isSafeInteger(u.deadBrokers)||u.deadBrokers<0||typeof u.acesRevoked!="number"||!Number.isSafeInteger(u.acesRevoked)||u.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`)}a(ct,"recoverWindowsSandboxAcls");function Go(e,r=zn()){return Bo(e.map(({owner:n})=>n),r)}a(Go,"windowsSandboxAclPoisonSnapshotError");async function Mo(){let e=Gr();if(e.length===0)return;let r=zn();if(r!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==r)){await ct();for(let t of e)fn(t.file,{force:!0});if(Gr().length>0)throw new Error("Legacy Windows sandbox recovery tickets remained after ACL recovery.");return}return e.every(({owner:t})=>$o(t)!=="stale")?new Te("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; recovery is waiting and will retry automatically; non-sandbox work remains available.",{recoveryAction:"automatic-retry"}):Go(e,r)}a(Mo,"windowsSandboxAclSetupBlockWithLock");function jo(e,r){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(n=>!n.startsWith(Ke)),`${Ke} ${r.message}`]}}a(jo,"withWindowsSandboxAclSetupBlock");async function Uo(){let[e,r]=Be,n=new Set,t;for(let o=0;o<5;o+=1){let i=jt(1024,e);for(;n.has(i);)i=i+1<e?i+1:1024;n.add(i);let s=Ht();try{return s.listen(i,"127.0.0.1"),await Ut(s,"listening"),{server:s,target:`127.0.0.1:${i}`}}catch(d){if(s.close(),!V(d,"EADDRINUSE","EACCES"))throw d;t=d}}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${r}].`,{cause:t})}a(Uo,"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"}a(Mr,"windowsRunnerFailureCode");function Fo(e){return V(e,"ETIMEDOUT")?"wfp_probe_timeout":V(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}a(Fo,"windowsRunnerSpawnFailureCode");async function jn(e){let{server:r,target:n}=await Uo();try{let t=we(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",n],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${Fo(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let i;try{i=JSON.parse((t.stdout??"").trim())}catch{let s=t.status===null?"wfp_probe_timeout":Mr(o);throw new Error(`[${s}] 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(i.target??n)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||i.egress_probe!=="blocked")throw new Error(`[${Mr(o)}] Windows sandbox WFP probe to ${String(i.target??n)} was ${String(i.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{r.close()}}a(jn,"verifyPreparedWindowsWfp");function Un(e){let r=[];return e.provisioned||r.push("Windows sandbox account does not exist."),e.sid||r.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&r.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||r.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||r.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||r.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||r.push("Windows sandbox account credential is unavailable."),r}a(Un,"windowsSandboxAccountDiagnostics");function Vo(e){let r=JSON.parse(e);if(typeof r!="object"||r===null)return;let n=r;if(n.version===1&&(n.state==="applied"&&n.policyId==="kodax-workspace-shell-v1"&&(n.backend==="windows-restricted-user"||n.backend==="macos-seatbelt"||n.backend==="linux-bubblewrap"||n.backend==="unsupported")||n.state==="fallback"&&n.reason==="backend_failed"&&n.execution==="normal_permission_policy"))return n}a(Vo,"parseBrokerObservation");function lt(e){let r=B(),n={...e,controlInvocationId:r},t=Buffer.from(JSON.stringify(n),"utf8");if(t.byteLength>Dn)throw new Error(`Sandbox broker request exceeded ${Dn} bytes.`);return{invocationId:r,payload:t,request:n}}a(lt,"encodeControlledBrokerRequest");function ut(e,r,n){if(e.byteLength===0)return;if(e.byteLength>wn)throw new Error("Sandbox broker control frame exceeded its byte limit.");let t=Buffer.from(e),o=t.indexOf(10);if(o<0||t.subarray(o+1).some(u=>u>32))throw new Error("Sandbox broker control channel returned an invalid frame boundary.");let i=JSON.parse(t.subarray(0,o).toString("utf8"));if(typeof i!="object"||i===null)throw new Error("Sandbox broker control channel returned a non-object frame.");let s=i;if(s.version!==1||s.invocationId!==r||typeof s.observation!="object"||s.observation===null)throw new Error("Sandbox broker control frame did not match this invocation.");let d=s.observation;if(d.version!==1)throw new Error("Sandbox broker control observation has an incompatible version.");if(d.state==="not_started"){if(d.diagnostic!==void 0&&typeof d.diagnostic!="string")throw new Error("Sandbox broker pre-target diagnostic is invalid.");return d}let c=Vo(JSON.stringify(d));if(c===void 0)throw new Error("Sandbox broker control observation is invalid.");if(c.state==="applied"&&c.backend!==n)throw new Error("Sandbox broker control observation reported the wrong backend.");return c}a(ut,"parseSandboxBrokerControl");function Ko(e){let r=e.stdio[3];return r==null?Promise.reject(new Error("Sandbox broker control pipe was not created.")):new Promise((n,t)=>{let o=[],i=0,s=!1,d=a(c=>{s||(s=!0,c===void 0?n(Buffer.concat(o)):t(c))},"finish");r.on("data",c=>{if(i+=c.byteLength,i>wn){d(new Error("Sandbox broker control frame exceeded its byte limit.")),r.destroy();return}o.push(c)}),r.once("error",d),r.once("end",()=>d())})}a(Ko,"collectSandboxBrokerControl");function mn(){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}a(mn,"sandboxJavaScriptCommand");async function z(e={}){if(e.refresh||Re===void 0||Date.now()>=tn){let r=qo();Re=r,tn=Number.POSITIVE_INFINITY,r.then(n=>{Re===r&&(tn=n.ready?Number.POSITIVE_INFINITY:Date.now()+mo)},()=>{Re===r&&(Re=void 0,tn=0)})}return Re}a(z,"doctorSandboxRuntime");async function qo(){let e=[];_n.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:_n.checkDependencies();e.push(...r.warnings,...r.errors);let n=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let s=JSON.parse(await je(qn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));s.version!==Se&&(n=!0,e.push(`ASRT package version mismatch: expected ${Se}, found ${String(s.version)}.`))}catch(s){n=!0,e.push(`ASRT package provenance check failed: ${Y(s)}`)}let t=mn(),o=xe({args:["--version"],env:Z(),isElectron:t===process.execPath&&process.versions.electron!==void 0}),i=we(t,o.args,{env:o.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){n=!0;let s=i.error?.message??(i.stderr.trim()||t);e.push(`JavaScript Skill interpreter is unavailable: ${s}.`)}if(process.platform==="win32"){try{let d=await Ye([],!1),c=he({srtWin:d.srtWin}),u=Un(c);if(u.length>0||!c.sid||!c.groupSid)n=!0,e.push(...u);else{let f=await gn(c.groupSid,[],!1);en();try{be=st(c),Yo(c.sid,f.path),await jn(d)}catch(p){n=!0,e.push(Y(p))}}}catch(d){n=!0,e.push(Y(d))}let s=dt();s.length>0&&e.push(`${Ro} ${s.length} pre-v2 ACL recovery record(s) remain for migration diagnosis; Windows v2 shell admission does not read them.`)}return{ready:_n.isSupportedPlatform()&&!n,platform:process.platform,version:Se,diagnostics:e,setupRequired:n}}a(qo,"inspectSandboxRuntime");var Xo=String.raw`
418
418
  $ErrorActionPreference = 'Stop'
419
419
  $process = Start-Process -FilePath $env:KODAX_NATIVE_SETUP_EXE -ArgumentList @('__setup-account-capabilities', $env:KODAX_NATIVE_SETUP_ENVELOPE) -Verb RunAs -PassThru -WindowStyle Hidden
420
420
  $process.WaitForExit()
421
421
  $exitCode = $process.ExitCode
422
422
  $process.Dispose()
423
423
  exit $exitCode
424
- `,Jo=a((e,r)=>{if(!/^S-1-5-21(?:-\d+)+$/i.test(r.sandboxSid)||!/^S-1-5-21(?:-\d+)+$/i.test(r.sandboxGroupSid)||r.sandboxSid.toLowerCase()===r.sandboxGroupSid.toLowerCase()||!l.isAbsolute(r.setupMarkerPath)||!/^[0-9a-f]{64}$/i.test(r.setupMarkerSha256))throw new Error("Windows sandbox account authority is invalid for capability setup.");if(r.readRoots.length+r.writeRoots.length>1024)throw new Error("Windows sandbox setup capability request exceeds 1024 roots.");let n=en(),t=l.join(n,`windows-setup-${process.pid}-${B()}.json`),o=Buffer.from(JSON.stringify(r),"utf8");if(o.byteLength>1024*1024)throw new Error("Windows sandbox setup capability request exceeds 1 MiB.");let i=Je("sha256").update(o).digest("hex"),s=Buffer.from(JSON.stringify({version:1,requestPath:t,sha256:i}),"utf8").toString("base64");Hr(t,o,{flag:"wx",mode:384});let d=l.join(process.env.SystemRoot??String.raw`C:\Windows`,"System32","WindowsPowerShell","v1.0","powershell.exe");try{let c=we(d,["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(Xo,"utf16le").toString("base64")],{encoding:"utf8",env:{...process.env,KODAX_NATIVE_SETUP_EXE:e,KODAX_NATIVE_SETUP_ENVELOPE:s},shell:!1,windowsHide:!0});if(c.error!==void 0||c.status!==0){let u=c.error?.message??(c.stderr.trim()||`exit ${String(c.status)}`);throw new Error(`Windows sandbox account capability setup failed: ${u}`)}}finally{fn(t,{force:!0})}},"installWindowsSetupCapabilities"),Ho=Jo;function jr(e,r,n,t){let o=l.resolve(process.env.USERPROFILE??U.homedir()),i=de(o);Ho(ie({provision:!0}).path,{version:2,sandboxSid:e,sandboxGroupSid:r,filesystemCapabilityNonce:n,setupMarkerPath:se(),setupMarkerSha256:Je("sha256").update(JSON.stringify(t),"utf8").digest("hex"),readRoots:Ie(Ee(t.setupReadRoots,o,i)),writeRoots:[],aclExclusions:i,..."legacyAclCleanup"in t?{legacyAclCleanup:t.legacyAclCleanup}:{}})}a(jr,"installWindowsV2AccountCapabilities");function zo(e,r){if(e?.legacyAclCleanup!==void 0)return{legacyAclCleanup:e.legacyAclCleanup};if(e===void 0||e.version<10||e.version>=Pe&&!e.installing)return{};let n=l.resolve(process.env.USERPROFILE??U.homedir()),t=de(n),o=e.setupReadRoots.filter(i=>t.some(s=>O(i,s)||O(s,i)));return{legacyAclCleanup:{roots:[...new Set([...o,...t,...mr(n)])],sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:r}}}a(zo,"pendingWindowsSshAclCleanup");function Yo(e,r){let n=we(r,["__verify-null-device",e],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3});if(n.error!==void 0||n.status!==0){let t=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw le(`The sandbox account NUL-device compatibility ACE is missing or unsafe: ${t}`)}}a(Yo,"verifyWindowsV2AccountCompatibility");async function Zo(e){let r=await z({refresh:!0});if(!e&&r.ready||!r.ready&&!r.setupRequired)return r;ie({provision:!0});let n=No()??B(),t,o=!1;try{t=Co()}catch(E){o=!0,T({source:"sandbox:windows-v2-setup",level:"warn",message:"The previous Windows sandbox generation marker is invalid and will be rotated.",detail:E})}let i=t!==void 0&&t.version>=10&&(t.version<Pe||t.installing);if(i&&t!==void 0&&!await sn(t.sandboxUserSid))throw new Error('Windows sandbox SSH ACL migration requires idle sandbox processes; close sandboxed shells and retry "kodax sandbox setup".');await Oo(),i||await To();let s=await Ye([],!0),d=he({srtWin:s.srtWin}),c=d.sid,u=Fn(d).length===0&&d.sid!==void 0&&d.groupSid!==void 0,f=t===void 0||d.sid===t.sandboxUserSid&&d.groupSid===t.sandboxGroupSid&&In()===t.hostUserSid,p=u&&!o&&f;Io();let g;try{en()}catch(E){g=E}if(g!==void 0){if(qn(Le())){if(d.sid===void 0&&d.provisioned!==!1)throw new Error("[windows_control_repair_sid_unavailable] The native shell control directory needs repair, but the provisioned sandbox account SID is unavailable; repair cannot safely prove that no sandbox process still holds a control-state handle.");if(c!==void 0&&!await sn(c))throw new Error('The native shell control directory needs repair while the sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".')}try{ur()}catch(b){throw new AggregateError([g,b],"Windows native shell control state verification and setup repair both failed.")}let E=await z({refresh:!0});if(E.ready)return E}if(p){if((t?.version??0)<zn&&!xi(d.groupSid)){if(!await sn(d.sid))throw new Error('Legacy Windows sandbox ACL migration requires the sandbox account to be idle; close sandboxed shells and retry "kodax sandbox setup".');Vr(d.sid,d.groupSid)}if(Tr({srtWin:s.srtWin,proxyPortRange:Be,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let y=he({srtWin:s.srtWin});if(y.sid===void 0||y.groupSid===void 0)throw new Error("Windows sandbox setup did not return complete account SIDs.");if(y.sid!==d.sid||y.groupSid!==d.groupSid)throw new Error("Windows sandbox in-place setup unexpectedly changed its account identity.");ie({sandboxReadSid:y.groupSid,provision:!0});let v={version:Pe,protocol:j,generationNonce:B(),filesystemCapabilityNonce:n,hostUserSid:In(),sandboxUserSid:y.sid,sandboxGroupSid:y.groupSid,setupReadRoots:Kr()},R=$r(v,t);return jr(y.sid,y.groupSid,n,R),await Un(s),Br(v),z({refresh:!0})}if(c!==void 0&&!await sn(c))throw new Error('The Windows sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".');let w=await Mo();if(w!==void 0)return jo(r,w);if(c!==void 0){if(await ct(),d.groupSid===void 0)throw new Error("The legacy Windows sandbox group SID is unavailable; exact ACL migration cannot proceed.");if(Vr(c,d.groupSid),eo({keepUser:!1,srtWin:s.srtWin}).cancelled)throw new Error("Sandbox account rotation was cancelled.")}if(Tr({srtWin:s.srtWin,proxyPortRange:Be,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let S=he({srtWin:s.srtWin}),h=Fn(S);if(h.length>0||S.sid===void 0||S.groupSid===void 0)throw new Error(`Windows sandbox setup remained incomplete: ${h.join(" ")}`);if(c!==void 0&&S.sid===c)throw new Error("Windows sandbox account rotation did not produce a new SID; v2 remains fail-closed.");ie({sandboxReadSid:S.groupSid,provision:!0});let W={version:Pe,protocol:j,generationNonce:B(),filesystemCapabilityNonce:n,hostUserSid:In(),sandboxUserSid:S.sid,sandboxGroupSid:S.groupSid,setupReadRoots:Kr()},F=$r(W,t);return jr(S.sid,S.groupSid,n,F),await Un(s),Br(W),z({refresh:!0})}a(Zo,"setupWindowsSandboxRuntimeWithLock");async function ft(e){return await ne(l.dirname(Dr()),{recursive:!0,mode:448}),dr(Dr(),()=>Zo(e),ho)}a(ft,"runWindowsSandboxSetup");async function Os(){return process.platform!=="win32"?z({refresh:!0}):ft(!0)}a(Os,"setupSandboxRuntime");function We(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let r=e.diagnostics.find(n=>n.startsWith(Ke));return r!==void 0?[r.slice(Ke.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}.`]}a(We,"sandboxSetupGuidance");async function Is(e={}){let r=e.initialDoctor??await z({refresh:!0});if(r.ready)return{status:"ready",attempted:!1,doctor:r,guidance:We(r)};if(xo(r))return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};if(!r.setupRequired)return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};if(r.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};try{let n=r.diagnostics.some(o=>o.startsWith("Sandbox launch probe failed:"));await ft(n);let t=await Ui({refresh:!0});return{status:t.ready?"ready":"unavailable",attempted:!0,doctor:t,guidance:We(t)}}catch(n){let t=await z({refresh:!0}),o=Y(n);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:We(t),error:o}}}a(Is,"prepareSandboxRuntimeForSetup");function fe(e,r){let n=e.replaceAll("\\","/").replace(/^\.\//,"");if(!n||l.posix.isAbsolute(n)||n.split("/").includes(".."))throw new Error(`${r} must be a safe relative path.`);return n}a(fe,"canonicalRelative");function O(e,r){let n=l.relative(e,r);return n===""||!n.startsWith("..")&&!l.isAbsolute(n)}a(O,"isInside");function wt(e){let r=e.split(l.sep).map(n=>n.toLowerCase());return r.some(n=>to.has(n))||r.some(n=>oo.has(n)||n.startsWith(".env."))}a(wt,"isSensitiveRelative");async function Qo(e,r){await ne(r,{recursive:!0,mode:448});let n=[...(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 Fe(l.join(r,"SKILL.md"),await je(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of n){let i=fe(o.relativePath,`Skill ${e.name} support file`),s=l.join(r,t,...i.split("/"));await ne(l.dirname(s),{recursive:!0,mode:448}),await Fe(s,await je(o.path),{mode:384})}}a(Qo,"copySkillSnapshot");async function ei(e,r){let n=new Map;for(let[t,o]of Object.entries(e.admissions)){let i=await e.registry.loadFull(t),s=new Map((i.scripts??[]).map(c=>[`scripts/${fe(c.relativePath,`Skill ${t} script`)}`,c])),d=l.join(r,t.replace(/[^A-Za-z0-9._-]/g,"_"));await Qo(i,d);for(let c of o){let u=fe(c,`toolPolicy.skillScripts.${t}`);if(!s.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);n.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:l.join(d,...u.split("/"))})}}return n}a(ei,"snapshotAdmissions");function ni(e){return e.mode==="deny"?[]:e.origins.map(r=>{let n=new URL(r);return{host:n.hostname.toLowerCase(),port:n.port?Number(n.port):n.protocol==="https:"?443:80}})}a(ni,"networkEndpoints");function Z(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],r={NO_COLOR:"1"};for(let n of e)process.env[n]!==void 0&&(r[n]=process.env[n]);for(let[n,t]of Object.entries(process.env))n.startsWith("LC_")&&t!==void 0&&(r[n]=t);return Yn(r)}a(Z,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let r=new Map;for(let[n,t]of Object.entries(e))t!==void 0&&r.set(n.toLowerCase(),[n,t]);return Object.fromEntries(r.values())}a(Yn,"normalizedSandboxEnvironment");function ri(e,r){return Yn({...e,...r})}a(ri,"mergeSandboxEnvironment");function ti(e){let r=l.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(r))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(r===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(r===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?l.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(r===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(r)&&process.platform==="win32")return{command:process.env.COMSPEC??l.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${r||"<none>"}.`)}a(ti,"interpreterFor");var Ur=250,oi=1500,ii=1e3,Fr=12e3;async function bn(e,r,n=ze,t=He,o=!1,i){let s=[],d=[],c=i!==void 0||e.pid===void 0?void 0:hn(e.pid),u=0,f,p=a(()=>{},"reportStopRequested"),g,w,m=new Promise(E=>{p=E}),S=a(E=>{if(f!==void 0)return;f=E,p();let b=!1,y,v;if(g=new Promise((k,N)=>{y=k,v=N}),g.catch(()=>{}),i!==void 0){i.terminate(e).then(y,k=>{v(k instanceof Error?k:new Error(String(k)))});return}let R=a(async k=>{let N=o?new Error("Native Windows sandbox host termination was not confirmed."):new Error("Sandbox broker process-tree termination was not confirmed; stop the retained process tree before retrying.");return k===void 0?N:new AggregateError([N,k],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),A=a(k=>{b||(b=!0,w!==void 0&&clearTimeout(w),k===void 0?y():v(k))},"finish");w=setTimeout(()=>{try{e.kill("SIGKILL"),R().then(A)}catch(k){R(k).then(A)}},oi),De(e,{expectedProcessStartIdentity:c,forceMs:Ur,taskkillMs:Ur}).then(async k=>A(k.status==="unknown"?await R():void 0),async k=>A(await R(k)))},"requestStop"),h=a((E,b)=>{u+=b.byteLength,u>t?S(new Error(`Sandboxed command output exceeded ${t} bytes.`)):E.push(b)},"append");e.stdout?.on("data",E=>{h(s,E)}),e.stderr?.on("data",E=>{h(d,E)});let W=setTimeout(()=>{S(new Error(`Sandboxed command exceeded its ${n} ms timeout.`))},n),F=a(()=>{let E=r?.reason;S(E instanceof Error?E:new Error("Sandboxed command was cancelled."))},"abort");r?.addEventListener("abort",F,{once:!0}),r?.aborted&&F();try{let E=new Promise((y,v)=>{e.once("error",v),e.stdin?.once("error",v),e.once("close",R=>y(R??1))}),b=await Promise.race([E,m.then(()=>1)]);if(f!==void 0){let y=f;try{await g}catch(v){let R=Buffer.concat(d).toString("utf8").trim();throw new AggregateError([y,v,...R===""?[]:[new Error(`Native sandbox stderr: ${R.slice(0,4096)}`)]],"Sandboxed command failed and native termination was not confirmed.")}throw y}return{exitCode:b,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(d).toString("utf8")}}finally{clearTimeout(W),w!==void 0&&clearTimeout(w),r?.removeEventListener("abort",F)}}a(bn,"collectProcess");function Me(e){return e.reason instanceof Error?e.reason:new DOMException("Operation aborted","AbortError")}a(Me,"sandboxAbortError");function si(e,r,n,t,o,i){let s=new WeakMap,d=new WeakMap,c=new WeakMap,u,f,p=!1,g,w=Buffer.concat([Buffer.from(e),_n("close-stdin")]),m=a((b,y,v)=>{let R=Math.min(v,Date.now()+$n),A=b.stdin;if(A===null)return Promise.reject(new Error("Native sandbox bootstrap pipe was not created."));if(y?.aborted)return Promise.reject(Me(y));if(Date.now()>=R)return Promise.reject(new Error("Native sandbox bootstrap delivery timed out."));let k=Buffer.alloc(0),N=b.stderr,q=a($=>{k=Buffer.concat([k,$]).subarray(-4096)},"onStderr");return N?.on("data",q),c.set(b,"bootstrap-pending"),new Promise(($,Q)=>{let I=!1,D,P=setTimeout(()=>G(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(1,R-Date.now()));P.unref();let G=a(_=>{if(!I)if(I=!0,clearTimeout(P),D!==void 0&&clearTimeout(D),y?.removeEventListener("abort",re),N?.off("data",q),_===void 0)$();else{let te=k.toString("utf8").trim();Q(te===""?_:new Error(`${_.message} Native sandbox stderr: ${te}`,{cause:_}))}},"finish"),ee=a(_=>{I||D!==void 0||(D=setTimeout(()=>G(_),100),D.unref())},"failAfterStderrDrain"),X=a(_=>{ee(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))},"onError"),L=a(()=>{A.off("error",X),I||ee(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose"),re=a(()=>{y!==void 0&&G(Me(y))},"onAbort");if(A.on("error",X),A.once("close",L),y?.addEventListener("abort",re,{once:!0}),y?.aborted){re();return}A.write(w,_=>{_==null?(I||c.set(b,"control-open"),G()):ee(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))})})},"closeInput"),S=a(async()=>{let b=await je(t,"utf8"),y=JSON.parse(b),v=typeof y=="object"&&y!==null?Reflect.get(y,"denyReadCleanupDeferred"):void 0,R=typeof y=="object"&&y!==null?Reflect.get(y,"denyReadCleanupDiagnostic"):void 0,A=typeof y=="object"&&y!==null?Reflect.get(y,"brokerRetirementRecommended"):void 0;if(typeof y!="object"||y===null||Reflect.get(y,"protocol")!==j||Reflect.get(y,"nonce")!==o.toLowerCase()||Reflect.get(y,"jobDrained")!==!0||!Number.isSafeInteger(Reflect.get(y,"targetExitCode"))||typeof Reflect.get(y,"terminationRequested")!="boolean"||typeof A!="boolean"||typeof v!="boolean"||v&&(typeof R!="string"||R.length===0||R.length>2048))throw new Error("Native sandbox terminal record was invalid.");A&&(p=!0),v&&T({source:"sandbox:windows-v2",level:"warn",message:"Windows denyRead ACL cleanup was deferred for automatic recovery.",detail:R})},"verifyTerminalRecord"),h=a(async b=>{let y=await je(b,"utf8"),v=JSON.parse(y);if(typeof v!="object"||v===null||Reflect.get(v,"protocol")!==j||Reflect.get(v,"nonce")!==o.toLowerCase()||!Number.isSafeInteger(Reflect.get(v,"targetPid"))||Number(Reflect.get(v,"targetPid"))<=0||Reflect.get(v,"jobContained")!==!0)throw new Error("Native sandbox target-start record was invalid.")},"verifyLaunchRecord"),W=a(()=>h(n),"verifyStartedRecord");return{validateStart:i,closeInput:m,attestStart:a((b,y,v)=>{let R=d.get(b);if(R!==void 0)return R;let A=Math.min(v,Date.now()+$n),k=A<v,N=new Promise((q,$)=>{let Q=!1,I=b.exitCode!==null||b.signalCode!==null,D=b.exitCode,P=b.signalCode,G,ee=Buffer.alloc(0),X=b.stderr,L=a((M,x)=>{Q||(Q=!0,G!==void 0&&clearTimeout(G),b.off("close",_),y?.removeEventListener("abort",te),X?.off("data",re),x!==void 0?(f=Y(x),$(x)):M!==void 0&&(M.state==="pre_start_unavailable"&&(u=M.diagnostic,!y?.aborted&&Date.now()<v&&(p=!0)),q(M)))},"finish"),re=a(M=>{ee=Buffer.concat([ee,M]).subarray(-4096)},"onStderr"),_=a((M,x)=>{I=!0,D=M,P=x,pe()},"onClose"),te=a(()=>{y!==void 0&&L(void 0,Me(y))},"onAbort"),pe=a(async()=>{if(!Q){try{await W(),c.set(b,"started"),L({state:"started"});return}catch(M){if(!V(M,"ENOENT")){L(void 0,M);return}}if(I){try{await h(r)}catch(x){if(!V(x,"ENOENT")){L(void 0,x);return}c.set(b,"pre-start-unavailable");let ge=ee.toString("utf8").trim()||`Native sandbox exited before target-start attestation (code ${String(D)}, signal ${String(P)}).`;L({state:"pre_start_unavailable",diagnostic:ge});return}let M=ee.toString("utf8").trim()||"Native sandbox authorized target Resume but exited before target-start attestation; execution is started-or-unknown and will not be replayed.";L(void 0,new Error(M));return}if(Date.now()>=A){k&&(p=!0),L(void 0,new Error("Native sandbox target-start attestation timed out."));return}G=setTimeout(()=>{pe()},20),G.unref()}},"poll");X?.on("data",re),b.once("close",_),y?.addEventListener("abort",te,{once:!0}),y?.aborted?te():pe()});return d.set(b,N),N.catch(()=>{}),N},"attestStart"),terminate:a(b=>{let y=s.get(b);if(y!==void 0)return y;let v=new Promise((R,A)=>{let k=c.get(b),N=k===void 0||k==="pre-start-unavailable",q=k!=="started",$=b.stdin;if($===null){A(new Error("Native sandbox control pipe was not created."));return}let Q=a(async(x,ge,ve)=>{if(!N){if(q)try{await h(r)}catch(Qe){if(V(Qe,"ENOENT")){u??=f??"Native sandbox target Resume never occurred.",c.set(b,"pre-start-unavailable");return}throw Qe}try{await S()}catch(Qe){throw new Error(`Native sandbox closed without a Job-drain attestation (code ${String(x)}, signal ${String(ge)}).`,{cause:new AggregateError([Qe,...ve===void 0?[]:[ve]],"Native sandbox terminal record verification failed.")})}}},"verifyClosedBoundary");if(b.exitCode!==null||b.signalCode!==null){Q(b.exitCode,b.signalCode).then(()=>{c.set(b,"terminal"),R()},A);return}let I=!1,D=!1,P,G=q?ii:Fr,ee=Date.now(),X,L=a(x=>{I||(I=!0,X!==void 0&&clearTimeout(X),b.off("close",re),b.off("error",_),$.off("error",te),x===void 0?R():A(x))},"finish"),re=a((x,ge)=>{D||Q(x,ge,P).then(()=>{c.set(b,"terminal"),L()},ve=>L(ve instanceof Error?ve:new Error(String(ve))))},"onClose"),_=a(x=>{P??=x},"onChildError"),te=a(x=>{P??=x},"onStdinError"),pe=a(()=>{I||D||(D=!0,De(b,{forceMs:500,taskkillMs:500}).then(x=>{if(x.status==="unknown"){L(new AggregateError([new Error("Emergency process-tree termination was not confirmed."),...P===void 0?[]:[P]],"Native sandbox termination was not confirmed by its runner."));return}Q(b.exitCode,b.signalCode,P).then(()=>{c.set(b,"terminal"),L()},ge=>L(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${G} ms.`),ge],"Native sandbox termination was not confirmed by its runner.")))},x=>L(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${G} ms.`),...P===void 0?[]:[P],x],"Native sandbox termination and emergency cleanup both failed."))))},"startEmergencyCleanup");X=setTimeout(a(()=>{if(!q){pe();return}h(r).then(()=>{if(I||D)return;G=Fr;let x=Math.max(0,G-(Date.now()-ee));X=setTimeout(pe,x),X.unref()},x=>{V(x,"ENOENT")||(P??=x instanceof Error?x:new Error(String(x))),pe()})},"onTerminationBudgetExpired"),G),X.unref(),b.once("close",re),b.once("error",_),$.on("error",te),$.end(c.get(b)===void 0?void 0:_n("terminate"),x=>{x!=null&&(P??=x)})});return s.set(b,v),g=v,v.catch(()=>{}),v},"terminate"),getPreStartUnavailableDiagnostic:a(()=>u,"getPreStartUnavailableDiagnostic"),shouldRetireBrokerAfterStartFailure:a(()=>p,"shouldRetireBrokerAfterStartFailure"),async waitForTerminalObservation(){let b=g;if(b===void 0){await S();return}await b}}}a(si,"createWindowsV2ProcessControl");function ai(e,r,n,t){let o=e.stdin;return o===null?Promise.reject(new Error("Native sandbox bootstrap pipe was not created.")):n?.aborted?Promise.reject(Me(n)):Date.now()>=t?Promise.reject(new Error("Native sandbox bootstrap delivery timed out.")):new Promise((i,s)=>{let d=!1,c=setTimeout(()=>u(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(0,t-Date.now()));c.unref();let u=a(w=>{d||(d=!0,clearTimeout(c),n?.removeEventListener("abort",p),w===void 0?i():s(w))},"finish"),f=a(()=>u(new Error("Native sandbox bootstrap delivery failed.")),"onError"),p=a(()=>{n!==void 0&&u(Me(n))},"onAbort"),g=a(()=>{o.off("error",f),d||u(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose");o.on("error",f),o.once("close",g),o.once("finish",()=>u()),n?.addEventListener("abort",p,{once:!0}),r===void 0?o.end():o.end(r)})}a(ai,"closeNativeSandboxInput");async function di(e,r){let n=l.join(r,`kodax-asrt-gate-${process.pid}-${B()}.json`);return await Fe(n,JSON.stringify(e),{mode:384}),{...or({args:["-e",go,n],env:Z(),isElectron:process.versions.electron!==void 0}),gateFile:n}}a(di,"prepareWindowsGatedLaunch");function ci(e,r){let n=e.stdin;return n===null?Promise.reject(new Error("Sandbox gate stdin is unavailable.")):new Promise((t,o)=>{let i=!1,s=a(()=>{n.removeListener("error",c)},"cleanup"),d=a(u=>{i||(i=!0,s(),u?o(u):t())},"settle"),c=a(u=>d(u),"onError");n.once("error",c),r?n.end(`go
424
+ `,Jo=a((e,r)=>{if(!/^S-1-5-21(?:-\d+)+$/i.test(r.sandboxSid)||!/^S-1-5-21(?:-\d+)+$/i.test(r.sandboxGroupSid)||r.sandboxSid.toLowerCase()===r.sandboxGroupSid.toLowerCase()||!l.isAbsolute(r.setupMarkerPath)||!/^[0-9a-f]{64}$/i.test(r.setupMarkerSha256))throw new Error("Windows sandbox account authority is invalid for capability setup.");if(r.readRoots.length+r.writeRoots.length>1024)throw new Error("Windows sandbox setup capability request exceeds 1024 roots.");let n=en(),t=l.join(n,`windows-setup-${process.pid}-${B()}.json`),o=Buffer.from(JSON.stringify(r),"utf8");if(o.byteLength>1024*1024)throw new Error("Windows sandbox setup capability request exceeds 1 MiB.");let i=Je("sha256").update(o).digest("hex"),s=Buffer.from(JSON.stringify({version:1,requestPath:t,sha256:i}),"utf8").toString("base64");Hr(t,o,{flag:"wx",mode:384});let d=l.join(process.env.SystemRoot??String.raw`C:\Windows`,"System32","WindowsPowerShell","v1.0","powershell.exe");try{let c=we(d,["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(Xo,"utf16le").toString("base64")],{encoding:"utf8",env:{...process.env,KODAX_NATIVE_SETUP_EXE:e,KODAX_NATIVE_SETUP_ENVELOPE:s},shell:!1,windowsHide:!0});if(c.error!==void 0||c.status!==0){let u=c.error?.message??(c.stderr.trim()||`exit ${String(c.status)}`);throw new Error(`Windows sandbox account capability setup failed: ${u}`)}}finally{fn(t,{force:!0})}},"installWindowsSetupCapabilities"),Ho=Jo;function jr(e,r,n,t){let o=l.resolve(process.env.USERPROFILE??U.homedir()),i=de(o);Ho(ie({provision:!0}).path,{version:2,sandboxSid:e,sandboxGroupSid:r,filesystemCapabilityNonce:n,setupMarkerPath:se(),setupMarkerSha256:Je("sha256").update(JSON.stringify(t),"utf8").digest("hex"),readRoots:Ie(Ee(t.setupReadRoots,o,i)),writeRoots:[],aclExclusions:i,..."legacyAclCleanup"in t?{legacyAclCleanup:t.legacyAclCleanup}:{}})}a(jr,"installWindowsV2AccountCapabilities");function zo(e,r){if(e?.legacyAclCleanup!==void 0)return{legacyAclCleanup:e.legacyAclCleanup};if(e===void 0||e.version<10||e.version>=Pe&&!e.installing)return{};let n=l.resolve(process.env.USERPROFILE??U.homedir()),t=de(n),o=e.setupReadRoots.filter(i=>t.some(s=>O(i,s)||O(s,i)));return{legacyAclCleanup:{roots:[...new Set([...o,...t,...mr(n)])],sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:r}}}a(zo,"pendingWindowsSshAclCleanup");function Yo(e,r){let n=we(r,["__verify-null-device",e],{env:Z(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3});if(n.error!==void 0||n.status!==0){let t=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw le(`The sandbox account NUL-device compatibility ACE is missing or unsafe: ${t}`)}}a(Yo,"verifyWindowsV2AccountCompatibility");async function Zo(e){let r=await z({refresh:!0});if(!e&&r.ready||!r.ready&&!r.setupRequired)return r;ie({provision:!0});let n=No()??B(),t,o=!1;try{t=Co()}catch(E){o=!0,T({source:"sandbox:windows-v2-setup",level:"warn",message:"The previous Windows sandbox generation marker is invalid and will be rotated.",detail:E})}let i=t!==void 0&&t.version>=10&&(t.version<Pe||t.installing);if(i&&t!==void 0&&!await sn(t.sandboxUserSid))throw new Error('Windows sandbox SSH ACL migration requires idle sandbox processes; close sandboxed shells and retry "kodax sandbox setup".');await Oo(),i||await To();let s=await Ye([],!0),d=he({srtWin:s.srtWin}),c=d.sid,u=Un(d).length===0&&d.sid!==void 0&&d.groupSid!==void 0,f=t===void 0||d.sid===t.sandboxUserSid&&d.groupSid===t.sandboxGroupSid&&On()===t.hostUserSid,p=u&&!o&&f;Io();let g;try{en()}catch(E){g=E}if(g!==void 0){if(Kn(Le())){if(d.sid===void 0&&d.provisioned!==!1)throw new Error("[windows_control_repair_sid_unavailable] The native shell control directory needs repair, but the provisioned sandbox account SID is unavailable; repair cannot safely prove that no sandbox process still holds a control-state handle.");if(c!==void 0&&!await sn(c))throw new Error('The native shell control directory needs repair while the sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".')}try{ur()}catch(b){throw new AggregateError([g,b],"Windows native shell control state verification and setup repair both failed.")}let E=await z({refresh:!0});if(E.ready)return E}if(p){if((t?.version??0)<Hn&&!xi(d.groupSid)){if(!await sn(d.sid))throw new Error('Legacy Windows sandbox ACL migration requires the sandbox account to be idle; close sandboxed shells and retry "kodax sandbox setup".');Vr(d.sid,d.groupSid)}if(Tr({srtWin:s.srtWin,proxyPortRange:Be,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let y=he({srtWin:s.srtWin});if(y.sid===void 0||y.groupSid===void 0)throw new Error("Windows sandbox setup did not return complete account SIDs.");if(y.sid!==d.sid||y.groupSid!==d.groupSid)throw new Error("Windows sandbox in-place setup unexpectedly changed its account identity.");ie({sandboxReadSid:y.groupSid,provision:!0});let v={version:Pe,protocol:j,generationNonce:B(),filesystemCapabilityNonce:n,hostUserSid:On(),sandboxUserSid:y.sid,sandboxGroupSid:y.groupSid,setupReadRoots:Kr()},R=$r(v,t);return jr(y.sid,y.groupSid,n,R),await jn(s),Br(v),z({refresh:!0})}if(c!==void 0&&!await sn(c))throw new Error('The Windows sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".');let w=await Mo();if(w!==void 0)return jo(r,w);if(c!==void 0){if(await ct(),d.groupSid===void 0)throw new Error("The legacy Windows sandbox group SID is unavailable; exact ACL migration cannot proceed.");if(Vr(c,d.groupSid),eo({keepUser:!1,srtWin:s.srtWin}).cancelled)throw new Error("Sandbox account rotation was cancelled.")}if(Tr({srtWin:s.srtWin,proxyPortRange:Be,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let S=he({srtWin:s.srtWin}),h=Un(S);if(h.length>0||S.sid===void 0||S.groupSid===void 0)throw new Error(`Windows sandbox setup remained incomplete: ${h.join(" ")}`);if(c!==void 0&&S.sid===c)throw new Error("Windows sandbox account rotation did not produce a new SID; v2 remains fail-closed.");ie({sandboxReadSid:S.groupSid,provision:!0});let W={version:Pe,protocol:j,generationNonce:B(),filesystemCapabilityNonce:n,hostUserSid:On(),sandboxUserSid:S.sid,sandboxGroupSid:S.groupSid,setupReadRoots:Kr()},F=$r(W,t);return jr(S.sid,S.groupSid,n,F),await jn(s),Br(W),z({refresh:!0})}a(Zo,"setupWindowsSandboxRuntimeWithLock");async function ft(e){return await ne(l.dirname(Dr()),{recursive:!0,mode:448}),dr(Dr(),()=>Zo(e),ho)}a(ft,"runWindowsSandboxSetup");async function Ts(){return process.platform!=="win32"?z({refresh:!0}):ft(!0)}a(Ts,"setupSandboxRuntime");function We(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let r=e.diagnostics.find(n=>n.startsWith(Ke));return r!==void 0?[r.slice(Ke.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}.`]}a(We,"sandboxSetupGuidance");async function Os(e={}){let r=e.initialDoctor??await z({refresh:!0});if(r.ready)return{status:"ready",attempted:!1,doctor:r,guidance:We(r)};if(xo(r))return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};if(!r.setupRequired)return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};if(r.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:r,guidance:We(r)};try{let n=r.diagnostics.some(o=>o.startsWith("Sandbox launch probe failed:"));await ft(n);let t=await Ui({refresh:!0});return{status:t.ready?"ready":"unavailable",attempted:!0,doctor:t,guidance:We(t)}}catch(n){let t=await z({refresh:!0}),o=Y(n);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:We(t),error:o}}}a(Os,"prepareSandboxRuntimeForSetup");function fe(e,r){let n=e.replaceAll("\\","/").replace(/^\.\//,"");if(!n||l.posix.isAbsolute(n)||n.split("/").includes(".."))throw new Error(`${r} must be a safe relative path.`);return n}a(fe,"canonicalRelative");function O(e,r){let n=l.relative(e,r);return n===""||!n.startsWith("..")&&!l.isAbsolute(n)}a(O,"isInside");function wt(e){let r=e.split(l.sep).map(n=>n.toLowerCase());return r.some(n=>to.has(n))||r.some(n=>oo.has(n)||n.startsWith(".env."))}a(wt,"isSensitiveRelative");async function Qo(e,r){await ne(r,{recursive:!0,mode:448});let n=[...(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 Fe(l.join(r,"SKILL.md"),await je(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of n){let i=fe(o.relativePath,`Skill ${e.name} support file`),s=l.join(r,t,...i.split("/"));await ne(l.dirname(s),{recursive:!0,mode:448}),await Fe(s,await je(o.path),{mode:384})}}a(Qo,"copySkillSnapshot");async function ei(e,r){let n=new Map;for(let[t,o]of Object.entries(e.admissions)){let i=await e.registry.loadFull(t),s=new Map((i.scripts??[]).map(c=>[`scripts/${fe(c.relativePath,`Skill ${t} script`)}`,c])),d=l.join(r,t.replace(/[^A-Za-z0-9._-]/g,"_"));await Qo(i,d);for(let c of o){let u=fe(c,`toolPolicy.skillScripts.${t}`);if(!s.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);n.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:l.join(d,...u.split("/"))})}}return n}a(ei,"snapshotAdmissions");function ni(e){return e.mode==="deny"?[]:e.origins.map(r=>{let n=new URL(r);return{host:n.hostname.toLowerCase(),port:n.port?Number(n.port):n.protocol==="https:"?443:80}})}a(ni,"networkEndpoints");function Z(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],r={NO_COLOR:"1"};for(let n of e)process.env[n]!==void 0&&(r[n]=process.env[n]);for(let[n,t]of Object.entries(process.env))n.startsWith("LC_")&&t!==void 0&&(r[n]=t);return Yn(r)}a(Z,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let r=new Map;for(let[n,t]of Object.entries(e))t!==void 0&&r.set(n.toLowerCase(),[n,t]);return Object.fromEntries(r.values())}a(Yn,"normalizedSandboxEnvironment");function ri(e,r){return Yn({...e,...r})}a(ri,"mergeSandboxEnvironment");function ti(e){let r=l.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(r))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(r===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(r===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?l.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(r===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(r)&&process.platform==="win32")return{command:process.env.COMSPEC??l.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${r||"<none>"}.`)}a(ti,"interpreterFor");var Ur=250,oi=1500,ii=1e3,Fr=12e3;async function yn(e,r,n=ze,t=He,o=!1,i){let s=[],d=[],c=i!==void 0||e.pid===void 0?void 0:Sn(e.pid),u=0,f,p=a(()=>{},"reportStopRequested"),g,w,m=new Promise(E=>{p=E}),S=a(E=>{if(f!==void 0)return;f=E,p();let b=!1,y,v;if(g=new Promise((k,N)=>{y=k,v=N}),g.catch(()=>{}),i!==void 0){i.terminate(e).then(y,k=>{v(k instanceof Error?k:new Error(String(k)))});return}let R=a(async k=>{let N=o?new Error("Native Windows sandbox host termination was not confirmed."):new Error("Sandbox broker process-tree termination was not confirmed; stop the retained process tree before retrying.");return k===void 0?N:new AggregateError([N,k],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),A=a(k=>{b||(b=!0,w!==void 0&&clearTimeout(w),k===void 0?y():v(k))},"finish");w=setTimeout(()=>{try{e.kill("SIGKILL"),R().then(A)}catch(k){R(k).then(A)}},oi),De(e,{expectedProcessStartIdentity:c,forceMs:Ur,taskkillMs:Ur}).then(async k=>A(k.status==="unknown"?await R():void 0),async k=>A(await R(k)))},"requestStop"),h=a((E,b)=>{u+=b.byteLength,u>t?S(new Error(`Sandboxed command output exceeded ${t} bytes.`)):E.push(b)},"append");e.stdout?.on("data",E=>{h(s,E)}),e.stderr?.on("data",E=>{h(d,E)});let W=setTimeout(()=>{S(new Error(`Sandboxed command exceeded its ${n} ms timeout.`))},n),F=a(()=>{let E=r?.reason;S(E instanceof Error?E:new Error("Sandboxed command was cancelled."))},"abort");r?.addEventListener("abort",F,{once:!0}),r?.aborted&&F();try{let E=new Promise((y,v)=>{e.once("error",v),e.stdin?.once("error",v),e.once("close",R=>y(R??1))}),b=await Promise.race([E,m.then(()=>1)]);if(f!==void 0){let y=f;try{await g}catch(v){let R=Buffer.concat(d).toString("utf8").trim();throw new AggregateError([y,v,...R===""?[]:[new Error(`Native sandbox stderr: ${R.slice(0,4096)}`)]],"Sandboxed command failed and native termination was not confirmed.")}throw y}return{exitCode:b,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(d).toString("utf8")}}finally{clearTimeout(W),w!==void 0&&clearTimeout(w),r?.removeEventListener("abort",F)}}a(yn,"collectProcess");function Me(e){return e.reason instanceof Error?e.reason:new DOMException("Operation aborted","AbortError")}a(Me,"sandboxAbortError");function si(e,r,n,t,o,i){let s=new WeakMap,d=new WeakMap,c=new WeakMap,u,f,p=!1,g,w=Buffer.concat([Buffer.from(e),Nn("close-stdin")]),m=a((b,y,v)=>{let R=Math.min(v,Date.now()+Bn),A=b.stdin;if(A===null)return Promise.reject(new Error("Native sandbox bootstrap pipe was not created."));if(y?.aborted)return Promise.reject(Me(y));if(Date.now()>=R)return Promise.reject(new Error("Native sandbox bootstrap delivery timed out."));let k=Buffer.alloc(0),N=b.stderr,q=a($=>{k=Buffer.concat([k,$]).subarray(-4096)},"onStderr");return N?.on("data",q),c.set(b,"bootstrap-pending"),new Promise(($,Q)=>{let I=!1,D,P=setTimeout(()=>G(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(1,R-Date.now()));P.unref();let G=a(_=>{if(!I)if(I=!0,clearTimeout(P),D!==void 0&&clearTimeout(D),y?.removeEventListener("abort",re),N?.off("data",q),_===void 0)$();else{let te=k.toString("utf8").trim();Q(te===""?_:new Error(`${_.message} Native sandbox stderr: ${te}`,{cause:_}))}},"finish"),ee=a(_=>{I||D!==void 0||(D=setTimeout(()=>G(_),100),D.unref())},"failAfterStderrDrain"),X=a(_=>{ee(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))},"onError"),L=a(()=>{A.off("error",X),I||ee(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose"),re=a(()=>{y!==void 0&&G(Me(y))},"onAbort");if(A.on("error",X),A.once("close",L),y?.addEventListener("abort",re,{once:!0}),y?.aborted){re();return}A.write(w,_=>{_==null?(I||c.set(b,"control-open"),G()):ee(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))})})},"closeInput"),S=a(async()=>{let b=await je(t,"utf8"),y=JSON.parse(b),v=typeof y=="object"&&y!==null?Reflect.get(y,"denyReadCleanupDeferred"):void 0,R=typeof y=="object"&&y!==null?Reflect.get(y,"denyReadCleanupDiagnostic"):void 0,A=typeof y=="object"&&y!==null?Reflect.get(y,"brokerRetirementRecommended"):void 0;if(typeof y!="object"||y===null||Reflect.get(y,"protocol")!==j||Reflect.get(y,"nonce")!==o.toLowerCase()||Reflect.get(y,"jobDrained")!==!0||!Number.isSafeInteger(Reflect.get(y,"targetExitCode"))||typeof Reflect.get(y,"terminationRequested")!="boolean"||typeof A!="boolean"||typeof v!="boolean"||v&&(typeof R!="string"||R.length===0||R.length>2048))throw new Error("Native sandbox terminal record was invalid.");A&&(p=!0),v&&T({source:"sandbox:windows-v2",level:"warn",message:"Windows denyRead ACL cleanup was deferred for automatic recovery.",detail:R})},"verifyTerminalRecord"),h=a(async b=>{let y=await je(b,"utf8"),v=JSON.parse(y);if(typeof v!="object"||v===null||Reflect.get(v,"protocol")!==j||Reflect.get(v,"nonce")!==o.toLowerCase()||!Number.isSafeInteger(Reflect.get(v,"targetPid"))||Number(Reflect.get(v,"targetPid"))<=0||Reflect.get(v,"jobContained")!==!0)throw new Error("Native sandbox target-start record was invalid.")},"verifyLaunchRecord"),W=a(()=>h(n),"verifyStartedRecord");return{validateStart:i,closeInput:m,attestStart:a((b,y,v)=>{let R=d.get(b);if(R!==void 0)return R;let A=Math.min(v,Date.now()+Bn),k=A<v,N=new Promise((q,$)=>{let Q=!1,I=b.exitCode!==null||b.signalCode!==null,D=b.exitCode,P=b.signalCode,G,ee=Buffer.alloc(0),X=b.stderr,L=a((M,x)=>{Q||(Q=!0,G!==void 0&&clearTimeout(G),b.off("close",_),y?.removeEventListener("abort",te),X?.off("data",re),x!==void 0?(f=Y(x),$(x)):M!==void 0&&(M.state==="pre_start_unavailable"&&(u=M.diagnostic,!y?.aborted&&Date.now()<v&&(p=!0)),q(M)))},"finish"),re=a(M=>{ee=Buffer.concat([ee,M]).subarray(-4096)},"onStderr"),_=a((M,x)=>{I=!0,D=M,P=x,pe()},"onClose"),te=a(()=>{y!==void 0&&L(void 0,Me(y))},"onAbort"),pe=a(async()=>{if(!Q){try{await W(),c.set(b,"started"),L({state:"started"});return}catch(M){if(!V(M,"ENOENT")){L(void 0,M);return}}if(I){try{await h(r)}catch(x){if(!V(x,"ENOENT")){L(void 0,x);return}c.set(b,"pre-start-unavailable");let ge=ee.toString("utf8").trim()||`Native sandbox exited before target-start attestation (code ${String(D)}, signal ${String(P)}).`;L({state:"pre_start_unavailable",diagnostic:ge});return}let M=ee.toString("utf8").trim()||"Native sandbox authorized target Resume but exited before target-start attestation; execution is started-or-unknown and will not be replayed.";L(void 0,new Error(M));return}if(Date.now()>=A){k&&(p=!0),L(void 0,new Error("Native sandbox target-start attestation timed out."));return}G=setTimeout(()=>{pe()},20),G.unref()}},"poll");X?.on("data",re),b.once("close",_),y?.addEventListener("abort",te,{once:!0}),y?.aborted?te():pe()});return d.set(b,N),N.catch(()=>{}),N},"attestStart"),terminate:a(b=>{let y=s.get(b);if(y!==void 0)return y;let v=new Promise((R,A)=>{let k=c.get(b),N=k===void 0||k==="pre-start-unavailable",q=k!=="started",$=b.stdin;if($===null){A(new Error("Native sandbox control pipe was not created."));return}let Q=a(async(x,ge,ve)=>{if(!N){if(q)try{await h(r)}catch(Qe){if(V(Qe,"ENOENT")){u??=f??"Native sandbox target Resume never occurred.",c.set(b,"pre-start-unavailable");return}throw Qe}try{await S()}catch(Qe){throw new Error(`Native sandbox closed without a Job-drain attestation (code ${String(x)}, signal ${String(ge)}).`,{cause:new AggregateError([Qe,...ve===void 0?[]:[ve]],"Native sandbox terminal record verification failed.")})}}},"verifyClosedBoundary");if(b.exitCode!==null||b.signalCode!==null){Q(b.exitCode,b.signalCode).then(()=>{c.set(b,"terminal"),R()},A);return}let I=!1,D=!1,P,G=q?ii:Fr,ee=Date.now(),X,L=a(x=>{I||(I=!0,X!==void 0&&clearTimeout(X),b.off("close",re),b.off("error",_),$.off("error",te),x===void 0?R():A(x))},"finish"),re=a((x,ge)=>{D||Q(x,ge,P).then(()=>{c.set(b,"terminal"),L()},ve=>L(ve instanceof Error?ve:new Error(String(ve))))},"onClose"),_=a(x=>{P??=x},"onChildError"),te=a(x=>{P??=x},"onStdinError"),pe=a(()=>{I||D||(D=!0,De(b,{forceMs:500,taskkillMs:500}).then(x=>{if(x.status==="unknown"){L(new AggregateError([new Error("Emergency process-tree termination was not confirmed."),...P===void 0?[]:[P]],"Native sandbox termination was not confirmed by its runner."));return}Q(b.exitCode,b.signalCode,P).then(()=>{c.set(b,"terminal"),L()},ge=>L(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${G} ms.`),ge],"Native sandbox termination was not confirmed by its runner.")))},x=>L(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${G} ms.`),...P===void 0?[]:[P],x],"Native sandbox termination and emergency cleanup both failed."))))},"startEmergencyCleanup");X=setTimeout(a(()=>{if(!q){pe();return}h(r).then(()=>{if(I||D)return;G=Fr;let x=Math.max(0,G-(Date.now()-ee));X=setTimeout(pe,x),X.unref()},x=>{V(x,"ENOENT")||(P??=x instanceof Error?x:new Error(String(x))),pe()})},"onTerminationBudgetExpired"),G),X.unref(),b.once("close",re),b.once("error",_),$.on("error",te),$.end(c.get(b)===void 0?void 0:Nn("terminate"),x=>{x!=null&&(P??=x)})});return s.set(b,v),g=v,v.catch(()=>{}),v},"terminate"),getPreStartUnavailableDiagnostic:a(()=>u,"getPreStartUnavailableDiagnostic"),shouldRetireBrokerAfterStartFailure:a(()=>p,"shouldRetireBrokerAfterStartFailure"),async waitForTerminalObservation(){let b=g;if(b===void 0){await S();return}await b}}}a(si,"createWindowsV2ProcessControl");function ai(e,r,n,t){let o=e.stdin;return o===null?Promise.reject(new Error("Native sandbox bootstrap pipe was not created.")):n?.aborted?Promise.reject(Me(n)):Date.now()>=t?Promise.reject(new Error("Native sandbox bootstrap delivery timed out.")):new Promise((i,s)=>{let d=!1,c=setTimeout(()=>u(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(0,t-Date.now()));c.unref();let u=a(w=>{d||(d=!0,clearTimeout(c),n?.removeEventListener("abort",p),w===void 0?i():s(w))},"finish"),f=a(()=>u(new Error("Native sandbox bootstrap delivery failed.")),"onError"),p=a(()=>{n!==void 0&&u(Me(n))},"onAbort"),g=a(()=>{o.off("error",f),d||u(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose");o.on("error",f),o.once("close",g),o.once("finish",()=>u()),n?.addEventListener("abort",p,{once:!0}),r===void 0?o.end():o.end(r)})}a(ai,"closeNativeSandboxInput");async function di(e,r){let n=l.join(r,`kodax-asrt-gate-${process.pid}-${B()}.json`);return await Fe(n,JSON.stringify(e),{mode:384}),{...or({args:["-e",go,n],env:Z(),isElectron:process.versions.electron!==void 0}),gateFile:n}}a(di,"prepareWindowsGatedLaunch");function ci(e,r){let n=e.stdin;return n===null?Promise.reject(new Error("Sandbox gate stdin is unavailable.")):new Promise((t,o)=>{let i=!1,s=a(()=>{n.removeListener("error",c)},"cleanup"),d=a(u=>{i||(i=!0,s(),u?o(u):t())},"settle"),c=a(u=>d(u),"onError");n.once("error",c),r?n.end(`go
425
425
  `,d):n.write(`go
426
- `,d)})}a(ci,"writeSandboxGate");function li(e){let r=e.stdin;return r===null||r.destroyed||r.writableEnded?Promise.resolve():new Promise((n,t)=>{let o=!1,i=a(()=>{r.removeListener("error",d)},"cleanup"),s=a(c=>{o||(o=!0,i(),c?t(c):n())},"settle"),d=a(c=>s(c),"onError");r.once("error",d),r.end(s)})}a(li,"closeSandboxGate");async function pt(e,r,n=ze,t=He){Yt();let o=lt({...e,bootstrapCommand:e.bootstrapCommand??yn()}),i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",rt,et],s=xe({args:i,env:Z(),isElectron:process.versions.electron!==void 0}),d=Xe(process.execPath,s.args,{cwd:e.cwd,env:s.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0});ke(d);let c=bn(d,r,n,t),u=Ko(d).then(g=>({output:g,failure:void 0}),g=>({output:new Uint8Array,failure:Y(g)}));try{await ai(d,o.payload,r,Date.now()+n)}catch(g){throw d.kill("SIGTERM"),await Promise.allSettled([c,u]),g}let[f,p]=await Promise.all([c,u]);return{...f,...p.failure===void 0?{}:{controlFailure:p.failure},controlInvocationId:o.invocationId,controlOutput:p.output,expectedBackend:o.request.observationBackend??"unsupported"}}a(pt,"runBrokerResult");async function ui(e,r){let n;if(process.platform==="win32"){let t=Date.now()+ze,o=await nr({shellPolicy:e.config,executable:e.command,args:e.args,cwd:e.cwd,env:e.env,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork===!0,signal:r,deadlineAt:t});if(o===void 0)throw new Error("Windows native sandbox invocation was not prepared.");if(o.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let i=o.processControl,s=Xe(o.executable,[...o.args],{cwd:e.cwd,env:o.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0});ke(s);let d;try{let c=bn(s,r,Math.max(1,t-Date.now()),He,!0,i);c.catch(()=>{});try{await i.closeInput(s,r,t)}catch(f){let p=f;try{await i.terminate(s)}catch(g){p=new AggregateError([f,g],"Native sandbox bootstrap and termination both failed.")}throw await c.catch(()=>{}),p}n=await c}catch(c){throw d=c,c}finally{try{await o.cleanup({execution:"started_or_unknown"})}catch(c){throw d!==void 0?new AggregateError([d,c],"Sandboxed Skill execution and cleanup both failed."):c}}}else n=await pt(e,r);if(n.exitCode!==0){let t=n.stderr.trim()||n.stdout.trim();throw new Error(`Sandboxed Skill script failed (${n.exitCode}): ${t}`)}return n.stdout}a(ui,"runBroker");async function fi(e,r){let n=await Ue(e),t=l.resolve(e,fe(r,"Skill script input")),o=await Ue(t);if(!O(n,o)||wt(l.relative(n,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await cn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}a(fi,"workspaceSource");async function wi(e,r){let n=await Ue(e),t=l.resolve(e,fe(r,"Skill script output target"));if(!O(l.resolve(e),t)||wt(l.relative(l.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await ne(l.dirname(t),{recursive:!0}),!O(n,await Ue(l.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await cn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}a(wi,"workspaceTarget");async function pi(e,r,n,t){if(n.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of n.inputs){let i=await fi(e,o.path),s=fe(o.as??l.basename(i),"Skill script staged input"),d=l.resolve(r,"inputs",...s.split("/"));if(!O(l.join(r,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await ne(l.dirname(d),{recursive:!0,mode:448}),await zr(i,d)}}a(pi,"stageInputFiles");async function gi(e,r,n,t,o){if(n.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let i=[];for(let s of n.outputs){let d=fe(s.path,"Skill script staged output"),c=l.resolve(r,"outputs",...d.split("/")),u=await Ue(c);if(!O(l.join(r,"outputs"),u)||(await Xt(c)).isSymbolicLink()||!(await cn(c)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let f=await wi(e,s.target);if(o!==void 0&&gt(e,!0)+(await cn(c)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await zr(c,f,dn.COPYFILE_EXCL),i.push(l.relative(e,f))}return i}a(gi,"promoteOutputs");function gt(e,r=!1){let n=0;for(let t of Jr(e,{withFileTypes:!0})){if(r&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=l.join(e,t.name);t.isDirectory()?n+=gt(o):t.isFile()&&(n+=_e(o).size)}return n}a(gt,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let r=Jn();return{...e,windows:{...e.windows,srtWin:{path:r.path}},filesystem:{...e.filesystem,allowRead:e.filesystem.allowRead,denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],r.directory])]}}}a(Zn,"withPreparedWindowsRunner");function mi(e,r,n,t){let i=[process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()],s=a(d=>l.isAbsolute(d)?process.platform==="win32"?[d,l.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:n.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:i,allowRead:[e,r,...new Set([...s(process.execPath),...s(t)])],allowWrite:[e],denyWrite:i}})}a(mi,"sandboxConfig");function yi(){let e=[U.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(r=>typeof r=="string"&&l.isAbsolute(r)).map(r=>l.resolve(r)))]}a(yi,"canonicalTempDirectories");function bi(e){return[l.join(e,".kodax","runtime"),l.join(e,".git","config"),l.join(e,".git","hooks")].filter(n=>{try{return _e(n),!0}catch{return!1}})}a(bi,"existingWorkspaceDenyWrites");function Si(e){if(e===void 0)return[];if(_e(e,{throwIfNoEntry:!1})===void 0)throw new Error(`Trusted project Exec Policy snapshot disappeared before sandbox admission: ${e}`);return[e]}a(Si,"trustedProjectExecPolicyDenyWrite");function Ie(e){let r=[...new Set(e.map(t=>l.resolve(t)))].filter(t=>_e(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),n=[];for(let t of r)n.some(o=>O(o,t))||n.push(t);return n}a(Ie,"existingMinimalWindowsAclGuardRoots");function hi(){let e=l.resolve(process.env.USERPROFILE??U.homedir()),r=l.resolve(me()),n=io.map(t=>l.join(e,t)).filter(t=>!qe(t,r));return Ie([...n,...so.map(t=>l.join(r,t)),pn()])}a(hi,"windowsLegacyPersistentAclGuardRoots");function vi(e,r,n){if(n===void 0)throw new Error("Windows sandbox group SID is unavailable for persistent denyRead.");let t=Ie(e);if(t.length===0)return;let o=ie({sandboxReadSid:n,untrustedWriteRoots:[]}).path,i=we(o,["__persistent-deny-read","remove",r,n],{input:JSON.stringify(t),encoding:"utf8",timeout:15*6e4,windowsHide:!0});if(i.error||i.status!==0){let s=(i.error?.message||i.stderr||i.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${s}`)}try{let s=JSON.parse(i.stdout.trim());if(!Array.isArray(s)||s.length!==0)throw new Error("legacy ACL removal returned a non-empty result")}catch(s){throw new Error(`Windows sandbox ACL guard returned invalid output: ${Y(s)}`)}}a(vi,"removeWindowsLegacyAclGuards");function mt(){return l.join(l.resolve(process.env.ProgramData??l.join(U.homedir(),"AppData","Local")),"KodaX","sandbox-runtime","read-policy-v2.json")}a(mt,"windowsLegacyAclReconciliationMarkerFile");function xi(e){let r=mt(),n;try{n=ae(r)}catch(i){if(V(i,"ENOENT"))return!1;throw i}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1||n.size>Hn)return!1;let t;try{t=JSON.parse(Oe(r,"utf8"))}catch(i){if(i instanceof SyntaxError)return!1;throw i}if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=t;return Object.keys(o).sort().join(",")==="sandboxGroupSid,setupVersion,version"&&o.version===2&&o.setupVersion===zn&&o.sandboxGroupSid===e}a(xi,"windowsLegacyAclMigrationIsCurrent");function Vr(e,r){let n=hi();vi(n,e,r),Hr(mt(),JSON.stringify({version:2,setupVersion:zn,sandboxGroupSid:r}),{encoding:"utf8",mode:384})}a(Vr,"migrateWindowsLegacyAclGuardsForSetup");function yt(e){return Ee([e],e,de(e))}a(yt,"windowsSandboxProfileReadRoots");function Kr(){let e=l.resolve(process.env.USERPROFILE??U.homedir());return Ie(Ee([...yt(e),...St(Ze(process.env))],e,de(e)))}a(Kr,"windowsSandboxSetupReadRoots");function ki(e,r){let n=[];for(let t of e)try{n.push(K.native(t))}catch{continue}return process.platform==="win32"?Ie(n):[...new Set(n)]}a(ki,"workspaceShellWriteRoots");function Ei(e,r){let n=process.platform==="win32"?r:l.resolve(e);return l.join(U.tmpdir(),"kodax-sandbox",Je("sha256").update(n).digest("hex").slice(0,16))}a(Ei,"workspaceShellTempRoot");function Ri(e,r){return l.join(Ei(e,r),`${process.pid}-${B()}`)}a(Ri,"createWorkspaceShellTempDirectory");async function an(e){await H(e,{recursive:!0,force:!0,maxRetries:process.platform==="win32"?2:0,retryDelay:50})}a(an,"removeWorkspaceShellTempDirectory");function Ai(e,r){return e.filter(n=>r.some(t=>qe(t,n)))}a(Ai,"windowsSandboxPreinstalledReadRoots");function Wi(e){return process.platform==="win32"?e===void 0?[]:[e]:yi()}a(Wi,"workspaceShellTempWriteRoots");function Ci(e,r,n){try{let t=K.native(r),o=l.resolve(r),i=l.resolve(e);if(!O(o,i)||i===o)return;for(;i!==o;)try{let s=K.native(i);if(s===t||!O(t,s))return;let d=l.relative(t,s).split(l.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||n&&nt.some(c=>c===d)?void 0:s}catch(s){if(!n||s.code!=="ENOENT")return;try{ae(i);return}catch(c){if(c.code!=="ENOENT")return}let d=l.dirname(i);if(d===i)return;i=d}return}catch{return}}a(Ci,"windowsAgentHomeAccessRoot");function bt(e,r){if(!r)return{read:[],write:[]};let n=a((t,o)=>[...new Set(t.flatMap(i=>{let s=Ci(i,e,o);return s?[s]:[]}))],"roots");return{read:n(r.read,!1),write:n(r.write,!0),...r.ephemeral===!0?{ephemeral:!0}:{}}}a(bt,"windowsAgentHomeAccessRoots");function Sn(e){return e??(process.platform==="win32"?process.env.COMSPEC??l.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}a(Sn,"workspaceShellExecutable");function Pi(e,r){return Object.entries(e).find(([n,t])=>n.toUpperCase()===r&&t!==void 0)?.[1]}a(Pi,"shellEnvironmentValue");function Ni(e){let r=process.env.LOCALAPPDATA,n=[r===void 0?void 0:l.join(r,"Programs"),r,process.env.APPDATA,l.join(e,"AppData","Local","Programs"),l.join(e,"AppData","Local"),l.join(e,"AppData","Roaming"),e];return[...new Set(n.flatMap(t=>t===void 0?[]:[l.resolve(t)]))].filter(t=>O(e,t)).sort((t,o)=>o.length-t.length)}a(Ni,"workspaceShellUserDataBoundaries");function _i(e,r,n){if(process.platform!=="win32"||e.toLowerCase()===r.toLowerCase())return[];try{if(!ae(e).isSymbolicLink())return[]}catch{return[]}let t=n.find(d=>d.toLowerCase()!==r.toLowerCase()&&O(d,r));if(t===void 0)return[];let[o]=l.relative(t,r).split(l.sep);if(!o)return[];let i=l.join(t,o),s=[];for(let d=l.dirname(r);d.toLowerCase()!==i.toLowerCase()&&O(i,d);d=l.dirname(d))s.push(d);return s}a(_i,"workspaceShellLinkedTargetAncestors");function Ze(e,r){let n=l.resolve(process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()),t=Ni(n),o=new Map,i=a(u=>{let f=l.resolve(u);if(!(f===l.parse(f).root||f.toLowerCase()===n.toLowerCase()))return f},"safe"),s=a((u,f)=>{let p=i(u);if(p===void 0)return;let g;try{g=K(p)}catch{return}if(i(g)===void 0)return;let w=f?[p,g].filter(m=>O(n,m)):[p,g];for(let m of w)o.set(process.platform==="win32"?m.toLowerCase():m,m);if(f&&w.includes(g))for(let m of _i(p,g,t)){let S=i(m);S!==void 0&&O(n,S)&&o.set(S.toLowerCase(),S)}},"remember");for(let u of(Pi(e,"PATH")??"").split(l.delimiter)){let f=u.trim().replace(/^"(.*)"$/,"$1");f&&l.isAbsolute(f)&&s(f,!0)}let d=Sn(r);l.isAbsolute(d)&&s(l.dirname(d),!0);let c=yn();if(l.isAbsolute(c)){let u=i(c);u!==void 0&&o.set(process.platform==="win32"?u.toLowerCase():u,u),s(l.dirname(c),!1)}return[...o.values()].sort((u,f)=>u.toLowerCase().localeCompare(f.toLowerCase()))}a(Ze,"workspaceShellRuntimeReadScopes");function St(e){let r=new Map;for(let n of e)try{let t=K.native(n);r.set(t.toLowerCase(),t)}catch{}return[...r.values()].sort((n,t)=>n.toLowerCase().localeCompare(t.toLowerCase()))}a(St,"windowsNativeRuntimeReadScopes");function qe(e,r){return l.resolve(e).toLowerCase()===l.resolve(r).toLowerCase()}a(qe,"sameWindowsPath");function un(e,r){let n=Xr(e,"r");try{let t=Buffer.allocUnsafe(r+1),o=0;for(;o<t.length;){let i=Vt(n,t,o,t.length-o,o);if(i===0)break;o+=i}return o>r?void 0:t.toString("utf8",0,o)}finally{Dn(n)}}a(un,"readBoundedUtf8File");function Ti(e,r){let n=/^(.*)[/\\]worktrees[/\\][^/\\]+$/.exec(e);if(n===null)return;let t=un(l.join(e,"commondir"),4096),o=un(l.join(e,"gitdir"),4096);if(t===void 0||o===void 0)return;let i=K(n[1]),s=K(l.resolve(e,t.trim())),d=K(l.resolve(e,o.trim()));return qe(s,i)&&qe(d,r)?i:void 0}a(Ti,"linkedWorktreeMainGitDirectory");function Oi(e){let r=un(l.join(e,"config"),65536);if(r===void 0)return;let n=!1,t;for(let o of r.split(/\r?\n/)){let i=o.trim();if(i.startsWith("[")){n=/^\[\s*core\s*\]$/i.test(i);continue}if(!n)continue;let s=/^worktree\s*=\s*(.+?)\s*$/i.exec(i);if(s===null)continue;if(t!==void 0)return;let d=s[1];if(d.includes("\0")||d.startsWith('"')||d.endsWith('"'))return;t=d}return t===void 0?void 0:K(l.resolve(e,t))}a(Oi,"submoduleGitWorktree");function Ii(e,r){if(!/[/\\]\.git[/\\]modules[/\\]/i.test(e))return!1;let n=Oi(e);return n!==void 0&&qe(n,r)}a(Ii,"isStructurallyBoundSubmoduleGitDirectory");function Di(e){if(process.platform!=="win32")return{};let r=l.join(e,".git");try{if(!ae(r).isFile())return{};let n=un(r,4096);if(n===void 0)return{};let t=/^gitdir:\s*(.+?)\s*$/m.exec(n);if(t===null)return{};let o=K(l.resolve(e,t[1])),i=Ti(o,r),s=Ii(o,e);if(i===void 0&&!s)return{};let d=i??o;return _e(d).isDirectory()?_e(l.join(d,"HEAD")).isFile()?{mainGitDirectory:d,gitfile:r}:{}:{}}catch(n){let t=n.code;if(t==="ENOENT"||t==="ENOTDIR")return{};throw n}}a(Di,"windowsLinkedWorktreeGitAccess");function Li(e,r,n,t,o=Ze(process.env,Sn()),i){let s=l.resolve(me()),d=l.join(s,"sandbox-runtime"),c=l.resolve(process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()),u=[],f=process.platform==="win32"?bt(s,n):{read:[],write:[]},p=ki([e,...Wi(r),...f.write,...t?.write??[]],s),g=[d,...nt.map(h=>l.join(s,h))];if(process.platform==="win32")for(let h of g)p.some(W=>O(W,h))&&qr(h,{recursive:!0});let w=Di(e),m=[...process.platform==="win32"?[...yt(c),s]:[],...o,...f.read,...t?.read??[],...w.mainGitDirectory!==void 0?[w.mainGitDirectory]:[]],S=process.platform==="win32"?Ie(Ee(m,c,de(c))):[...new Set(m)];return process.platform!=="win32"&&An(S),{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:S,allowWrite:process.platform==="win32"?Ee(p,c,de(c)):p,denyWrite:[...g,...Rn(),...Si(i),...bi(e),...w.gitfile!==void 0?[w.gitfile]:[]]}}}a(Li,"workspaceShellSandboxConfig");function Bi(e){let r=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(n=>r.some(t=>O(t,n)))}}}a(Bi,"boundedWindowsWorkspaceDenies");function Qn(e,r,n,t,o,i){let s=Li(e,r,n,t,o,i);return process.platform==="win32"?Bi(s):s}a(Qn,"workspaceShellCommandSandboxConfig");function $i(e){return process.platform!=="win32"?!0:(e?.write??[]).every(r=>{try{return K.native(r),!0}catch{return!1}})}a($i,"workspaceShellFilesystemAccessIsRepresentable");function J(e,r){return[...new Set((e??[]).map(n=>l.resolve(r,n)))]}a(J,"normalizedSandboxPaths");function Gi(e){return e.mode!=="allowlist"?[]:e.origins.map(r=>{let n=new URL(r);if(n.protocol!=="http:"&&n.protocol!=="https:"||n.username||n.password||n.pathname!=="/"||n.search||n.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${r}`);return{host:n.hostname.toLowerCase(),port:n.port?Number(n.port):n.protocol==="https:"?443:80}})}a(Gi,"sdkSandboxEndpoints");async function Mi(e,r,n,t,o){let i=Date.now()+(e.timeoutMs??ze),s=e.command===process.execPath?xe({args:e.args??[],env:n,isElectron:process.versions.electron!==void 0}):{args:[...e.args??[]],env:n},d={network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:J(e.filesystem.allowRead,r),allowWrite:J(e.filesystem.allowWrite,r),denyRead:J(e.filesystem.denyRead,r),denyWrite:J(e.filesystem.denyWrite,r)}},c=await nr({shellPolicy:d,executable:e.command,args:s.args,cwd:r,env:s.env,endpoints:o,allowAllNetwork:t.mode==="allow",signal:e.signal,deadlineAt:i});if(c===void 0)throw new Error("Windows native sandbox invocation was not prepared.");let u="not_started",f,p,g;try{if(c.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let w=c.processControl;await w.validateStart?.(),g=Xe(c.executable,[...c.args],{cwd:r,env:c.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0,windowsVerbatimArguments:c.windowsVerbatimArguments===!0}),u="started_or_unknown",ke(g);let m=bn(g,e.signal,Math.max(1,i-Date.now()),e.maxOutputBytes??He,!0,w);m.catch(()=>{});try{await w.closeInput(g,e.signal,i)}catch(W){let F=W;try{await w.terminate(g)}catch(E){F=new AggregateError([W,E],"Native sandbox bootstrap and termination both failed.")}throw await m.catch(()=>{}),F}let S=await w.attestStart?.(g,e.signal,i);if(S?.state==="pre_start_unavailable")throw u="not_started",new Error(S.diagnostic);let h=await m;if(h.exitCode!==0){let W=h.stderr.split(/\r?\n/u).filter(F=>F.startsWith("kodax-windows-sandbox protocol ")).slice(-4).join(`
427
- `);p=new Error(W.length>0?W:`Windows native sandbox host exited with code ${h.exitCode}.`)}return h}catch(w){if(f=w,T({source:"sandbox:windows-v2",level:"warn",message:"Windows native sandbox command failed.",detail:{phase:u==="not_started"?"target-start":"target-execution",protocol:j,error:w}}),g!==void 0&&c.processControl!==void 0)try{await c.processControl.terminate(g)}catch(m){f=new AggregateError([w,m],"Windows native sandbox execution and termination both failed.")}throw f}finally{try{await c.cleanup({execution:u})}catch(w){throw f!==void 0?new AggregateError([f,w],"Windows native sandbox execution and cleanup both failed."):p!==void 0?new AggregateError([p,w],"Windows native sandbox host and cleanup both failed."):w}}}a(Mi,"runWindowsV2Sandboxed");async function ji(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 r=l.resolve(e.cwd),n=process.platform==="win32"?[]:Rn(),t={allowRead:J(e.filesystem.allowRead,r),allowWrite:J(e.filesystem.allowWrite,r),denyRead:J(e.filesystem.denyRead,r),denyWrite:J(e.filesystem.denyWrite,r)};if(process.platform==="win32"&&(t.denyRead?.length??0)>0){let w="Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.";return{status:"unavailable",sandboxed:!1,reason:"unsupported_policy",diagnostic:w,doctor:{ready:!1,platform:process.platform,version:Se,diagnostics:[w],setupRequired:!1}}}process.platform==="win32"&&kn(t),process.platform!=="win32"&&An(t.allowRead),cr(t.allowWrite);let o={...t,denyRead:[...t.denyRead??[],...n],denyWrite:[...t.denyWrite??[],...n]},i=e.network??{mode:"deny"},s=Gi(i),d=await z();if(process.platform==="win32"&&!d.ready){let w;try{let m=await Ye(t.allowWrite,!0),S=he({srtWin:m.srtWin});S.groupSid!==void 0&&await gn(S.groupSid,t.allowWrite)}catch(m){w=m}d=await z({refresh:!0}),w!==void 0&&(d={...d,ready:!1,setupRequired:!0,diagnostics:[Y(w),...d.diagnostics]})}if(!d.ready)return{status:"unavailable",sandboxed:!1,doctor:d,reason:"doctor_not_ready"};let c=ri(e.inheritEnvironment!==!1?process.env:Z(),e.env??{});if(process.platform==="win32"){let w=await Mi({...e,filesystem:o},r,c,i,s);return{status:"completed",sandboxed:!0,exitCode:w.exitCode,stdout:w.stdout,stderr:w.stderr}}let u={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:i.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:J(o.allowRead,r),allowWrite:J(o.allowWrite,r),denyRead:J(o.denyRead,r),denyWrite:J(o.denyWrite,r)}}),command:e.command,args:e.args??[],cwd:r,env:c,endpoints:s,allowAllNetwork:i.mode==="allow",observationBackend:Zr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${B()}\0
428
- `},f=await pt(u,e.signal,e.timeoutMs??ze,e.maxOutputBytes??He),p,g=f.controlFailure;if(g===void 0)try{p=ut(f.controlOutput,f.controlInvocationId,f.expectedBackend)}catch(w){g=w}if(p?.state==="not_started"){let w=[p.diagnostic,f.stderr.trim()].filter(m=>m!==void 0&&m!=="").join(" ").slice(0,4096)||"The sandbox backend exited before target-start attestation.";return{status:"unavailable",sandboxed:!1,reason:"backend_launch_failed",diagnostic:w,doctor:{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,w]}}}return p?.state!=="applied"?{status:"execution_uncertain",sandboxed:!1,reason:"attestation_failed",diagnostic:[g===void 0?void 0:Y(g),f.stderr.trim()].filter(m=>m!==void 0&&m!=="").join(" ").slice(0,4096)||"Sandbox target execution could not be attested; do not retry blindly.",doctor:d,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}:{status:"completed",sandboxed:!0,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}}a(ji,"runKodaXSandboxed");async function Ui(e={}){let r=await z({refresh:!0});if(!r.ready&&process.platform!=="win32")return r;let n=process.cwd(),t=Sn(),o=process.platform==="win32"?["/d","/s","/c","whoami"]:["-c","id -u"],i=Qn(n,void 0,void 0,void 0,Ze(process.env,t));try{let s=await ji({command:t,args:o,cwd:n,filesystem:{allowRead:i.filesystem.allowRead??[],allowWrite:[],denyRead:i.filesystem.denyRead,denyWrite:[]},network:{mode:"deny"},timeoutMs:ln,maxOutputBytes:65536});if(s.status==="completed"&&s.exitCode===0)return z({refresh:!0});let d=s.status==="completed"?r:s.doctor,c=s.status==="completed"?`Sandbox identity probe exited with code ${String(s.exitCode)}.`:s.diagnostic??(s.doctor.diagnostics.join(" ")||"Sandbox target start was not proven.");return{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,`Sandbox launch probe failed: ${c}`]}}catch(s){return{...r,ready:!1,setupRequired:!0,diagnostics:[...r.diagnostics,`Sandbox launch probe failed: ${Y(s)}`]}}}a(Ui,"doctorSandboxExecution");function er(){let e=new Error("Sandbox runner preparation timed out.");return e.name="TimeoutError",e}a(er,"sandboxRunnerPreparationTimeoutError");function Ce(e,r){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(r!==void 0&&Date.now()>=r)throw er()}a(Ce,"throwIfSandboxRunnerPreparationStopped");function Ne(e,r,n){return Ce(r,n),r===void 0&&n===void 0?e:new Promise((t,o)=>{let i=!1,s,d=a(u=>{i||(i=!0,s&&clearTimeout(s),r?.removeEventListener("abort",c),u())},"finish"),c=a(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");r?.addEventListener("abort",c,{once:!0}),n!==void 0&&(s=setTimeout(()=>{d(()=>o(er()))},Math.max(0,n-Date.now())),s.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}a(Ne,"waitForSandboxRunnerPreparation");async function Fi(){return lr()}a(Fi,"sandboxControlDirectory");function Vi(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-windows-network-broker",e];if(import.meta.url.endsWith(".ts"))return["--import",Yr(Xn.resolve("tsx")).href,_r(new URL("./sandbox-network-broker-entry.ts",import.meta.url)),e];let r=l.dirname(_r(import.meta.url)),n=l.basename(r)==="chunks"?l.dirname(r):r;return[l.join(n,"sandbox-network-broker.js"),e]}a(Vi,"windowsNetworkBrokerEntryArgs");async function Ki(e,r,n){let t=e.stdio[3];if(!t)throw new Error("Windows network broker control pipe was not created.");return new Promise((o,i)=>{let s=!1,d=Buffer.alloc(0),c,u=a(m=>{s||(s=!0,c&&clearTimeout(c),r?.removeEventListener("abort",f),t.removeListener("data",w),e.removeListener("error",p),e.removeListener("exit",g),m())},"finish"),f=a(()=>u(()=>i(r?.reason??new DOMException("Operation aborted","AbortError"))),"onAbort"),p=a(m=>u(()=>i(m)),"onError"),g=a(m=>u(()=>i(new Error(`Windows network broker exited ${String(m)} before readiness.`))),"onExit"),w=a(m=>{if(d=Buffer.concat([d,m]),d.length>1024*1024){u(()=>i(new Error("Windows network broker readiness exceeded 1 MiB.")));return}let S=d.indexOf(10);if(!(S<0))try{let h=JSON.parse(d.subarray(0,S).toString("utf8"));if(h===null||typeof h!="object"||h.version!==1)throw new Error("Windows network broker returned an incompatible response.");u(()=>o(h))}catch(h){u(()=>i(h))}},"onData");t.on("data",w),e.once("error",p),e.once("exit",g),r?.addEventListener("abort",f,{once:!0}),n!==void 0&&(c=setTimeout(()=>u(()=>i(er())),Math.max(0,n-Date.now())),c.unref())})}a(Ki,"readWindowsNetworkBrokerReady");async function qi(e,r,n){let t=a(s=>{if(s.error!==void 0||s.code!==0||s.signal!==null){let d=n().trim();throw new Error(`Windows network broker exited without a clean cleanup result (code ${String(s.code)}, signal ${String(s.signal)})`+(d===""?".":`: ${d}`),s.error===void 0?void 0:{cause:s.error})}},"assertCleanExit");if(e.exitCode!==null||e.signalCode!==null){t(await r);return}await new Promise(s=>{let d=e.stdin;if(d===null||d.destroyed){s();return}let c=a(()=>s(),"finish");d.once("error",c),d.end(c)});let o=await Promise.race([r.then(s=>({graceful:!0,outcome:s})),new Promise(s=>{setTimeout(()=>s(!1),5e3).unref()})]);if(o!==!1){t(o.outcome);return}throw(await De(e,{forceMs:500,taskkillMs:500})).status==="unknown"?new Error("Windows network broker process-tree termination was not confirmed."):(await r,new Error("Windows network broker did not exit within its graceful cleanup budget."))}a(qi,"stopWindowsNetworkBroker");function ht(e){return{...e,srtWinPath:l.resolve(e.srtWinPath),srtWinSha256:e.srtWinSha256.toLowerCase(),controllerExecutable:l.resolve(e.controllerExecutable),controllerSha256:e.controllerSha256.toLowerCase(),endpoints:[...e.endpoints].map(({host:r,port:n})=>({host:r.toLowerCase(),port:n})).sort((r,n)=>r.host.localeCompare(n.host)||r.port-n.port).filter((r,n,t)=>n===0||r.host!==t[n-1].host||r.port!==t[n-1].port)}}a(ht,"normalizedWindowsNetworkBrokerRequest");function Vn(e){if(e===null||typeof e=="string"||typeof e=="boolean")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Windows network broker policy number is invalid.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(r=>Vn(r)).join(",")}]`;if(typeof e=="object")return`{${Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>`${JSON.stringify(n)}:${Vn(t)}`).join(",")}}`;throw new Error("Windows network broker policy contains an unsupported value.")}a(Vn,"canonicalWindowsNetworkBrokerValue");function Xi(e){let r=ht(e),n=Vn({version:r.version,setupGenerationNonce:r.setupGenerationNonce,config:r.config,srtWinPath:l.resolve(r.srtWinPath).toLowerCase(),srtWinSha256:r.srtWinSha256,controllerExecutable:r.controllerExecutable.toLowerCase(),controllerSha256:r.controllerSha256,controllerProtocol:r.controllerProtocol,expectedSandboxUserSid:r.expectedSandboxUserSid.toUpperCase(),expectedSandboxGroupSid:r.expectedSandboxGroupSid.toUpperCase(),endpoints:r.endpoints,allowAllNetwork:r.allowAllNetwork});return Je("sha256").update(n).digest("hex")}a(Xi,"windowsNetworkBrokerKey");function Ji(e,r,n){let t=a(()=>{},"markStarted"),o={key:e,requestFile:l.join(n,`windows-network-${process.pid}-${B()}.json`),started:new Promise(i=>{t=i}),markStarted:a(()=>t(),"markStarted"),references:0,failed:!1,lastUsed:0,stopRequested:!1,stderrTail:Buffer.alloc(0)};return Gn.add(o),o.ready=(async()=>{try{if(await Fe(o.requestFile,JSON.stringify(r),{flag:"wx",mode:384}),o.stopRequested)throw new Error("Windows network broker start was cancelled.");let i=xe({args:Vi(o.requestFile),env:Z(),isElectron:process.versions.electron!==void 0}),s=Xe(process.execPath,i.args,{cwd:n,env:i.env,shell:!1,stdio:["pipe","ignore","pipe","pipe"],windowsHide:!0});o.child=s,ke(s),o.markStarted(),s.stderr?.on("data",c=>{o.stderrTail=Buffer.concat([o.stderrTail,c]).subarray(-16*1024)}),o.exit=new Promise(c=>{let u;s.once("error",f=>{u=f}),s.once("close",(f,p)=>c({code:f,signal:p,...u===void 0?{}:{error:u}}))}),o.references===0&&Ve(o,!1),s.on("error",c=>{T({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker process failed.",detail:c})}),s.once("close",()=>{Gn.delete(o),o.stopping===void 0&&ue.get(e)===o&&ue.delete(e)}),s.once("exit",(c,u)=>{!o.stopRequested&&(c!==0||u!==null)&&(Bn(o),T({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker exited unexpectedly.",detail:o.stderrTail.toString("utf8").trim()||`code ${String(c)}, signal ${String(u)}`}))});let d;try{d=await Ki(s,void 0,Date.now()+$n)}catch(c){let u=o.stderrTail.toString("utf8").trim();throw new Error(u===""?"Windows network broker failed before readiness.":`Windows network broker failed before readiness: ${u}`,{cause:c})}if(!d.ok)throw new Error(d.error);return d}finally{o.markStarted()}})().catch(i=>{throw Bn(o),i}),o.ready.catch(()=>{}),o}a(Ji,"createWindowsNetworkBrokerState");async function Kn(e){return e.stopping!==void 0||(e.idleTimer!==void 0&&(clearTimeout(e.idleTimer),e.idleTimer=void 0),e.stopRequested=!0,e.stopping=(async()=>{await e.started,Ve(e,!0);let n=(await Promise.allSettled([...e.child===void 0||e.exit===void 0?[]:[qi(e.child,e.exit,()=>e.stderrTail.toString("utf8"))],H(e.requestFile,{force:!0})])).flatMap(t=>t.status==="rejected"?[t.reason]:[]);if(n.length>0)throw new AggregateError(n,"Shared Windows network broker cleanup failed.")})().finally(()=>{e.child===void 0&&Gn.delete(e),Ve(e,!1),ue.get(e.key)===e&&ue.delete(e.key)})),e.stopping}a(Kn,"stopSharedWindowsNetworkBroker");async function Hi(e,r=!1){if(r&&Bn(e),e.references=Math.max(0,e.references-1),e.references===0){if(Ve(e,!1),Qr(e),e.failed){await Kn(e);return}e.idleTimer=setTimeout(()=>{e.idleTimer=void 0,!(e.references!==0||e.stopping!==void 0)&&Kn(e).catch(n=>{T({source:"sandbox:windows-v2",level:"warn",message:"Idle Windows network broker cleanup failed.",detail:n})})},ro),e.idleTimer.unref()}}a(Hi,"releaseWindowsNetworkBrokerState");async function zi(e,r,n,t){let o=ht(e),i=Xi(o);for(;;){let s=ue.get(i);if(s?.stopping!==void 0){await Ne(s.stopping,n,t);continue}if(s?.failed){if(s.references!==0)throw new Error("Windows network broker failed while prior command leases are still settling; no command was started.");await Ne(Kn(s),n,t);continue}s===void 0&&(s=Ji(i,o,r),ue.set(i,s)),Qr(s),s.idleTimer!==void 0&&(clearTimeout(s.idleTimer),s.idleTimer=void 0),s.references+=1,s.references===1&&Ve(s,!0);let d=!1,c=a(async u=>{d||(d=!0,await Hi(s,u?.retire===!0))},"release");try{let u=s.ready;if(u===void 0)throw new Error("Windows network broker did not start.");return{ready:await Ne(u,n,t),release:c}}catch(u){try{await c()}catch(f){throw new AggregateError([u,f],"Windows network broker acquisition and cleanup both failed.")}throw u}}}a(zi,"acquireWindowsNetworkBroker");async function Yi(e){let r=Ri(e.workspaceRoot,"windows-v2-command");try{await ne(r,{recursive:!0,mode:448});let n=St(Ze(e.env,e.executable)),t=Qn(e.workspaceRoot,r,e.agentHomeAccess,e.filesystemAccess,n,e.trustedProjectExecPolicyPath),o=await nr({shellPolicy:t,executable:e.executable,args:e.args,cwd:e.cwd,env:{...e.env,TEMP:r,TMP:r,TMPDIR:r},endpoints:[],allowAllNetwork:!0,signal:e.signal,deadlineAt:e.deadlineAt});if(o===void 0){await an(r);return}let i;return{...o,cleanup(s){return i??=(async()=>{let d;try{d=await o.cleanup(s)}catch(c){if(s?.execution==="started_or_unknown")throw c;try{await an(r)}catch(u){throw new AggregateError([c,u],"Windows native shell and private temp cleanup failed.")}throw c}try{await an(r)}catch(c){T({source:"sandbox:windows-v2",level:"warn",message:"Private Windows shell Temp cleanup was deferred after lifecycle proof.",detail:c})}return d})(),i}}}catch(n){try{await an(r)}catch(t){throw new AggregateError([n,t],"Windows native shell preparation and private temp cleanup both failed.")}throw n}}a(Yi,"prepareWindowsV2ShellInvocation");async function nr(e){let r=e.deadlineAt??Date.now()+ln,n=await Ne(Ye(e.shellPolicy.filesystem.allowWrite),e.signal,r);Ce(e.signal,r);let t=Lr(n);Ce(e.signal,r);let o=Zn(e.shellPolicy);kn({allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite}),En(o.filesystem.allowWrite);let i=await Ne(gn(t.sandboxGroupSid,o.filesystem.allowWrite),e.signal,r);Ce(e.signal,r);let s=await Ne(_o(),e.signal,r);if(Ce(e.signal,r),s.toLowerCase()!==Le().toLowerCase())throw new Error("Windows native shell control state resolved to an unexpected path.");let d={version:1,setupGenerationNonce:t.generationNonce,config:Wr(o),cwd:e.cwd,srtWinPath:n.path,srtWinSha256:n.sha256,controllerExecutable:i.path,controllerSha256:i.sha256,controllerProtocol:j,expectedSandboxUserSid:t.sandboxUserSid,expectedSandboxGroupSid:t.sandboxGroupSid,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork},c,u,f;try{c=await zi(d,s,e.signal,r);let p=c.ready;if(p.sandboxUserSid!==t.sandboxUserSid||p.sandboxGroupSid!==t.sandboxGroupSid)throw le("The broker observed a sandbox account identity from another v2 generation");let g=Cr({setupGenerationNonce:t.generationNonce,sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtSha256:n.sha256,shellSha256:i.sha256});u=l.join(s,`windows-shell-${process.pid}-${B()}.json`);let w=`${process.pid}-${B()}.json`;f=l.join(s,`windows-terminal-${w}`);let m=l.join(s,`windows-started-${w}`),S=l.join(s,`windows-resume-${w}`),h=B(),W=e.deadlineAt??Date.now()+ln,F=Rr(p.asrtChildEnvironment,e.env,vr(e.cwd,o.filesystem.allowWrite,o.filesystem.allowRead)),E=Ai(o.filesystem.allowRead??[],t.setupReadRoots),b=Nr({aclExclusions:de(l.resolve(process.env.USERPROFILE??U.homedir())),generation:g,filesystemCapabilityNonce:t.filesystemCapabilityNonce,sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtInvocation:{executable:p.asrtExecutable,prefixArgs:p.asrtPrefixArgs,targetArgv:[],childEnvironment:{}},targetArgv:[e.executable,...e.args],cwd:e.cwd,preinstalledReadRoots:E,allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite,controllerPipe:p.controllerPipe,terminalRecordPath:f,terminalNonce:h,operationDeadlineUnixMs:W,setupMarkerPath:se(),setupMarkerSha256:Je("sha256").update(Oe(se())).digest("hex")});await Fe(u,JSON.stringify(b),{flag:"wx",mode:384}),T({source:"sandbox:windows-v2",level:"debug",message:"Windows native sandbox request prepared.",detail:{protocol:j,setupGeneration:t.generationNonce,brokerGeneration:g,runnerSha256:n.sha256,controllerSha256:i.sha256,preinstalledReadRootCount:E.length}}),Ce(e.signal,W);let y,v=c,R=u,A=f,k=Pr(F),N=si(k,S,m,A,h,()=>{let q=Lr(n);if(JSON.stringify(q)!==JSON.stringify(t))throw le("The Windows sandbox account generation changed before target start")});return{executable:i.path,args:["__host",R],env:Z(),stdinPrefix:k,processTreeContainment:"native-job",processControl:N,cleanup(q){return y??=(async()=>{let $;if(q?.execution==="started_or_unknown")try{await N.waitForTerminalObservation()}catch(P){$=P}let I=(await Promise.allSettled([v.release({retire:$!==void 0||N.shouldRetireBrokerAfterStartFailure()}),H(R,{force:!0}),H(S,{force:!0}),H(m,{force:!0}),H(A,{force:!0})])).flatMap(P=>P.status==="rejected"?[P.reason]:[]);if($!==void 0&&I.unshift($),I.length>0)throw new AggregateError(I,"Windows native shell cleanup failed.");let D=N.getPreStartUnavailableDiagnostic();return D!==void 0?{version:1,state:"pre_start_unavailable",diagnostic:D}:{version:1,state:"applied",backend:"windows-restricted-user",policyId:"kodax-workspace-shell-v1"}})(),y}}}catch(p){let g=await Promise.allSettled([...c===void 0?[]:[c.release()],...u===void 0?[]:[H(u,{force:!0})],...f===void 0?[]:[H(f,{force:!0})]]),w=[p,...g.flatMap(m=>m.status==="rejected"?[m.reason]:[])];throw w.length===1?p:new AggregateError(w,"Windows native shell preparation and cleanup both failed.")}}a(nr,"prepareWindowsV2Invocation");async function Zi(e){let r=Ze(e.env,e.executable),n={config:Qn(e.workspaceRoot,void 0,e.agentHomeAccess,e.filesystemAccess,r,e.trustedProjectExecPolicyPath),command:e.executable,args:e.args,windowsVerbatimArguments:e.windowsVerbatimArguments,cwd:e.cwd,env:e.env,endpoints:[],allowAllNetwork:!0,bootstrapCommand:yn(),observationBackend:Zr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${B()}\0
429
- `},t=lt(n),o=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",rt,et],i=xe({args:o,env:Z(),isElectron:process.versions.electron!==void 0}),s;return{executable:process.execPath,args:i.args,env:i.env,stdinPrefix:t.payload,controlChannel:{fd:3,maxOutputBytes:wn},cleanup(d){return s??=(async()=>{let c=d?.controlOutput;if(c===void 0)return d?.execution==="started_or_unknown"?{version:1,state:"execution_uncertain",diagnostic:"Required OS sandbox execution could not be attested."}:void 0;let u=ut(c,t.invocationId,t.request.observationBackend??"unsupported");return u===void 0?{version:1,state:"execution_uncertain",diagnostic:"Required OS sandbox execution could not be attested."}:u.state==="not_started"?{version:1,state:"pre_start_unavailable",...u.diagnostic===void 0?{}:{diagnostic:u.diagnostic}}:u})(),s}}}a(Zi,"preparePortableAsrtShellInvocation");function Ds(e){let r=l.resolve(e.workspaceRoot);return{processTreeContainment:process.platform==="linux"?"root-exit-drains":void 0,async prepare(n){if(!n.toolCallId){n.reportObservation?.({version:1,state:"not_selected"});return}let t={id:n.toolCallId,name:"bash",input:{...n.toolInput}},o=await e.shouldSandbox(t),i=o?no(o,e.additionalWorkspaceRoots?.()??[]):!1;if(!i){n.reportObservation?.({version:1,state:"not_selected"});return}let s=typeof i=="object"?i.agentHomeAccess:void 0,d=process.platform==="win32"&&s!==void 0?bt(l.resolve(me()),s):s,c=typeof i=="object"?i.filesystemAccess:void 0;if(!$i(c))throw new Error("The selected filesystem access is not representable by the OS sandbox.");let u=Sn(n.executable),f=n.args??(process.platform==="win32"?["/d","/s","/c",n.command]:["-c",n.command]),p=Yn(n.env),g=e.trustedProjectExecPolicyPath??n.trustedProjectExecPolicyPath;if(process.platform==="win32")try{return await Yi({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,trustedProjectExecPolicyPath:g,executable:u,args:f,cwd:n.cwd,env:p,signal:n.signal,deadlineAt:n.deadlineAt})}catch(w){throw n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||T({source:"sandbox:windows-v2",level:"warn",message:"Windows native shell preparation failed before target start.",detail:w}),w}try{return await Zi({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,trustedProjectExecPolicyPath:g,executable:u,args:f,cwd:n.cwd,env:p,windowsVerbatimArguments:n.windowsVerbatimArguments===!0})}catch(w){throw n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||T({source:"sandbox:portable-asrt",level:"warn",message:"Portable ASRT shell preparation failed before target start.",detail:w}),w}}}}a(Ds,"createAsrtShellSandbox");async function Ls(e){if(process.platform==="win32")throw new Error("Windows isolated Skill scripts are unavailable because their required per-command denyRead policy is unsupported by the WRITE_RESTRICTED backend.");let r=await z();if(!r.ready)throw new Error(`ASRT ${Se} is not ready: ${r.diagnostics.join(" ")||"run kodax sandbox setup"}`);let n=l.join(e.snapshotRoot,B()),t=l.join(n,"skills");await ne(t,{recursive:!0,mode:448});try{let o=await ei(e,t),i=ni(e.network),s=Promise.resolve();return{async run(d,c){let u=s,f;if(s=new Promise(p=>{f=p}),await u,c.signal?.aborted)throw f?.(),c.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(d.args.length>64||d.args.some(m=>m.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 p=fe(d.script,"Skill script"),g=o.get(`${d.skill}\0${p}`);if(!g)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(l.extname(g.snapshotPath).toLowerCase())&&d.args.some(m=>/[&|<>^]/.test(m)))throw new Error("Batch Skill script arguments cannot contain command operators.");let w=l.join(c.workspaceRoot,".kodax-a2a-script",B());try{await ne(l.join(w,"inputs"),{recursive:!0,mode:448}),await ne(l.join(w,"outputs"),{recursive:!0,mode:448}),await pi(c.workspaceRoot,w,d,e.workspaceAccess);let m=ti(g.snapshotPath),S=await ui({config:mi(w,n,i,m.command),command:m.command,args:[...m.args,...d.args],cwd:w,env:Z(),endpoints:i},c.signal),h=await gi(c.workspaceRoot,w,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:S.trim(),outputs:h})}finally{await H(w,{recursive:!0,force:!0})}}finally{f?.()}},async dispose(){await s,await H(n,{recursive:!0,force:!0})}}}catch(o){throw await H(n,{recursive:!0,force:!0}),o}}a(Ls,"createAsrtSkillScriptRunner");export{Se as a,Zr as b,Ts as c,Os as d,We as e,Is as f,ji as g,Ui as h,Ds as i,Ls as j};
426
+ `,d)})}a(ci,"writeSandboxGate");function li(e){let r=e.stdin;return r===null||r.destroyed||r.writableEnded?Promise.resolve():new Promise((n,t)=>{let o=!1,i=a(()=>{r.removeListener("error",d)},"cleanup"),s=a(c=>{o||(o=!0,i(),c?t(c):n())},"settle"),d=a(c=>s(c),"onError");r.once("error",d),r.end(s)})}a(li,"closeSandboxGate");async function pt(e,r,n=ze,t=He){Yt();let o=lt({...e,bootstrapCommand:e.bootstrapCommand??mn()}),i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",rt,et],s=xe({args:i,env:Z(),isElectron:process.versions.electron!==void 0}),d=Xe(process.execPath,s.args,{cwd:e.cwd,env:s.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0});ke(d);let c=yn(d,r,n,t),u=Ko(d).then(g=>({output:g,failure:void 0}),g=>({output:new Uint8Array,failure:Y(g)}));try{await ai(d,o.payload,r,Date.now()+n)}catch(g){throw d.kill("SIGTERM"),await Promise.allSettled([c,u]),g}let[f,p]=await Promise.all([c,u]);return{...f,...p.failure===void 0?{}:{controlFailure:p.failure},controlInvocationId:o.invocationId,controlOutput:p.output,expectedBackend:o.request.observationBackend??"unsupported"}}a(pt,"runBrokerResult");async function ui(e,r){let n;if(process.platform==="win32"){let t=Date.now()+ze,o=await nr({shellPolicy:e.config,executable:e.command,args:e.args,cwd:e.cwd,env:e.env,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork===!0,signal:r,deadlineAt:t});if(o===void 0)throw new Error("Windows native sandbox invocation was not prepared.");if(o.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let i=o.processControl,s=Xe(o.executable,[...o.args],{cwd:e.cwd,env:o.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0});ke(s);let d;try{let c=yn(s,r,Math.max(1,t-Date.now()),He,!0,i);c.catch(()=>{});try{await i.closeInput(s,r,t)}catch(f){let p=f;try{await i.terminate(s)}catch(g){p=new AggregateError([f,g],"Native sandbox bootstrap and termination both failed.")}throw await c.catch(()=>{}),p}n=await c}catch(c){throw d=c,c}finally{try{await o.cleanup({execution:"started_or_unknown"})}catch(c){throw d!==void 0?new AggregateError([d,c],"Sandboxed Skill execution and cleanup both failed."):c}}}else n=await pt(e,r);if(n.exitCode!==0){let t=n.stderr.trim()||n.stdout.trim();throw new Error(`Sandboxed Skill script failed (${n.exitCode}): ${t}`)}return n.stdout}a(ui,"runBroker");async function fi(e,r){let n=await Ue(e),t=l.resolve(e,fe(r,"Skill script input")),o=await Ue(t);if(!O(n,o)||wt(l.relative(n,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await cn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}a(fi,"workspaceSource");async function wi(e,r){let n=await Ue(e),t=l.resolve(e,fe(r,"Skill script output target"));if(!O(l.resolve(e),t)||wt(l.relative(l.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await ne(l.dirname(t),{recursive:!0}),!O(n,await Ue(l.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await cn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}a(wi,"workspaceTarget");async function pi(e,r,n,t){if(n.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of n.inputs){let i=await fi(e,o.path),s=fe(o.as??l.basename(i),"Skill script staged input"),d=l.resolve(r,"inputs",...s.split("/"));if(!O(l.join(r,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await ne(l.dirname(d),{recursive:!0,mode:448}),await zr(i,d)}}a(pi,"stageInputFiles");async function gi(e,r,n,t,o){if(n.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let i=[];for(let s of n.outputs){let d=fe(s.path,"Skill script staged output"),c=l.resolve(r,"outputs",...d.split("/")),u=await Ue(c);if(!O(l.join(r,"outputs"),u)||(await Xt(c)).isSymbolicLink()||!(await cn(c)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let f=await wi(e,s.target);if(o!==void 0&&gt(e,!0)+(await cn(c)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await zr(c,f,dn.COPYFILE_EXCL),i.push(l.relative(e,f))}return i}a(gi,"promoteOutputs");function gt(e,r=!1){let n=0;for(let t of Jr(e,{withFileTypes:!0})){if(r&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=l.join(e,t.name);t.isDirectory()?n+=gt(o):t.isFile()&&(n+=_e(o).size)}return n}a(gt,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let r=Xn();return{...e,windows:{...e.windows,srtWin:{path:r.path}},filesystem:{...e.filesystem,allowRead:e.filesystem.allowRead,denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],r.directory])]}}}a(Zn,"withPreparedWindowsRunner");function mi(e,r,n,t){let i=[process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()],s=a(d=>l.isAbsolute(d)?process.platform==="win32"?[d,l.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:n.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:i,allowRead:[e,r,...new Set([...s(process.execPath),...s(t)])],allowWrite:[e],denyWrite:i}})}a(mi,"sandboxConfig");function yi(){let e=[U.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(r=>typeof r=="string"&&l.isAbsolute(r)).map(r=>l.resolve(r)))]}a(yi,"canonicalTempDirectories");function bi(e){return[l.join(e,".kodax","runtime"),l.join(e,".git","config"),l.join(e,".git","hooks")].filter(n=>{try{return _e(n),!0}catch{return!1}})}a(bi,"existingWorkspaceDenyWrites");function Si(e){if(e===void 0)return[];if(_e(e,{throwIfNoEntry:!1})===void 0)throw new Error(`Trusted project Exec Policy snapshot disappeared before sandbox admission: ${e}`);return[e]}a(Si,"trustedProjectExecPolicyDenyWrite");function Ie(e){let r=[...new Set(e.map(t=>l.resolve(t)))].filter(t=>_e(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),n=[];for(let t of r)n.some(o=>O(o,t))||n.push(t);return n}a(Ie,"existingMinimalWindowsAclGuardRoots");function hi(){let e=l.resolve(process.env.USERPROFILE??U.homedir()),r=l.resolve(me()),n=io.map(t=>l.join(e,t)).filter(t=>!qe(t,r));return Ie([...n,...so.map(t=>l.join(r,t)),pn()])}a(hi,"windowsLegacyPersistentAclGuardRoots");function vi(e,r,n){if(n===void 0)throw new Error("Windows sandbox group SID is unavailable for persistent denyRead.");let t=Ie(e);if(t.length===0)return;let o=ie({sandboxReadSid:n,untrustedWriteRoots:[]}).path,i=we(o,["__persistent-deny-read","remove",r,n],{input:JSON.stringify(t),encoding:"utf8",timeout:15*6e4,windowsHide:!0});if(i.error||i.status!==0){let s=(i.error?.message||i.stderr||i.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${s}`)}try{let s=JSON.parse(i.stdout.trim());if(!Array.isArray(s)||s.length!==0)throw new Error("legacy ACL removal returned a non-empty result")}catch(s){throw new Error(`Windows sandbox ACL guard returned invalid output: ${Y(s)}`)}}a(vi,"removeWindowsLegacyAclGuards");function mt(){return l.join(l.resolve(process.env.ProgramData??l.join(U.homedir(),"AppData","Local")),"KodaX","sandbox-runtime","read-policy-v2.json")}a(mt,"windowsLegacyAclReconciliationMarkerFile");function xi(e){let r=mt(),n;try{n=ae(r)}catch(i){if(V(i,"ENOENT"))return!1;throw i}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1||n.size>Jn)return!1;let t;try{t=JSON.parse(Oe(r,"utf8"))}catch(i){if(i instanceof SyntaxError)return!1;throw i}if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=t;return Object.keys(o).sort().join(",")==="sandboxGroupSid,setupVersion,version"&&o.version===2&&o.setupVersion===Hn&&o.sandboxGroupSid===e}a(xi,"windowsLegacyAclMigrationIsCurrent");function Vr(e,r){let n=hi();vi(n,e,r),Hr(mt(),JSON.stringify({version:2,setupVersion:Hn,sandboxGroupSid:r}),{encoding:"utf8",mode:384})}a(Vr,"migrateWindowsLegacyAclGuardsForSetup");function yt(e){return Ee([e],e,de(e))}a(yt,"windowsSandboxProfileReadRoots");function Kr(){let e=l.resolve(process.env.USERPROFILE??U.homedir());return Ie(Ee([...yt(e),...St(Ze(process.env))],e,de(e)))}a(Kr,"windowsSandboxSetupReadRoots");function ki(e,r){let n=[];for(let t of e)try{n.push(K.native(t))}catch{continue}return process.platform==="win32"?Ie(n):[...new Set(n)]}a(ki,"workspaceShellWriteRoots");function Ei(e,r){let n=process.platform==="win32"?r:l.resolve(e);return l.join(U.tmpdir(),"kodax-sandbox",Je("sha256").update(n).digest("hex").slice(0,16))}a(Ei,"workspaceShellTempRoot");function Ri(e,r){return l.join(Ei(e,r),`${process.pid}-${B()}`)}a(Ri,"createWorkspaceShellTempDirectory");async function an(e){await H(e,{recursive:!0,force:!0,maxRetries:process.platform==="win32"?2:0,retryDelay:50})}a(an,"removeWorkspaceShellTempDirectory");function Ai(e,r){return e.filter(n=>r.some(t=>qe(t,n)))}a(Ai,"windowsSandboxPreinstalledReadRoots");function Wi(e){return process.platform==="win32"?e===void 0?[]:[e]:yi()}a(Wi,"workspaceShellTempWriteRoots");function Ci(e,r,n){try{let t=K.native(r),o=l.resolve(r),i=l.resolve(e);if(!O(o,i)||i===o)return;for(;i!==o;)try{let s=K.native(i);if(s===t||!O(t,s))return;let d=l.relative(t,s).split(l.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||n&&nt.some(c=>c===d)?void 0:s}catch(s){if(!n||s.code!=="ENOENT")return;try{ae(i);return}catch(c){if(c.code!=="ENOENT")return}let d=l.dirname(i);if(d===i)return;i=d}return}catch{return}}a(Ci,"windowsAgentHomeAccessRoot");function bt(e,r){if(!r)return{read:[],write:[]};let n=a((t,o)=>[...new Set(t.flatMap(i=>{let s=Ci(i,e,o);return s?[s]:[]}))],"roots");return{read:n(r.read,!1),write:n(r.write,!0),...r.ephemeral===!0?{ephemeral:!0}:{}}}a(bt,"windowsAgentHomeAccessRoots");function bn(e){return e??(process.platform==="win32"?process.env.COMSPEC??l.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}a(bn,"workspaceShellExecutable");function Pi(e,r){return Object.entries(e).find(([n,t])=>n.toUpperCase()===r&&t!==void 0)?.[1]}a(Pi,"shellEnvironmentValue");function Ni(e){let r=process.env.LOCALAPPDATA,n=[r===void 0?void 0:l.join(r,"Programs"),r,process.env.APPDATA,l.join(e,"AppData","Local","Programs"),l.join(e,"AppData","Local"),l.join(e,"AppData","Roaming"),e];return[...new Set(n.flatMap(t=>t===void 0?[]:[l.resolve(t)]))].filter(t=>O(e,t)).sort((t,o)=>o.length-t.length)}a(Ni,"workspaceShellUserDataBoundaries");function _i(e,r,n){if(process.platform!=="win32"||e.toLowerCase()===r.toLowerCase())return[];try{if(!ae(e).isSymbolicLink())return[]}catch{return[]}let t=n.find(d=>d.toLowerCase()!==r.toLowerCase()&&O(d,r));if(t===void 0)return[];let[o]=l.relative(t,r).split(l.sep);if(!o)return[];let i=l.join(t,o),s=[];for(let d=l.dirname(r);d.toLowerCase()!==i.toLowerCase()&&O(i,d);d=l.dirname(d))s.push(d);return s}a(_i,"workspaceShellLinkedTargetAncestors");function Ze(e,r){let n=l.resolve(process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()),t=Ni(n),o=new Map,i=a(u=>{let f=l.resolve(u);if(!(f===l.parse(f).root||f.toLowerCase()===n.toLowerCase()))return f},"safe"),s=a((u,f)=>{let p=i(u);if(p===void 0)return;let g;try{g=K(p)}catch{return}if(i(g)===void 0)return;let w=f?[p,g].filter(m=>O(n,m)):[p,g];for(let m of w)o.set(process.platform==="win32"?m.toLowerCase():m,m);if(f&&w.includes(g))for(let m of _i(p,g,t)){let S=i(m);S!==void 0&&O(n,S)&&o.set(S.toLowerCase(),S)}},"remember");for(let u of(Pi(e,"PATH")??"").split(l.delimiter)){let f=u.trim().replace(/^"(.*)"$/,"$1");f&&l.isAbsolute(f)&&s(f,!0)}let d=bn(r);l.isAbsolute(d)&&s(l.dirname(d),!0);let c=mn();if(l.isAbsolute(c)){let u=i(c);u!==void 0&&o.set(process.platform==="win32"?u.toLowerCase():u,u),s(l.dirname(c),!1)}return[...o.values()].sort((u,f)=>u.toLowerCase().localeCompare(f.toLowerCase()))}a(Ze,"workspaceShellRuntimeReadScopes");function St(e){let r=new Map;for(let n of e)try{let t=K.native(n);r.set(t.toLowerCase(),t)}catch{}return[...r.values()].sort((n,t)=>n.toLowerCase().localeCompare(t.toLowerCase()))}a(St,"windowsNativeRuntimeReadScopes");function qe(e,r){return l.resolve(e).toLowerCase()===l.resolve(r).toLowerCase()}a(qe,"sameWindowsPath");function un(e,r){let n=Xr(e,"r");try{let t=Buffer.allocUnsafe(r+1),o=0;for(;o<t.length;){let i=Vt(n,t,o,t.length-o,o);if(i===0)break;o+=i}return o>r?void 0:t.toString("utf8",0,o)}finally{In(n)}}a(un,"readBoundedUtf8File");function Ti(e,r){let n=/^(.*)[/\\]worktrees[/\\][^/\\]+$/.exec(e);if(n===null)return;let t=un(l.join(e,"commondir"),4096),o=un(l.join(e,"gitdir"),4096);if(t===void 0||o===void 0)return;let i=K(n[1]),s=K(l.resolve(e,t.trim())),d=K(l.resolve(e,o.trim()));return qe(s,i)&&qe(d,r)?i:void 0}a(Ti,"linkedWorktreeMainGitDirectory");function Oi(e){let r=un(l.join(e,"config"),65536);if(r===void 0)return;let n=!1,t;for(let o of r.split(/\r?\n/)){let i=o.trim();if(i.startsWith("[")){n=/^\[\s*core\s*\]$/i.test(i);continue}if(!n)continue;let s=/^worktree\s*=\s*(.+?)\s*$/i.exec(i);if(s===null)continue;if(t!==void 0)return;let d=s[1];if(d.includes("\0")||d.startsWith('"')||d.endsWith('"'))return;t=d}return t===void 0?void 0:K(l.resolve(e,t))}a(Oi,"submoduleGitWorktree");function Ii(e,r){if(!/[/\\]\.git[/\\]modules[/\\]/i.test(e))return!1;let n=Oi(e);return n!==void 0&&qe(n,r)}a(Ii,"isStructurallyBoundSubmoduleGitDirectory");function Di(e){if(process.platform!=="win32")return{};let r=l.join(e,".git");try{if(!ae(r).isFile())return{};let n=un(r,4096);if(n===void 0)return{};let t=/^gitdir:\s*(.+?)\s*$/m.exec(n);if(t===null)return{};let o=K(l.resolve(e,t[1])),i=Ti(o,r),s=Ii(o,e);if(i===void 0&&!s)return{};let d=i??o;return _e(d).isDirectory()?_e(l.join(d,"HEAD")).isFile()?{mainGitDirectory:d,gitfile:r}:{}:{}}catch(n){let t=n.code;if(t==="ENOENT"||t==="ENOTDIR")return{};throw n}}a(Di,"windowsLinkedWorktreeGitAccess");function Li(e,r,n,t,o=Ze(process.env,bn()),i){let s=l.resolve(me()),d=l.join(s,"sandbox-runtime"),c=l.resolve(process.platform==="win32"?process.env.USERPROFILE??U.homedir():U.homedir()),u=[],f=process.platform==="win32"?bt(s,n):{read:[],write:[]},p=ki([e,...Wi(r),...f.write,...t?.write??[]],s),g=[d,...nt.map(h=>l.join(s,h))];if(process.platform==="win32")for(let h of g)p.some(W=>O(W,h))&&qr(h,{recursive:!0});let w=Di(e),m=[...process.platform==="win32"?[...yt(c),s]:[],...o,...f.read,...t?.read??[],...w.mainGitDirectory!==void 0?[w.mainGitDirectory]:[]],S=process.platform==="win32"?Ie(Ee(m,c,de(c))):[...new Set(m)];return process.platform!=="win32"&&Rn(S),{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:S,allowWrite:process.platform==="win32"?Ee(p,c,de(c)):p,denyWrite:[...g,...En(),...Si(i),...bi(e),...w.gitfile!==void 0?[w.gitfile]:[]]}}}a(Li,"workspaceShellSandboxConfig");function Bi(e){let r=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(n=>r.some(t=>O(t,n)))}}}a(Bi,"boundedWindowsWorkspaceDenies");function Qn(e,r,n,t,o,i){let s=Li(e,r,n,t,o,i);return process.platform==="win32"?Bi(s):s}a(Qn,"workspaceShellCommandSandboxConfig");function $i(e){return process.platform!=="win32"?!0:(e?.write??[]).every(r=>{try{return K.native(r),!0}catch{return!1}})}a($i,"workspaceShellFilesystemAccessIsRepresentable");function J(e,r){return[...new Set((e??[]).map(n=>l.resolve(r,n)))]}a(J,"normalizedSandboxPaths");function Gi(e){return e.mode!=="allowlist"?[]:e.origins.map(r=>{let n=new URL(r);if(n.protocol!=="http:"&&n.protocol!=="https:"||n.username||n.password||n.pathname!=="/"||n.search||n.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${r}`);return{host:n.hostname.toLowerCase(),port:n.port?Number(n.port):n.protocol==="https:"?443:80}})}a(Gi,"sdkSandboxEndpoints");async function Mi(e,r,n,t,o){let i=Date.now()+(e.timeoutMs??ze),s=e.command===process.execPath?xe({args:e.args??[],env:n,isElectron:process.versions.electron!==void 0}):{args:[...e.args??[]],env:n},d={network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:J(e.filesystem.allowRead,r),allowWrite:J(e.filesystem.allowWrite,r),denyRead:J(e.filesystem.denyRead,r),denyWrite:J(e.filesystem.denyWrite,r)}},c=await nr({shellPolicy:d,executable:e.command,args:s.args,cwd:r,env:s.env,endpoints:o,allowAllNetwork:t.mode==="allow",signal:e.signal,deadlineAt:i});if(c===void 0)throw new Error("Windows native sandbox invocation was not prepared.");let u="not_started",f,p,g;try{if(c.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let w=c.processControl;await w.validateStart?.(),g=Xe(c.executable,[...c.args],{cwd:r,env:c.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0,windowsVerbatimArguments:c.windowsVerbatimArguments===!0}),u="started_or_unknown",ke(g);let m=yn(g,e.signal,Math.max(1,i-Date.now()),e.maxOutputBytes??He,!0,w);m.catch(()=>{});try{await w.closeInput(g,e.signal,i)}catch(W){let F=W;try{await w.terminate(g)}catch(E){F=new AggregateError([W,E],"Native sandbox bootstrap and termination both failed.")}throw await m.catch(()=>{}),F}let S=await w.attestStart?.(g,e.signal,i);if(S?.state==="pre_start_unavailable")throw u="not_started",new Error(S.diagnostic);let h=await m;if(h.exitCode!==0){let W=h.stderr.split(/\r?\n/u).filter(F=>F.startsWith("kodax-windows-sandbox protocol ")).slice(-4).join(`
427
+ `);p=new Error(W.length>0?W:`Windows native sandbox host exited with code ${h.exitCode}.`)}return h}catch(w){if(f=w,T({source:"sandbox:windows-v2",level:"warn",message:"Windows native sandbox command failed.",detail:{phase:u==="not_started"?"target-start":"target-execution",protocol:j,error:w}}),g!==void 0&&c.processControl!==void 0)try{await c.processControl.terminate(g)}catch(m){f=new AggregateError([w,m],"Windows native sandbox execution and termination both failed.")}throw f}finally{try{await c.cleanup({execution:u})}catch(w){throw f!==void 0?new AggregateError([f,w],"Windows native sandbox execution and cleanup both failed."):p!==void 0?new AggregateError([p,w],"Windows native sandbox host and cleanup both failed."):w}}}a(Mi,"runWindowsV2Sandboxed");async function ji(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 r=l.resolve(e.cwd),n=process.platform==="win32"?[]:En(),t={allowRead:J(e.filesystem.allowRead,r),allowWrite:J(e.filesystem.allowWrite,r),denyRead:J(e.filesystem.denyRead,r),denyWrite:J(e.filesystem.denyWrite,r)};if(process.platform==="win32"&&(t.denyRead?.length??0)>0){let w="Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.";return{status:"unavailable",sandboxed:!1,reason:"unsupported_policy",diagnostic:w,doctor:{ready:!1,platform:process.platform,version:Se,diagnostics:[w],setupRequired:!1}}}process.platform==="win32"&&xn(t),process.platform!=="win32"&&Rn(t.allowRead),cr(t.allowWrite);let o={...t,denyRead:[...t.denyRead??[],...n],denyWrite:[...t.denyWrite??[],...n]},i=e.network??{mode:"deny"},s=Gi(i),d=await z();if(process.platform==="win32"&&!d.ready){let w;try{let m=await Ye(t.allowWrite,!0),S=he({srtWin:m.srtWin});S.groupSid!==void 0&&await gn(S.groupSid,t.allowWrite)}catch(m){w=m}d=await z({refresh:!0}),w!==void 0&&(d={...d,ready:!1,setupRequired:!0,diagnostics:[Y(w),...d.diagnostics]})}if(!d.ready)return{status:"unavailable",sandboxed:!1,doctor:d,reason:"doctor_not_ready"};let c=ri(e.inheritEnvironment!==!1?process.env:Z(),e.env??{});if(process.platform==="win32"){let w=await Mi({...e,filesystem:o},r,c,i,s);return{status:"completed",sandboxed:!0,exitCode:w.exitCode,stdout:w.stdout,stderr:w.stderr}}let u={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:i.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:J(o.allowRead,r),allowWrite:J(o.allowWrite,r),denyRead:J(o.denyRead,r),denyWrite:J(o.denyWrite,r)}}),command:e.command,args:e.args??[],cwd:r,env:c,endpoints:s,allowAllNetwork:i.mode==="allow",observationBackend:Zr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${B()}\0
428
+ `},f=await pt(u,e.signal,e.timeoutMs??ze,e.maxOutputBytes??He),p,g=f.controlFailure;if(g===void 0)try{p=ut(f.controlOutput,f.controlInvocationId,f.expectedBackend)}catch(w){g=w}if(p?.state==="not_started"){let w=[p.diagnostic,f.stderr.trim()].filter(m=>m!==void 0&&m!=="").join(" ").slice(0,4096)||"The sandbox backend exited before target-start attestation.";return{status:"unavailable",sandboxed:!1,reason:"backend_launch_failed",diagnostic:w,doctor:{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,w]}}}return p?.state!=="applied"?{status:"execution_uncertain",sandboxed:!1,reason:"attestation_failed",diagnostic:[g===void 0?void 0:Y(g),f.stderr.trim()].filter(m=>m!==void 0&&m!=="").join(" ").slice(0,4096)||"Sandbox target execution could not be attested; do not retry blindly.",doctor:d,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}:{status:"completed",sandboxed:!0,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}}a(ji,"runKodaXSandboxed");async function Ui(e={}){let r=await z({refresh:!0});if(!r.ready&&process.platform!=="win32")return r;let n=process.cwd(),t=bn(),o=process.platform==="win32"?["/d","/s","/c","whoami"]:["-c","id -u"],i=Qn(n,void 0,void 0,void 0,Ze(process.env,t));try{let s=await ji({command:t,args:o,cwd:n,filesystem:{allowRead:i.filesystem.allowRead??[],allowWrite:[],denyRead:i.filesystem.denyRead,denyWrite:[]},network:{mode:"deny"},timeoutMs:ln,maxOutputBytes:65536});if(s.status==="completed"&&s.exitCode===0)return z({refresh:!0});let d=s.status==="completed"?r:s.doctor,c=s.status==="completed"?`Sandbox identity probe exited with code ${String(s.exitCode)}.`:s.diagnostic??(s.doctor.diagnostics.join(" ")||"Sandbox target start was not proven.");return{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,`Sandbox launch probe failed: ${c}`]}}catch(s){return{...r,ready:!1,setupRequired:!0,diagnostics:[...r.diagnostics,`Sandbox launch probe failed: ${Y(s)}`]}}}a(Ui,"doctorSandboxExecution");function er(){let e=new Error("Sandbox runner preparation timed out.");return e.name="TimeoutError",e}a(er,"sandboxRunnerPreparationTimeoutError");function Ce(e,r){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(r!==void 0&&Date.now()>=r)throw er()}a(Ce,"throwIfSandboxRunnerPreparationStopped");function Ne(e,r,n){return Ce(r,n),r===void 0&&n===void 0?e:new Promise((t,o)=>{let i=!1,s,d=a(u=>{i||(i=!0,s&&clearTimeout(s),r?.removeEventListener("abort",c),u())},"finish"),c=a(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");r?.addEventListener("abort",c,{once:!0}),n!==void 0&&(s=setTimeout(()=>{d(()=>o(er()))},Math.max(0,n-Date.now())),s.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}a(Ne,"waitForSandboxRunnerPreparation");async function Fi(){return lr()}a(Fi,"sandboxControlDirectory");function Vi(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-windows-network-broker",e];if(import.meta.url.endsWith(".ts"))return["--import",Yr(qn.resolve("tsx")).href,_r(new URL("./sandbox-network-broker-entry.ts",import.meta.url)),e];let r=l.dirname(_r(import.meta.url)),n=l.basename(r)==="chunks"?l.dirname(r):r;return[l.join(n,"sandbox-network-broker.js"),e]}a(Vi,"windowsNetworkBrokerEntryArgs");async function Ki(e,r,n){let t=e.stdio[3];if(!t)throw new Error("Windows network broker control pipe was not created.");return new Promise((o,i)=>{let s=!1,d=Buffer.alloc(0),c,u=a(m=>{s||(s=!0,c&&clearTimeout(c),r?.removeEventListener("abort",f),t.removeListener("data",w),e.removeListener("error",p),e.removeListener("exit",g),m())},"finish"),f=a(()=>u(()=>i(r?.reason??new DOMException("Operation aborted","AbortError"))),"onAbort"),p=a(m=>u(()=>i(m)),"onError"),g=a(m=>u(()=>i(new Error(`Windows network broker exited ${String(m)} before readiness.`))),"onExit"),w=a(m=>{if(d=Buffer.concat([d,m]),d.length>1024*1024){u(()=>i(new Error("Windows network broker readiness exceeded 1 MiB.")));return}let S=d.indexOf(10);if(!(S<0))try{let h=JSON.parse(d.subarray(0,S).toString("utf8"));if(h===null||typeof h!="object"||h.version!==1)throw new Error("Windows network broker returned an incompatible response.");u(()=>o(h))}catch(h){u(()=>i(h))}},"onData");t.on("data",w),e.once("error",p),e.once("exit",g),r?.addEventListener("abort",f,{once:!0}),n!==void 0&&(c=setTimeout(()=>u(()=>i(er())),Math.max(0,n-Date.now())),c.unref())})}a(Ki,"readWindowsNetworkBrokerReady");async function qi(e,r,n){let t=a(s=>{if(s.error!==void 0||s.code!==0||s.signal!==null){let d=n().trim();throw new Error(`Windows network broker exited without a clean cleanup result (code ${String(s.code)}, signal ${String(s.signal)})`+(d===""?".":`: ${d}`),s.error===void 0?void 0:{cause:s.error})}},"assertCleanExit");if(e.exitCode!==null||e.signalCode!==null){t(await r);return}await new Promise(s=>{let d=e.stdin;if(d===null||d.destroyed){s();return}let c=a(()=>s(),"finish");d.once("error",c),d.end(c)});let o=await Promise.race([r.then(s=>({graceful:!0,outcome:s})),new Promise(s=>{setTimeout(()=>s(!1),5e3).unref()})]);if(o!==!1){t(o.outcome);return}throw(await De(e,{forceMs:500,taskkillMs:500})).status==="unknown"?new Error("Windows network broker process-tree termination was not confirmed."):(await r,new Error("Windows network broker did not exit within its graceful cleanup budget."))}a(qi,"stopWindowsNetworkBroker");function ht(e){return{...e,srtWinPath:l.resolve(e.srtWinPath),srtWinSha256:e.srtWinSha256.toLowerCase(),controllerExecutable:l.resolve(e.controllerExecutable),controllerSha256:e.controllerSha256.toLowerCase(),endpoints:[...e.endpoints].map(({host:r,port:n})=>({host:r.toLowerCase(),port:n})).sort((r,n)=>r.host.localeCompare(n.host)||r.port-n.port).filter((r,n,t)=>n===0||r.host!==t[n-1].host||r.port!==t[n-1].port)}}a(ht,"normalizedWindowsNetworkBrokerRequest");function Fn(e){if(e===null||typeof e=="string"||typeof e=="boolean")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Windows network broker policy number is invalid.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(r=>Fn(r)).join(",")}]`;if(typeof e=="object")return`{${Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>`${JSON.stringify(n)}:${Fn(t)}`).join(",")}}`;throw new Error("Windows network broker policy contains an unsupported value.")}a(Fn,"canonicalWindowsNetworkBrokerValue");function Xi(e){let r=ht(e),n=Fn({version:r.version,setupGenerationNonce:r.setupGenerationNonce,config:r.config,srtWinPath:l.resolve(r.srtWinPath).toLowerCase(),srtWinSha256:r.srtWinSha256,controllerExecutable:r.controllerExecutable.toLowerCase(),controllerSha256:r.controllerSha256,controllerProtocol:r.controllerProtocol,expectedSandboxUserSid:r.expectedSandboxUserSid.toUpperCase(),expectedSandboxGroupSid:r.expectedSandboxGroupSid.toUpperCase(),endpoints:r.endpoints,allowAllNetwork:r.allowAllNetwork});return Je("sha256").update(n).digest("hex")}a(Xi,"windowsNetworkBrokerKey");function Ji(e,r,n){let t=a(()=>{},"markStarted"),o={key:e,requestFile:l.join(n,`windows-network-${process.pid}-${B()}.json`),started:new Promise(i=>{t=i}),markStarted:a(()=>t(),"markStarted"),references:0,failed:!1,lastUsed:0,stopRequested:!1,stderrTail:Buffer.alloc(0)};return $n.add(o),o.ready=(async()=>{try{if(await Fe(o.requestFile,JSON.stringify(r),{flag:"wx",mode:384}),o.stopRequested)throw new Error("Windows network broker start was cancelled.");let i=xe({args:Vi(o.requestFile),env:Z(),isElectron:process.versions.electron!==void 0}),s=Xe(process.execPath,i.args,{cwd:n,env:i.env,shell:!1,stdio:["pipe","ignore","pipe","pipe"],windowsHide:!0});o.child=s,ke(s),o.markStarted(),s.stderr?.on("data",c=>{o.stderrTail=Buffer.concat([o.stderrTail,c]).subarray(-16*1024)}),o.exit=new Promise(c=>{let u;s.once("error",f=>{u=f}),s.once("close",(f,p)=>c({code:f,signal:p,...u===void 0?{}:{error:u}}))}),o.references===0&&Ve(o,!1),s.on("error",c=>{T({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker process failed.",detail:c})}),s.once("close",()=>{$n.delete(o),o.stopping===void 0&&ue.get(e)===o&&ue.delete(e)}),s.once("exit",(c,u)=>{!o.stopRequested&&(c!==0||u!==null)&&(Ln(o),T({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker exited unexpectedly.",detail:o.stderrTail.toString("utf8").trim()||`code ${String(c)}, signal ${String(u)}`}))});let d;try{d=await Ki(s,void 0,Date.now()+Bn)}catch(c){let u=o.stderrTail.toString("utf8").trim();throw new Error(u===""?"Windows network broker failed before readiness.":`Windows network broker failed before readiness: ${u}`,{cause:c})}if(!d.ok)throw new Error(d.error);return d}finally{o.markStarted()}})().catch(i=>{throw Ln(o),i}),o.ready.catch(()=>{}),o}a(Ji,"createWindowsNetworkBrokerState");async function Vn(e){return e.stopping!==void 0||(e.idleTimer!==void 0&&(clearTimeout(e.idleTimer),e.idleTimer=void 0),e.stopRequested=!0,e.stopping=(async()=>{await e.started,Ve(e,!0);let n=(await Promise.allSettled([...e.child===void 0||e.exit===void 0?[]:[qi(e.child,e.exit,()=>e.stderrTail.toString("utf8"))],H(e.requestFile,{force:!0})])).flatMap(t=>t.status==="rejected"?[t.reason]:[]);if(n.length>0)throw new AggregateError(n,"Shared Windows network broker cleanup failed.")})().finally(()=>{e.child===void 0&&$n.delete(e),Ve(e,!1),ue.get(e.key)===e&&ue.delete(e.key)})),e.stopping}a(Vn,"stopSharedWindowsNetworkBroker");async function Hi(e,r=!1){if(r&&Ln(e),e.references=Math.max(0,e.references-1),e.references===0){if(Ve(e,!1),Qr(e),e.failed){await Vn(e);return}e.idleTimer=setTimeout(()=>{e.idleTimer=void 0,!(e.references!==0||e.stopping!==void 0)&&Vn(e).catch(n=>{T({source:"sandbox:windows-v2",level:"warn",message:"Idle Windows network broker cleanup failed.",detail:n})})},ro),e.idleTimer.unref()}}a(Hi,"releaseWindowsNetworkBrokerState");async function zi(e,r,n,t){let o=ht(e),i=Xi(o);for(;;){let s=ue.get(i);if(s?.stopping!==void 0){await Ne(s.stopping,n,t);continue}if(s?.failed){if(s.references!==0)throw new Error("Windows network broker failed while prior command leases are still settling; no command was started.");await Ne(Vn(s),n,t);continue}s===void 0&&(s=Ji(i,o,r),ue.set(i,s)),Qr(s),s.idleTimer!==void 0&&(clearTimeout(s.idleTimer),s.idleTimer=void 0),s.references+=1,s.references===1&&Ve(s,!0);let d=!1,c=a(async u=>{d||(d=!0,await Hi(s,u?.retire===!0))},"release");try{let u=s.ready;if(u===void 0)throw new Error("Windows network broker did not start.");return{ready:await Ne(u,n,t),release:c}}catch(u){try{await c()}catch(f){throw new AggregateError([u,f],"Windows network broker acquisition and cleanup both failed.")}throw u}}}a(zi,"acquireWindowsNetworkBroker");async function Yi(e){let r=Ri(e.workspaceRoot,"windows-v2-command");try{await ne(r,{recursive:!0,mode:448});let n=St(Ze(e.env,e.executable)),t=Qn(e.workspaceRoot,r,e.agentHomeAccess,e.filesystemAccess,n,e.trustedProjectExecPolicyPath),o=await nr({shellPolicy:t,executable:e.executable,args:e.args,cwd:e.cwd,env:{...e.env,TEMP:r,TMP:r,TMPDIR:r},endpoints:[],allowAllNetwork:!0,signal:e.signal,deadlineAt:e.deadlineAt});if(o===void 0){await an(r);return}let i;return{...o,cleanup(s){return i??=(async()=>{let d;try{d=await o.cleanup(s)}catch(c){if(s?.execution==="started_or_unknown")throw c;try{await an(r)}catch(u){throw new AggregateError([c,u],"Windows native shell and private temp cleanup failed.")}throw c}try{await an(r)}catch(c){T({source:"sandbox:windows-v2",level:"warn",message:"Private Windows shell Temp cleanup was deferred after lifecycle proof.",detail:c})}return d})(),i}}}catch(n){try{await an(r)}catch(t){throw new AggregateError([n,t],"Windows native shell preparation and private temp cleanup both failed.")}throw n}}a(Yi,"prepareWindowsV2ShellInvocation");async function nr(e){let r=e.deadlineAt??Date.now()+ln,n=await Ne(Ye(e.shellPolicy.filesystem.allowWrite),e.signal,r);Ce(e.signal,r);let t=Lr(n);Ce(e.signal,r);let o=Zn(e.shellPolicy);xn({allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite}),kn(o.filesystem.allowWrite);let i=await Ne(gn(t.sandboxGroupSid,o.filesystem.allowWrite),e.signal,r);Ce(e.signal,r);let s=await Ne(_o(),e.signal,r);if(Ce(e.signal,r),s.toLowerCase()!==Le().toLowerCase())throw new Error("Windows native shell control state resolved to an unexpected path.");let d={version:1,setupGenerationNonce:t.generationNonce,config:Wr(o),cwd:e.cwd,srtWinPath:n.path,srtWinSha256:n.sha256,controllerExecutable:i.path,controllerSha256:i.sha256,controllerProtocol:j,expectedSandboxUserSid:t.sandboxUserSid,expectedSandboxGroupSid:t.sandboxGroupSid,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork},c,u,f;try{c=await zi(d,s,e.signal,r);let p=c.ready;if(p.sandboxUserSid!==t.sandboxUserSid||p.sandboxGroupSid!==t.sandboxGroupSid)throw le("The broker observed a sandbox account identity from another v2 generation");let g=Cr({setupGenerationNonce:t.generationNonce,sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtSha256:n.sha256,shellSha256:i.sha256});u=l.join(s,`windows-shell-${process.pid}-${B()}.json`);let w=`${process.pid}-${B()}.json`;f=l.join(s,`windows-terminal-${w}`);let m=l.join(s,`windows-started-${w}`),S=l.join(s,`windows-resume-${w}`),h=B(),W=e.deadlineAt??Date.now()+ln,F=Rr(p.asrtChildEnvironment,e.env,vr(e.cwd,o.filesystem.allowWrite,o.filesystem.allowRead)),E=Ai(o.filesystem.allowRead??[],t.setupReadRoots),b=Nr({aclExclusions:de(l.resolve(process.env.USERPROFILE??U.homedir())),generation:g,filesystemCapabilityNonce:t.filesystemCapabilityNonce,sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtInvocation:{executable:p.asrtExecutable,prefixArgs:p.asrtPrefixArgs,targetArgv:[],childEnvironment:{}},targetArgv:[e.executable,...e.args],cwd:e.cwd,preinstalledReadRoots:E,allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite,controllerPipe:p.controllerPipe,terminalRecordPath:f,terminalNonce:h,operationDeadlineUnixMs:W,setupMarkerPath:se(),setupMarkerSha256:Je("sha256").update(Oe(se())).digest("hex")});await Fe(u,JSON.stringify(b),{flag:"wx",mode:384}),T({source:"sandbox:windows-v2",level:"debug",message:"Windows native sandbox request prepared.",detail:{protocol:j,setupGeneration:t.generationNonce,brokerGeneration:g,runnerSha256:n.sha256,controllerSha256:i.sha256,preinstalledReadRootCount:E.length}}),Ce(e.signal,W);let y,v=c,R=u,A=f,k=Pr(F),N=si(k,S,m,A,h,()=>{let q=Lr(n);if(JSON.stringify(q)!==JSON.stringify(t))throw le("The Windows sandbox account generation changed before target start")});return{executable:i.path,args:["__host",R],env:Z(),stdinPrefix:k,processTreeContainment:"native-job",processControl:N,cleanup(q){return y??=(async()=>{let $;if(q?.execution==="started_or_unknown")try{await N.waitForTerminalObservation()}catch(P){$=P}let I=(await Promise.allSettled([v.release({retire:$!==void 0||N.shouldRetireBrokerAfterStartFailure()}),H(R,{force:!0}),H(S,{force:!0}),H(m,{force:!0}),H(A,{force:!0})])).flatMap(P=>P.status==="rejected"?[P.reason]:[]);if($!==void 0&&I.unshift($),I.length>0)throw new AggregateError(I,"Windows native shell cleanup failed.");let D=N.getPreStartUnavailableDiagnostic();return D!==void 0?{version:1,state:"pre_start_unavailable",diagnostic:D}:{version:1,state:"applied",backend:"windows-restricted-user",policyId:"kodax-workspace-shell-v1"}})(),y}}}catch(p){let g=await Promise.allSettled([...c===void 0?[]:[c.release()],...u===void 0?[]:[H(u,{force:!0})],...f===void 0?[]:[H(f,{force:!0})]]),w=[p,...g.flatMap(m=>m.status==="rejected"?[m.reason]:[])];throw w.length===1?p:new AggregateError(w,"Windows native shell preparation and cleanup both failed.")}}a(nr,"prepareWindowsV2Invocation");async function Zi(e){let r=Ze(e.env,e.executable),n={config:Qn(e.workspaceRoot,void 0,e.agentHomeAccess,e.filesystemAccess,r,e.trustedProjectExecPolicyPath),command:e.executable,args:e.args,windowsVerbatimArguments:e.windowsVerbatimArguments,cwd:e.cwd,env:e.env,endpoints:[],allowAllNetwork:!0,bootstrapCommand:mn(),observationBackend:Zr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${B()}\0
429
+ `},t=lt(n),o=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",rt,et],i=xe({args:o,env:Z(),isElectron:process.versions.electron!==void 0}),s;return{executable:process.execPath,args:i.args,env:i.env,stdinPrefix:t.payload,controlChannel:{fd:3,maxOutputBytes:wn},cleanup(d){return s??=(async()=>{let c=d?.controlOutput;if(c===void 0)return d?.execution==="started_or_unknown"?{version:1,state:"execution_uncertain",diagnostic:"Required OS sandbox execution could not be attested."}:void 0;let u=ut(c,t.invocationId,t.request.observationBackend??"unsupported");return u===void 0?{version:1,state:"execution_uncertain",diagnostic:"Required OS sandbox execution could not be attested."}:u.state==="not_started"?{version:1,state:"pre_start_unavailable",...u.diagnostic===void 0?{}:{diagnostic:u.diagnostic}}:u})(),s}}}a(Zi,"preparePortableAsrtShellInvocation");function Is(e){let r=l.resolve(e.workspaceRoot);return{processTreeContainment:process.platform==="linux"?"root-exit-drains":void 0,async prepare(n){if(!n.toolCallId){n.reportObservation?.({version:1,state:"not_selected"});return}let t={id:n.toolCallId,name:"bash",input:{...n.toolInput}},o=await e.shouldSandbox(t),i=o?no(o,e.additionalWorkspaceRoots?.()??[]):!1;if(!i){n.reportObservation?.({version:1,state:"not_selected"});return}let s=typeof i=="object"?i.agentHomeAccess:void 0,d=process.platform==="win32"&&s!==void 0?bt(l.resolve(me()),s):s,c=typeof i=="object"?i.filesystemAccess:void 0;if(!$i(c))throw new Error("The selected filesystem access is not representable by the OS sandbox.");let u=bn(n.executable),f=n.args??(process.platform==="win32"?["/d","/s","/c",n.command]:["-c",n.command]),p=Yn(n.env),g=e.trustedProjectExecPolicyPath??n.trustedProjectExecPolicyPath;if(process.platform==="win32")try{return await Yi({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,trustedProjectExecPolicyPath:g,executable:u,args:f,cwd:n.cwd,env:p,signal:n.signal,deadlineAt:n.deadlineAt})}catch(w){throw n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||T({source:"sandbox:windows-v2",level:"warn",message:"Windows native shell preparation failed before target start.",detail:w}),w}try{return await Zi({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,trustedProjectExecPolicyPath:g,executable:u,args:f,cwd:n.cwd,env:p,windowsVerbatimArguments:n.windowsVerbatimArguments===!0})}catch(w){throw n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||T({source:"sandbox:portable-asrt",level:"warn",message:"Portable ASRT shell preparation failed before target start.",detail:w}),w}}}}a(Is,"createAsrtShellSandbox");async function Ds(e){if(process.platform==="win32")throw new Error("Windows isolated Skill scripts are unavailable because their required per-command denyRead policy is unsupported by the WRITE_RESTRICTED backend.");let r=await z();if(!r.ready)throw new Error(`ASRT ${Se} is not ready: ${r.diagnostics.join(" ")||"run kodax sandbox setup"}`);let n=l.join(e.snapshotRoot,B()),t=l.join(n,"skills");await ne(t,{recursive:!0,mode:448});try{let o=await ei(e,t),i=ni(e.network),s=Promise.resolve();return{async run(d,c){let u=s,f;if(s=new Promise(p=>{f=p}),await u,c.signal?.aborted)throw f?.(),c.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(d.args.length>64||d.args.some(m=>m.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 p=fe(d.script,"Skill script"),g=o.get(`${d.skill}\0${p}`);if(!g)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(l.extname(g.snapshotPath).toLowerCase())&&d.args.some(m=>/[&|<>^]/.test(m)))throw new Error("Batch Skill script arguments cannot contain command operators.");let w=l.join(c.workspaceRoot,".kodax-a2a-script",B());try{await ne(l.join(w,"inputs"),{recursive:!0,mode:448}),await ne(l.join(w,"outputs"),{recursive:!0,mode:448}),await pi(c.workspaceRoot,w,d,e.workspaceAccess);let m=ti(g.snapshotPath),S=await ui({config:mi(w,n,i,m.command),command:m.command,args:[...m.args,...d.args],cwd:w,env:Z(),endpoints:i},c.signal),h=await gi(c.workspaceRoot,w,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:S.trim(),outputs:h})}finally{await H(w,{recursive:!0,force:!0})}}finally{f?.()}},async dispose(){await s,await H(n,{recursive:!0,force:!0})}}}catch(o){throw await H(n,{recursive:!0,force:!0}),o}}a(Ds,"createAsrtSkillScriptRunner");export{Se as a,Zr as b,Ts as c,We as d,Os as e,ji as f,Ui as g,Is as h,Ds as i};