@kodax-ai/kodax 0.7.97-beta.2 → 0.7.97-beta.3
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.
- package/CHANGELOG.md +96 -0
- package/README.md +55 -2
- package/README_CN.md +37 -1
- package/dist/artifacts/dist/contract.js +1 -1
- package/dist/artifacts/dist/contract.js.map +1 -1
- package/dist/artifacts/dist/document-render.d.ts +1 -1
- package/dist/artifacts/dist/document-render.js +41 -10
- package/dist/artifacts/dist/document-render.js.map +1 -1
- package/dist/artifacts/dist/kodax.js +1 -1
- package/dist/artifacts/dist/kodax.js.map +1 -1
- package/dist/artifacts/dist/libreoffice.d.ts +6 -1
- package/dist/artifacts/dist/libreoffice.js +37 -13
- package/dist/artifacts/dist/libreoffice.js.map +1 -1
- package/dist/artifacts/dist/runtime.js +13 -6
- package/dist/artifacts/dist/runtime.js.map +1 -1
- package/dist/artifacts/skills/artifact-review/SKILL.md +5 -1
- package/dist/chunks/agent-NWQPMZ7B.js +2 -0
- package/dist/chunks/agent-adapter-V3IPADCX.js +2 -0
- package/dist/chunks/argument-completer-VNKHT4X4.js +2 -0
- package/dist/chunks/{bedrock-native-Z5VNWF5U.js → bedrock-native-OEPOBW6W.js} +1 -1
- package/dist/chunks/{chunk-NSR4RW2F.js → chunk-3I2MIS4D.js} +1 -1
- package/dist/chunks/{chunk-RYBUYHDL.js → chunk-3Y5PBEOD.js} +1 -1
- package/dist/chunks/chunk-4FVCMKG2.js +20 -0
- package/dist/chunks/{chunk-F6GJXQNA.js → chunk-4GYXZTOD.js} +7 -7
- package/dist/chunks/{chunk-EISRVOBJ.js → chunk-4Z7ZHL6V.js} +2 -2
- package/dist/chunks/{chunk-W2CWO4PQ.js → chunk-576AAIQM.js} +1 -1
- package/dist/chunks/chunk-5E2P4RYS.js +4 -0
- package/dist/chunks/{chunk-X5M7TLJV.js → chunk-5LFQ5FVY.js} +1 -1
- package/dist/chunks/{chunk-WMMESRP3.js → chunk-6RDMSU4B.js} +1 -1
- package/dist/chunks/{chunk-3CP7AUWY.js → chunk-7BA4TSKC.js} +1 -1
- package/dist/chunks/{chunk-I325ER7D.js → chunk-AUU3N4V4.js} +1 -1
- package/dist/chunks/{chunk-DCE7XQUG.js → chunk-AYDLX2UK.js} +1 -1
- package/dist/chunks/{chunk-D36OIMV7.js → chunk-BP3NAYKY.js} +64 -64
- package/dist/chunks/{chunk-6TITQQAI.js → chunk-BSCSKJNC.js} +230 -229
- package/dist/chunks/{chunk-2HH5AS7E.js → chunk-DAQGOWKD.js} +88 -462
- package/dist/chunks/{chunk-UF3GZ5PO.js → chunk-EZF6ZRCO.js} +1 -1
- package/dist/chunks/chunk-F2TFWNVZ.js +2 -0
- package/dist/chunks/{chunk-53CJDQS2.js → chunk-FVXZ5L33.js} +1 -1
- package/dist/chunks/{chunk-MCDZNQWD.js → chunk-G32BMSHH.js} +75 -71
- package/dist/chunks/chunk-HJLYZ5AX.js +361 -0
- package/dist/chunks/{chunk-P55RJIOG.js → chunk-IOIFCU46.js} +1 -1
- package/dist/chunks/{chunk-DV5YPYLW.js → chunk-IR46ZHXU.js} +1 -1
- package/dist/chunks/chunk-NJDR5EEF.js +6 -0
- package/dist/chunks/{chunk-KDSO7V4O.js → chunk-OC3DQXN6.js} +1 -1
- package/dist/chunks/{chunk-J2L2NK6E.js → chunk-OMVAPRQI.js} +90 -57
- package/dist/chunks/chunk-OXCB2TRF.js +42 -0
- package/dist/chunks/{chunk-C6JGLEYD.js → chunk-P6R6V7EW.js} +1 -1
- package/dist/chunks/{chunk-SK3RRGHJ.js → chunk-PFBZ4ZXO.js} +28 -28
- package/dist/chunks/{chunk-V2XJSFFE.js → chunk-QDE6THC5.js} +1 -1
- package/dist/chunks/{chunk-EPK6EWRI.js → chunk-QRYEP34M.js} +1 -1
- package/dist/chunks/chunk-ROWYE472.js +460 -0
- package/dist/chunks/{chunk-R42S4BLA.js → chunk-SQGESMNC.js} +1 -1
- package/dist/chunks/{chunk-XZSFUGPN.js → chunk-U73VEVMP.js} +1 -1
- package/dist/chunks/{chunk-D425EZGC.js → chunk-V2TG7GNW.js} +1 -1
- package/dist/chunks/{chunk-QSZCR5GC.js → chunk-VRO2CDBY.js} +97 -97
- package/dist/chunks/{chunk-BBZWF2EA.js → chunk-WMQQQY3D.js} +1 -1
- package/dist/chunks/{chunk-JAF2YLZO.js → chunk-X3YYJJTF.js} +2 -2
- package/dist/chunks/{chunk-UL6YIT4M.js → chunk-XYRI6ER5.js} +1 -1
- package/dist/chunks/chunk-YRPB3LID.js +3 -0
- package/dist/chunks/{chunk-5MUVRFMU.js → chunk-ZDAU3LZ2.js} +1 -1
- package/dist/chunks/{chunk-WWPVEK6B.js → chunk-ZP3YSYWM.js} +10 -10
- package/dist/chunks/{client-LTIFNED5.js → client-NJ32JBC3.js} +1 -1
- package/dist/chunks/compaction-config-JBQGU3NO.js +2 -0
- package/dist/chunks/{construction-bootstrap-OAZKGI5Y.js → construction-bootstrap-CM47ZXG7.js} +1 -1
- package/dist/chunks/dist-O6BHIQEP.js +2 -0
- package/dist/chunks/{google-native-WLL27OV7.js → google-native-BV5GKT5B.js} +1 -1
- package/dist/chunks/host-PI5NL4W4.js +2 -0
- package/dist/chunks/{mistral-native-JXPIDDYZ.js → mistral-native-X42JCFZH.js} +1 -1
- package/dist/chunks/{model-DZF6URW3.js → model-MT3WJX76.js} +1 -1
- package/dist/chunks/{permission-YVVMLQ5I.js → permission-YVDVSE6H.js} +1 -1
- package/dist/chunks/{pi-messages-5LLOZH57.js → pi-messages-DVJANXV5.js} +1 -1
- package/dist/chunks/readline-helpers-5JS7UGTE.js +2 -0
- package/dist/chunks/run-manager-Y6VYEWSJ.js +2 -0
- package/dist/chunks/running-session-ANMBA5XV.js +2 -0
- package/dist/chunks/skills-XL2XIBWV.js +2 -0
- package/dist/chunks/{tool-dispatch-MLM3QTSU.js → tool-dispatch-2FOG65FC.js} +1 -1
- package/dist/chunks/{utils-2QNMYRGA.js → utils-XZ22R6VB.js} +1 -1
- package/dist/client-history.js +2 -0
- package/dist/history-turn.js +3 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1472 -1810
- package/dist/kodax_doctor.js +1 -1
- package/dist/maintenance-scheduler.js +2 -0
- package/dist/manual-topics.json +32 -3
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/one-shot-task.js +1 -1
- package/dist/provider-auth-cli.js +1 -1
- package/dist/runtime-daemon-schema.json +1 -1
- package/dist/sandbox-network-broker.js +93 -441
- package/dist/sdk-a2a.d.ts +13 -13
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +17 -12
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-client.d.ts +6 -6
- package/dist/sdk-client.js +1 -1
- package/dist/sdk-coding.d.ts +17 -17
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +2 -2
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +4 -2
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +13 -13
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +16 -16
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +46 -46
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +87 -435
- package/dist/storage-repair-cli.js +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-CJliu5-D.d.ts → bash-prefix-extractor.d-BghXa_md.d.ts} +9 -3
- package/dist/types-chunks/{capsule.d-EMwSALqK.d.ts → capsule.d-BTlvC5qq.d.ts} +4 -4
- package/dist/types-chunks/{client-contract-B7q69yMA.d.ts → client-contract-B7ZSFKTv.d.ts} +52 -4
- package/dist/types-chunks/{controller.d-C0SAuNKu.d.ts → controller.d-Btu5FDdw.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-D-hPLKaA.d.ts → controller.d-D6rEz5LS.d.ts} +3 -3
- package/dist/types-chunks/{history-retrieval.d-BwEUR9cb.d.ts → history-retrieval.d-B_AriUJp.d.ts} +1 -1
- package/dist/types-chunks/{manifest.d-YE3-AIeO.d.ts → manifest.d-Yyce-hHj.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-BhDU643p.d.ts → public-api.d-BLv3lFmw.d.ts} +9 -4
- package/dist/types-chunks/{review-inbox.d-Bgt46S7L.d.ts → review-inbox.d-yREk25Vf.d.ts} +2 -0
- package/dist/types-chunks/{review-packet.d-ChOfJaNI.d.ts → review-packet.d-xwXxHmML.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-ChzguipG.d.ts → run-manager.d-D4sa9JYz.d.ts} +26 -12
- package/dist/types-chunks/{runtime-client-info-P_mRDG7j.d.ts → runtime-client-info-oRMrkHmb.d.ts} +2 -2
- package/dist/types-chunks/{runtime-event-BW5Pla7a.d.ts → runtime-event-BOyaILWg.d.ts} +3 -1
- package/dist/types-chunks/{sdk-runtime-cDe7qmN3.d.ts → sdk-runtime-CYyXmQok.d.ts} +27 -13
- package/dist/types-chunks/{sdk-session-D3pcSbnA.d.ts → sdk-session-D6mS5qgO.d.ts} +6 -3
- package/dist/types-chunks/{skill-invocation-error.d-gsNNDnnt.d.ts → skill-invocation-error.d-Be3qg4JQ.d.ts} +3 -3
- package/dist/types-chunks/{trusted-repl-entry-Bbkd2HlO.d.ts → trusted-repl-entry-YWNc4m-Z.d.ts} +7 -7
- package/dist/types-chunks/{types.d-BlXTogOo.d.ts → types.d-BQ-hbni4.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-CxHyBvO6.d.ts → utils.d-C0F3Uf2X.d.ts} +6 -6
- package/dist/windows-effect-job-programs.json +4 -0
- package/docs/ARTIFACT_SDK.md +3 -3
- package/docs/CLIENT_CONTRACT.md +4 -2
- package/docs/SDK_MIGRATION.md +9 -5
- package/docs/SPACE_SDK_SEAMS.md +12 -1
- package/package.json +4 -3
- package/public_docs/README.md +10 -3
- package/public_docs/sdk/embedder-guide.md +1 -1
- package/dist/chunks/agent-DS7M57WD.js +0 -2
- package/dist/chunks/agent-adapter-TLWGGK3V.js +0 -2
- package/dist/chunks/argument-completer-OGCXKTRQ.js +0 -2
- package/dist/chunks/chunk-GJXOTOZB.js +0 -465
- package/dist/chunks/chunk-KE2NBMAP.js +0 -20
- package/dist/chunks/chunk-OGTRDK4Q.js +0 -359
- package/dist/chunks/chunk-R2HTPDI7.js +0 -2
- package/dist/chunks/chunk-SDPZFH6M.js +0 -4
- package/dist/chunks/chunk-XDMNJW6J.js +0 -42
- package/dist/chunks/compaction-config-ECMOFP5H.js +0 -2
- package/dist/chunks/dist-5J53DGAO.js +0 -2
- package/dist/chunks/host-65E5NM5P.js +0 -2
- package/dist/chunks/readline-helpers-UZXWBRXQ.js +0 -2
- package/dist/chunks/run-manager-ZFACIZM2.js +0 -2
- package/dist/chunks/running-session-Q5Y6A2QV.js +0 -2
- package/dist/chunks/skills-TJP6BLZJ.js +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as rr,b as
|
|
3
|
-
const isMissingGitTrustPath = ${
|
|
2
|
+
import{a as rr,b as un,c as fn,d as Ie,e as wn,f as pn,g as gn,h as tr,i as yn,j as Ke,m as Xe,n as or,o as ir,p as sr,q as Je,r as ar}from"./chunk-IOIFCU46.js";import{$a as zn,Za as qn,bb as _e,cb as Yn,ib as Zn,jb as Qn,lb as er}from"./chunk-DAQGOWKD.js";import{E as Oe,b as ge,h as G,ja as nr,p as cn,x as Te}from"./chunk-OMVAPRQI.js";import{a}from"./chunk-V4WSBIXB.js";import{spawn as nn,spawnSync as ie}from"node:child_process";import{createHash as rn,randomInt as Wt,randomUUID as X}from"node:crypto";import{once as Ct}from"node:events";import{closeSync as An,constants as xn,existsSync as Re,fsyncSync as Pt,lstatSync as ae,mkdirSync as jr,openSync as Mr,readFileSync as Ne,readSync as Nt,readdirSync as Ur,realpathSync as J,renameSync as _t,rmSync as tn,statSync as Ge,writeFileSync as Fr,writeSync as Tt}from"node:fs";import{copyFile as Qi,lstat as es,mkdir as Vr,readFile as Wn,realpath as ns,rm as le,stat as rs,writeFile as $n}from"node:fs/promises";import{createRequire as Ot}from"node:module";import{createServer as It}from"node:net";import q from"node:os";import u from"node:path";import{lstatSync as at,readFileSync as dt,readdirSync as dr,realpathSync as lt}from"node:fs";import A from"node:path";import{globSync as ct}from"glob";var ut=[".ssh",".tsh",".brev",".gnupg",".aws",".azure",".kube",".docker",".config",".npm",".pki",".terraform.d"],ft=new Set(["certificatefile","controlpath","globalknownhostsfile","identityagent","identityfile","revokedhostkeys","userknownhostsfile"]);function re(e){let n=[],r=A.resolve(e);for(;;)try{return A.join(lt.native(r),...n).toLowerCase()}catch(t){if(!["ENOENT","ENOTDIR"].includes(t.code??""))return G({source:"sandbox:ssh-config",level:"warn",message:`Cannot canonicalize SSH ACL path: ${e}`,detail:t}),A.resolve(e).toLowerCase();let o=A.dirname(r);if(o===r)return A.resolve(e).toLowerCase();n.unshift(A.basename(r)),r=o}}a(re,"pathKey");function lr(e,n){return n===e||n.startsWith(e.endsWith(A.sep)?e:`${e}${A.sep}`)}a(lr,"inside");function wt(e){let n=[],r="",t;for(let o=0;o<e.length;o+=1){let i=e[o];if(i==="#"&&t===void 0)break;if(i===t){t=void 0;continue}if((i==='"'||i==="'")&&t===void 0){t=i;continue}let s=e[o+1];i==="\\"&&s!==void 0&&(['"',"'","\\"].includes(s)||t===void 0&&s===" ")?(r+=s,o+=1):/\s/.test(i)&&t===void 0?(r&&n.push(r),r=""):r+=i}return r&&n.push(r),n}a(wt,"sshWords");function pt(e,n,r){if(e.toLowerCase()==="none")return;if(["~","%d","${HOME}"].includes(e))return n;let t=e.replace(/^(?:~|%d|\$\{HOME\})[/\\]/,`${n}${A.sep}`);return A.isAbsolute(t)?A.resolve(t):r===void 0?void 0:A.resolve(r,t)}a(pt,"sshPath");function mn(e,n,r,t,o=0){let i=re(e);if(t.has(i))return;if(o>=32){G({source:"sandbox:ssh-config",level:"warn",message:`SSH Include depth limit reached; dependencies beyond this config were not inspected: ${e}`});return}t.add(i);let s;try{s=dt(e,"utf8")}catch(d){if(d.code==="ENOENT")return;G({source:"sandbox:ssh-config",level:"warn",message:`Cannot inspect SSH configuration dependencies: ${e}`,detail:d});return}for(let d of s.split(/\r?\n/)){let l=wt(d.replace(/^(\s*[^\s=]+)\s*=\s*/,"$1 ")),c=l.shift()?.toLowerCase();if(c!==void 0)for(let f of l){let g=pt(f,n,c==="include"?A.join(n,".ssh"):void 0);if(g!==void 0)if(c==="include")for(let y of ct(g.replace(/\\/g,"/"),{nodir:!0}))r.push(y),mn(y,n,r,t,o+1);else ft.has(c)&&r.push(g)}}}a(mn,"visitSshConfig");function te(e){let n=[];mn(A.join(e,".ssh","config"),e,n,new Set);let r=re(e),t=ut.map(o=>A.join(e,o));for(let o of n){let i=A.relative(r,re(o));i&&!i.startsWith(`..${A.sep}`)&&i!==".."&&!A.isAbsolute(i)&&t.push(A.join(e,i.split(A.sep)[0]))}return[...new Set(t.map(o=>A.resolve(o)))]}a(te,"windowsSandboxAclExclusions");function cr(e){let n=[];mn(A.join(e,".ssh","config"),e,n,new Set);let r=[A.join(e,".ssh")];for(;r.length>0;){let t=r.pop();n.push(t);let o;try{if(at(t).isSymbolicLink())continue;o=dr(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")continue;throw i}for(let i of o){if(i.isSymbolicLink())continue;let s=A.join(t,i.name);n.push(s),i.isDirectory()&&r.push(s)}}return[...new Set(n.filter(t=>lr(re(e),re(t))))]}a(cr,"windowsSandboxSshCleanupRoots");function ye(e,n,r){let t=re(n),o=r.flatMap(s=>[A.resolve(s).toLowerCase(),re(s)]),i=e.flatMap(s=>re(s)===t?dr(n,{withFileTypes:!0}).filter(d=>!d.isSymbolicLink()).map(d=>A.join(n,d.name)):[s]);return[...new Set(i)].filter(s=>![A.resolve(s).toLowerCase(),re(s)].some(l=>o.some(c=>lr(c,l))))}a(ye,"windowsSandboxAclRoots");import{fileURLToPath as Rr,pathToFileURL as Kr}from"node:url";import{realpathSync as gt,statSync as yt}from"node:fs";import mt from"node:path";function bn(e){let n=e.code;return n==="ENOENT"||n==="ENOTDIR"}a(bn,"isMissingGitTrustPath");function fr(e,n,r){try{let t=n(e).replaceAll("\\","/").replace(/\/+$/,"");return t===""?void 0:/^[A-Za-z]:$/.test(t)?`${t}/`:t}catch(t){if(r(t))return;throw t}}a(fr,"normalizeGitSafeDirectoryRootImplementation");function bt(e){return fr(e,gt,bn)}a(bt,"normalizeGitSafeDirectoryRoot");function wr(e,n,r,t){try{let i=n(r.join(e,".git"));if(i.isDirectory()||i.isFile())return!0}catch(i){if(!t(i))throw i}if(!(r.basename(e).toLowerCase()===".git"||/[/\\]\.git[/\\]modules[/\\]/i.test(e)))return!1;try{return n(r.join(e,"HEAD")).isFile()}catch(i){if(t(i))return!1;throw i}}a(wr,"isRepoBearingGitReadRootImplementation");function St(e){return wr(e,yt,mt,bn)}a(St,"isRepoBearingGitReadRoot");function pr(e,n,r,t,o){let i=[];typeof e=="string"&&e!==""&&i.push(e);for(let l of r??[])o(l)&&i.push(l);i.push(...n??[]);let s=[],d=new Set;for(let l of i){if(s.length>=8)break;let c=t(l);if(c===void 0)continue;let f=c.toLowerCase();d.has(f)||(d.add(f),s.push(c))}return s}a(pr,"windowsGitTrustRootsImplementation");function gr(e,n,r){return pr(e,n,r,bt,St)}a(gr,"windowsGitTrustRoots");function yr(e){if(e==="git_config_count")return"count";if(/^git_config_key_\d+$/.test(e))return"key";if(/^git_config_value_\d+$/.test(e))return"value"}a(yr,"gitConfigEnvKind");function ht(e,n,r,t,o){let i=new Map,s=[],d,l=!1;for(let c=0;c<n;c+=1){if(e[c]!=="--env"||c+1>=n)continue;let f=e[c+1],g=f.indexOf("="),y=(g<0?f:f.slice(0,g)).toLowerCase(),w=r(y);if(w===void 0)continue;l=!0,s.push(c);let b=g<0?"":f.slice(g+1);if(w==="count"){let W=Number.parseInt(b,10);(d!==void 0||!Number.isSafeInteger(W)||W<0||String(W)!==b)&&t(),d=W;continue}let S=Number.parseInt(y.slice(`git_config_${w}_`.length),10),x=i.get(S)??{};(!Number.isSafeInteger(S)||S<0||x[w]!==void 0)&&t(),x[w]=b,i.set(S,x)}return o(i,s,d,l,t)}a(ht,"parseGitConfigEnvironmentImplementation");function He(){throw new Error("ASRT GIT_CONFIG environment has an unexpected shape.")}a(He,"throwUnexpectedGitConfigShape");function mr(e,n,r,t,o){!t||r!==void 0&&e.size===r&&[...e].every(([d,l])=>d<r&&l.key!==void 0&&l.value!==void 0)||o();let s=[...e].map(([d,l])=>({slot:d,key:l.key,value:l.value}));return{argumentIndices:n,pairs:s,sawAny:t}}a(mr,"finishParsedGitConfigEnvironment");function br(e,n){let r=[];for(let o of e)r.push({key:"safe.directory",value:o},{key:"safe.directory",value:`${o}/*`});r.push(...n);let t=r.flatMap((o,i)=>[`GIT_CONFIG_KEY_${i}=${o.key}`,`GIT_CONFIG_VALUE_${i}=${o.value}`]);return t.push(`GIT_CONFIG_COUNT=${r.length}`),t}a(br,"gitSafeDirectoryAssignments");function ur(e,n){let r=[],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 ${n} environment entry.`);let s=o.toUpperCase();if(t.has(s))throw new Error(`Ambiguous ${n} environment variable: ${o}.`);t.add(s),r.push([o,i])}return r}a(ur,"validatedEnvironmentEntries");function vt(e,n){let r=new Map,t=[],o,i=!1;for(let[c,f]of Object.entries(e)){let g=c.toLowerCase(),y=yr(g);if(y===void 0){t.push([c,f]);continue}if(i=!0,y==="count"){let S=Number.parseInt(f,10);(o!==void 0||!Number.isSafeInteger(S)||S<0||String(S)!==f)&&He(),o=S;continue}let w=Number.parseInt(g.slice(`git_config_${y}_`.length),10),b=r.get(w)??{};(!Number.isSafeInteger(w)||w<0||b[y]!==void 0)&&He(),b[y]=f,r.set(w,b)}let d=mr(r,[],o,i,He).pairs.filter(c=>c.key.toLowerCase()!=="safe.directory").sort((c,f)=>c.slot-f.slot),l=Object.fromEntries(t);for(let c of br(n,d)){let f=c.indexOf("=");l[c.slice(0,f)]=c.slice(f+1)}return l}a(vt,"rewriteWindowsGitSafeDirectoryEnvironment");function Sr(e,n,r){let t=ur(e,"ASRT-controlled"),o=ur(n,"Windows target"),i=new Map;for(let s of t)i.set(s[0].toUpperCase(),s);for(let s of o){let d=s[0].toUpperCase();i.has(d)&&d!=="PATH"&&d!=="PATHEXT"||i.set(d,s)}return vt(Object.fromEntries(i.values()),r)}a(Sr,"mergeWindowsSandboxTargetEnvironment");function xt(e,n,r,t){let o=new Set(r.argumentIndices),i=[],s=!1;for(let d=0;d<e.length;d+=1)if(o.has(d)){if(!s){for(let l of t)i.push("--env",l);s=!0}d+=1}else i.push(e[d]);return r.sawAny||i.splice(n,0,...t.flatMap(d=>["--env",d])),i}a(xt,"replaceGitConfigEnvironment");function Et(e,n,r,t,o){let i=e.lastIndexOf("--");if(i<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let s=r(e,i),d=s.pairs.filter(c=>c.key.toLowerCase()!=="safe.directory").sort((c,f)=>c.slot-f.slot),l=t(n,d);return o(e,i,s,l)}a(Et,"rewriteWindowsGitSafeDirectoryArgvImplementation");function hr(){return String.raw`
|
|
3
|
+
const isMissingGitTrustPath = ${bn.toString()};
|
|
4
4
|
const normalizeGitSafeDirectoryRootImplementation = ${fr.toString()};
|
|
5
5
|
const normalizeGitSafeDirectoryRoot = (root) => (
|
|
6
6
|
normalizeGitSafeDirectoryRootImplementation(root, realpathSync, isMissingGitTrustPath)
|
|
@@ -45,7 +45,7 @@ const rewriteWindowsGitSafeDirectoryArgv = (argv, trustRoots) => (
|
|
|
45
45
|
replaceGitConfigEnvironment,
|
|
46
46
|
)
|
|
47
47
|
);
|
|
48
|
-
`}a(hr,"windowsGitBrokerHelpersSource");import{createHash as Sn}from"node:crypto";import bn from"node:path";var M=10,De=[60080,60143];function vr(e){return{...e,windows:{...e.windows,proxyPortRange:[...De]},filesystem:{...e.filesystem,disabled:!0,denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]}}}a(vr,"asrtWindowsNetworkOnlyConfig");function kt(e){return bn.win32.resolve(e.replaceAll("/","\\")).toLowerCase()}a(kt,"normalizePolicyPath");function me(e){return[...new Set(e.map(kt))].sort()}a(me,"normalizedPolicyPaths");function Rt(e){if(e.generation.trim()==="")throw new Error("Windows sandbox v2 generation is empty.");let n=JSON.stringify({version:3,generation:e.generation,preinstalledReadRoots:me(e.preinstalledReadRoots??[]),allowRead:me(e.allowRead),allowWrite:me(e.allowWrite),denyRead:me(e.denyRead),denyWrite:me(e.denyWrite)});return Sn("sha256").update(n,"utf8").digest("hex")}a(Rt,"windowsSandboxV2PolicyFingerprint");function At(e){if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("Invalid Windows sandbox v2 policy fingerprint.");let n=Sn("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)=>n.readUInt32LE(o*4)).join("-")}`}a(At,"windowsSandboxV2PolicyCapabilitySid");function xr(e){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.setupGenerationNonce))throw new Error("Invalid Windows sandbox setup generation nonce.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Invalid Windows sandbox account SID.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Invalid Windows sandbox group SID.");if(!/^[0-9a-f]{64}$/i.test(e.asrtSha256)||!/^[0-9a-f]{64}$/i.test(e.shellSha256))throw new Error("Invalid Windows sandbox generation artifact hash.");return Sn("sha256").update(JSON.stringify({version:M,setupGenerationNonce:e.setupGenerationNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtSha256:e.asrtSha256.toLowerCase(),shellSha256:e.shellSha256.toLowerCase()}),"utf8").digest("hex")}a(xr,"windowsSandboxV2Generation");function Er(e){let n=new Set,r=1,t={},o=Object.entries(e);if(o.length>4096)throw new Error("Windows sandbox target environment has too many entries.");for(let[d,l]of o){if(d===""||d.includes("=")||d.includes("\0")||l.includes("\0"))throw new Error("Windows sandbox target environment contains an invalid entry.");let c=d.toUpperCase();if(n.has(c))throw new Error("Windows sandbox target environment contains ambiguous names.");n.add(c),r+=d.length+l.length+2,t[d]=l}if(r>3e4)throw new Error("Windows sandbox target environment exceeds its UTF-16 bound.");let i=Buffer.from(JSON.stringify({protocol:M,targetEnvironment:Object.entries(t).map(([d,l])=>({name:d,value:l}))}),"utf8");if(i.byteLength>512*1024)throw new Error("Windows sandbox bootstrap frame exceeds 512 KiB.");let s=Buffer.allocUnsafe(4+i.byteLength);return s.writeUInt32LE(i.byteLength,0),i.copy(s,4),s}a(Er,"encodeWindowsSandboxV2Bootstrap");function hn(e){let n=Buffer.allocUnsafe(5);return n.writeUInt32LE(1,0),n[4]=e==="close-stdin"?5:10,n}a(hn,"encodeWindowsSandboxV2ControlFrame");function kr(e){if(e.targetArgv.length===0||e.targetArgv[0]?.trim()==="")throw new Error("Windows sandbox v2 target argv is empty.");if(e.denyRead.length>0)throw new Error("Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.");if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.filesystemCapabilityNonce))throw new Error("Windows sandbox v2 filesystem capability nonce is invalid.");if(!/^\\\\\.\\pipe\\kodax-v2-[1-9]\d{0,9}-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.controllerPipe))throw new Error("Windows sandbox v2 controller pipe is invalid.");if(e.asrtInvocation.prefixArgs.at(-1)!=="--")throw new Error("Windows sandbox v2 ASRT prefix omitted its target separator.");if(e.asrtInvocation.prefixArgs.some(o=>{let i=o.toLowerCase();return i==="--env"||i.startsWith("--env=")}))throw new Error("Windows sandbox v2 ASRT prefix retained a target environment entry.");if(!Number.isSafeInteger(e.operationDeadlineUnixMs)||e.operationDeadlineUnixMs<=0)throw new Error("Windows sandbox v2 operation deadline is invalid.");if(!bn.win32.isAbsolute(e.terminalRecordPath)||e.terminalRecordPath.includes("\0"))throw new Error("Windows sandbox v2 terminal record path is invalid.");if(!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.terminalNonce))throw new Error("Windows sandbox v2 terminal nonce is invalid.");if(typeof e.setupMarkerPath!="string"||typeof e.setupMarkerSha256!="string"||!bn.win32.isAbsolute(e.setupMarkerPath)||e.setupMarkerPath.includes("\0")||!/^[0-9a-f]{64}$/i.test(e.setupMarkerSha256))throw new Error("Windows sandbox v2 setup marker proof is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Windows sandbox v2 account SID is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Windows sandbox v2 group SID is invalid.");let n=new Set(me(e.allowRead));if(me(e.preinstalledReadRoots).some(o=>!n.has(o)))throw new Error("Windows sandbox v2 preinstalled read root is not an allowRead root.");let r=Rt({generation:e.generation,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite}),t=At(r);if(e.sandboxGroupSid===e.sandboxUserSid||e.sandboxGroupSid===t)throw new Error("Windows sandbox v2 group SID must be an independent account group.");return{protocol:M,generation:e.generation,aclExclusions:e.aclExclusions??[],filesystemCapabilityNonce:e.filesystemCapabilityNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtExecutable:e.asrtInvocation.executable,asrtPrefixArgs:e.asrtInvocation.prefixArgs,targetArgv:e.targetArgv,cwd:e.cwd,policyFingerprint:r,policyCapabilitySid:t,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite,controllerPipe:e.controllerPipe,terminalRecordPath:e.terminalRecordPath,terminalNonce:e.terminalNonce.toLowerCase(),operationDeadlineUnixMs:e.operationDeadlineUnixMs,setupMarkerPath:e.setupMarkerPath,setupMarkerSha256:e.setupMarkerSha256}}a(kr,"createWindowsSandboxV2RunRequest");function oe(e={}){let n=ar(import.meta.url,"shellSandbox",M,e);return{path:n.path,sha256:n.entry.sha256,developmentTrustRoots:n.developmentTrustRoots}}a(oe,"resolveWindowsSandboxV2Executable");var Ae="0.0.65",Dt="Windows ASRT filesystem/workspace-session execution is retired; use the native v2 shell sandbox.";function Lt(){if(process.platform==="win32")throw new Error(Dt)}a(Lt,"rejectWindowsLegacyAsrtFilesystemBackend");var{SandboxManager:xn,getSrtWinPath:Bt,getWindowsSandboxUserStatus:be,installWindowsSandbox:Ar,resolveSrtWin:$t,uninstallWindowsSandbox:Gt}=await import("@anthropic-ai/sandbox-runtime"),Wn=1024*1024,$n=16*1024;function Cn(e){e.failed=!0,fe.get(e.key)===e&&fe.delete(e.key)}a(Cn,"retireWindowsNetworkBrokerState");function je(e,n){let r=e.child;if(r===void 0)return;n?r.ref():r.unref();let t=new Set;for(let o of[r.stdin,r.stderr,r.stdio[3]])o!=null&&t.add(o);for(let o of t){let i=Reflect.get(o,n?"ref":"unref");typeof i=="function"&&i.call(o)}}a(je,"setWindowsNetworkBrokerReferenced");function jt(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:11,asrtVersion:Ae,platform:process.platform,backend:e,genericCommandExecution:!0,controls:["filesystem","network","environment","timeout","output"],ordinaryCallsTriggerSetup:!1,setupMayElevate:process.platform==="win32",unavailableBehavior:"structured-no-execution",permissionFallback:"normal-permission-policy",gitSafeDirectory:"authorized-repo-roots",delayedEffectDrainRecovery:"automatic",sameBootAclRecovery:"sandbox-user-process-probe",trustedTextAuthority:"host-transaction",windowsShellAuthority:"native-token-job-v2",commandLifetimeFilesystemLease:!1}}a(jt,"sandboxRuntimeCapability");var on=1048576,sn=12e4,Qe=3e4,Pn=15e3,fe=new Map,Nn=new Set,Mt=1e3,Wr=0;function Xr(e){Wr+=1,e.lastUsed=Wr}a(Xr,"touchWindowsNetworkBroker");var Gn=Ot(import.meta.url),Ut=process.env.KODAX_BUNDLED==="true"?void 0:Kr(Gn.resolve("@anthropic-ai/sandbox-runtime")).href;var Ft=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",u.join(".cargo","credentials.toml"),u.join(".config","gcloud"),u.join(".config","gh"),u.join(".config","openai"),u.join(".config","anthropic"),".gitconfig",u.join(".config","git","config"),".terraformrc",u.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",u.join(".config","fish","config.fish"),u.join(".config","fish","fish_variables"),".bash_history",".zsh_history",u.join(".m2","settings.xml"),u.join(".m2","settings-security.xml"),u.join(".gradle","gradle.properties"),u.join(".nuget","NuGet","NuGet.Config"),u.join(".pip","pip.conf"),u.join(".config","pip","pip.conf"),u.join(".cache","huggingface","token"),u.join(".huggingface","token"),u.join(".config","rclone","rclone.conf"),u.join(".local","share","keyrings"),u.join("Library","Keychains"),u.join("AppData","Roaming","Microsoft","Protect"),u.join("AppData","Roaming","Microsoft","Credentials"),u.join("AppData","Roaming","Microsoft","Vault"),u.join("AppData","Local","Microsoft","Credentials"),u.join("AppData","Local","Microsoft","Protect"),u.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"],Vt=["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"],Jr=["native-text-state-v1","runtime","processes","learned","memory-scopes"],Kt=JSON.stringify(zn),Cr=JSON.stringify(qn),Xt=String.raw`
|
|
48
|
+
`}a(hr,"windowsGitBrokerHelpersSource");import{createHash as hn}from"node:crypto";import Sn from"node:path";var M=10,De=[60080,60143];function vr(e){return{...e,windows:{...e.windows,proxyPortRange:[...De]},filesystem:{...e.filesystem,disabled:!0,denyRead:[],allowRead:[],allowWrite:[],denyWrite:[]}}}a(vr,"asrtWindowsNetworkOnlyConfig");function kt(e){return Sn.win32.resolve(e.replaceAll("/","\\")).toLowerCase()}a(kt,"normalizePolicyPath");function me(e){return[...new Set(e.map(kt))].sort()}a(me,"normalizedPolicyPaths");function Rt(e){if(e.generation.trim()==="")throw new Error("Windows sandbox v2 generation is empty.");let n=JSON.stringify({version:3,generation:e.generation,preinstalledReadRoots:me(e.preinstalledReadRoots??[]),allowRead:me(e.allowRead),allowWrite:me(e.allowWrite),denyRead:me(e.denyRead),denyWrite:me(e.denyWrite)});return hn("sha256").update(n,"utf8").digest("hex")}a(Rt,"windowsSandboxV2PolicyFingerprint");function At(e){if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("Invalid Windows sandbox v2 policy fingerprint.");let n=hn("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)=>n.readUInt32LE(o*4)).join("-")}`}a(At,"windowsSandboxV2PolicyCapabilitySid");function xr(e){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.setupGenerationNonce))throw new Error("Invalid Windows sandbox setup generation nonce.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Invalid Windows sandbox account SID.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Invalid Windows sandbox group SID.");if(!/^[0-9a-f]{64}$/i.test(e.asrtSha256)||!/^[0-9a-f]{64}$/i.test(e.shellSha256))throw new Error("Invalid Windows sandbox generation artifact hash.");return hn("sha256").update(JSON.stringify({version:M,setupGenerationNonce:e.setupGenerationNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtSha256:e.asrtSha256.toLowerCase(),shellSha256:e.shellSha256.toLowerCase()}),"utf8").digest("hex")}a(xr,"windowsSandboxV2Generation");function Er(e){let n=new Set,r=1,t={},o=Object.entries(e);if(o.length>4096)throw new Error("Windows sandbox target environment has too many entries.");for(let[d,l]of o){if(d===""||d.includes("=")||d.includes("\0")||l.includes("\0"))throw new Error("Windows sandbox target environment contains an invalid entry.");let c=d.toUpperCase();if(n.has(c))throw new Error("Windows sandbox target environment contains ambiguous names.");n.add(c),r+=d.length+l.length+2,t[d]=l}if(r>3e4)throw new Error("Windows sandbox target environment exceeds its UTF-16 bound.");let i=Buffer.from(JSON.stringify({protocol:M,targetEnvironment:Object.entries(t).map(([d,l])=>({name:d,value:l}))}),"utf8");if(i.byteLength>512*1024)throw new Error("Windows sandbox bootstrap frame exceeds 512 KiB.");let s=Buffer.allocUnsafe(4+i.byteLength);return s.writeUInt32LE(i.byteLength,0),i.copy(s,4),s}a(Er,"encodeWindowsSandboxV2Bootstrap");function vn(e){let n=Buffer.allocUnsafe(5);return n.writeUInt32LE(1,0),n[4]=e==="close-stdin"?5:10,n}a(vn,"encodeWindowsSandboxV2ControlFrame");function kr(e){if(e.targetArgv.length===0||e.targetArgv[0]?.trim()==="")throw new Error("Windows sandbox v2 target argv is empty.");if(e.denyRead.length>0)throw new Error("Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.");if(!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.filesystemCapabilityNonce))throw new Error("Windows sandbox v2 filesystem capability nonce is invalid.");if(!/^\\\\\.\\pipe\\kodax-v2-[1-9]\d{0,9}-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.controllerPipe))throw new Error("Windows sandbox v2 controller pipe is invalid.");if(e.asrtInvocation.prefixArgs.at(-1)!=="--")throw new Error("Windows sandbox v2 ASRT prefix omitted its target separator.");if(e.asrtInvocation.prefixArgs.some(o=>{let i=o.toLowerCase();return i==="--env"||i.startsWith("--env=")}))throw new Error("Windows sandbox v2 ASRT prefix retained a target environment entry.");if(!Number.isSafeInteger(e.operationDeadlineUnixMs)||e.operationDeadlineUnixMs<=0)throw new Error("Windows sandbox v2 operation deadline is invalid.");if(!Sn.win32.isAbsolute(e.terminalRecordPath)||e.terminalRecordPath.includes("\0"))throw new Error("Windows sandbox v2 terminal record path is invalid.");if(!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(e.terminalNonce))throw new Error("Windows sandbox v2 terminal nonce is invalid.");if(typeof e.setupMarkerPath!="string"||typeof e.setupMarkerSha256!="string"||!Sn.win32.isAbsolute(e.setupMarkerPath)||e.setupMarkerPath.includes("\0")||!/^[0-9a-f]{64}$/i.test(e.setupMarkerSha256))throw new Error("Windows sandbox v2 setup marker proof is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxUserSid))throw new Error("Windows sandbox v2 account SID is invalid.");if(!/^S-1-(?:\d+-)+\d+$/.test(e.sandboxGroupSid))throw new Error("Windows sandbox v2 group SID is invalid.");let n=new Set(me(e.allowRead));if(me(e.preinstalledReadRoots).some(o=>!n.has(o)))throw new Error("Windows sandbox v2 preinstalled read root is not an allowRead root.");let r=Rt({generation:e.generation,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite}),t=At(r);if(e.sandboxGroupSid===e.sandboxUserSid||e.sandboxGroupSid===t)throw new Error("Windows sandbox v2 group SID must be an independent account group.");return{protocol:M,generation:e.generation,aclExclusions:e.aclExclusions??[],filesystemCapabilityNonce:e.filesystemCapabilityNonce.toLowerCase(),sandboxUserSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,asrtExecutable:e.asrtInvocation.executable,asrtPrefixArgs:e.asrtInvocation.prefixArgs,targetArgv:e.targetArgv,cwd:e.cwd,policyFingerprint:r,policyCapabilitySid:t,preinstalledReadRoots:e.preinstalledReadRoots,allowRead:e.allowRead,allowWrite:e.allowWrite,denyRead:e.denyRead,denyWrite:e.denyWrite,controllerPipe:e.controllerPipe,terminalRecordPath:e.terminalRecordPath,terminalNonce:e.terminalNonce.toLowerCase(),operationDeadlineUnixMs:e.operationDeadlineUnixMs,setupMarkerPath:e.setupMarkerPath,setupMarkerSha256:e.setupMarkerSha256}}a(kr,"createWindowsSandboxV2RunRequest");function oe(e={}){let n=ar(import.meta.url,"shellSandbox",M,e);return{path:n.path,sha256:n.entry.sha256,developmentTrustRoots:n.developmentTrustRoots}}a(oe,"resolveWindowsSandboxV2Executable");var Ae="0.0.65",Dt="Windows ASRT filesystem/workspace-session execution is retired; use the native v2 shell sandbox.";function Lt(){if(process.platform==="win32")throw new Error(Dt)}a(Lt,"rejectWindowsLegacyAsrtFilesystemBackend");var{SandboxManager:En,getSrtWinPath:Bt,getWindowsSandboxUserStatus:be,installWindowsSandbox:Ar,resolveSrtWin:$t,uninstallWindowsSandbox:Gt}=await import("@anthropic-ai/sandbox-runtime"),Cn=1024*1024,Gn=16*1024;function Pn(e){e.failed=!0,fe.get(e.key)===e&&fe.delete(e.key)}a(Pn,"retireWindowsNetworkBrokerState");function je(e,n){let r=e.child;if(r===void 0)return;n?r.ref():r.unref();let t=new Set;for(let o of[r.stdin,r.stderr,r.stdio[3]])o!=null&&t.add(o);for(let o of t){let i=Reflect.get(o,n?"ref":"unref");typeof i=="function"&&i.call(o)}}a(je,"setWindowsNetworkBrokerReferenced");function jt(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:11,asrtVersion:Ae,platform:process.platform,backend:e,genericCommandExecution:!0,controls:["filesystem","network","environment","timeout","output"],ordinaryCallsTriggerSetup:!1,setupMayElevate:process.platform==="win32",unavailableBehavior:"structured-no-execution",permissionFallback:"normal-permission-policy",gitSafeDirectory:"authorized-repo-roots",delayedEffectDrainRecovery:"automatic",sameBootAclRecovery:"sandbox-user-process-probe",trustedTextAuthority:"host-transaction",windowsShellAuthority:"native-token-job-v2",commandLifetimeFilesystemLease:!1}}a(jt,"sandboxRuntimeCapability");var on=1048576,sn=12e4,Qe=3e4,Nn=15e3,fe=new Map,_n=new Set,Mt=1e3,Wr=0;function Xr(e){Wr+=1,e.lastUsed=Wr}a(Xr,"touchWindowsNetworkBroker");var jn=Ot(import.meta.url),Ut=process.env.KODAX_BUNDLED==="true"?void 0:Kr(jn.resolve("@anthropic-ai/sandbox-runtime")).href;var Ft=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",u.join(".cargo","credentials.toml"),u.join(".config","gcloud"),u.join(".config","gh"),u.join(".config","openai"),u.join(".config","anthropic"),".gitconfig",u.join(".config","git","config"),".terraformrc",u.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",u.join(".config","fish","config.fish"),u.join(".config","fish","fish_variables"),".bash_history",".zsh_history",u.join(".m2","settings.xml"),u.join(".m2","settings-security.xml"),u.join(".gradle","gradle.properties"),u.join(".nuget","NuGet","NuGet.Config"),u.join(".pip","pip.conf"),u.join(".config","pip","pip.conf"),u.join(".cache","huggingface","token"),u.join(".huggingface","token"),u.join(".config","rclone","rclone.conf"),u.join(".local","share","keyrings"),u.join("Library","Keychains"),u.join("AppData","Roaming","Microsoft","Protect"),u.join("AppData","Roaming","Microsoft","Credentials"),u.join("AppData","Roaming","Microsoft","Vault"),u.join("AppData","Local","Microsoft","Credentials"),u.join("AppData","Local","Microsoft","Protect"),u.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"],Vt=["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"],Jr=["native-text-state-v1","runtime","processes","learned","memory-scopes"],Kt=JSON.stringify(zn),Cr=JSON.stringify(qn),Xt=String.raw`
|
|
49
49
|
const { spawn } = require('node:child_process');
|
|
50
50
|
const { writeSync } = require('node:fs');
|
|
51
51
|
const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
|
|
@@ -109,19 +109,19 @@ input.once('line', async (gate) => {
|
|
|
109
109
|
});
|
|
110
110
|
child.once('close', (code) => { process.exitCode = Number.isInteger(code) ? code : 1; });
|
|
111
111
|
});
|
|
112
|
-
`,qe;function Qt(){return qe!==void 0||(qe=rr("asrtBroker").replaceAll("{{KODAX_ASRT_SLOT_0}}",()=>String(Wn)).replaceAll("{{KODAX_ASRT_SLOT_1}}",()=>String(Yt)).replaceAll("{{KODAX_ASRT_SLOT_2}}",()=>String($n)).replaceAll("{{KODAX_ASRT_SLOT_3}}",()=>String(Kt)).replaceAll("{{KODAX_ASRT_SLOT_4}}",()=>String(Ht)).replaceAll("{{KODAX_ASRT_SLOT_5}}",()=>String(zt)).replaceAll("{{KODAX_ASRT_SLOT_6}}",()=>String(Cr)).replaceAll("{{KODAX_ASRT_SLOT_7}}",()=>String(Cr))),qe}a(Qt,"asrtBrokerSource");var ve,ze=0,eo=3e4,de=new Map,Be;function H(e){return e instanceof Error?e.message:String(e)}a(H,"errorText");function U(e,...n){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&n.includes(e.code)}a(U,"isFileSystemError");var no={x64:"x64",arm64:"arm64"};function ro(e){let n=no[process.arch];if(n===void 0)return;let r=u.join(e,"vendor","srt-win",n,"srt-win.exe");return Re(r)?r:void 0}a(ro,"bundledSrtWinSidecarPath");function to(e=u.dirname(process.execPath)){if(process.env.KODAX_BUNDLED==="true"){let n=ro(e);if(n!==void 0)return n}return Bt()}a(to,"resolveSrtWinSourcePath");async function Fe(e=[],n=!0){let r=de.get(n);if(r!==void 0){let o=await r;try{return cn(o.path,o.sha256),Je(o.developmentTrustRoots,e),o}catch{return de.get(n)===r&&(de.delete(n),Be=void 0),Fe(e,n)}}if(!de.has(n)){let o=(async()=>{let i=sr(import.meta.url,to(),Ae,{untrustedWriteRoots:e,provision:n}),s=u.dirname(i.path);await Vr(an(),{recursive:!0,mode:448});let d={path:i.path,directory:s,sha256:i.sha256,developmentTrustRoots:i.developmentTrustRoots,srtWin:$t({path:i.path})};return Be=d,d})();de.set(n,o),o.catch(()=>{de.get(n)===o&&(de.delete(n),Be=void 0)})}let t=await de.get(n);return Je(t.developmentTrustRoots,e),t}a(Fe,"prepareWindowsSandboxRunner");function jn(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(Be===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return Be}a(jn,"requirePreparedWindowsRunner");var Ye,oo=35e3,Me="[acl_cleanup_unconfirmed]",Pe=class extends Error{static{a(this,"WindowsSandboxAclAdmissionError")}recoveryAction;constructor(n,r){super(n,r),this.name="WindowsSandboxAclAdmissionError",this.recoveryAction=r?.recoveryAction}},_n=class extends Pe{static{a(this,"UnreadableWindowsSandboxAclRecoveryTicketError")}constructor(n,r){super(`Windows sandbox ACL recovery ticket is temporarily unreadable: ${n}. Sandbox admission will retry automatically; non-sandbox work remains available.`,{cause:r,recoveryAction:"automatic-retry"}),this.name="UnreadableWindowsSandboxAclRecoveryTicketError"}};function io(e){return/^windows-boot-\d+$/.test(e)}a(io,"isCanonicalWindowsBootIdentity");function so(e){return e.diagnostics.some(n=>n.startsWith(Me))}a(so,"doctorHasWindowsSandboxAclCleanupBlock");function Hr(){let e=Object.entries(process.env).find(([n,r])=>n.toUpperCase()==="PROGRAMDATA"&&r!==void 0)?.[1]??"C:\\ProgramData";return u.join(u.resolve(e),"KodaX","sandbox-runtime","acl-poison")}a(Hr,"windowsSandboxAclPoisonDirectory");function an(){return u.dirname(Hr())}a(an,"windowsSandboxAclCoordinationDirectory");function ao(e=ge()){return u.join(u.resolve(e),"sandbox-runtime","acl-poison")}a(ao,"legacyWindowsSandboxAclPoisonDirectory");function Pr(){return u.join(an(),"windows-v2-setup.lock")}a(Pr,"windowsSandboxV2SetupLockFile");var lo="[windows_v2_acl_cutover_required]",co="[legacy_acl_state_ignored]",Mn=1024*1024,We=11,Un=8,En,qr=un,ce,xe=new Map,Le;function kn(){if(En!==void 0)return En;let e=oe({provision:!0}),n=ie(e.path,["__current-user-sid"],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3}),r=n.status===0?n.stdout.trim():"";if(!/^S-\d+(?:-\d+)+$/i.test(r)){let t=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw new Error(`cannot identify the Windows v2 setup owner SID: ${t}`)}return En=r,r}a(kn,"windowsSandboxV2HostUserSid");function se(){return u.join(qr(),"windows-v2-cutover.json")}a(se,"windowsSandboxV2CutoverMarkerFile");function uo(){return u.join(qr(),"windows-v2-legacy-drain.json")}a(uo,"windowsSandboxLegacyDrainMarkerFile");function fo(e){if(Buffer.byteLength(e,"utf8")>Mn)throw new Error("the cutover marker exceeds its size bound");let n=JSON.parse(e);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error("the cutover marker is not an object");let r=n;if(Object.keys(r).sort().join(",")!=="filesystemCapabilityNonce,generationNonce,hostUserSid,protocol,sandboxGroupSid,sandboxUserSid,setupReadRoots,version"||r.version!==We||r.protocol!==M||typeof r.generationNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.generationNonce)||typeof r.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.filesystemCapabilityNonce)||typeof r.hostUserSid!="string"||typeof r.sandboxUserSid!="string"||typeof r.sandboxGroupSid!="string"||!Array.isArray(r.setupReadRoots)||r.setupReadRoots.length>1024||!r.setupReadRoots.every(o=>typeof o=="string"&&u.isAbsolute(o)&&!o.includes("\0")&&o.length<=32767)||!/^S-\d+(?:-\d+)+$/i.test(r.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxGroupSid))throw new Error("the cutover marker has an incompatible schema or SID");return{version:We,protocol:M,generationNonce:r.generationNonce,filesystemCapabilityNonce:r.filesystemCapabilityNonce,hostUserSid:r.hostUserSid,sandboxUserSid:r.sandboxUserSid,sandboxGroupSid:r.sandboxGroupSid,setupReadRoots:r.setupReadRoots}}a(fo,"parseWindowsSandboxV2CutoverMarker");function zr(){let e=se(),n;try{n=ae(e)}catch(r){if(U(r,"ENOENT"))return;throw r}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1)throw new Error("the cutover marker is not a private regular file");return fo(Ne(e,"utf8"))}a(zr,"readWindowsSandboxV2CutoverMarker");function wo(){let e=se(),n;try{n=ae(e)}catch(o){if(U(o,"ENOENT"))return;throw o}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1||n.size>Mn)throw new Error("the previous cutover marker is not a private bounded regular file");let r=JSON.parse(Ne(e,"utf8"));if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("the previous cutover marker is not an object");let t=r;if(typeof t.version!="number"||!Number.isSafeInteger(t.version)||t.version<=0||typeof t.hostUserSid!="string"||typeof t.sandboxUserSid!="string"||typeof t.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(t.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxGroupSid))throw new Error("the previous cutover marker has an incompatible identity");if(t.setupReadRoots!==void 0&&(!Array.isArray(t.setupReadRoots)||t.setupReadRoots.length>1024||!t.setupReadRoots.every(o=>typeof o=="string"&&u.isAbsolute(o))))throw new Error("the previous cutover marker has invalid setup read roots");return{version:t.version,installing:t.state==="installing",setupReadRoots:t.setupReadRoots??[],...t.legacyAclCleanup===void 0?{}:{legacyAclCleanup:po(t.legacyAclCleanup)},hostUserSid:t.hostUserSid,sandboxUserSid:t.sandboxUserSid,sandboxGroupSid:t.sandboxGroupSid}}a(wo,"readPreviousWindowsSandboxV2CutoverIdentity");function po(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("invalid pending Windows SSH ACL cleanup");let n=e;if(!Array.isArray(n.roots)||n.roots.length>1024||!n.roots.every(r=>typeof r=="string"&&u.isAbsolute(r)&&!r.includes("\0"))||typeof n.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxGroupSid)||typeof n.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.filesystemCapabilityNonce))throw new Error("invalid pending Windows SSH ACL cleanup authority");return{roots:n.roots,sandboxGroupSid:n.sandboxGroupSid,filesystemCapabilityNonce:n.filesystemCapabilityNonce}}a(po,"parseWindowsLegacyAclCleanup");function ue(e){return new Error(`${lo} ${e}. Run "kodax sandbox setup" to rotate the legacy sandbox account SID and activate Windows v2.`)}a(ue,"windowsSandboxV2CutoverError");function Yr(e){let n;try{n=zr()}catch(r){throw ue(`The recorded migration state is invalid: ${H(r)}`)}if(n===void 0)throw ue("The sandbox account has not completed the Windows v2 ACL cutover");if(e.sid!==n.sandboxUserSid||e.groupSid!==n.sandboxGroupSid)throw ue("The installed sandbox account identity does not match the recorded v2 generation");return n}a(Yr,"assertWindowsSandboxV2Cutover");function go(){let e=se();try{let n=ae(e);if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1)return;let r=JSON.parse(Ne(e,"utf8"));if(r===null||typeof r!="object"||Array.isArray(r))return;let t=Reflect.get(r,"filesystemCapabilityNonce");return typeof t=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?t.toLowerCase():void 0}catch{return}}a(go,"previousWindowsFilesystemCapabilityNonce");function Nr(e){let n;try{n=zr()}catch(t){throw ue(`The recorded migration state is invalid: ${H(t)}`)}if(n===void 0)throw ue("The sandbox account has not completed the Windows v2 ACL cutover");if(ce!==void 0&&JSON.stringify(ce)===JSON.stringify(n))return ce;let r=Yr(be({srtWin:e.srtWin}));return ce=r,r}a(Nr,"currentWindowsSandboxV2Cutover");function dn(e,n,r=!0){let t=`${e}\0${r?"provision":"verify"}`,o=xe.get(t),i=o!==void 0;return o===void 0&&(o=Promise.resolve().then(()=>oe({sandboxReadSid:e,provision:r})),xe.set(t,o),o.catch(()=>{xe.get(t)===o&&xe.delete(t)})),wn(n),o.then(async s=>{if(i)try{cn(s.path,s.sha256)}catch{return xe.get(t)===o&&xe.delete(t),dn(e,n,r)}return Je(s.developmentTrustRoots,n),s})}a(dn,"prepareWindowsShellArtifact");function yo(){if(Le===void 0){let e=Promise.resolve().then(()=>{let n=Ie(),r=ae(n);if(!r.isDirectory()||r.isSymbolicLink())throw new Error("Protected native shell control state is not a regular directory.");let t=J.native(un()),o=J.native(n);if(!L(t,o))throw new Error("Protected native shell control state escaped its cache root.");return o});Le=e,e.catch(()=>{Le===e&&(Le=void 0)})}return Le}a(yo,"prepareWindowsControlDirectory");function Zr(e,n){jr(u.dirname(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.${X()}.tmp`,t=Buffer.from(JSON.stringify(n),"utf8"),o;try{o=Mr(r,vn.O_CREAT|vn.O_EXCL|vn.O_WRONLY,384);let i=0;for(;i<t.length;){let d=Tt(o,t,i,t.length-i);if(d===0)throw new Error("Windows sandbox private-state write made no progress.");i+=d}Pt(o);let s=o;o=void 0,Rn(s),_t(r,e)}finally{o!==void 0&&Rn(o),tn(r,{force:!0})}}a(Zr,"writePrivateJsonFile");async function Tn(e){let n=Date.now()+Qe;for(;;)try{tn(e,{force:!0});return}catch(r){if(!U(r,"EACCES","EBUSY","EPERM")||Date.now()>=n)throw r;await new Promise(t=>setTimeout(t,25))}}a(Tn,"removeWindowsSandboxCutoverMarkerForSetup");function _r(e){Zr(se(),e)}a(_r,"writeWindowsSandboxV2CutoverMarker");function Tr(e,n){let r={...e,state:"installing",setupReadRoots:[...new Set([...e.setupReadRoots,...n?.setupReadRoots??[]])],...Bo(n,e.filesystemCapabilityNonce)};return ce=void 0,Zr(se(),r),r}a(Tr,"stageWindowsSandboxV2CutoverMarker");async function mo(){ce=void 0,await Tn(se())}a(mo,"invalidateWindowsSandboxV2CutoverForSetup");async function bo(){let e=u.join(an(),"windows-v2-cutover.json");await Tn(e),await Tn(uo())}a(bo,"retireLegacyWindowsSandboxCutoverForSetup");function So(){let e=oe({provision:!0}).path,n=ie(e,["__recover-execution-denies",Ie()],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:15*6e4});if(n.error!==void 0||n.status!==0){let r=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw new Error(`Windows v2 denyRead setup recovery failed: ${r}`)}}a(So,"recoverWindowsV2ExecutionDeniesForSetup");function ho(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let r=n;if(r.version!==1&&r.version!==2&&r.version!==3||r.state!==void 0&&r.state!=="active"&&r.state!=="unconfirmed"&&r.state!=="recovery_pending"||r.ticketId!==void 0&&(typeof r.ticketId!="string"||!/^[0-9a-f-]{36}$/i.test(r.ticketId))||r.policyKey!==void 0&&typeof r.policyKey!="string"||r.holderPid!==void 0&&(typeof r.holderPid!="number"||!Number.isSafeInteger(r.holderPid)||r.holderPid<=0)||r.holderProcessStartIdentity!==void 0&&typeof r.holderProcessStartIdentity!="string"||r.pid!==void 0&&(typeof r.pid!="number"||!Number.isSafeInteger(r.pid)||r.pid<=0)||r.processStartIdentity!==void 0&&typeof r.processStartIdentity!="string"||r.windowsBootIdentity!==void 0&&(typeof r.windowsBootIdentity!="string"||!io(r.windowsBootIdentity))||r.containment!==void 0&&(typeof r.containment!="object"||r.containment===null||r.containment.kind!=="windows-job"||typeof r.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(r.containment.jobName))||r.containment.sandboxSid!==void 0&&(typeof r.containment.sandboxSid!="string"||!/^S-1-(?:\d+-)+\d+$/i.test(String(r.containment.sandboxSid)))||typeof r.containment.supervisorPid!="number"||!Number.isSafeInteger(r.containment.supervisorPid)||Number(r.containment.supervisorPid)<=0||r.containment.supervisorProcessStartIdentity!==void 0&&typeof r.containment.supervisorProcessStartIdentity!="string"))throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:r.version,...r.state==="active"||r.state==="unconfirmed"||r.state==="recovery_pending"?{state:r.state}:{},...typeof r.ticketId=="string"?{ticketId:r.ticketId}:{},...typeof r.policyKey=="string"?{policyKey:r.policyKey}:{},...typeof r.holderPid=="number"?{holderPid:r.holderPid}:{},...typeof r.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:r.holderProcessStartIdentity}:{},...typeof r.pid=="number"?{pid:r.pid}:{},...typeof r.processStartIdentity=="string"?{processStartIdentity:r.processStartIdentity}:{},...typeof r.windowsBootIdentity=="string"?{windowsBootIdentity:r.windowsBootIdentity}:{},...r.containment===void 0?{}:{containment:{kind:"windows-job",jobName:String(r.containment.jobName),...typeof r.containment.sandboxSid=="string"?{sandboxSid:String(r.containment.sandboxSid)}:{},supervisorPid:Number(r.containment.supervisorPid),...typeof r.containment.supervisorProcessStartIdentity=="string"?{supervisorProcessStartIdentity:String(r.containment.supervisorProcessStartIdentity)}:{}}}}}a(ho,"parseWindowsSandboxAclPoisonOwner");function Qr(e=ge()){return[...new Set([Hr(),ao(e)])].flatMap(r=>{let t;try{t=Ur(r)}catch(o){if(U(o,"ENOENT"))return[];throw o}return t.filter(o=>o.endsWith(".json")).map(o=>u.join(r,o))})}a(Qr,"listWindowsSandboxAclPoisonFiles");function Or(e=ge()){return Qr(e).map(n=>{try{let r=ae(n);if(!r.isFile()||r.isSymbolicLink())throw new Error("Windows sandbox ACL poison marker is not a regular file.");let t=ho(Ne(n,"utf8"));return{file:n,owner:u.basename(n).startsWith("unconfirmed-")?{...t,state:"unconfirmed"}:u.basename(n).startsWith("recovery-")?{...t,state:"recovery_pending"}:t}}catch(r){throw new _n(n,r)}})}a(Or,"readWindowsSandboxAclPoisonOwners");function vo(){let e=process.env.ProgramFiles??"C:\\Program Files",n=u.join(e,"PowerShell","7","pwsh.exe");return Re(n)?n:u.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}a(vo,"windowsAclPowerShellExecutable");function Fn(){if(process.platform!=="win32")return;if(Ye!==void 0)return G({source:"runtime:windows",level:"debug",message:"Using cached Windows boot identity probe result.",detail:{stage:"boot-identity",cached:!0,available:Ye!==null}}),Ye??void 0;let e=String.raw`
|
|
112
|
+
`,qe;function Qt(){return qe!==void 0||(qe=rr("asrtBroker").replaceAll("{{KODAX_ASRT_SLOT_0}}",()=>String(Cn)).replaceAll("{{KODAX_ASRT_SLOT_1}}",()=>String(Yt)).replaceAll("{{KODAX_ASRT_SLOT_2}}",()=>String(Gn)).replaceAll("{{KODAX_ASRT_SLOT_3}}",()=>String(Kt)).replaceAll("{{KODAX_ASRT_SLOT_4}}",()=>String(Ht)).replaceAll("{{KODAX_ASRT_SLOT_5}}",()=>String(zt)).replaceAll("{{KODAX_ASRT_SLOT_6}}",()=>String(Cr)).replaceAll("{{KODAX_ASRT_SLOT_7}}",()=>String(Cr))),qe}a(Qt,"asrtBrokerSource");var ve,ze=0,eo=3e4,de=new Map,Be;function H(e){return e instanceof Error?e.message:String(e)}a(H,"errorText");function U(e,...n){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&n.includes(e.code)}a(U,"isFileSystemError");var no={x64:"x64",arm64:"arm64"};function ro(e){let n=no[process.arch];if(n===void 0)return;let r=u.join(e,"vendor","srt-win",n,"srt-win.exe");return Re(r)?r:void 0}a(ro,"bundledSrtWinSidecarPath");function to(e=u.dirname(process.execPath)){if(process.env.KODAX_BUNDLED==="true"){let n=ro(e);if(n!==void 0)return n}return Bt()}a(to,"resolveSrtWinSourcePath");async function Fe(e=[],n=!0){let r=de.get(n);if(r!==void 0){let o=await r;try{return un(o.path,o.sha256),Je(o.developmentTrustRoots,e),o}catch{return de.get(n)===r&&(de.delete(n),Be=void 0),Fe(e,n)}}if(!de.has(n)){let o=(async()=>{let i=sr(import.meta.url,to(),Ae,{untrustedWriteRoots:e,provision:n}),s=u.dirname(i.path);await Vr(an(),{recursive:!0,mode:448});let d={path:i.path,directory:s,sha256:i.sha256,developmentTrustRoots:i.developmentTrustRoots,srtWin:$t({path:i.path})};return Be=d,d})();de.set(n,o),o.catch(()=>{de.get(n)===o&&(de.delete(n),Be=void 0)})}let t=await de.get(n);return Je(t.developmentTrustRoots,e),t}a(Fe,"prepareWindowsSandboxRunner");function Mn(){if(process.platform!=="win32")throw new Error("A prepared Windows sandbox runner was requested on a non-Windows platform.");if(Be===void 0)throw new Error("Windows sandbox runner is not prepared; run the sandbox readiness check first.");return Be}a(Mn,"requirePreparedWindowsRunner");var Ye,oo=35e3,Me="[acl_cleanup_unconfirmed]",Pe=class extends Error{static{a(this,"WindowsSandboxAclAdmissionError")}recoveryAction;constructor(n,r){super(n,r),this.name="WindowsSandboxAclAdmissionError",this.recoveryAction=r?.recoveryAction}},Tn=class extends Pe{static{a(this,"UnreadableWindowsSandboxAclRecoveryTicketError")}constructor(n,r){super(`Windows sandbox ACL recovery ticket is temporarily unreadable: ${n}. Sandbox admission will retry automatically; non-sandbox work remains available.`,{cause:r,recoveryAction:"automatic-retry"}),this.name="UnreadableWindowsSandboxAclRecoveryTicketError"}};function io(e){return/^windows-boot-\d+$/.test(e)}a(io,"isCanonicalWindowsBootIdentity");function so(e){return e.diagnostics.some(n=>n.startsWith(Me))}a(so,"doctorHasWindowsSandboxAclCleanupBlock");function Hr(){let e=Object.entries(process.env).find(([n,r])=>n.toUpperCase()==="PROGRAMDATA"&&r!==void 0)?.[1]??"C:\\ProgramData";return u.join(u.resolve(e),"KodaX","sandbox-runtime","acl-poison")}a(Hr,"windowsSandboxAclPoisonDirectory");function an(){return u.dirname(Hr())}a(an,"windowsSandboxAclCoordinationDirectory");function ao(e=ge()){return u.join(u.resolve(e),"sandbox-runtime","acl-poison")}a(ao,"legacyWindowsSandboxAclPoisonDirectory");function Pr(){return u.join(an(),"windows-v2-setup.lock")}a(Pr,"windowsSandboxV2SetupLockFile");var lo="[windows_v2_acl_cutover_required]",co="[legacy_acl_state_ignored]",Un=1024*1024,We=11,Fn=8,kn,qr=fn,ce,xe=new Map,Le;function Rn(){if(kn!==void 0)return kn;let e=oe({provision:!0}),n=ie(e.path,["__current-user-sid"],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3}),r=n.status===0?n.stdout.trim():"";if(!/^S-\d+(?:-\d+)+$/i.test(r)){let t=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw new Error(`cannot identify the Windows v2 setup owner SID: ${t}`)}return kn=r,r}a(Rn,"windowsSandboxV2HostUserSid");function se(){return u.join(qr(),"windows-v2-cutover.json")}a(se,"windowsSandboxV2CutoverMarkerFile");function uo(){return u.join(qr(),"windows-v2-legacy-drain.json")}a(uo,"windowsSandboxLegacyDrainMarkerFile");function fo(e){if(Buffer.byteLength(e,"utf8")>Un)throw new Error("the cutover marker exceeds its size bound");let n=JSON.parse(e);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error("the cutover marker is not an object");let r=n;if(Object.keys(r).sort().join(",")!=="filesystemCapabilityNonce,generationNonce,hostUserSid,protocol,sandboxGroupSid,sandboxUserSid,setupReadRoots,version"||r.version!==We||r.protocol!==M||typeof r.generationNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.generationNonce)||typeof r.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.filesystemCapabilityNonce)||typeof r.hostUserSid!="string"||typeof r.sandboxUserSid!="string"||typeof r.sandboxGroupSid!="string"||!Array.isArray(r.setupReadRoots)||r.setupReadRoots.length>1024||!r.setupReadRoots.every(o=>typeof o=="string"&&u.isAbsolute(o)&&!o.includes("\0")&&o.length<=32767)||!/^S-\d+(?:-\d+)+$/i.test(r.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(r.sandboxGroupSid))throw new Error("the cutover marker has an incompatible schema or SID");return{version:We,protocol:M,generationNonce:r.generationNonce,filesystemCapabilityNonce:r.filesystemCapabilityNonce,hostUserSid:r.hostUserSid,sandboxUserSid:r.sandboxUserSid,sandboxGroupSid:r.sandboxGroupSid,setupReadRoots:r.setupReadRoots}}a(fo,"parseWindowsSandboxV2CutoverMarker");function zr(){let e=se(),n;try{n=ae(e)}catch(r){if(U(r,"ENOENT"))return;throw r}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1)throw new Error("the cutover marker is not a private regular file");return fo(Ne(e,"utf8"))}a(zr,"readWindowsSandboxV2CutoverMarker");function wo(){let e=se(),n;try{n=ae(e)}catch(o){if(U(o,"ENOENT"))return;throw o}if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1||n.size>Un)throw new Error("the previous cutover marker is not a private bounded regular file");let r=JSON.parse(Ne(e,"utf8"));if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("the previous cutover marker is not an object");let t=r;if(typeof t.version!="number"||!Number.isSafeInteger(t.version)||t.version<=0||typeof t.hostUserSid!="string"||typeof t.sandboxUserSid!="string"||typeof t.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(t.hostUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(t.sandboxGroupSid))throw new Error("the previous cutover marker has an incompatible identity");if(t.setupReadRoots!==void 0&&(!Array.isArray(t.setupReadRoots)||t.setupReadRoots.length>1024||!t.setupReadRoots.every(o=>typeof o=="string"&&u.isAbsolute(o))))throw new Error("the previous cutover marker has invalid setup read roots");return{version:t.version,installing:t.state==="installing",setupReadRoots:t.setupReadRoots??[],...t.legacyAclCleanup===void 0?{}:{legacyAclCleanup:po(t.legacyAclCleanup)},hostUserSid:t.hostUserSid,sandboxUserSid:t.sandboxUserSid,sandboxGroupSid:t.sandboxGroupSid}}a(wo,"readPreviousWindowsSandboxV2CutoverIdentity");function po(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("invalid pending Windows SSH ACL cleanup");let n=e;if(!Array.isArray(n.roots)||n.roots.length>1024||!n.roots.every(r=>typeof r=="string"&&u.isAbsolute(r)&&!r.includes("\0"))||typeof n.sandboxGroupSid!="string"||!/^S-\d+(?:-\d+)+$/i.test(n.sandboxGroupSid)||typeof n.filesystemCapabilityNonce!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n.filesystemCapabilityNonce))throw new Error("invalid pending Windows SSH ACL cleanup authority");return{roots:n.roots,sandboxGroupSid:n.sandboxGroupSid,filesystemCapabilityNonce:n.filesystemCapabilityNonce}}a(po,"parseWindowsLegacyAclCleanup");function ue(e){return new Error(`${lo} ${e}. Run "kodax sandbox setup" to rotate the legacy sandbox account SID and activate Windows v2.`)}a(ue,"windowsSandboxV2CutoverError");function Yr(e){let n;try{n=zr()}catch(r){throw ue(`The recorded migration state is invalid: ${H(r)}`)}if(n===void 0)throw ue("The sandbox account has not completed the Windows v2 ACL cutover");if(e.sid!==n.sandboxUserSid||e.groupSid!==n.sandboxGroupSid)throw ue("The installed sandbox account identity does not match the recorded v2 generation");return n}a(Yr,"assertWindowsSandboxV2Cutover");function go(){let e=se();try{let n=ae(e);if(!n.isFile()||n.isSymbolicLink()||n.nlink!==1)return;let r=JSON.parse(Ne(e,"utf8"));if(r===null||typeof r!="object"||Array.isArray(r))return;let t=Reflect.get(r,"filesystemCapabilityNonce");return typeof t=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?t.toLowerCase():void 0}catch{return}}a(go,"previousWindowsFilesystemCapabilityNonce");function Nr(e){let n;try{n=zr()}catch(t){throw ue(`The recorded migration state is invalid: ${H(t)}`)}if(n===void 0)throw ue("The sandbox account has not completed the Windows v2 ACL cutover");if(ce!==void 0&&JSON.stringify(ce)===JSON.stringify(n))return ce;let r=Yr(be({srtWin:e.srtWin}));return ce=r,r}a(Nr,"currentWindowsSandboxV2Cutover");function dn(e,n,r=!0){let t=`${e}\0${r?"provision":"verify"}`,o=xe.get(t),i=o!==void 0;return o===void 0&&(o=Promise.resolve().then(()=>oe({sandboxReadSid:e,provision:r})),xe.set(t,o),o.catch(()=>{xe.get(t)===o&&xe.delete(t)})),pn(n),o.then(async s=>{if(i)try{un(s.path,s.sha256)}catch{return xe.get(t)===o&&xe.delete(t),dn(e,n,r)}return Je(s.developmentTrustRoots,n),s})}a(dn,"prepareWindowsShellArtifact");function yo(){if(Le===void 0){let e=Promise.resolve().then(()=>{let n=Ie(),r=ae(n);if(!r.isDirectory()||r.isSymbolicLink())throw new Error("Protected native shell control state is not a regular directory.");let t=J.native(fn()),o=J.native(n);if(!L(t,o))throw new Error("Protected native shell control state escaped its cache root.");return o});Le=e,e.catch(()=>{Le===e&&(Le=void 0)})}return Le}a(yo,"prepareWindowsControlDirectory");function Zr(e,n){jr(u.dirname(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.${X()}.tmp`,t=Buffer.from(JSON.stringify(n),"utf8"),o;try{o=Mr(r,xn.O_CREAT|xn.O_EXCL|xn.O_WRONLY,384);let i=0;for(;i<t.length;){let d=Tt(o,t,i,t.length-i);if(d===0)throw new Error("Windows sandbox private-state write made no progress.");i+=d}Pt(o);let s=o;o=void 0,An(s),_t(r,e)}finally{o!==void 0&&An(o),tn(r,{force:!0})}}a(Zr,"writePrivateJsonFile");async function On(e){let n=Date.now()+Qe;for(;;)try{tn(e,{force:!0});return}catch(r){if(!U(r,"EACCES","EBUSY","EPERM")||Date.now()>=n)throw r;await new Promise(t=>setTimeout(t,25))}}a(On,"removeWindowsSandboxCutoverMarkerForSetup");function _r(e){Zr(se(),e)}a(_r,"writeWindowsSandboxV2CutoverMarker");function Tr(e,n){let r={...e,state:"installing",setupReadRoots:[...new Set([...e.setupReadRoots,...n?.setupReadRoots??[]])],...Bo(n,e.filesystemCapabilityNonce)};return ce=void 0,Zr(se(),r),r}a(Tr,"stageWindowsSandboxV2CutoverMarker");async function mo(){ce=void 0,await On(se())}a(mo,"invalidateWindowsSandboxV2CutoverForSetup");async function bo(){let e=u.join(an(),"windows-v2-cutover.json");await On(e),await On(uo())}a(bo,"retireLegacyWindowsSandboxCutoverForSetup");function So(){let e=oe({provision:!0}).path,n=ie(e,["__recover-execution-denies",Ie()],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:15*6e4});if(n.error!==void 0||n.status!==0){let r=n.error?.message??(n.stderr.trim()||`exit ${String(n.status)}`);throw new Error(`Windows v2 denyRead setup recovery failed: ${r}`)}}a(So,"recoverWindowsV2ExecutionDeniesForSetup");function ho(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)throw new Error("Windows sandbox ACL poison marker is not an object.");let r=n;if(r.version!==1&&r.version!==2&&r.version!==3||r.state!==void 0&&r.state!=="active"&&r.state!=="unconfirmed"&&r.state!=="recovery_pending"||r.ticketId!==void 0&&(typeof r.ticketId!="string"||!/^[0-9a-f-]{36}$/i.test(r.ticketId))||r.policyKey!==void 0&&typeof r.policyKey!="string"||r.holderPid!==void 0&&(typeof r.holderPid!="number"||!Number.isSafeInteger(r.holderPid)||r.holderPid<=0)||r.holderProcessStartIdentity!==void 0&&typeof r.holderProcessStartIdentity!="string"||r.pid!==void 0&&(typeof r.pid!="number"||!Number.isSafeInteger(r.pid)||r.pid<=0)||r.processStartIdentity!==void 0&&typeof r.processStartIdentity!="string"||r.windowsBootIdentity!==void 0&&(typeof r.windowsBootIdentity!="string"||!io(r.windowsBootIdentity))||r.containment!==void 0&&(typeof r.containment!="object"||r.containment===null||r.containment.kind!=="windows-job"||typeof r.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(r.containment.jobName))||r.containment.sandboxSid!==void 0&&(typeof r.containment.sandboxSid!="string"||!/^S-1-(?:\d+-)+\d+$/i.test(String(r.containment.sandboxSid)))||typeof r.containment.supervisorPid!="number"||!Number.isSafeInteger(r.containment.supervisorPid)||Number(r.containment.supervisorPid)<=0||r.containment.supervisorProcessStartIdentity!==void 0&&typeof r.containment.supervisorProcessStartIdentity!="string"))throw new Error("Windows sandbox ACL poison marker has an invalid owner identity.");return{version:r.version,...r.state==="active"||r.state==="unconfirmed"||r.state==="recovery_pending"?{state:r.state}:{},...typeof r.ticketId=="string"?{ticketId:r.ticketId}:{},...typeof r.policyKey=="string"?{policyKey:r.policyKey}:{},...typeof r.holderPid=="number"?{holderPid:r.holderPid}:{},...typeof r.holderProcessStartIdentity=="string"?{holderProcessStartIdentity:r.holderProcessStartIdentity}:{},...typeof r.pid=="number"?{pid:r.pid}:{},...typeof r.processStartIdentity=="string"?{processStartIdentity:r.processStartIdentity}:{},...typeof r.windowsBootIdentity=="string"?{windowsBootIdentity:r.windowsBootIdentity}:{},...r.containment===void 0?{}:{containment:{kind:"windows-job",jobName:String(r.containment.jobName),...typeof r.containment.sandboxSid=="string"?{sandboxSid:String(r.containment.sandboxSid)}:{},supervisorPid:Number(r.containment.supervisorPid),...typeof r.containment.supervisorProcessStartIdentity=="string"?{supervisorProcessStartIdentity:String(r.containment.supervisorProcessStartIdentity)}:{}}}}}a(ho,"parseWindowsSandboxAclPoisonOwner");function Qr(e=ge()){return[...new Set([Hr(),ao(e)])].flatMap(r=>{let t;try{t=Ur(r)}catch(o){if(U(o,"ENOENT"))return[];throw o}return t.filter(o=>o.endsWith(".json")).map(o=>u.join(r,o))})}a(Qr,"listWindowsSandboxAclPoisonFiles");function Or(e=ge()){return Qr(e).map(n=>{try{let r=ae(n);if(!r.isFile()||r.isSymbolicLink())throw new Error("Windows sandbox ACL poison marker is not a regular file.");let t=ho(Ne(n,"utf8"));return{file:n,owner:u.basename(n).startsWith("unconfirmed-")?{...t,state:"unconfirmed"}:u.basename(n).startsWith("recovery-")?{...t,state:"recovery_pending"}:t}}catch(r){throw new Tn(n,r)}})}a(Or,"readWindowsSandboxAclPoisonOwners");function vo(){let e=process.env.ProgramFiles??"C:\\Program Files",n=u.join(e,"PowerShell","7","pwsh.exe");return Re(n)?n:u.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}a(vo,"windowsAclPowerShellExecutable");function ln(){if(process.platform!=="win32")return;if(Ye!==void 0)return G({source:"runtime:windows",level:"debug",message:"Using cached Windows boot identity probe result.",detail:{stage:"boot-identity",cached:!0,available:Ye!==null}}),Ye??void 0;let e=String.raw`
|
|
113
113
|
# KodaXWindowsBootIdentity-v1
|
|
114
|
-
$boot = (Get-CimInstance Win32_OperatingSystem -ErrorAction Stop).LastBootUpTime
|
|
114
|
+
$boot = (Get-CimInstance Win32_OperatingSystem -Property LastBootUpTime -ErrorAction Stop).LastBootUpTime
|
|
115
115
|
[Console]::Out.Write($boot.ToUniversalTime().Ticks.ToString([Globalization.CultureInfo]::InvariantCulture))
|
|
116
|
-
`,n=vo(),r=Date.now(),t=ie(n,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),o=t.status===0?t.stdout.trim():"",i=/^\d+$/.test(o)?`windows-boot-${o}`:void 0;Ye=i??null;let s=t.error?.code;return G({source:"runtime:windows",level:i===void 0?"warn":"debug",message:"Windows boot identity probe completed.",detail:{stage:"boot-identity",cached:!1,available:i!==void 0,executableKind:u.basename(n).toLowerCase()==="pwsh.exe"?"pwsh":"powershell",durationMs:Date.now()-r,timeoutMs:5e3,exitCode:t.status,errorCode:s===void 0?void 0:["ENOENT","EACCES","EPERM","ETIMEDOUT","ENOEXEC","ENOMEM","EIO"].includes(s)?s:"OTHER"}}),i}a(Fn,"readWindowsBootIdentity");function xo(e,n=Fn()){if(e.find(({windowsBootIdentity:i})=>i===void 0||n===void 0)!==void 0)return new Pe("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 Pe(`A legacy Windows sandbox recovery ticket${o} from the current Windows boot does not contain safe process-containment proof. Sandbox admission will retry recovery automatically without blocking non-sandbox work.`,{recoveryAction:"automatic-retry"})}a(xo,"persistentWindowsSandboxAclPoisonError");function Eo(e){if(e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=ln(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return U(r,"ESRCH")?"stale":"unknown"}}a(Eo,"windowsSandboxAclOwnerLiveness");async function Ze(e){try{let n=jn(),r=be({srtWin:n.srtWin});return r.sid!==void 0&&r.sid!==e?!1:!await er(e,{executable:n.srtWin.exe,prependArgs:n.srtWin.prependArgs})}catch(n){return G({source:"runtime:sandbox-setup",level:"warn",message:"Windows sandbox account process inspection failed; account rotation remains blocked.",detail:n}),!1}}a(Ze,"windowsSandboxSidIsIdle");async function et(e=3e4){let n=jn(),r=await Xo({command:n.srtWin.exe,args:[...n.srtWin.prependArgs,"acl","recover","--json"],env:Y(),cwd:n.directory,controlPipe:!1},await xi()),t,o,i=!1,s;try{if(t=nn(r.command,[...r.args],{cwd:n.directory,env:r.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),Te(t),t.pid===void 0)throw new Error("Windows ACL recovery gate did not expose a PID.");let f=Kn(t,void 0,Math.max(1,Math.min(3e4,e)),1024*1024,!0);f.catch(()=>{}),o=await Zn(t.pid),i=!0,await Jo(t,!0),s=await f,await o.drained}catch(f){let g=[f];if(t!==void 0)try{i||await Ho(t),o!==void 0?(await Qn(o.jobName),await o.drained):await Oe(t)}catch(y){g.push(y)}throw g.length===1?f:new AggregateError(g,"Windows sandbox ACL recovery helper cleanup failed.")}finally{await le(r.gateFile,{force:!0})}let d=s.stderr.trim(),l;try{l=JSON.parse(s.stdout.trim())}catch(f){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`,{cause:f})}let c=typeof l=="object"&&l!==null?l:void 0;if(s.exitCode!==0||typeof c?.deadBrokers!="number"||!Number.isSafeInteger(c.deadBrokers)||c.deadBrokers<0||typeof c.acesRevoked!="number"||!Number.isSafeInteger(c.acesRevoked)||c.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`)}a(et,"recoverWindowsSandboxAcls");function ko(e,n=Fn()){return xo(e.map(({owner:r})=>r),n)}a(ko,"windowsSandboxAclPoisonSnapshotError");async function Ro(){let e=Or();if(e.length===0)return;let n=Fn();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){await et();for(let t of e)tn(t.file,{force:!0});if(Or().length>0)throw new Error("Legacy Windows sandbox recovery tickets remained after ACL recovery.");return}return e.every(({owner:t})=>Eo(t)!=="stale")?new Pe("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"}):ko(e,n)}a(Ro,"windowsSandboxAclSetupBlockWithLock");function Ao(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(Me)),`${Me} ${n.message}`]}}a(Ao,"withWindowsSandboxAclSetupBlock");async function Wo(){let[e,n]=De,r=new Set,t;for(let o=0;o<5;o+=1){let i=Wt(1024,e);for(;r.has(i);)i=i+1<e?i+1:1024;r.add(i);let s=It();try{return s.listen(i,"127.0.0.1"),await Ct(s,"listening"),{server:s,target:`127.0.0.1:${i}`}}catch(d){if(s.close(),!U(d,"EADDRINUSE","EACCES"))throw d;t=d}}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`,{cause:t})}a(Wo,"bindWindowsWfpProbe");function Ir(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}a(Ir,"windowsRunnerFailureCode");function Co(e){return U(e,"ETIMEDOUT")?"wfp_probe_timeout":U(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}a(Co,"windowsRunnerSpawnFailureCode");async function On(e){let{server:n,target:r}=await Wo();try{let t=ie(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${Co(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let i;try{i=JSON.parse((t.stdout??"").trim())}catch{let s=t.status===null?"wfp_probe_timeout":Ir(o);throw new Error(`[${s}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(i.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||i.egress_probe!=="blocked")throw new Error(`[${Ir(o)}] Windows sandbox WFP probe to ${String(i.target??r)} was ${String(i.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}a(On,"verifyPreparedWindowsWfp");function In(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}a(In,"windowsSandboxAccountDiagnostics");function Po(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}a(Po,"parseBrokerObservation");function No(e){let n=X(),r={...e,controlInvocationId:n},t=Buffer.from(JSON.stringify(r),"utf8");if(t.byteLength>Wn)throw new Error(`Sandbox broker request exceeded ${Wn} bytes.`);return{invocationId:n,payload:t,request:r}}a(No,"encodeControlledBrokerRequest");function _o(e,n,r){if(e.byteLength===0)return;if(e.byteLength>$n)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(c=>c>32))throw new Error("Sandbox broker control channel returned an invalid frame boundary.");let i=JSON.parse(t.subarray(0,o).toString("utf8"));if(typeof i!="object"||i===null)throw new Error("Sandbox broker control channel returned a non-object frame.");let s=i;if(s.version!==1||s.invocationId!==n||typeof s.observation!="object"||s.observation===null)throw new Error("Sandbox broker control frame did not match this invocation.");let d=s.observation;if(d.version!==1)throw new Error("Sandbox broker control observation has an incompatible version.");if(d.state==="not_started"){if(d.diagnostic!==void 0&&typeof d.diagnostic!="string")throw new Error("Sandbox broker pre-target diagnostic is invalid.");return d}let l=Po(JSON.stringify(d));if(l===void 0)throw new Error("Sandbox broker control observation is invalid.");if(l.state==="applied"&&l.backend!==r)throw new Error("Sandbox broker control observation reported the wrong backend.");return l}a(_o,"parseSandboxBrokerControl");function To(e){let n=e.stdio[3];return n==null?Promise.reject(new Error("Sandbox broker control pipe was not created.")):new Promise((r,t)=>{let o=[],i=0,s=!1,d=a(l=>{s||(s=!0,l===void 0?r(Buffer.concat(o)):t(l))},"finish");n.on("data",l=>{if(i+=l.byteLength,i>$n){d(new Error("Sandbox broker control frame exceeded its byte limit.")),n.destroy();return}o.push(l)}),n.once("error",d),n.once("end",()=>d())})}a(To,"collectSandboxBrokerControl");function Vn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}a(Vn,"sandboxJavaScriptCommand");async function z(e={}){if(e.refresh||ve===void 0||Date.now()>=ze){let n=Oo();ve=n,ze=Number.POSITIVE_INFINITY,n.then(r=>{ve===n&&(ze=r.ready?Number.POSITIVE_INFINITY:Date.now()+eo)},()=>{ve===n&&(ve=void 0,ze=0)})}return ve}a(z,"doctorSandboxRuntime");async function Oo(){let e=[];xn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=process.platform==="win32"?{errors:[],warnings:[]}:xn.checkDependencies();e.push(...n.warnings,...n.errors);let r=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let s=JSON.parse(await An(Gn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));s.version!==Ae&&(r=!0,e.push(`ASRT package version mismatch: expected ${Ae}, found ${String(s.version)}.`))}catch(s){r=!0,e.push(`ASRT package provenance check failed: ${H(s)}`)}let t=Vn(),o=_e({args:["--version"],env:Y(),isElectron:t===process.execPath&&process.versions.electron!==void 0}),i=ie(t,o.args,{env:o.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){r=!0;let s=i.error?.message??(i.stderr.trim()||t);e.push(`JavaScript Skill interpreter is unavailable: ${s}.`)}if(process.platform==="win32"){try{let d=await Fe([],!1),l=be({srtWin:d.srtWin}),c=In(l);if(c.length>0||!l.sid||!l.groupSid)r=!0,e.push(...c);else{let f=await dn(l.groupSid,[],!1);Xe();try{ce=Yr(l),$o(ce,f.path),await On(d)}catch(g){r=!0,e.push(H(g))}}}catch(d){r=!0,e.push(H(d))}let s=Qr();s.length>0&&e.push(`${co} ${s.length} pre-v2 ACL recovery record(s) remain for migration diagnosis; Windows v2 shell admission does not read them.`)}return{ready:xn.isSupportedPlatform()&&!r,platform:process.platform,version:Ae,diagnostics:e,setupRequired:r}}a(Oo,"inspectSandboxRuntime");var Io=String.raw`
|
|
116
|
+
`,n=vo(),r=Date.now(),t=ie(n,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),o=t.status===0?t.stdout.trim():"",i=/^\d+$/.test(o)?`windows-boot-${o}`:void 0;Ye=i??null;let s=t.error?.code;return G({source:"runtime:windows",level:i===void 0?"warn":"debug",message:"Windows boot identity probe completed.",detail:{stage:"boot-identity",cached:!1,available:i!==void 0,executableKind:u.basename(n).toLowerCase()==="pwsh.exe"?"pwsh":"powershell",durationMs:Date.now()-r,timeoutMs:5e3,exitCode:t.status,errorCode:s===void 0?void 0:["ENOENT","EACCES","EPERM","ETIMEDOUT","ENOEXEC","ENOMEM","EIO"].includes(s)?s:"OTHER"}}),i}a(ln,"readWindowsBootIdentity");function ps(){return ln()}a(ps,"readWindowsSandboxBootIdentity");function xo(e,n=ln()){if(e.find(({windowsBootIdentity:i})=>i===void 0||n===void 0)!==void 0)return new Pe("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 Pe(`A legacy Windows sandbox recovery ticket${o} from the current Windows boot does not contain safe process-containment proof. Sandbox admission will retry recovery automatically without blocking non-sandbox work.`,{recoveryAction:"automatic-retry"})}a(xo,"persistentWindowsSandboxAclPoisonError");function Eo(e){if(e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=cn(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return U(r,"ESRCH")?"stale":"unknown"}}a(Eo,"windowsSandboxAclOwnerLiveness");async function Ze(e){try{let n=Mn(),r=be({srtWin:n.srtWin});return r.sid!==void 0&&r.sid!==e?!1:!await er(e,{executable:n.srtWin.exe,prependArgs:n.srtWin.prependArgs})}catch(n){return G({source:"runtime:sandbox-setup",level:"warn",message:"Windows sandbox account process inspection failed; account rotation remains blocked.",detail:n}),!1}}a(Ze,"windowsSandboxSidIsIdle");async function et(e=3e4){let n=Mn(),r=await Xo({command:n.srtWin.exe,args:[...n.srtWin.prependArgs,"acl","recover","--json"],env:Y(),cwd:n.directory,controlPipe:!1},await xi()),t,o,i=!1,s;try{if(t=nn(r.command,[...r.args],{cwd:n.directory,env:r.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),Te(t),t.pid===void 0)throw new Error("Windows ACL recovery gate did not expose a PID.");let f=Kn(t,void 0,Math.max(1,Math.min(3e4,e)),1024*1024,!0);f.catch(()=>{}),o=await Zn(t.pid),i=!0,await Jo(t,!0),s=await f,await o.drained}catch(f){let g=[f];if(t!==void 0)try{i||await Ho(t),o!==void 0?(await Qn(o.jobName),await o.drained):await Oe(t)}catch(y){g.push(y)}throw g.length===1?f:new AggregateError(g,"Windows sandbox ACL recovery helper cleanup failed.")}finally{await le(r.gateFile,{force:!0})}let d=s.stderr.trim(),l;try{l=JSON.parse(s.stdout.trim())}catch(f){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`,{cause:f})}let c=typeof l=="object"&&l!==null?l:void 0;if(s.exitCode!==0||typeof c?.deadBrokers!="number"||!Number.isSafeInteger(c.deadBrokers)||c.deadBrokers<0||typeof c.acesRevoked!="number"||!Number.isSafeInteger(c.acesRevoked)||c.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(s.exitCode)}): ${d||"(empty stderr)"}.`)}a(et,"recoverWindowsSandboxAcls");function ko(e,n=ln()){return xo(e.map(({owner:r})=>r),n)}a(ko,"windowsSandboxAclPoisonSnapshotError");async function Ro(){let e=Or();if(e.length===0)return;let n=ln();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){await et();for(let t of e)tn(t.file,{force:!0});if(Or().length>0)throw new Error("Legacy Windows sandbox recovery tickets remained after ACL recovery.");return}return e.every(({owner:t})=>Eo(t)!=="stale")?new Pe("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"}):ko(e,n)}a(Ro,"windowsSandboxAclSetupBlockWithLock");function Ao(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(Me)),`${Me} ${n.message}`]}}a(Ao,"withWindowsSandboxAclSetupBlock");async function Wo(){let[e,n]=De,r=new Set,t;for(let o=0;o<5;o+=1){let i=Wt(1024,e);for(;r.has(i);)i=i+1<e?i+1:1024;r.add(i);let s=It();try{return s.listen(i,"127.0.0.1"),await Ct(s,"listening"),{server:s,target:`127.0.0.1:${i}`}}catch(d){if(s.close(),!U(d,"EADDRINUSE","EACCES"))throw d;t=d}}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`,{cause:t})}a(Wo,"bindWindowsWfpProbe");function Ir(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}a(Ir,"windowsRunnerFailureCode");function Co(e){return U(e,"ETIMEDOUT")?"wfp_probe_timeout":U(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}a(Co,"windowsRunnerSpawnFailureCode");async function In(e){let{server:n,target:r}=await Wo();try{let t=ie(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${Co(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let i;try{i=JSON.parse((t.stdout??"").trim())}catch{let s=t.status===null?"wfp_probe_timeout":Ir(o);throw new Error(`[${s}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(i.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||i.egress_probe!=="blocked")throw new Error(`[${Ir(o)}] Windows sandbox WFP probe to ${String(i.target??r)} was ${String(i.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}a(In,"verifyPreparedWindowsWfp");function Dn(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}a(Dn,"windowsSandboxAccountDiagnostics");function Po(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}a(Po,"parseBrokerObservation");function No(e){let n=X(),r={...e,controlInvocationId:n},t=Buffer.from(JSON.stringify(r),"utf8");if(t.byteLength>Cn)throw new Error(`Sandbox broker request exceeded ${Cn} bytes.`);return{invocationId:n,payload:t,request:r}}a(No,"encodeControlledBrokerRequest");function _o(e,n,r){if(e.byteLength===0)return;if(e.byteLength>Gn)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(c=>c>32))throw new Error("Sandbox broker control channel returned an invalid frame boundary.");let i=JSON.parse(t.subarray(0,o).toString("utf8"));if(typeof i!="object"||i===null)throw new Error("Sandbox broker control channel returned a non-object frame.");let s=i;if(s.version!==1||s.invocationId!==n||typeof s.observation!="object"||s.observation===null)throw new Error("Sandbox broker control frame did not match this invocation.");let d=s.observation;if(d.version!==1)throw new Error("Sandbox broker control observation has an incompatible version.");if(d.state==="not_started"){if(d.diagnostic!==void 0&&typeof d.diagnostic!="string")throw new Error("Sandbox broker pre-target diagnostic is invalid.");return d}let l=Po(JSON.stringify(d));if(l===void 0)throw new Error("Sandbox broker control observation is invalid.");if(l.state==="applied"&&l.backend!==r)throw new Error("Sandbox broker control observation reported the wrong backend.");return l}a(_o,"parseSandboxBrokerControl");function To(e){let n=e.stdio[3];return n==null?Promise.reject(new Error("Sandbox broker control pipe was not created.")):new Promise((r,t)=>{let o=[],i=0,s=!1,d=a(l=>{s||(s=!0,l===void 0?r(Buffer.concat(o)):t(l))},"finish");n.on("data",l=>{if(i+=l.byteLength,i>Gn){d(new Error("Sandbox broker control frame exceeded its byte limit.")),n.destroy();return}o.push(l)}),n.once("error",d),n.once("end",()=>d())})}a(To,"collectSandboxBrokerControl");function Vn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}a(Vn,"sandboxJavaScriptCommand");async function z(e={}){if(e.refresh||ve===void 0||Date.now()>=ze){let n=Oo();ve=n,ze=Number.POSITIVE_INFINITY,n.then(r=>{ve===n&&(ze=r.ready?Number.POSITIVE_INFINITY:Date.now()+eo)},()=>{ve===n&&(ve=void 0,ze=0)})}return ve}a(z,"doctorSandboxRuntime");async function Oo(){let e=[];En.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=process.platform==="win32"?{errors:[],warnings:[]}:En.checkDependencies();e.push(...n.warnings,...n.errors);let r=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let s=JSON.parse(await Wn(jn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));s.version!==Ae&&(r=!0,e.push(`ASRT package version mismatch: expected ${Ae}, found ${String(s.version)}.`))}catch(s){r=!0,e.push(`ASRT package provenance check failed: ${H(s)}`)}let t=Vn(),o=_e({args:["--version"],env:Y(),isElectron:t===process.execPath&&process.versions.electron!==void 0}),i=ie(t,o.args,{env:o.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){r=!0;let s=i.error?.message??(i.stderr.trim()||t);e.push(`JavaScript Skill interpreter is unavailable: ${s}.`)}if(process.platform==="win32"){try{let d=await Fe([],!1),l=be({srtWin:d.srtWin}),c=Dn(l);if(c.length>0||!l.sid||!l.groupSid)r=!0,e.push(...c);else{let f=await dn(l.groupSid,[],!1);Xe();try{ce=Yr(l),$o(ce,f.path),await In(d)}catch(g){r=!0,e.push(H(g))}}}catch(d){r=!0,e.push(H(d))}let s=Qr();s.length>0&&e.push(`${co} ${s.length} pre-v2 ACL recovery record(s) remain for migration diagnosis; Windows v2 shell admission does not read them.`)}return{ready:En.isSupportedPlatform()&&!r,platform:process.platform,version:Ae,diagnostics:e,setupRequired:r}}a(Oo,"inspectSandboxRuntime");var Io=String.raw`
|
|
117
117
|
$ErrorActionPreference = 'Stop'
|
|
118
118
|
$process = Start-Process -FilePath $env:KODAX_NATIVE_SETUP_EXE -ArgumentList @('__setup-account-capabilities', $env:KODAX_NATIVE_SETUP_ENVELOPE) -Verb RunAs -PassThru -WindowStyle Hidden
|
|
119
119
|
$process.WaitForExit()
|
|
120
120
|
$exitCode = $process.ExitCode
|
|
121
121
|
$process.Dispose()
|
|
122
122
|
exit $exitCode
|
|
123
|
-
`,Do=a((e,n)=>{if(!/^S-1-5-21(?:-\d+)+$/i.test(n.sandboxSid)||!/^S-1-5-21(?:-\d+)+$/i.test(n.sandboxGroupSid)||n.sandboxSid.toLowerCase()===n.sandboxGroupSid.toLowerCase()||!u.isAbsolute(n.setupMarkerPath)||!/^[0-9a-f]{64}$/i.test(n.setupMarkerSha256))throw new Error("Windows sandbox account authority is invalid for capability setup.");if(n.readRoots.length+n.writeRoots.length>1024)throw new Error("Windows sandbox setup capability request exceeds 1024 roots.");let r=Xe(),t=u.join(r,`windows-setup-${process.pid}-${X()}.json`),o=Buffer.from(JSON.stringify(n),"utf8");if(o.byteLength>1024*1024)throw new Error("Windows sandbox setup capability request exceeds 1 MiB.");let i=rn("sha256").update(o).digest("hex"),s=Buffer.from(JSON.stringify({version:1,requestPath:t,sha256:i}),"utf8").toString("base64");Fr(t,o,{flag:"wx",mode:384});let d=u.join(process.env.SystemRoot??String.raw`C:\Windows`,"System32","WindowsPowerShell","v1.0","powershell.exe");try{let l=ie(d,["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(Io,"utf16le").toString("base64")],{encoding:"utf8",env:{...process.env,KODAX_NATIVE_SETUP_EXE:e,KODAX_NATIVE_SETUP_ENVELOPE:s},shell:!1,windowsHide:!0});if(l.error!==void 0||l.status!==0){let c=l.error?.message??(l.stderr.trim()||`exit ${String(l.status)}`);throw new Error(`Windows sandbox account capability setup failed: ${c}`)}}finally{tn(t,{force:!0})}},"installWindowsSetupCapabilities"),Lo=Do;function Dr(e,n,r,t){let o=u.resolve(process.env.USERPROFILE??q.homedir()),i=te(o);Lo(oe({provision:!0}).path,{version:2,sandboxSid:e,sandboxGroupSid:n,filesystemCapabilityNonce:r,setupMarkerPath:se(),setupMarkerSha256:rn("sha256").update(JSON.stringify(t),"utf8").digest("hex"),readRoots:Se(ye(t.setupReadRoots,o,i)),writeRoots:[],aclExclusions:i,..."legacyAclCleanup"in t?{legacyAclCleanup:t.legacyAclCleanup}:{}})}a(Dr,"installWindowsV2AccountCapabilities");function Bo(e,n){if(e?.legacyAclCleanup!==void 0)return{legacyAclCleanup:e.legacyAclCleanup};if(e===void 0||e.version<10||e.version>=We&&!e.installing)return{};let r=u.resolve(process.env.USERPROFILE??q.homedir()),t=te(r),o=e.setupReadRoots.filter(i=>t.some(s=>L(i,s)||L(s,i)));return{legacyAclCleanup:{roots:[...new Set([...o,...t,...cr(r)])],sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:n}}}a(Bo,"pendingWindowsSshAclCleanup");function $o(e,n){let r=ie(n,["__verify-null-device",e.sandboxUserSid],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3});if(r.error!==void 0||r.status!==0){let s=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw ue(`The sandbox account NUL-device compatibility ACE is missing or unsafe: ${s}`)}let t=u.resolve(process.env.USERPROFILE??q.homedir()),o=Se(ye(e.setupReadRoots,t,te(t)));if(o.length===0)return;let i=ie(n,["__verify-account-capabilities"],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3,input:JSON.stringify({sandboxSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:e.filesystemCapabilityNonce,readRoots:o})});if(i.error!==void 0||i.status!==0){let s=i.error?.message??(i.stderr.trim()||`exit ${String(i.status)}`);throw new Error(`Windows sandbox setup filesystem capabilities are missing or unsafe: ${s}`)}}a($o,"verifyWindowsV2AccountCompatibility");async function Go(e){let n=await z({refresh:!0});if(!e&&n.ready||!n.ready&&!n.setupRequired)return n;oe({provision:!0});let r=go()??X(),t,o=!1;try{t=wo()}catch(E){o=!0,G({source:"sandbox:windows-v2-setup",level:"warn",message:"The previous Windows sandbox generation marker is invalid and will be rotated.",detail:E})}let i=t!==void 0&&t.version>=10&&(t.version<We||t.installing);if(i&&t!==void 0&&!await Ze(t.sandboxUserSid))throw new Error('Windows sandbox SSH ACL migration requires idle sandbox processes; close sandboxed shells and retry "kodax sandbox setup".');await bo(),i||await mo();let s=await Fe([],!0),d=be({srtWin:s.srtWin}),l=d.sid,c=In(d).length===0&&d.sid!==void 0&&d.groupSid!==void 0,f=t===void 0||d.sid===t.sandboxUserSid&&d.groupSid===t.sandboxGroupSid&&kn()===t.hostUserSid,g=c&&!o&&f;So();let y;try{Xe()}catch(E){y=E}if(y!==void 0){if(Re(Ie())){if(d.sid===void 0&&d.provisioned!==!1)throw new Error("[windows_control_repair_sid_unavailable] The native shell control directory needs repair, but the provisioned sandbox account SID is unavailable; repair cannot safely prove that no sandbox process still holds a control-state handle.");if(l!==void 0&&!await Ze(l))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{ir()}catch(p){throw new AggregateError([y,p],"Windows native shell control state verification and setup repair both failed.")}let E=await z({refresh:!0});if(E.ready)return E}if(g){if((t?.version??0)<Un&&!ni(d.groupSid)){if(!await Ze(d.sid))throw new Error('Legacy Windows sandbox ACL migration requires the sandbox account to be idle; close sandboxed shells and retry "kodax sandbox setup".');$r(d.sid,d.groupSid)}if(Ar({srtWin:s.srtWin,proxyPortRange:De,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let m=be({srtWin:s.srtWin});if(m.sid===void 0||m.groupSid===void 0)throw new Error("Windows sandbox setup did not return complete account SIDs.");if(m.sid!==d.sid||m.groupSid!==d.groupSid)throw new Error("Windows sandbox in-place setup unexpectedly changed its account identity.");oe({sandboxReadSid:m.groupSid,provision:!0});let h={version:We,protocol:M,generationNonce:X(),filesystemCapabilityNonce:r,hostUserSid:kn(),sandboxUserSid:m.sid,sandboxGroupSid:m.groupSid,setupReadRoots:Gr()},R=Tr(h,t);return Dr(m.sid,m.groupSid,r,R),await On(s),_r(h),z({refresh:!0})}if(l!==void 0&&!await Ze(l))throw new Error('The Windows sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".');let w=await Ro();if(w!==void 0)return Ao(n,w);if(l!==void 0){if(await et(),d.groupSid===void 0)throw new Error("The legacy Windows sandbox group SID is unavailable; exact ACL migration cannot proceed.");if($r(l,d.groupSid),Gt({keepUser:!1,srtWin:s.srtWin}).cancelled)throw new Error("Sandbox account rotation was cancelled.")}if(Ar({srtWin:s.srtWin,proxyPortRange:De,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let S=be({srtWin:s.srtWin}),x=In(S);if(x.length>0||S.sid===void 0||S.groupSid===void 0)throw new Error(`Windows sandbox setup remained incomplete: ${x.join(" ")}`);if(l!==void 0&&S.sid===l)throw new Error("Windows sandbox account rotation did not produce a new SID; v2 remains fail-closed.");oe({sandboxReadSid:S.groupSid,provision:!0});let W={version:We,protocol:M,generationNonce:X(),filesystemCapabilityNonce:r,hostUserSid:kn(),sandboxUserSid:S.sid,sandboxGroupSid:S.groupSid,setupReadRoots:Gr()},O=Tr(W,t);return Dr(S.sid,S.groupSid,r,O),await On(s),_r(W),z({refresh:!0})}a(Go,"setupWindowsSandboxRuntimeWithLock");async function nt(e){return await Vr(u.dirname(Pr()),{recursive:!0,mode:448}),nr(Pr(),()=>Go(e),oo)}a(nt,"runWindowsSandboxSetup");async function ps(){return process.platform!=="win32"?z({refresh:!0}):nt(!0)}a(ps,"setupSandboxRuntime");function Ee(e){if(e.platform==="linux"||e.platform==="darwin")return jo(e);if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(Me));return n!==void 0?[n.slice(Me.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[`KodaX sandbox is not supported on ${e.platform}.`]}a(Ee,"sandboxSetupGuidance");function jo(e){let n=[e.ready?`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`:`KodaX sandbox is unavailable (${e.platform}, ASRT ${e.version}).`];if(n.push(...e.diagnostics),e.diagnostics.some(i=>/^(?:seccomp(?:[- ]helper)?|apply-seccomp)\b.*(?:not available|unavailable|not found|missing)/i.test(i))&&n.push("Warning: the ASRT seccomp helper (apply-seccomp) is unavailable or degraded; Unix socket restrictions may be unavailable. This warning alone does not make doctor unready. Optional repair: restore the ASRT helper for this platform and architecture in the application distribution."),e.ready)return n;e.diagnostics.some(i=>/JavaScript Skill interpreter is unavailable|\bnode(?:\.exe)?\b.*\bENOENT\b|\bENOENT\b.*\bnode(?:\.exe)?\b/i.test(i))&&n.push("Optional interpreter repair: KodaX reuses KODAX_A2A_NODE when provided, or Electron's own executable in Node mode (ELECTRON_RUN_AS_NODE). Check that this executable can run; Electron does not require Node.js on PATH.","For a standalone bundled CLI without an available interpreter, optionally install Node.js (>=20.16.0) on PATH or set KODAX_A2A_NODE to an existing Node.js executable.");let r=e.diagnostics.filter(i=>/not installed|not found|missing|ENOENT/i.test(i)),o=[...e.platform==="linux"?[["bubblewrap",/\b(?:bubblewrap|bwrap)\b/i],["socat",/\bsocat\b/i]]:[],["ripgrep",/\b(?:ripgrep|rg)\b/i]].filter(([,i])=>r.some(s=>i.test(s))).map(([i])=>i).join(" ");return o&&(n.push("Optional sandbox backend repair: install only the dependencies reported missing."),e.platform==="linux"?n.push(`Debian/Ubuntu: sudo apt install ${o}`,`Fedora/RHEL: sudo dnf install ${o}`,`Arch Linux: sudo pacman -S ${o}`):n.push(`Homebrew: brew install ${o}`)),n.push("Ordinary tools continue under the normal permission policy when the sandbox is unavailable; installing dependencies is not a prerequisite. Explicit sandbox-only calls do not execute without isolation.",'After optional repair, rerun "kodax sandbox doctor".'),n}a(jo,"posixSandboxSetupGuidance");async function gs(e={}){let n=e.initialDoctor??await z({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:Ee(n)};if(so(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};try{let r=n.diagnostics.some(o=>o.startsWith("Sandbox launch probe failed:"));await nt(r);let t=await vi({refresh:!0});return{status:t.ready?"ready":"unavailable",attempted:!0,doctor:t,guidance:Ee(t)}}catch(r){let t=await z({refresh:!0}),o=H(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:Ee(t),error:o}}}a(gs,"prepareSandboxRuntimeForSetup");function L(e,n){let r=u.relative(e,n);return r===""||!r.startsWith("..")&&!u.isAbsolute(r)}a(L,"isInside");function Y(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return rt(n)}a(Y,"sanitizedEnvironment");function rt(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}a(rt,"normalizedSandboxEnvironment");function Mo(e,n){return rt({...e,...n})}a(Mo,"mergeSandboxEnvironment");var Lr=250,Uo=1500,Fo=1e3,Br=12e3;async function Kn(e,n,r=sn,t=on,o=!1,i){let s=[],d=[],l=i!==void 0||e.pid===void 0?void 0:ln(e.pid),c=0,f,g=a(()=>{},"reportStopRequested"),y,w,b=new Promise(E=>{g=E}),S=a(E=>{if(f!==void 0)return;f=E,g();let p=!1,m,h;if(y=new Promise((k,N)=>{m=k,h=N}),y.catch(()=>{}),i!==void 0){i.terminate(e).then(m,k=>{h(k instanceof Error?k:new Error(String(k)))});return}let R=a(async k=>{let N=o?new Error("Native Windows sandbox host termination was not confirmed."):new Error("Sandbox broker process-tree termination was not confirmed; stop the retained process tree before retrying.");return k===void 0?N:new AggregateError([N,k],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),C=a(k=>{p||(p=!0,w!==void 0&&clearTimeout(w),k===void 0?m():h(k))},"finish");w=setTimeout(()=>{try{e.kill("SIGKILL"),R().then(C)}catch(k){R(k).then(C)}},Uo),Oe(e,{expectedProcessStartIdentity:l,forceMs:Lr,taskkillMs:Lr}).then(async k=>C(k.status==="unknown"?await R():void 0),async k=>C(await R(k)))},"requestStop"),x=a((E,p)=>{c+=p.byteLength,c>t?S(new Error(`Sandboxed command output exceeded ${t} bytes.`)):E.push(p)},"append");e.stdout?.on("data",E=>{x(s,E)}),e.stderr?.on("data",E=>{x(d,E)});let W=setTimeout(()=>{S(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),O=a(()=>{let E=n?.reason;S(E instanceof Error?E:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",O,{once:!0}),n?.aborted&&O();try{let E=new Promise((m,h)=>{e.once("error",h),e.stdin?.once("error",h),e.once("close",R=>m(R??1))}),p=await Promise.race([E,b.then(()=>1)]);if(f!==void 0){let m=f;try{await y}catch(h){let R=Buffer.concat(d).toString("utf8").trim();throw new AggregateError([m,h,...R===""?[]:[new Error(`Native sandbox stderr: ${R.slice(0,4096)}`)]],"Sandboxed command failed and native termination was not confirmed.")}throw m}return{exitCode:p,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(d).toString("utf8")}}finally{clearTimeout(W),w!==void 0&&clearTimeout(w),n?.removeEventListener("abort",O)}}a(Kn,"collectProcess");function $e(e){return e.reason instanceof Error?e.reason:new DOMException("Operation aborted","AbortError")}a($e,"sandboxAbortError");function Vo(e,n,r,t,o,i){let s=new WeakMap,d=new WeakMap,l=new WeakMap,c,f,g=!1,y,w=Buffer.concat([Buffer.from(e),hn("close-stdin")]),b=a((p,m,h)=>{let R=Math.min(h,Date.now()+Pn),C=p.stdin;if(C===null)return Promise.reject(new Error("Native sandbox bootstrap pipe was not created."));if(m?.aborted)return Promise.reject($e(m));if(Date.now()>=R)return Promise.reject(new Error("Native sandbox bootstrap delivery timed out."));let k=Buffer.alloc(0),N=p.stderr,F=a(B=>{k=Buffer.concat([k,B]).subarray(-4096)},"onStderr");return N?.on("data",F),l.set(p,"bootstrap-pending"),new Promise((B,Z)=>{let T=!1,I,P=setTimeout(()=>$(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(1,R-Date.now()));P.unref();let $=a(_=>{if(!T)if(T=!0,clearTimeout(P),I!==void 0&&clearTimeout(I),m?.removeEventListener("abort",ee),N?.off("data",F),_===void 0)B();else{let ne=k.toString("utf8").trim();Z(ne===""?_:new Error(`${_.message} Native sandbox stderr: ${ne}`,{cause:_}))}},"finish"),Q=a(_=>{T||I!==void 0||(I=setTimeout(()=>$(_),100),I.unref())},"failAfterStderrDrain"),V=a(_=>{Q(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))},"onError"),D=a(()=>{C.off("error",V),T||Q(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose"),ee=a(()=>{m!==void 0&&$($e(m))},"onAbort");if(C.on("error",V),C.once("close",D),m?.addEventListener("abort",ee,{once:!0}),m?.aborted){ee();return}C.write(w,_=>{_==null?(T||l.set(p,"control-open"),$()):Q(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))})})},"closeInput"),S=a(async()=>{let p=await An(t,"utf8"),m=JSON.parse(p),h=typeof m=="object"&&m!==null?Reflect.get(m,"denyReadCleanupDeferred"):void 0,R=typeof m=="object"&&m!==null?Reflect.get(m,"denyReadCleanupDiagnostic"):void 0,C=typeof m=="object"&&m!==null?Reflect.get(m,"brokerRetirementRecommended"):void 0;if(typeof m!="object"||m===null||Reflect.get(m,"protocol")!==M||Reflect.get(m,"nonce")!==o.toLowerCase()||Reflect.get(m,"jobDrained")!==!0||!Number.isSafeInteger(Reflect.get(m,"targetExitCode"))||typeof Reflect.get(m,"terminationRequested")!="boolean"||typeof C!="boolean"||typeof h!="boolean"||h&&(typeof R!="string"||R.length===0||R.length>2048))throw new Error("Native sandbox terminal record was invalid.");C&&(g=!0),h&&G({source:"sandbox:windows-v2",level:"warn",message:"Windows denyRead ACL cleanup was deferred for automatic recovery.",detail:R})},"verifyTerminalRecord"),x=a(async p=>{let m=await An(p,"utf8"),h=JSON.parse(m);if(typeof h!="object"||h===null||Reflect.get(h,"protocol")!==M||Reflect.get(h,"nonce")!==o.toLowerCase()||!Number.isSafeInteger(Reflect.get(h,"targetPid"))||Number(Reflect.get(h,"targetPid"))<=0||Reflect.get(h,"jobContained")!==!0)throw new Error("Native sandbox target-start record was invalid.")},"verifyLaunchRecord"),W=a(()=>x(r),"verifyStartedRecord");return{validateStart:i,closeInput:b,attestStart:a((p,m,h)=>{let R=d.get(p);if(R!==void 0)return R;let C=Math.min(h,Date.now()+Pn),k=C<h,N=new Promise((F,B)=>{let Z=!1,T=p.exitCode!==null||p.signalCode!==null,I=p.exitCode,P=p.signalCode,$,Q=Buffer.alloc(0),V=p.stderr,D=a((j,v)=>{Z||(Z=!0,$!==void 0&&clearTimeout($),p.off("close",_),m?.removeEventListener("abort",ne),V?.off("data",ee),v!==void 0?(f=H(v),B(v)):j!==void 0&&(j.state==="pre_start_unavailable"&&(c=j.diagnostic,!m?.aborted&&Date.now()<h&&(g=!0)),F(j)))},"finish"),ee=a(j=>{Q=Buffer.concat([Q,j]).subarray(-4096)},"onStderr"),_=a((j,v)=>{T=!0,I=j,P=v,we()},"onClose"),ne=a(()=>{m!==void 0&&D(void 0,$e(m))},"onAbort"),we=a(async()=>{if(!Z){try{await W(),l.set(p,"started"),D({state:"started"});return}catch(j){if(!U(j,"ENOENT")){D(void 0,j);return}}if(T){try{await x(n)}catch(v){if(!U(v,"ENOENT")){D(void 0,v);return}l.set(p,"pre-start-unavailable");let pe=Q.toString("utf8").trim()||`Native sandbox exited before target-start attestation (code ${String(I)}, signal ${String(P)}).`;D({state:"pre_start_unavailable",diagnostic:pe});return}let j=Q.toString("utf8").trim()||"Native sandbox authorized target Resume but exited before target-start attestation; execution is started-or-unknown and will not be replayed.";D(void 0,new Error(j));return}if(Date.now()>=C){k&&(g=!0),D(void 0,new Error("Native sandbox target-start attestation timed out."));return}$=setTimeout(()=>{we()},20),$.unref()}},"poll");V?.on("data",ee),p.once("close",_),m?.addEventListener("abort",ne,{once:!0}),m?.aborted?ne():we()});return d.set(p,N),N.catch(()=>{}),N},"attestStart"),terminate:a(p=>{let m=s.get(p);if(m!==void 0)return m;let h=new Promise((R,C)=>{let k=l.get(p),N=k===void 0||k==="pre-start-unavailable",F=k!=="started",B=p.stdin;if(B===null){C(new Error("Native sandbox control pipe was not created."));return}let Z=a(async(v,pe,he)=>{if(!N){if(F)try{await x(n)}catch(Ve){if(U(Ve,"ENOENT")){c??=f??"Native sandbox target Resume never occurred.",l.set(p,"pre-start-unavailable");return}throw Ve}try{await S()}catch(Ve){throw new Error(`Native sandbox closed without a Job-drain attestation (code ${String(v)}, signal ${String(pe)}).`,{cause:new AggregateError([Ve,...he===void 0?[]:[he]],"Native sandbox terminal record verification failed.")})}}},"verifyClosedBoundary");if(p.exitCode!==null||p.signalCode!==null){Z(p.exitCode,p.signalCode).then(()=>{l.set(p,"terminal"),R()},C);return}let T=!1,I=!1,P,$=F?Fo:Br,Q=Date.now(),V,D=a(v=>{T||(T=!0,V!==void 0&&clearTimeout(V),p.off("close",ee),p.off("error",_),B.off("error",ne),v===void 0?R():C(v))},"finish"),ee=a((v,pe)=>{I||Z(v,pe,P).then(()=>{l.set(p,"terminal"),D()},he=>D(he instanceof Error?he:new Error(String(he))))},"onClose"),_=a(v=>{P??=v},"onChildError"),ne=a(v=>{P??=v},"onStdinError"),we=a(()=>{T||I||(I=!0,Oe(p,{forceMs:500,taskkillMs:500}).then(v=>{if(v.status==="unknown"){D(new AggregateError([new Error("Emergency process-tree termination was not confirmed."),...P===void 0?[]:[P]],"Native sandbox termination was not confirmed by its runner."));return}Z(p.exitCode,p.signalCode,P).then(()=>{l.set(p,"terminal"),D()},pe=>D(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${$} ms.`),pe],"Native sandbox termination was not confirmed by its runner.")))},v=>D(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${$} ms.`),...P===void 0?[]:[P],v],"Native sandbox termination and emergency cleanup both failed."))))},"startEmergencyCleanup");V=setTimeout(a(()=>{if(!F){we();return}x(n).then(()=>{if(T||I)return;$=Br;let v=Math.max(0,$-(Date.now()-Q));V=setTimeout(we,v),V.unref()},v=>{U(v,"ENOENT")||(P??=v instanceof Error?v:new Error(String(v))),we()})},"onTerminationBudgetExpired"),$),V.unref(),p.once("close",ee),p.once("error",_),B.on("error",ne),B.end(l.get(p)===void 0?void 0:hn("terminate"),v=>{v!=null&&(P??=v)})});return s.set(p,h),y=h,h.catch(()=>{}),h},"terminate"),getPreStartUnavailableDiagnostic:a(()=>c,"getPreStartUnavailableDiagnostic"),shouldRetireBrokerAfterStartFailure:a(()=>g,"shouldRetireBrokerAfterStartFailure"),async waitForTerminalObservation(){let p=y;if(p===void 0){await S();return}await p}}}a(Vo,"createWindowsV2ProcessControl");function Ko(e,n,r,t){let o=e.stdin;return o===null?Promise.reject(new Error("Native sandbox bootstrap pipe was not created.")):r?.aborted?Promise.reject($e(r)):Date.now()>=t?Promise.reject(new Error("Native sandbox bootstrap delivery timed out.")):new Promise((i,s)=>{let d=!1,l=setTimeout(()=>c(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(0,t-Date.now()));l.unref();let c=a(w=>{d||(d=!0,clearTimeout(l),r?.removeEventListener("abort",g),w===void 0?i():s(w))},"finish"),f=a(()=>c(new Error("Native sandbox bootstrap delivery failed.")),"onError"),g=a(()=>{r!==void 0&&c($e(r))},"onAbort"),y=a(()=>{o.off("error",f),d||c(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose");o.on("error",f),o.once("close",y),o.once("finish",()=>c()),r?.addEventListener("abort",g,{once:!0}),n===void 0?o.end():o.end(n)})}a(Ko,"closeNativeSandboxInput");async function Xo(e,n){let r=u.join(n,`kodax-asrt-gate-${process.pid}-${X()}.json`);return await Bn(r,JSON.stringify(e),{mode:384}),{...Yn({args:["-e",Zt,r],env:Y(),isElectron:process.versions.electron!==void 0}),gateFile:r}}a(Xo,"prepareWindowsGatedLaunch");function Jo(e,n){let r=e.stdin;return r===null?Promise.reject(new Error("Sandbox gate stdin is unavailable.")):new Promise((t,o)=>{let i=!1,s=a(()=>{r.removeListener("error",l)},"cleanup"),d=a(c=>{i||(i=!0,s(),c?o(c):t())},"settle"),l=a(c=>d(c),"onError");r.once("error",l),n?r.end(`go
|
|
123
|
+
`,Do=a((e,n)=>{if(!/^S-1-5-21(?:-\d+)+$/i.test(n.sandboxSid)||!/^S-1-5-21(?:-\d+)+$/i.test(n.sandboxGroupSid)||n.sandboxSid.toLowerCase()===n.sandboxGroupSid.toLowerCase()||!u.isAbsolute(n.setupMarkerPath)||!/^[0-9a-f]{64}$/i.test(n.setupMarkerSha256))throw new Error("Windows sandbox account authority is invalid for capability setup.");if(n.readRoots.length+n.writeRoots.length>1024)throw new Error("Windows sandbox setup capability request exceeds 1024 roots.");let r=Xe(),t=u.join(r,`windows-setup-${process.pid}-${X()}.json`),o=Buffer.from(JSON.stringify(n),"utf8");if(o.byteLength>1024*1024)throw new Error("Windows sandbox setup capability request exceeds 1 MiB.");let i=rn("sha256").update(o).digest("hex"),s=Buffer.from(JSON.stringify({version:1,requestPath:t,sha256:i}),"utf8").toString("base64");Fr(t,o,{flag:"wx",mode:384});let d=u.join(process.env.SystemRoot??String.raw`C:\Windows`,"System32","WindowsPowerShell","v1.0","powershell.exe");try{let l=ie(d,["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",Buffer.from(Io,"utf16le").toString("base64")],{encoding:"utf8",env:{...process.env,KODAX_NATIVE_SETUP_EXE:e,KODAX_NATIVE_SETUP_ENVELOPE:s},shell:!1,windowsHide:!0});if(l.error!==void 0||l.status!==0){let c=l.error?.message??(l.stderr.trim()||`exit ${String(l.status)}`);throw new Error(`Windows sandbox account capability setup failed: ${c}`)}}finally{tn(t,{force:!0})}},"installWindowsSetupCapabilities"),Lo=Do;function Dr(e,n,r,t){let o=u.resolve(process.env.USERPROFILE??q.homedir()),i=te(o);Lo(oe({provision:!0}).path,{version:2,sandboxSid:e,sandboxGroupSid:n,filesystemCapabilityNonce:r,setupMarkerPath:se(),setupMarkerSha256:rn("sha256").update(JSON.stringify(t),"utf8").digest("hex"),readRoots:Se(ye(t.setupReadRoots,o,i)),writeRoots:[],aclExclusions:i,..."legacyAclCleanup"in t?{legacyAclCleanup:t.legacyAclCleanup}:{}})}a(Dr,"installWindowsV2AccountCapabilities");function Bo(e,n){if(e?.legacyAclCleanup!==void 0)return{legacyAclCleanup:e.legacyAclCleanup};if(e===void 0||e.version<10||e.version>=We&&!e.installing)return{};let r=u.resolve(process.env.USERPROFILE??q.homedir()),t=te(r),o=e.setupReadRoots.filter(i=>t.some(s=>L(i,s)||L(s,i)));return{legacyAclCleanup:{roots:[...new Set([...o,...t,...cr(r)])],sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:n}}}a(Bo,"pendingWindowsSshAclCleanup");function $o(e,n){let r=ie(n,["__verify-null-device",e.sandboxUserSid],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3});if(r.error!==void 0||r.status!==0){let s=r.error?.message??(r.stderr.trim()||`exit ${String(r.status)}`);throw ue(`The sandbox account NUL-device compatibility ACE is missing or unsafe: ${s}`)}let t=u.resolve(process.env.USERPROFILE??q.homedir()),o=Se(ye(e.setupReadRoots,t,te(t)));if(o.length===0)return;let i=ie(n,["__verify-account-capabilities"],{env:Y(),encoding:"utf8",shell:!1,windowsHide:!0,timeout:5e3,input:JSON.stringify({sandboxSid:e.sandboxUserSid,sandboxGroupSid:e.sandboxGroupSid,filesystemCapabilityNonce:e.filesystemCapabilityNonce,readRoots:o})});if(i.error!==void 0||i.status!==0){let s=i.error?.message??(i.stderr.trim()||`exit ${String(i.status)}`);throw new Error(`Windows sandbox setup filesystem capabilities are missing or unsafe: ${s}`)}}a($o,"verifyWindowsV2AccountCompatibility");async function Go(e){let n=await z({refresh:!0});if(!e&&n.ready||!n.ready&&!n.setupRequired)return n;oe({provision:!0});let r=go()??X(),t,o=!1;try{t=wo()}catch(E){o=!0,G({source:"sandbox:windows-v2-setup",level:"warn",message:"The previous Windows sandbox generation marker is invalid and will be rotated.",detail:E})}let i=t!==void 0&&t.version>=10&&(t.version<We||t.installing);if(i&&t!==void 0&&!await Ze(t.sandboxUserSid))throw new Error('Windows sandbox SSH ACL migration requires idle sandbox processes; close sandboxed shells and retry "kodax sandbox setup".');await bo(),i||await mo();let s=await Fe([],!0),d=be({srtWin:s.srtWin}),l=d.sid,c=Dn(d).length===0&&d.sid!==void 0&&d.groupSid!==void 0,f=t===void 0||d.sid===t.sandboxUserSid&&d.groupSid===t.sandboxGroupSid&&Rn()===t.hostUserSid,g=c&&!o&&f;So();let y;try{Xe()}catch(E){y=E}if(y!==void 0){if(Re(Ie())){if(d.sid===void 0&&d.provisioned!==!1)throw new Error("[windows_control_repair_sid_unavailable] The native shell control directory needs repair, but the provisioned sandbox account SID is unavailable; repair cannot safely prove that no sandbox process still holds a control-state handle.");if(l!==void 0&&!await Ze(l))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{ir()}catch(p){throw new AggregateError([y,p],"Windows native shell control state verification and setup repair both failed.")}let E=await z({refresh:!0});if(E.ready)return E}if(g){if((t?.version??0)<Fn&&!ni(d.groupSid)){if(!await Ze(d.sid))throw new Error('Legacy Windows sandbox ACL migration requires the sandbox account to be idle; close sandboxed shells and retry "kodax sandbox setup".');$r(d.sid,d.groupSid)}if(Ar({srtWin:s.srtWin,proxyPortRange:De,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let m=be({srtWin:s.srtWin});if(m.sid===void 0||m.groupSid===void 0)throw new Error("Windows sandbox setup did not return complete account SIDs.");if(m.sid!==d.sid||m.groupSid!==d.groupSid)throw new Error("Windows sandbox in-place setup unexpectedly changed its account identity.");oe({sandboxReadSid:m.groupSid,provision:!0});let h={version:We,protocol:M,generationNonce:X(),filesystemCapabilityNonce:r,hostUserSid:Rn(),sandboxUserSid:m.sid,sandboxGroupSid:m.groupSid,setupReadRoots:Gr()},R=Tr(h,t);return Dr(m.sid,m.groupSid,r,R),await In(s),_r(h),z({refresh:!0})}if(l!==void 0&&!await Ze(l))throw new Error('The Windows sandbox account still has a live process; close sandboxed shells and retry "kodax sandbox setup".');let w=await Ro();if(w!==void 0)return Ao(n,w);if(l!==void 0){if(await et(),d.groupSid===void 0)throw new Error("The legacy Windows sandbox group SID is unavailable; exact ACL migration cannot proceed.");if($r(l,d.groupSid),Gt({keepUser:!1,srtWin:s.srtWin}).cancelled)throw new Error("Sandbox account rotation was cancelled.")}if(Ar({srtWin:s.srtWin,proxyPortRange:De,force:!0}).cancelled)throw new Error("Sandbox setup was cancelled.");let S=be({srtWin:s.srtWin}),x=Dn(S);if(x.length>0||S.sid===void 0||S.groupSid===void 0)throw new Error(`Windows sandbox setup remained incomplete: ${x.join(" ")}`);if(l!==void 0&&S.sid===l)throw new Error("Windows sandbox account rotation did not produce a new SID; v2 remains fail-closed.");oe({sandboxReadSid:S.groupSid,provision:!0});let W={version:We,protocol:M,generationNonce:X(),filesystemCapabilityNonce:r,hostUserSid:Rn(),sandboxUserSid:S.sid,sandboxGroupSid:S.groupSid,setupReadRoots:Gr()},O=Tr(W,t);return Dr(S.sid,S.groupSid,r,O),await In(s),_r(W),z({refresh:!0})}a(Go,"setupWindowsSandboxRuntimeWithLock");async function nt(e){return await Vr(u.dirname(Pr()),{recursive:!0,mode:448}),nr(Pr(),()=>Go(e),oo)}a(nt,"runWindowsSandboxSetup");async function gs(){return process.platform!=="win32"?z({refresh:!0}):nt(!0)}a(gs,"setupSandboxRuntime");function Ee(e){if(e.platform==="linux"||e.platform==="darwin")return jo(e);if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(Me));return n!==void 0?[n.slice(Me.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[`KodaX sandbox is not supported on ${e.platform}.`]}a(Ee,"sandboxSetupGuidance");function jo(e){let n=[e.ready?`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`:`KodaX sandbox is unavailable (${e.platform}, ASRT ${e.version}).`];if(n.push(...e.diagnostics),e.diagnostics.some(i=>/^(?:seccomp(?:[- ]helper)?|apply-seccomp)\b.*(?:not available|unavailable|not found|missing)/i.test(i))&&n.push("Warning: the ASRT seccomp helper (apply-seccomp) is unavailable or degraded; Unix socket restrictions may be unavailable. This warning alone does not make doctor unready. Optional repair: restore the ASRT helper for this platform and architecture in the application distribution."),e.ready)return n;e.diagnostics.some(i=>/JavaScript Skill interpreter is unavailable|\bnode(?:\.exe)?\b.*\bENOENT\b|\bENOENT\b.*\bnode(?:\.exe)?\b/i.test(i))&&n.push("Optional interpreter repair: KodaX reuses KODAX_A2A_NODE when provided, or Electron's own executable in Node mode (ELECTRON_RUN_AS_NODE). Check that this executable can run; Electron does not require Node.js on PATH.","For a standalone bundled CLI without an available interpreter, optionally install Node.js (>=20.16.0) on PATH or set KODAX_A2A_NODE to an existing Node.js executable.");let r=e.diagnostics.filter(i=>/not installed|not found|missing|ENOENT/i.test(i)),o=[...e.platform==="linux"?[["bubblewrap",/\b(?:bubblewrap|bwrap)\b/i],["socat",/\bsocat\b/i]]:[],["ripgrep",/\b(?:ripgrep|rg)\b/i]].filter(([,i])=>r.some(s=>i.test(s))).map(([i])=>i).join(" ");return o&&(n.push("Optional sandbox backend repair: install only the dependencies reported missing."),e.platform==="linux"?n.push(`Debian/Ubuntu: sudo apt install ${o}`,`Fedora/RHEL: sudo dnf install ${o}`,`Arch Linux: sudo pacman -S ${o}`):n.push(`Homebrew: brew install ${o}`)),n.push("Ordinary tools continue under the normal permission policy when the sandbox is unavailable; installing dependencies is not a prerequisite. Explicit sandbox-only calls do not execute without isolation.",'After optional repair, rerun "kodax sandbox doctor".'),n}a(jo,"posixSandboxSetupGuidance");async function ys(e={}){let n=e.initialDoctor??await z({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:Ee(n)};if(so(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:Ee(n)};try{let r=n.diagnostics.some(o=>o.startsWith("Sandbox launch probe failed:"));await nt(r);let t=await vi({refresh:!0});return{status:t.ready?"ready":"unavailable",attempted:!0,doctor:t,guidance:Ee(t)}}catch(r){let t=await z({refresh:!0}),o=H(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:Ee(t),error:o}}}a(ys,"prepareSandboxRuntimeForSetup");function L(e,n){let r=u.relative(e,n);return r===""||!r.startsWith("..")&&!u.isAbsolute(r)}a(L,"isInside");function Y(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return rt(n)}a(Y,"sanitizedEnvironment");function rt(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}a(rt,"normalizedSandboxEnvironment");function Mo(e,n){return rt({...e,...n})}a(Mo,"mergeSandboxEnvironment");var Lr=250,Uo=1500,Fo=1e3,Br=12e3;async function Kn(e,n,r=sn,t=on,o=!1,i){let s=[],d=[],l=i!==void 0||e.pid===void 0?void 0:cn(e.pid),c=0,f,g=a(()=>{},"reportStopRequested"),y,w,b=new Promise(E=>{g=E}),S=a(E=>{if(f!==void 0)return;f=E,g();let p=!1,m,h;if(y=new Promise((k,N)=>{m=k,h=N}),y.catch(()=>{}),i!==void 0){i.terminate(e).then(m,k=>{h(k instanceof Error?k:new Error(String(k)))});return}let R=a(async k=>{let N=o?new Error("Native Windows sandbox host termination was not confirmed."):new Error("Sandbox broker process-tree termination was not confirmed; stop the retained process tree before retrying.");return k===void 0?N:new AggregateError([N,k],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),C=a(k=>{p||(p=!0,w!==void 0&&clearTimeout(w),k===void 0?m():h(k))},"finish");w=setTimeout(()=>{try{e.kill("SIGKILL"),R().then(C)}catch(k){R(k).then(C)}},Uo),Oe(e,{expectedProcessStartIdentity:l,forceMs:Lr,taskkillMs:Lr}).then(async k=>C(k.status==="unknown"?await R():void 0),async k=>C(await R(k)))},"requestStop"),x=a((E,p)=>{c+=p.byteLength,c>t?S(new Error(`Sandboxed command output exceeded ${t} bytes.`)):E.push(p)},"append");e.stdout?.on("data",E=>{x(s,E)}),e.stderr?.on("data",E=>{x(d,E)});let W=setTimeout(()=>{S(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),O=a(()=>{let E=n?.reason;S(E instanceof Error?E:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",O,{once:!0}),n?.aborted&&O();try{let E=new Promise((m,h)=>{e.once("error",h),e.stdin?.once("error",h),e.once("close",R=>m(R??1))}),p=await Promise.race([E,b.then(()=>1)]);if(f!==void 0){let m=f;try{await y}catch(h){let R=Buffer.concat(d).toString("utf8").trim();throw new AggregateError([m,h,...R===""?[]:[new Error(`Native sandbox stderr: ${R.slice(0,4096)}`)]],"Sandboxed command failed and native termination was not confirmed.")}throw m}return{exitCode:p,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(d).toString("utf8")}}finally{clearTimeout(W),w!==void 0&&clearTimeout(w),n?.removeEventListener("abort",O)}}a(Kn,"collectProcess");function $e(e){return e.reason instanceof Error?e.reason:new DOMException("Operation aborted","AbortError")}a($e,"sandboxAbortError");function Vo(e,n,r,t,o,i){let s=new WeakMap,d=new WeakMap,l=new WeakMap,c,f,g=!1,y,w=Buffer.concat([Buffer.from(e),vn("close-stdin")]),b=a((p,m,h)=>{let R=Math.min(h,Date.now()+Nn),C=p.stdin;if(C===null)return Promise.reject(new Error("Native sandbox bootstrap pipe was not created."));if(m?.aborted)return Promise.reject($e(m));if(Date.now()>=R)return Promise.reject(new Error("Native sandbox bootstrap delivery timed out."));let k=Buffer.alloc(0),N=p.stderr,F=a(B=>{k=Buffer.concat([k,B]).subarray(-4096)},"onStderr");return N?.on("data",F),l.set(p,"bootstrap-pending"),new Promise((B,Z)=>{let T=!1,I,P=setTimeout(()=>$(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(1,R-Date.now()));P.unref();let $=a(_=>{if(!T)if(T=!0,clearTimeout(P),I!==void 0&&clearTimeout(I),m?.removeEventListener("abort",ee),N?.off("data",F),_===void 0)B();else{let ne=k.toString("utf8").trim();Z(ne===""?_:new Error(`${_.message} Native sandbox stderr: ${ne}`,{cause:_}))}},"finish"),Q=a(_=>{T||I!==void 0||(I=setTimeout(()=>$(_),100),I.unref())},"failAfterStderrDrain"),V=a(_=>{Q(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))},"onError"),D=a(()=>{C.off("error",V),T||Q(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose"),ee=a(()=>{m!==void 0&&$($e(m))},"onAbort");if(C.on("error",V),C.once("close",D),m?.addEventListener("abort",ee,{once:!0}),m?.aborted){ee();return}C.write(w,_=>{_==null?(T||l.set(p,"control-open"),$()):Q(new Error("Native sandbox bootstrap delivery failed.",{cause:_}))})})},"closeInput"),S=a(async()=>{let p=await Wn(t,"utf8"),m=JSON.parse(p),h=typeof m=="object"&&m!==null?Reflect.get(m,"denyReadCleanupDeferred"):void 0,R=typeof m=="object"&&m!==null?Reflect.get(m,"denyReadCleanupDiagnostic"):void 0,C=typeof m=="object"&&m!==null?Reflect.get(m,"brokerRetirementRecommended"):void 0;if(typeof m!="object"||m===null||Reflect.get(m,"protocol")!==M||Reflect.get(m,"nonce")!==o.toLowerCase()||Reflect.get(m,"jobDrained")!==!0||!Number.isSafeInteger(Reflect.get(m,"targetExitCode"))||typeof Reflect.get(m,"terminationRequested")!="boolean"||typeof C!="boolean"||typeof h!="boolean"||h&&(typeof R!="string"||R.length===0||R.length>2048))throw new Error("Native sandbox terminal record was invalid.");C&&(g=!0),h&&G({source:"sandbox:windows-v2",level:"warn",message:"Windows denyRead ACL cleanup was deferred for automatic recovery.",detail:R})},"verifyTerminalRecord"),x=a(async p=>{let m=await Wn(p,"utf8"),h=JSON.parse(m);if(typeof h!="object"||h===null||Reflect.get(h,"protocol")!==M||Reflect.get(h,"nonce")!==o.toLowerCase()||!Number.isSafeInteger(Reflect.get(h,"targetPid"))||Number(Reflect.get(h,"targetPid"))<=0||Reflect.get(h,"jobContained")!==!0)throw new Error("Native sandbox target-start record was invalid.")},"verifyLaunchRecord"),W=a(()=>x(r),"verifyStartedRecord");return{validateStart:i,closeInput:b,attestStart:a((p,m,h)=>{let R=d.get(p);if(R!==void 0)return R;let C=Math.min(h,Date.now()+Nn),k=C<h,N=new Promise((F,B)=>{let Z=!1,T=p.exitCode!==null||p.signalCode!==null,I=p.exitCode,P=p.signalCode,$,Q=Buffer.alloc(0),V=p.stderr,D=a((j,v)=>{Z||(Z=!0,$!==void 0&&clearTimeout($),p.off("close",_),m?.removeEventListener("abort",ne),V?.off("data",ee),v!==void 0?(f=H(v),B(v)):j!==void 0&&(j.state==="pre_start_unavailable"&&(c=j.diagnostic,!m?.aborted&&Date.now()<h&&(g=!0)),F(j)))},"finish"),ee=a(j=>{Q=Buffer.concat([Q,j]).subarray(-4096)},"onStderr"),_=a((j,v)=>{T=!0,I=j,P=v,we()},"onClose"),ne=a(()=>{m!==void 0&&D(void 0,$e(m))},"onAbort"),we=a(async()=>{if(!Z){try{await W(),l.set(p,"started"),D({state:"started"});return}catch(j){if(!U(j,"ENOENT")){D(void 0,j);return}}if(T){try{await x(n)}catch(v){if(!U(v,"ENOENT")){D(void 0,v);return}l.set(p,"pre-start-unavailable");let pe=Q.toString("utf8").trim()||`Native sandbox exited before target-start attestation (code ${String(I)}, signal ${String(P)}).`;D({state:"pre_start_unavailable",diagnostic:pe});return}let j=Q.toString("utf8").trim()||"Native sandbox authorized target Resume but exited before target-start attestation; execution is started-or-unknown and will not be replayed.";D(void 0,new Error(j));return}if(Date.now()>=C){k&&(g=!0),D(void 0,new Error("Native sandbox target-start attestation timed out."));return}$=setTimeout(()=>{we()},20),$.unref()}},"poll");V?.on("data",ee),p.once("close",_),m?.addEventListener("abort",ne,{once:!0}),m?.aborted?ne():we()});return d.set(p,N),N.catch(()=>{}),N},"attestStart"),terminate:a(p=>{let m=s.get(p);if(m!==void 0)return m;let h=new Promise((R,C)=>{let k=l.get(p),N=k===void 0||k==="pre-start-unavailable",F=k!=="started",B=p.stdin;if(B===null){C(new Error("Native sandbox control pipe was not created."));return}let Z=a(async(v,pe,he)=>{if(!N){if(F)try{await x(n)}catch(Ve){if(U(Ve,"ENOENT")){c??=f??"Native sandbox target Resume never occurred.",l.set(p,"pre-start-unavailable");return}throw Ve}try{await S()}catch(Ve){throw new Error(`Native sandbox closed without a Job-drain attestation (code ${String(v)}, signal ${String(pe)}).`,{cause:new AggregateError([Ve,...he===void 0?[]:[he]],"Native sandbox terminal record verification failed.")})}}},"verifyClosedBoundary");if(p.exitCode!==null||p.signalCode!==null){Z(p.exitCode,p.signalCode).then(()=>{l.set(p,"terminal"),R()},C);return}let T=!1,I=!1,P,$=F?Fo:Br,Q=Date.now(),V,D=a(v=>{T||(T=!0,V!==void 0&&clearTimeout(V),p.off("close",ee),p.off("error",_),B.off("error",ne),v===void 0?R():C(v))},"finish"),ee=a((v,pe)=>{I||Z(v,pe,P).then(()=>{l.set(p,"terminal"),D()},he=>D(he instanceof Error?he:new Error(String(he))))},"onClose"),_=a(v=>{P??=v},"onChildError"),ne=a(v=>{P??=v},"onStdinError"),we=a(()=>{T||I||(I=!0,Oe(p,{forceMs:500,taskkillMs:500}).then(v=>{if(v.status==="unknown"){D(new AggregateError([new Error("Emergency process-tree termination was not confirmed."),...P===void 0?[]:[P]],"Native sandbox termination was not confirmed by its runner."));return}Z(p.exitCode,p.signalCode,P).then(()=>{l.set(p,"terminal"),D()},pe=>D(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${$} ms.`),pe],"Native sandbox termination was not confirmed by its runner.")))},v=>D(new AggregateError([new Error(`Native sandbox did not attest Job drain within ${$} ms.`),...P===void 0?[]:[P],v],"Native sandbox termination and emergency cleanup both failed."))))},"startEmergencyCleanup");V=setTimeout(a(()=>{if(!F){we();return}x(n).then(()=>{if(T||I)return;$=Br;let v=Math.max(0,$-(Date.now()-Q));V=setTimeout(we,v),V.unref()},v=>{U(v,"ENOENT")||(P??=v instanceof Error?v:new Error(String(v))),we()})},"onTerminationBudgetExpired"),$),V.unref(),p.once("close",ee),p.once("error",_),B.on("error",ne),B.end(l.get(p)===void 0?void 0:vn("terminate"),v=>{v!=null&&(P??=v)})});return s.set(p,h),y=h,h.catch(()=>{}),h},"terminate"),getPreStartUnavailableDiagnostic:a(()=>c,"getPreStartUnavailableDiagnostic"),shouldRetireBrokerAfterStartFailure:a(()=>g,"shouldRetireBrokerAfterStartFailure"),async waitForTerminalObservation(){let p=y;if(p===void 0){await S();return}await p}}}a(Vo,"createWindowsV2ProcessControl");function Ko(e,n,r,t){let o=e.stdin;return o===null?Promise.reject(new Error("Native sandbox bootstrap pipe was not created.")):r?.aborted?Promise.reject($e(r)):Date.now()>=t?Promise.reject(new Error("Native sandbox bootstrap delivery timed out.")):new Promise((i,s)=>{let d=!1,l=setTimeout(()=>c(new Error("Native sandbox bootstrap delivery timed out.")),Math.max(0,t-Date.now()));l.unref();let c=a(w=>{d||(d=!0,clearTimeout(l),r?.removeEventListener("abort",g),w===void 0?i():s(w))},"finish"),f=a(()=>c(new Error("Native sandbox bootstrap delivery failed.")),"onError"),g=a(()=>{r!==void 0&&c($e(r))},"onAbort"),y=a(()=>{o.off("error",f),d||c(new Error("Native sandbox bootstrap pipe closed before delivery completed."))},"onClose");o.on("error",f),o.once("close",y),o.once("finish",()=>c()),r?.addEventListener("abort",g,{once:!0}),n===void 0?o.end():o.end(n)})}a(Ko,"closeNativeSandboxInput");async function Xo(e,n){let r=u.join(n,`kodax-asrt-gate-${process.pid}-${X()}.json`);return await $n(r,JSON.stringify(e),{mode:384}),{...Yn({args:["-e",Zt,r],env:Y(),isElectron:process.versions.electron!==void 0}),gateFile:r}}a(Xo,"prepareWindowsGatedLaunch");function Jo(e,n){let r=e.stdin;return r===null?Promise.reject(new Error("Sandbox gate stdin is unavailable.")):new Promise((t,o)=>{let i=!1,s=a(()=>{r.removeListener("error",l)},"cleanup"),d=a(c=>{i||(i=!0,s(),c?o(c):t())},"settle"),l=a(c=>d(c),"onError");r.once("error",l),n?r.end(`go
|
|
124
124
|
`,d):r.write(`go
|
|
125
|
-
`,d)})}a(Jo,"writeSandboxGate");function Ho(e){let n=e.stdin;return n===null||n.destroyed||n.writableEnded?Promise.resolve():new Promise((r,t)=>{let o=!1,i=a(()=>{n.removeListener("error",d)},"cleanup"),s=a(l=>{o||(o=!0,i(),l?t(l):r())},"settle"),d=a(l=>s(l),"onError");n.once("error",d),n.end(s)})}a(Ho,"closeSandboxGate");async function qo(e,n,r=sn,t=on){Lt();let o=No({...e,bootstrapCommand:e.bootstrapCommand??Vn()}),i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",Qt(),Ut],s=_e({args:i,env:Y(),isElectron:process.versions.electron!==void 0}),d=nn(process.execPath,s.args,{cwd:e.cwd,env:s.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0});Te(d);let l=Kn(d,n,r,t),c=To(d).then(y=>({output:y,failure:void 0}),y=>({output:new Uint8Array,failure:H(y)}));try{await Ko(d,o.payload,n,Date.now()+r)}catch(y){throw d.kill("SIGTERM"),await Promise.allSettled([l,c]),y}let[f,g]=await Promise.all([l,c]);return{...f,...g.failure===void 0?{}:{controlFailure:g.failure},controlInvocationId:o.invocationId,controlOutput:g.output,expectedBackend:o.request.observationBackend??"unsupported"}}a(qo,"runBrokerResult");function tt(e){if(process.platform!=="win32")return e;let n=jn();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:e.filesystem.allowRead,denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}a(tt,"withPreparedWindowsRunner");function zo(){let e=[q.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&u.isAbsolute(n)).map(n=>u.resolve(n)))]}a(zo,"canonicalTempDirectories");function Yo(e){return[u.join(e,".kodax","runtime"),u.join(e,".git","config"),u.join(e,".git","hooks")].filter(r=>{try{return Ge(r),!0}catch{return!1}})}a(Yo,"existingWorkspaceDenyWrites");function Zo(e){if(e===void 0)return[];if(Ge(e,{throwIfNoEntry:!1})===void 0)throw new Error(`Trusted project Exec Policy snapshot disappeared before sandbox admission: ${e}`);return[e]}a(Zo,"trustedProjectExecPolicyDenyWrite");function Se(e){let n=[...new Set(e.map(t=>u.resolve(t)))].filter(t=>Ge(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>L(o,t))||r.push(t);return r}a(Se,"existingMinimalWindowsAclGuardRoots");function Qo(){let e=u.resolve(process.env.USERPROFILE??q.homedir()),n=u.resolve(ge()),r=Ft.map(t=>u.join(e,t)).filter(t=>!Ue(t,n));return Se([...r,...Vt.map(t=>u.join(n,t)),an()])}a(Qo,"windowsLegacyPersistentAclGuardRoots");function ei(e,n,r){if(r===void 0)throw new Error("Windows sandbox group SID is unavailable for persistent denyRead.");let t=Se(e);if(t.length===0)return;let o=oe({sandboxReadSid:r,untrustedWriteRoots:[]}).path,i=ie(o,["__persistent-deny-read","remove",n,r],{input:JSON.stringify(t),encoding:"utf8",timeout:15*6e4,windowsHide:!0});if(i.error||i.status!==0){let s=(i.error?.message||i.stderr||i.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${s}`)}try{let s=JSON.parse(i.stdout.trim());if(!Array.isArray(s)||s.length!==0)throw new Error("legacy ACL removal returned a non-empty result")}catch(s){throw new Error(`Windows sandbox ACL guard returned invalid output: ${H(s)}`)}}a(ei,"removeWindowsLegacyAclGuards");function ot(){return u.join(u.resolve(process.env.ProgramData??u.join(q.homedir(),"AppData","Local")),"KodaX","sandbox-runtime","read-policy-v2.json")}a(ot,"windowsLegacyAclReconciliationMarkerFile");function ni(e){let n=ot(),r;try{r=ae(n)}catch(i){if(U(i,"ENOENT"))return!1;throw i}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1||r.size>Mn)return!1;let t;try{t=JSON.parse(Ne(n,"utf8"))}catch(i){if(i instanceof SyntaxError)return!1;throw i}if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=t;return Object.keys(o).sort().join(",")==="sandboxGroupSid,setupVersion,version"&&o.version===2&&o.setupVersion===Un&&o.sandboxGroupSid===e}a(ni,"windowsLegacyAclMigrationIsCurrent");function $r(e,n){let r=Qo();ei(r,e,n),Fr(ot(),JSON.stringify({version:2,setupVersion:Un,sandboxGroupSid:n}),{encoding:"utf8",mode:384})}a($r,"migrateWindowsLegacyAclGuardsForSetup");function it(e){return ye([e],e,te(e))}a(it,"windowsSandboxProfileReadRoots");function Gr(){let e=u.resolve(process.env.USERPROFILE??q.homedir());return Se(ye([...it(e),...ci(Jn(process.env))],e,te(e)))}a(Gr,"windowsSandboxSetupReadRoots");function ri(e,n){let r=[];for(let t of e)try{r.push(J.native(t))}catch{continue}return process.platform==="win32"?Se(r):[...new Set(r)]}a(ri,"workspaceShellWriteRoots");function ti(e,n){return e.filter(r=>n.some(t=>Ue(t,r)))}a(ti,"windowsSandboxPreinstalledReadRoots");function oi(e){return process.platform==="win32"?e===void 0?[]:[e]:zo()}a(oi,"workspaceShellTempWriteRoots");function ii(e,n,r){try{let t=J.native(n),o=u.resolve(n),i=u.resolve(e);if(!L(o,i)||i===o)return;for(;i!==o;)try{let s=J.native(i);if(s===t||!L(t,s))return;let d=u.relative(t,s).split(u.sep)[0]?.toLowerCase();return/^\.?auth\.json(?:[.-].*)?$/.test(d??"")||d==="sandbox-runtime"||r&&Jr.some(l=>l===d)?void 0:s}catch(s){if(!r||s.code!=="ENOENT")return;try{ae(i);return}catch(l){if(l.code!=="ENOENT")return}let d=u.dirname(i);if(d===i)return;i=d}return}catch{return}}a(ii,"windowsAgentHomeAccessRoot");function si(e,n){if(!n)return{read:[],write:[]};let r=a((t,o)=>[...new Set(t.flatMap(i=>{let s=ii(i,e,o);return s?[s]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}a(si,"windowsAgentHomeAccessRoots");function Xn(e){return e??(process.platform==="win32"?process.env.COMSPEC??u.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}a(Xn,"workspaceShellExecutable");function ai(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}a(ai,"shellEnvironmentValue");function di(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:u.join(n,"Programs"),n,process.env.APPDATA,u.join(e,"AppData","Local","Programs"),u.join(e,"AppData","Local"),u.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[u.resolve(t)]))].filter(t=>L(e,t)).sort((t,o)=>o.length-t.length)}a(di,"workspaceShellUserDataBoundaries");function li(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!ae(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&L(d,n));if(t===void 0)return[];let[o]=u.relative(t,n).split(u.sep);if(!o)return[];let i=u.join(t,o),s=[];for(let d=u.dirname(n);d.toLowerCase()!==i.toLowerCase()&&L(i,d);d=u.dirname(d))s.push(d);return s}a(li,"workspaceShellLinkedTargetAncestors");function Jn(e,n){let r=u.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),t=di(r),o=new Map,i=a(c=>{let f=u.resolve(c);if(!(f===u.parse(f).root||f.toLowerCase()===r.toLowerCase()))return f},"safe"),s=a((c,f)=>{let g=i(c);if(g===void 0)return;let y;try{y=J(g)}catch{return}if(i(y)===void 0)return;let w=f?[g,y].filter(b=>L(r,b)):[g,y];for(let b of w)o.set(process.platform==="win32"?b.toLowerCase():b,b);if(f&&w.includes(y))for(let b of li(g,y,t)){let S=i(b);S!==void 0&&L(r,S)&&o.set(S.toLowerCase(),S)}},"remember");for(let c of(ai(e,"PATH")??"").split(u.delimiter)){let f=c.trim().replace(/^"(.*)"$/,"$1");f&&u.isAbsolute(f)&&s(f,!0)}let d=Xn(n);u.isAbsolute(d)&&s(u.dirname(d),!0);let l=Vn();if(u.isAbsolute(l)){let c=i(l);c!==void 0&&o.set(process.platform==="win32"?c.toLowerCase():c,c),s(u.dirname(l),!1)}return[...o.values()].sort((c,f)=>c.toLowerCase().localeCompare(f.toLowerCase()))}a(Jn,"workspaceShellRuntimeReadScopes");function ci(e){let n=new Map;for(let r of e)try{let t=J.native(r);n.set(t.toLowerCase(),t)}catch{}return[...n.values()].sort((r,t)=>r.toLowerCase().localeCompare(t.toLowerCase()))}a(ci,"windowsNativeRuntimeReadScopes");function Ue(e,n){return u.resolve(e).toLowerCase()===u.resolve(n).toLowerCase()}a(Ue,"sameWindowsPath");function en(e,n){let r=Mr(e,"r");try{let t=Buffer.allocUnsafe(n+1),o=0;for(;o<t.length;){let i=Nt(r,t,o,t.length-o,o);if(i===0)break;o+=i}return o>n?void 0:t.toString("utf8",0,o)}finally{Rn(r)}}a(en,"readBoundedUtf8File");function ui(e,n){let r=/^(.*)[/\\]worktrees[/\\][^/\\]+$/.exec(e);if(r===null)return;let t=en(u.join(e,"commondir"),4096),o=en(u.join(e,"gitdir"),4096);if(t===void 0||o===void 0)return;let i=J(r[1]),s=J(u.resolve(e,t.trim())),d=J(u.resolve(e,o.trim()));return Ue(s,i)&&Ue(d,n)?i:void 0}a(ui,"linkedWorktreeMainGitDirectory");function fi(e){let n=en(u.join(e,"config"),65536);if(n===void 0)return;let r=!1,t;for(let o of n.split(/\r?\n/)){let i=o.trim();if(i.startsWith("[")){r=/^\[\s*core\s*\]$/i.test(i);continue}if(!r)continue;let s=/^worktree\s*=\s*(.+?)\s*$/i.exec(i);if(s===null)continue;if(t!==void 0)return;let d=s[1];if(d.includes("\0")||d.startsWith('"')||d.endsWith('"'))return;t=d}return t===void 0?void 0:J(u.resolve(e,t))}a(fi,"submoduleGitWorktree");function wi(e,n){if(!/[/\\]\.git[/\\]modules[/\\]/i.test(e))return!1;let r=fi(e);return r!==void 0&&Ue(r,n)}a(wi,"isStructurallyBoundSubmoduleGitDirectory");function pi(e){if(process.platform!=="win32")return{};let n=u.join(e,".git");try{if(!ae(n).isFile())return{};let r=en(n,4096);if(r===void 0)return{};let t=/^gitdir:\s*(.+?)\s*$/m.exec(r);if(t===null)return{};let o=J(u.resolve(e,t[1])),i=ui(o,n),s=wi(o,e);if(i===void 0&&!s)return{};let d=i??o;return Ge(d).isDirectory()?Ge(u.join(d,"HEAD")).isFile()?{mainGitDirectory:d,gitfile:n}:{}:{}}catch(r){let t=r.code;if(t==="ENOENT"||t==="ENOTDIR")return{};throw r}}a(pi,"windowsLinkedWorktreeGitAccess");function gi(e,n,r,t,o=Jn(process.env,Xn()),i){let s=process.platform==="win32"?Ke(ge()):u.resolve(ge()),d=u.join(s,"sandbox-runtime"),l=u.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),c=u.join(s,"auth.json"),f=[c,`${c}.staging`],g=process.platform==="win32"?[]:f,y=process.platform==="win32"?si(s,r):{read:[],write:[]},w=ri([e,...oi(n),...y.write,...t?.write??[]],s),b=u.join(s,"projects"),S=Re(b)&&w.some(p=>L(p,b)||L(b,p))?Ur(b,{withFileTypes:!0}).flatMap(p=>{let m=u.join(b,p.name,"memory");return(p.isDirectory()||p.isSymbolicLink())&&Re(m)?[m]:[]}):[],x=[d,...f,...S,...Jr.map(p=>u.join(s,p))];if(process.platform==="win32")for(let p of x)p!==c&&!Re(p)&&w.some(m=>L(m,p))&&jr(p,{recursive:!0});let W=pi(e),O=[...process.platform==="win32"?[...it(l),s]:[],...o,...y.read,...t?.read??[],...W.mainGitDirectory!==void 0?[W.mainGitDirectory]:[]],E=process.platform==="win32"?Se(ye(O,l,te(l))):[...new Set(O)];return process.platform!=="win32"&&gn(E),{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:g,allowRead:E,allowWrite:process.platform==="win32"?ye(w,l,te(l)):w,denyWrite:[...x,...pn(),...Zo(i),...Yo(e),...W.gitfile!==void 0?[W.gitfile]:[]]}}}a(gi,"workspaceShellSandboxConfig");function yi(e){let n=e.filesystem.allowWrite.map(Ke);return{...e,filesystem:{...e.filesystem,allowWrite:n,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.map(Ke).filter(r=>n.some(t=>L(t,r)||L(r,t)))}}}a(yi,"boundedWindowsWorkspaceDenies");function mi(e,n,r,t,o,i){let s=gi(e,n,r,t,o,i);return process.platform==="win32"?yi(s):s}a(mi,"workspaceShellCommandSandboxConfig");function K(e,n){return[...new Set((e??[]).map(r=>u.resolve(n,r)))]}a(K,"normalizedSandboxPaths");function bi(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}a(bi,"sdkSandboxEndpoints");async function Si(e,n,r,t,o){let i=Date.now()+(e.timeoutMs??sn),s=e.command===process.execPath?_e({args:e.args??[],env:r,isElectron:process.versions.electron!==void 0}):{args:[...e.args??[]],env:r},d={network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:K(e.filesystem.allowRead,n),allowWrite:K(e.filesystem.allowWrite,n),denyRead:K(e.filesystem.denyRead,n),denyWrite:K(e.filesystem.denyWrite,n)}},l=await Ni({shellPolicy:d,executable:e.command,args:s.args,cwd:n,env:s.env,endpoints:o,allowAllNetwork:t.mode==="allow",signal:e.signal,deadlineAt:i});if(l===void 0)throw new Error("Windows native sandbox invocation was not prepared.");let c="not_started",f,g,y;try{if(l.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let w=l.processControl;await w.validateStart?.(),y=nn(l.executable,[...l.args],{cwd:n,env:l.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0,windowsVerbatimArguments:l.windowsVerbatimArguments===!0}),c="started_or_unknown",Te(y);let b=Kn(y,e.signal,Math.max(1,i-Date.now()),e.maxOutputBytes??on,!0,w);b.catch(()=>{});try{await w.closeInput(y,e.signal,i)}catch(W){let O=W;try{await w.terminate(y)}catch(E){O=new AggregateError([W,E],"Native sandbox bootstrap and termination both failed.")}throw await b.catch(()=>{}),O}let S=await w.attestStart?.(y,e.signal,i);if(S?.state==="pre_start_unavailable")throw c="not_started",new Error(S.diagnostic);let x=await b;if(x.exitCode!==0){let W=x.stderr.split(/\r?\n/u).filter(O=>O.startsWith("kodax-windows-sandbox protocol ")).slice(-4).join(`
|
|
126
|
-
`);g=new Error(W.length>0?W:`Windows native sandbox host exited with code ${x.exitCode}.`)}return x}catch(w){if(f=w,G({source:"sandbox:windows-v2",level:"warn",message:"Windows native sandbox command failed.",detail:{phase:c==="not_started"?"target-start":"target-execution",protocol:M,error:w}}),y!==void 0&&l.processControl!==void 0)try{await l.processControl.terminate(y)}catch(b){f=new AggregateError([w,b],"Windows native sandbox execution and termination both failed.")}throw f}finally{try{await l.cleanup({execution:c})}catch(w){throw f!==void 0?new AggregateError([f,w],"Windows native sandbox execution and cleanup both failed."):g!==void 0?new AggregateError([g,w],"Windows native sandbox host and cleanup both failed."):w}}}a(Si,"runWindowsV2Sandboxed");async function hi(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=u.resolve(e.cwd),r=process.platform==="win32"?[]:
|
|
127
|
-
`},f=await qo(c,e.signal,e.timeoutMs??sn,e.maxOutputBytes??on),g,y=f.controlFailure;if(y===void 0)try{g=_o(f.controlOutput,f.controlInvocationId,f.expectedBackend)}catch(w){y=w}if(g?.state==="not_started"){let w=[g.diagnostic,f.stderr.trim()].filter(b=>b!==void 0&&b!=="").join(" ").slice(0,4096)||"The sandbox backend exited before target-start attestation.";return{status:"unavailable",sandboxed:!1,reason:"backend_launch_failed",diagnostic:w,doctor:{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,w]}}}return g?.state!=="applied"?{status:"execution_uncertain",sandboxed:!1,reason:"attestation_failed",diagnostic:[y===void 0?void 0:H(y),f.stderr.trim()].filter(b=>b!==void 0&&b!=="").join(" ").slice(0,4096)||"Sandbox target execution could not be attested; do not retry blindly.",doctor:d,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}:{status:"completed",sandboxed:!0,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}}a(hi,"runKodaXSandboxed");async function vi(e={}){let n=await z({refresh:!0});if(!n.ready&&process.platform!=="win32")return n;let r=process.cwd(),t=Xn(),o=process.platform==="win32"?["/d","/s","/c","whoami"]:["-c","id -u"],i=mi(r,void 0,void 0,void 0,Jn(process.env,t));try{let s=await hi({command:t,args:o,cwd:r,filesystem:{allowRead:i.filesystem.allowRead??[],allowWrite:[],denyRead:i.filesystem.denyRead,denyWrite:[]},network:{mode:"deny"},timeoutMs:Qe,maxOutputBytes:65536});if(s.status==="completed"&&s.exitCode===0)return z({refresh:!0});let d=s.status==="completed"?n:s.doctor,l=s.status==="completed"?`Sandbox identity probe exited with code ${String(s.exitCode)}.`:s.diagnostic??(s.doctor.diagnostics.join(" ")||"Sandbox target start was not proven.");return{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,`Sandbox launch probe failed: ${l}`]}}catch(s){return{...n,ready:!1,setupRequired:!0,diagnostics:[...n.diagnostics,`Sandbox launch probe failed: ${H(s)}`]}}}a(vi,"doctorSandboxExecution");function Hn(){let e=new Error("Sandbox runner preparation timed out.");return e.name="TimeoutError",e}a(Hn,"sandboxRunnerPreparationTimeoutError");function ke(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Hn()}a(ke,"throwIfSandboxRunnerPreparationStopped");function Ce(e,n,r){return ke(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let i=!1,s,d=a(c=>{i||(i=!0,s&&clearTimeout(s),n?.removeEventListener("abort",l),c())},"finish"),l=a(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(s=setTimeout(()=>{d(()=>o(Hn()))},Math.max(0,r-Date.now())),s.unref()),e.then(c=>d(()=>t(c)),c=>d(()=>o(c)))})}a(Ce,"waitForSandboxRunnerPreparation");async function xi(){return or()}a(xi,"sandboxControlDirectory");function Ei(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-windows-network-broker",e];if(import.meta.url.endsWith(".ts"))return["--import",Kr(Gn.resolve("tsx")).href,Rr(new URL("./sandbox-network-broker-entry.ts",import.meta.url)),e];let n=u.dirname(Rr(import.meta.url)),r=u.basename(n)==="chunks"?u.dirname(n):n;return[u.join(r,"sandbox-network-broker.js"),e]}a(Ei,"windowsNetworkBrokerEntryArgs");async function ki(e,n,r){let t=e.stdio[3];if(!t)throw new Error("Windows network broker control pipe was not created.");return new Promise((o,i)=>{let s=!1,d=Buffer.alloc(0),l,c=a(b=>{s||(s=!0,l&&clearTimeout(l),n?.removeEventListener("abort",f),t.removeListener("data",w),e.removeListener("error",g),e.removeListener("exit",y),b())},"finish"),f=a(()=>c(()=>i(n?.reason??new DOMException("Operation aborted","AbortError"))),"onAbort"),g=a(b=>c(()=>i(b)),"onError"),y=a(b=>c(()=>i(new Error(`Windows network broker exited ${String(b)} before readiness.`))),"onExit"),w=a(b=>{if(d=Buffer.concat([d,b]),d.length>1024*1024){c(()=>i(new Error("Windows network broker readiness exceeded 1 MiB.")));return}let S=d.indexOf(10);if(!(S<0))try{let x=JSON.parse(d.subarray(0,S).toString("utf8"));if(x===null||typeof x!="object"||x.version!==1)throw new Error("Windows network broker returned an incompatible response.");c(()=>o(x))}catch(x){c(()=>i(x))}},"onData");t.on("data",w),e.once("error",g),e.once("exit",y),n?.addEventListener("abort",f,{once:!0}),r!==void 0&&(l=setTimeout(()=>c(()=>i(Hn())),Math.max(0,r-Date.now())),l.unref())})}a(ki,"readWindowsNetworkBrokerReady");async function Ri(e,n,r){let t=a(s=>{if(s.error!==void 0||s.code!==0||s.signal!==null){let d=r().trim();throw new Error(`Windows network broker exited without a clean cleanup result (code ${String(s.code)}, signal ${String(s.signal)})`+(d===""?".":`: ${d}`),s.error===void 0?void 0:{cause:s.error})}},"assertCleanExit");if(e.exitCode!==null||e.signalCode!==null){t(await n);return}await new Promise(s=>{let d=e.stdin;if(d===null||d.destroyed){s();return}let l=a(()=>s(),"finish");d.once("error",l),d.end(l)});let o=await Promise.race([n.then(s=>({graceful:!0,outcome:s})),new Promise(s=>{setTimeout(()=>s(!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 n,new Error("Windows network broker did not exit within its graceful cleanup budget."))}a(Ri,"stopWindowsNetworkBroker");function st(e){return{...e,srtWinPath:u.resolve(e.srtWinPath),srtWinSha256:e.srtWinSha256.toLowerCase(),controllerExecutable:u.resolve(e.controllerExecutable),controllerSha256:e.controllerSha256.toLowerCase(),endpoints:[...e.endpoints].map(({host:n,port:r})=>({host:n.toLowerCase(),port:r})).sort((n,r)=>n.host.localeCompare(r.host)||n.port-r.port).filter((n,r,t)=>r===0||n.host!==t[r-1].host||n.port!==t[r-1].port)}}a(st,"normalizedWindowsNetworkBrokerRequest");function Dn(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(n=>Dn(n)).join(",")}]`;if(typeof e=="object")return`{${Object.entries(e).filter(([,r])=>r!==void 0).sort(([r],[t])=>r.localeCompare(t)).map(([r,t])=>`${JSON.stringify(r)}:${Dn(t)}`).join(",")}}`;throw new Error("Windows network broker policy contains an unsupported value.")}a(Dn,"canonicalWindowsNetworkBrokerValue");function Ai(e){let n=st(e),r=Dn({version:n.version,setupGenerationNonce:n.setupGenerationNonce,config:n.config,srtWinPath:u.resolve(n.srtWinPath).toLowerCase(),srtWinSha256:n.srtWinSha256,controllerExecutable:n.controllerExecutable.toLowerCase(),controllerSha256:n.controllerSha256,controllerProtocol:n.controllerProtocol,expectedSandboxUserSid:n.expectedSandboxUserSid.toUpperCase(),expectedSandboxGroupSid:n.expectedSandboxGroupSid.toUpperCase(),endpoints:n.endpoints,allowAllNetwork:n.allowAllNetwork});return rn("sha256").update(r).digest("hex")}a(Ai,"windowsNetworkBrokerKey");function Wi(e,n,r){let t=a(()=>{},"markStarted"),o={key:e,requestFile:u.join(r,`windows-network-${process.pid}-${X()}.json`),started:new Promise(i=>{t=i}),markStarted:a(()=>t(),"markStarted"),references:0,failed:!1,lastUsed:0,stopRequested:!1,stderrTail:Buffer.alloc(0)};return Nn.add(o),o.ready=(async()=>{try{if(await Bn(o.requestFile,JSON.stringify(n),{flag:"wx",mode:384}),o.stopRequested)throw new Error("Windows network broker start was cancelled.");let i=_e({args:Ei(o.requestFile),env:Y(),isElectron:process.versions.electron!==void 0}),s=nn(process.execPath,i.args,{cwd:r,env:i.env,shell:!1,stdio:["pipe","ignore","pipe","pipe"],windowsHide:!0});o.child=s,Te(s),o.markStarted(),s.stderr?.on("data",l=>{o.stderrTail=Buffer.concat([o.stderrTail,l]).subarray(-16*1024)}),o.exit=new Promise(l=>{let c;s.once("error",f=>{c=f}),s.once("close",(f,g)=>l({code:f,signal:g,...c===void 0?{}:{error:c}}))}),o.references===0&&je(o,!1),s.on("error",l=>{G({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker process failed.",detail:l})}),s.once("close",()=>{Nn.delete(o),o.stopping===void 0&&fe.get(e)===o&&fe.delete(e)}),s.once("exit",(l,c)=>{!o.stopRequested&&(l!==0||c!==null)&&(Cn(o),G({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker exited unexpectedly.",detail:o.stderrTail.toString("utf8").trim()||`code ${String(l)}, signal ${String(c)}`}))});let d;try{d=await ki(s,void 0,Date.now()+Pn)}catch(l){let c=o.stderrTail.toString("utf8").trim();throw new Error(c===""?"Windows network broker failed before readiness.":`Windows network broker failed before readiness: ${c}`,{cause:l})}if(!d.ok)throw new Error(d.error);return d}finally{o.markStarted()}})().catch(i=>{throw Cn(o),i}),o.ready.catch(()=>{}),o}a(Wi,"createWindowsNetworkBrokerState");async function Ln(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,je(e,!0);let r=(await Promise.allSettled([...e.child===void 0||e.exit===void 0?[]:[Ri(e.child,e.exit,()=>e.stderrTail.toString("utf8"))],le(e.requestFile,{force:!0})])).flatMap(t=>t.status==="rejected"?[t.reason]:[]);if(r.length>0)throw new AggregateError(r,"Shared Windows network broker cleanup failed.")})().finally(()=>{e.child===void 0&&Nn.delete(e),je(e,!1),fe.get(e.key)===e&&fe.delete(e.key)})),e.stopping}a(Ln,"stopSharedWindowsNetworkBroker");async function Ci(e,n=!1){if(n&&Cn(e),e.references=Math.max(0,e.references-1),e.references===0){if(je(e,!1),Xr(e),e.failed){await Ln(e);return}e.idleTimer=setTimeout(()=>{e.idleTimer=void 0,!(e.references!==0||e.stopping!==void 0)&&Ln(e).catch(r=>{G({source:"sandbox:windows-v2",level:"warn",message:"Idle Windows network broker cleanup failed.",detail:r})})},Mt),e.idleTimer.unref()}}a(Ci,"releaseWindowsNetworkBrokerState");async function Pi(e,n,r,t){let o=st(e),i=Ai(o);for(;;){let s=fe.get(i);if(s?.stopping!==void 0){await Ce(s.stopping,r,t);continue}if(s?.failed){if(s.references!==0)throw new Error("Windows network broker failed while prior command leases are still settling; no command was started.");await Ce(Ln(s),r,t);continue}s===void 0&&(s=Wi(i,o,n),fe.set(i,s)),Xr(s),s.idleTimer!==void 0&&(clearTimeout(s.idleTimer),s.idleTimer=void 0),s.references+=1,s.references===1&&je(s,!0);let d=!1,l=a(async c=>{d||(d=!0,await Ci(s,c?.retire===!0))},"release");try{let c=s.ready;if(c===void 0)throw new Error("Windows network broker did not start.");return{ready:await Ce(c,r,t),release:l}}catch(c){try{await l()}catch(f){throw new AggregateError([c,f],"Windows network broker acquisition and cleanup both failed.")}throw c}}}a(Pi,"acquireWindowsNetworkBroker");async function Ni(e){let n=e.deadlineAt??Date.now()+Qe,r=await Ce(Fe(e.shellPolicy.filesystem.allowWrite),e.signal,n);ke(e.signal,n);let t=Nr(r);ke(e.signal,n);let o=tt(e.shellPolicy);fn({allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite}),wn(o.filesystem.allowWrite);let i=await Ce(dn(t.sandboxGroupSid,o.filesystem.allowWrite),e.signal,n);ke(e.signal,n);let s=await Ce(yo(),e.signal,n);if(ke(e.signal,n),s.toLowerCase()!==Ie().toLowerCase())throw new Error("Windows native shell control state resolved to an unexpected path.");let d={version:1,setupGenerationNonce:t.generationNonce,config:vr(o),cwd:e.cwd,srtWinPath:r.path,srtWinSha256:r.sha256,controllerExecutable:i.path,controllerSha256:i.sha256,controllerProtocol:M,expectedSandboxUserSid:t.sandboxUserSid,expectedSandboxGroupSid:t.sandboxGroupSid,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork},l,c,f;try{l=await Pi(d,s,e.signal,n);let g=l.ready;if(g.sandboxUserSid!==t.sandboxUserSid||g.sandboxGroupSid!==t.sandboxGroupSid)throw ue("The broker observed a sandbox account identity from another v2 generation");let y=xr({setupGenerationNonce:t.generationNonce,sandboxUserSid:g.sandboxUserSid,sandboxGroupSid:g.sandboxGroupSid,asrtSha256:r.sha256,shellSha256:i.sha256});c=u.join(s,`windows-shell-${process.pid}-${X()}.json`);let w=`${process.pid}-${X()}.json`;f=u.join(s,`windows-terminal-${w}`);let b=u.join(s,`windows-started-${w}`),S=u.join(s,`windows-resume-${w}`),x=X(),W=e.deadlineAt??Date.now()+Qe,O=Sr(g.asrtChildEnvironment,e.env,gr(e.cwd,o.filesystem.allowWrite,o.filesystem.allowRead)),E=ti(o.filesystem.allowRead??[],t.setupReadRoots),p=kr({aclExclusions:te(u.resolve(process.env.USERPROFILE??q.homedir())),generation:y,filesystemCapabilityNonce:t.filesystemCapabilityNonce,sandboxUserSid:g.sandboxUserSid,sandboxGroupSid:g.sandboxGroupSid,asrtInvocation:{executable:g.asrtExecutable,prefixArgs:g.asrtPrefixArgs,targetArgv:[],childEnvironment:{}},targetArgv:[e.executable,...e.args],cwd:e.cwd,preinstalledReadRoots:E,allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite,controllerPipe:g.controllerPipe,terminalRecordPath:f,terminalNonce:x,operationDeadlineUnixMs:W,setupMarkerPath:se(),setupMarkerSha256:rn("sha256").update(Ne(se())).digest("hex")});await Bn(c,JSON.stringify(p),{flag:"wx",mode:384}),G({source:"sandbox:windows-v2",level:"debug",message:"Windows native sandbox request prepared.",detail:{protocol:M,setupGeneration:t.generationNonce,brokerGeneration:y,runnerSha256:r.sha256,controllerSha256:i.sha256,preinstalledReadRootCount:E.length}}),ke(e.signal,W);let m,h=l,R=c,C=f,k=Er(O),N=Vo(k,S,b,C,x,()=>{let F=Nr(r);if(JSON.stringify(F)!==JSON.stringify(t))throw ue("The Windows sandbox account generation changed before target start")});return{executable:i.path,args:["__host",R],env:Y(),stdinPrefix:k,processTreeContainment:"native-job",processControl:N,cleanup(F){return m??=(async()=>{let B;if(F?.execution==="started_or_unknown")try{await N.waitForTerminalObservation()}catch(P){B=P}let T=(await Promise.allSettled([h.release({retire:B!==void 0||N.shouldRetireBrokerAfterStartFailure()}),le(R,{force:!0}),le(S,{force:!0}),le(b,{force:!0}),le(C,{force:!0})])).flatMap(P=>P.status==="rejected"?[P.reason]:[]);if(B!==void 0&&T.unshift(B),T.length>0)throw new AggregateError(T,"Windows native shell cleanup failed.");let I=N.getPreStartUnavailableDiagnostic();return I!==void 0?{version:1,state:"pre_start_unavailable",diagnostic:I}:{version:1,state:"applied",backend:"windows-restricted-user",policyId:"kodax-workspace-shell-v1"}})(),m}}}catch(g){let y=await Promise.allSettled([...l===void 0?[]:[l.release()],...c===void 0?[]:[le(c,{force:!0})],...f===void 0?[]:[le(f,{force:!0})]]),w=[g,...y.flatMap(b=>b.status==="rejected"?[b.reason]:[])];throw w.length===1?g:new AggregateError(w,"Windows native shell preparation and cleanup both failed.")}}a(Ni,"prepareWindowsV2Invocation");export{Ae as a,jt as b,ps as c,Ee as d,gs as e,hi as f,vi as g};
|
|
125
|
+
`,d)})}a(Jo,"writeSandboxGate");function Ho(e){let n=e.stdin;return n===null||n.destroyed||n.writableEnded?Promise.resolve():new Promise((r,t)=>{let o=!1,i=a(()=>{n.removeListener("error",d)},"cleanup"),s=a(l=>{o||(o=!0,i(),l?t(l):r())},"settle"),d=a(l=>s(l),"onError");n.once("error",d),n.end(s)})}a(Ho,"closeSandboxGate");async function qo(e,n,r=sn,t=on){Lt();let o=No({...e,bootstrapCommand:e.bootstrapCommand??Vn()}),i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker"]:["--input-type=module","-e",Qt(),Ut],s=_e({args:i,env:Y(),isElectron:process.versions.electron!==void 0}),d=nn(process.execPath,s.args,{cwd:e.cwd,env:s.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0});Te(d);let l=Kn(d,n,r,t),c=To(d).then(y=>({output:y,failure:void 0}),y=>({output:new Uint8Array,failure:H(y)}));try{await Ko(d,o.payload,n,Date.now()+r)}catch(y){throw d.kill("SIGTERM"),await Promise.allSettled([l,c]),y}let[f,g]=await Promise.all([l,c]);return{...f,...g.failure===void 0?{}:{controlFailure:g.failure},controlInvocationId:o.invocationId,controlOutput:g.output,expectedBackend:o.request.observationBackend??"unsupported"}}a(qo,"runBrokerResult");function tt(e){if(process.platform!=="win32")return e;let n=Mn();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:e.filesystem.allowRead,denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}a(tt,"withPreparedWindowsRunner");function zo(){let e=[q.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&u.isAbsolute(n)).map(n=>u.resolve(n)))]}a(zo,"canonicalTempDirectories");function Yo(e){return[u.join(e,".kodax","runtime"),u.join(e,".git","config"),u.join(e,".git","hooks")].filter(r=>{try{return Ge(r),!0}catch{return!1}})}a(Yo,"existingWorkspaceDenyWrites");function Zo(e){if(e===void 0)return[];if(Ge(e,{throwIfNoEntry:!1})===void 0)throw new Error(`Trusted project Exec Policy snapshot disappeared before sandbox admission: ${e}`);return[e]}a(Zo,"trustedProjectExecPolicyDenyWrite");function Se(e){let n=[...new Set(e.map(t=>u.resolve(t)))].filter(t=>Ge(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>L(o,t))||r.push(t);return r}a(Se,"existingMinimalWindowsAclGuardRoots");function Qo(){let e=u.resolve(process.env.USERPROFILE??q.homedir()),n=u.resolve(ge()),r=Ft.map(t=>u.join(e,t)).filter(t=>!Ue(t,n));return Se([...r,...Vt.map(t=>u.join(n,t)),an()])}a(Qo,"windowsLegacyPersistentAclGuardRoots");function ei(e,n,r){if(r===void 0)throw new Error("Windows sandbox group SID is unavailable for persistent denyRead.");let t=Se(e);if(t.length===0)return;let o=oe({sandboxReadSid:r,untrustedWriteRoots:[]}).path,i=ie(o,["__persistent-deny-read","remove",n,r],{input:JSON.stringify(t),encoding:"utf8",timeout:15*6e4,windowsHide:!0});if(i.error||i.status!==0){let s=(i.error?.message||i.stderr||i.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${s}`)}try{let s=JSON.parse(i.stdout.trim());if(!Array.isArray(s)||s.length!==0)throw new Error("legacy ACL removal returned a non-empty result")}catch(s){throw new Error(`Windows sandbox ACL guard returned invalid output: ${H(s)}`)}}a(ei,"removeWindowsLegacyAclGuards");function ot(){return u.join(u.resolve(process.env.ProgramData??u.join(q.homedir(),"AppData","Local")),"KodaX","sandbox-runtime","read-policy-v2.json")}a(ot,"windowsLegacyAclReconciliationMarkerFile");function ni(e){let n=ot(),r;try{r=ae(n)}catch(i){if(U(i,"ENOENT"))return!1;throw i}if(!r.isFile()||r.isSymbolicLink()||r.nlink!==1||r.size>Un)return!1;let t;try{t=JSON.parse(Ne(n,"utf8"))}catch(i){if(i instanceof SyntaxError)return!1;throw i}if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=t;return Object.keys(o).sort().join(",")==="sandboxGroupSid,setupVersion,version"&&o.version===2&&o.setupVersion===Fn&&o.sandboxGroupSid===e}a(ni,"windowsLegacyAclMigrationIsCurrent");function $r(e,n){let r=Qo();ei(r,e,n),Fr(ot(),JSON.stringify({version:2,setupVersion:Fn,sandboxGroupSid:n}),{encoding:"utf8",mode:384})}a($r,"migrateWindowsLegacyAclGuardsForSetup");function it(e){return ye([e],e,te(e))}a(it,"windowsSandboxProfileReadRoots");function Gr(){let e=u.resolve(process.env.USERPROFILE??q.homedir());return Se(ye([...it(e),...ci(Jn(process.env))],e,te(e)))}a(Gr,"windowsSandboxSetupReadRoots");function ri(e,n){let r=[];for(let t of e)try{r.push(J.native(t))}catch{continue}return process.platform==="win32"?Se(r):[...new Set(r)]}a(ri,"workspaceShellWriteRoots");function ti(e,n){return e.filter(r=>n.some(t=>Ue(t,r)))}a(ti,"windowsSandboxPreinstalledReadRoots");function oi(e){return process.platform==="win32"?e===void 0?[]:[e]:zo()}a(oi,"workspaceShellTempWriteRoots");function ii(e,n,r){try{let t=J.native(n),o=u.resolve(n),i=u.resolve(e);if(!L(o,i)||i===o)return;for(;i!==o;)try{let s=J.native(i);if(s===t||!L(t,s))return;let d=u.relative(t,s).split(u.sep)[0]?.toLowerCase();return/^\.?auth\.json(?:[.-].*)?$/.test(d??"")||d==="sandbox-runtime"||r&&Jr.some(l=>l===d)?void 0:s}catch(s){if(!r||s.code!=="ENOENT")return;try{ae(i);return}catch(l){if(l.code!=="ENOENT")return}let d=u.dirname(i);if(d===i)return;i=d}return}catch{return}}a(ii,"windowsAgentHomeAccessRoot");function si(e,n){if(!n)return{read:[],write:[]};let r=a((t,o)=>[...new Set(t.flatMap(i=>{let s=ii(i,e,o);return s?[s]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}a(si,"windowsAgentHomeAccessRoots");function Xn(e){return e??(process.platform==="win32"?process.env.COMSPEC??u.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}a(Xn,"workspaceShellExecutable");function ai(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}a(ai,"shellEnvironmentValue");function di(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:u.join(n,"Programs"),n,process.env.APPDATA,u.join(e,"AppData","Local","Programs"),u.join(e,"AppData","Local"),u.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[u.resolve(t)]))].filter(t=>L(e,t)).sort((t,o)=>o.length-t.length)}a(di,"workspaceShellUserDataBoundaries");function li(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!ae(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&L(d,n));if(t===void 0)return[];let[o]=u.relative(t,n).split(u.sep);if(!o)return[];let i=u.join(t,o),s=[];for(let d=u.dirname(n);d.toLowerCase()!==i.toLowerCase()&&L(i,d);d=u.dirname(d))s.push(d);return s}a(li,"workspaceShellLinkedTargetAncestors");function Jn(e,n){let r=u.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),t=di(r),o=new Map,i=a(c=>{let f=u.resolve(c);if(!(f===u.parse(f).root||f.toLowerCase()===r.toLowerCase()))return f},"safe"),s=a((c,f)=>{let g=i(c);if(g===void 0)return;let y;try{y=J(g)}catch{return}if(i(y)===void 0)return;let w=f?[g,y].filter(b=>L(r,b)):[g,y];for(let b of w)o.set(process.platform==="win32"?b.toLowerCase():b,b);if(f&&w.includes(y))for(let b of li(g,y,t)){let S=i(b);S!==void 0&&L(r,S)&&o.set(S.toLowerCase(),S)}},"remember");for(let c of(ai(e,"PATH")??"").split(u.delimiter)){let f=c.trim().replace(/^"(.*)"$/,"$1");f&&u.isAbsolute(f)&&s(f,!0)}let d=Xn(n);u.isAbsolute(d)&&s(u.dirname(d),!0);let l=Vn();if(u.isAbsolute(l)){let c=i(l);c!==void 0&&o.set(process.platform==="win32"?c.toLowerCase():c,c),s(u.dirname(l),!1)}return[...o.values()].sort((c,f)=>c.toLowerCase().localeCompare(f.toLowerCase()))}a(Jn,"workspaceShellRuntimeReadScopes");function ci(e){let n=new Map;for(let r of e)try{let t=J.native(r);n.set(t.toLowerCase(),t)}catch{}return[...n.values()].sort((r,t)=>r.toLowerCase().localeCompare(t.toLowerCase()))}a(ci,"windowsNativeRuntimeReadScopes");function Ue(e,n){return u.resolve(e).toLowerCase()===u.resolve(n).toLowerCase()}a(Ue,"sameWindowsPath");function en(e,n){let r=Mr(e,"r");try{let t=Buffer.allocUnsafe(n+1),o=0;for(;o<t.length;){let i=Nt(r,t,o,t.length-o,o);if(i===0)break;o+=i}return o>n?void 0:t.toString("utf8",0,o)}finally{An(r)}}a(en,"readBoundedUtf8File");function ui(e,n){let r=/^(.*)[/\\]worktrees[/\\][^/\\]+$/.exec(e);if(r===null)return;let t=en(u.join(e,"commondir"),4096),o=en(u.join(e,"gitdir"),4096);if(t===void 0||o===void 0)return;let i=J(r[1]),s=J(u.resolve(e,t.trim())),d=J(u.resolve(e,o.trim()));return Ue(s,i)&&Ue(d,n)?i:void 0}a(ui,"linkedWorktreeMainGitDirectory");function fi(e){let n=en(u.join(e,"config"),65536);if(n===void 0)return;let r=!1,t;for(let o of n.split(/\r?\n/)){let i=o.trim();if(i.startsWith("[")){r=/^\[\s*core\s*\]$/i.test(i);continue}if(!r)continue;let s=/^worktree\s*=\s*(.+?)\s*$/i.exec(i);if(s===null)continue;if(t!==void 0)return;let d=s[1];if(d.includes("\0")||d.startsWith('"')||d.endsWith('"'))return;t=d}return t===void 0?void 0:J(u.resolve(e,t))}a(fi,"submoduleGitWorktree");function wi(e,n){if(!/[/\\]\.git[/\\]modules[/\\]/i.test(e))return!1;let r=fi(e);return r!==void 0&&Ue(r,n)}a(wi,"isStructurallyBoundSubmoduleGitDirectory");function pi(e){if(process.platform!=="win32")return{};let n=u.join(e,".git");try{if(!ae(n).isFile())return{};let r=en(n,4096);if(r===void 0)return{};let t=/^gitdir:\s*(.+?)\s*$/m.exec(r);if(t===null)return{};let o=J(u.resolve(e,t[1])),i=ui(o,n),s=wi(o,e);if(i===void 0&&!s)return{};let d=i??o;return Ge(d).isDirectory()?Ge(u.join(d,"HEAD")).isFile()?{mainGitDirectory:d,gitfile:n}:{}:{}}catch(r){let t=r.code;if(t==="ENOENT"||t==="ENOTDIR")return{};throw r}}a(pi,"windowsLinkedWorktreeGitAccess");function gi(e,n,r,t,o=Jn(process.env,Xn()),i){let s=process.platform==="win32"?Ke(ge()):u.resolve(ge()),d=u.join(s,"sandbox-runtime"),l=u.resolve(process.platform==="win32"?process.env.USERPROFILE??q.homedir():q.homedir()),c=u.join(s,"auth.json"),f=[c,`${c}.staging`],g=process.platform==="win32"?[]:f,y=process.platform==="win32"?si(s,r):{read:[],write:[]},w=ri([e,...oi(n),...y.write,...t?.write??[]],s),b=u.join(s,"projects"),S=Re(b)&&w.some(p=>L(p,b)||L(b,p))?Ur(b,{withFileTypes:!0}).flatMap(p=>{let m=u.join(b,p.name,"memory");return(p.isDirectory()||p.isSymbolicLink())&&Re(m)?[m]:[]}):[],x=[d,...f,...S,...Jr.map(p=>u.join(s,p))];if(process.platform==="win32")for(let p of x)p!==c&&!Re(p)&&w.some(m=>L(m,p))&&jr(p,{recursive:!0});let W=pi(e),O=[...process.platform==="win32"?[...it(l),s]:[],...o,...y.read,...t?.read??[],...W.mainGitDirectory!==void 0?[W.mainGitDirectory]:[]],E=process.platform==="win32"?Se(ye(O,l,te(l))):[...new Set(O)];return process.platform!=="win32"&&yn(E),{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:g,allowRead:E,allowWrite:process.platform==="win32"?ye(w,l,te(l)):w,denyWrite:[...x,...gn(),...Zo(i),...Yo(e),...W.gitfile!==void 0?[W.gitfile]:[]]}}}a(gi,"workspaceShellSandboxConfig");function yi(e){let n=e.filesystem.allowWrite.map(Ke);return{...e,filesystem:{...e.filesystem,allowWrite:n,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.map(Ke).filter(r=>n.some(t=>L(t,r)||L(r,t)))}}}a(yi,"boundedWindowsWorkspaceDenies");function mi(e,n,r,t,o,i){let s=gi(e,n,r,t,o,i);return process.platform==="win32"?yi(s):s}a(mi,"workspaceShellCommandSandboxConfig");function K(e,n){return[...new Set((e??[]).map(r=>u.resolve(n,r)))]}a(K,"normalizedSandboxPaths");function bi(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}a(bi,"sdkSandboxEndpoints");async function Si(e,n,r,t,o){let i=Date.now()+(e.timeoutMs??sn),s=e.command===process.execPath?_e({args:e.args??[],env:r,isElectron:process.versions.electron!==void 0}):{args:[...e.args??[]],env:r},d={network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:K(e.filesystem.allowRead,n),allowWrite:K(e.filesystem.allowWrite,n),denyRead:K(e.filesystem.denyRead,n),denyWrite:K(e.filesystem.denyWrite,n)}},l=await Ni({shellPolicy:d,executable:e.command,args:s.args,cwd:n,env:s.env,endpoints:o,allowAllNetwork:t.mode==="allow",signal:e.signal,deadlineAt:i});if(l===void 0)throw new Error("Windows native sandbox invocation was not prepared.");let c="not_started",f,g,y;try{if(l.processControl===void 0)throw new Error("Windows native sandbox invocation has no persistent process control.");let w=l.processControl;await w.validateStart?.(),y=nn(l.executable,[...l.args],{cwd:n,env:l.env,shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0,windowsVerbatimArguments:l.windowsVerbatimArguments===!0}),c="started_or_unknown",Te(y);let b=Kn(y,e.signal,Math.max(1,i-Date.now()),e.maxOutputBytes??on,!0,w);b.catch(()=>{});try{await w.closeInput(y,e.signal,i)}catch(W){let O=W;try{await w.terminate(y)}catch(E){O=new AggregateError([W,E],"Native sandbox bootstrap and termination both failed.")}throw await b.catch(()=>{}),O}let S=await w.attestStart?.(y,e.signal,i);if(S?.state==="pre_start_unavailable")throw c="not_started",new Error(S.diagnostic);let x=await b;if(x.exitCode!==0){let W=x.stderr.split(/\r?\n/u).filter(O=>O.startsWith("kodax-windows-sandbox protocol ")).slice(-4).join(`
|
|
126
|
+
`);g=new Error(W.length>0?W:`Windows native sandbox host exited with code ${x.exitCode}.`)}return x}catch(w){if(f=w,G({source:"sandbox:windows-v2",level:"warn",message:"Windows native sandbox command failed.",detail:{phase:c==="not_started"?"target-start":"target-execution",protocol:M,error:w}}),y!==void 0&&l.processControl!==void 0)try{await l.processControl.terminate(y)}catch(b){f=new AggregateError([w,b],"Windows native sandbox execution and termination both failed.")}throw f}finally{try{await l.cleanup({execution:c})}catch(w){throw f!==void 0?new AggregateError([f,w],"Windows native sandbox execution and cleanup both failed."):g!==void 0?new AggregateError([g,w],"Windows native sandbox host and cleanup both failed."):w}}}a(Si,"runWindowsV2Sandboxed");async function hi(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=u.resolve(e.cwd),r=process.platform==="win32"?[]:gn(),t={allowRead:K(e.filesystem.allowRead,n),allowWrite:K(e.filesystem.allowWrite,n),denyRead:K(e.filesystem.denyRead,n),denyWrite:K(e.filesystem.denyWrite,n)};if(process.platform==="win32"&&(t.denyRead?.length??0)>0){let w="Per-command Windows denyRead is unsupported by the WRITE_RESTRICTED backend.";return{status:"unavailable",sandboxed:!1,reason:"unsupported_policy",diagnostic:w,doctor:{ready:!1,platform:process.platform,version:Ae,diagnostics:[w],setupRequired:!1}}}process.platform==="win32"&&wn(t),process.platform!=="win32"&&yn(t.allowRead),tr(t.allowWrite);let o={...t,denyRead:[...t.denyRead??[],...r],denyWrite:[...t.denyWrite??[],...r]},i=e.network??{mode:"deny"},s=bi(i),d=await z();if(process.platform==="win32"&&!d.ready){let w;try{let b=await Fe(t.allowWrite,!0),S=be({srtWin:b.srtWin});S.groupSid!==void 0&&await dn(S.groupSid,t.allowWrite)}catch(b){w=b}d=await z({refresh:!0}),w!==void 0&&(d={...d,ready:!1,setupRequired:!0,diagnostics:[H(w),...d.diagnostics]})}if(!d.ready)return{status:"unavailable",sandboxed:!1,doctor:d,reason:"doctor_not_ready"};let l=Mo(e.inheritEnvironment!==!1?process.env:Y(),e.env??{});if(process.platform==="win32"){let w=await Si({...e,filesystem:o},n,l,i,s);return{status:"completed",sandboxed:!0,exitCode:w.exitCode,stdout:w.stdout,stderr:w.stderr}}let c={config:tt({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:i.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:K(o.allowRead,n),allowWrite:K(o.allowWrite,n),denyRead:K(o.denyRead,n),denyWrite:K(o.denyWrite,n)}}),command:e.command,args:e.args??[],cwd:n,env:l,endpoints:s,allowAllNetwork:i.mode==="allow",observationBackend:jt().backend,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${X()}\0
|
|
127
|
+
`},f=await qo(c,e.signal,e.timeoutMs??sn,e.maxOutputBytes??on),g,y=f.controlFailure;if(y===void 0)try{g=_o(f.controlOutput,f.controlInvocationId,f.expectedBackend)}catch(w){y=w}if(g?.state==="not_started"){let w=[g.diagnostic,f.stderr.trim()].filter(b=>b!==void 0&&b!=="").join(" ").slice(0,4096)||"The sandbox backend exited before target-start attestation.";return{status:"unavailable",sandboxed:!1,reason:"backend_launch_failed",diagnostic:w,doctor:{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,w]}}}return g?.state!=="applied"?{status:"execution_uncertain",sandboxed:!1,reason:"attestation_failed",diagnostic:[y===void 0?void 0:H(y),f.stderr.trim()].filter(b=>b!==void 0&&b!=="").join(" ").slice(0,4096)||"Sandbox target execution could not be attested; do not retry blindly.",doctor:d,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}:{status:"completed",sandboxed:!0,exitCode:f.exitCode,stdout:f.stdout,stderr:f.stderr}}a(hi,"runKodaXSandboxed");async function vi(e={}){let n=await z({refresh:!0});if(!n.ready&&process.platform!=="win32")return n;let r=process.cwd(),t=Xn(),o=process.platform==="win32"?["/d","/s","/c","whoami"]:["-c","id -u"],i=mi(r,void 0,void 0,void 0,Jn(process.env,t));try{let s=await hi({command:t,args:o,cwd:r,filesystem:{allowRead:i.filesystem.allowRead??[],allowWrite:[],denyRead:i.filesystem.denyRead,denyWrite:[]},network:{mode:"deny"},timeoutMs:Qe,maxOutputBytes:65536});if(s.status==="completed"&&s.exitCode===0)return z({refresh:!0});let d=s.status==="completed"?n:s.doctor,l=s.status==="completed"?`Sandbox identity probe exited with code ${String(s.exitCode)}.`:s.diagnostic??(s.doctor.diagnostics.join(" ")||"Sandbox target start was not proven.");return{...d,ready:!1,setupRequired:!0,diagnostics:[...d.diagnostics,`Sandbox launch probe failed: ${l}`]}}catch(s){return{...n,ready:!1,setupRequired:!0,diagnostics:[...n.diagnostics,`Sandbox launch probe failed: ${H(s)}`]}}}a(vi,"doctorSandboxExecution");function Hn(){let e=new Error("Sandbox runner preparation timed out.");return e.name="TimeoutError",e}a(Hn,"sandboxRunnerPreparationTimeoutError");function ke(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Hn()}a(ke,"throwIfSandboxRunnerPreparationStopped");function Ce(e,n,r){return ke(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let i=!1,s,d=a(c=>{i||(i=!0,s&&clearTimeout(s),n?.removeEventListener("abort",l),c())},"finish"),l=a(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(s=setTimeout(()=>{d(()=>o(Hn()))},Math.max(0,r-Date.now())),s.unref()),e.then(c=>d(()=>t(c)),c=>d(()=>o(c)))})}a(Ce,"waitForSandboxRunnerPreparation");async function xi(){return or()}a(xi,"sandboxControlDirectory");function Ei(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-windows-network-broker",e];if(import.meta.url.endsWith(".ts"))return["--import",Kr(jn.resolve("tsx")).href,Rr(new URL("./sandbox-network-broker-entry.ts",import.meta.url)),e];let n=u.dirname(Rr(import.meta.url)),r=u.basename(n)==="chunks"?u.dirname(n):n;return[u.join(r,"sandbox-network-broker.js"),e]}a(Ei,"windowsNetworkBrokerEntryArgs");async function ki(e,n,r){let t=e.stdio[3];if(!t)throw new Error("Windows network broker control pipe was not created.");return new Promise((o,i)=>{let s=!1,d=Buffer.alloc(0),l,c=a(b=>{s||(s=!0,l&&clearTimeout(l),n?.removeEventListener("abort",f),t.removeListener("data",w),e.removeListener("error",g),e.removeListener("exit",y),b())},"finish"),f=a(()=>c(()=>i(n?.reason??new DOMException("Operation aborted","AbortError"))),"onAbort"),g=a(b=>c(()=>i(b)),"onError"),y=a(b=>c(()=>i(new Error(`Windows network broker exited ${String(b)} before readiness.`))),"onExit"),w=a(b=>{if(d=Buffer.concat([d,b]),d.length>1024*1024){c(()=>i(new Error("Windows network broker readiness exceeded 1 MiB.")));return}let S=d.indexOf(10);if(!(S<0))try{let x=JSON.parse(d.subarray(0,S).toString("utf8"));if(x===null||typeof x!="object"||x.version!==1)throw new Error("Windows network broker returned an incompatible response.");c(()=>o(x))}catch(x){c(()=>i(x))}},"onData");t.on("data",w),e.once("error",g),e.once("exit",y),n?.addEventListener("abort",f,{once:!0}),r!==void 0&&(l=setTimeout(()=>c(()=>i(Hn())),Math.max(0,r-Date.now())),l.unref())})}a(ki,"readWindowsNetworkBrokerReady");async function Ri(e,n,r){let t=a(s=>{if(s.error!==void 0||s.code!==0||s.signal!==null){let d=r().trim();throw new Error(`Windows network broker exited without a clean cleanup result (code ${String(s.code)}, signal ${String(s.signal)})`+(d===""?".":`: ${d}`),s.error===void 0?void 0:{cause:s.error})}},"assertCleanExit");if(e.exitCode!==null||e.signalCode!==null){t(await n);return}await new Promise(s=>{let d=e.stdin;if(d===null||d.destroyed){s();return}let l=a(()=>s(),"finish");d.once("error",l),d.end(l)});let o=await Promise.race([n.then(s=>({graceful:!0,outcome:s})),new Promise(s=>{setTimeout(()=>s(!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 n,new Error("Windows network broker did not exit within its graceful cleanup budget."))}a(Ri,"stopWindowsNetworkBroker");function st(e){return{...e,srtWinPath:u.resolve(e.srtWinPath),srtWinSha256:e.srtWinSha256.toLowerCase(),controllerExecutable:u.resolve(e.controllerExecutable),controllerSha256:e.controllerSha256.toLowerCase(),endpoints:[...e.endpoints].map(({host:n,port:r})=>({host:n.toLowerCase(),port:r})).sort((n,r)=>n.host.localeCompare(r.host)||n.port-r.port).filter((n,r,t)=>r===0||n.host!==t[r-1].host||n.port!==t[r-1].port)}}a(st,"normalizedWindowsNetworkBrokerRequest");function Ln(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(n=>Ln(n)).join(",")}]`;if(typeof e=="object")return`{${Object.entries(e).filter(([,r])=>r!==void 0).sort(([r],[t])=>r.localeCompare(t)).map(([r,t])=>`${JSON.stringify(r)}:${Ln(t)}`).join(",")}}`;throw new Error("Windows network broker policy contains an unsupported value.")}a(Ln,"canonicalWindowsNetworkBrokerValue");function Ai(e){let n=st(e),r=Ln({version:n.version,setupGenerationNonce:n.setupGenerationNonce,config:n.config,srtWinPath:u.resolve(n.srtWinPath).toLowerCase(),srtWinSha256:n.srtWinSha256,controllerExecutable:n.controllerExecutable.toLowerCase(),controllerSha256:n.controllerSha256,controllerProtocol:n.controllerProtocol,expectedSandboxUserSid:n.expectedSandboxUserSid.toUpperCase(),expectedSandboxGroupSid:n.expectedSandboxGroupSid.toUpperCase(),endpoints:n.endpoints,allowAllNetwork:n.allowAllNetwork});return rn("sha256").update(r).digest("hex")}a(Ai,"windowsNetworkBrokerKey");function Wi(e,n,r){let t=a(()=>{},"markStarted"),o={key:e,requestFile:u.join(r,`windows-network-${process.pid}-${X()}.json`),started:new Promise(i=>{t=i}),markStarted:a(()=>t(),"markStarted"),references:0,failed:!1,lastUsed:0,stopRequested:!1,stderrTail:Buffer.alloc(0)};return _n.add(o),o.ready=(async()=>{try{if(await $n(o.requestFile,JSON.stringify(n),{flag:"wx",mode:384}),o.stopRequested)throw new Error("Windows network broker start was cancelled.");let i=_e({args:Ei(o.requestFile),env:Y(),isElectron:process.versions.electron!==void 0}),s=nn(process.execPath,i.args,{cwd:r,env:i.env,shell:!1,stdio:["pipe","ignore","pipe","pipe"],windowsHide:!0});o.child=s,Te(s),o.markStarted(),s.stderr?.on("data",l=>{o.stderrTail=Buffer.concat([o.stderrTail,l]).subarray(-16*1024)}),o.exit=new Promise(l=>{let c;s.once("error",f=>{c=f}),s.once("close",(f,g)=>l({code:f,signal:g,...c===void 0?{}:{error:c}}))}),o.references===0&&je(o,!1),s.on("error",l=>{G({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker process failed.",detail:l})}),s.once("close",()=>{_n.delete(o),o.stopping===void 0&&fe.get(e)===o&&fe.delete(e)}),s.once("exit",(l,c)=>{!o.stopRequested&&(l!==0||c!==null)&&(Pn(o),G({source:"sandbox:windows-v2",level:"warn",message:"Shared Windows network broker exited unexpectedly.",detail:o.stderrTail.toString("utf8").trim()||`code ${String(l)}, signal ${String(c)}`}))});let d;try{d=await ki(s,void 0,Date.now()+Nn)}catch(l){let c=o.stderrTail.toString("utf8").trim();throw new Error(c===""?"Windows network broker failed before readiness.":`Windows network broker failed before readiness: ${c}`,{cause:l})}if(!d.ok)throw new Error(d.error);return d}finally{o.markStarted()}})().catch(i=>{throw Pn(o),i}),o.ready.catch(()=>{}),o}a(Wi,"createWindowsNetworkBrokerState");async function Bn(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,je(e,!0);let r=(await Promise.allSettled([...e.child===void 0||e.exit===void 0?[]:[Ri(e.child,e.exit,()=>e.stderrTail.toString("utf8"))],le(e.requestFile,{force:!0})])).flatMap(t=>t.status==="rejected"?[t.reason]:[]);if(r.length>0)throw new AggregateError(r,"Shared Windows network broker cleanup failed.")})().finally(()=>{e.child===void 0&&_n.delete(e),je(e,!1),fe.get(e.key)===e&&fe.delete(e.key)})),e.stopping}a(Bn,"stopSharedWindowsNetworkBroker");async function Ci(e,n=!1){if(n&&Pn(e),e.references=Math.max(0,e.references-1),e.references===0){if(je(e,!1),Xr(e),e.failed){await Bn(e);return}e.idleTimer=setTimeout(()=>{e.idleTimer=void 0,!(e.references!==0||e.stopping!==void 0)&&Bn(e).catch(r=>{G({source:"sandbox:windows-v2",level:"warn",message:"Idle Windows network broker cleanup failed.",detail:r})})},Mt),e.idleTimer.unref()}}a(Ci,"releaseWindowsNetworkBrokerState");async function Pi(e,n,r,t){let o=st(e),i=Ai(o);for(;;){let s=fe.get(i);if(s?.stopping!==void 0){await Ce(s.stopping,r,t);continue}if(s?.failed){if(s.references!==0)throw new Error("Windows network broker failed while prior command leases are still settling; no command was started.");await Ce(Bn(s),r,t);continue}s===void 0&&(s=Wi(i,o,n),fe.set(i,s)),Xr(s),s.idleTimer!==void 0&&(clearTimeout(s.idleTimer),s.idleTimer=void 0),s.references+=1,s.references===1&&je(s,!0);let d=!1,l=a(async c=>{d||(d=!0,await Ci(s,c?.retire===!0))},"release");try{let c=s.ready;if(c===void 0)throw new Error("Windows network broker did not start.");return{ready:await Ce(c,r,t),release:l}}catch(c){try{await l()}catch(f){throw new AggregateError([c,f],"Windows network broker acquisition and cleanup both failed.")}throw c}}}a(Pi,"acquireWindowsNetworkBroker");async function Ni(e){let n=e.deadlineAt??Date.now()+Qe,r=await Ce(Fe(e.shellPolicy.filesystem.allowWrite),e.signal,n);ke(e.signal,n);let t=Nr(r);ke(e.signal,n);let o=tt(e.shellPolicy);wn({allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite}),pn(o.filesystem.allowWrite);let i=await Ce(dn(t.sandboxGroupSid,o.filesystem.allowWrite),e.signal,n);ke(e.signal,n);let s=await Ce(yo(),e.signal,n);if(ke(e.signal,n),s.toLowerCase()!==Ie().toLowerCase())throw new Error("Windows native shell control state resolved to an unexpected path.");let d={version:1,setupGenerationNonce:t.generationNonce,config:vr(o),cwd:e.cwd,srtWinPath:r.path,srtWinSha256:r.sha256,controllerExecutable:i.path,controllerSha256:i.sha256,controllerProtocol:M,expectedSandboxUserSid:t.sandboxUserSid,expectedSandboxGroupSid:t.sandboxGroupSid,endpoints:e.endpoints,allowAllNetwork:e.allowAllNetwork},l,c,f;try{l=await Pi(d,s,e.signal,n);let g=l.ready;if(g.sandboxUserSid!==t.sandboxUserSid||g.sandboxGroupSid!==t.sandboxGroupSid)throw ue("The broker observed a sandbox account identity from another v2 generation");let y=xr({setupGenerationNonce:t.generationNonce,sandboxUserSid:g.sandboxUserSid,sandboxGroupSid:g.sandboxGroupSid,asrtSha256:r.sha256,shellSha256:i.sha256});c=u.join(s,`windows-shell-${process.pid}-${X()}.json`);let w=`${process.pid}-${X()}.json`;f=u.join(s,`windows-terminal-${w}`);let b=u.join(s,`windows-started-${w}`),S=u.join(s,`windows-resume-${w}`),x=X(),W=e.deadlineAt??Date.now()+Qe,O=Sr(g.asrtChildEnvironment,e.env,gr(e.cwd,o.filesystem.allowWrite,o.filesystem.allowRead)),E=ti(o.filesystem.allowRead??[],t.setupReadRoots),p=kr({aclExclusions:te(u.resolve(process.env.USERPROFILE??q.homedir())),generation:y,filesystemCapabilityNonce:t.filesystemCapabilityNonce,sandboxUserSid:g.sandboxUserSid,sandboxGroupSid:g.sandboxGroupSid,asrtInvocation:{executable:g.asrtExecutable,prefixArgs:g.asrtPrefixArgs,targetArgv:[],childEnvironment:{}},targetArgv:[e.executable,...e.args],cwd:e.cwd,preinstalledReadRoots:E,allowRead:o.filesystem.allowRead??[],allowWrite:o.filesystem.allowWrite,denyRead:o.filesystem.denyRead,denyWrite:o.filesystem.denyWrite,controllerPipe:g.controllerPipe,terminalRecordPath:f,terminalNonce:x,operationDeadlineUnixMs:W,setupMarkerPath:se(),setupMarkerSha256:rn("sha256").update(Ne(se())).digest("hex")});await $n(c,JSON.stringify(p),{flag:"wx",mode:384}),G({source:"sandbox:windows-v2",level:"debug",message:"Windows native sandbox request prepared.",detail:{protocol:M,setupGeneration:t.generationNonce,brokerGeneration:y,runnerSha256:r.sha256,controllerSha256:i.sha256,preinstalledReadRootCount:E.length}}),ke(e.signal,W);let m,h=l,R=c,C=f,k=Er(O),N=Vo(k,S,b,C,x,()=>{let F=Nr(r);if(JSON.stringify(F)!==JSON.stringify(t))throw ue("The Windows sandbox account generation changed before target start")});return{executable:i.path,args:["__host",R],env:Y(),stdinPrefix:k,processTreeContainment:"native-job",processControl:N,cleanup(F){return m??=(async()=>{let B;if(F?.execution==="started_or_unknown")try{await N.waitForTerminalObservation()}catch(P){B=P}let T=(await Promise.allSettled([h.release({retire:B!==void 0||N.shouldRetireBrokerAfterStartFailure()}),le(R,{force:!0}),le(S,{force:!0}),le(b,{force:!0}),le(C,{force:!0})])).flatMap(P=>P.status==="rejected"?[P.reason]:[]);if(B!==void 0&&T.unshift(B),T.length>0)throw new AggregateError(T,"Windows native shell cleanup failed.");let I=N.getPreStartUnavailableDiagnostic();return I!==void 0?{version:1,state:"pre_start_unavailable",diagnostic:I}:{version:1,state:"applied",backend:"windows-restricted-user",policyId:"kodax-workspace-shell-v1"}})(),m}}}catch(g){let y=await Promise.allSettled([...l===void 0?[]:[l.release()],...c===void 0?[]:[le(c,{force:!0})],...f===void 0?[]:[le(f,{force:!0})]]),w=[g,...y.flatMap(b=>b.status==="rejected"?[b.reason]:[])];throw w.length===1?g:new AggregateError(w,"Windows native shell preparation and cleanup both failed.")}}a(Ni,"prepareWindowsV2Invocation");export{Ae as a,jt as b,ps as c,gs as d,Ee as e,ys as f,hi as g,vi as h};
|