@kodax-ai/kodax 0.7.87 → 0.7.89
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 +95 -0
- package/README.md +29 -12
- package/README_CN.md +7 -3
- package/dist/chunks/agent-AKCXT573.js +2 -0
- package/dist/chunks/argument-completer-BJGY57H2.js +2 -0
- package/dist/chunks/{chunk-U44C5STU.js → chunk-4Y6OSDZE.js} +1 -1
- package/dist/chunks/{chunk-XH7UM4GO.js → chunk-5247AKGN.js} +3 -3
- package/dist/chunks/{chunk-DB4O33RR.js → chunk-5UBP47VJ.js} +223 -220
- package/dist/chunks/{chunk-ITP7J5HX.js → chunk-72H6JNPN.js} +142 -142
- package/dist/chunks/chunk-A63MGLH6.js +415 -0
- package/dist/chunks/{chunk-ZQNOEKOB.js → chunk-BOMSVUJS.js} +2 -2
- package/dist/chunks/{chunk-4OLXWSCQ.js → chunk-CQHLFQSU.js} +254 -254
- package/dist/chunks/chunk-GL6GVYF4.js +320 -0
- package/dist/chunks/{chunk-XKLVC7F6.js → chunk-IFD6TUQU.js} +1 -1
- package/dist/chunks/{chunk-JS4RSF4B.js → chunk-O2ZV775M.js} +1 -1
- package/dist/chunks/chunk-PROPMIT4.js +2 -0
- package/dist/chunks/{chunk-YB7YVAPL.js → chunk-QQBFQCMF.js} +4 -4
- package/dist/chunks/{chunk-BCYJIACJ.js → chunk-S74F7MFN.js} +124 -124
- package/dist/chunks/{chunk-ASFCAPIG.js → chunk-SOIIBADK.js} +2 -2
- package/dist/chunks/{chunk-SKELDH3G.js → chunk-UNEC2WXJ.js} +17 -17
- package/dist/chunks/{chunk-7XTUXMAI.js → chunk-W2LRTZBJ.js} +37 -34
- package/dist/chunks/{chunk-GRJ7NKWP.js → chunk-W5RPVR3O.js} +1 -1
- package/dist/chunks/client-ZXBSEDS4.js +2 -0
- package/dist/chunks/compaction-config-HVHPJ6CS.js +2 -0
- package/dist/chunks/{construction-bootstrap-YTFOT4M2.js → construction-bootstrap-WF6KQ7XV.js} +1 -1
- package/dist/chunks/dist-BCT3UNMA.js +2 -0
- package/dist/chunks/{dist-X55TWIK4.js → dist-WILA35IA.js} +1 -1
- package/dist/chunks/host-V6ENYZAQ.js +2 -0
- package/dist/chunks/run-manager-ZOV7EKTZ.js +2 -0
- package/dist/chunks/utils-BEWYGEMB.js +2 -0
- package/dist/index.d.ts +26 -26
- package/dist/index.js +5 -5
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1564 -1555
- package/dist/kodax_resume.js +35 -826
- package/dist/provider-capabilities.json +1156 -1118
- package/dist/runtime-worker.js +1346 -1339
- package/dist/sandbox-workspace-session.js +261 -261
- package/dist/sdk-a2a.d.ts +20 -18
- package/dist/sdk-a2a.js +9 -9
- package/dist/sdk-agent.d.ts +23 -22
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +65 -38
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +6 -6
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +8 -8
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +4 -4
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +21 -21
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +28 -21
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +10 -10
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +59 -59
- package/dist/types-chunks/{base.d-vopO1rml.d.ts → base.d-JjF6aKsh.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-B36OQwNA.d.ts → bash-prefix-extractor.d-BLlhCRI-.d.ts} +33 -9
- package/dist/types-chunks/{capability-learning.d-CE1tm29C.d.ts → capability-learning.d-BAxy0mfx.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-DEncDNzD.d.ts → capsule.d-Cw4UlPTC.d.ts} +5 -5
- package/dist/types-chunks/{config.d-CJy1WENT.d.ts → config.d-CTPaqsD-.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-Dif9pbC9.d.ts → controller.d-1tydJm7c.d.ts} +11 -4
- package/dist/types-chunks/{controller.d-C1YdP_pQ.d.ts → controller.d-BvwWz6yP.d.ts} +1 -1
- package/dist/types-chunks/{cost-tracker.d-BeaenODW.d.ts → cost-tracker.d-MTAt6N7b.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-DhpnJv4Y.d.ts → guardrail.d-DqWHIgt6.d.ts} +15 -9
- package/dist/types-chunks/{history-retrieval.d-YJQpQt7h.d.ts → history-retrieval.d-ia-4iJpw.d.ts} +2 -2
- package/dist/types-chunks/{integration-config.d-BNowXE8k.d.ts → integration-config.d-BHoiz-WZ.d.ts} +3 -3
- package/dist/types-chunks/{manager.d-B67TmPO1.d.ts → manager.d-D_1fqveb.d.ts} +3 -3
- package/dist/types-chunks/{oauth-login.d-6i-vidxv.d.ts → oauth-login.d-Cz9OpSmz.d.ts} +3 -3
- package/dist/types-chunks/{public-api.d-D4q3WxKq.d.ts → public-api.d-CMZa4JPa.d.ts} +12 -7
- package/dist/types-chunks/{repl.d-D4ye29Kk.d.ts → repl.d-Byu2osV-.d.ts} +7 -7
- package/dist/types-chunks/{resolver.d-RyPo99tB.d.ts → resolver.d-bKttRr1V.d.ts} +4 -4
- package/dist/types-chunks/{review-inbox.d-C1_xZ-yg.d.ts → review-inbox.d-D3T-RxRs.d.ts} +3 -3
- package/dist/types-chunks/{run-manager.d-D30IvnwV.d.ts → run-manager.d-D0aKe12e.d.ts} +2 -2
- package/dist/types-chunks/{sdk-session-DIU6sHa2.d.ts → sdk-session-BEM7yvJB.d.ts} +3 -3
- package/dist/types-chunks/{shell-command-sets.d-rIHkZ_VR.d.ts → shell-command-sets.d-_SHjU3KP.d.ts} +2 -2
- package/dist/types-chunks/{side-query.d-iH0P9ASy.d.ts → side-query.d-DNes6rHA.d.ts} +3 -3
- package/dist/types-chunks/{types-PHjfwebT.d.ts → types-D8OiIEwA.d.ts} +1 -1
- package/dist/types-chunks/{types.d-BSPlmJqf.d.ts → types.d-BEMcUOng.d.ts} +1 -1
- package/dist/types-chunks/{types.d-COhAF5Xo.d.ts → types.d-B_IFJlti.d.ts} +3 -3
- package/dist/types-chunks/{types.d-Bz5Y-PD9.d.ts → types.d-BqK7eZ5u.d.ts} +6 -6
- package/dist/types-chunks/{types.d-CK9A9rpP.d.ts → types.d-Cv09EdJR.d.ts} +1 -1
- package/dist/types-chunks/{types.d-sW-OqiFt.d.ts → types.d-DeokRBs7.d.ts} +34 -3
- package/dist/types-chunks/{utils.d-B65ozSTV.d.ts → utils.d-0h1NTEsX.d.ts} +8 -8
- package/package.json +2 -2
- package/dist/chunks/agent-Z64QF7KG.js +0 -2
- package/dist/chunks/argument-completer-HIJBXRUT.js +0 -2
- package/dist/chunks/chunk-3PGNESV3.js +0 -415
- package/dist/chunks/chunk-UWKM3HNY.js +0 -319
- package/dist/chunks/compaction-config-E4TFBCDJ.js +0 -2
- package/dist/chunks/dist-M3JV4PNA.js +0 -2
- package/dist/chunks/host-SJHHJBPB.js +0 -2
- package/dist/chunks/run-manager-T5QGWNON.js +0 -2
- package/dist/chunks/utils-2FHVIO6X.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{D as N,J as C}from"./chunk-
|
|
2
|
+
import{D as N,J as C}from"./chunk-BOMSVUJS.js";import{ie as q,je as j,na as _}from"./chunk-5UBP47VJ.js";import{Pa as E,gb as T,m as x,n as R}from"./chunk-UNEC2WXJ.js";import{Fd as O,Gd as W,Ld as M,og as $,pg as g,qg as k,tg as I,ug as y,vg as b}from"./chunk-72H6JNPN.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var ne=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
|
|
3
3
|
`),P=12e4,re="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",se="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",oe=64,ie=2,ae=2e3,le=[{name:"default"},{name:"variant-results",finalText:o((e,n)=>`Variant smoke child report from ${e} (${n}).`,"finalText"),synthesizeText:"Variant smoke synthesis report."},{name:"unverified-success",status:o(()=>"completed_unverified","status"),finalText:o(e=>`Smoke result for ${e}: completed with verification warnings.`,"finalText"),synthesizeText:"Smoke synthesis: completed with verification warnings."},{name:"empty-args-rerun",args:o(()=>({}),"args")}],ce=[{id:"import",pattern:/\bimport\s*(?:\(|['"*{]|\w+\s+from\b)/},{id:"require",pattern:/\brequire\s*\(/},{id:"process",pattern:/\bprocess\s*(?:\.|\[)/},{id:"fs",pattern:/\b(?:node:)?fs\b/},{id:"child_process",pattern:/\bchild_process\b/},{id:"shell",pattern:/\b(?:exec|spawn|execFile)\s*\(/},{id:"fetch",pattern:/\bfetch\s*\(/},{id:"Deno",pattern:/\bDeno\s*(?:\.|\[)/},{id:"Bun",pattern:/\bBun\s*(?:\.|\[)/},{id:"globalThis-index",pattern:/\bglobalThis\s*\[/}];function ue(e=process.env,n){let t=x(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=R(e[re]);if(r!==void 0)return r;let s=e[se];if(s===void 0||s.trim().length===0)return P;let i=Number(s);return!Number.isFinite(i)||i<=0?P:Math.floor(i)}o(ue,"resolveWorkflowGenerationTimeoutMs");function fe(e,n){if(typeof e!="object"||e===null)throw new Error(`${n} must be an object`);return e}o(fe,"readRecord");function D(e,n){let t=e[n];if(typeof t!="string"||t.trim().length===0)throw new Error(`workflow generation ${n} must be a non-empty string`);return t}o(D,"readNonEmptyString");function de(e){let n=e.trim(),t=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(n);if(t?.[1])return t[1].trim();let r=n.indexOf("{"),s=n.lastIndexOf("}");if(r>=0&&s>r)return n.slice(r,s+1);throw new Error("workflow generation output did not contain a JSON object")}o(de,"extractJsonText");function pe(e){let n=de(e);return fe(JSON.parse(n),"workflow generation output")}o(pe,"parseGenerationJson");function me(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(typeof e!="object"||e===null)return;let n=e;for(let t of["name","id","title","phase"]){let r=n[t];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}o(me,"normalizePhaseEntry");function we(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(we,"splitPhaseString");function he(e){if(typeof e!="object"||e===null)return e;let n=e,t=n.phases,r;if(Array.isArray(t)){let s=t.map(me);s.every(i=>i!==void 0)&&(r=s)}else if(typeof t=="string"){let s=we(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(he,"normalizeGeneratedManifestCandidate");function ge(e){return e.match(/\bwf\.(?:runAgent|spawnAgent|synthesize)\s*\(/g)?.length??0}o(ge,"estimateDirectAgentCalls");function ke(e,n){let t=e.maxConcurrency*Math.max(1,e.phases.length)+2,r=ge(n)+2,s=Math.min(oe,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(ke,"reserveGeneratedWorkflowAgentCapacity");function w(e){let n="",t=0,r=["code"],s=[0];for(;t<e.length;){let i=e[t],a=e[t+1];if(r[r.length-1]==="template"){if(i==="\\"){n+=" ",t+=2;continue}if(i==="`"){n+=" ",t+=1,r.pop(),s.pop();continue}if(i==="$"&&a==="{"){n+=" ",t+=2,r.push("code"),s.push(0);continue}n+=i===`
|
|
4
4
|
`?`
|
|
5
5
|
`:" ",t+=1;continue}if(i==="/"&&a==="/"){for(n+=" ",t+=2;t<e.length&&e[t]!==`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{o}from"./chunk-
|
|
2
|
+
import{o}from"./chunk-UNEC2WXJ.js";import{a as i}from"./chunk-ONUPGMER.js";function r(u){let e=o(u?.llm);if(!e)return;let t={};return e.requestTimeoutMs!==void 0&&(t.requestTimeoutMs=e.requestTimeoutMs),e.streamIdleTimeoutMs!==void 0&&(t.streamIdleTimeoutMs=e.streamIdleTimeoutMs),e.chunkTimeoutMs!==void 0&&(t.chunkTimeoutMs=e.chunkTimeoutMs),e.maxRetryDelayMs!==void 0&&(t.maxRetryDelayMs=e.maxRetryDelayMs),Object.keys(t).length>0?t:void 0}i(r,"providerResilienceConfigFromTimeouts");export{r as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{$a as o}from"./chunk-72H6JNPN.js";import{a as r}from"./chunk-ONUPGMER.js";var p=Object.freeze({".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"typescriptreact",".js":"javascript",".mjs":"javascript",".cjs":"javascript",".jsx":"javascriptreact",".py":"python",".pyi":"python",".go":"go",".rs":"rust",".java":"java"});function f(e){let t=e.lastIndexOf(".");if(t<0)return;let s=e.slice(t).toLowerCase();return p[s]}r(f,"languageIdForPath");var a=process.platform==="win32";function v(e){let t=e.replace(/\\/g,"/");return a?t.toLowerCase():t}r(v,"normalizeFsPath");import{spawn as c}from"child_process";function u(e){return process.platform==="win32"&&e!==process.execPath&&!/\.exe$/i.test(e)}r(u,"needsShell");function I(e,t,s,i=e===process.execPath?"javascript":"native"){if(u(e)){let n=[l(e),...t].join(" ");return c(n,{...s,shell:!0,windowsHide:!0})}if(i==="javascript"){let n=o({args:t,env:s.env??process.env,isElectron:process.versions.electron!==void 0,executable:e});return c(n.command,n.args,{...s,env:n.env,shell:!1,windowsHide:!0})}return c(e,[...t],{...s,shell:!1,windowsHide:!0})}r(I,"spawnLspProcess");function l(e){return/[\s"]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}r(l,"quoteIfNeeded");export{f as a,v as b,I as c};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{k as xn}from"./chunk-
|
|
2
|
+
import{k as xn}from"./chunk-5UBP47VJ.js";import{Ia as X,Wa as ir,Ya as ar,_a as Te,db as _e,fb as bn,ib as vn,t as T,zc as se}from"./chunk-72H6JNPN.js";import{a as s}from"./chunk-ONUPGMER.js";import{spawn as hr,spawnSync as Xe}from"node:child_process";import{createHash as un,randomUUID as H}from"node:crypto";import{once as dr}from"node:events";import{constants as rt,existsSync as br,lstatSync as vr,mkdirSync as cr,readFileSync as xr,readdirSync as jn,realpathSync as ce,renameSync as $n,rmSync as Be,statSync as fn,writeFileSync as lr,writeSync as Ro}from"node:fs";import{copyFile as kr,lstat as tt,mkdir as K,readFile as he,realpath as Fe,rename as ot,rm as G,rmdir as st,stat as nn,writeFile as be}from"node:fs/promises";import{createRequire as it}from"node:module";import{createServer as at}from"node:net";import te from"node:os";import i from"node:path";import dt from"node:readline";import{fileURLToPath as ur,pathToFileURL as Ar}from"node:url";var ae="0.0.65",{DEFAULT_WINDOWS_PROXY_PORT_RANGE:ct,SandboxManager:kn,getSrtWinPath:lt,getWindowsSandboxUserStatus:Mn,grantWindowsAcl:ut,installWindowsSandbox:ft,resolveSrtWin:pt,revokeWindowsAcl:Er}=await import("@anthropic-ai/sandbox-runtime");function wt(){let e=process.platform==="win32"?"windows-restricted-user":process.platform==="darwin"?"macos-seatbelt":process.platform==="linux"?"linux-bubblewrap":"unsupported";return{version:3,asrtVersion:ae,platform:process.platform,backend:e,genericCommandExecution:!0,controls:["filesystem","network","environment","timeout","output"],ordinaryCallsTriggerSetup:!1,setupMayElevate:process.platform==="win32",unavailableBehavior:"structured-no-execution",permissionFallback:"normal-permission-policy"}}s(wt,"sandboxRuntimeCapability");var qn=1048576,Kn=12e4,Xn=it(import.meta.url),Rr=process.env.KODAX_BUNDLED==="true"?void 0:Ar(Xn.resolve("@anthropic-ai/sandbox-runtime")).href,mt=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d"]),gt=new Set([".env",".envrc",".pgpass",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),yt=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",i.join(".cargo","credentials.toml"),i.join(".config","gcloud"),i.join(".config","gh"),i.join(".config","openai"),i.join(".config","anthropic"),".gitconfig",i.join(".config","git","config"),".terraformrc",i.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",i.join(".config","fish","config.fish"),i.join(".config","fish","fish_variables"),".bash_history",".zsh_history",i.join(".m2","settings.xml"),i.join(".m2","settings-security.xml"),i.join(".gradle","gradle.properties"),i.join(".nuget","NuGet","NuGet.Config"),i.join(".pip","pip.conf"),i.join(".config","pip","pip.conf"),i.join(".cache","huggingface","token"),i.join(".huggingface","token"),i.join(".config","rclone","rclone.conf"),i.join(".local","share","keyrings"),i.join("Library","Keychains"),i.join("AppData","Roaming","Microsoft","Protect"),i.join("AppData","Roaming","Microsoft","Credentials"),i.join("AppData","Roaming","Microsoft","Vault"),i.join("AppData","Local","Microsoft","Credentials"),i.join("AppData","Local","Microsoft","Protect"),i.join("AppData","Local","Microsoft","Vault"),".password-store",".env",".envrc",".pgpass",".env.local",".env.development",".env.production",".env.test",".env.staging",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json","id_rsa","id_dsa","id_ecdsa","id_ed25519"],St=["runtime","mcp-tokens","mcp-clients","integrations","sandbox-runtime","processes","learned","config.json","auth.json","trusted-project-rules.json",".env",".envrc",".pgpass",".npmrc",".pypirc",".netrc",".git-credentials","credentials","credentials.json","application_default_credentials.json"],Gn=["runtime","processes","learned"],ht=String.raw`
|
|
3
3
|
$ErrorActionPreference = 'Stop'
|
|
4
4
|
$payload = [Console]::In.ReadToEnd() | ConvertFrom-Json
|
|
5
5
|
$mutex = [System.Threading.Mutex]::new($false, 'Local\KodaXAsrtAclGuard-v1')
|
|
@@ -514,6 +514,6 @@ try {
|
|
|
514
514
|
# KodaXWindowsBootIdentity-v1
|
|
515
515
|
$boot = (Get-CimInstance Win32_OperatingSystem -ErrorAction Stop).LastBootUpTime
|
|
516
516
|
[Console]::Out.Write($boot.ToUniversalTime().Ticks.ToString([Globalization.CultureInfo]::InvariantCulture))
|
|
517
|
-
`,n=Xe(Gr(),["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),r=n.status===0?n.stdout.trim():"",t=/^\d+$/.test(r)?`windows-boot-${r}`:void 0;return En=t??null,t}s(Ae,"readWindowsBootIdentity");function On(){return`After stopping every KodaX and KodaX Space process, run "${je?.path??"srt-win.exe"}" acl recover --force --json, then delete "${wn()}" and "${Jn()}".`}s(On,"windowsSandboxAclManualRecoveryInstruction");function Wr(e,n=Ae()){if(e.find(({windowsBootIdentity:a})=>a===void 0||n===void 0)!==void 0)return new Q("An unconfirmed Windows sandbox process tree has no verifiable Windows boot identity. "+On());let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Q(`An unconfirmed Windows sandbox process tree${o} from the same Windows boot may still have live descendants; restart Windows before retrying. `+On())}s(Wr,"persistentWindowsSandboxAclPoisonError");function Nn(e,n,r="unconfirmed",t){if(process.platform!=="win32")return;let o=Ae(),a=_e(process.pid),c=H(),d=`${r==="unconfirmed"?"unconfirmed-":""}owner-${c}.json`,l=JSON.stringify({version:1,state:r,...t===void 0?{}:{policyKey:t},holderPid:process.pid,...a===void 0?{}:{holderProcessStartIdentity:a},...e===void 0?{}:{pid:e},...n===void 0?{}:{processStartIdentity:n},...o===void 0?{}:{windowsBootIdentity:o}}),u=s((f,p)=>{cr(f,{recursive:!0,mode:448});let w=i.join(f,d);if(r==="unconfirmed")return lr(w,l,{flag:"wx",mode:384}),w;cr(p,{recursive:!0,mode:448});let h=i.join(p,`owner-${c}.tmp`);return lr(h,l,{flag:"wx",mode:384}),$n(h,w),w},"persist"),g=u(wn(),Pt());try{let f=u(Jn(),Ct());q.set(g,f)}catch(f){if(r==="active")try{Be(g,{force:!0})}catch(p){throw new AggregateError([f,p],"Windows sandbox owner compatibility marker and primary rollback both failed.")}throw f}return g}s(Nn,"persistWindowsSandboxAclPoisonOwner");function $t(e){let n=Nn(void 0,void 0,"active",e);if(n!==void 0){O.add(n);let r=q.get(n);r!==void 0&&O.add(r)}return n}s($t,"createWindowsSandboxAclOwnerMarker");function Ne(e){if(e===void 0)return;let n=q.get(e);try{n!==void 0&&Be(n,{force:!0}),Be(e,{force:!0}),O.delete(e),n!==void 0&&O.delete(n),q.delete(e)}catch(r){throw O.delete(e),n!==void 0&&O.delete(n),ue(r),new Error("Windows sandbox owner poison marker could not be cleared.",{cause:r})}}s(Ne,"confirmWindowsSandboxAclOwnerStopped");async function ze(e,n){ue(n);let r=await Un(e,void 0,void 0,n);if(ue(r),r!==n)throw r}s(ze,"retainWindowsSandboxAclOwnerPoison");function Tr(e,n,r){if(e===void 0)return Nn(n,r,"unconfirmed");let t=q.get(e),o=i.join(i.dirname(e),`unconfirmed-${i.basename(e)}`),a=t===void 0?void 0:i.join(i.dirname(t),`unconfirmed-${i.basename(t)}`);if(br(o))return O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o;try{return $n(e,o),t!==void 0&&a!==void 0&&$n(t,a),O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o}catch(c){try{let d=Nn(n,r,"unconfirmed");return O.delete(e),t!==void 0&&O.delete(t),q.delete(e),d}catch(d){throw O.delete(e),t!==void 0&&O.delete(t),q.delete(e),new AggregateError([c,d],"Windows sandbox ACL poison write-ahead failed.")}}}s(Tr,"writeAheadWindowsSandboxAclOwnerPoison");async function Un(e,n,r,t){if(process.platform!=="win32")return t;let o;try{return o=Tr(e,n,r),await se(xe(),async()=>{},ve),t}catch(a){return new AggregateError([t,a],o===void 0?"Windows sandbox owner termination and durable ACL poison recording both failed.":"Windows sandbox owner termination was not confirmed and ACL poison serialization failed.")}}s(Un,"transitionWindowsSandboxAclOwnerToPoison");function Wt(e,n){return O.has(e)}s(Wt,"isVerifiedActiveWindowsSandboxAclOwner");function Vn(e){if(e.state!=="active"||e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=_e(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return Me(r,"ESRCH")?"stale":"unknown"}}s(Vn,"windowsSandboxAclOwnerLiveness");function Hn(e,n,r){return n.state!=="active"?!1:O.has(e)?r===void 0||n.policyKey===r:r!==void 0&&n.policyKey===r&&Vn(n)==="live"}s(Hn,"isCompatibleWindowsSandboxAclOwner");function zn(e){let n=Ge().filter(({file:r,owner:t})=>!Hn(r,t,e));if(n.length!==0)throw Wr(n.map(({owner:r})=>r))}s(zn,"assertNoPersistentWindowsSandboxAclPoison");async function _r(e,n,r,t){let o=new Error(r);if(process.platform==="win32"){let a=await Un(t,e,n,o);return ue(a),a instanceof Error?a:o}return ue(o),o}s(_r,"recordUnconfirmedWindowsSandboxOwner");function Or(e){return process.platform==="win32"?`${e} process-tree termination was not confirmed; restart Windows before retrying.`:`${e} process-tree termination was not confirmed; stop the retained process tree before retrying.`}s(Or,"unconfirmedSandboxProcessTreeMessage");function rn(){let e=ke(),n=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"acl","recover","--json"],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),r=(n.stderr??"").trim();if(n.error)throw new Error(`Windows sandbox ACL recovery failed to start: ${n.error.message}`,{cause:n.error});let t;try{t=JSON.parse((n.stdout??"").trim())}catch(a){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(n.status)}): ${r||"(empty stderr)"}.`,{cause:a})}let o=typeof t=="object"&&t!==null?t:void 0;if(n.status!==0||typeof o?.deadBrokers!="number"||!Number.isSafeInteger(o.deadBrokers)||o.deadBrokers<0||typeof o.acesRevoked!="number"||!Number.isSafeInteger(o.acesRevoked)||o.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(n.status)}${n.signal?`, signal ${n.signal}`:""}): ${r||"(empty stderr)"}.`);Tn=!0}s(rn,"recoverWindowsSandboxAcls");function Tt(e){return e instanceof Error&&e.message.startsWith("learning store lock timed out:")}s(Tt,"isWindowsSandboxAclRecoveryLockTimeout");var tn=class extends Q{static{s(this,"ForeignWindowsSandboxAclOwnerContentionError")}constructor(n){super("Another Windows sandbox owner is active for the shared sandbox account; wait for it to close or stop the other KodaX/KodaX Space process, then retry.",{cause:n}),this.name="ForeignWindowsSandboxAclOwnerContentionError"}},on=class extends Q{static{s(this,"StaleWindowsSandboxAclOwnerContentionError")}constructor(n){super(n.message,{cause:n}),this.name="StaleWindowsSandboxAclOwnerContentionError"}};function Nr(e){!Tt(e)&&!(e instanceof tn)&&!(e instanceof on)&&ue(e)}s(Nr,"recordWindowsSandboxAclAdmissionFailure");function qe(e,n=Ae()){let r=Wr(e.map(({owner:t})=>t),n);return e.every(({owner:t})=>t.state==="active")?e.some(({owner:t})=>Vn(t)==="stale")?new on(r):new tn(r):r}s(qe,"windowsSandboxAclPoisonSnapshotError");function _t(){let e=Ge();if(e.length===0)return;let n=Ae();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){rn();for(let t of e)Be(t.file,{force:!0});zn();return}return e.every(({owner:t})=>Vn(t)!=="stale")?new Q("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; wait for sandboxed commands to finish and stop other KodaX or KodaX Space processes, then retry."):qe(e,n)}s(_t,"windowsSandboxAclSetupBlockWithLock");function wr(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(le)),`${le} ${n.message}`]}}s(wr,"withWindowsSandboxAclSetupBlock");function Ir(e){yn();let n=Ge(),r=n.filter(({file:t,owner:o})=>!Hn(t,o,e));if(Tn){if(r.length>0)throw qe(r);return}if(r.length>0){let t=Ae();if(!(t!==void 0&&r.every(({owner:a})=>a.windowsBootIdentity!==void 0&&a.windowsBootIdentity!==t)))throw qe(r,t)}if(n.length>0){Tn=!0;return}rn();for(let t of r)Be(t.file,{force:!0});zn(e)}s(Ir,"ensureWindowsSandboxAclRecoveryWithLock");async function sn(e){if(process.platform==="win32")try{await se(xe(),async()=>Ir(e),ve)}catch(n){throw Nr(n),n}}s(sn,"ensureWindowsSandboxAclRecovery");async function Lr(e){if(process.platform!=="win32")return;let n;try{return await se(xe(),async()=>{try{Ir(e)}catch(r){throw Nr(r),r}return n=$t(e),n},ve)}catch(r){if(n===void 0)throw r;try{Ne(n)}catch(t){throw new AggregateError([r,t],"Windows sandbox owner admission and marker cleanup both failed.")}throw r}}s(Lr,"admitWindowsSandboxAclOwner");async function In(e){if(process.platform!=="win32")return;let n;try{if(e===void 0||!O.has(e))return;if(n=$r(xr(e,"utf8")).policyKey,n!==void 0){await se(xe(),async()=>{let t=q.get(e),o=new Set([e,t].filter(d=>d!==void 0)),a=Ge().filter(({file:d})=>!o.has(d)),c=a.filter(({file:d,owner:l})=>!Hn(d,l,n));if(c.length>0)throw qe(c);if(a.length>0){Ne(e);return}rn(),Ne(e)},ve);return}let r=Tr(e,void 0,void 0);await se(xe(),async()=>{rn(),Ne(r),e!==r&&Ne(e)},ve)}catch(r){let t=n===void 0?r:await Un(e,void 0,void 0,r);throw ue(t),t}}s(In,"confirmWindowsSandboxAclRecovery");function Rn(){ie!==void 0&&(Er({sandboxUserSid:ie.sandboxUserSid,holderPid:process.pid,srtWin:ie.runner.srtWin}),ie=void 0)}s(Rn,"releasePreparedWindowsRunnerGrant");function Ot(e,n){if(!(ie?.runner.path===e.path&&ie.sandboxUserSid===n)){process.removeListener("exit",Rn),Rn();try{ut({read:[e.directory,e.path],write:[],sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(r){try{Er({sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(t){throw new AggregateError([r,t],"Windows sandbox runner ACL grant failed and its partial grant could not be revoked.")}throw r}ie={runner:e,sandboxUserSid:n},process.once("exit",Rn)}}s(Ot,"retainPreparedWindowsRunnerGrant");async function Nt(){let[e,n]=ct;for(let r=0;r<5;r+=1){let t=at();t.listen(0,"127.0.0.1"),await dr(t,"listening");let o=t.address();if(typeof o=="object"&&o!==null&&(o.port<e||o.port>n))return{server:t,target:`127.0.0.1:${o.port}`};let a=dr(t,"close");t.close(),await a}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`)}s(Nt,"bindWindowsWfpProbe");function mr(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}s(mr,"windowsRunnerFailureCode");function It(e){return Me(e,"ETIMEDOUT")?"wfp_probe_timeout":Me(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}s(It,"windowsRunnerSpawnFailureCode");async function Lt(e){let{server:n,target:r}=await Nt();try{let t=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${It(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let a;try{a=JSON.parse((t.stdout??"").trim())}catch{let c=t.status===null?"wfp_probe_timeout":mr(o);throw new Error(`[${c}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(a.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||a.egress_probe!=="blocked")throw new Error(`[${mr(o)}] Windows sandbox WFP probe to ${String(a.target??r)} was ${String(a.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}s(Lt,"verifyPreparedWindowsWfp");function Dr(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}s(Dr,"windowsSandboxAccountDiagnostics");function Dt(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}s(Dt,"parseBrokerObservation");function gn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}s(gn,"sandboxJavaScriptCommand");async function Z(e={}){if(e.refresh||me===void 0||Date.now()>=He){let n=Bt();me=n,He=Number.POSITIVE_INFINITY,n.then(r=>{me===n&&(He=r.ready?Number.POSITIVE_INFINITY:Date.now()+Et)},()=>{me===n&&(me=void 0,He=0)})}return me}s(Z,"doctorSandboxRuntime");async function Bt(){let e=[],n=!1;kn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:kn.checkDependencies();e.push(...r.warnings,...r.errors);let t=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let d=JSON.parse(await he(Xn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));d.version!==ae&&(t=!0,e.push(`ASRT package version mismatch: expected ${ae}, found ${String(d.version)}.`))}catch(d){t=!0,e.push(`ASRT package provenance check failed: ${de(d)}`)}let o=gn(),a=Te({args:["--version"],env:Ee(),isElectron:o===process.execPath&&process.versions.electron!==void 0}),c=Xe(o,a.args,{env:a.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(c.status!==0){t=!0;let d=c.error?.message??(c.stderr.trim()||o);e.push(`JavaScript Skill interpreter is unavailable: ${d}.`)}if(process.platform==="win32"){try{let d=await _n(),l=Mn({srtWin:d.srtWin}),u=Dr(l);if(u.length>0||!l.sid)t=!0,e.push(...u);else{Ot(d,l.sid);let g=Xr(an(),l.sid,l.groupSid,!1,"read");g.length>0&&(t=!0,e.push(`[acl_guards_missing] ${g.length} persistent Windows sandbox ACL guard(s) are missing. Run "kodax sandbox setup" once to install them outside the startup path.`)),await Lt(d)}}catch(d){t=!0,e.push(de(d))}try{let d=Ge().filter(({file:l,owner:u})=>!Wt(l,u));if(d.length>0){let l=Ae();l!==void 0&&d.every(({owner:g})=>g.windowsBootIdentity!==void 0&&g.windowsBootIdentity!==l)||(n=!0,e.push(`${le} `+qe(d,l).message))}}catch(d){n=!0,e.push(`${le} ${de(d)}`)}}return{ready:kn.isSupportedPlatform()&&!t&&!n,platform:process.platform,version:ae,diagnostics:e,setupRequired:t}}s(Bt,"inspectSandboxRuntime");async function Ft(){let e=await Z({refresh:!0});try{let t=_t();if(t!==void 0)return wr(e,t)}catch(t){let o=t instanceof Error?t:new Error(String(t));return wr(e,o)}if(e.ready||pn(e)||!e.setupRequired)return e;let n=!1;try{let t=await _n(),o=Mn({srtWin:t.srtWin});n=Dr(o).length===0&&o.sid!==void 0}catch{n=!1}if(n){Dn(an(),"read");let t=await Z({refresh:!0});if(t.ready)return t}if(ft().cancelled)throw new Error("Sandbox setup was cancelled.");return await _n(),Dn(an(),"read"),Z({refresh:!0})}s(Ft,"setupWindowsSandboxRuntimeWithLock");async function jt(){return process.platform!=="win32"?Z({refresh:!0}):se(xe(),Ft,ve)}s(jt,"setupSandboxRuntime");function ge(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(le));return n!==void 0?[n.slice(le.length).trim()]:['Run "kodax sandbox setup". Windows will show a UAC prompt for the one-time sandbox account and network policy setup.',"The terminal itself does not need to be started as Administrator; approve the UAC prompt when it appears."]}return e.platform==="darwin"?['KodaX uses macOS Seatbelt through sandbox-exec. Install the missing dependency, then rerun "kodax sandbox doctor".',"Homebrew: brew install ripgrep"]:e.platform==="linux"?['KodaX uses bubblewrap on Linux. Install bubblewrap, socat, and ripgrep, then rerun "kodax sandbox doctor".',"Debian/Ubuntu: sudo apt install bubblewrap socat ripgrep","Fedora/RHEL: sudo dnf install bubblewrap socat ripgrep","Arch Linux: sudo pacman -S bubblewrap socat ripgrep"]:[`KodaX sandbox is not supported on ${e.platform}.`]}s(ge,"sandboxSetupGuidance");async function qo(e={}){let n=await Z({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:ge(n)};if(pn(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};try{let r=await jt();return{status:r.ready?"ready":"unavailable",attempted:!0,doctor:r,guidance:ge(r)}}catch(r){let t=await Z({refresh:!0}),o=de(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:ge(t),error:o}}}s(qo,"prepareSandboxRuntimeForSetup");function re(e,n){let r=e.replaceAll("\\","/").replace(/^\.\//,"");if(!r||i.posix.isAbsolute(r)||r.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return r}s(re,"canonicalRelative");function _(e,n){let r=i.relative(e,n);return r===""||!r.startsWith("..")&&!i.isAbsolute(r)}s(_,"isInside");function Br(e){let n=e.split(i.sep).map(r=>r.toLowerCase());return n.some(r=>mt.has(r))||n.some(r=>gt.has(r)||r.startsWith(".env."))}s(Br,"isSensitiveRelative");async function Mt(e,n){await K(n,{recursive:!0,mode:448});let r=[...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))];await be(i.join(n,"SKILL.md"),await he(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of r){let a=re(o.relativePath,`Skill ${e.name} support file`),c=i.join(n,t,...a.split("/"));await K(i.dirname(c),{recursive:!0,mode:448}),await be(c,await he(o.path),{mode:384})}}s(Mt,"copySkillSnapshot");async function qt(e,n){let r=new Map;for(let[t,o]of Object.entries(e.admissions)){let a=await e.registry.loadFull(t),c=new Map((a.scripts??[]).map(l=>[`scripts/${re(l.relativePath,`Skill ${t} script`)}`,l])),d=i.join(n,t.replace(/[^A-Za-z0-9._-]/g,"_"));await Mt(a,d);for(let l of o){let u=re(l,`toolPolicy.skillScripts.${t}`);if(!c.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);r.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:i.join(d,...u.split("/"))})}}return r}s(qt,"snapshotAdmissions");function Kt(e){return e.mode==="deny"?[]:e.origins.map(n=>{let r=new URL(n);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(Kt,"networkEndpoints");function Ee(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return Yn(n)}s(Ee,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}s(Yn,"normalizedSandboxEnvironment");function Fr(e,n){return Yn({...e,...n})}s(Fr,"mergeSandboxEnvironment");function Xt(e){let n=i.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(n))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(n===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(n===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(n===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(n)&&process.platform==="win32")return{command:process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${n||"<none>"}.`)}s(Xt,"interpreterFor");var gr=250,Gt=1500;async function Jt(e,n,r=Kn,t=qn,o){let a=[],c=[],d=e.pid===void 0?void 0:_e(e.pid),l=0,u,g=s(()=>{},"reportStopRequested"),f,p,w=new Promise(y=>{g=y}),h=s(y=>{if(u!==void 0)return;u=y,g();let A=!1,E,L;f=new Promise((R,F)=>{E=R,L=F}),f.catch(()=>{});let P=s(async R=>{let F=await _r(e.pid,d,Or("Sandbox broker"),o);return R===void 0?F:new AggregateError([F,R],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),z=s(R=>{A||(A=!0,p!==void 0&&clearTimeout(p),R===void 0?E():L(R))},"finish");p=setTimeout(()=>{try{e.kill("SIGKILL"),P().then(z)}catch(R){P(R).then(z)}},Gt),vn(e,{expectedProcessStartIdentity:d,forceMs:gr,taskkillMs:gr}).then(async R=>z(R.status==="unknown"?await P():void 0),async R=>z(await P(R)))},"requestStop"),k=s((y,A)=>{l+=A.byteLength,l>t?h(new Error(`Sandboxed command output exceeded ${t} bytes.`)):y.push(A)},"append");e.stdout?.on("data",y=>{k(a,y)}),e.stderr?.on("data",y=>{k(c,y)});let b=setTimeout(()=>{h(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),v=s(()=>{let y=n?.reason;h(y instanceof Error?y:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",v,{once:!0}),n?.aborted&&v();try{let y=new Promise((E,L)=>{e.once("error",L),e.once("close",P=>E(P??1))}),A=await Promise.race([y,w.then(()=>1)]);if(u!==void 0)throw await f,u;return{exitCode:A,stdout:Buffer.concat(a).toString("utf8"),stderr:Buffer.concat(c).toString("utf8")}}finally{clearTimeout(b),p!==void 0&&clearTimeout(p),n?.removeEventListener("abort",v)}}s(Jt,"collectProcess");async function jr(e,n,r=Kn,t=qn){let o=process.platform==="win32"?await hn():te.tmpdir(),a=i.join(o,`kodax-asrt-${process.pid}-${H()}.json`),c=process.platform==="win32"?nr(e.config):{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,a]}},d={...e,bootstrapCommand:e.bootstrapCommand??gn(),config:c};await be(a,JSON.stringify(d),{mode:384});let l,u,g;try{if(process.platform==="win32"){await rr(),g=await xn();let h=await tr(!0);if(h.length===1)throw h[0];if(h.length>1)throw new AggregateError(h,"Cached workspace sandbox reset was not confirmed before standalone execution.")}let f=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",a]:["--input-type=module","-e",Cr,Rr,a],p=Te({args:f,env:Ee(),isElectron:process.versions.electron!==void 0});u=await Lr();let w=hr(process.execPath,p.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:p.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0,detached:process.platform!=="win32"});return bn(w),await Jt(w,n,r,t,u)}catch(f){throw l=f,f}finally{let f=[];try{await G(a,{force:!0})}catch(p){f.push(p)}try{await In(u)}catch(p){f.push(p)}if(g!==void 0)try{await g()}catch(p){f.push(p)}if(f.length>0)throw l!==void 0&&f.unshift(l),f.length===1?f[0]:new AggregateError(f,"Sandbox broker cleanup was not confirmed.")}}s(jr,"runBrokerResult");async function Ut(e,n){let r=await jr(e,n);if(r.exitCode!==0){let t=r.stderr.trim()||r.stdout.trim();throw new Error(`Sandboxed Skill script failed (${r.exitCode}): ${t}`)}return r.stdout}s(Ut,"runBroker");async function Vt(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script input")),o=await Fe(t);if(!_(r,o)||Br(i.relative(r,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await nn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}s(Vt,"workspaceSource");async function Ht(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script output target"));if(!_(i.resolve(e),t)||Br(i.relative(i.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await K(i.dirname(t),{recursive:!0}),!_(r,await Fe(i.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await nn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}s(Ht,"workspaceTarget");async function zt(e,n,r,t){if(r.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of r.inputs){let a=await Vt(e,o.path),c=re(o.as??i.basename(a),"Skill script staged input"),d=i.resolve(n,"inputs",...c.split("/"));if(!_(i.join(n,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await K(i.dirname(d),{recursive:!0,mode:448}),await kr(a,d)}}s(zt,"stageInputFiles");async function Yt(e,n,r,t,o){if(r.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let c of r.outputs){let d=re(c.path,"Skill script staged output"),l=i.resolve(n,"outputs",...d.split("/")),u=await Fe(l);if(!_(i.join(n,"outputs"),u)||(await tt(l)).isSymbolicLink()||!(await nn(l)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let g=await Ht(e,c.target);if(o!==void 0&&Mr(e,!0)+(await nn(l)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await kr(l,g,rt.COPYFILE_EXCL),a.push(i.relative(e,g))}return a}s(Yt,"promoteOutputs");function Mr(e,n=!1){let r=0;for(let t of jn(e,{withFileTypes:!0})){if(n&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=i.join(e,t.name);t.isDirectory()?r+=Mr(o):t.isFile()&&(r+=fn(o).size)}return r}s(Mr,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let n=ke();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:[...new Set([...e.filesystem.allowRead,n.directory])],denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}s(Zn,"withPreparedWindowsRunner");function Zt(e,n,r,t){let o=te.homedir(),a=process.platform==="win32"?an():[o],c=s(d=>i.isAbsolute(d)?process.platform==="win32"?[d,i.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:a,allowRead:[e,n,...new Set([...c(process.execPath),...c(t)])],allowWrite:[e],denyWrite:a}})}s(Zt,"sandboxConfig");function Qt(){let e=[te.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&i.isAbsolute(n)).map(n=>i.resolve(n)))]}s(Qt,"canonicalTempDirectories");function qr(e){return[i.join(e,".git","config"),i.join(e,".git","hooks")].filter(r=>{try{return fn(r),!0}catch{return!1}})}s(qr,"existingWorkspaceDenyWrites");function Qn(e,n,r){let t=yt.map(a=>i.resolve(e,a)).filter(a=>i.relative(a,n)!==""),o=process.platform==="win32"?[i.resolve(n),mn()]:[i.resolve(r),...St.map(a=>i.resolve(n,a))];return[...new Set([...o,...t])]}s(Qn,"workspaceShellSensitiveReadDenies");function er(e){let n=[...new Set(e.map(t=>i.resolve(t)))].filter(t=>fn(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>_(o,t))||r.push(t);return r}s(er,"existingMinimalWindowsAclGuardRoots");function Kr(e){return i.resolve(e).toLowerCase()}s(Kr,"windowsAclGuardKey");function Ln(e,n){let r=Kr(e),t=n==="read"?Wn:new Set([...Wn,...Pr]);for(let o of t)if(r===o||r.startsWith(o.endsWith(i.sep)?o:`${o}${i.sep}`))return!0;return!1}s(Ln,"windowsAclGuardCovers");function an(){let e=i.resolve(te.homedir()),n=i.resolve(X());return er(Qn(e,n,i.join(n,"sandbox-runtime")))}s(an,"windowsPersistentAclGuardRoots");function Xr(e,n,r,t,o){let a=er(e);if(a.length===0)return[];let c=JSON.stringify({sid:n,tokenSids:[n,r,"S-1-1-0","S-1-5-11","S-1-5-32-545"].filter(g=>g!==void 0),install:t,paths:a.map(g=>({path:g,directory:fn(g).isDirectory(),mode:o}))}),d=Gr(),l=Xe(d,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(ht,"utf16le").toString("base64")],{input:c,encoding:"utf8",timeout:t&&o==="read"?15*6e4:t?15e3:5e3,windowsHide:!0});if(l.error||l.status!==0){let g=(l.error?.message||l.stderr||l.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${g}`)}let u;try{let g=JSON.parse(l.stdout.trim());u=Array.isArray(g.missing)?g.missing.filter(f=>typeof f=="string"):[]}catch(g){throw new Error(`Windows sandbox ACL guard returned invalid output: ${de(g)}`)}if(u.length===0){let g=o==="read"?Wn:Pr;for(let f of a)g.add(Kr(f))}return u}s(Xr,"runWindowsAclGuard");function Gr(){let e=process.env.ProgramFiles??"C:\\Program Files",n=i.join(e,"PowerShell","7","pwsh.exe");return br(n)?n:i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}s(Gr,"windowsAclPowerShellExecutable");function Dn(e,n){if(process.platform!=="win32"||e.length===0)return;let r=e.filter(c=>!Ln(c,n));if(r.length===0)return;let t=ke(),o=Mn({srtWin:t.srtWin});if(!o.sid)throw new Error("Windows sandbox account SID is unavailable for ACL guards.");if(Xr(r,o.sid,o.groupSid,!0,n).length>0)throw new Error("Windows sandbox ACL guards were not installed completely.")}s(Dn,"installWindowsAclGuards");function nr(e){return process.platform!=="win32"?e:{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead.filter(n=>!Ln(n,"read")),denyWrite:e.filesystem.denyWrite?.filter(n=>!Ln(n,"write"))}}}s(nr,"withoutWindowsAsrtDenyPropagation");function eo(e,n){let r;try{r=ce.native(n)}catch{return[]}let t=[];for(let o of e){let a;try{a=ce.native(o)}catch{continue}if(!_(a,r))t.push(o);else if(a!==r){let c=i.relative(a,r).split(i.sep),d=a;try{for(let l of c){for(let u of jn(d,{withFileTypes:!0}))u.name!==l&&t.push(i.join(d,u.name));d=i.join(d,l)}}catch{}}}return process.platform!=="win32"&&t.push(n),[...new Set(t)]}s(eo,"workspaceShellWriteRoots");function no(e,n){let r=process.platform==="win32"?n:i.resolve(e);return i.join(te.tmpdir(),"kodax-sandbox",un("sha256").update(r).digest("hex").slice(0,16))}s(no,"workspaceShellTempRoot");function ro(e,n){return i.join(no(e,n),`${process.pid}-${H()}`)}s(ro,"createWorkspaceShellTempDirectory");async function Pn(e){await G(e,{recursive:!0,force:!0}),await st(i.dirname(e)).catch(n=>{if(n.code!=="ENOENT"&&n.code!=="ENOTEMPTY")throw n})}s(Pn,"removeWorkspaceShellTempDirectory");function to(e){return process.platform==="win32"?e===void 0?[]:[i.dirname(e)]:Qt()}s(to,"workspaceShellTempWriteRoots");function oo(e,n,r){try{let t=ce.native(n),o=i.resolve(n),a=i.resolve(e);if(!_(o,a)||a===o)return;for(;a!==o;)try{let c=ce.native(a);if(c===t||!_(t,c))return;let d=i.relative(t,c).split(i.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||r&&Gn.some(l=>l===d)?void 0:c}catch(c){if(!r||c.code!=="ENOENT")return;try{vr(a);return}catch(l){if(l.code!=="ENOENT")return}let d=i.dirname(a);if(d===a)return;a=d}return}catch{return}}s(oo,"windowsAgentHomeAccessRoot");function Jr(e,n){if(!n)return{read:[],write:[]};let r=s((t,o)=>[...new Set(t.flatMap(a=>{let c=oo(a,e,o);return c?[c]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}s(Jr,"windowsAgentHomeAccessRoots");function Ke(e){return e??(process.platform==="win32"?process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}s(Ke,"workspaceShellExecutable");function so(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}s(so,"shellEnvironmentValue");function io(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:i.join(n,"Programs"),n,process.env.APPDATA,i.join(e,"AppData","Local","Programs"),i.join(e,"AppData","Local"),i.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[i.resolve(t)]))].filter(t=>_(e,t)).sort((t,o)=>o.length-t.length)}s(io,"workspaceShellUserDataBoundaries");function ao(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!vr(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&_(d,n));if(t===void 0)return[];let[o]=i.relative(t,n).split(i.sep);if(!o)return[];let a=i.join(t,o),c=[];for(let d=i.dirname(n);d.toLowerCase()!==a.toLowerCase()&&_(a,d);d=i.dirname(d))c.push(d);return c}s(ao,"workspaceShellLinkedTargetAncestors");function dn(e,n){let r=i.resolve(te.homedir()),t=i.resolve(X()),o=Qn(r,t,i.join(t,"sandbox-runtime")),a=io(r),c=new Map,d=s(f=>{let p=i.resolve(f);if(!(p===i.parse(p).root||p.toLowerCase()===r.toLowerCase()||_(t,p)||_(p,t)||o.some(w=>_(w,p))))return p},"safe"),l=s((f,p)=>{let w=d(f);if(w===void 0)return;let h;try{h=ce(w)}catch{return}if(d(h)===void 0)return;let k=p?[w,h].filter(b=>_(r,b)):[w,h];for(let b of k)c.set(process.platform==="win32"?b.toLowerCase():b,b);if(p&&k.includes(h))for(let b of ao(w,h,a)){let v=d(b);v!==void 0&&_(r,v)&&c.set(v.toLowerCase(),v)}},"remember");for(let f of(so(e,"PATH")??"").split(i.delimiter)){let p=f.trim().replace(/^"(.*)"$/,"$1");p&&i.isAbsolute(p)&&l(p,!0)}let u=Ke(n);i.isAbsolute(u)&&l(i.dirname(u),!0);let g=gn();if(i.isAbsolute(g)){let f=d(g);f!==void 0&&c.set(process.platform==="win32"?f.toLowerCase():f,f),l(i.dirname(g),!1)}return[...c.values()].sort((f,p)=>f.toLowerCase().localeCompare(p.toLowerCase()))}s(dn,"workspaceShellRuntimeReadScopes");function Ur(e,n,r,t,o=dn(process.env,Ke())){let a=i.resolve(X()),c=i.join(a,"sandbox-runtime"),d=i.resolve(te.homedir()),l=Qn(d,a,c),u=process.platform==="win32"?er(l):l.filter(p=>p!==a),g=process.platform==="win32"?Jr(a,r):{read:[],write:[]},f=eo([e,...to(n),...g.write,...t?.write??[]],a);return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:[...new Set([...o,...g.read,...t?.read??[]])],allowWrite:f,denyWrite:[c,...Gn.map(p=>i.join(a,p)),...qr(e)]}})}s(Ur,"workspaceShellSandboxConfig");function Vr(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform!=="win32"?a:Hr(a)}s(Vr,"workspaceShellSessionSandboxConfig");function Hr(e){let n=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(r=>n.some(t=>_(t,r)))}}}s(Hr,"boundedWindowsWorkspaceDenies");function co(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform==="win32"?Hr(a):a}s(co,"workspaceShellCommandSandboxConfig");function Ye(e,n){return[...new Set((e??[]).map(r=>i.resolve(n,r)))]}s(Ye,"normalizedSandboxPaths");function lo(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(lo,"sdkSandboxEndpoints");async function Ko(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=i.resolve(e.cwd),r=e.network??{mode:"deny"},t=lo(r),o=await Z();if(!o.ready){if(!pn(o))return{status:"unavailable",sandboxed:!1,doctor:o};if(await sn(),o.setupRequired)return{status:"unavailable",sandboxed:!1,doctor:o}}let a=Fr(e.inheritEnvironment===!0?process.env:Ee(),e.env??{}),c={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:Ye(e.filesystem.allowRead,n),allowWrite:Ye(e.filesystem.allowWrite,n),denyRead:Ye(e.filesystem.denyRead,n),denyWrite:Ye(e.filesystem.denyWrite,n)}}),command:e.command,args:e.args??[],cwd:n,env:a,endpoints:t,allowAllNetwork:r.mode==="allow"},d=await jr(c,e.signal,e.timeoutMs??Kn,e.maxOutputBytes??qn);return{status:"completed",sandboxed:!0,exitCode:d.exitCode,stdout:d.stdout,stderr:d.stderr}}s(Ko,"runKodaXSandboxed");var uo=5*6e4,fo=3e4,po=3e4,Ze=1500,wo=13e4,mo=8,I=new Map,De=new Set,ye=new Set,Se=new Set,Ie,Bn,cn=!1;function ue(e){let n=e instanceof Error?e:new Error(String(e));if(process.platform!=="win32"){Bn??=n;return}Ie??=n}s(ue,"recordWindowsSandboxAclFailure");function yn(){if(process.platform!=="win32"&&Bn!==void 0)throw new Error("Sandbox process cleanup was not confirmed; stop the retained process tree before more sandboxed commands.",{cause:Bn});if(process.platform==="win32"&&Ie!==void 0)throw Ie instanceof Q?Ie:new Error("Windows sandbox ACL cleanup was not confirmed; stop the retained owner or restart Windows before more sandboxed commands.",{cause:Ie})}s(yn,"assertWindowsSandboxAclProcessSafe");function Sn(e){yn(),process.platform==="win32"&&zn(e)}s(Sn,"assertWindowsSandboxAclSafe");function zr(e){ye.add(e),e.then(()=>ye.delete(e),()=>ye.delete(e))}s(zr,"trackWorkspaceSessionReset");function go(e){Se.add(e),e.then(()=>Se.delete(e),n=>{Se.delete(e),T({source:"sandbox:workspace-session",level:"error",message:"Workspace sandbox durable ACL poison transition failed.",detail:n})})}s(go,"trackWindowsSandboxAclTransition");async function yo(){for(;Se.size>0;)await Promise.allSettled([...Se])}s(yo,"waitForWindowsSandboxAclTransitions");async function rr(){for(;ye.size>0;)await Promise.allSettled([...ye]);await yo(),yn()}s(rr,"waitForWorkspaceSessionResets");async function tr(e=!1){let n=[...I.values()];I.clear();let r=[];for(let t of n)try{await(await t).close(e)}catch(o){r.push(o),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox shutdown could not confirm ACL reset.",detail:o})}return r}s(tr,"closeCachedWorkspaceSessions");var Yr=s(()=>{cn=!1,tr()},"closeWorkspaceSessionsBeforeExit");function So(){cn||(cn=!0,process.once("beforeExit",Yr))}s(So,"registerWorkspaceSessionBeforeExit");async function Xo(){for(process.removeListener("beforeExit",Yr),cn=!1;De.size>0;)await Promise.allSettled([...De]);let e=await tr();try{await rr()}catch(n){e.push(n)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Workspace sandbox shutdown was not confirmed.")}s(Xo,"shutdownAsrtWorkspaceSessions");function Zr(){let e=new Error("ASRT workspace session preparation timed out.");return e.name="TimeoutError",e}s(Zr,"workspacePreparationTimeoutError");function ln(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Zr()}s(ln,"throwIfWorkspacePreparationStopped");function Fn(e,n,r){return ln(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let a=!1,c,d=s(u=>{a||(a=!0,c&&clearTimeout(c),n?.removeEventListener("abort",l),u())},"finish"),l=s(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(c=setTimeout(()=>{d(()=>o(Zr()))},Math.max(0,r-Date.now())),c.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}s(Fn,"waitForWorkspacePreparation");async function hn(){let e=i.join(X(),"sandbox-runtime");return await K(e,{recursive:!0,mode:448}),e}s(hn,"sandboxControlDirectory");function ho(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-workspace-session",e];if(import.meta.url.endsWith(".ts"))return["--import",Ar(Xn.resolve("tsx")).href,ur(new URL("./sandbox-workspace-session-entry.ts",import.meta.url)),e];let n=i.dirname(ur(import.meta.url)),r=i.basename(n)==="chunks"?i.dirname(n):n;return[i.join(r,"sandbox-workspace-session.js"),e]}s(ho,"workspaceSessionEntryArgs");function Qe(e,n){let r=n?"ref":"unref";e[r]();for(let t of e.stdio){if(!t)continue;t[r]?.()}}s(Qe,"setWorkspaceSessionReferenced");async function Qr(e,n,r){if(e)return n();let t=await xn(r);try{return await n()}finally{await t()}}s(Qr,"withExclusiveFileSystemEffectFence");async function bo(e,n,r,t,o,a,c){let d=process.platform==="win32"?ro(e,o):void 0;d!==void 0&&await K(d,{recursive:!0,mode:448});let l=await hn();process.platform==="win32"&&Dn(qr(e),"write");let u=i.join(l,`workspace-${process.pid}-${H()}.json`),g=nr(Vr(e,d,n,r,t));await be(u,JSON.stringify({config:g}),{mode:384});let f=Te({args:ho(u),env:Ee(),isElectron:process.versions.electron!==void 0}),p;try{p=await Lr(o)}catch(S){let m=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]),x=[S,...m.flatMap(C=>C.status==="rejected"?[C.reason]:[])];throw x.length===1?S:new AggregateError(x,"Workspace sandbox owner admission and pre-launch cleanup both failed.")}let w;try{w=hr(process.execPath,f.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:f.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0})}catch(S){let m=[S];try{await In(p)}catch(C){await ze(p,C),m.push(C)}let x=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]);throw m.push(...x.flatMap(C=>C.status==="rejected"?[C.reason]:[])),m.length===1?S:new AggregateError(m,"Workspace sandbox owner launch cleanup failed.")}bn(w);let h=w.pid===void 0?void 0:_e(w.pid),k=w.stdio[3];if(!k)throw new Error("ASRT workspace session control pipe was not created.");let b=dt.createInterface({input:k}),v=new Map,y="",A=!1,E=!1,L=!1,P=!1,z=0,R=0,F,j,oe,fe=new Promise(S=>{w.once("exit",(m,x)=>S({code:m,signal:x}))}),pe=fe.then(async()=>{if(d!==void 0)try{await Pn(d)}catch(S){T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox temp cleanup failed.",detail:S})}}),Je=s(async(S=!1)=>{let m=await fe;await pe;let x=[];if(!S&&(m.code!==0||m.signal!==null)){let C=m.signal===null?`code ${m.code??"unknown"}`:`signal ${m.signal}`;x.push(new Error(`ASRT workspace session ACL reset was not confirmed (${C}): ${y.trim()||"no diagnostics"}`))}try{await In(p)}catch(C){x.push(C)}if(x.length===1)throw x[0];if(x.length>1)throw new AggregateError(x,"Workspace sandbox cleanup was not confirmed.")},"confirmCleanReset"),D,J,B=new Promise((S,m)=>{D=S,J=m}),Re=s(()=>{P||(P=!0,c())},"evict"),Ue=s(async()=>{if(!E||!L||R!==0||w.exitCode!==null||w.signalCode!==null||!w.stdin.writable)return!1;try{w.stdin.end()}catch{return!1}let S;try{let m=await Promise.race([fe,new Promise(x=>{S=setTimeout(x,process.platform==="win32"?wo:Ze)})]);return m!==void 0&&m.code===0&&m.signal===null}finally{S!==void 0&&clearTimeout(S)}},"waitForOrderlyClose"),N,Pe=!1,or=!1,Y=s(()=>N||(or=!0,N=(async()=>{try{if(await Ue())return;if((await vn(w,{gracefulStdinEnd:!1,gracefulMs:Ze,forceMs:Ze,taskkillMs:Ze})).status==="unknown")throw await _r(w.pid,h,Or("ASRT workspace session"),p);Pe=!0}finally{b.close(),k.destroy(),w.stdin.destroy()}})().finally(Re),N),"terminate"),ee=s(S=>{if(!A){A=!0,J(S);for(let m of v.values())m.reject(S);v.clear()}},"fail");w.stderr.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),w.stdout.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),b.on("line",S=>{let m;try{m=JSON.parse(S)}catch{ee(new Error("ASRT workspace session returned malformed control data.")),Y();return}if(m.type==="ready"){m.ok?(L=!0,D()):J(new Error(m.error??"ASRT workspace session failed."));return}if(m.type!=="result"||!m.id){ee(new Error("ASRT workspace session returned an invalid control response.")),Y();return}let x=v.get(m.id);x&&(v.delete(m.id),x.resolve(m))}),w.once("error",S=>{ee(S),Y()}),b.once("close",()=>{E||A||(ee(new Error("ASRT workspace session control pipe closed unexpectedly.")),Y())}),w.once("exit",(S,m)=>{j&&clearTimeout(j);let x=new Error(`ASRT workspace session exited ${m??S??1}: ${y.trim()||"no diagnostics"}`);!or&&(S!==0||m!==null||!E)&&go(ze(p,x)),ee(x),Re()});let nt=setTimeout(()=>{ee(new Error("ASRT workspace session initialization timed out.")),Y()},fo);try{await B.finally(()=>clearTimeout(nt))}catch(S){E=!0;let m=[S],x=!1;try{await Y(),x=!0}catch(C){m.push(C)}if(x)try{await Je(Pe)}catch(C){await ze(p,C),m.push(C)}throw await G(u,{force:!0}),m.length===1?S:new AggregateError(m,`Workspace sandbox startup cleanup failed: ${de(m.at(-1))}`)}let Ve=s(async(S,m)=>{if(A||E&&S==="wrap")throw new Error("ASRT workspace session is unavailable.");let x=`workspace_${++z}`,C=new Promise((M,we)=>{v.set(x,{resolve:M,reject:we})}),ne=setTimeout(()=>{ee(new Error(`ASRT workspace session ${S} request timed out.`)),Y()},po);ne.unref();try{await new Promise((M,we)=>{w.stdin.write(`${JSON.stringify({id:x,type:S,request:m})}
|
|
518
|
-
`,$e=>$e?we($e):M())})}catch(M){throw v.delete(x),clearTimeout(ne),ee(M instanceof Error?M:new Error(String(M))),Y(),M}return C.finally(()=>clearTimeout(ne))},"request"),sr=s(()=>{if(j&&clearTimeout(j),!(R>0||E||A)){if(process.platform==="win32"){Qe(w,!1);return}j=setTimeout(()=>{Ce.close().catch(S=>{T({source:"sandbox:workspace-session",level:"warn",message:"Idle workspace sandbox session could not confirm ACL reset.",detail:S})})},uo),j.unref(),Qe(w,!1)}},"scheduleIdleClose"),Ce={policyKey:o,...d===void 0?{}:{tempDirectory:d},async acquire(S,m,x){if(Sn(o),ln(m,x),A||E)throw new Error("ASRT workspace session is unavailable.");j&&clearTimeout(j),Qe(w,!0),R+=1;let C=!1,ne=s(()=>{if(C)return!1;C=!0,R-=1;let U=R===0;return R===0&&(F?.(),F=void 0),sr(),U},"finalize"),M=s(async()=>{ne()&&process.platform==="win32"&&await Ce.close(a)},"finalizeAndCloseIfIdle"),we=s((U,$)=>{T({source:"sandbox:workspace-session",level:"warn",message:U,detail:$}),ne()&&Ce.close(a).catch(V=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace sandbox cleanup could not retire its session.",detail:V})})},"retireAfterCleanupFailure"),$e=Ve("wrap",S),We;try{We=await Fn($e,m,x)}catch(U){throw $e.then(async $=>{if(!$.ok||!$.invocation)return;let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}).then(M,$=>we("Late workspace sandbox preparation cleanup failed.",$)),U}try{if(!We.ok||!We.invocation){ne();let $=new Error(We.error??"ASRT workspace wrapping failed.");try{await Ce.close(a)}catch(W){let V=W instanceof Error?W.message:String(W);throw new Error(`${$.message} Workspace session reset failed: ${V}`,{cause:$})}throw $}try{ln(m,x)}catch($){try{let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}catch(W){we("Cancelled workspace sandbox preparation cleanup failed.",W)}throw await M(),$}let U=!1;return{invocation:We.invocation,async release(){if(U)return;U=!0;let $;try{let V=await Ve("cleanup");if(!V.ok)throw new Error(V.error??"ASRT command cleanup failed.")}catch(V){$=V}let W;try{await M()}catch(V){W=V}if($!==void 0&&W!==void 0)throw new AggregateError([$,W],"Workspace sandbox command cleanup and policy-group reset both failed.");if($!==void 0)throw $;if(W!==void 0)throw W}}}catch(U){throw ne(),U}},async close(S=!1){return oe||(E=!0,Re(),oe=(async()=>{j&&clearTimeout(j),Qe(w,!0),R>0&&await new Promise(m=>{F=m}),await Qr(a||S,async()=>{await Y(),await Je()},o)})().catch(async m=>{throw await ze(p,m),m}),zr(oe),oe)}};return sr(),Ce}s(bo,"startWorkspaceSessionClientWithFence");function yr(e,n,r,t,o,a,c){return Qr(a,async()=>{if(et(e,n,r,t)!==o)throw new Error("Sandbox policy paths changed before ACL initialization.");return Sn(o),await sn(o),bo(e,n,r,t,o,a,c)},o)}s(yr,"startWorkspaceSessionClient");function Cn(e){return[...new Set(e.map(n=>{let r=i.resolve(n);return process.platform==="win32"?r.toLowerCase():r}))].sort()}s(Cn,"normalizedWorkspacePolicyPaths");function Le(e){let n=s(t=>{let o=i.resolve(t);return process.platform==="win32"?o.toLowerCase():o},"normalize"),r=null;try{r=n(ce.native(e))}catch{}return{lexical:n(e),canonical:r}}s(Le,"workspacePolicyPathIdentity");function en(e){let n=new Map;for(let r of e){let t=Le(r);n.set(`${t.lexical}\0${t.canonical??""}`,t)}return[...n.values()].sort((r,t)=>r.lexical.localeCompare(t.lexical)||(r.canonical??"").localeCompare(t.canonical??""))}s(en,"workspacePolicyPathIdentities");function et(e,n,r,t){let o=Vr(e,void 0,n,r,t);return un("sha256").update(JSON.stringify({workspace:Le(e),agentHome:Le(X()),tempBase:Le(te.tmpdir()),filesystem:{allowRead:en(o.filesystem.allowRead),allowWrite:en(o.filesystem.allowWrite),denyRead:en(o.filesystem.denyRead),denyWrite:en(o.filesystem.denyWrite)},network:o.network,windowsRunner:process.platform==="win32"?{version:ae,architecture:process.arch,path:Le(ke().path)}:null,ephemeral:n?.ephemeral===!0})).digest("hex")}s(et,"workspaceShellPolicyKey");function vo(e){return process.platform!=="win32"?!0:(e?.write??[]).every(n=>{try{return ce.native(n),!0}catch{return!1}})}s(vo,"workspaceShellFilesystemAccessIsRepresentable");async function Sr(e,n,r,t=dn(process.env,Ke()),o=t,a=!1){if(process.platform==="win32"){if(ye.size>0||Se.size>0)return}else await rr();yn();let c=await Z();if(!c.ready&&!pn(c))return;if(process.platform!=="win32"){let v=X();await Promise.all([hn(),...Gn.map(y=>K(i.join(v,y),{recursive:!0,mode:448}))])}let d=et(e,process.platform==="win32"?n:void 0,r,t);if(!c.ready&&(await sn(d),c.setupRequired))return;await sn(d),Sn(d),So();let l=process.platform==="win32"?n:void 0,u=process.platform==="win32"?e.toLowerCase():e,g=Cn,f=g(t),p=JSON.stringify(f)===JSON.stringify(g(o)),w=(r?.read.length??0)>0||(r?.write.length??0)>0,h=l===void 0&&!w&&p?"workspace":un("sha256").update(JSON.stringify({read:[...l?.read??[]].map(v=>v.toLowerCase()).sort(),write:[...l?.write??[]].map(v=>v.toLowerCase()).sort(),additionalRead:Cn(r?.read??[]),additionalWrite:Cn(r?.write??[]),runtimeReadScopes:f})).digest("hex"),k=process.platform==="win32"?d:`${u}\0${h}`;if(process.platform==="win32"&&a){let v=l?.ephemeral===!0?void 0:k;for(let[y,A]of[...I])if(y!==v){I.delete(y);try{await(await A).close(!0)}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring the previous Windows workspace sandbox scope failed.",detail:E}),E}}}if(l?.ephemeral===!0)return yr(e,l,r,t,d,a,()=>{});let b=I.get(k);if(b&&(I.delete(k),I.set(k,b)),!b){if(process.platform!=="win32"&&h!=="workspace"){let v=[...I.keys()].filter(y=>!y.endsWith("\0workspace"));if(v.length>=mo){let y=v[0],A=I.get(y);if(I.delete(y),A)try{await(await A).close()}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring an old scoped workspace sandbox failed.",detail:E}),E}}}b=yr(e,l,r,t,d,a,()=>{I.get(k)===b&&I.delete(k)}),I.set(k,b),b.catch(()=>{I.get(k)===b&&I.delete(k)})}return b}s(Sr,"getWorkspaceSession");function
|
|
519
|
-
`},F=await y.acquire(R,o.signal,o.deadlineAt);k=F;let j={...R,wrappedInvocation:F.invocation},oe=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",L]:["--input-type=module","-e",Cr,Rr,L],fe=Te({args:oe,env:Ee(),isElectron:process.versions.electron!==void 0});await be(L,JSON.stringify(j),{mode:384});let pe,Je=s(async()=>{g||(pe===void 0&&(pe=b?.close(!1)??Promise.resolve(),pe.catch(D=>{T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox session retirement failed.",detail:D})})),process.platform==="win32"&&await pe)},"retireWorkspaceSession");return{executable:process.execPath,args:fe.args,env:fe.env,fileSystemEffectPolicyKey:A,authorizeStart:s(()=>Sn(A),"authorizeStart"),async cleanup(D){let J,B=[];try{J=await he(P,"utf8").then(Dt).catch(N=>{if(N.code!=="ENOENT")throw N})}catch(N){B.push(N)}let Re=await Promise.allSettled([G(L,{force:!0}),G(P,{force:!0})]);for(let N of Re)N.status==="rejected"&&B.push(N.reason);try{await F.release()}catch(N){B.push(N)}let Ue=D?.execution==="started_or_unknown"&&J===void 0;if(Ue&&B.push(new Error("Required OS sandbox execution could not be attested; the workspace session must be retired and the command was not retried")),B.length>0){let N=Ue?"Required OS sandbox execution could not be attested and request cleanup failed; the workspace session must be retired and the command was not retried.":"Required OS sandbox request cleanup failed; the workspace session must be retired.",Pe=new AggregateError(B,N);throw T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox command cleanup failed.",detail:Pe}),Pe}return J},retire:Je}}catch(v){let y=[v],A=o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt,E=!1;if(k)try{await k.release()}catch(P){E=!0,y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox lease release failed.",detail:P})}if(A&&process.platform==="win32"&&b&&k===void 0)throw b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Cancelled workspace preparation cleanup could not retire its session.",detail:P})}),v;if(process.platform==="win32"&&b)try{await b.close()}catch(P){y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})}else E&&b&&b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})});if(A)throw v;let L=y.length===1?v:new AggregateError(y,`Workspace sandbox preparation failed and cleanup was incomplete: ${y.map(de).join(" | ")}`);T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox preparation failed; using normal permission fallback.",detail:L}),o.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}}}}s(
|
|
517
|
+
`,n=Xe(Gr(),["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(e,"utf16le").toString("base64")],{encoding:"utf8",timeout:5e3,windowsHide:!0}),r=n.status===0?n.stdout.trim():"",t=/^\d+$/.test(r)?`windows-boot-${r}`:void 0;return En=t??null,t}s(Ae,"readWindowsBootIdentity");function On(){return`After stopping every KodaX and KodaX Space process, run "${je?.path??"srt-win.exe"}" acl recover --force --json, then delete "${wn()}" and "${Jn()}".`}s(On,"windowsSandboxAclManualRecoveryInstruction");function Wr(e,n=Ae()){if(e.find(({windowsBootIdentity:a})=>a===void 0||n===void 0)!==void 0)return new Q("An unconfirmed Windows sandbox process tree has no verifiable Windows boot identity. "+On());let t=e[0],o=t?.pid===void 0?"":` (last root PID ${t.pid})`;return new Q(`An unconfirmed Windows sandbox process tree${o} from the same Windows boot may still have live descendants; restart Windows before retrying. `+On())}s(Wr,"persistentWindowsSandboxAclPoisonError");function Nn(e,n,r="unconfirmed",t){if(process.platform!=="win32")return;let o=Ae(),a=_e(process.pid),c=H(),d=`${r==="unconfirmed"?"unconfirmed-":""}owner-${c}.json`,l=JSON.stringify({version:1,state:r,...t===void 0?{}:{policyKey:t},holderPid:process.pid,...a===void 0?{}:{holderProcessStartIdentity:a},...e===void 0?{}:{pid:e},...n===void 0?{}:{processStartIdentity:n},...o===void 0?{}:{windowsBootIdentity:o}}),u=s((f,p)=>{cr(f,{recursive:!0,mode:448});let w=i.join(f,d);if(r==="unconfirmed")return lr(w,l,{flag:"wx",mode:384}),w;cr(p,{recursive:!0,mode:448});let h=i.join(p,`owner-${c}.tmp`);return lr(h,l,{flag:"wx",mode:384}),$n(h,w),w},"persist"),g=u(wn(),Pt());try{let f=u(Jn(),Ct());q.set(g,f)}catch(f){if(r==="active")try{Be(g,{force:!0})}catch(p){throw new AggregateError([f,p],"Windows sandbox owner compatibility marker and primary rollback both failed.")}throw f}return g}s(Nn,"persistWindowsSandboxAclPoisonOwner");function $t(e){let n=Nn(void 0,void 0,"active",e);if(n!==void 0){O.add(n);let r=q.get(n);r!==void 0&&O.add(r)}return n}s($t,"createWindowsSandboxAclOwnerMarker");function Ne(e){if(e===void 0)return;let n=q.get(e);try{n!==void 0&&Be(n,{force:!0}),Be(e,{force:!0}),O.delete(e),n!==void 0&&O.delete(n),q.delete(e)}catch(r){throw O.delete(e),n!==void 0&&O.delete(n),ue(r),new Error("Windows sandbox owner poison marker could not be cleared.",{cause:r})}}s(Ne,"confirmWindowsSandboxAclOwnerStopped");async function ze(e,n){ue(n);let r=await Un(e,void 0,void 0,n);if(ue(r),r!==n)throw r}s(ze,"retainWindowsSandboxAclOwnerPoison");function Tr(e,n,r){if(e===void 0)return Nn(n,r,"unconfirmed");let t=q.get(e),o=i.join(i.dirname(e),`unconfirmed-${i.basename(e)}`),a=t===void 0?void 0:i.join(i.dirname(t),`unconfirmed-${i.basename(t)}`);if(br(o))return O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o;try{return $n(e,o),t!==void 0&&a!==void 0&&$n(t,a),O.delete(e),t!==void 0&&O.delete(t),a!==void 0&&q.set(o,a),q.delete(e),o}catch(c){try{let d=Nn(n,r,"unconfirmed");return O.delete(e),t!==void 0&&O.delete(t),q.delete(e),d}catch(d){throw O.delete(e),t!==void 0&&O.delete(t),q.delete(e),new AggregateError([c,d],"Windows sandbox ACL poison write-ahead failed.")}}}s(Tr,"writeAheadWindowsSandboxAclOwnerPoison");async function Un(e,n,r,t){if(process.platform!=="win32")return t;let o;try{return o=Tr(e,n,r),await se(xe(),async()=>{},ve),t}catch(a){return new AggregateError([t,a],o===void 0?"Windows sandbox owner termination and durable ACL poison recording both failed.":"Windows sandbox owner termination was not confirmed and ACL poison serialization failed.")}}s(Un,"transitionWindowsSandboxAclOwnerToPoison");function Wt(e,n){return O.has(e)}s(Wt,"isVerifiedActiveWindowsSandboxAclOwner");function Vn(e){if(e.state!=="active"||e.holderPid===void 0||e.holderProcessStartIdentity===void 0)return"stale";let n=_e(e.holderPid);if(n!==void 0)return n===e.holderProcessStartIdentity?"live":"stale";try{return process.kill(e.holderPid,0),"unknown"}catch(r){return Me(r,"ESRCH")?"stale":"unknown"}}s(Vn,"windowsSandboxAclOwnerLiveness");function Hn(e,n,r){return n.state!=="active"?!1:O.has(e)?r===void 0||n.policyKey===r:r!==void 0&&n.policyKey===r&&Vn(n)==="live"}s(Hn,"isCompatibleWindowsSandboxAclOwner");function zn(e){let n=Ge().filter(({file:r,owner:t})=>!Hn(r,t,e));if(n.length!==0)throw Wr(n.map(({owner:r})=>r))}s(zn,"assertNoPersistentWindowsSandboxAclPoison");async function _r(e,n,r,t){let o=new Error(r);if(process.platform==="win32"){let a=await Un(t,e,n,o);return ue(a),a instanceof Error?a:o}return ue(o),o}s(_r,"recordUnconfirmedWindowsSandboxOwner");function Or(e){return process.platform==="win32"?`${e} process-tree termination was not confirmed; restart Windows before retrying.`:`${e} process-tree termination was not confirmed; stop the retained process tree before retrying.`}s(Or,"unconfirmedSandboxProcessTreeMessage");function rn(){let e=ke(),n=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"acl","recover","--json"],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),r=(n.stderr??"").trim();if(n.error)throw new Error(`Windows sandbox ACL recovery failed to start: ${n.error.message}`,{cause:n.error});let t;try{t=JSON.parse((n.stdout??"").trim())}catch(a){throw new Error(`Windows sandbox ACL recovery failed with unparseable output (exit ${String(n.status)}): ${r||"(empty stderr)"}.`,{cause:a})}let o=typeof t=="object"&&t!==null?t:void 0;if(n.status!==0||typeof o?.deadBrokers!="number"||!Number.isSafeInteger(o.deadBrokers)||o.deadBrokers<0||typeof o.acesRevoked!="number"||!Number.isSafeInteger(o.acesRevoked)||o.acesRevoked<0)throw new Error(`Windows sandbox ACL recovery failed (exit ${String(n.status)}${n.signal?`, signal ${n.signal}`:""}): ${r||"(empty stderr)"}.`);Tn=!0}s(rn,"recoverWindowsSandboxAcls");function Tt(e){return e instanceof Error&&e.message.startsWith("learning store lock timed out:")}s(Tt,"isWindowsSandboxAclRecoveryLockTimeout");var tn=class extends Q{static{s(this,"ForeignWindowsSandboxAclOwnerContentionError")}constructor(n){super("Another Windows sandbox owner is active for the shared sandbox account; wait for it to close or stop the other KodaX/KodaX Space process, then retry.",{cause:n}),this.name="ForeignWindowsSandboxAclOwnerContentionError"}},on=class extends Q{static{s(this,"StaleWindowsSandboxAclOwnerContentionError")}constructor(n){super(n.message,{cause:n}),this.name="StaleWindowsSandboxAclOwnerContentionError"}};function Nr(e){!Tt(e)&&!(e instanceof tn)&&!(e instanceof on)&&ue(e)}s(Nr,"recordWindowsSandboxAclAdmissionFailure");function qe(e,n=Ae()){let r=Wr(e.map(({owner:t})=>t),n);return e.every(({owner:t})=>t.state==="active")?e.some(({owner:t})=>Vn(t)==="stale")?new on(r):new tn(r):r}s(qe,"windowsSandboxAclPoisonSnapshotError");function _t(){let e=Ge();if(e.length===0)return;let n=Ae();if(n!==void 0&&e.every(({owner:t})=>t.windowsBootIdentity!==void 0&&t.windowsBootIdentity!==n)){rn();for(let t of e)Be(t.file,{force:!0});zn();return}return e.every(({owner:t})=>Vn(t)!=="stale")?new Q("Windows sandbox setup cannot run while a sandbox owner is active for the shared Windows sandbox account; wait for sandboxed commands to finish and stop other KodaX or KodaX Space processes, then retry."):qe(e,n)}s(_t,"windowsSandboxAclSetupBlockWithLock");function wr(e,n){return{...e,ready:!1,diagnostics:[...e.diagnostics.filter(r=>!r.startsWith(le)),`${le} ${n.message}`]}}s(wr,"withWindowsSandboxAclSetupBlock");function Ir(e){yn();let n=Ge(),r=n.filter(({file:t,owner:o})=>!Hn(t,o,e));if(Tn){if(r.length>0)throw qe(r);return}if(r.length>0){let t=Ae();if(!(t!==void 0&&r.every(({owner:a})=>a.windowsBootIdentity!==void 0&&a.windowsBootIdentity!==t)))throw qe(r,t)}if(n.length>0){Tn=!0;return}rn();for(let t of r)Be(t.file,{force:!0});zn(e)}s(Ir,"ensureWindowsSandboxAclRecoveryWithLock");async function sn(e){if(process.platform==="win32")try{await se(xe(),async()=>Ir(e),ve)}catch(n){throw Nr(n),n}}s(sn,"ensureWindowsSandboxAclRecovery");async function Lr(e){if(process.platform!=="win32")return;let n;try{return await se(xe(),async()=>{try{Ir(e)}catch(r){throw Nr(r),r}return n=$t(e),n},ve)}catch(r){if(n===void 0)throw r;try{Ne(n)}catch(t){throw new AggregateError([r,t],"Windows sandbox owner admission and marker cleanup both failed.")}throw r}}s(Lr,"admitWindowsSandboxAclOwner");async function In(e){if(process.platform!=="win32")return;let n;try{if(e===void 0||!O.has(e))return;if(n=$r(xr(e,"utf8")).policyKey,n!==void 0){await se(xe(),async()=>{let t=q.get(e),o=new Set([e,t].filter(d=>d!==void 0)),a=Ge().filter(({file:d})=>!o.has(d)),c=a.filter(({file:d,owner:l})=>!Hn(d,l,n));if(c.length>0)throw qe(c);if(a.length>0){Ne(e);return}rn(),Ne(e)},ve);return}let r=Tr(e,void 0,void 0);await se(xe(),async()=>{rn(),Ne(r),e!==r&&Ne(e)},ve)}catch(r){let t=n===void 0?r:await Un(e,void 0,void 0,r);throw ue(t),t}}s(In,"confirmWindowsSandboxAclRecovery");function Rn(){ie!==void 0&&(Er({sandboxUserSid:ie.sandboxUserSid,holderPid:process.pid,srtWin:ie.runner.srtWin}),ie=void 0)}s(Rn,"releasePreparedWindowsRunnerGrant");function Ot(e,n){if(!(ie?.runner.path===e.path&&ie.sandboxUserSid===n)){process.removeListener("exit",Rn),Rn();try{ut({read:[e.directory,e.path],write:[],sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(r){try{Er({sandboxUserSid:n,holderPid:process.pid,srtWin:e.srtWin})}catch(t){throw new AggregateError([r,t],"Windows sandbox runner ACL grant failed and its partial grant could not be revoked.")}throw r}ie={runner:e,sandboxUserSid:n},process.once("exit",Rn)}}s(Ot,"retainPreparedWindowsRunnerGrant");async function Nt(){let[e,n]=ct;for(let r=0;r<5;r+=1){let t=at();t.listen(0,"127.0.0.1"),await dr(t,"listening");let o=t.address();if(typeof o=="object"&&o!==null&&(o.port<e||o.port>n))return{server:t,target:`127.0.0.1:${o.port}`};let a=dr(t,"close");t.close(),await a}throw new Error(`[wfp_probe_bind_failed] Could not bind a loopback listener outside the Windows sandbox proxy range [${e},${n}].`)}s(Nt,"bindWindowsWfpProbe");function mr(e){return/0x80070005|access (?:is )?denied|拒绝访问/i.test(e)?"runner_launch_access_denied":/seclogon|secondary logon/i.test(e)?"secondary_logon_unavailable":"wfp_probe_failed"}s(mr,"windowsRunnerFailureCode");function It(e){return Me(e,"ETIMEDOUT")?"wfp_probe_timeout":Me(e,"EACCES","EPERM")?"runner_launch_access_denied":"runner_spawn_failed"}s(It,"windowsRunnerSpawnFailureCode");async function Lt(e){let{server:n,target:r}=await Nt();try{let t=Xe(e.srtWin.exe,[...e.srtWin.prependArgs,"wfp","verify","--target",r],{cwd:e.directory,encoding:"utf8",timeout:3e4,windowsHide:!0}),o=(t.stderr??"").trim();if(t.error)throw new Error(`[${It(t.error)}] Windows sandbox runner failed to start: ${t.error.message}`);let a;try{a=JSON.parse((t.stdout??"").trim())}catch{let c=t.status===null?"wfp_probe_timeout":mr(o);throw new Error(`[${c}] Windows sandbox WFP probe exited ${String(t.status)}${t.signal?` (signal ${t.signal})`:""} with unparseable output; stderr: ${o||"(empty)"}.`)}if(t.status===3)throw new Error(`[wfp_fence_inactive] Direct outbound access to ${String(a.target??r)} succeeded. Run "kodax sandbox setup" to reinstall the Windows network policy.`);if(t.status!==0||a.egress_probe!=="blocked")throw new Error(`[${mr(o)}] Windows sandbox WFP probe to ${String(a.target??r)} was ${String(a.egress_probe)} (exit ${String(t.status)}): ${o||"(empty stderr)"}.`)}finally{n.close()}}s(Lt,"verifyPreparedWindowsWfp");function Dr(e){let n=[];return e.provisioned||n.push("Windows sandbox account does not exist."),e.sid||n.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&n.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||n.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||n.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||n.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||n.push("Windows sandbox account credential is unavailable."),n}s(Dr,"windowsSandboxAccountDiagnostics");function Dt(e){let n=JSON.parse(e);if(typeof n!="object"||n===null)return;let r=n;if(r.version===1&&(r.state==="applied"&&r.policyId==="kodax-workspace-shell-v1"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")||r.state==="fallback"&&r.reason==="backend_failed"&&r.execution==="normal_permission_policy"))return r}s(Dt,"parseBrokerObservation");function gn(){return process.env.KODAX_A2A_NODE!==void 0?process.env.KODAX_A2A_NODE:process.versions.electron!==void 0?process.execPath:process.env.KODAX_BUNDLED==="true"?"node":process.execPath}s(gn,"sandboxJavaScriptCommand");async function Z(e={}){if(e.refresh||me===void 0||Date.now()>=He){let n=Bt();me=n,He=Number.POSITIVE_INFINITY,n.then(r=>{me===n&&(He=r.ready?Number.POSITIVE_INFINITY:Date.now()+Et)},()=>{me===n&&(me=void 0,He=0)})}return me}s(Z,"doctorSandboxRuntime");async function Bt(){let e=[],n=!1;kn.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let r=process.platform==="win32"?{errors:[],warnings:[]}:kn.checkDependencies();e.push(...r.warnings,...r.errors);let t=r.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let d=JSON.parse(await he(Xn.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));d.version!==ae&&(t=!0,e.push(`ASRT package version mismatch: expected ${ae}, found ${String(d.version)}.`))}catch(d){t=!0,e.push(`ASRT package provenance check failed: ${de(d)}`)}let o=gn(),a=Te({args:["--version"],env:Ee(),isElectron:o===process.execPath&&process.versions.electron!==void 0}),c=Xe(o,a.args,{env:a.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(c.status!==0){t=!0;let d=c.error?.message??(c.stderr.trim()||o);e.push(`JavaScript Skill interpreter is unavailable: ${d}.`)}if(process.platform==="win32"){try{let d=await _n(),l=Mn({srtWin:d.srtWin}),u=Dr(l);if(u.length>0||!l.sid)t=!0,e.push(...u);else{Ot(d,l.sid);let g=Xr(an(),l.sid,l.groupSid,!1,"read");g.length>0&&(t=!0,e.push(`[acl_guards_missing] ${g.length} persistent Windows sandbox ACL guard(s) are missing. Run "kodax sandbox setup" once to install them outside the startup path.`)),await Lt(d)}}catch(d){t=!0,e.push(de(d))}try{let d=Ge().filter(({file:l,owner:u})=>!Wt(l,u));if(d.length>0){let l=Ae();l!==void 0&&d.every(({owner:g})=>g.windowsBootIdentity!==void 0&&g.windowsBootIdentity!==l)||(n=!0,e.push(`${le} `+qe(d,l).message))}}catch(d){n=!0,e.push(`${le} ${de(d)}`)}}return{ready:kn.isSupportedPlatform()&&!t&&!n,platform:process.platform,version:ae,diagnostics:e,setupRequired:t}}s(Bt,"inspectSandboxRuntime");async function Ft(){let e=await Z({refresh:!0});try{let t=_t();if(t!==void 0)return wr(e,t)}catch(t){let o=t instanceof Error?t:new Error(String(t));return wr(e,o)}if(e.ready||pn(e)||!e.setupRequired)return e;let n=!1;try{let t=await _n(),o=Mn({srtWin:t.srtWin});n=Dr(o).length===0&&o.sid!==void 0}catch{n=!1}if(n){Dn(an(),"read");let t=await Z({refresh:!0});if(t.ready)return t}if(ft().cancelled)throw new Error("Sandbox setup was cancelled.");return await _n(),Dn(an(),"read"),Z({refresh:!0})}s(Ft,"setupWindowsSandboxRuntimeWithLock");async function jt(){return process.platform!=="win32"?Z({refresh:!0}):se(xe(),Ft,ve)}s(jt,"setupSandboxRuntime");function ge(e){if(e.ready)return[`KodaX sandbox is active (${e.platform}, ASRT ${e.version}).`];if(e.platform==="win32"){let n=e.diagnostics.find(r=>r.startsWith(le));return n!==void 0?[n.slice(le.length).trim()]:['Run "kodax sandbox setup". Windows will show a UAC prompt for the one-time sandbox account and network policy setup.',"The terminal itself does not need to be started as Administrator; approve the UAC prompt when it appears."]}return e.platform==="darwin"?['KodaX uses macOS Seatbelt through sandbox-exec. Install the missing dependency, then rerun "kodax sandbox doctor".',"Homebrew: brew install ripgrep"]:e.platform==="linux"?['KodaX uses bubblewrap on Linux. Install bubblewrap, socat, and ripgrep, then rerun "kodax sandbox doctor".',"Debian/Ubuntu: sudo apt install bubblewrap socat ripgrep","Fedora/RHEL: sudo dnf install bubblewrap socat ripgrep","Arch Linux: sudo pacman -S bubblewrap socat ripgrep"]:[`KodaX sandbox is not supported on ${e.platform}.`]}s(ge,"sandboxSetupGuidance");async function Mo(e={}){let n=await Z({refresh:!0});if(n.ready)return{status:"ready",attempted:!1,doctor:n,guidance:ge(n)};if(pn(n))return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(!n.setupRequired)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};if(n.platform!=="win32"||e.allowElevation===!1)return{status:"unavailable",attempted:!1,doctor:n,guidance:ge(n)};try{let r=await jt();return{status:r.ready?"ready":"unavailable",attempted:!0,doctor:r,guidance:ge(r)}}catch(r){let t=await Z({refresh:!0}),o=de(r);return{status:/cancelled/i.test(o)?"cancelled":"unavailable",attempted:!0,doctor:t,guidance:ge(t),error:o}}}s(Mo,"prepareSandboxRuntimeForSetup");function re(e,n){let r=e.replaceAll("\\","/").replace(/^\.\//,"");if(!r||i.posix.isAbsolute(r)||r.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return r}s(re,"canonicalRelative");function _(e,n){let r=i.relative(e,n);return r===""||!r.startsWith("..")&&!i.isAbsolute(r)}s(_,"isInside");function Br(e){let n=e.split(i.sep).map(r=>r.toLowerCase());return n.some(r=>mt.has(r))||n.some(r=>gt.has(r)||r.startsWith(".env."))}s(Br,"isSensitiveRelative");async function Mt(e,n){await K(n,{recursive:!0,mode:448});let r=[...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))];await be(i.join(n,"SKILL.md"),await he(e.skillFilePath),{mode:384});for(let{folder:t,file:o}of r){let a=re(o.relativePath,`Skill ${e.name} support file`),c=i.join(n,t,...a.split("/"));await K(i.dirname(c),{recursive:!0,mode:448}),await be(c,await he(o.path),{mode:384})}}s(Mt,"copySkillSnapshot");async function qt(e,n){let r=new Map;for(let[t,o]of Object.entries(e.admissions)){let a=await e.registry.loadFull(t),c=new Map((a.scripts??[]).map(l=>[`scripts/${re(l.relativePath,`Skill ${t} script`)}`,l])),d=i.join(n,t.replace(/[^A-Za-z0-9._-]/g,"_"));await Mt(a,d);for(let l of o){let u=re(l,`toolPolicy.skillScripts.${t}`);if(!c.has(u))throw new Error(`Skill "${t}" has no script "${u}".`);r.set(`${t}\0${u}`,{skill:t,relativePath:u,snapshotPath:i.join(d,...u.split("/"))})}}return r}s(qt,"snapshotAdmissions");function Kt(e){return e.mode==="deny"?[]:e.origins.map(n=>{let r=new URL(n);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(Kt,"networkEndpoints");function Ee(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],n={NO_COLOR:"1"};for(let r of e)process.env[r]!==void 0&&(n[r]=process.env[r]);for(let[r,t]of Object.entries(process.env))r.startsWith("LC_")&&t!==void 0&&(n[r]=t);return Yn(n)}s(Ee,"sanitizedEnvironment");function Yn(e){if(process.platform!=="win32")return{...e};let n=new Map;for(let[r,t]of Object.entries(e))t!==void 0&&n.set(r.toLowerCase(),[r,t]);return Object.fromEntries(n.values())}s(Yn,"normalizedSandboxEnvironment");function Fr(e,n){return Yn({...e,...n})}s(Fr,"mergeSandboxEnvironment");function Xt(e){let n=i.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(n))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(n===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(n===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(n===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(n)&&process.platform==="win32")return{command:process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${n||"<none>"}.`)}s(Xt,"interpreterFor");var gr=250,Gt=1500;async function Jt(e,n,r=Kn,t=qn,o){let a=[],c=[],d=e.pid===void 0?void 0:_e(e.pid),l=0,u,g=s(()=>{},"reportStopRequested"),f,p,w=new Promise(y=>{g=y}),h=s(y=>{if(u!==void 0)return;u=y,g();let A=!1,E,L;f=new Promise((R,F)=>{E=R,L=F}),f.catch(()=>{});let P=s(async R=>{let F=await _r(e.pid,d,Or("Sandbox broker"),o);return R===void 0?F:new AggregateError([F,R],"Sandbox broker termination failed and its process tree may still be alive.")},"unconfirmedTermination"),z=s(R=>{A||(A=!0,p!==void 0&&clearTimeout(p),R===void 0?E():L(R))},"finish");p=setTimeout(()=>{try{e.kill("SIGKILL"),P().then(z)}catch(R){P(R).then(z)}},Gt),vn(e,{expectedProcessStartIdentity:d,forceMs:gr,taskkillMs:gr}).then(async R=>z(R.status==="unknown"?await P():void 0),async R=>z(await P(R)))},"requestStop"),k=s((y,A)=>{l+=A.byteLength,l>t?h(new Error(`Sandboxed command output exceeded ${t} bytes.`)):y.push(A)},"append");e.stdout?.on("data",y=>{k(a,y)}),e.stderr?.on("data",y=>{k(c,y)});let b=setTimeout(()=>{h(new Error(`Sandboxed command exceeded its ${r} ms timeout.`))},r),v=s(()=>{let y=n?.reason;h(y instanceof Error?y:new Error("Sandboxed command was cancelled."))},"abort");n?.addEventListener("abort",v,{once:!0}),n?.aborted&&v();try{let y=new Promise((E,L)=>{e.once("error",L),e.once("close",P=>E(P??1))}),A=await Promise.race([y,w.then(()=>1)]);if(u!==void 0)throw await f,u;return{exitCode:A,stdout:Buffer.concat(a).toString("utf8"),stderr:Buffer.concat(c).toString("utf8")}}finally{clearTimeout(b),p!==void 0&&clearTimeout(p),n?.removeEventListener("abort",v)}}s(Jt,"collectProcess");async function jr(e,n,r=Kn,t=qn){let o=process.platform==="win32"?await hn():te.tmpdir(),a=i.join(o,`kodax-asrt-${process.pid}-${H()}.json`),c=process.platform==="win32"?nr(e.config):{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,a]}},d={...e,bootstrapCommand:e.bootstrapCommand??gn(),config:c};await be(a,JSON.stringify(d),{mode:384});let l,u,g;try{if(process.platform==="win32"){await rr(),g=await xn();let h=await tr(!0);if(h.length===1)throw h[0];if(h.length>1)throw new AggregateError(h,"Cached workspace sandbox reset was not confirmed before standalone execution.")}let f=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",a]:["--input-type=module","-e",Cr,Rr,a],p=Te({args:f,env:Ee(),isElectron:process.versions.electron!==void 0});u=await Lr();let w=hr(process.execPath,p.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:p.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0,detached:process.platform!=="win32"});return bn(w),await Jt(w,n,r,t,u)}catch(f){throw l=f,f}finally{let f=[];try{await G(a,{force:!0})}catch(p){f.push(p)}try{await In(u)}catch(p){f.push(p)}if(g!==void 0)try{await g()}catch(p){f.push(p)}if(f.length>0)throw l!==void 0&&f.unshift(l),f.length===1?f[0]:new AggregateError(f,"Sandbox broker cleanup was not confirmed.")}}s(jr,"runBrokerResult");async function Ut(e,n){let r=await jr(e,n);if(r.exitCode!==0){let t=r.stderr.trim()||r.stdout.trim();throw new Error(`Sandboxed Skill script failed (${r.exitCode}): ${t}`)}return r.stdout}s(Ut,"runBroker");async function Vt(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script input")),o=await Fe(t);if(!_(r,o)||Br(i.relative(r,o)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await nn(o)).isFile())throw new Error("Skill script inputs must be files.");return o}s(Vt,"workspaceSource");async function Ht(e,n){let r=await Fe(e),t=i.resolve(e,re(n,"Skill script output target"));if(!_(i.resolve(e),t)||Br(i.relative(i.resolve(e),t)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await K(i.dirname(t),{recursive:!0}),!_(r,await Fe(i.dirname(t))))throw new Error("Skill script output target escapes through a symlink.");try{throw await nn(t),new Error("Skill script output target already exists.")}catch(o){if(o.code!=="ENOENT")throw o}return t}s(Ht,"workspaceTarget");async function zt(e,n,r,t){if(r.inputs.length>0&&t==="none")throw new Error("Skill script inputs require workspace read access.");for(let o of r.inputs){let a=await Vt(e,o.path),c=re(o.as??i.basename(a),"Skill script staged input"),d=i.resolve(n,"inputs",...c.split("/"));if(!_(i.join(n,"inputs"),d))throw new Error("Skill script staged input escapes staging.");await K(i.dirname(d),{recursive:!0,mode:448}),await kr(a,d)}}s(zt,"stageInputFiles");async function Yt(e,n,r,t,o){if(r.outputs.length>0&&t!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let c of r.outputs){let d=re(c.path,"Skill script staged output"),l=i.resolve(n,"outputs",...d.split("/")),u=await Fe(l);if(!_(i.join(n,"outputs"),u)||(await tt(l)).isSymbolicLink()||!(await nn(l)).isFile())throw new Error(`Skill script did not produce output "${d}".`);let g=await Ht(e,c.target);if(o!==void 0&&Mr(e,!0)+(await nn(l)).size>o)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await kr(l,g,rt.COPYFILE_EXCL),a.push(i.relative(e,g))}return a}s(Yt,"promoteOutputs");function Mr(e,n=!1){let r=0;for(let t of jn(e,{withFileTypes:!0})){if(n&&t.name===".kodax-a2a-script"||t.isSymbolicLink())continue;let o=i.join(e,t.name);t.isDirectory()?r+=Mr(o):t.isFile()&&(r+=fn(o).size)}return r}s(Mr,"directorySize");function Zn(e){if(process.platform!=="win32")return e;let n=ke();return{...e,windows:{...e.windows,srtWin:{path:n.path}},filesystem:{...e.filesystem,allowRead:[...new Set([...e.filesystem.allowRead,n.directory])],denyWrite:process.platform==="win32"?e.filesystem.denyWrite:[...new Set([...e.filesystem.denyWrite??[],n.directory])]}}}s(Zn,"withPreparedWindowsRunner");function Zt(e,n,r,t){let o=te.homedir(),a=process.platform==="win32"?an():[o],c=s(d=>i.isAbsolute(d)?process.platform==="win32"?[d,i.dirname(d)]:[d]:[],"executableReadScopes");return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:a,allowRead:[e,n,...new Set([...c(process.execPath),...c(t)])],allowWrite:[e],denyWrite:a}})}s(Zt,"sandboxConfig");function Qt(){let e=[te.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR,...process.platform==="win32"?[]:["/tmp","/var/tmp"]];return[...new Set(e.filter(n=>typeof n=="string"&&i.isAbsolute(n)).map(n=>i.resolve(n)))]}s(Qt,"canonicalTempDirectories");function qr(e){return[i.join(e,".git","config"),i.join(e,".git","hooks")].filter(r=>{try{return fn(r),!0}catch{return!1}})}s(qr,"existingWorkspaceDenyWrites");function Qn(e,n,r){let t=yt.map(a=>i.resolve(e,a)).filter(a=>i.relative(a,n)!==""),o=process.platform==="win32"?[i.resolve(n),mn()]:[i.resolve(r),...St.map(a=>i.resolve(n,a))];return[...new Set([...o,...t])]}s(Qn,"workspaceShellSensitiveReadDenies");function er(e){let n=[...new Set(e.map(t=>i.resolve(t)))].filter(t=>fn(t,{throwIfNoEntry:!1})!==void 0).sort((t,o)=>t.length-o.length),r=[];for(let t of n)r.some(o=>_(o,t))||r.push(t);return r}s(er,"existingMinimalWindowsAclGuardRoots");function Kr(e){return i.resolve(e).toLowerCase()}s(Kr,"windowsAclGuardKey");function Ln(e,n){let r=Kr(e),t=n==="read"?Wn:new Set([...Wn,...Pr]);for(let o of t)if(r===o||r.startsWith(o.endsWith(i.sep)?o:`${o}${i.sep}`))return!0;return!1}s(Ln,"windowsAclGuardCovers");function an(){let e=i.resolve(te.homedir()),n=i.resolve(X());return er(Qn(e,n,i.join(n,"sandbox-runtime")))}s(an,"windowsPersistentAclGuardRoots");function Xr(e,n,r,t,o){let a=er(e);if(a.length===0)return[];let c=JSON.stringify({sid:n,tokenSids:[n,r,"S-1-1-0","S-1-5-11","S-1-5-32-545"].filter(g=>g!==void 0),install:t,paths:a.map(g=>({path:g,directory:fn(g).isDirectory(),mode:o}))}),d=Gr(),l=Xe(d,["-NoProfile","-NonInteractive","-EncodedCommand",Buffer.from(ht,"utf16le").toString("base64")],{input:c,encoding:"utf8",timeout:t&&o==="read"?15*6e4:t?15e3:5e3,windowsHide:!0});if(l.error||l.status!==0){let g=(l.error?.message||l.stderr||l.stdout||"no diagnostics").trim().slice(-4096);throw new Error(`Windows sandbox ACL guard failed: ${g}`)}let u;try{let g=JSON.parse(l.stdout.trim());u=Array.isArray(g.missing)?g.missing.filter(f=>typeof f=="string"):[]}catch(g){throw new Error(`Windows sandbox ACL guard returned invalid output: ${de(g)}`)}if(u.length===0){let g=o==="read"?Wn:Pr;for(let f of a)g.add(Kr(f))}return u}s(Xr,"runWindowsAclGuard");function Gr(){let e=process.env.ProgramFiles??"C:\\Program Files",n=i.join(e,"PowerShell","7","pwsh.exe");return br(n)?n:i.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe")}s(Gr,"windowsAclPowerShellExecutable");function Dn(e,n){if(process.platform!=="win32"||e.length===0)return;let r=e.filter(c=>!Ln(c,n));if(r.length===0)return;let t=ke(),o=Mn({srtWin:t.srtWin});if(!o.sid)throw new Error("Windows sandbox account SID is unavailable for ACL guards.");if(Xr(r,o.sid,o.groupSid,!0,n).length>0)throw new Error("Windows sandbox ACL guards were not installed completely.")}s(Dn,"installWindowsAclGuards");function nr(e){return process.platform!=="win32"?e:{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead.filter(n=>!Ln(n,"read")),denyWrite:e.filesystem.denyWrite?.filter(n=>!Ln(n,"write"))}}}s(nr,"withoutWindowsAsrtDenyPropagation");function eo(e,n){let r;try{r=ce.native(n)}catch{return[]}let t=[];for(let o of e){let a;try{a=ce.native(o)}catch{continue}if(!_(a,r))t.push(o);else if(a!==r){let c=i.relative(a,r).split(i.sep),d=a;try{for(let l of c){for(let u of jn(d,{withFileTypes:!0}))u.name!==l&&t.push(i.join(d,u.name));d=i.join(d,l)}}catch{}}}return process.platform!=="win32"&&t.push(n),[...new Set(t)]}s(eo,"workspaceShellWriteRoots");function no(e,n){let r=process.platform==="win32"?n:i.resolve(e);return i.join(te.tmpdir(),"kodax-sandbox",un("sha256").update(r).digest("hex").slice(0,16))}s(no,"workspaceShellTempRoot");function ro(e,n){return i.join(no(e,n),`${process.pid}-${H()}`)}s(ro,"createWorkspaceShellTempDirectory");async function Pn(e){await G(e,{recursive:!0,force:!0}),await st(i.dirname(e)).catch(n=>{if(n.code!=="ENOENT"&&n.code!=="ENOTEMPTY")throw n})}s(Pn,"removeWorkspaceShellTempDirectory");function to(e){return process.platform==="win32"?e===void 0?[]:[i.dirname(e)]:Qt()}s(to,"workspaceShellTempWriteRoots");function oo(e,n,r){try{let t=ce.native(n),o=i.resolve(n),a=i.resolve(e);if(!_(o,a)||a===o)return;for(;a!==o;)try{let c=ce.native(a);if(c===t||!_(t,c))return;let d=i.relative(t,c).split(i.sep)[0]?.toLowerCase();return d==="sandbox-runtime"||r&&Gn.some(l=>l===d)?void 0:c}catch(c){if(!r||c.code!=="ENOENT")return;try{vr(a);return}catch(l){if(l.code!=="ENOENT")return}let d=i.dirname(a);if(d===a)return;a=d}return}catch{return}}s(oo,"windowsAgentHomeAccessRoot");function Jr(e,n){if(!n)return{read:[],write:[]};let r=s((t,o)=>[...new Set(t.flatMap(a=>{let c=oo(a,e,o);return c?[c]:[]}))],"roots");return{read:r(n.read,!1),write:r(n.write,!0),...n.ephemeral===!0?{ephemeral:!0}:{}}}s(Jr,"windowsAgentHomeAccessRoots");function Ke(e){return e??(process.platform==="win32"?process.env.COMSPEC??i.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"):"/bin/sh")}s(Ke,"workspaceShellExecutable");function so(e,n){return Object.entries(e).find(([r,t])=>r.toUpperCase()===n&&t!==void 0)?.[1]}s(so,"shellEnvironmentValue");function io(e){let n=process.env.LOCALAPPDATA,r=[n===void 0?void 0:i.join(n,"Programs"),n,process.env.APPDATA,i.join(e,"AppData","Local","Programs"),i.join(e,"AppData","Local"),i.join(e,"AppData","Roaming"),e];return[...new Set(r.flatMap(t=>t===void 0?[]:[i.resolve(t)]))].filter(t=>_(e,t)).sort((t,o)=>o.length-t.length)}s(io,"workspaceShellUserDataBoundaries");function ao(e,n,r){if(process.platform!=="win32"||e.toLowerCase()===n.toLowerCase())return[];try{if(!vr(e).isSymbolicLink())return[]}catch{return[]}let t=r.find(d=>d.toLowerCase()!==n.toLowerCase()&&_(d,n));if(t===void 0)return[];let[o]=i.relative(t,n).split(i.sep);if(!o)return[];let a=i.join(t,o),c=[];for(let d=i.dirname(n);d.toLowerCase()!==a.toLowerCase()&&_(a,d);d=i.dirname(d))c.push(d);return c}s(ao,"workspaceShellLinkedTargetAncestors");function dn(e,n){let r=i.resolve(te.homedir()),t=i.resolve(X()),o=Qn(r,t,i.join(t,"sandbox-runtime")),a=io(r),c=new Map,d=s(f=>{let p=i.resolve(f);if(!(p===i.parse(p).root||p.toLowerCase()===r.toLowerCase()||_(t,p)||_(p,t)||o.some(w=>_(w,p))))return p},"safe"),l=s((f,p)=>{let w=d(f);if(w===void 0)return;let h;try{h=ce(w)}catch{return}if(d(h)===void 0)return;let k=p?[w,h].filter(b=>_(r,b)):[w,h];for(let b of k)c.set(process.platform==="win32"?b.toLowerCase():b,b);if(p&&k.includes(h))for(let b of ao(w,h,a)){let v=d(b);v!==void 0&&_(r,v)&&c.set(v.toLowerCase(),v)}},"remember");for(let f of(so(e,"PATH")??"").split(i.delimiter)){let p=f.trim().replace(/^"(.*)"$/,"$1");p&&i.isAbsolute(p)&&l(p,!0)}let u=Ke(n);i.isAbsolute(u)&&l(i.dirname(u),!0);let g=gn();if(i.isAbsolute(g)){let f=d(g);f!==void 0&&c.set(process.platform==="win32"?f.toLowerCase():f,f),l(i.dirname(g),!1)}return[...c.values()].sort((f,p)=>f.toLowerCase().localeCompare(p.toLowerCase()))}s(dn,"workspaceShellRuntimeReadScopes");function Ur(e,n,r,t,o=dn(process.env,Ke())){let a=i.resolve(X()),c=i.join(a,"sandbox-runtime"),d=i.resolve(te.homedir()),l=Qn(d,a,c),u=process.platform==="win32"?er(l):l.filter(p=>p!==a),g=process.platform==="win32"?Jr(a,r):{read:[],write:[]},f=eo([e,...to(n),...g.write,...t?.write??[]],a);return Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:!1,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:u,allowRead:[...new Set([...o,...g.read,...t?.read??[]])],allowWrite:f,denyWrite:[c,...Gn.map(p=>i.join(a,p)),...qr(e)]}})}s(Ur,"workspaceShellSandboxConfig");function Vr(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform!=="win32"?a:Hr(a)}s(Vr,"workspaceShellSessionSandboxConfig");function Hr(e){let n=e.filesystem.allowWrite;return{...e,filesystem:{...e.filesystem,denyRead:e.filesystem.denyRead,denyWrite:e.filesystem.denyWrite.filter(r=>n.some(t=>_(t,r)))}}}s(Hr,"boundedWindowsWorkspaceDenies");function co(e,n,r,t,o){let a=Ur(e,n,r,t,o);return process.platform==="win32"?Hr(a):a}s(co,"workspaceShellCommandSandboxConfig");function Ye(e,n){return[...new Set((e??[]).map(r=>i.resolve(n,r)))]}s(Ye,"normalizedSandboxPaths");function lo(e){return e.mode!=="allowlist"?[]:e.origins.map(n=>{let r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:"||r.username||r.password||r.pathname!=="/"||r.search||r.hash)throw new Error(`Sandbox network origin must be an HTTP(S) origin: ${n}`);return{host:r.hostname.toLowerCase(),port:r.port?Number(r.port):r.protocol==="https:"?443:80}})}s(lo,"sdkSandboxEndpoints");async function qo(e){if(!e.command.trim())throw new Error("Sandbox command must not be empty.");if(e.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Sandbox timeoutMs must be a positive finite number.");if(e.maxOutputBytes!==void 0&&(!Number.isSafeInteger(e.maxOutputBytes)||e.maxOutputBytes<=0))throw new Error("Sandbox maxOutputBytes must be a positive safe integer.");let n=i.resolve(e.cwd),r=e.network??{mode:"deny"},t=lo(r),o=await Z();if(!o.ready){if(!pn(o))return{status:"unavailable",sandboxed:!1,doctor:o};if(await sn(),o.setupRequired)return{status:"unavailable",sandboxed:!1,doctor:o}}let a=Fr(e.inheritEnvironment===!0?process.env:Ee(),e.env??{}),c={config:Zn({network:{allowedDomains:[],deniedDomains:[],strictAllowlist:r.mode==="deny",allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{allowRead:Ye(e.filesystem.allowRead,n),allowWrite:Ye(e.filesystem.allowWrite,n),denyRead:Ye(e.filesystem.denyRead,n),denyWrite:Ye(e.filesystem.denyWrite,n)}}),command:e.command,args:e.args??[],cwd:n,env:a,endpoints:t,allowAllNetwork:r.mode==="allow"},d=await jr(c,e.signal,e.timeoutMs??Kn,e.maxOutputBytes??qn);return{status:"completed",sandboxed:!0,exitCode:d.exitCode,stdout:d.stdout,stderr:d.stderr}}s(qo,"runKodaXSandboxed");var uo=5*6e4,fo=3e4,po=3e4,Ze=1500,wo=13e4,mo=8,I=new Map,De=new Set,ye=new Set,Se=new Set,Ie,Bn,cn=!1;function ue(e){let n=e instanceof Error?e:new Error(String(e));if(process.platform!=="win32"){Bn??=n;return}Ie??=n}s(ue,"recordWindowsSandboxAclFailure");function yn(){if(process.platform!=="win32"&&Bn!==void 0)throw new Error("Sandbox process cleanup was not confirmed; stop the retained process tree before more sandboxed commands.",{cause:Bn});if(process.platform==="win32"&&Ie!==void 0)throw Ie instanceof Q?Ie:new Error("Windows sandbox ACL cleanup was not confirmed; stop the retained owner or restart Windows before more sandboxed commands.",{cause:Ie})}s(yn,"assertWindowsSandboxAclProcessSafe");function Sn(e){yn(),process.platform==="win32"&&zn(e)}s(Sn,"assertWindowsSandboxAclSafe");function zr(e){ye.add(e),e.then(()=>ye.delete(e),()=>ye.delete(e))}s(zr,"trackWorkspaceSessionReset");function go(e){Se.add(e),e.then(()=>Se.delete(e),n=>{Se.delete(e),T({source:"sandbox:workspace-session",level:"error",message:"Workspace sandbox durable ACL poison transition failed.",detail:n})})}s(go,"trackWindowsSandboxAclTransition");async function yo(){for(;Se.size>0;)await Promise.allSettled([...Se])}s(yo,"waitForWindowsSandboxAclTransitions");async function rr(){for(;ye.size>0;)await Promise.allSettled([...ye]);await yo(),yn()}s(rr,"waitForWorkspaceSessionResets");async function tr(e=!1){let n=[...I.values()];I.clear();let r=[];for(let t of n)try{await(await t).close(e)}catch(o){r.push(o),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox shutdown could not confirm ACL reset.",detail:o})}return r}s(tr,"closeCachedWorkspaceSessions");var Yr=s(()=>{cn=!1,tr()},"closeWorkspaceSessionsBeforeExit");function So(){cn||(cn=!0,process.once("beforeExit",Yr))}s(So,"registerWorkspaceSessionBeforeExit");async function Ko(){for(process.removeListener("beforeExit",Yr),cn=!1;De.size>0;)await Promise.allSettled([...De]);let e=await tr();try{await rr()}catch(n){e.push(n)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Workspace sandbox shutdown was not confirmed.")}s(Ko,"shutdownAsrtWorkspaceSessions");function Zr(){let e=new Error("ASRT workspace session preparation timed out.");return e.name="TimeoutError",e}s(Zr,"workspacePreparationTimeoutError");function ln(e,n){if(e?.aborted)throw new DOMException("Operation aborted","AbortError");if(n!==void 0&&Date.now()>=n)throw Zr()}s(ln,"throwIfWorkspacePreparationStopped");function Fn(e,n,r){return ln(n,r),n===void 0&&r===void 0?e:new Promise((t,o)=>{let a=!1,c,d=s(u=>{a||(a=!0,c&&clearTimeout(c),n?.removeEventListener("abort",l),u())},"finish"),l=s(()=>{d(()=>o(new DOMException("Operation aborted","AbortError")))},"onAbort");n?.addEventListener("abort",l,{once:!0}),r!==void 0&&(c=setTimeout(()=>{d(()=>o(Zr()))},Math.max(0,r-Date.now())),c.unref()),e.then(u=>d(()=>t(u)),u=>d(()=>o(u)))})}s(Fn,"waitForWorkspacePreparation");async function hn(){let e=i.join(X(),"sandbox-runtime");return await K(e,{recursive:!0,mode:448}),e}s(hn,"sandboxControlDirectory");function ho(e){if(process.env.KODAX_BUNDLED==="true")return["__asrt-workspace-session",e];if(import.meta.url.endsWith(".ts"))return["--import",Ar(Xn.resolve("tsx")).href,ur(new URL("./sandbox-workspace-session-entry.ts",import.meta.url)),e];let n=i.dirname(ur(import.meta.url)),r=i.basename(n)==="chunks"?i.dirname(n):n;return[i.join(r,"sandbox-workspace-session.js"),e]}s(ho,"workspaceSessionEntryArgs");function Qe(e,n){let r=n?"ref":"unref";e[r]();for(let t of e.stdio){if(!t)continue;t[r]?.()}}s(Qe,"setWorkspaceSessionReferenced");async function Qr(e,n,r){if(e)return n();let t=await xn(r);try{return await n()}finally{await t()}}s(Qr,"withExclusiveFileSystemEffectFence");async function bo(e,n,r,t,o,a,c){let d=process.platform==="win32"?ro(e,o):void 0;d!==void 0&&await K(d,{recursive:!0,mode:448});let l=await hn();process.platform==="win32"&&Dn(qr(e),"write");let u=i.join(l,`workspace-${process.pid}-${H()}.json`),g=nr(Vr(e,d,n,r,t));await be(u,JSON.stringify({config:g}),{mode:384});let f=Te({args:ho(u),env:Ee(),isElectron:process.versions.electron!==void 0}),p;try{p=await Lr(o)}catch(S){let m=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]),x=[S,...m.flatMap(C=>C.status==="rejected"?[C.reason]:[])];throw x.length===1?S:new AggregateError(x,"Workspace sandbox owner admission and pre-launch cleanup both failed.")}let w;try{w=hr(process.execPath,f.args,{cwd:process.platform==="win32"?ke().directory:void 0,env:f.env,shell:!1,stdio:["pipe","pipe","pipe","pipe"],windowsHide:!0})}catch(S){let m=[S];try{await In(p)}catch(C){await ze(p,C),m.push(C)}let x=await Promise.allSettled([G(u,{force:!0}),...d===void 0?[]:[Pn(d)]]);throw m.push(...x.flatMap(C=>C.status==="rejected"?[C.reason]:[])),m.length===1?S:new AggregateError(m,"Workspace sandbox owner launch cleanup failed.")}bn(w);let h=w.pid===void 0?void 0:_e(w.pid),k=w.stdio[3];if(!k)throw new Error("ASRT workspace session control pipe was not created.");let b=dt.createInterface({input:k}),v=new Map,y="",A=!1,E=!1,L=!1,P=!1,z=0,R=0,F,j,oe,fe=new Promise(S=>{w.once("exit",(m,x)=>S({code:m,signal:x}))}),pe=fe.then(async()=>{if(d!==void 0)try{await Pn(d)}catch(S){T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox temp cleanup failed.",detail:S})}}),Je=s(async(S=!1)=>{let m=await fe;await pe;let x=[];if(!S&&(m.code!==0||m.signal!==null)){let C=m.signal===null?`code ${m.code??"unknown"}`:`signal ${m.signal}`;x.push(new Error(`ASRT workspace session ACL reset was not confirmed (${C}): ${y.trim()||"no diagnostics"}`))}try{await In(p)}catch(C){x.push(C)}if(x.length===1)throw x[0];if(x.length>1)throw new AggregateError(x,"Workspace sandbox cleanup was not confirmed.")},"confirmCleanReset"),D,J,B=new Promise((S,m)=>{D=S,J=m}),Re=s(()=>{P||(P=!0,c())},"evict"),Ue=s(async()=>{if(!E||!L||R!==0||w.exitCode!==null||w.signalCode!==null||!w.stdin.writable)return!1;try{w.stdin.end()}catch{return!1}let S;try{let m=await Promise.race([fe,new Promise(x=>{S=setTimeout(x,process.platform==="win32"?wo:Ze)})]);return m!==void 0&&m.code===0&&m.signal===null}finally{S!==void 0&&clearTimeout(S)}},"waitForOrderlyClose"),N,Pe=!1,or=!1,Y=s(()=>N||(or=!0,N=(async()=>{try{if(await Ue())return;if((await vn(w,{gracefulStdinEnd:!1,gracefulMs:Ze,forceMs:Ze,taskkillMs:Ze})).status==="unknown")throw await _r(w.pid,h,Or("ASRT workspace session"),p);Pe=!0}finally{b.close(),k.destroy(),w.stdin.destroy()}})().finally(Re),N),"terminate"),ee=s(S=>{if(!A){A=!0,J(S);for(let m of v.values())m.reject(S);v.clear()}},"fail");w.stderr.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),w.stdout.on("data",S=>{y=(y+S.toString("utf8")).slice(-16384)}),b.on("line",S=>{let m;try{m=JSON.parse(S)}catch{ee(new Error("ASRT workspace session returned malformed control data.")),Y();return}if(m.type==="ready"){m.ok?(L=!0,D()):J(new Error(m.error??"ASRT workspace session failed."));return}if(m.type!=="result"||!m.id){ee(new Error("ASRT workspace session returned an invalid control response.")),Y();return}let x=v.get(m.id);x&&(v.delete(m.id),x.resolve(m))}),w.once("error",S=>{ee(S),Y()}),b.once("close",()=>{E||A||(ee(new Error("ASRT workspace session control pipe closed unexpectedly.")),Y())}),w.once("exit",(S,m)=>{j&&clearTimeout(j);let x=new Error(`ASRT workspace session exited ${m??S??1}: ${y.trim()||"no diagnostics"}`);!or&&(S!==0||m!==null||!E)&&go(ze(p,x)),ee(x),Re()});let nt=setTimeout(()=>{ee(new Error("ASRT workspace session initialization timed out.")),Y()},fo);try{await B.finally(()=>clearTimeout(nt))}catch(S){E=!0;let m=[S],x=!1;try{await Y(),x=!0}catch(C){m.push(C)}if(x)try{await Je(Pe)}catch(C){await ze(p,C),m.push(C)}throw await G(u,{force:!0}),m.length===1?S:new AggregateError(m,`Workspace sandbox startup cleanup failed: ${de(m.at(-1))}`)}let Ve=s(async(S,m)=>{if(A||E&&S==="wrap")throw new Error("ASRT workspace session is unavailable.");let x=`workspace_${++z}`,C=new Promise((M,we)=>{v.set(x,{resolve:M,reject:we})}),ne=setTimeout(()=>{ee(new Error(`ASRT workspace session ${S} request timed out.`)),Y()},po);ne.unref();try{await new Promise((M,we)=>{w.stdin.write(`${JSON.stringify({id:x,type:S,request:m})}
|
|
518
|
+
`,$e=>$e?we($e):M())})}catch(M){throw v.delete(x),clearTimeout(ne),ee(M instanceof Error?M:new Error(String(M))),Y(),M}return C.finally(()=>clearTimeout(ne))},"request"),sr=s(()=>{if(j&&clearTimeout(j),!(R>0||E||A)){if(process.platform==="win32"){Qe(w,!1);return}j=setTimeout(()=>{Ce.close().catch(S=>{T({source:"sandbox:workspace-session",level:"warn",message:"Idle workspace sandbox session could not confirm ACL reset.",detail:S})})},uo),j.unref(),Qe(w,!1)}},"scheduleIdleClose"),Ce={policyKey:o,...d===void 0?{}:{tempDirectory:d},async acquire(S,m,x){if(Sn(o),ln(m,x),A||E)throw new Error("ASRT workspace session is unavailable.");j&&clearTimeout(j),Qe(w,!0),R+=1;let C=!1,ne=s(()=>{if(C)return!1;C=!0,R-=1;let U=R===0;return R===0&&(F?.(),F=void 0),sr(),U},"finalize"),M=s(async()=>{ne()&&process.platform==="win32"&&await Ce.close(a)},"finalizeAndCloseIfIdle"),we=s((U,$)=>{T({source:"sandbox:workspace-session",level:"warn",message:U,detail:$}),ne()&&Ce.close(a).catch(V=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace sandbox cleanup could not retire its session.",detail:V})})},"retireAfterCleanupFailure"),$e=Ve("wrap",S),We;try{We=await Fn($e,m,x)}catch(U){throw $e.then(async $=>{if(!$.ok||!$.invocation)return;let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}).then(M,$=>we("Late workspace sandbox preparation cleanup failed.",$)),U}try{if(!We.ok||!We.invocation){ne();let $=new Error(We.error??"ASRT workspace wrapping failed.");try{await Ce.close(a)}catch(W){let V=W instanceof Error?W.message:String(W);throw new Error(`${$.message} Workspace session reset failed: ${V}`,{cause:$})}throw $}try{ln(m,x)}catch($){try{let W=await Ve("cleanup");if(!W.ok)throw new Error(W.error??"ASRT command cleanup failed.")}catch(W){we("Cancelled workspace sandbox preparation cleanup failed.",W)}throw await M(),$}let U=!1;return{invocation:We.invocation,async release(){if(U)return;U=!0;let $;try{let V=await Ve("cleanup");if(!V.ok)throw new Error(V.error??"ASRT command cleanup failed.")}catch(V){$=V}let W;try{await M()}catch(V){W=V}if($!==void 0&&W!==void 0)throw new AggregateError([$,W],"Workspace sandbox command cleanup and policy-group reset both failed.");if($!==void 0)throw $;if(W!==void 0)throw W}}}catch(U){throw ne(),U}},async close(S=!1){return oe||(E=!0,Re(),oe=(async()=>{j&&clearTimeout(j),Qe(w,!0),R>0&&await new Promise(m=>{F=m}),await Qr(a||S,async()=>{await Y(),await Je()},o)})().catch(async m=>{throw await ze(p,m),m}),zr(oe),oe)}};return sr(),Ce}s(bo,"startWorkspaceSessionClientWithFence");function yr(e,n,r,t,o,a,c){return Qr(a,async()=>{if(et(e,n,r,t)!==o)throw new Error("Sandbox policy paths changed before ACL initialization.");return Sn(o),await sn(o),bo(e,n,r,t,o,a,c)},o)}s(yr,"startWorkspaceSessionClient");function Cn(e){return[...new Set(e.map(n=>{let r=i.resolve(n);return process.platform==="win32"?r.toLowerCase():r}))].sort()}s(Cn,"normalizedWorkspacePolicyPaths");function Le(e){let n=s(t=>{let o=i.resolve(t);return process.platform==="win32"?o.toLowerCase():o},"normalize"),r=null;try{r=n(ce.native(e))}catch{}return{lexical:n(e),canonical:r}}s(Le,"workspacePolicyPathIdentity");function en(e){let n=new Map;for(let r of e){let t=Le(r);n.set(`${t.lexical}\0${t.canonical??""}`,t)}return[...n.values()].sort((r,t)=>r.lexical.localeCompare(t.lexical)||(r.canonical??"").localeCompare(t.canonical??""))}s(en,"workspacePolicyPathIdentities");function et(e,n,r,t){let o=Vr(e,void 0,n,r,t);return un("sha256").update(JSON.stringify({workspace:Le(e),agentHome:Le(X()),tempBase:Le(te.tmpdir()),filesystem:{allowRead:en(o.filesystem.allowRead),allowWrite:en(o.filesystem.allowWrite),denyRead:en(o.filesystem.denyRead),denyWrite:en(o.filesystem.denyWrite)},network:o.network,windowsRunner:process.platform==="win32"?{version:ae,architecture:process.arch,path:Le(ke().path)}:null,ephemeral:n?.ephemeral===!0})).digest("hex")}s(et,"workspaceShellPolicyKey");function vo(e){return process.platform!=="win32"?!0:(e?.write??[]).every(n=>{try{return ce.native(n),!0}catch{return!1}})}s(vo,"workspaceShellFilesystemAccessIsRepresentable");async function Sr(e,n,r,t=dn(process.env,Ke()),o=t,a=!1){if(process.platform==="win32"){if(ye.size>0||Se.size>0)return}else await rr();yn();let c=await Z();if(!c.ready&&!pn(c))return;if(process.platform!=="win32"){let v=X();await Promise.all([hn(),...Gn.map(y=>K(i.join(v,y),{recursive:!0,mode:448}))])}let d=et(e,process.platform==="win32"?n:void 0,r,t);if(!c.ready&&(await sn(d),c.setupRequired))return;await sn(d),Sn(d),So();let l=process.platform==="win32"?n:void 0,u=process.platform==="win32"?e.toLowerCase():e,g=Cn,f=g(t),p=JSON.stringify(f)===JSON.stringify(g(o)),w=(r?.read.length??0)>0||(r?.write.length??0)>0,h=l===void 0&&!w&&p?"workspace":un("sha256").update(JSON.stringify({read:[...l?.read??[]].map(v=>v.toLowerCase()).sort(),write:[...l?.write??[]].map(v=>v.toLowerCase()).sort(),additionalRead:Cn(r?.read??[]),additionalWrite:Cn(r?.write??[]),runtimeReadScopes:f})).digest("hex"),k=process.platform==="win32"?d:`${u}\0${h}`;if(process.platform==="win32"&&a){let v=l?.ephemeral===!0?void 0:k;for(let[y,A]of[...I])if(y!==v){I.delete(y);try{await(await A).close(!0)}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring the previous Windows workspace sandbox scope failed.",detail:E}),E}}}if(l?.ephemeral===!0)return yr(e,l,r,t,d,a,()=>{});let b=I.get(k);if(b&&(I.delete(k),I.set(k,b)),!b){if(process.platform!=="win32"&&h!=="workspace"){let v=[...I.keys()].filter(y=>!y.endsWith("\0workspace"));if(v.length>=mo){let y=v[0],A=I.get(y);if(I.delete(y),A)try{await(await A).close()}catch(E){throw T({source:"sandbox:workspace-session",level:"warn",message:"Retiring an old scoped workspace sandbox failed.",detail:E}),E}}}b=yr(e,l,r,t,d,a,()=>{I.get(k)===b&&I.delete(k)}),I.set(k,b),b.catch(()=>{I.get(k)===b&&I.delete(k)})}return b}s(Sr,"getWorkspaceSession");function Xo(e){let n=i.resolve(e.workspaceRoot),r=dn(process.platform==="win32"?{}:process.env,Ke()),t=process.platform==="win32"?void 0:Sr(n,void 0,void 0,r,r);return t!==void 0&&(De.add(t),t.then(()=>De.delete(t),()=>De.delete(t)),t.catch(o=>{T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox warm-up failed; admitted commands will use normal permission fallback.",detail:o})})),{processTreeContainment:process.platform==="linux"?"root-exit-drains":void 0,async prepare(o){if(!o.toolCallId){o.reportObservation?.({version:1,state:"not_selected"});return}let a={id:o.toolCallId,name:"bash",input:{...o.toolInput}},c=await e.shouldSandbox(a);if(!c){o.reportObservation?.({version:1,state:"not_selected"});return}let d=typeof c=="object"?c.agentHomeAccess:void 0,l=process.platform==="win32"&&d!==void 0?Jr(i.resolve(X()),d):d,u=typeof c=="object"?c.filesystemAccess:void 0;if(!vo(u)){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let g=process.platform==="win32"&&l?.ephemeral===!0,f=Ke(o.executable),p=o.args??(process.platform==="win32"?["/d","/s","/c",o.command]:["-c",o.command]),w=Yn(o.env),h=dn(w,f),k,b;try{t!==void 0&&(await Fn(t.then(()=>{},()=>{}),o.signal,o.deadlineAt),ln(o.signal,o.deadlineAt));let v=Sr(n,l,u,h,r),y;try{y=await Fn(v,o.signal,o.deadlineAt)}catch(D){if(process.platform==="win32"&&(o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt)){let J=v.then(async B=>{B&&await B.close()},async()=>{});zr(J),J.catch(B=>{T({source:"sandbox:workspace-session",level:"warn",message:"Late cancelled workspace session rollback failed.",detail:B})})}throw D}if(!y){o.reportObservation?.({version:1,state:"fallback",reason:"not_ready",execution:"normal_permission_policy"});return}let A=y.policyKey;b=y;let E=await hn(),L=i.join(E,`kodax-asrt-shell-${process.pid}-${H()}.json`),P=i.join(E,`kodax-asrt-observation-${process.pid}-${H()}.json`),z=w;if(process.platform==="win32"){let D=y.tempDirectory;if(D===void 0)throw new Error("Windows workspace sandbox temp directory is unavailable.");z=Fr(w,{TEMP:D,TMP:D,TMPDIR:D,GIT_CONFIG_GLOBAL:"NUL",GIT_CONFIG_NOSYSTEM:"1"})}let R={config:nr(co(n,y.tempDirectory,l,u,h)),command:f,args:p,windowsVerbatimArguments:o.windowsVerbatimArguments===!0,cwd:o.cwd,env:z,endpoints:[],allowAllNetwork:!0,bootstrapCommand:gn(),fallbackToNormalExecution:!0,observationBackend:wt().backend,observationFile:P,targetStartedMarker:`\0KODAX_ASRT_TARGET_STARTED:${H()}\0
|
|
519
|
+
`},F=await y.acquire(R,o.signal,o.deadlineAt);k=F;let j={...R,wrappedInvocation:F.invocation},oe=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",L]:["--input-type=module","-e",Cr,Rr,L],fe=Te({args:oe,env:Ee(),isElectron:process.versions.electron!==void 0});await be(L,JSON.stringify(j),{mode:384});let pe,Je=s(async()=>{g||(pe===void 0&&(pe=b?.close(!1)??Promise.resolve(),pe.catch(D=>{T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox session retirement failed.",detail:D})})),process.platform==="win32"&&await pe)},"retireWorkspaceSession");return{executable:process.execPath,args:fe.args,env:fe.env,fileSystemEffectPolicyKey:A,authorizeStart:s(()=>Sn(A),"authorizeStart"),async cleanup(D){let J,B=[];try{J=await he(P,"utf8").then(Dt).catch(N=>{if(N.code!=="ENOENT")throw N})}catch(N){B.push(N)}let Re=await Promise.allSettled([G(L,{force:!0}),G(P,{force:!0})]);for(let N of Re)N.status==="rejected"&&B.push(N.reason);try{await F.release()}catch(N){B.push(N)}let Ue=D?.execution==="started_or_unknown"&&J===void 0;if(Ue&&B.push(new Error("Required OS sandbox execution could not be attested; the workspace session must be retired and the command was not retried")),B.length>0){let N=Ue?"Required OS sandbox execution could not be attested and request cleanup failed; the workspace session must be retired and the command was not retried.":"Required OS sandbox request cleanup failed; the workspace session must be retired.",Pe=new AggregateError(B,N);throw T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox command cleanup failed.",detail:Pe}),Pe}return J},retire:Je}}catch(v){let y=[v],A=o.signal?.aborted||o.deadlineAt!==void 0&&Date.now()>=o.deadlineAt,E=!1;if(k)try{await k.release()}catch(P){E=!0,y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox lease release failed.",detail:P})}if(A&&process.platform==="win32"&&b&&k===void 0)throw b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Cancelled workspace preparation cleanup could not retire its session.",detail:P})}),v;if(process.platform==="win32"&&b)try{await b.close()}catch(P){y.push(P),T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})}else E&&b&&b.close().catch(P=>{T({source:"sandbox:workspace-session",level:"warn",message:"Failed workspace lease cleanup could not retire its session.",detail:P})});if(A)throw v;let L=y.length===1?v:new AggregateError(y,`Workspace sandbox preparation failed and cleanup was incomplete: ${y.map(de).join(" | ")}`);T({source:"sandbox:workspace-session",level:"warn",message:"Workspace sandbox preparation failed; using normal permission fallback.",detail:L}),o.reportObservation?.({version:1,state:"fallback",reason:"prepare_failed",execution:"normal_permission_policy"});return}}}}s(Xo,"createAsrtShellSandbox");async function Go(e){let n=await Z();if(!n.ready)throw new Error(`ASRT ${ae} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let r=i.join(e.snapshotRoot,H()),t=i.join(r,"skills");await K(t,{recursive:!0,mode:448});try{let o=await qt(e,t),a=Kt(e.network),c=Promise.resolve();return{async run(d,l){let u=c,g;if(c=new Promise(f=>{g=f}),await u,l.signal?.aborted)throw g?.(),l.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(d.args.length>64||d.args.some(h=>h.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(d.inputs.length>32||d.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let f=re(d.script,"Skill script"),p=o.get(`${d.skill}\0${f}`);if(!p)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(i.extname(p.snapshotPath).toLowerCase())&&d.args.some(h=>/[&|<>^]/.test(h)))throw new Error("Batch Skill script arguments cannot contain command operators.");let w=i.join(l.workspaceRoot,".kodax-a2a-script",H());try{await K(i.join(w,"inputs"),{recursive:!0,mode:448}),await K(i.join(w,"outputs"),{recursive:!0,mode:448}),await zt(l.workspaceRoot,w,d,e.workspaceAccess);let h=Xt(p.snapshotPath),k=await Ut({config:Zt(w,r,a,h.command),command:h.command,args:[...h.args,...d.args],cwd:w,env:Ee(),endpoints:a},l.signal),b=await Yt(l.workspaceRoot,w,d,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:k.trim(),outputs:b})}finally{await G(w,{recursive:!0,force:!0})}}finally{g?.()}},async dispose(){await c,await G(r,{recursive:!0,force:!0})}}}catch(o){throw await G(r,{recursive:!0,force:!0}),o}}s(Go,"createAsrtSkillScriptRunner");export{ae as a,wt as b,Z as c,jt as d,ge as e,Mo as f,qo as g,Ko as h,Xo as i,Go as j};
|