@kodax-ai/kodax 0.7.95 → 0.7.96-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 (163) hide show
  1. package/CHANGELOG.md +178 -1
  2. package/LICENSE +158 -158
  3. package/README.md +149 -24
  4. package/README_CN.md +117 -24
  5. package/config-templates/config.example.jsonc +2 -1
  6. package/config-templates/integrations/a2a.example.jsonc +91 -91
  7. package/config-templates/integrations/extensions.example.jsonc +7 -7
  8. package/config-templates/integrations/mcp.example.jsonc +16 -16
  9. package/dist/builtin/code-review/SKILL.md +82 -82
  10. package/dist/builtin/git-workflow/SKILL.md +84 -84
  11. package/dist/builtin/skill-creator/SKILL.md +127 -127
  12. package/dist/builtin/skill-creator/agents/analyzer.md +12 -12
  13. package/dist/builtin/skill-creator/agents/comparator.md +13 -13
  14. package/dist/builtin/skill-creator/agents/grader.md +13 -13
  15. package/dist/builtin/skill-creator/references/schemas.md +227 -227
  16. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -46
  17. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.js +208 -208
  18. package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -46
  19. package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +286 -286
  20. package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -62
  21. package/dist/builtin/skill-creator/scripts/compare-runs.js +330 -330
  22. package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -33
  23. package/dist/builtin/skill-creator/scripts/generate-review.js +414 -414
  24. package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -73
  25. package/dist/builtin/skill-creator/scripts/grade-evals.js +402 -402
  26. package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -23
  27. package/dist/builtin/skill-creator/scripts/improve-description.js +160 -160
  28. package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -14
  29. package/dist/builtin/skill-creator/scripts/init-skill.js +155 -155
  30. package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -29
  31. package/dist/builtin/skill-creator/scripts/install-skill.js +173 -173
  32. package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -38
  33. package/dist/builtin/skill-creator/scripts/package-skill.js +121 -121
  34. package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -8
  35. package/dist/builtin/skill-creator/scripts/quick-validate.js +163 -163
  36. package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -66
  37. package/dist/builtin/skill-creator/scripts/run-eval.js +353 -353
  38. package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -49
  39. package/dist/builtin/skill-creator/scripts/run-loop.js +242 -242
  40. package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -58
  41. package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +224 -224
  42. package/dist/builtin/tdd/SKILL.md +56 -56
  43. package/dist/chunks/agent-4FABF6WK.js +2 -0
  44. package/dist/chunks/argument-completer-72VHB2VL.js +2 -0
  45. package/dist/chunks/{chunk-7JXA3533.js → chunk-4OIQZWA5.js} +223 -226
  46. package/dist/chunks/{chunk-BNVSKIAB.js → chunk-6BVF3HZ7.js} +136 -136
  47. package/dist/chunks/chunk-7JZZIFZH.js +501 -0
  48. package/dist/chunks/chunk-AC7Z2OIY.js +2 -0
  49. package/dist/chunks/{chunk-JS452J2F.js → chunk-C4KYZAFU.js} +2 -2
  50. package/dist/chunks/chunk-CHUPIWIF.js +251 -0
  51. package/dist/chunks/{chunk-C4DTUKTR.js → chunk-GYUU7XLH.js} +5 -4
  52. package/dist/chunks/{chunk-OK4AXDC5.js → chunk-HAX55GOQ.js} +1 -1
  53. package/dist/chunks/chunk-JKTJCGO2.js +418 -0
  54. package/dist/chunks/{chunk-O743AJ5V.js → chunk-LQYETRFK.js} +171 -175
  55. package/dist/chunks/{chunk-2PEDBGKN.js → chunk-LTUZTQ6W.js} +1 -1
  56. package/dist/chunks/chunk-LYWDUSKO.js +2 -0
  57. package/dist/chunks/chunk-NGH6T4FD.js +92 -0
  58. package/dist/chunks/{chunk-SRIJX5ZP.js → chunk-NVRWCSA5.js} +1 -1
  59. package/dist/chunks/chunk-O4DS7RIQ.js +384 -0
  60. package/dist/chunks/chunk-ORXU6OWZ.js +2 -0
  61. package/dist/chunks/chunk-POTW3O65.js +124 -0
  62. package/dist/chunks/{chunk-2TM3W3GK.js → chunk-RIQSS56Y.js} +1 -1
  63. package/dist/chunks/chunk-U27XKEN5.js +407 -0
  64. package/dist/chunks/{chunk-6ABQJUK6.js → chunk-XUX6OUCA.js} +2 -2
  65. package/dist/chunks/{client-JDOS3YJR.js → client-4C456K4O.js} +1 -1
  66. package/dist/chunks/compaction-config-3VQRDFF4.js +2 -0
  67. package/dist/chunks/{construction-bootstrap-YCWHHUYO.js → construction-bootstrap-AHN7EDGG.js} +1 -1
  68. package/dist/chunks/dist-BCBQXAGI.js +2 -0
  69. package/dist/chunks/dist-QK2YDWU6.js +2 -0
  70. package/dist/chunks/host-VIHV7ADG.js +2 -0
  71. package/dist/chunks/run-manager-NBVMU3KV.js +2 -0
  72. package/dist/chunks/utils-MEJZ2IGI.js +2 -0
  73. package/dist/index.d.ts +22 -21
  74. package/dist/index.js +7 -7
  75. package/dist/kodax_bootstrap.js +26 -26
  76. package/dist/kodax_cli.js +1905 -1882
  77. package/dist/native/darwin-arm64/LICENSE-APACHE.txt +13 -0
  78. package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
  79. package/dist/native/darwin-arm64/manifest.json +16 -0
  80. package/dist/native/darwin-x64/LICENSE-APACHE.txt +13 -0
  81. package/dist/native/darwin-x64/kodax-text-transaction.node +0 -0
  82. package/dist/native/darwin-x64/manifest.json +16 -0
  83. package/dist/native/linux-arm64/LICENSE-APACHE.txt +13 -0
  84. package/dist/native/linux-arm64/kodax-text-transaction.node +0 -0
  85. package/dist/native/linux-arm64/manifest.json +16 -0
  86. package/dist/native/linux-x64/LICENSE-APACHE.txt +13 -0
  87. package/dist/native/linux-x64/kodax-text-transaction.node +0 -0
  88. package/dist/native/linux-x64/manifest.json +16 -0
  89. package/dist/native/win32-x64/LICENSE-APACHE.txt +13 -0
  90. package/dist/native/win32-x64/NOTICE-windows-sandbox.txt +8 -0
  91. package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
  92. package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
  93. package/dist/native/win32-x64/manifest.json +30 -0
  94. package/dist/provider-capabilities.json +108 -2
  95. package/dist/runtime-worker.js +1745 -1727
  96. package/dist/sandbox-network-broker.js +1715 -0
  97. package/dist/sdk-a2a.d.ts +13 -12
  98. package/dist/sdk-a2a.js +1 -1
  99. package/dist/sdk-agent.d.ts +27 -18
  100. package/dist/sdk-agent.js +1 -1
  101. package/dist/sdk-coding.d.ts +107 -58
  102. package/dist/sdk-coding.js +1 -1
  103. package/dist/sdk-experimental-memory.d.ts +4 -4
  104. package/dist/sdk-experimental-memory.js +1 -1
  105. package/dist/sdk-llm.d.ts +9 -10
  106. package/dist/sdk-llm.js +1 -1
  107. package/dist/sdk-mcp.js +1 -1
  108. package/dist/sdk-media.d.ts +1 -1
  109. package/dist/sdk-media.js +1 -1
  110. package/dist/sdk-repl.d.ts +25 -17
  111. package/dist/sdk-repl.js +1 -1
  112. package/dist/sdk-runtime.d.ts +41 -17
  113. package/dist/sdk-runtime.js +1 -1
  114. package/dist/sdk-sandbox.d.ts +17 -3
  115. package/dist/sdk-sandbox.js +1 -1
  116. package/dist/sdk-session.d.ts +8 -7
  117. package/dist/sdk-session.js +1 -1
  118. package/dist/sdk-skills.js +1 -1
  119. package/dist/semantic-worker.js +61 -61
  120. package/dist/types-chunks/{base.d-vopO1rml.d.ts → base.d-COo8E2dk.d.ts} +18 -27
  121. package/dist/types-chunks/{bash-prefix-extractor.d-B2rxNI4L.d.ts → bash-prefix-extractor.d-DQOlA8cy.d.ts} +72 -52
  122. package/dist/types-chunks/{capability-learning.d-CE1tm29C.d.ts → capability-learning.d-lRPgA3Or.d.ts} +1 -1
  123. package/dist/types-chunks/{capsule.d-Y7QRS4J2.d.ts → capsule.d-0zxsgXg_.d.ts} +3 -3
  124. package/dist/types-chunks/{controller.d-BR-UVeUR.d.ts → controller.d-BTtyIIC1.d.ts} +1 -1
  125. package/dist/types-chunks/{controller.d-C5noq5-w.d.ts → controller.d-C7tXUcXo.d.ts} +2 -2
  126. package/dist/types-chunks/{guardrail.d-DqHD-61O.d.ts → guardrail.d-DKTyEHJa.d.ts} +5 -5
  127. package/dist/types-chunks/{history-retrieval.d-CKU8zmt_.d.ts → history-retrieval.d-CHnL99S7.d.ts} +2 -2
  128. package/dist/types-chunks/{public-api.d-D7fXaWW8.d.ts → public-api.d-Dx3L3W4Z.d.ts} +7 -4
  129. package/dist/types-chunks/{repl.d-BYDb14s6.d.ts → repl.d-mO01olIa.d.ts} +5 -5
  130. package/dist/types-chunks/{resolver.d-CwHUwbdE.d.ts → resolver.d-DlXPjeyx.d.ts} +38 -6
  131. package/dist/types-chunks/{review-inbox.d-BSgFewyj.d.ts → review-inbox.d-WDSe1nze.d.ts} +1 -1
  132. package/dist/types-chunks/{run-manager.d-BVJSntpS.d.ts → run-manager.d-DENbbzgR.d.ts} +1 -1
  133. package/dist/types-chunks/{sdk-session-CqEG84oP.d.ts → sdk-session-DYHGXXH4.d.ts} +3 -3
  134. package/dist/types-chunks/{shell-command-sets.d-DqaaBwhU.d.ts → shell-command-sets.d-CjFqS4dp.d.ts} +1 -1
  135. package/dist/types-chunks/{side-query.d-iH0P9ASy.d.ts → side-query.d-j8A3sFv_.d.ts} +2 -2
  136. package/dist/types-chunks/{types.d-rUOjXych.d.ts → types.d-BbZjR0Wr.d.ts} +1 -1
  137. package/dist/types-chunks/{types.d-CaTXAW_Q.d.ts → types.d-BkTIKdH6.d.ts} +2 -2
  138. package/dist/types-chunks/{types.d-C5xQEFcj.d.ts → types.d-DncLrpu_.d.ts} +4 -4
  139. package/dist/types-chunks/{types.d-CK9A9rpP.d.ts → types.d-Xy0f3x4i.d.ts} +9 -0
  140. package/dist/types-chunks/{utils.d-CWUyLiXo.d.ts → utils.d-CnxefMos.d.ts} +6 -6
  141. package/package.json +10 -3
  142. package/public_docs/README.md +130 -0
  143. package/public_docs/configuration/sandbox.md +289 -0
  144. package/public_docs/sdk/embedder-guide.md +6674 -0
  145. package/scripts/kodax-bin.cjs +28 -28
  146. package/scripts/production-env.cjs +25 -25
  147. package/dist/chunks/agent-XXZMXKKA.js +0 -2
  148. package/dist/chunks/argument-completer-KCYDGTQW.js +0 -2
  149. package/dist/chunks/chunk-77PNP27P.js +0 -92
  150. package/dist/chunks/chunk-7QBWHCIZ.js +0 -2
  151. package/dist/chunks/chunk-BHE66SP3.js +0 -123
  152. package/dist/chunks/chunk-BR2OSB2I.js +0 -722
  153. package/dist/chunks/chunk-DSMONSVB.js +0 -407
  154. package/dist/chunks/chunk-Q5VRWSKG.js +0 -418
  155. package/dist/chunks/chunk-XWRPOGJN.js +0 -4
  156. package/dist/chunks/chunk-Y5VIQBT6.js +0 -383
  157. package/dist/chunks/compaction-config-EGS4577X.js +0 -2
  158. package/dist/chunks/dist-ITTXQHRJ.js +0 -2
  159. package/dist/chunks/dist-KFYN3OKD.js +0 -2
  160. package/dist/chunks/host-VAYADIPW.js +0 -2
  161. package/dist/chunks/run-manager-52IJZMZJ.js +0 -2
  162. package/dist/chunks/utils-P7PBSL3R.js +0 -2
  163. package/dist/sandbox-workspace-session.js +0 -1705
@@ -0,0 +1,501 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{a as kn,b as De,c as Le,d as En,e as ge,f as Rn,g as $e,j as Ge,k as An,l as Wn,m as Pn,n as Cn,o as Nn}from"./chunk-CHUPIWIF.js";import{Fc as xn,Ka as U,Ya as gn,_a as yn,ab as H,bb as bn,fb as Be,hb as z,kb as oe,ob as Sn,pb as hn,rb as vn,v as j}from"./chunk-6BVF3HZ7.js";import{a as s}from"./chunk-ONUPGMER.js";import{spawn as fe,spawnSync as J}from"node:child_process";import{createHash as Kr,randomUUID as I}from"node:crypto";import{once as Vn}from"node:events";import{closeSync as Je,constants as he,existsSync as rn,fsyncSync as Vr,lstatSync as we,mkdirSync as Xr,openSync as or,readFileSync as ir,readSync as Jr,readdirSync as tn,realpathSync as N,renameSync as Hr,rmSync as sr,statSync as se,writeSync as zr}from"node:fs";import{copyFile as ar,lstat as Yr,mkdir as G,readFile as ve,realpath as ae,rm as $,rmdir as ii,stat as xe,writeFile as de}from"node:fs/promises";import{createRequire as Zr}from"node:module";import{createServer as Qr}from"node:net";import q from"node:os";import l from"node:path";import{fileURLToPath as Xn,pathToFileURL as dr}from"node:url";import{realpathSync as Or,statSync as Ir}from"node:fs";import Br from"node:path";function je(e){let r=e.code;return r==="ENOENT"||r==="ENOTDIR"}s(je,"isMissingGitTrustPath");function Tn(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}}s(Tn,"normalizeGitSafeDirectoryRootImplementation");function Dr(e){return Tn(e,Or,je)}s(Dr,"normalizeGitSafeDirectoryRoot");function On(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}}s(On,"isRepoBearingGitReadRootImplementation");function Lr(e){return On(e,Ir,Br,je)}s(Lr,"isRepoBearingGitReadRoot");function In(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 a=[],d=new Set;for(let c of i){if(a.length>=8)break;let u=t(c);if(u===void 0)continue;let f=u.toLowerCase();d.has(f)||(d.add(f),a.push(u))}return a}s(In,"windowsGitTrustRootsImplementation");function Bn(e,r,n){return In(e,r,n,Dr,Lr)}s(Bn,"windowsGitTrustRoots");function Dn(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"}s(Dn,"gitConfigEnvKind");function $r(e,r,n,t,o){let i=new Map,a=[],d,c=!1;for(let u=0;u<r;u+=1){if(e[u]!=="--env"||u+1>=r)continue;let f=e[u+1],w=f.indexOf("="),p=(w<0?f:f.slice(0,w)).toLowerCase(),m=n(p);if(m===void 0)continue;c=!0,a.push(u);let g=w<0?"":f.slice(w+1);if(m==="count"){let v=Number.parseInt(g,10);(d!==void 0||!Number.isSafeInteger(v)||v<0||String(v)!==g)&&t(),d=v;continue}let y=Number.parseInt(p.slice(`git_config_${m}_`.length),10),b=i.get(y)??{};(!Number.isSafeInteger(y)||y<0||b[m]!==void 0)&&t(),b[m]=g,i.set(y,b)}return o(i,a,d,c,t)}s($r,"parseGitConfigEnvironmentImplementation");function ye(){throw new Error("ASRT GIT_CONFIG environment has an unexpected shape.")}s(ye,"throwUnexpectedGitConfigShape");function Ln(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 a=[...e].map(([d,c])=>({slot:d,key:c.key,value:c.value}));return{argumentIndices:r,pairs:a,sawAny:t}}s(Ln,"finishParsedGitConfigEnvironment");function $n(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}s($n,"gitSafeDirectoryAssignments");function _n(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 a=o.toUpperCase();if(t.has(a))throw new Error(`Ambiguous ${r} environment variable: ${o}.`);t.add(a),n.push([o,i])}return n}s(_n,"validatedEnvironmentEntries");function Gr(e,r){let n=new Map,t=[],o,i=!1;for(let[u,f]of Object.entries(e)){let w=u.toLowerCase(),p=Dn(w);if(p===void 0){t.push([u,f]);continue}if(i=!0,p==="count"){let y=Number.parseInt(f,10);(o!==void 0||!Number.isSafeInteger(y)||y<0||String(y)!==f)&&ye(),o=y;continue}let m=Number.parseInt(w.slice(`git_config_${p}_`.length),10),g=n.get(m)??{};(!Number.isSafeInteger(m)||m<0||g[p]!==void 0)&&ye(),g[p]=f,n.set(m,g)}let d=Ln(n,[],o,i,ye).pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=Object.fromEntries(t);for(let u of $n(r,d)){let f=u.indexOf("=");c[u.slice(0,f)]=u.slice(f+1)}return c}s(Gr,"rewriteWindowsGitSafeDirectoryEnvironment");function Gn(e,r,n){let t=_n(e,"ASRT-controlled"),o=_n(r,"Windows target"),i=new Map;for(let a of t)i.set(a[0].toUpperCase(),a);for(let a of o){let d=a[0].toUpperCase();i.has(d)&&d!=="PATH"&&d!=="PATHEXT"||i.set(d,a)}return Gr(Object.fromEntries(i.values()),n)}s(Gn,"mergeWindowsSandboxTargetEnvironment");function jr(e,r,n,t){let o=new Set(n.argumentIndices),i=[],a=!1;for(let d=0;d<e.length;d+=1)if(o.has(d)){if(!a){for(let c of t)i.push("--env",c);a=!0}d+=1}else i.push(e[d]);return n.sawAny||i.splice(r,0,...t.flatMap(d=>["--env",d])),i}s(jr,"replaceGitConfigEnvironment");function Ur(e,r,n,t,o){let i=e.lastIndexOf("--");if(i<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let a=n(e,i),d=a.pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),c=t(r,d);return o(e,i,a,c)}s(Ur,"rewriteWindowsGitSafeDirectoryArgvImplementation");function jn(){return String.raw`
3
+ const isMissingGitTrustPath = ${je.toString()};
4
+ const normalizeGitSafeDirectoryRootImplementation = ${Tn.toString()};
5
+ const normalizeGitSafeDirectoryRoot = (root) => (
6
+ normalizeGitSafeDirectoryRootImplementation(root, realpathSync, isMissingGitTrustPath)
7
+ );
8
+ const isRepoBearingGitReadRootImplementation = ${On.toString()};
9
+ const isRepoBearingGitReadRoot = (root) => (
10
+ isRepoBearingGitReadRootImplementation(root, statSync, path, isMissingGitTrustPath)
11
+ );
12
+ const windowsGitTrustRootsImplementation = ${In.toString()};
13
+ const windowsGitTrustRoots = (input) => {
14
+ const filesystem = (input.config && input.config.filesystem) || {};
15
+ return windowsGitTrustRootsImplementation(
16
+ input.cwd,
17
+ filesystem.allowWrite,
18
+ filesystem.allowRead,
19
+ normalizeGitSafeDirectoryRoot,
20
+ isRepoBearingGitReadRoot,
21
+ );
22
+ };
23
+ const gitConfigEnvKind = ${Dn.toString()};
24
+ const throwUnexpectedGitConfigShape = ${ye.toString()};
25
+ const finishParsedGitConfigEnvironment = ${Ln.toString()};
26
+ const parseGitConfigEnvironmentImplementation = ${$r.toString()};
27
+ const parseGitConfigEnvironment = (argv, separator) => (
28
+ parseGitConfigEnvironmentImplementation(
29
+ argv,
30
+ separator,
31
+ gitConfigEnvKind,
32
+ throwUnexpectedGitConfigShape,
33
+ finishParsedGitConfigEnvironment,
34
+ )
35
+ );
36
+ const gitSafeDirectoryAssignments = ${$n.toString()};
37
+ const replaceGitConfigEnvironment = ${jr.toString()};
38
+ const rewriteWindowsGitSafeDirectoryArgvImplementation = ${Ur.toString()};
39
+ const rewriteWindowsGitSafeDirectoryArgv = (argv, trustRoots) => (
40
+ rewriteWindowsGitSafeDirectoryArgvImplementation(
41
+ argv,
42
+ trustRoots,
43
+ parseGitConfigEnvironment,
44
+ gitSafeDirectoryAssignments,
45
+ replaceGitConfigEnvironment,
46
+ )
47
+ );
48
+ `}s(jn,"windowsGitBrokerHelpersSource");import{createHash as Ue}from"node:crypto";import Un from"node:path";var D=7;function Mn(e){return{...e,filesystem:{...e.filesystem,disabled:!0,denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]}}}s(Mn,"asrtWindowsNetworkOnlyConfig");function Mr(e){return Un.win32.resolve(e.replaceAll("/","\\")).toLowerCase()}s(Mr,"normalizePolicyPath");function be(e){return[...new Set(e.map(Mr))].sort()}s(be,"normalizedPolicyPaths");function Fr(e){if(e.generation.trim()==="")throw new Error("Windows sandbox v2 generation is empty.");let r=JSON.stringify({version:2,generation:e.generation,allowRead:be(e.allowRead),allowWrite:be(e.allowWrite),denyRead:be(e.denyRead),denyWrite:be(e.denyWrite)});return Ue("sha256").update(r,"utf8").digest("hex")}s(Fr,"windowsSandboxV2PolicyFingerprint");function qr(e){if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("Invalid Windows sandbox v2 policy fingerprint.");let r=Ue("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("-")}`}s(qr,"windowsSandboxV2PolicyCapabilitySid");function Fn(e){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 Ue("sha256").update(JSON.stringify({version:D,sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtSha256:e.asrtSha256.toLowerCase(),shellSha256:e.shellSha256.toLowerCase()}),"utf8").digest("hex")}s(Fn,"windowsSandboxV2Generation");function qn(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:D,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 a=Buffer.allocUnsafe(4+i.byteLength);return a.writeUInt32LE(i.byteLength,0),i.copy(a,4),a}s(qn,"encodeWindowsSandboxV2Bootstrap");function Me(e){let r=Buffer.allocUnsafe(5);return r.writeUInt32LE(1,0),r[4]=e==="close-stdin"?5:10,r}s(Me,"encodeWindowsSandboxV2ControlFrame");function Kn(e){if(e.targetArgv.length===0||e.targetArgv[0]?.trim()==="")throw new Error("Windows sandbox v2 target argv is empty.");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(t=>{let o=t.toLowerCase();return o==="--env"||o.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(!Un.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(!/^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=Fr({generation:e.generation,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite}),n=qr(r);if(e.sandboxGroupSid===e.sandboxUserSid||e.sandboxGroupSid===n)throw new Error("Windows sandbox v2 group SID must be an independent account group.");return{protocol:D,generation:e.generation,sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtExecutable:e.asrtInvocation.executable,asrtPrefixArgs:e.asrtInvocation.prefixArgs,targetArgv:e.targetArgv,cwd:e.cwd,policyFingerprint:r,policyCapabilitySid:n,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}}s(Kn,"createWindowsSandboxV2RunRequest");function M(e={}){let r=Nn(import.meta.url,"shellSandbox",D,e);return{path:r.path,sha256:r.entry.sha256}}s(M,"resolveWindowsSandboxV2Executable");var ne="0.0.65",et="Windows ASRT filesystem/workspace-session execution is retired; use the native v2 shell sandbox.";function nt(){if(process.platform==="win32")throw new Error(et)}s(nt,"rejectWindowsLegacyAsrtFilesystemBackend");var{DEFAULT_WINDOWS_PROXY_PORT_RANGE:rt,SandboxManager:Fe,getSrtWinPath:tt,getWindowsSandboxUserStatus:F,installWindowsSandbox:Jn,resolveSrtWin:ot,uninstallWindowsSandbox:it}=await import("@anthropic-ai/sandbox-runtime"),He=1024*1024,We=16*1024;function ze(e){e.failed=!0,!(e.references===0||e.referencesDrained!==void 0)&&(e.referencesDrained=new Promise(r=>{e.markReferencesDrained=r}))}s(ze,"retireWindowsNetworkBrokerState");function st(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])]}}}s(st,"withAdditionalWorkspaceRoots");function cr(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:6,asrtVersion:ne,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}}s(cr,"sandboxRuntimeCapability");var pe=1048576,me=12e4,at=3e4,dt=1e3,re=new Map,on=Zr(import.meta.url),lr=process.env.KODAX_BUNDLED==="true"?void 0:dr(on.resolve("@anthropic-ai/sandbox-runtime")).href,ct=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),lt=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),ut=[".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"],Hn=["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"],ur=["native-text-state-v1","runtime","processes","learned"],fr=new Set,zn=JSON.stringify(yn),qe=JSON.stringify(gn),ft=String.raw`
49
+ const { spawn } = require('node:child_process');
50
+ const { writeSync } = require('node:fs');
51
+ const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
52
+ const childEnv = { ...process.env };
53
+ for (const name of Object.keys(childEnv)) {
54
+ if (name.toLowerCase() === 'electron_run_as_node') delete childEnv[name];
55
+ }
56
+ if (input.electronRunAsNode === true) childEnv.ELECTRON_RUN_AS_NODE = '1';
57
+ const child = spawn(input.command, input.args, {
58
+ cwd: input.cwd,
59
+ env: childEnv,
60
+ shell: false,
61
+ stdio: ['inherit', 'inherit', 'pipe'],
62
+ windowsHide: true,
63
+ windowsVerbatimArguments: input.windowsVerbatimArguments === true,
64
+ });
65
+ const stop = (signal) => child.kill(signal);
66
+ process.once('SIGINT', () => stop('SIGINT'));
67
+ process.once('SIGTERM', () => stop('SIGTERM'));
68
+ child.once('spawn', () => {
69
+ writeSync(2, input.targetStartedMarker);
70
+ child.stderr.pipe(process.stderr);
71
+ });
72
+ child.once('error', (error) => {
73
+ process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
74
+ process.exitCode = 1;
75
+ });
76
+ child.once('exit', (code, signal) => {
77
+ process.exitCode = signal ? 1 : code ?? 1;
78
+ });
79
+ `,wt="eval(Buffer.from(process.argv[1],'base64').toString('utf8'))",pt=JSON.stringify(wt),mt=Buffer.from(ft,"utf8").toString("base64"),gt=JSON.stringify(mt),yt=jn(),bt=String.raw`
80
+ const { spawn } = require('node:child_process');
81
+ const { createWriteStream } = require('node:fs');
82
+ const { readFile, rm } = require('node:fs/promises');
83
+ const readline = require('node:readline');
84
+ const input = readline.createInterface({ input: process.stdin, terminal: false });
85
+ input.once('line', async (gate) => {
86
+ input.close();
87
+ if (gate !== 'go') { process.exitCode = 125; return; }
88
+ const launchFile = process.argv[1];
89
+ const launch = JSON.parse(await readFile(launchFile, 'utf8'));
90
+ await rm(launchFile, { force: true });
91
+ const child = spawn(launch.command, launch.args, {
92
+ cwd: launch.cwd,
93
+ env: launch.env,
94
+ shell: false,
95
+ stdio: launch.controlPipe === true
96
+ ? ['pipe', 'pipe', 'pipe', 'pipe']
97
+ : ['pipe', 'pipe', 'pipe'],
98
+ windowsHide: true,
99
+ });
100
+ process.stdin.pipe(child.stdin);
101
+ child.stdout.pipe(process.stdout);
102
+ child.stderr.pipe(process.stderr);
103
+ if (launch.controlPipe === true && child.stdio[3]) {
104
+ child.stdio[3].pipe(createWriteStream(null, { fd: 3, autoClose: false }));
105
+ }
106
+ child.once('error', (error) => {
107
+ process.stderr.write(String(error?.message ?? error));
108
+ process.exitCode = 1;
109
+ });
110
+ child.once('close', (code) => { process.exitCode = Number.isInteger(code) ? code : 1; });
111
+ });
112
+ `,wr=String.raw`
113
+ import { spawn } from 'node:child_process';
114
+ import { randomUUID } from 'node:crypto';
115
+ import { realpathSync, statSync, writeSync } from 'node:fs';
116
+ import path from 'node:path';
117
+ let SandboxManager;
118
+ const request = await new Promise((resolve, reject) => {
119
+ const chunks = [];
120
+ let bytes = 0;
121
+ process.stdin.on('data', (chunk) => {
122
+ bytes += chunk.byteLength;
123
+ if (bytes > ${He}) {
124
+ reject(new Error('Sandbox broker request exceeded its byte limit.'));
125
+ process.stdin.destroy();
126
+ return;
127
+ }
128
+ chunks.push(Buffer.from(chunk));
129
+ });
130
+ process.stdin.once('error', reject);
131
+ process.stdin.once('end', () => {
132
+ try { resolve(JSON.parse(Buffer.concat(chunks).toString('utf8'))); }
133
+ catch (error) { reject(error); }
134
+ });
135
+ });
136
+ if (typeof request.controlInvocationId !== 'string' || request.controlInvocationId === '') {
137
+ throw new Error('Sandbox broker request omitted its control invocation identity.');
138
+ }
139
+ const targetStartedMarker = request.targetStartedMarker
140
+ ?? '\u0000KODAX_ASRT_TARGET_STARTED:' + randomUUID() + '\u0000\n';
141
+ const endpoints = new Set(request.endpoints.map((item) => item.host.toLowerCase() + ':' + item.port));
142
+ const callback = request.allowAllNetwork === true
143
+ ? async () => true
144
+ : request.endpoints.length === 0
145
+ ? undefined
146
+ : async ({ host, port }) => endpoints.has(host.toLowerCase() + ':' + port);
147
+ ${yt}
148
+ const withWindowsChildEnvironment = (argv, environment, gitTrustRoots) => {
149
+ const separator = argv.lastIndexOf('--');
150
+ if (separator < 0) throw new Error('ASRT Windows wrapper omitted its child separator.');
151
+ const requested = [];
152
+ const requestedNames = new Set();
153
+ for (const [name, value] of Object.entries(environment ?? {})) {
154
+ if (value === undefined) continue;
155
+ if (!name || name.includes('=') || name.includes('\0') || value.includes('\0')) {
156
+ throw new Error('Invalid environment entry for ASRT Windows child.');
157
+ }
158
+ const normalized = name.toLowerCase();
159
+ if (requestedNames.has(normalized)) {
160
+ throw new Error('Ambiguous Windows child environment variable: ' + name + '.');
161
+ }
162
+ requestedNames.add(normalized);
163
+ requested.push([name, value]);
164
+ }
165
+ const requestedOverrides = new Set(requested.flatMap(([name]) => (
166
+ ['path', 'pathext'].includes(name.toLowerCase()) ? [name.toLowerCase()] : []
167
+ )));
168
+ const controlled = new Set();
169
+ const prefix = [];
170
+ for (let index = 0; index < separator; index += 1) {
171
+ if (argv[index] !== '--env' || index + 1 >= separator) {
172
+ prefix.push(argv[index]);
173
+ continue;
174
+ }
175
+ const assignment = argv[index + 1];
176
+ const name = assignment.split('=', 1)[0]?.toLowerCase();
177
+ if (name) controlled.add(name);
178
+ if (!name || !requestedOverrides.has(name)) prefix.push(argv[index], assignment);
179
+ index += 1;
180
+ }
181
+ const injected = [];
182
+ for (const [name, value] of requested) {
183
+ const normalized = name.toLowerCase();
184
+ if (controlled.has(normalized) && normalized !== 'path' && normalized !== 'pathext') continue;
185
+ injected.push('--env', name + '=' + value);
186
+ }
187
+ const result = [...prefix, ...injected, ...argv.slice(separator)];
188
+ const withGitTrust = rewriteWindowsGitSafeDirectoryArgv(result, gitTrustRoots);
189
+ const estimate = withGitTrust.reduce((size, value) => size + value.length + 3, 0);
190
+ if (estimate > 30000) throw new Error('ASRT Windows child environment exceeds the CreateProcess command-line limit.');
191
+ return withGitTrust;
192
+ };
193
+ const writeObservation = (observation) => {
194
+ const payload = Buffer.from(JSON.stringify({
195
+ version: 1,
196
+ invocationId: request.controlInvocationId,
197
+ observation,
198
+ }) + '\n', 'utf8');
199
+ if (payload.byteLength > ${We}) {
200
+ throw new Error('Sandbox broker control frame exceeded its byte limit.');
201
+ }
202
+ if (writeSync(3, payload) !== payload.byteLength) {
203
+ throw new Error('Sandbox broker control frame was only partially written.');
204
+ }
205
+ };
206
+ const waitForTarget = (target, observation, onTargetStarted) => {
207
+ const marker = Buffer.from(targetStartedMarker, 'utf8');
208
+ let pending = Buffer.alloc(0);
209
+ let diagnostic = Buffer.alloc(0);
210
+ let processError;
211
+ let wrapperSpawned = false;
212
+ let targetStarted = false;
213
+ return new Promise((resolve, reject) => {
214
+ let settled = false;
215
+ target.once('spawn', () => {
216
+ wrapperSpawned = true;
217
+ });
218
+ const finish = (result) => {
219
+ if (settled) return;
220
+ settled = true;
221
+ resolve(result);
222
+ };
223
+ target.stderr.on('data', (chunk) => {
224
+ if (targetStarted) {
225
+ process.stderr.write(chunk);
226
+ return;
227
+ }
228
+ pending = Buffer.concat([pending, Buffer.from(chunk)]);
229
+ const markerOffset = pending.indexOf(marker);
230
+ if (markerOffset >= 0) {
231
+ targetStarted = true;
232
+ onTargetStarted();
233
+ const suffix = pending.subarray(markerOffset + marker.length);
234
+ pending = Buffer.alloc(0);
235
+ diagnostic = Buffer.alloc(0);
236
+ try {
237
+ writeObservation(observation);
238
+ } catch (error) {
239
+ processError = error instanceof Error ? error.message : String(error);
240
+ target.kill('SIGTERM');
241
+ }
242
+ if (suffix.length > 0) process.stderr.write(suffix);
243
+ return;
244
+ }
245
+ const retained = Math.max(0, marker.length - 1);
246
+ if (pending.length > retained) {
247
+ diagnostic = Buffer.concat([
248
+ diagnostic,
249
+ pending.subarray(0, pending.length - retained),
250
+ ]).subarray(-65536);
251
+ pending = pending.subarray(pending.length - retained);
252
+ }
253
+ });
254
+ target.once('error', (error) => {
255
+ processError = error instanceof Error ? error.message : String(error);
256
+ });
257
+ target.once('close', (exitCode, signal) => {
258
+ const preTarget = Buffer.concat([diagnostic, pending]).toString('utf8').trim();
259
+ finish({
260
+ exitCode: signal ? 1 : exitCode ?? 1,
261
+ targetStarted,
262
+ spawnFailedBeforeSpawn: processError !== undefined && !wrapperSpawned,
263
+ controlFailure: targetStarted ? processError : undefined,
264
+ diagnostic: preTarget || processError || undefined,
265
+ });
266
+ });
267
+ });
268
+ };
269
+ let child;
270
+ let targetStarted = false;
271
+ let normalFallbackAttempted = false;
272
+ let normalFallbackSpawned = false;
273
+ const runDirect = async () => {
274
+ const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
275
+ const directArgs = internalElectronNode
276
+ ? ['--import', ${zn}, ...request.args]
277
+ : request.args;
278
+ const directEnv = internalElectronNode
279
+ ? { ...request.env, [${qe}]: '1' }
280
+ : request.env;
281
+ child = spawn(request.command, directArgs, {
282
+ cwd: request.cwd,
283
+ env: directEnv,
284
+ shell: false,
285
+ stdio: 'inherit',
286
+ windowsHide: true,
287
+ windowsVerbatimArguments: request.windowsVerbatimArguments === true,
288
+ });
289
+ return await new Promise((resolve, reject) => {
290
+ child.once('spawn', () => { normalFallbackSpawned = true; });
291
+ child.once('error', reject);
292
+ child.once('exit', (exitCode, signal) => resolve(signal ? 1 : exitCode ?? 1));
293
+ });
294
+ };
295
+ const runNormalFallback = async () => {
296
+ if (
297
+ request.fallbackToNormalExecution !== true
298
+ || targetStarted
299
+ || normalFallbackAttempted
300
+ ) return false;
301
+ normalFallbackAttempted = true;
302
+ try {
303
+ process.exitCode = await runDirect();
304
+ writeObservation({
305
+ version: 1,
306
+ state: 'fallback',
307
+ reason: 'backend_failed',
308
+ execution: 'normal_permission_policy',
309
+ });
310
+ } catch (error) {
311
+ if (!normalFallbackSpawned) {
312
+ writeObservation({
313
+ version: 1,
314
+ state: 'not_started',
315
+ diagnostic: error instanceof Error ? error.message : String(error),
316
+ });
317
+ }
318
+ throw error;
319
+ }
320
+ return true;
321
+ };
322
+ try {
323
+ if (request.wrappedInvocation) {
324
+ const wrapped = request.wrappedInvocation;
325
+ child = spawn(wrapped.executable, wrapped.args, {
326
+ cwd: request.cwd,
327
+ env: wrapped.env,
328
+ shell: wrapped.shell,
329
+ stdio: ['inherit', 'inherit', 'pipe'],
330
+ windowsHide: true,
331
+ });
332
+ const result = await waitForTarget(child, {
333
+ version: 1,
334
+ state: 'applied',
335
+ backend: request.observationBackend ?? 'unsupported',
336
+ policyId: 'kodax-workspace-shell-v1',
337
+ }, () => { targetStarted = true; });
338
+ targetStarted = result.targetStarted;
339
+ if (result.controlFailure) {
340
+ process.stderr.write(result.controlFailure + '\n');
341
+ process.exitCode = 125;
342
+ } else {
343
+ const fellBack = result.spawnFailedBeforeSpawn
344
+ ? await runNormalFallback()
345
+ : false;
346
+ if (!targetStarted && !fellBack) {
347
+ if (result.spawnFailedBeforeSpawn) {
348
+ writeObservation({
349
+ version: 1,
350
+ state: 'not_started',
351
+ diagnostic: result.diagnostic,
352
+ });
353
+ }
354
+ process.stderr.write((result.diagnostic || 'Sandbox target launch could not be attested.') + '\n');
355
+ }
356
+ if (!fellBack) {
357
+ process.exitCode = targetStarted ? result.exitCode : result.spawnFailedBeforeSpawn ? 1 : 125;
358
+ }
359
+ }
360
+ } else {
361
+ ({ SandboxManager } = await import(process.argv[1]));
362
+ const bootstrap = request.bootstrapCommand ?? 'node';
363
+ const bootstrapIsAbsolute = /^(?:[A-Za-z]:[\\/]|\\\\)/.test(bootstrap);
364
+ const bootstrapIsElectronNode = bootstrap === process.execPath
365
+ && process.versions.electron !== undefined;
366
+ const config = process.platform === 'win32' && bootstrapIsAbsolute
367
+ ? {
368
+ ...request.config,
369
+ filesystem: {
370
+ ...request.config.filesystem,
371
+ allowRead: [...new Set([
372
+ ...request.config.filesystem.allowRead,
373
+ bootstrap,
374
+ path.dirname(bootstrap),
375
+ ])],
376
+ },
377
+ }
378
+ : request.config;
379
+ await SandboxManager.initialize(config, callback);
380
+ const quote = (value) => process.platform === 'win32'
381
+ ? '"' + value.replaceAll('"', '""') + '"'
382
+ : "'" + value.replaceAll("'", "'\"'\"'") + "'";
383
+ const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
384
+ const childArgs = internalElectronNode
385
+ ? ['--import', ${zn}, ...request.args]
386
+ : request.args;
387
+ const command = [
388
+ quote(bootstrap),
389
+ '-e',
390
+ quote(${pt}),
391
+ ${gt},
392
+ Buffer.from(JSON.stringify({
393
+ command: request.command,
394
+ args: childArgs,
395
+ windowsVerbatimArguments: request.windowsVerbatimArguments === true,
396
+ cwd: request.cwd,
397
+ targetStartedMarker,
398
+ electronRunAsNode: internalElectronNode,
399
+ }), 'utf8').toString('base64'),
400
+ ].join(' ');
401
+ if (process.platform === 'win32') {
402
+ const wrapped = await SandboxManager.wrapWithSandboxArgv(command, 'cmd', undefined, undefined, request.cwd);
403
+ const requestedEnv = internalElectronNode || bootstrapIsElectronNode
404
+ ? { ...request.env, [${qe}]: '1' }
405
+ : request.env;
406
+ const childArgv = withWindowsChildEnvironment(wrapped.argv, requestedEnv, windowsGitTrustRoots(request));
407
+ child = spawn(childArgv[0], childArgv.slice(1), {
408
+ cwd: request.cwd,
409
+ env: wrapped.env,
410
+ shell: false,
411
+ stdio: ['inherit', 'inherit', 'pipe'],
412
+ windowsHide: true,
413
+ });
414
+ } else {
415
+ const wrapped = await SandboxManager.wrapWithSandbox(command);
416
+ const childEnv = internalElectronNode || bootstrapIsElectronNode
417
+ ? { ...request.env, [${qe}]: '1' }
418
+ : request.env;
419
+ child = spawn(wrapped, {
420
+ cwd: request.cwd,
421
+ env: childEnv,
422
+ shell: true,
423
+ stdio: ['inherit', 'inherit', 'pipe'],
424
+ });
425
+ }
426
+ const stop = () => child?.kill('SIGTERM');
427
+ process.once('SIGINT', stop);
428
+ process.once('SIGTERM', stop);
429
+ const result = await waitForTarget(child, {
430
+ version: 1,
431
+ state: 'applied',
432
+ backend: request.observationBackend ?? 'unsupported',
433
+ policyId: 'kodax-workspace-shell-v1',
434
+ }, () => { targetStarted = true; });
435
+ targetStarted = result.targetStarted;
436
+ try { SandboxManager.cleanupAfterCommand(); } catch {}
437
+ await SandboxManager.reset().catch(() => undefined);
438
+ if (result.controlFailure) {
439
+ process.stderr.write(result.controlFailure + '\n');
440
+ process.exitCode = 125;
441
+ } else {
442
+ const fellBack = result.spawnFailedBeforeSpawn
443
+ ? await runNormalFallback()
444
+ : false;
445
+ if (!targetStarted && !fellBack) {
446
+ if (result.spawnFailedBeforeSpawn) {
447
+ writeObservation({
448
+ version: 1,
449
+ state: 'not_started',
450
+ diagnostic: result.diagnostic,
451
+ });
452
+ }
453
+ process.stderr.write((result.diagnostic || 'Sandbox target launch could not be attested.') + '\n');
454
+ }
455
+ if (!fellBack) {
456
+ process.exitCode = targetStarted ? result.exitCode : result.spawnFailedBeforeSpawn ? 1 : 125;
457
+ }
458
+ }
459
+ }
460
+ } catch (error) {
461
+ await SandboxManager?.reset().catch(() => undefined);
462
+ if (
463
+ request.fallbackToNormalExecution === true
464
+ && !targetStarted
465
+ && !normalFallbackAttempted
466
+ && child === undefined
467
+ ) {
468
+ try {
469
+ await runNormalFallback();
470
+ } catch (fallbackError) {
471
+ process.stderr.write((fallbackError instanceof Error ? fallbackError.message : String(fallbackError)) + '\n');
472
+ process.exitCode = 1;
473
+ }
474
+ } else {
475
+ if (!targetStarted && child === undefined) {
476
+ try {
477
+ writeObservation({
478
+ version: 1,
479
+ state: 'not_started',
480
+ diagnostic: error instanceof Error ? error.message : String(error),
481
+ });
482
+ } catch {}
483
+ }
484
+ process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
485
+ process.exitCode = targetStarted ? 125 : 1;
486
+ }
487
+ }
488
+ `,Y,Se=0,St=3e4,ie,ke;function L(e){return e instanceof Error?e.message:String(e)}s(L,"errorText");function ce(e,...r){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&r.includes(e.code)}s(ce,"isFileSystemError");var ht={x64:"x64",arm64:"arm64"};function vt(e){let r=ht[process.arch];if(r===void 0)return;let n=l.join(e,"vendor","srt-win",r,"srt-win.exe");return rn(n)?n:void 0}s(vt,"bundledSrtWinSidecarPath");function xt(e=l.dirname(process.execPath)){if(process.env.KODAX_BUNDLED==="true"){let r=vt(e);if(r!==void 0)return r}return tt()}s(xt,"resolveSrtWinSourcePath");async function Pe(e=[]){if(ie===void 0){let n=(async()=>{let t=Pn(import.meta.url,xt(),ne,{untrustedWriteRoots:e}),o=l.dirname(t.path);await G(Ne(),{recursive:!0,mode:448});let i={path:t.path,directory:o,sha256:t.sha256,developmentTrustRoots:t.developmentTrustRoots,srtWin:ot({path:t.path})};return ke=i,i})();ie=n,n.catch(()=>{ie===n&&(ie=void 0,ke=void 0)})}let r=await ie;return Cn(r.developmentTrustRoots,e),r}s(Pe,"prepareWindowsSandboxRunner");function Ce(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(ke===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return ke}s(Ce,"requirePreparedWindowsRunner");var Ke,kt=35e3,le="[acl_cleanup_unconfirmed]",te=class extends Error{static{s(this,"WindowsSandboxAclAdmissionError")}recoveryAction;constructor(r,n){super(r,n),this.name="WindowsSandboxAclAdmissionError",this.recoveryAction=n?.recoveryAction}},Ye=class extends te{static{s(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 Et(e){return/^windows-boot-\d+$/.test(e)}s(Et,"isCanonicalWindowsBootIdentity");function Rt(e){return e.diagnostics.some(r=>r.startsWith(le))}s(Rt,"doctorHasWindowsSandboxAclCleanupBlock");function pr(){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")}s(pr,"windowsSandboxAclPoisonDirectory");function Ne(){return l.dirname(pr())}s(Ne,"windowsSandboxAclCoordinationDirectory");function At(e=U()){return l.join(l.resolve(e),"sandbox-runtime","acl-poison")}s(At,"legacyWindowsSandboxAclPoisonDirectory");function Yn(){return l.join(Ne(),"windows-v2-setup.lock")}s(Yn,"windowsSandboxV2SetupLockFile");var mr="[windows_v2_acl_cutover_required]",sn="[acl_guards_missing]",gr="[legacy_acl_state_ignored]",Wt=4096;function Pt(e){let r=e.filter(n=>!n.startsWith(gr));return r.length>0&&r.every(n=>n.startsWith(sn))}s(Pt,"hasOnlyRepairableWindowsAclGuardDiagnostics");var Ve;function yr(){if(Ve!==void 0)return Ve;let e=M(),r=J(e.path,["__current-user-sid"],{env:B(),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 Ve=n,n}s(yr,"windowsSandboxV2HostUserSid");function br(){return l.join(Ne(),"windows-v2-cutover.json")}s(br,"windowsSandboxV2CutoverMarkerFile");function Ct(e){if(Buffer.byteLength(e,"utf8")>Wt)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(",")!=="hostUserSid,protocol,sandboxGroupSid,sandboxUserSid,version"||n.version!==3||n.protocol!==D||typeof n.hostUserSid!="string"||typeof n.sandboxUserSid!="string"||typeof n.sandboxGroupSid!="string"||!/^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:3,protocol:D,hostUserSid:n.hostUserSid,sandboxUserSid:n.sandboxUserSid,sandboxGroupSid:n.sandboxGroupSid}}s(Ct,"parseWindowsSandboxV2CutoverMarker");function Nt(){let e=br(),r;try{r=we(e)}catch(n){if(ce(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 Ct(ir(e,"utf8"))}s(Nt,"readWindowsSandboxV2CutoverMarker");function Q(e){return new Error(`${mr} ${e}. Run "kodax sandbox setup" to rotate the legacy sandbox account SID and activate Windows v2.`)}s(Q,"windowsSandboxV2CutoverError");function _e(e){let r;try{r=Nt()}catch(n){throw Q(`The recorded migration state is invalid: ${L(n)}`)}if(r===void 0)throw Q("The sandbox account has not completed the Windows v2 ACL cutover");if(e.sid!==r.sandboxUserSid||e.groupSid!==r.sandboxGroupSid)throw Q("The installed sandbox account identity does not match the recorded v2 generation");if(yr()!==r.hostUserSid)throw Q("Windows v2 was activated by another host user; machine-wide ACL coordination cannot be shared safely");return r}s(_e,"assertWindowsSandboxV2Cutover");function _t(e){let r=br();Xr(l.dirname(r),{recursive:!0,mode:448});let n=`${r}.${process.pid}.${I()}.tmp`,t=Buffer.from(JSON.stringify(e),"utf8"),o;try{o=or(n,he.O_CREAT|he.O_EXCL|he.O_WRONLY,384);let i=0;for(;i<t.length;){let d=zr(o,t,i,t.length-i);if(d===0)throw new Error("Windows v2 cutover marker write made no progress.");i+=d}Vr(o);let a=o;o=void 0,Je(a),Hr(n,r)}finally{o!==void 0&&Je(o),sr(n,{force:!0})}}s(_t,"writeWindowsSandboxV2CutoverMarker");function Tt(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"||!Et(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)}:{}}}}}s(Tt,"parseWindowsSandboxAclPoisonOwner");function Sr(e=U()){return[...new Set([pr(),At(e)])].flatMap(n=>{let t;try{t=tn(n)}catch(o){if(ce(o,"ENOENT"))return[];throw o}return t.filter(o=>o.endsWith(".json")).map(o=>l.join(n,o))})}s(Sr,"listWindowsSandboxAclPoisonFiles");function Zn(e=U()){return Sr(e).map(r=>{try{let n=we(r);if(!n.isFile()||n.isSymbolicLink())throw new Error("Windows sandbox ACL poison marker is not a regular file.");let t=Tt(ir(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 Ye(r,n)}})}s(Zn,"readWindowsSandboxAclPoisonOwners");function Ot(){let e=process.env.ProgramFiles??"C:\\Program Files",r=l.join(e,"PowerShell","7","pwsh.exe");return rn(r)?r:l.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}s(Ot,"windowsAclPowerShellExecutable");function Te(){if(process.platform!=="win32")return;if(Ke!==void 0)return Ke??void 0;let e=String.raw`
489
+ # KodaXWindowsBootIdentity-v1
490
+ $boot = (Get-CimInstance Win32_OperatingSystem -ErrorAction Stop).LastBootUpTime
491
+ [Console]::Out.Write($boot.ToUniversalTime().Ticks.ToString([Globalization.CultureInfo]::InvariantCulture))
492
+ `,r=J(Ot(),["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),n=r.status===0?r.stdout.trim():"",t=/^\d+$/.test(n)?`windows-boot-${n}`:void 0;return Ke=t??null,t}s(Te,"readWindowsBootIdentity");function gi(){return Te()}s(gi,"readWindowsSandboxBootIdentity");function It(e,r=Te()){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"})}s(It,"persistentWindowsSandboxAclPoisonError");function Bt(e){if(e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let r=Be(e.holderPid);if(r!==void 0)return r===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(n){return ce(n,"ESRCH")?"stale":"unknown"}}s(Bt,"windowsSandboxAclOwnerLiveness");async function Qn(e){try{let r=Ce(),n=F({srtWin:r.srtWin});return n.sid!==void 0&&n.sid!==e?!1:!await vn(e,{executable:r.srtWin.exe,prependArgs:r.srtWin.prependArgs})}catch(r){return j({source:"runtime:sandbox-setup",level:"warn",message:"Windows sandbox account process inspection failed; account rotation remains blocked.",detail:r}),!1}}s(Qn,"windowsSandboxSidIsIdle");async function hr(e=3e4){let r=Ce(),n=await oo({command:r.srtWin.exe,args:[...r.srtWin.prependArgs,"acl","recover","--json"],env:B(),cwd:r.directory,controlPipe:!1},await _r()),t,o,i=!1,a;try{if(t=fe(n.command,[...n.args],{cwd:r.directory,env:n.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),z(t),t.pid===void 0)throw new Error("Windows ACL recovery gate did not expose a PID.");let f=Ie(t,void 0,Math.max(1,Math.min(3e4,e)),1024*1024,!0);f.catch(()=>{}),o=await Sn(t.pid),i=!0,await io(t,!0),a=await f,await o.drained}catch(f){let w=[f];if(t!==void 0)try{i||await so(t),o!==void 0?(await hn(o.jobName),await o.drained):await oe(t)}catch(p){w.push(p)}throw w.length===1?f:new AggregateError(w,"Windows sandbox ACL recovery helper cleanup failed.")}finally{await $(n.gateFile,{force:!0})}let d=a.stderr.trim(),c;try{c=JSON.parse(a.stdout.trim())}catch(f){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(a.exitCode)}): ${d||"(empty stderr)"}.`,{cause:f})}let u=typeof c=="object"&&c!==null?c:void 0;if(a.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(a.exitCode)}): ${d||"(empty stderr)"}.`)}s(hr,"recoverWindowsSandboxAcls");function Dt(e,r=Te()){return It(e.map(({owner:n})=>n),r)}s(Dt,"windowsSandboxAclPoisonSnapshotError");async function Lt(){let e=Zn();if(e.length===0)return;let r=Te();if(r!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==r)){await hr();for(let t of e)sr(t.file,{force:!0});if(Zn().length>0)throw new Error("Legacy Windows sandbox recovery tickets remained after ACL recovery.");return}return e.every(({owner:t})=>Bt(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"}):Dt(e,r)}s(Lt,"windowsSandboxAclSetupBlockWithLock");function $t(e,r){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(n=>!n.startsWith(le)),`${le} ${r.message}`]}}s($t,"withWindowsSandboxAclSetupBlock");async function Gt(){let[e,r]=rt;for(let n=0;n<5;n+=1){let t=Qr();t.listen(0,"127.0.0.1"),await Vn(t,"listening");let o=t.address();if(typeof o=="object"&&o!==null&&(o.port<e||o.port>r))return{server:t,target:`127.0.0.1:${o.port}`};let i=Vn(t,"close");t.close(),await i}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${r}].`)}s(Gt,"bindWindowsWfpProbe");function er(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}s(er,"windowsRunnerFailureCode");function jt(e){return ce(e,"ETIMEDOUT")?"wfp_probe_timeout":ce(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}s(jt,"windowsRunnerSpawnFailureCode");async function vr(e){let{server:r,target:n}=await Gt();try{let t=J(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(`[${jt(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let i;try{i=JSON.parse((t.stdout??"").trim())}catch{let a=t.status===null?"wfp_probe_timeout":er(o);throw new Error(`[${a}] 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(`[${er(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()}}s(vr,"verifyPreparedWindowsWfp");function Ze(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}s(Ze,"windowsSandboxAccountDiagnostics");function Ut(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}s(Ut,"parseBrokerObservation");function xr(e){let r=I(),n={...e,controlInvocationId:r},t=Buffer.from(JSON.stringify(n),"utf8");if(t.byteLength>He)throw new Error(`Sandbox broker request exceeded ${He} bytes.`);return{invocationId:r,payload:t,request:n}}s(xr,"encodeControlledBrokerRequest");function kr(e,r,n){if(e.byteLength===0)return;if(e.byteLength>We)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 a=i;if(a.version!==1||a.invocationId!==r||typeof a.observation!="object"||a.observation===null)throw new Error("Sandbox broker control frame did not match this invocation.");let d=a.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=Ut(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}s(kr,"parseSandboxBrokerControl");function Mt(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,a=!1,d=s(c=>{a||(a=!0,c===void 0?n(Buffer.concat(o)):t(c))},"finish");r.on("data",c=>{if(i+=c.byteLength,i>We){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())})}s(Mt,"collectSandboxBrokerControl");function Oe(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}s(Oe,"sandboxJavaScriptCommand");async function O(e={}){if(e.refresh||Y===void 0||Date.now()>=Se){let r=Ft();Y=r,Se=Number.POSITIVE_INFINITY,r.then(n=>{Y===r&&(Se=n.ready?Number.POSITIVE_INFINITY:Date.now()+St)},()=>{Y===r&&(Y=void 0,Se=0)})}return Y}s(O,"doctorSandboxRuntime");async function Ft(){let e=[];Fe.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:Fe.checkDependencies();e.push(...r.warnings,...r.errors);let n=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let a=JSON.parse(await ve(on.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));a.version!==ne&&(n=!0,e.push(`ASRT package version mismatch: expected ${ne}, found ${String(a.version)}.`))}catch(a){n=!0,e.push(`ASRT package provenance check failed: ${L(a)}`)}let t=Oe(),o=H({args:["--version"],env:B(),isElectron:t===process.execPath&&process.versions.electron!==void 0}),i=J(t,o.args,{env:o.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){n=!0;let a=i.error?.message??(i.stderr.trim()||t);e.push(`JavaScript Skill interpreter is unavailable: ${a}.`)}if(process.platform==="win32"){try{let d=await Pe(),c=F({srtWin:d.srtWin}),u=Ze(c);if(u.length>0||!c.sid)n=!0,e.push(...u);else{M(),Ge();try{_e(c),Xt(c.sid);let f=Re(ue(),c.sid,c.groupSid,!1);f.length>0&&(n=!0,e.push(`${sn} ${f.length} persistent Windows sandbox ACL guard(s) are missing. Run "kodax sandbox setup" once to install them outside the command path.`)),await vr(d)}catch(f){n=!0,e.push(L(f))}}}catch(d){n=!0,e.push(L(d))}let a=Sr();a.length>0&&e.push(`${gr} ${a.length} pre-v2 ACL recovery record(s) remain for migration diagnosis; Windows v2 shell admission does not read them.`)}return{ready:Fe.isSupportedPlatform()&&!n,platform:process.platform,version:ne,diagnostics:e,setupRequired:n}}s(Ft,"inspectSandboxRuntime");var qt=String.raw`
493
+ $ErrorActionPreference = 'Stop'
494
+ $process = Start-Process -FilePath $env:KODAX_NATIVE_SETUP_EXE -ArgumentList @('__setup-null-device', $env:KODAX_NATIVE_SETUP_SID) -Verb RunAs -Wait -PassThru -WindowStyle Hidden
495
+ exit $process.ExitCode
496
+ `,Kt=s((e,r)=>{if(!/^S-\d+(?:-\d+)+$/i.test(r))throw new Error("Windows sandbox account SID is invalid for NUL setup.");let n=l.join(process.env.SystemRoot??String.raw`C:\Windows`,"System32","WindowsPowerShell","v1.0","powershell.exe"),t=J(n,["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(qt,"utf16le").toString("base64")],{encoding:"utf8",env:{...process.env,KODAX_NATIVE_SETUP_EXE:e,KODAX_NATIVE_SETUP_SID:r},shell:!1,windowsHide:!0,timeout:6e4});if(t.error!==void 0||t.status!==0){let o=t.error?.message??(t.stderr.trim()||`exit ${String(t.status)}`);throw new Error(`Windows sandbox NUL capability setup failed: ${o}`)}},"installWindowsNullDeviceAccess"),Vt=Kt;function nr(e){Vt(M().path,e)}s(nr,"installWindowsV2AccountCompatibility");function Xt(e){let r=J(M().path,["__verify-null-device",e],{env:B(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3});if(r.error!==void 0||r.status!==0){let n=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw Q(`The sandbox account NUL-device compatibility ACE is missing or unsafe: ${n}`)}}s(Xt,"verifyWindowsV2AccountCompatibility");async function Jt(){let e=await O({refresh:!0});if(e.ready||!e.setupRequired)return e;let r=await Pe();M();let n=F({srtWin:r.srtWin}),t;try{Ge()}catch(f){t=f}if(t!==void 0){if(rn(De())){if(n.sid===void 0&&n.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(n.sid!==void 0&&!await Qn(n.sid))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{Wn()}catch(w){throw new AggregateError([t,w],"Windows native shell control state verification and setup repair both failed.")}let f=await O({refresh:!0});if(f.ready)return f}let o=!1;if(Ze(n).length===0&&n.sid!==void 0)try{_e(n),o=!0}catch(f){if(!L(f).includes(mr))throw f}if(o){if(Jn({srtWin:r.srtWin}).cancelled)throw new Error("Sandbox setup was cancelled.");let w=F({srtWin:r.srtWin});if(w.sid===void 0)throw new Error("Windows sandbox setup did not return an account SID.");return nr(w.sid),tr(ue()),O({refresh:!0})}let i=await Lt();if(i!==void 0)return $t(e,i);let a=n.sid;if(a!==void 0){if(!await Qn(a))throw new Error('The legacy Windows sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".');if(await hr(),it({keepUser:!1,srtWin:r.srtWin}).cancelled)throw new Error("Sandbox account rotation was cancelled.")}if(Jn({srtWin:r.srtWin}).cancelled)throw new Error("Sandbox setup was cancelled.");let c=F({srtWin:r.srtWin}),u=Ze(c);if(u.length>0||c.sid===void 0||c.groupSid===void 0)throw new Error(`Windows sandbox setup remained incomplete: ${u.join(" ")}`);if(a!==void 0&&c.sid===a)throw new Error("Windows sandbox account rotation did not produce a new SID; v2 remains fail-closed.");return nr(c.sid),tr(ue()),await vr(r),_t({version:3,protocol:D,hostUserSid:yr(),sandboxUserSid:c.sid,sandboxGroupSid:c.groupSid}),O({refresh:!0})}s(Jt,"setupWindowsSandboxRuntimeWithLock");async function Ht(){return process.platform!=="win32"?O({refresh:!0}):(await G(l.dirname(Yn()),{recursive:!0,mode:448}),xn(Yn(),Jt,kt))}s(Ht,"setupSandboxRuntime");function Z(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(le));return r!==void 0?[r.slice(le.length).trim()]:['Run "kodax sandbox setup". Windows will show a UAC prompt for the one-time sandbox account and network policy setup.',"The terminal itself does not need to be started as Administrator; approve the UAC prompt when it appears."]}return e.platform==="darwin"?['KodaX uses macOS Seatbelt through sandbox-exec. Install the missing dependency, then rerun "kodax sandbox doctor".',"Homebrew: brew install ripgrep"]:e.platform==="linux"?['KodaX uses bubblewrap on Linux. Install bubblewrap, socat, and ripgrep, then rerun "kodax sandbox doctor".',"Debian/Ubuntu: sudo apt install bubblewrap socat ripgrep","Fedora/RHEL: sudo dnf install bubblewrap socat ripgrep","Arch Linux: sudo pacman -S bubblewrap socat ripgrep"]:[`KodaX sandbox is not supported on ${e.platform}.`]}s(Z,"sandboxSetupGuidance");async function yi(e={}){let r=await O({refresh:!0});if(r.ready)return{status:"ready",attempted:!1,doctor:r,guidance:Z(r)};if(Rt(r))return{status:"unavailable",attempted:!1,doctor:r,guidance:Z(r)};if(!r.setupRequired)return{status:"unavailable",attempted:!1,doctor:r,guidance:Z(r)};if(r.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:r,guidance:Z(r)};try{let n=await Ht();return{status:n.ready?"ready":"unavailable",attempted:!0,doctor:n,guidance:Z(n)}}catch(n){let t=await O({refresh:!0}),o=L(n);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:Z(t),error:o}}}s(yi,"prepareSandboxRuntimeForSetup");function K(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}s(K,"canonicalRelative");function A(e,r){let n=l.relative(e,r);return n===""||!n.startsWith("..")&&!l.isAbsolute(n)}s(A,"isInside");function Er(e){let r=e.split(l.sep).map(n=>n.toLowerCase());return r.some(n=>ct.has(n))||r.some(n=>lt.has(n)||n.startsWith(".env."))}s(Er,"isSensitiveRelative");async function zt(e,r){await G(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 de(l.join(r,"SKILL.md"),await ve(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of n){let i=K(o.relativePath,`Skill ${e.name} support file`),a=l.join(r,t,...i.split("/"));await G(l.dirname(a),{recursive:!0,mode:448}),await de(a,await ve(o.path),{mode:384})}}s(zt,"copySkillSnapshot");async function Yt(e,r){let n=new Map;for(let[t,o]of Object.entries(e.admissions)){let i=await e.registry.loadFull(t),a=new Map((i.scripts??[]).map(c=>[`scripts/${K(c.relativePath,`Skill ${t} script`)}`,c])),d=l.join(r,t.replace(/[^A-Za-z0-9._-]/g,"_"));await zt(i,d);for(let c of o){let u=K(c,`toolPolicy.skillScripts.${t}`);if(!a.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}s(Yt,"snapshotAdmissions");function Zt(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}})}s(Zt,"networkEndpoints");function B(){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 an(r)}s(B,"sanitizedEnvironment");function an(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())}s(an,"normalizedSandboxEnvironment");function Qt(e,r){return an({...e,...r})}s(Qt,"mergeSandboxEnvironment");function eo(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>"}.`)}s(eo,"interpreterFor");var rr=250,no=1500,Xe=12e3;async function Ie(e,r,n=me,t=pe,o=!1,i){let a=[],d=[],c=i!==void 0||e.pid===void 0?void 0:Be(e.pid),u=0,f,w=s(()=>{},"reportStopRequested"),p,m,g=new Promise(h=>{w=h}),y=s(h=>{if(f!==void 0)return;f=h,w();let x=!1,W,k;if(p=new Promise((S,T)=>{W=S,k=T}),p.catch(()=>{}),i!==void 0){i.terminate(e).then(W,S=>{k(S instanceof Error?S:new Error(String(S)))});return}let E=s(async S=>{let T=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 S===void 0?T:new AggregateError([T,S],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),C=s(S=>{x||(x=!0,m!==void 0&&clearTimeout(m),S===void 0?W():k(S))},"finish");m=setTimeout(()=>{try{e.kill("SIGKILL"),E().then(C)}catch(S){E(S).then(C)}},no),oe(e,{expectedProcessStartIdentity:c,forceMs:rr,taskkillMs:rr}).then(async S=>C(S.status==="unknown"?await E():void 0),async S=>C(await E(S)))},"requestStop"),b=s((h,x)=>{u+=x.byteLength,u>t?y(new Error(`Sandboxed command output exceeded ${t} bytes.`)):h.push(x)},"append");e.stdout?.on("data",h=>{b(a,h)}),e.stderr?.on("data",h=>{b(d,h)});let v=setTimeout(()=>{y(new Error(`Sandboxed command exceeded its ${n} ms timeout.`))},n),_=s(()=>{let h=r?.reason;y(h instanceof Error?h:new Error("Sandboxed command was cancelled."))},"abort");r?.addEventListener("abort",_,{once:!0}),r?.aborted&&_();try{let h=new Promise((W,k)=>{e.once("error",k),e.stdin?.once("error",k),e.once("close",E=>W(E??1))}),x=await Promise.race([h,g.then(()=>1)]);if(f!==void 0){let W=f;try{await p}catch(k){let E=Buffer.concat(d).toString("utf8").trim();throw new AggregateError([W,k,...E===""?[]:[new Error(`Native sandbox stderr: ${E.slice(0,4096)}`)]],"Sandboxed command failed and native termination was not confirmed.")}throw W}return{exitCode:x,stdout:Buffer.concat(a).toString("utf8"),stderr:Buffer.concat(d).toString("utf8")}}finally{clearTimeout(v),m!==void 0&&clearTimeout(m),r?.removeEventListener("abort",_)}}s(Ie,"collectProcess");function Ee(e){return e.reason instanceof Error?e.reason:new DOMException("Operation aborted","AbortError")}s(Ee,"sandboxAbortError");function ro(e,r,n){let t=new WeakMap,o=new WeakMap,i,a=Buffer.concat([Buffer.from(e),Me("close-stdin")]),d=s((f,w,p)=>{let m=f.stdin;if(m===null)return Promise.reject(new Error("Native sandbox bootstrap pipe was not created."));if(w?.aborted)return Promise.reject(Ee(w));if(Date.now()>=p)return Promise.reject(new Error("Native sandbox bootstrap delivery timed out."));let g=Buffer.alloc(0),y=f.stderr,b=s(v=>{g=Buffer.concat([g,v]).subarray(-4096)},"onStderr");return y?.on("data",b),o.set(f,"bootstrap-pending"),new Promise((v,_)=>{let h=!1,x,W=setTimeout(()=>k(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(1,p-Date.now()));W.unref();let k=s(R=>{if(!h)if(h=!0,clearTimeout(W),x!==void 0&&clearTimeout(x),w?.removeEventListener("abort",T),y?.off("data",b),R===void 0)v();else{let V=g.toString("utf8").trim();_(V===""?R:new Error(`${R.message} Native sandbox stderr: ${V}`,{cause:R}))}},"finish"),E=s(R=>{h||x!==void 0||(x=setTimeout(()=>k(R),100),x.unref())},"failAfterStderrDrain"),C=s(R=>{E(new Error("Native sandbox bootstrap delivery failed.",{cause:R}))},"onError"),S=s(()=>{m.off("error",C),h||E(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose"),T=s(()=>{w!==void 0&&k(Ee(w))},"onAbort");if(m.on("error",C),m.once("close",S),w?.addEventListener("abort",T,{once:!0}),w?.aborted){T();return}m.write(a,R=>{R==null?(h||o.set(f,"control-open"),k()):E(new Error("Native sandbox bootstrap delivery failed.",{cause:R}))})})},"closeInput"),c=s(async()=>{let f=await ve(r,"utf8"),w=JSON.parse(f),p=typeof w=="object"&&w!==null?Reflect.get(w,"denyReadCleanupDeferred"):void 0,m=typeof w=="object"&&w!==null?Reflect.get(w,"denyReadCleanupDiagnostic"):void 0;if(typeof w!="object"||w===null||Reflect.get(w,"protocol")!==D||Reflect.get(w,"nonce")!==n.toLowerCase()||Reflect.get(w,"jobDrained")!==!0||!Number.isSafeInteger(Reflect.get(w,"targetExitCode"))||typeof Reflect.get(w,"terminationRequested")!="boolean"||typeof p!="boolean"||p&&(typeof m!="string"||m.length===0||m.length>2048))throw new Error("Native sandbox terminal record was invalid.");p&&j({source:"sandbox:windows-v2",level:"warn",message:"Windows denyRead ACL cleanup was deferred for automatic recovery.",detail:m})},"verifyTerminalRecord");return{closeInput:d,terminate:s(f=>{let w=t.get(f);if(w!==void 0)return w;let p=new Promise((m,g)=>{let y=o.get(f)===void 0,b=f.stdin;if(b===null){g(new Error("Native sandbox control pipe was not created."));return}if(f.exitCode!==null||f.signalCode!==null){o.set(f,"terminal"),y?m():c().then(m,g);return}let v=!1,_=!1,h,x=s(S=>{v||(v=!0,clearTimeout(C),f.off("close",W),f.off("error",k),b.off("error",E),S===void 0?m():g(S))},"finish"),W=s((S,T)=>{if(!_){if(o.set(f,"terminal"),y){x();return}c().then(()=>x(),R=>x(new Error(`Native sandbox closed without a Job-drain attestation (code ${String(S)}, signal ${String(T)}).`,{cause:new AggregateError([R,...h===void 0?[]:[h]],"Native sandbox terminal record verification failed.")})))}},"onClose"),k=s(S=>{h??=S},"onChildError"),E=s(S=>{h??=S},"onStdinError"),C=setTimeout(()=>{_=!0,oe(f,{forceMs:500,taskkillMs:500}).then(S=>x(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${Xe} ms.`),...h===void 0?[]:[h],...S.status==="unknown"?[new Error("Emergency process-tree termination was not confirmed.")]:[]],"Native sandbox termination was not confirmed by its runner.")),S=>x(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${Xe} ms.`),...h===void 0?[]:[h],S],"Native sandbox termination and emergency cleanup both failed.")))},Xe);C.unref(),f.once("close",W),f.once("error",k),b.on("error",E),b.end(y?void 0:Me("terminate"),S=>{S!=null&&(h??=S)})});return t.set(f,p),i=p,p.catch(()=>{}),p},"terminate"),async waitForTerminalObservation(){let f=i;if(f===void 0){await c();return}await f.then(()=>{},()=>{})}}}s(ro,"createWindowsV2ProcessControl");function to(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(Ee(n)):Date.now()>=t?Promise.reject(new Error("Native sandbox bootstrap delivery timed out.")):new Promise((i,a)=>{let d=!1,c=setTimeout(()=>u(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(0,t-Date.now()));c.unref();let u=s(m=>{d||(d=!0,clearTimeout(c),n?.removeEventListener("abort",w),m===void 0?i():a(m))},"finish"),f=s(()=>u(new Error("Native sandbox bootstrap delivery failed.")),"onError"),w=s(()=>{n!==void 0&&u(Ee(n))},"onAbort"),p=s(()=>{o.off("error",f),d||u(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose");o.on("error",f),o.once("close",p),o.once("finish",()=>u()),n?.addEventListener("abort",w,{once:!0}),r===void 0?o.end():o.end(r)})}s(to,"closeNativeSandboxInput");async function oo(e,r){let n=l.join(r,`kodax-asrt-gate-${process.pid}-${I()}.json`);return await de(n,JSON.stringify(e),{mode:384}),{...bn({args:["-e",bt,n],env:B(),isElectron:process.versions.electron!==void 0}),gateFile:n}}s(oo,"prepareWindowsGatedLaunch");function io(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,a=s(()=>n.removeListener("error",c),"cleanup"),d=s(u=>{i||(i=!0,a(),u?o(u):t())},"settle"),c=s(u=>d(u),"onError");n.once("error",c),r?n.end(`go
497
+ `,d):n.write(`go
498
+ `,d)})}s(io,"writeSandboxGate");function so(e){let r=e.stdin;return r===null||r.destroyed||r.writableEnded?Promise.resolve():new Promise((n,t)=>{let o=!1,i=s(()=>r.removeListener("error",d),"cleanup"),a=s(c=>{o||(o=!0,i(),c?t(c):n())},"settle"),d=s(c=>a(c),"onError");r.once("error",d),r.end(a)})}s(so,"closeSandboxGate");async function Rr(e,r,n=me,t=pe){nt();let o=xr({...e,bootstrapCommand:e.bootstrapCommand??Oe()}),i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",wr,lr],a=H({args:i,env:B(),isElectron:process.versions.electron!==void 0}),d=fe(process.execPath,a.args,{cwd:e.cwd,env:a.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0});z(d);let c=Ie(d,r,n,t),u=Mt(d).then(p=>({output:p}),p=>({output:new Uint8Array,failure:L(p)}));try{await to(d,o.payload,r,Date.now()+n)}catch(p){throw d.kill("SIGTERM"),await Promise.allSettled([c,u]),p}let[f,w]=await Promise.all([c,u]);return{...f,...w.failure===void 0?{}:{controlFailure:w.failure},controlInvocationId:o.invocationId,controlOutput:w.output,expectedBackend:o.request.observationBackend??"unsupported"}}s(Rr,"runBrokerResult");async function ao(e,r){let n;if(process.platform==="win32"){let t=Date.now()+me,o=await mn({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,a=fe(o.executable,[...o.args],{cwd:e.cwd,env:o.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0});z(a);let d;try{let c=Ie(a,r,Math.max(1,t-Date.now()),pe,!0,i);c.catch(()=>{});try{await i.closeInput(a,r,t)}catch(f){let w=f;try{await i.terminate(a)}catch(p){w=new AggregateError([f,p],"Native sandbox bootstrap and termination both failed.")}throw await c.catch(()=>{}),w}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 Rr(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}s(ao,"runBroker");async function co(e,r){let n=await ae(e),t=l.resolve(e,K(r,"Skill script input")),o=await ae(t);if(!A(n,o)||Er(l.relative(n,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await xe(o)).isFile())throw new Error("Skill script inputs must be files.");return o}s(co,"workspaceSource");async function lo(e,r){let n=await ae(e),t=l.resolve(e,K(r,"Skill script output target"));if(!A(l.resolve(e),t)||Er(l.relative(l.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await G(l.dirname(t),{recursive:!0}),!A(n,await ae(l.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await xe(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}s(lo,"workspaceTarget");async function uo(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 co(e,o.path),a=K(o.as??l.basename(i),"Skill script staged input"),d=l.resolve(r,"inputs",...a.split("/"));if(!A(l.join(r,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await G(l.dirname(d),{recursive:!0,mode:448}),await ar(i,d)}}s(uo,"stageInputFiles");async function fo(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 a of n.outputs){let d=K(a.path,"Skill script staged output"),c=l.resolve(r,"outputs",...d.split("/")),u=await ae(c);if(!A(l.join(r,"outputs"),u)||(await Yr(c)).isSymbolicLink()||!(await xe(c)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let f=await lo(e,a.target);if(o!==void 0&&Ar(e,!0)+(await xe(c)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await ar(c,f,he.COPYFILE_EXCL),i.push(l.relative(e,f))}return i}s(fo,"promoteOutputs");function Ar(e,r=!1){let n=0;for(let t of tn(e,{withFileTypes:!0})){if(r&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=l.join(e,t.name);t.isDirectory()?n+=Ar(o):t.isFile()&&(n+=se(o).size)}return n}s(Ar,"directorySize");function dn(e){if(process.platform!=="win32")return e;let r=Ce();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])]}}}s(dn,"withPreparedWindowsRunner");function wo(e,r,n,t){let o=process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir(),i=process.platform==="win32"?ue():[o],a=s(d=>l.isAbsolute(d)?process.platform==="win32"?[d,l.dirname(d)]:[d]:[],"executableReadScopes");return dn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:n.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:i,allowRead:[e,r,...new Set([...a(process.execPath),...a(t)])],allowWrite:[e],denyWrite:i}})}s(wo,"sandboxConfig");function po(){let e=[q.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)))]}s(po,"canonicalTempDirectories");function mo(e){return[l.join(e,".kodax","runtime"),l.join(e,".git","config"),l.join(e,".git","hooks")].filter(n=>{try{return se(n),!0}catch{return!1}})}s(mo,"existingWorkspaceDenyWrites");function cn(e,r,n){let t=ut.map(i=>l.resolve(e,i)).filter(i=>l.relative(i,r)!==""),o=process.platform==="win32"?[...Hn.map(i=>l.resolve(r,i)),Ne()]:[l.resolve(n),...Hn.map(i=>l.resolve(r,i))];return[...new Set([...o,...process.platform==="win32"?[]:ge(),...t])]}s(cn,"workspaceShellSensitiveReadDenies");function ln(e){let r=[...new Set(e.map(t=>l.resolve(t)))].filter(t=>se(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),n=[];for(let t of r)n.some(o=>A(o,t))||n.push(t);return n}s(ln,"existingMinimalWindowsAclGuardRoots");function Wr(e){return l.resolve(e).toLowerCase()}s(Wr,"windowsAclGuardKey");function un(e){let r=Wr(e);for(let n of fr)if(r===n||r.startsWith(n.endsWith(l.sep)?n:`${n}${l.sep}`))return!0;return!1}s(un,"windowsAclGuardCovers");function ue(){let e=l.resolve(process.env.USERPROFILE??q.homedir()),r=l.resolve(U());return ln(cn(e,r,l.join(r,"sandbox-runtime")))}s(ue,"windowsPersistentAclGuardRoots");function Re(e,r,n,t){if(n===void 0)throw new Error("Windows sandbox group SID is unavailable for persistent denyRead.");let o=ln(e);if(o.length===0)return[];let i=M({sandboxReadSid:n,untrustedWriteRoots:[]}).path,a=J(i,["__persistent-deny-read",t?"install":"verify",r,n],{input:JSON.stringify(o),encoding:"utf8",timeout:t?15*6e4:3e4,windowsHide:!0});if(a.error||a.status!==0){let c=(a.error?.message||a.stderr||a.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${c}`)}let d;try{let c=JSON.parse(a.stdout.trim());d=Array.isArray(c)?c.filter(u=>typeof u=="string"):[]}catch(c){throw new Error(`Windows sandbox ACL guard returned invalid output: ${L(c)}`)}if(d.length===0)for(let c of o)fr.add(Wr(c));return d}s(Re,"runWindowsAclGuard");function tr(e){if(process.platform!=="win32"||e.length===0)return;let r=e.filter(i=>!un(i));if(r.length===0)return;let n=Ce(),t=F({srtWin:n.srtWin});if(!t.sid)throw new Error("Windows sandbox account SID is unavailable for ACL guards.");if(Re(r,t.sid,t.groupSid,!0).length>0)throw new Error("Windows sandbox ACL guards were not installed completely.")}s(tr,"installWindowsAclGuards");function go(e){return process.platform!=="win32"?e:{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead.filter(r=>!un(r)),denyWrite:e.filesystem.denyWrite}}}s(go,"withoutWindowsAsrtDenyPropagation");function yo(e,r){let n;try{n=N.native(r)}catch{return[]}let t=[];for(let o of e){let i;try{i=N.native(o)}catch{continue}if(!A(i,n))t.push(o);else if(i!==n){let a=l.relative(i,n).split(l.sep),d=i;try{for(let c of a){for(let u of tn(d,{withFileTypes:!0}))u.name!==c&&t.push(l.join(d,u.name));d=l.join(d,c)}}catch{}}}return process.platform!=="win32"&&t.push(r),[...new Set(t)]}s(yo,"workspaceShellWriteRoots");function bo(e){return process.platform==="win32"?e===void 0?[]:[l.dirname(e)]:po()}s(bo,"workspaceShellTempWriteRoots");function So(e,r,n){try{let t=N.native(r),o=l.resolve(r),i=l.resolve(e);if(!A(o,i)||i===o)return;for(;i!==o;)try{let a=N.native(i);if(a===t||!A(t,a))return;let d=l.relative(t,a).split(l.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||n&&ur.some(c=>c===d)?void 0:a}catch(a){if(!n||a.code!=="ENOENT")return;try{we(i);return}catch(c){if(c.code!=="ENOENT")return}let d=l.dirname(i);if(d===i)return;i=d}return}catch{return}}s(So,"windowsAgentHomeAccessRoot");function Pr(e,r){if(!r)return{read:[],write:[]};let n=s((t,o)=>[...new Set(t.flatMap(i=>{let a=So(i,e,o);return a?[a]:[]}))],"roots");return{read:n(r.read,!1),write:n(r.write,!0),...r.ephemeral===!0?{ephemeral:!0}:{}}}s(Pr,"windowsAgentHomeAccessRoots");function fn(e){return e??(process.platform==="win32"?process.env.COMSPEC??l.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}s(fn,"workspaceShellExecutable");function ho(e,r){return Object.entries(e).find(([n,t])=>n.toUpperCase()===r&&t!==void 0)?.[1]}s(ho,"shellEnvironmentValue");function vo(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=>A(e,t)).sort((t,o)=>o.length-t.length)}s(vo,"workspaceShellUserDataBoundaries");function xo(e,r,n){if(process.platform!=="win32"||e.toLowerCase()===r.toLowerCase())return[];try{if(!we(e).isSymbolicLink())return[]}catch{return[]}let t=n.find(d=>d.toLowerCase()!==r.toLowerCase()&&A(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),a=[];for(let d=l.dirname(r);d.toLowerCase()!==i.toLowerCase()&&A(i,d);d=l.dirname(d))a.push(d);return a}s(xo,"workspaceShellLinkedTargetAncestors");function wn(e,r){let n=l.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),t=l.resolve(U()),o=cn(n,t,l.join(t,"sandbox-runtime")),i=vo(n),a=new Map,d=s(w=>{let p=l.resolve(w);if(!(p===l.parse(p).root||p.toLowerCase()===n.toLowerCase()||A(t,p)||A(p,t)||o.some(m=>A(m,p))))return p},"safe"),c=s((w,p)=>{let m=d(w);if(m===void 0)return;let g;try{g=N(m)}catch{return}if(d(g)===void 0)return;let y=p?[m,g].filter(b=>A(n,b)):[m,g];for(let b of y)a.set(process.platform==="win32"?b.toLowerCase():b,b);if(p&&y.includes(g))for(let b of xo(m,g,i)){let v=d(b);v!==void 0&&A(n,v)&&a.set(v.toLowerCase(),v)}},"remember");for(let w of(ho(e,"PATH")??"").split(l.delimiter)){let p=w.trim().replace(/^"(.*)"$/,"$1");p&&l.isAbsolute(p)&&c(p,!0)}let u=fn(r);l.isAbsolute(u)&&c(l.dirname(u),!0);let f=Oe();if(l.isAbsolute(f)){let w=d(f);w!==void 0&&a.set(process.platform==="win32"?w.toLowerCase():w,w),c(l.dirname(f),!1)}return[...a.values()].sort((w,p)=>w.toLowerCase().localeCompare(p.toLowerCase()))}s(wn,"workspaceShellRuntimeReadScopes");function ko(e){let r=new Map;for(let n of e)try{let t=N.native(n);r.set(t.toLowerCase(),t)}catch{}return[...r.values()].sort((n,t)=>n.toLowerCase().localeCompare(t.toLowerCase()))}s(ko,"windowsNativeRuntimeReadScopes");function Qe(e,r){return l.resolve(e).toLowerCase()===l.resolve(r).toLowerCase()}s(Qe,"sameWindowsPath");function Ae(e,r){let n=or(e,"r");try{let t=Buffer.allocUnsafe(r+1),o=0;for(;o<t.length;){let i=Jr(n,t,o,t.length-o,o);if(i===0)break;o+=i}return o>r?void 0:t.toString("utf8",0,o)}finally{Je(n)}}s(Ae,"readBoundedUtf8File");function Eo(e,r){let n=/^(.*)[/\\]worktrees[/\\][^/\\]+$/.exec(e);if(n===null)return;let t=Ae(l.join(e,"commondir"),4096),o=Ae(l.join(e,"gitdir"),4096);if(t===void 0||o===void 0)return;let i=N(n[1]),a=N(l.resolve(e,t.trim())),d=N(l.resolve(e,o.trim()));return Qe(a,i)&&Qe(d,r)?i:void 0}s(Eo,"linkedWorktreeMainGitDirectory");function Ro(e){let r=Ae(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 a=/^worktree\s*=\s*(.+?)\s*$/i.exec(i);if(a===null)continue;if(t!==void 0)return;let d=a[1];if(d.includes("\0")||d.startsWith('"')||d.endsWith('"'))return;t=d}return t===void 0?void 0:N(l.resolve(e,t))}s(Ro,"submoduleGitWorktree");function Ao(e,r){if(!/[/\\]\.git[/\\]modules[/\\]/i.test(e))return!1;let n=Ro(e);return n!==void 0&&Qe(n,r)}s(Ao,"isStructurallyBoundSubmoduleGitDirectory");function Wo(e){if(process.platform!=="win32")return{};let r=l.join(e,".git");try{if(!we(r).isFile())return{};let n=Ae(r,4096);if(n===void 0)return{};let t=/^gitdir:\s*(.+?)\s*$/m.exec(n);if(t===null)return{};let o=N(l.resolve(e,t[1])),i=Eo(o,r),a=Ao(o,e);if(i===void 0&&!a)return{};let d=i??o;return se(d).isDirectory()?se(l.join(d,"HEAD")).isFile()?{mainGitDirectory:d,gitfile:r}:{}:{}}catch(n){let t=n.code;if(t==="ENOENT"||t==="ENOTDIR")return{};throw n}}s(Wo,"windowsLinkedWorktreeGitAccess");function Po(e,r,n,t,o=wn(process.env,fn())){let i=l.resolve(U()),a=l.join(i,"sandbox-runtime"),d=l.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),c=cn(d,i,a),u=l.join(e,".kodax","runtime"),f=[...c,u],w=process.platform==="win32"?ln(f):f.filter(b=>b!==i),p=process.platform==="win32"?Pr(i,n):{read:[],write:[]},m=yo([e,...bo(r),...p.write,...t?.write??[]],i),g=Wo(e),y=[...new Set([...o,...p.read,...t?.read??[],...g.mainGitDirectory!==void 0?[g.mainGitDirectory]:[]])];return process.platform!=="win32"&&$e(P(y,e)),{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:w,allowRead:y,allowWrite:m,denyWrite:[a,...ge(),...ur.map(b=>l.join(i,b)),...mo(e),...g.gitfile!==void 0?[g.gitfile]:[]]}}}s(Po,"workspaceShellSandboxConfig");function Co(e){let r=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(n=>r.some(t=>A(t,n)))}}}s(Co,"boundedWindowsWorkspaceDenies");function Cr(e,r,n,t,o){let i=Po(e,r,n,t,o);return process.platform==="win32"?Co(i):i}s(Cr,"workspaceShellCommandSandboxConfig");function No(e){return process.platform!=="win32"?!0:(e?.write??[]).every(r=>{try{return N.native(r),!0}catch{return!1}})}s(No,"workspaceShellFilesystemAccessIsRepresentable");function P(e,r){return[...new Set((e??[]).map(n=>l.resolve(r,n)))]}s(P,"normalizedSandboxPaths");function _o(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}})}s(_o,"sdkSandboxEndpoints");async function To(e,r,n,t,o){let i=Date.now()+(e.timeoutMs??me),a=e.command===process.execPath?H({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:P(e.filesystem.allowRead,r),allowWrite:P(e.filesystem.allowWrite,r),denyRead:P(e.filesystem.denyRead,r),denyWrite:P(e.filesystem.denyWrite,r)}},c=await mn({shellPolicy:d,executable:e.command,args:a.args,cwd:r,env:a.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.");if(c.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let u=c.processControl,f=fe(c.executable,[...c.args],{cwd:r,env:c.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0,windowsVerbatimArguments:c.windowsVerbatimArguments===!0});z(f);let w,p;try{let m=Ie(f,e.signal,Math.max(1,i-Date.now()),e.maxOutputBytes??pe,!0,u);m.catch(()=>{});try{await u.closeInput(f,e.signal,i)}catch(y){let b=y;try{await u.terminate(f)}catch(v){b=new AggregateError([y,v],"Native sandbox bootstrap and termination both failed.")}throw await m.catch(()=>{}),b}let g=await m;if(g.exitCode!==0){let y=g.stderr.split(/\r?\n/u).filter(b=>b.startsWith("kodax-windows-sandbox protocol ")).slice(-4).join(`
499
+ `);p=new Error(y.length>0?y:`Windows native sandbox host exited with code ${g.exitCode}.`)}return g}catch(m){throw w=m,m}finally{try{await c.cleanup({execution:"started_or_unknown"})}catch(m){throw w!==void 0?new AggregateError([w,m],"Windows native sandbox execution and cleanup both failed."):p!==void 0?new AggregateError([p,m],"Windows native sandbox host and cleanup both failed."):m}}}s(To,"runWindowsV2Sandboxed");function Nr(e,r){let n=ue().filter(o=>!un(o));if(n.length===0)return;let t=Re(n,e,r,!1);if(t.length>0){let o=Re(t,e,r,!0);if(o.length>0)throw new Error(`${sn} ${o.length} persistent Windows sandbox ACL guard(s) could not be repaired. Run "kodax sandbox setup" and retry.`)}}s(Nr,"ensureWindowsAclGuardsForAdmission");async function bi(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"?[]:ge(),t={allowRead:P(e.filesystem.allowRead,r),allowWrite:P(e.filesystem.allowWrite,r),denyRead:P(e.filesystem.denyRead,r),denyWrite:P(e.filesystem.denyWrite,r)};process.platform==="win32"&&Le(t),process.platform!=="win32"&&$e(t.allowRead),Rn(t.allowWrite);let o={...t,denyRead:[...t.denyRead??[],...n],denyWrite:[...t.denyWrite??[],...n]},i=e.network??{mode:"deny"},a=_o(i),d=await O();if(process.platform==="win32"&&!d.ready&&Pt(d.diagnostics))try{let m=await Pe(t.allowWrite),g=_e(F({srtWin:m.srtWin}));Nr(g.sandboxUserSid,g.sandboxGroupSid),d=await O({refresh:!0})}catch(m){let g=await O({refresh:!0});d={...g,ready:!1,setupRequired:!0,diagnostics:[...g.diagnostics,`[acl_guard_repair_failed] ${L(m).slice(0,4096)}`]}}if(!d.ready)return{status:"unavailable",sandboxed:!1,doctor:d,reason:"doctor_not_ready"};let c=Qt(e.inheritEnvironment===!0?process.env:B(),e.env??{});if(process.platform==="win32"){let m=await To({...e,filesystem:o},r,c,i,a);return{status:"completed",sandboxed:!0,exitCode:m.exitCode,stdout:m.stdout,stderr:m.stderr}}let u={config:dn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:i.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:P(o.allowRead,r),allowWrite:P(o.allowWrite,r),denyRead:P(o.denyRead,r),denyWrite:P(o.denyWrite,r)}}),command:e.command,args:e.args??[],cwd:r,env:c,endpoints:a,allowAllNetwork:i.mode==="allow",observationBackend:cr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${I()}\0
500
+ `},f=await Rr(u,e.signal,e.timeoutMs??me,e.maxOutputBytes??pe),w,p=f.controlFailure;if(p===void 0)try{w=kr(f.controlOutput,f.controlInvocationId,f.expectedBackend)}catch(m){p=m}if(w?.state==="not_started"){let m=[w.diagnostic,f.stderr.trim()].filter(g=>g!==void 0&&g!=="").join(" ").slice(0,4096)||"The sandbox backend exited before target-start attestation.";return{status:"unavailable",sandboxed:!1,reason:"backend_launch_failed",diagnostic:m,doctor:{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,m]}}}return w?.state!=="applied"?{status:"execution_uncertain",sandboxed:!1,reason:"attestation_failed",diagnostic:[p===void 0?void 0:L(p),f.stderr.trim()].filter(g=>g!==void 0&&g!=="").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}}s(bi,"runKodaXSandboxed");function pn(){let e=new Error("Sandbox runner preparation timed out.");return e.name="TimeoutError",e}s(pn,"sandboxRunnerPreparationTimeoutError");function X(e,r){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(r!==void 0&&Date.now()>=r)throw pn()}s(X,"throwIfSandboxRunnerPreparationStopped");function ee(e,r,n){return X(r,n),r===void 0&&n===void 0?e:new Promise((t,o)=>{let i=!1,a,d=s(u=>{i||(i=!0,a&&clearTimeout(a),r?.removeEventListener("abort",c),u())},"finish"),c=s(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");r?.addEventListener("abort",c,{once:!0}),n!==void 0&&(a=setTimeout(()=>{d(()=>o(pn()))},Math.max(0,n-Date.now())),a.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}s(ee,"waitForSandboxRunnerPreparation");async function _r(){return An()}s(_r,"sandboxControlDirectory");function Oo(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-windows-network-broker",e];if(import.meta.url.endsWith(".ts"))return["--import",dr(on.resolve("tsx")).href,Xn(new URL("./sandbox-network-broker-entry.ts",import.meta.url)),e];let r=l.dirname(Xn(import.meta.url)),n=l.basename(r)==="chunks"?l.dirname(r):r;return[l.join(n,"sandbox-network-broker.js"),e]}s(Oo,"windowsNetworkBrokerEntryArgs");async function Io(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 a=!1,d=Buffer.alloc(0),c,u=s(g=>{a||(a=!0,c&&clearTimeout(c),r?.removeEventListener("abort",f),t.removeListener("data",m),e.removeListener("error",w),e.removeListener("exit",p),g())},"finish"),f=s(()=>u(()=>i(r?.reason??new DOMException("Operation aborted","AbortError"))),"onAbort"),w=s(g=>u(()=>i(g)),"onError"),p=s(g=>u(()=>i(new Error(`Windows network broker exited ${String(g)} before readiness.`))),"onExit"),m=s(g=>{if(d=Buffer.concat([d,g]),d.length>1024*1024){u(()=>i(new Error("Windows network broker readiness exceeded 1 MiB.")));return}let y=d.indexOf(10);if(!(y<0))try{let b=JSON.parse(d.subarray(0,y).toString("utf8"));if(b===null||typeof b!="object"||b.version!==1)throw new Error("Windows network broker returned an incompatible response.");u(()=>o(b))}catch(b){u(()=>i(b))}},"onData");t.on("data",m),e.once("error",w),e.once("exit",p),r?.addEventListener("abort",f,{once:!0}),n!==void 0&&(c=setTimeout(()=>u(()=>i(pn())),Math.max(0,n-Date.now())),c.unref())})}s(Io,"readWindowsNetworkBrokerReady");async function Bo(e,r,n){let t=s(a=>{if(a.error!==void 0||a.code!==0||a.signal!==null){let d=n().trim();throw new Error(`Windows network broker exited without a clean cleanup result (code ${String(a.code)}, signal ${String(a.signal)})`+(d===""?".":`: ${d}`),a.error===void 0?void 0:{cause:a.error})}},"assertCleanExit");if(e.exitCode!==null||e.signalCode!==null){t(await r);return}await new Promise(a=>{let d=e.stdin;if(d===null||d.destroyed){a();return}let c=s(()=>a(),"finish");d.once("error",c),d.end(c)});let o=await Promise.race([r.then(a=>({graceful:!0,outcome:a})),new Promise(a=>{setTimeout(()=>a(!1),5e3).unref()})]);if(o!==!1){t(o.outcome);return}throw(await oe(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."))}s(Bo,"stopWindowsNetworkBroker");function Tr(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)}}s(Tr,"normalizedWindowsNetworkBrokerRequest");function en(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=>en(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)}:${en(t)}`).join(",")}}`;throw new Error("Windows network broker policy contains an unsupported value.")}s(en,"canonicalWindowsNetworkBrokerValue");function Do(e){let r=Tr(e),n=en({version:r.version,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 Kr("sha256").update(n).digest("hex")}s(Do,"windowsNetworkBrokerKey");function Lo(e,r,n){let t=s(()=>{},"markStarted"),o={key:e,requestFile:l.join(n,`windows-network-${process.pid}-${I()}.json`),started:new Promise(i=>{t=i}),markStarted:s(()=>t(),"markStarted"),references:0,failed:!1,stopRequested:!1,stderrTail:Buffer.alloc(0)};return o.ready=(async()=>{try{if(await de(o.requestFile,JSON.stringify(r),{flag:"wx",mode:384}),o.stopRequested)throw new Error("Windows network broker start was cancelled.");let i=H({args:Oo(o.requestFile),env:B(),isElectron:process.versions.electron!==void 0}),a=fe(process.execPath,i.args,{cwd:n,env:i.env,shell:!1,stdio:["pipe","ignore","pipe","pipe"],windowsHide:!0});o.child=a,z(a),o.markStarted(),a.stderr?.on("data",c=>{o.stderrTail=Buffer.concat([o.stderrTail,c]).subarray(-16*1024)}),o.exit=new Promise(c=>{let u;a.once("error",f=>{u=f}),a.once("close",(f,w)=>c({code:f,signal:w,...u===void 0?{}:{error:u}}))}),a.on("error",c=>{j({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker process failed.",detail:c})}),a.once("exit",(c,u)=>{o.stopping===void 0&&re.get(e)===o&&re.delete(e),!o.stopRequested&&(c!==0||u!==null)&&(ze(o),j({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 Io(a)}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 ze(o),i}),o.ready.catch(()=>{}),o}s(Lo,"createWindowsNetworkBrokerState");async function nn(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;let n=(await Promise.allSettled([...e.child===void 0||e.exit===void 0?[]:[Bo(e.child,e.exit,()=>e.stderrTail.toString("utf8"))],$(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(()=>{re.get(e.key)===e&&re.delete(e.key)})),e.stopping}s(nn,"stopSharedWindowsNetworkBroker");async function $o(e){if(e.references=Math.max(0,e.references-1),e.references===0){if(e.markReferencesDrained?.(),e.markReferencesDrained=void 0,e.referencesDrained=void 0,e.failed){await nn(e);return}e.idleTimer=setTimeout(()=>{e.idleTimer=void 0,nn(e).catch(r=>{j({source:"sandbox:windows-v2",level:"warn",message:"Idle shared Windows network broker cleanup failed.",detail:r})})},dt),e.idleTimer.unref()}}s($o,"releaseWindowsNetworkBrokerState");async function Go(e,r,n,t){let o=Tr(e),i=Do(o);for(;;){let a=re.get(i);if(a?.stopping!==void 0){await ee(a.stopping,n,t);continue}if(a?.failed){a.references!==0&&a.referencesDrained!==void 0?await ee(a.referencesDrained,n,t):await ee(nn(a),n,t);continue}a===void 0&&(a=Lo(i,o,r),re.set(i,a)),a.idleTimer!==void 0&&(clearTimeout(a.idleTimer),a.idleTimer=void 0),a.references+=1;let d=!1,c=s(async()=>{d||(d=!0,await $o(a))},"release");try{let u=a.ready;if(u===void 0)throw new Error("Windows network broker did not start.");return{ready:await ee(u,n,t),retire(){ze(a)},release:c}}catch(u){try{await c()}catch(f){throw new AggregateError([u,f],"Windows network broker acquisition and cleanup both failed.")}throw u}}}s(Go,"acquireWindowsNetworkBroker");async function jo(e){let r=ko(wn(e.env,e.executable)),n=Cr(e.workspaceRoot,void 0,e.agentHomeAccess,e.filesystemAccess,r);return mn({shellPolicy:n,executable:e.executable,args:e.args,cwd:e.cwd,env:e.env,endpoints:[],allowAllNetwork:!0,signal:e.signal,deadlineAt:e.deadlineAt})}s(jo,"prepareWindowsV2ShellInvocation");async function mn(e){let r=e.deadlineAt??Date.now()+at,n=await ee(Pe(e.shellPolicy.filesystem.allowWrite),e.signal,r);X(e.signal,r);let t=_e(F({srtWin:n.srtWin}));X(e.signal,r),Nr(t.sandboxUserSid,t.sandboxGroupSid),X(e.signal,r);let o=go(dn(e.shellPolicy));Le({allowRead:o.filesystem.allowRead,allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite}),En(o.filesystem.allowWrite);let i=kn(),a=M({sandboxReadSid:t.sandboxGroupSid,untrustedWriteRoots:o.filesystem.allowWrite});X(e.signal,r);let d=await ee(_r(),e.signal,r);if(X(e.signal,r),d.toLowerCase()!==De().toLowerCase())throw new Error("Windows native shell control state resolved to an unexpected path.");let c={version:1,config:Mn(o),cwd:e.cwd,srtWinPath:n.path,srtWinSha256:n.sha256,controllerExecutable:a.path,controllerSha256:a.sha256,controllerProtocol:D,expectedSandboxUserSid:t.sandboxUserSid,expectedSandboxGroupSid:t.sandboxGroupSid,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork},u,f,w;try{u=await Go(c,d,e.signal,r);let p=u.ready;if(p.sandboxUserSid!==t.sandboxUserSid||p.sandboxGroupSid!==t.sandboxGroupSid)throw Q("The broker observed a sandbox account identity from another v2 generation");let m=Fn({sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtSha256:n.sha256,shellSha256:a.sha256});f=l.join(d,`windows-shell-${process.pid}-${I()}.json`),w=l.join(d,`windows-terminal-${process.pid}-${I()}.json`);let g=I(),y=e.deadlineAt??r,b=Gn(p.asrtChildEnvironment,e.env,Bn(e.cwd,o.filesystem.allowWrite,o.filesystem.allowRead)),v=Kn({generation:m,sandboxUserSid:p.sandboxUserSid,sandboxGroupSid:p.sandboxGroupSid,asrtInvocation:{executable:p.asrtExecutable,prefixArgs:p.asrtPrefixArgs,targetArgv:[],childEnvironment:{}},targetArgv:[e.executable,...e.args],cwd:e.cwd,allowRead:o.filesystem.allowRead,allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:[...new Set([...o.filesystem.denyWrite,i])],controllerPipe:p.controllerPipe,terminalRecordPath:w,terminalNonce:g,operationDeadlineUnixMs:y});await de(f,JSON.stringify(v),{flag:"wx",mode:384}),X(e.signal,y);let _,h=u,x=f,W=w,k=qn(b),E=ro(k,W,g);return{executable:a.path,args:["__host",x],env:B(),stdinPrefix:k,processTreeContainment:"native-job",processControl:E,cleanup(C){return _??=(async()=>{let S;if(C?.execution==="started_or_unknown")try{await E.waitForTerminalObservation()}catch(V){S=V,h.retire()}let R=(await Promise.allSettled([h.release(),$(x,{force:!0}),$(W,{force:!0})])).flatMap(V=>V.status==="rejected"?[V.reason]:[]);if(S!==void 0&&R.unshift(S),R.length>0)throw new AggregateError(R,"Windows native shell cleanup failed.");return{version:1,state:"applied",backend:"windows-restricted-user",policyId:"kodax-workspace-shell-v1"}})(),_}}}catch(p){let m=await Promise.allSettled([...u===void 0?[]:[u.release()],...f===void 0?[]:[$(f,{force:!0})],...w===void 0?[]:[$(w,{force:!0})]]),g=[p,...m.flatMap(y=>y.status==="rejected"?[y.reason]:[])];throw g.length===1?p:new AggregateError(g,"Windows native shell preparation and cleanup both failed.")}}s(mn,"prepareWindowsV2Invocation");async function Uo(e){let r=wn(e.env,e.executable),n={config:Cr(e.workspaceRoot,void 0,e.agentHomeAccess,e.filesystemAccess,r),command:e.executable,args:e.args,windowsVerbatimArguments:e.windowsVerbatimArguments,cwd:e.cwd,env:e.env,endpoints:[],allowAllNetwork:!0,bootstrapCommand:Oe(),fallbackToNormalExecution:e.fallbackToNormalExecution,observationBackend:cr().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${I()}\0
501
+ `},t=xr(n),o=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",wr,lr],i=H({args:o,env:B(),isElectron:process.versions.electron!==void 0}),a;return{executable:process.execPath,args:i.args,env:i.env,stdinPrefix:t.payload,controlChannel:{fd:3,maxOutputBytes:We},cleanup(d){return a??=(async()=>{let c=d?.controlOutput;if(c===void 0){if(d?.execution==="started_or_unknown")throw new Error("Required OS sandbox execution could not be attested.");return}let u=kr(c,t.invocationId,t.request.observationBackend??"unsupported");if(u===void 0)throw new Error("Required OS sandbox execution could not be attested.");return u.state==="not_started"?void 0:u})(),a}}}s(Uo,"preparePortableAsrtShellInvocation");function Si(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?st(o,e.additionalWorkspaceRoots?.()??[]):!1;if(!i){n.reportObservation?.({version:1,state:"not_selected"});return}let a=typeof i=="object"?i.agentHomeAccess:void 0,d=process.platform==="win32"&&a!==void 0?Pr(l.resolve(U()),a):a,c=typeof i=="object"?i.filesystemAccess:void 0;if(!No(c)){n.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let u=fn(n.executable),f=n.args??(process.platform==="win32"?["/d","/s","/c",n.command]:["-c",n.command]),w=an(n.env);if(process.platform==="win32")try{return await jo({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,executable:u,args:f,cwd:n.cwd,env:w,signal:n.signal,deadlineAt:n.deadlineAt})}catch(p){if(n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||n.fallbackToNormalExecution===!1)throw p;j({source:"sandbox:windows-v2",level:"warn",message:"Windows native shell preparation failed; using normal permission fallback.",detail:p}),n.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}try{return await Uo({workspaceRoot:r,agentHomeAccess:d,filesystemAccess:c,executable:u,args:f,cwd:n.cwd,env:w,windowsVerbatimArguments:n.windowsVerbatimArguments===!0,fallbackToNormalExecution:n.fallbackToNormalExecution!==!1})}catch(p){if(n.signal?.aborted||n.deadlineAt!==void 0&&Date.now()>=n.deadlineAt||n.fallbackToNormalExecution===!1)throw p;j({source:"sandbox:portable-asrt",level:"warn",message:"Portable ASRT shell preparation failed; using normal permission fallback.",detail:p}),n.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}}}}s(Si,"createAsrtShellSandbox");async function hi(e){let r=await O();if(!r.ready)throw new Error(`ASRT ${ne} is not ready: ${r.diagnostics.join(" ")||"run kodax sandbox setup"}`);let n=l.join(e.snapshotRoot,I()),t=l.join(n,"skills");await G(t,{recursive:!0,mode:448});try{let o=await Yt(e,t),i=Zt(e.network),a=Promise.resolve();return{async run(d,c){let u=a,f;if(a=new Promise(w=>{f=w}),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(g=>g.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 w=K(d.script,"Skill script"),p=o.get(`${d.skill}\0${w}`);if(!p)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(l.extname(p.snapshotPath).toLowerCase())&&d.args.some(g=>/[&|<>^]/.test(g)))throw new Error("Batch Skill script arguments cannot contain command operators.");let m=l.join(c.workspaceRoot,".kodax-a2a-script",I());try{await G(l.join(m,"inputs"),{recursive:!0,mode:448}),await G(l.join(m,"outputs"),{recursive:!0,mode:448}),await uo(c.workspaceRoot,m,d,e.workspaceAccess);let g=eo(p.snapshotPath),y=await ao({config:wo(m,n,i,g.command),command:g.command,args:[...g.args,...d.args],cwd:m,env:B(),endpoints:i},c.signal),b=await fo(c.workspaceRoot,m,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:y.trim(),outputs:b})}finally{await $(m,{recursive:!0,force:!0})}}finally{f?.()}},async dispose(){await a,await $(n,{recursive:!0,force:!0})}}}catch(o){throw await $(n,{recursive:!0,force:!0}),o}}s(hi,"createAsrtSkillScriptRunner");export{ne as a,cr as b,gi as c,O as d,Ht as e,Z as f,yi as g,bi as h,Si as i,hi as j};