@kodax-ai/kodax 0.7.86 → 0.7.88
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 +73 -0
- package/README.md +25 -5
- package/README_CN.md +9 -5
- package/dist/chunks/agent-ZVZPWX5T.js +2 -0
- package/dist/chunks/argument-completer-LF5FUYJI.js +2 -0
- package/dist/chunks/{chunk-A5VQGXH2.js → chunk-4Y6OSDZE.js} +1 -1
- package/dist/chunks/chunk-5247AKGN.js +92 -0
- package/dist/chunks/{chunk-U6HNMLNN.js → chunk-6MGD2A7Z.js} +221 -221
- package/dist/chunks/{chunk-G5FGIRDJ.js → chunk-72H6JNPN.js} +142 -142
- package/dist/chunks/{chunk-XA4ENCAH.js → chunk-GSGNXLDU.js} +2 -2
- package/dist/chunks/{chunk-UKCDCVMD.js → chunk-L2SYMK46.js} +1 -1
- package/dist/chunks/{chunk-HTVLCHWH.js → chunk-O2ZV775M.js} +1 -1
- package/dist/chunks/{chunk-Q6UAGROD.js → chunk-OG4ML65E.js} +11 -11
- package/dist/chunks/chunk-PROPMIT4.js +2 -0
- package/dist/chunks/{chunk-XUKLF26Q.js → chunk-QCXFQFIO.js} +2 -2
- package/dist/chunks/{chunk-B36G256E.js → chunk-RGAMBFT4.js} +254 -254
- package/dist/chunks/chunk-TXZ2XYMA.js +320 -0
- package/dist/chunks/chunk-UNEC2WXJ.js +123 -0
- package/dist/chunks/{chunk-GVGLYVG4.js → chunk-W5RPVR3O.js} +1 -1
- package/dist/chunks/{chunk-AAFFS6RU.js → chunk-WSDVHFBK.js} +3 -3
- package/dist/chunks/{chunk-MFCPQZ7E.js → chunk-ZKJEAQHA.js} +4 -4
- package/dist/chunks/{chunk-2RAXDUC7.js → chunk-ZWRG2GHC.js} +3 -3
- package/dist/chunks/client-ZXBSEDS4.js +2 -0
- package/dist/chunks/compaction-config-HVHPJ6CS.js +2 -0
- package/dist/chunks/{construction-bootstrap-4DGAYOWH.js → construction-bootstrap-HUGXOAUK.js} +1 -1
- package/dist/chunks/dist-VH56OGLV.js +2 -0
- package/dist/chunks/{dist-WWL2DNIJ.js → dist-WILA35IA.js} +1 -1
- package/dist/chunks/host-33L5PX3J.js +2 -0
- package/dist/chunks/run-manager-OOMXDNDA.js +2 -0
- package/dist/chunks/utils-WCVYP3JY.js +2 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +5 -5
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1563 -1560
- package/dist/kodax_resume.js +35 -826
- package/dist/provider-capabilities.json +1349 -1205
- package/dist/runtime-worker.js +1255 -1254
- package/dist/sandbox-workspace-session.js +265 -265
- package/dist/sdk-a2a.d.ts +12 -12
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +17 -17
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +21 -21
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +4 -4
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +7 -7
- package/dist/sdk-llm.js +1 -1
- 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 +16 -16
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +15 -15
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +59 -59
- package/dist/types-chunks/{base.d-DxG0m09Z.d.ts → base.d-vopO1rml.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-QqKtuLZm.d.ts → bash-prefix-extractor.d-DcHi4vz5.d.ts} +4 -4
- package/dist/types-chunks/{capability-learning.d-iPSiAmc_.d.ts → capability-learning.d-CE1tm29C.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-CN_iMqAS.d.ts → capsule.d-CjNNucoy.d.ts} +3 -3
- package/dist/types-chunks/{controller.d-A73Kf6tH.d.ts → controller.d-BcUJlVOt.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-Dzxz22X-.d.ts → controller.d-C-GjOuPV.d.ts} +9 -2
- package/dist/types-chunks/{guardrail.d-Y_AIh8-I.d.ts → guardrail.d-BuI5uypW.d.ts} +11 -5
- package/dist/types-chunks/{history-retrieval.d-Debbzn1z.d.ts → history-retrieval.d-BjJTJtKF.d.ts} +2 -2
- package/dist/types-chunks/{public-api.d-Cg-4GTbK.d.ts → public-api.d-hYcrNiNt.d.ts} +10 -5
- package/dist/types-chunks/{repl.d-Bhrbueab.d.ts → repl.d-DSQdq_FY.d.ts} +5 -5
- package/dist/types-chunks/{resolver.d-C9IW4fmU.d.ts → resolver.d-RyPo99tB.d.ts} +2 -2
- package/dist/types-chunks/{review-inbox.d-DuZqFX-z.d.ts → review-inbox.d-D2EtBlPt.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-BS4lJfL3.d.ts → run-manager.d-i7Q30bns.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-fQ_KENev.d.ts → sdk-session-CAL2IZsM.d.ts} +3 -3
- package/dist/types-chunks/{shell-command-sets.d-DRGjd_7Q.d.ts → shell-command-sets.d-BLjNQYPi.d.ts} +1 -1
- package/dist/types-chunks/{side-query.d-CP1LiRiH.d.ts → side-query.d-iH0P9ASy.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DlLBRqZ9.d.ts → types.d-BSFS8--Y.d.ts} +34 -3
- package/dist/types-chunks/{types.d-CgrXrFrq.d.ts → types.d-CK9A9rpP.d.ts} +1 -1
- package/dist/types-chunks/{types.d-Bo4fyMLu.d.ts → types.d-CqIcGQlc.d.ts} +2 -2
- package/dist/types-chunks/{types.d-BRrJU4pb.d.ts → types.d-DNIzbJD_.d.ts} +4 -4
- package/dist/types-chunks/{utils.d-BIhh_BqE.d.ts → utils.d-CeM3tG-E.d.ts} +6 -6
- package/package.json +2 -2
- package/dist/chunks/agent-IO6TXNCV.js +0 -2
- package/dist/chunks/argument-completer-JMICSGL6.js +0 -2
- package/dist/chunks/chunk-R4EHASEN.js +0 -319
- package/dist/chunks/chunk-TRNAWSXP.js +0 -123
- package/dist/chunks/chunk-UH5WNJXF.js +0 -92
- package/dist/chunks/compaction-config-5RMG22CY.js +0 -2
- package/dist/chunks/dist-DFW7MXT7.js +0 -2
- package/dist/chunks/host-6MMHYTI5.js +0 -2
- package/dist/chunks/run-manager-ISQSWCAM.js +0 -2
- package/dist/chunks/utils-LV7FHKYN.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{ga as Se,ia as Ce}from"./chunk-
|
|
2
|
+
import{ga as Se,ia as Ce}from"./chunk-OG4ML65E.js";import{Aa as Ee,Ba as R,C as B,Ea as Z,F as q,G as me,H as J,Pa as be,Ua as xe,oa as he,pa as ge,q as pe,qa as ve,ra as ye,sa as we,ta as Y}from"./chunk-UNEC2WXJ.js";import{Ia as Pe,Qa as ke}from"./chunk-72H6JNPN.js";import{a as r}from"./chunk-ONUPGMER.js";import m from"fs";import h from"path";import{exec as yt,spawnSync as wt}from"child_process";import{promisify as Et}from"util";import{fileURLToPath as bt}from"url";var Q="en";function Je(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}r(Je,"detectSystemLocale");function Me(e){if(!e||e==="auto"){Q=Je();return}Q=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}r(Me,"setLocale");var _e={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.runtime_session":"Press (y) allow once, (s) allow this Runtime scope for the session, (n) no","confirm.instruction.runtime_persistent":"Press (y) allow once, (s) allow this Runtime scope for the session, (a) always allow this Runtime scope, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.approved_session":"Approved (this session)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.multiselect_min":"Select at least {min} option(s) with Space before confirming.","select.multiselect_max":"Select at most {max} option(s) with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation","todo.progress":"{completed}/{total} completed","todo.transcript.progress":"Plan {completed}/{total} completed","todo.summary.done":"{count} done","todo.summary.more":"+{count} more",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.runtime_session":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.runtime_persistent":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (a) \u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.approved_session":"\u5DF2\u6279\u51C6 (\u672C\u4F1A\u8BDD)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.multiselect_min":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u81F3\u5C11\u9009\u62E9 {min} \u4E2A\u9009\u9879\u3002","select.multiselect_max":"\u6700\u591A\u53EA\u80FD\u9009\u62E9 {max} \u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED","todo.progress":"{completed}/{total} \u5DF2\u5B8C\u6210","todo.transcript.progress":"\u8BA1\u5212 {completed}/{total} \u5DF2\u5B8C\u6210","todo.summary.done":"{count} \u9879\u5DF2\u5B8C\u6210","todo.summary.more":"\u53E6\u6709 {count} \u9879",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function qt(e,t){let o=_e[Q][e]??_e.en[e]??e;if(t)for(let[i,s]of Object.entries(t))o=o.replace(`{${i}}`,String(s));return o}r(qt,"t");var Ae={core:`// Split configs: ~/.kodax/integrations/mcp.json, extensions.json, and a2a.json.
|
|
3
3
|
// KodaX core configuration template.
|
|
4
4
|
// Copy only the fields you need to ~/.kodax/config.json (strict JSON).
|
|
5
5
|
// MCP, A2A, and Extensions live in ~/.kodax/integrations/*.json; use
|
|
@@ -273,6 +273,6 @@ import{ga as Se,ia as Ce}from"./chunk-Q6UAGROD.js";import{Aa as Ee,Ba as R,C as
|
|
|
273
273
|
"version": 1,
|
|
274
274
|
"paths": []
|
|
275
275
|
}
|
|
276
|
-
`};function Oe(e){return Ae[e]}r(Oe,"getConfigTemplate");import{closeSync as ne,existsSync as d,fsyncSync as Le,linkSync as rt,mkdirSync as re,openSync as ie,readFileSync as Ne,renameSync as $e,statSync as it,unlinkSync as j,watch as st,writeFileSync as je}from"node:fs";import{createHash as at}from"node:crypto";import f from"node:path";import{closeSync as Ye,mkdirSync as Ze,openSync as Qe,rmSync as et}from"node:fs";import tt from"node:path";var ee=class extends Error{static{r(this,"CoreConfigWriteConflictError")}constructor(t){super(`Core configuration is being changed by another KodaX writer: ${t}`),this.name="CoreConfigWriteConflictError"}};function nt(e){return`${e}.write.lock`}r(nt,"coreConfigWriteLockPath");function ot(e){if(!(!(e instanceof Error)||!("code"in e)))return typeof e.code=="string"?e.code:void 0}r(ot,"errorCode");function E(e,t){Ze(tt.dirname(e),{recursive:!0,mode:448});let n=nt(e),o;try{o=Qe(n,"wx",384)}catch(i){throw ot(i)==="EEXIST"?new ee(e):new Error(`Failed to acquire the core configuration write lock: ${e}`,{cause:i})}try{return t()}finally{Ye(o),et(n,{force:!0})}}r(E,"withCoreConfigWriteLock");var k=class extends Error{static{r(this,"IntegrationConfigConflictError")}constructor(t,n,o){super(`Integration configuration revision changed for ${f.basename(t)} (expected ${n??"missing"}, actual ${o??"missing"}).`),this.name="IntegrationConfigConflictError"}},ct={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},lt=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function P(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}r(P,"isRecord");function
|
|
276
|
+
`};function Oe(e){return Ae[e]}r(Oe,"getConfigTemplate");import{closeSync as ne,existsSync as d,fsyncSync as Le,linkSync as rt,mkdirSync as re,openSync as ie,readFileSync as Ne,renameSync as $e,statSync as it,unlinkSync as j,watch as st,writeFileSync as je}from"node:fs";import{createHash as at}from"node:crypto";import f from"node:path";import{closeSync as Ye,mkdirSync as Ze,openSync as Qe,rmSync as et}from"node:fs";import tt from"node:path";var ee=class extends Error{static{r(this,"CoreConfigWriteConflictError")}constructor(t){super(`Core configuration is being changed by another KodaX writer: ${t}`),this.name="CoreConfigWriteConflictError"}};function nt(e){return`${e}.write.lock`}r(nt,"coreConfigWriteLockPath");function ot(e){if(!(!(e instanceof Error)||!("code"in e)))return typeof e.code=="string"?e.code:void 0}r(ot,"errorCode");function E(e,t){Ze(tt.dirname(e),{recursive:!0,mode:448});let n=nt(e),o;try{o=Qe(n,"wx",384)}catch(i){throw ot(i)==="EEXIST"?new ee(e):new Error(`Failed to acquire the core configuration write lock: ${e}`,{cause:i})}try{return t()}finally{Ye(o),et(n,{force:!0})}}r(E,"withCoreConfigWriteLock");var k=class extends Error{static{r(this,"IntegrationConfigConflictError")}constructor(t,n,o){super(`Integration configuration revision changed for ${f.basename(t)} (expected ${n??"missing"}, actual ${o??"missing"}).`),this.name="IntegrationConfigConflictError"}},ct={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},lt=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function P(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}r(P,"isRecord");function b(e,t){if(!P(e))throw new Error(`${t} must be an object.`);return e}r(b,"requireRecord");function K(e,t,n){let o=Object.keys(e).find(i=>!t.has(i));if(o!==void 0)throw new Error(`${n} has unknown field "${o}".`)}r(K,"assertNoUnknownKeys");function Ke(e,t){if(e.version!==1)throw new Error(`${t} version must be 1.`)}r(Ke,"requireVersionOne");function Ie(e,t){let n=b(e,t);for(let[o,i]of Object.entries(n))if(o.trim().length===0||typeof i!="string")throw new Error(`${t} must contain non-empty string keys and string values.`);return structuredClone(n)}r(Ie,"requireStringMap");function oe(e,t){if(!Array.isArray(e)||!e.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error(`${t} must be an array of non-empty strings.`);return e.map(n=>n.trim())}r(oe,"requireStringArray");function te(e,t){if(e!==void 0&&(!Number.isFinite(e)||Number(e)<=0))throw new Error(`${t} must be a positive number.`)}r(te,"validatePositiveNumber");function dt(e,t){if(e.trim().length===0)throw new Error("MCP server names must not be empty.");let n=b(t,`MCP server "${e}"`);K(n,lt,`MCP server "${e}"`);let o=n.type??"stdio";if(!["stdio","sse","streamable-http","http"].includes(String(o)))throw new Error(`MCP server "${e}" has an unsupported transport type.`);if(o==="stdio"){if(typeof n.command!="string"||n.command.trim().length===0)throw new Error(`MCP server "${e}" stdio transport requires command.`)}else if(typeof n.url!="string"||n.url.trim().length===0)throw new Error(`MCP server "${e}" ${String(o)} transport requires url.`);if(n.args!==void 0&&oe(n.args,`MCP server "${e}" args`),n.cwd!==void 0&&typeof n.cwd!="string")throw new Error(`MCP server "${e}" cwd must be a string.`);if(n.env!==void 0&&Ie(n.env,`MCP server "${e}" env`),n.headers!==void 0&&Ie(n.headers,`MCP server "${e}" headers`),n.connect!==void 0&&!["lazy","prewarm","disabled"].includes(String(n.connect)))throw new Error(`MCP server "${e}" has an unsupported connect mode.`);if(te(n.startupTimeoutMs,`MCP server "${e}" startupTimeoutMs`),te(n.requestTimeoutMs,`MCP server "${e}" requestTimeoutMs`),n.auth!==void 0){let i=b(n.auth,`MCP server "${e}" auth`);if(K(i,new Set(["type","clientId","authorizationUrl","tokenUrl","scopes","redirectPort"]),`MCP server "${e}" auth`),i.type!=="oauth2")throw new Error(`MCP server "${e}" auth type must be oauth2.`);for(let a of["clientId","authorizationUrl","tokenUrl"])if(i[a]!==void 0&&typeof i[a]!="string")throw new Error(`MCP server "${e}" auth.${a} must be a string.`);i.scopes!==void 0&&oe(i.scopes,`MCP server "${e}" auth.scopes`),te(i.redirectPort,`MCP server "${e}" auth.redirectPort`)}return structuredClone(n)}r(dt,"parseMcpServer");function S(e){let t=b(e,"MCP integration config");K(t,new Set(["version","servers"]),"MCP integration config"),Ke(t,"MCP integration config");let n=b(t.servers,"MCP integration config servers"),o={};for(let[i,s]of Object.entries(n))o[i]=dt(i,s);return{version:1,servers:o}}r(S,"parseMcpIntegrationDocument");function C(e){let t=b(e,"Extensions integration config");K(t,new Set(["version","paths"]),"Extensions integration config"),Ke(t,"Extensions integration config");let n=oe(t.paths,"Extensions integration config paths");if(new Set(n).size!==n.length)throw new Error("Extensions integration config paths must not contain duplicates.");return{version:1,paths:n}}r(C,"parseExtensionsIntegrationDocument");function _(e,t){return f.join(f.resolve(t),"integrations",ct[e])}r(_,"resolveIntegrationConfigPath");function A(e){return f.join(f.resolve(e),"config.json")}r(A,"coreConfigPath");function Xe(e){return at("sha256").update(e).digest("hex")}r(Xe,"hashText");function se(e){let t=Ne(e,"utf8");try{return{raw:t,value:JSON.parse(t)}}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`Invalid JSON: ${o}`)}}r(se,"readJsonFile");function M(e){return{domain:e.domain,source:e.source,path:e.path,revision:Xe(e.raw),document:structuredClone(e.document),loadedAt:new Date().toISOString()}}r(M,"snapshot");function X(e){let t=A(e);return d(t)?b(se(t).value,"Core config"):{}}r(X,"readCoreConfig");function F(e){let t=_("mcp",e);if(d(t)){let s=se(t);return M({domain:"mcp",source:"user",path:t,raw:s.raw,document:S(s.value)})}let n=A(e),o=X(e).mcpServers,i=S({version:1,servers:o===void 0?{}:o});return M({domain:"mcp",source:o===void 0?"default":"legacy-user",path:o===void 0?t:n,raw:JSON.stringify(i),document:i})}r(F,"readMcpIntegration");function U(e){let t=_("extensions",e);if(d(t)){let s=se(t);return M({domain:"extensions",source:"user",path:t,raw:s.raw,document:C(s.value)})}let n=A(e),o=X(e).extensions,i=C({version:1,paths:o===void 0?[]:o});return M({domain:"extensions",source:o===void 0?"default":"legacy-user",path:o===void 0?t:n,raw:JSON.stringify(i),document:i})}r(U,"readExtensionsIntegration");function ut(e){if(!P(e))return[];let t=[],n=/(token|secret|password|api[_-]?key|authorization)/i;for(let[o,i]of Object.entries(e))if(P(i))for(let s of["env","headers"]){let a=i[s];if(P(a))for(let[c,l]of Object.entries(a))n.test(c)&&typeof l=="string"&&!l.startsWith("${env:")&&t.push(`MCP server "${o}" ${s}.${c} may contain a literal secret.`)}return t}r(ut,"likelySecretWarnings");function ft(e){let t=X(e),n=_("mcp",e),o=_("extensions",e),i=t.mcpServers,s=t.extensions,a=P(i)?Object.keys(i).length:0,c=Array.isArray(s)?s.length:0,l=r((g,L,N)=>d(g)?{action:"none",entries:L,destination:g,reason:"destination-exists"}:N?{action:"create",entries:L,destination:g}:{action:"none",entries:0,destination:g,reason:"legacy-absent"},"domainPlan");return{mcp:l(n,a,i!==void 0),extensions:l(o,c,s!==void 0),warnings:ut(i)}}r(ft,"planLegacyIntegrationMigration");function pt(e,t){let n=A(e);re(f.dirname(n),{recursive:!0,mode:448});let o=`${n}.${process.pid}.${Date.now()}.tmp`,i=ie(o,"wx",384);try{je(i,`${JSON.stringify(t,null,2)}
|
|
277
277
|
`,"utf8"),Le(i)}finally{ne(i)}try{$e(o,n)}catch(s){throw d(o)&&j(o),new Error("Failed to atomically clean legacy integration fields.",{cause:s})}}r(pt,"writeCoreConfigAtomically");function ln(e){return E(A(e.configHome),()=>mt(e))}r(ln,"migrateLegacyIntegrationConfig");function mt(e){let t=ft(e.configHome),n=X(e.configHome),o=t.mcp.action==="create"?S({version:1,servers:P(n.mcpServers)?n.mcpServers:{}}):void 0,i=t.extensions.action==="create"?C({version:1,paths:Array.isArray(n.extensions)?n.extensions:[]}):void 0,s=[];if(o)try{T({domain:"mcp",configHome:e.configHome,expectedRevision:null,document:o,validate:S}),s.push("mcp")}catch(c){if(!(c instanceof k))throw c}if(i)try{T({domain:"extensions",configHome:e.configHome,expectedRevision:null,document:i,validate:C}),s.push("extensions")}catch(c){if(!(c instanceof k))throw c}let a=!1;if(e.cleanupLegacy&&d(A(e.configHome))){let c={...n};d(t.mcp.destination)&&delete c.mcpServers,d(t.extensions.destination)&&delete c.extensions,ht(n,c)||(pt(e.configHome,c),a=!0)}return{...t,applied:s,cleanedLegacy:a}}r(mt,"migrateLegacyIntegrationConfigUnlocked");function ht(e,t){return JSON.stringify(e)===JSON.stringify(t)}r(ht,"isDeepStrictEqualForConfig");function Re(e){return d(e)?Xe(Ne(e,"utf8")):void 0}r(Re,"currentUserRevision");function gt(e){let t=`${e}.lock`;try{return{fd:ie(t,"wx",384),path:t}}catch(n){throw new Error(`Integration configuration is busy: ${f.basename(e)}`,{cause:n})}}r(gt,"acquireWriteLock");function T(e){let t=_(e.domain,e.configHome),n=e.validate(e.document);re(f.dirname(t),{recursive:!0,mode:448});let o=gt(t);try{let i=Re(t),s=e.expectedRevision===null?void 0:e.expectedRevision;if(e.expectedRevision!==void 0&&i!==s)throw new k(t,s,i);let a=`${JSON.stringify(n,null,2)}
|
|
278
|
-
`,c=`${t}.${process.pid}.${Date.now()}.tmp`,l=ie(c,"wx",384);try{je(l,a,"utf8"),Le(l)}finally{ne(l)}try{e.expectedRevision===null?(rt(c,t),j(c)):$e(c,t)}catch(g){throw d(c)&&j(c),e.expectedRevision===null&&d(t)?new k(t,void 0,Re(t)):new Error(`Failed to atomically replace ${f.basename(t)}.`,{cause:g})}return M({domain:e.domain,source:"user",path:t,raw:a,document:n})}finally{ne(o.fd),d(o.path)&&j(o.path)}}r(T,"writeIntegrationDocument");function vt(e){if(!d(e))return"missing";let t=it(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}r(vt,"metadataSignature");function Te(e){return e.map(t=>`${t}:${vt(t)}`).join("|")}r(Te,"observationSignature");function $(e,t){return{code:e,message:t,time:new Date().toISOString()}}r($,"safeDiagnostic");var De=class{static{r(this,"IntegrationConfigController")}#u;#n;#r;#a;#m;#f;#p;#e;#t;#c;#l;#h="";#s=[];#o;#i;#g=Promise.resolve();#d=new Set;constructor(t){this.#u=t.domain,this.#n=_(t.domain,t.configHome),this.#r=t.fallbackPath===void 0?void 0:f.resolve(t.fallbackPath),this.#a=this.#r===void 0?[this.#n]:[this.#n,this.#r],this.#f=t.validate,this.#m=t.read,this.#p=t.coldStartDefault===void 0?void 0:structuredClone(this.#f(t.coldStartDefault))}async initialize(){let t=await this.reload();if(!t.ok&&!this.#e&&this.#p!==void 0){let n=structuredClone(this.#p);this.#e=M({domain:this.#u,source:"default",path:this.#n,raw:JSON.stringify(n),document:n})}if(!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){let t=this.#t?this.#c:void 0,n=this.#t?this.#l:void 0;return{domain:this.#u,path:t??this.#e?.path??this.#n,...this.#e?{revision:this.#e.revision,lastReloadAt:this.#e.loadedAt}:{},...n??this.#e?.source?{source:n??this.#e?.source}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#s.length>0}}subscribe(t){return this.#d.add(t),()=>{this.#d.delete(t)}}reload(){let t=this.#g.then(()=>this.#v());return this.#g=t.then(()=>{},()=>{}),t}async#v(){this.#h=Te(this.#a);let t;try{t=this.#m(),this.#f(t.document)}catch{let o=this.#y();return this.#c=o.path,this.#l=o.source,this.#t=$("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let o of this.#d)await o(structuredClone(t),n)}catch{return this.#c=t.path,this.#l=t.source,this.#t=$("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,this.#c=void 0,this.#l=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Te(this.#a)===this.#h&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(this.#s.length>0||this.#i)return;re(f.dirname(this.#n),{recursive:!0,mode:448});let o=new Map;for(let i of this.#a){let s=f.dirname(i),a=o.get(s)??new Set;a.add(f.basename(i)),o.set(s,a)}for(let[i,s]of o)try{let a=st(i,(c,l)=>{l!==null&&!s.has(l.toString())||(this.#o&&clearTimeout(this.#o),this.#o=setTimeout(()=>{this.#o=void 0,this.reload()},t),this.#o.unref?.())});a.unref(),a.on("error",()=>{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}),this.#s.push(a)}catch{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}close(){this.#o&&clearTimeout(this.#o),this.#o=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0;for(let t of this.#s)t.close();this.#s.length=0,this.#d.clear()}#y(){return d(this.#n)?{path:this.#n,source:"user"}:this.#r&&d(this.#r)?{path:this.#r,source:"legacy-user"}:{path:this.#n,source:"default"}}};var bt=Et(yt),Fe=2,Ue=!1,u=Pe(),kn=h.join(u,"sessions"),p=h.join(u,"config.json"),Sn=60,v=null,ce=!1,Pt="dumb";function kt(e){let t=h.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",o=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",o],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",o]:["-lc",o],sentinel:n}}r(kt,"buildShellEnvCommand");function St(e,t){let n=`${t}\0`,o=e.lastIndexOf(n);if(o===-1)return{};let i=e.slice(o+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let c=a.indexOf("=");c<=0||(s[a.slice(0,c)]=a.slice(c+1))}return s}r(St,"parseNullDelimitedShellEnv");function Ct(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let o=e.shell??t.SHELL;if(!o||!h.isAbsolute(o))return!1;let{args:i,sentinel:s}=kt(o),a=e.run??wt,c={...t,TERM:Pt},l=a(o,i,{encoding:"utf8",env:c,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(l.status!==0||!l.stdout)return!1;let g=typeof l.stdout=="string"?l.stdout:l.stdout.toString("utf8"),L=St(g,s),N=!1;for(let[z,qe]of Object.entries(L))z!=="TERM"&&t[z]===void 0&&(t[z]=qe,N=!0);return N}r(Ct,"hydrateProcessEnvFromShell");function _t(){if(!ce){ce=!0;try{Ct()}catch{}}}r(_t,"ensureShellEnvironmentHydrated");function Cn(){ce=!1}r(Cn,"resetShellEnvironmentHydrationForTesting");function Mt(e){Ee(e.customProviders??[])}r(Mt,"registerConfiguredCustomProviders");function le(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}r(le,"normalizeConfiguredExtensions");function At(e){if(e===void 0||e===null||typeof e!="object"||Array.isArray(e))return;let t=e.envPass;if(!Array.isArray(t))return;let n=t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(o));return{envPass:[...new Set(n)]}}r(At,"normalizeSandboxConfig");function ue(){let e=m.readFileSync(p,"utf8"),t=JSON.parse(e);if(!(t===null||typeof t!="object"||Array.isArray(t)))return{raw:e,value:t}}r(ue,"readPersistedCoreConfig");function Ve(e){m.writeFileSync(p,JSON.stringify(e,null,2))}r(Ve,"writePersistedCoreConfig");function Ot(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{E(p,()=>{let n=ue();n?.value.permissionMode==="default"&&Ve({...n.value,permissionMode:"accept-edits"})})}catch{}return t}r(Ot,"migrateLegacyPermissionModeInConfig");function It(e){if(e.permissionMode!=="auto-in-project")return e;try{E(p,()=>{let t=ue();if(t?.value.permissionMode!=="auto-in-project")return;let n=t.raw.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t.raw&&m.writeFileSync(p,n)})}catch{}return{...e,permissionMode:"auto"}}r(It,"migrateAutoInProjectAliasInConfig");function Rt(){if(v)return v;let e="0.7.86";if(e)return v=e,v;let t=h.join(h.dirname(xt(import.meta.url)),"../../package.json");if(m.existsSync(t))try{return v=JSON.parse(m.readFileSync(t,"utf-8")).version??"0.0.0",v??"0.0.0"}catch{}return v="0.0.0",v}r(Rt,"getVersion");var _n=Rt();function Tt(e){return ge(e)}r(Tt,"getProviderModel");function de(e,t){let n=new Set(e.map(i=>i.toLowerCase())),o=[...e];for(let i of t)n.has(i.toLowerCase())||o.push(i);return o}r(de,"mergeModels");function Dt(e,t){t||(t=fe().providerModels);let n=t?.[e];if(n&&n.length>0){try{let o=Y(e);if(o.length>0)return de(n,o)}catch{}try{let o=R(e);if(o)return de(n,o.getAvailableModels())}catch{}return n}try{let o=Y(e);if(o.length>0)return o}catch{}try{let o=R(e);if(o)return o.getAvailableModels()}catch{}return[]}r(Dt,"getProviderAvailableModels");function Lt(e,t){let n=ve(e,t);if(n!=="unknown")return n;try{let o=R(e);if(o)return o.getReasoningCapability(t)}catch{}return"unknown"}r(Lt,"getProviderReasoningCapability");function Nt(e){let t=ye(e);if(t)return t;try{return Z().find(o=>o.name===e)?.capabilityProfile??null}catch{return null}}r(Nt,"getProviderCapabilityProfile");function ze(e,t){let n=Nt(e),o=Lt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:o};try{let i=xe(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}r(ze,"getProviderCapabilityMetadata");function Mn(e,t){let n=ze(e,t);return n?Se({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}r(Mn,"getProviderCapabilitySnapshot");function $t(e,t,n,o){let i=ze(e,t);return i?Ce({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:o}):null}r($t,"getProviderPolicyDecision");function An(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",o=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${o}`}r(An,"describeProviderCapabilitySummary");function On(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}r(On,"formatReasoningCapabilityShort");function I(e){if(e)return e==="none"?"off":e}r(I,"formatReasoningEffortForDisplay");function G(e,t){let n=I(t);n&&!e.includes(n)&&e.push(n)}r(G,"pushUniqueEffortDisplay");function In(e,t){let n=["auto"],i=V(e,t)?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])G(n,s);return n}for(let s of i)G(n,s.value);return n}r(In,"getProviderReasoningEffortOptions");function Rn(e,t){let n=V(e,t),o=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(l=>l.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let l of["low","medium","high"])G(s,l);a=!0}else for(let l of i){if(l.value==="none"){a=!0;continue}if(o.has(l.value)){a=!0;continue}G(s,l.value)}let c=[];return a&&c.push("off"),c.push(...s),c.push("auto"),c}r(Rn,"getProviderReasoningEffortCycle");function jt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}r(jt,"legacyReasoningModeToEffortDisplay");function V(e,t){let n=t??Tt(e);if(!n)return;let o=be(e,n)?.reasoningProfile;if(o)return pe(o,ke(e,n))}r(V,"resolveReasoningProfileForDisplay");function Tn(e){let t=I(e.effort)??jt(e.reasoningMode,e.thinking),n=V(e.provider,e.model);if(!n)return t;try{let o=me({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=I(o.configuredEffort)??t,a=o.configuredEffort!==void 0&&n.disabledEfforts?.includes(o.configuredEffort)===!0?"off":I(o.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let o=J({currentEffort:e.effort,capability:n}),i=I(e.effort)??t,s=I(o.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}r(Tn,"formatReasoningEffortStatusLabel");function Dn(e){let t=zt(e);if(!t)return{preserved:!0};let n=V(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let o=J({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:o.effectiveEffort,preserved:o.preserved,diagnostic:o.diagnostic}}r(Dn,"resolveProviderReasoningRuntimeEffort");function Kt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}r(Kt,"describeReasoningCapabilityControl");function Ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}r(Ln,"describeReasoningExecution");function Nn(e){let t=[];e||(e=fe().providerModels);for(let n of we())t.push({name:n.name,model:n.model,models:Dt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=Z().map(o=>({...o,models:(()=>{let i=e?.[o.name];return i&&i.length>0?de(i,o.models):o.models})()}));t.push(...n)}catch{}return t}r(Nn,"getProviderList");function $n(e){if(he(e))return!0;try{return R(e)?.isConfigured()??!1}catch{return!1}}r($n,"isProviderConfigured");var H=class extends Error{static{r(this,"InvalidAgentModeConfigError")}};function Xt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new H(`Invalid agentMode "${t}" in ${p}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,Fe)};try{E(p,()=>{let o=ue();if(!o)return;let i=o.value.agentMode;i!=="amaw"&&i!=="ama-workflow"||Ve({...o.value,agentMode:"ama",schemaVersion:Math.max(typeof o.value.schemaVersion=="number"?o.value.schemaVersion:0,Fe)})})}catch{}return Ue||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ue=!0),n}r(Xt,"migrateLegacyAgentModeConfig");function fe(){try{if(m.existsSync(p)){let n=JSON.parse(m.readFileSync(p,"utf-8")),o=Xt(n),i=o.reasoningCeiling??o.reasoningMode,s=[],a={};try{s=[...U(u).document.paths]}catch{}try{a=F(u).document.servers}catch{}return It(Ot({...o,reasoningMode:i,extensions:le(s),mcpServers:a,sandbox:At(o.sandbox)}))}}catch(n){if(n instanceof H)throw n}let e,t;try{let n=U(u);n.source!=="default"&&(e=le([...n.document.paths]))}catch{}try{let n=F(u);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}r(fe,"loadConfig");var Ft=h.join(u,"config.example.jsonc"),ae={mcp:h.join(u,"integrations","mcp.example.jsonc"),a2a:h.join(u,"integrations","a2a.example.jsonc"),extensions:h.join(u,"integrations","extensions.example.jsonc")},Ut=[{name:"core",path:Ft},{name:"mcp",path:ae.mcp},{name:"a2a",path:ae.a2a},{name:"extensions",path:ae.extensions}];function Wt(){let e=[];for(let t of Ut)try{if(m.existsSync(t.path))continue;m.mkdirSync(h.dirname(t.path),{recursive:!0}),m.writeFileSync(t.path,Oe(t.name),"utf8"),e.push(t.path)}catch{}return e}r(Wt,"ensureExampleConfigFiles");function jn(){return Wt()[0]}r(jn,"ensureExampleConfigFile");var W=new Map;function Gt(e,t){let n=process.env[e],o=W.get(e),i=o!==void 0&&n===o;if(n!==void 0&&!i){W.delete(e);return}if(t===void 0){i&&delete process.env[e],W.delete(e);return}process.env[e]=t,W.set(e,t)}r(Gt,"projectConfigEnvironment");var Be=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:r(e=>b(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:r(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:r(e=>O(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:r(e=>O(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:r(e=>O(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:r(e=>We(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:r(e=>y(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:r(e=>y(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:r(e=>y(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:r(e=>y(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:r(e=>y(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:r(e=>y(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:r(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:r(e=>b(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:r(e=>b(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:r(e=>O(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:r(e=>O(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:r(e=>O(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:r(e=>y(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:r(e=>b(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:r(e=>b(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:r(e=>b(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:r(e=>y(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:r(e=>b(e.workflow?.maxConcurrency),"value")},{configPath:"sandbox.envPass",env:"KODAX_SANDBOX_ENV_PASS",value:r(e=>We(e.sandbox?.envPass)||void 0,"value")}];function Ht(e){for(let t of Be)Gt(t.env,t.value(e))}r(Ht,"applyConfigSurfaceBridges");function y(e){return e?.trim()||void 0}r(y,"normalizedConfigString");function b(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}r(b,"configNumberString");function O(e){return e===void 0?void 0:e?"1":"0"}r(O,"configBooleanString");function We(e){return e?.filter(t=>t.trim().length>0).join(",")}r(We,"configStringList");var Kn=[...Be.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function Vt(e){Ht(e)}r(Vt,"applyConfigEnvironment");function Xn(){_t();let e=fe();return Vt(e),Mt(e),Me(e.locale),e}r(Xn,"prepareRuntimeConfig");function Fn(e){let{extensions:t,mcpServers:n,...o}=e;if(E(p,()=>{let i={};if(m.existsSync(p))try{let a=JSON.parse(m.readFileSync(p,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(i=a)}catch{}let s={...i,...o};for(let a of Object.keys(o))o[a]===void 0&&delete s[a];m.writeFileSync(p,JSON.stringify(s,null,2))}),t!==void 0){let i=U(u);T({domain:"extensions",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,paths:le(t)??[]},validate:C})}if(n!==void 0){let i=F(u);T({domain:"mcp",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,servers:n},validate:S})}}r(Fn,"saveConfig");function Un(e,t,n){return e.effort!==void 0||q(n).kind==="value"||t.effort!==void 0}r(Un,"resolveInitialEffortOverride");function w(e){return e?.trim()?e:void 0}r(w,"nonEmptySelection");function Wn(e){return w(e.explicitProvider)??w(e.environmentProvider)??w(e.configuredProvider)??e.defaultProvider}r(Wn,"resolveRuntimeProviderSelection");function Gn(e){let t=w(e.explicitModel);if(t)return t;let n=w(e.configuredModel);if(!n)return;let o=w(e.explicitProvider)??w(e.environmentProvider);return o?w(e.configuredProvider)===o?n:void 0:n}r(Gn,"resolveRuntimeModelSelection");function Hn(e){if(e.explicitEffort!==void 0)return B(e.explicitEffort);let t=q(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:B(e.configuredEffort)}r(Hn,"resolveRuntimeEffortSelection");function zt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}r(zt,"resolvePermissionModeEffort");async function Vn(e){try{let{stdout:t}=await bt("git rev-parse --show-toplevel",{cwd:e,windowsHide:!0});return t.trim()}catch{return null}}r(Vn,"getGitRoot");function Bt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}r(Bt,"formatProviderSourceKind");function zn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Bt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Kt(e.reasoningCapability)}`]}r(zn,"formatProviderCapabilityDetailLines");function Bn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:$t(e,t,n,i.hints)})).filter(i=>i.decision!==null)}r(Bn,"getProviderCommonPolicyScenarios");var Ge=.5,He=0,D={locked:!1,queue:[]};async function qn(e){for(;D.locked;)await new Promise(t=>D.queue.push(t));D.locked=!0;try{let t=(Date.now()-He)/1e3;t<Ge&&await new Promise(o=>setTimeout(o,(Ge-t)*1e3));let n=await e();return He=Date.now(),n}finally{D.locked=!1;let t=D.queue.shift();t&&t()}}r(qn,"rateLimitedCall");export{qt as a,Ae as b,Oe as c,ee as d,nt as e,E as f,k as g,S as h,C as i,_ as j,F as k,U as l,ft as m,ln as n,T as o,De as p,u as q,kn as r,p as s,Sn as t,Ct as u,Cn as v,Mt as w,Rt as x,_n as y,Tt as z,Dt as A,Lt as B,Nt as C,Mn as D,$t as E,An as F,On as G,I as H,In as I,Rn as J,Tn as K,Dn as L,Kt as M,Ln as N,Nn as O,$n as P,fe as Q,Ft as R,ae as S,Wt as T,jn as U,Kn as V,Vt as W,Xn as X,Fn as Y,Un as Z,Wn as _,Gn as $,Hn as aa,zt as ba,Vn as ca,Bt as da,zn as ea,Bn as fa,qn as ga};
|
|
278
|
+
`,c=`${t}.${process.pid}.${Date.now()}.tmp`,l=ie(c,"wx",384);try{je(l,a,"utf8"),Le(l)}finally{ne(l)}try{e.expectedRevision===null?(rt(c,t),j(c)):$e(c,t)}catch(g){throw d(c)&&j(c),e.expectedRevision===null&&d(t)?new k(t,void 0,Re(t)):new Error(`Failed to atomically replace ${f.basename(t)}.`,{cause:g})}return M({domain:e.domain,source:"user",path:t,raw:a,document:n})}finally{ne(o.fd),d(o.path)&&j(o.path)}}r(T,"writeIntegrationDocument");function vt(e){if(!d(e))return"missing";let t=it(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}r(vt,"metadataSignature");function Te(e){return e.map(t=>`${t}:${vt(t)}`).join("|")}r(Te,"observationSignature");function $(e,t){return{code:e,message:t,time:new Date().toISOString()}}r($,"safeDiagnostic");var De=class{static{r(this,"IntegrationConfigController")}#u;#n;#r;#a;#m;#f;#p;#e;#t;#c;#l;#h="";#s=[];#o;#i;#g=Promise.resolve();#d=new Set;constructor(t){this.#u=t.domain,this.#n=_(t.domain,t.configHome),this.#r=t.fallbackPath===void 0?void 0:f.resolve(t.fallbackPath),this.#a=this.#r===void 0?[this.#n]:[this.#n,this.#r],this.#f=t.validate,this.#m=t.read,this.#p=t.coldStartDefault===void 0?void 0:structuredClone(this.#f(t.coldStartDefault))}async initialize(){let t=await this.reload();if(!t.ok&&!this.#e&&this.#p!==void 0){let n=structuredClone(this.#p);this.#e=M({domain:this.#u,source:"default",path:this.#n,raw:JSON.stringify(n),document:n})}if(!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){let t=this.#t?this.#c:void 0,n=this.#t?this.#l:void 0;return{domain:this.#u,path:t??this.#e?.path??this.#n,...this.#e?{revision:this.#e.revision,lastReloadAt:this.#e.loadedAt}:{},...n??this.#e?.source?{source:n??this.#e?.source}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#s.length>0}}subscribe(t){return this.#d.add(t),()=>{this.#d.delete(t)}}reload(){let t=this.#g.then(()=>this.#v());return this.#g=t.then(()=>{},()=>{}),t}async#v(){this.#h=Te(this.#a);let t;try{t=this.#m(),this.#f(t.document)}catch{let o=this.#y();return this.#c=o.path,this.#l=o.source,this.#t=$("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let o of this.#d)await o(structuredClone(t),n)}catch{return this.#c=t.path,this.#l=t.source,this.#t=$("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,this.#c=void 0,this.#l=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Te(this.#a)===this.#h&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(this.#s.length>0||this.#i)return;re(f.dirname(this.#n),{recursive:!0,mode:448});let o=new Map;for(let i of this.#a){let s=f.dirname(i),a=o.get(s)??new Set;a.add(f.basename(i)),o.set(s,a)}for(let[i,s]of o)try{let a=st(i,(c,l)=>{l!==null&&!s.has(l.toString())||(this.#o&&clearTimeout(this.#o),this.#o=setTimeout(()=>{this.#o=void 0,this.reload()},t),this.#o.unref?.())});a.unref(),a.on("error",()=>{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}),this.#s.push(a)}catch{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}close(){this.#o&&clearTimeout(this.#o),this.#o=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0;for(let t of this.#s)t.close();this.#s.length=0,this.#d.clear()}#y(){return d(this.#n)?{path:this.#n,source:"user"}:this.#r&&d(this.#r)?{path:this.#r,source:"legacy-user"}:{path:this.#n,source:"default"}}};var xt=Et(yt),Fe=2,Ue=!1,u=Pe(),kn=h.join(u,"sessions"),p=h.join(u,"config.json"),Sn=60,v=null,ce=!1,Pt="dumb";function kt(e){let t=h.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",o=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",o],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",o]:["-lc",o],sentinel:n}}r(kt,"buildShellEnvCommand");function St(e,t){let n=`${t}\0`,o=e.lastIndexOf(n);if(o===-1)return{};let i=e.slice(o+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let c=a.indexOf("=");c<=0||(s[a.slice(0,c)]=a.slice(c+1))}return s}r(St,"parseNullDelimitedShellEnv");function Ct(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let o=e.shell??t.SHELL;if(!o||!h.isAbsolute(o))return!1;let{args:i,sentinel:s}=kt(o),a=e.run??wt,c={...t,TERM:Pt},l=a(o,i,{encoding:"utf8",env:c,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(l.status!==0||!l.stdout)return!1;let g=typeof l.stdout=="string"?l.stdout:l.stdout.toString("utf8"),L=St(g,s),N=!1;for(let[z,qe]of Object.entries(L))z!=="TERM"&&t[z]===void 0&&(t[z]=qe,N=!0);return N}r(Ct,"hydrateProcessEnvFromShell");function _t(){if(!ce){ce=!0;try{Ct()}catch{}}}r(_t,"ensureShellEnvironmentHydrated");function Cn(){ce=!1}r(Cn,"resetShellEnvironmentHydrationForTesting");function Mt(e){Ee(e.customProviders??[])}r(Mt,"registerConfiguredCustomProviders");function le(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}r(le,"normalizeConfiguredExtensions");function At(e){if(e===void 0||e===null||typeof e!="object"||Array.isArray(e))return;let t=e.envPass;if(!Array.isArray(t))return;let n=t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(o));return{envPass:[...new Set(n)]}}r(At,"normalizeSandboxConfig");function ue(){let e=m.readFileSync(p,"utf8"),t=JSON.parse(e);if(!(t===null||typeof t!="object"||Array.isArray(t)))return{raw:e,value:t}}r(ue,"readPersistedCoreConfig");function Ve(e){m.writeFileSync(p,JSON.stringify(e,null,2))}r(Ve,"writePersistedCoreConfig");function Ot(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{E(p,()=>{let n=ue();n?.value.permissionMode==="default"&&Ve({...n.value,permissionMode:"accept-edits"})})}catch{}return t}r(Ot,"migrateLegacyPermissionModeInConfig");function It(e){if(e.permissionMode!=="auto-in-project")return e;try{E(p,()=>{let t=ue();if(t?.value.permissionMode!=="auto-in-project")return;let n=t.raw.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t.raw&&m.writeFileSync(p,n)})}catch{}return{...e,permissionMode:"auto"}}r(It,"migrateAutoInProjectAliasInConfig");function Rt(){if(v)return v;let e="0.7.88";if(e)return v=e,v;let t=h.join(h.dirname(bt(import.meta.url)),"../../package.json");if(m.existsSync(t))try{return v=JSON.parse(m.readFileSync(t,"utf-8")).version??"0.0.0",v??"0.0.0"}catch{}return v="0.0.0",v}r(Rt,"getVersion");var _n=Rt();function Tt(e){return ge(e)}r(Tt,"getProviderModel");function de(e,t){let n=new Set(e.map(i=>i.toLowerCase())),o=[...e];for(let i of t)n.has(i.toLowerCase())||o.push(i);return o}r(de,"mergeModels");function Dt(e,t){t||(t=fe().providerModels);let n=t?.[e];if(n&&n.length>0){try{let o=Y(e);if(o.length>0)return de(n,o)}catch{}try{let o=R(e);if(o)return de(n,o.getAvailableModels())}catch{}return n}try{let o=Y(e);if(o.length>0)return o}catch{}try{let o=R(e);if(o)return o.getAvailableModels()}catch{}return[]}r(Dt,"getProviderAvailableModels");function Lt(e,t){let n=ve(e,t);if(n!=="unknown")return n;try{let o=R(e);if(o)return o.getReasoningCapability(t)}catch{}return"unknown"}r(Lt,"getProviderReasoningCapability");function Nt(e){let t=ye(e);if(t)return t;try{return Z().find(o=>o.name===e)?.capabilityProfile??null}catch{return null}}r(Nt,"getProviderCapabilityProfile");function ze(e,t){let n=Nt(e),o=Lt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:o};try{let i=be(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}r(ze,"getProviderCapabilityMetadata");function Mn(e,t){let n=ze(e,t);return n?Se({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}r(Mn,"getProviderCapabilitySnapshot");function $t(e,t,n,o){let i=ze(e,t);return i?Ce({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:o}):null}r($t,"getProviderPolicyDecision");function An(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",o=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${o}`}r(An,"describeProviderCapabilitySummary");function On(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}r(On,"formatReasoningCapabilityShort");function I(e){if(e)return e==="none"?"off":e}r(I,"formatReasoningEffortForDisplay");function G(e,t){let n=I(t);n&&!e.includes(n)&&e.push(n)}r(G,"pushUniqueEffortDisplay");function In(e,t){let n=["auto"],o=V(e,t),i=o?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])G(n,s);return n}for(let s of i)s.value==="none"&&o?.supportsDisabledThinking===!1||G(n,s.value);return n}r(In,"getProviderReasoningEffortOptions");function Rn(e,t){let n=V(e,t),o=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(l=>l.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let l of["low","medium","high"])G(s,l);a=!0}else for(let l of i){if(l.value==="none"){n?.supportsDisabledThinking!==!1&&(a=!0);continue}if(o.has(l.value)){n?.supportsDisabledThinking!==!1&&(a=!0);continue}G(s,l.value)}let c=[];return a&&c.push("off"),c.push(...s),c.push("auto"),c}r(Rn,"getProviderReasoningEffortCycle");function jt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}r(jt,"legacyReasoningModeToEffortDisplay");function V(e,t){let n=t??Tt(e);if(!n)return;let o=xe(e,n)?.reasoningProfile;if(o)return pe(o,ke(e,n))}r(V,"resolveReasoningProfileForDisplay");function Tn(e){let t=I(e.effort)??jt(e.reasoningMode,e.thinking),n=V(e.provider,e.model);if(!n)return t;try{let o=me({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=I(o.configuredEffort)??t,a=o.configuredEffort!==void 0&&n.supportsDisabledThinking!==!1&&n.disabledEfforts?.includes(o.configuredEffort)===!0?"off":I(o.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let o=J({currentEffort:e.effort,capability:n}),i=I(e.effort)??t,s=I(o.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}r(Tn,"formatReasoningEffortStatusLabel");function Dn(e){let t=zt(e);if(!t)return{preserved:!0};let n=V(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let o=J({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:o.effectiveEffort,preserved:o.preserved,diagnostic:o.diagnostic}}r(Dn,"resolveProviderReasoningRuntimeEffort");function Kt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}r(Kt,"describeReasoningCapabilityControl");function Ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}r(Ln,"describeReasoningExecution");function Nn(e){let t=[];e||(e=fe().providerModels);for(let n of we())t.push({name:n.name,model:n.model,models:Dt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=Z().map(o=>({...o,models:(()=>{let i=e?.[o.name];return i&&i.length>0?de(i,o.models):o.models})()}));t.push(...n)}catch{}return t}r(Nn,"getProviderList");function $n(e){if(he(e))return!0;try{return R(e)?.isConfigured()??!1}catch{return!1}}r($n,"isProviderConfigured");var H=class extends Error{static{r(this,"InvalidAgentModeConfigError")}};function Xt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new H(`Invalid agentMode "${t}" in ${p}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,Fe)};try{E(p,()=>{let o=ue();if(!o)return;let i=o.value.agentMode;i!=="amaw"&&i!=="ama-workflow"||Ve({...o.value,agentMode:"ama",schemaVersion:Math.max(typeof o.value.schemaVersion=="number"?o.value.schemaVersion:0,Fe)})})}catch{}return Ue||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ue=!0),n}r(Xt,"migrateLegacyAgentModeConfig");function fe(){try{if(m.existsSync(p)){let n=JSON.parse(m.readFileSync(p,"utf-8")),o=Xt(n),i=o.reasoningCeiling??o.reasoningMode,s=[],a={};try{s=[...U(u).document.paths]}catch{}try{a=F(u).document.servers}catch{}return It(Ot({...o,reasoningMode:i,extensions:le(s),mcpServers:a,sandbox:At(o.sandbox)}))}}catch(n){if(n instanceof H)throw n}let e,t;try{let n=U(u);n.source!=="default"&&(e=le([...n.document.paths]))}catch{}try{let n=F(u);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}r(fe,"loadConfig");var Ft=h.join(u,"config.example.jsonc"),ae={mcp:h.join(u,"integrations","mcp.example.jsonc"),a2a:h.join(u,"integrations","a2a.example.jsonc"),extensions:h.join(u,"integrations","extensions.example.jsonc")},Ut=[{name:"core",path:Ft},{name:"mcp",path:ae.mcp},{name:"a2a",path:ae.a2a},{name:"extensions",path:ae.extensions}];function Wt(){let e=[];for(let t of Ut)try{if(m.existsSync(t.path))continue;m.mkdirSync(h.dirname(t.path),{recursive:!0}),m.writeFileSync(t.path,Oe(t.name),"utf8"),e.push(t.path)}catch{}return e}r(Wt,"ensureExampleConfigFiles");function jn(){return Wt()[0]}r(jn,"ensureExampleConfigFile");var W=new Map;function Gt(e,t){let n=process.env[e],o=W.get(e),i=o!==void 0&&n===o;if(n!==void 0&&!i){W.delete(e);return}if(t===void 0){i&&delete process.env[e],W.delete(e);return}process.env[e]=t,W.set(e,t)}r(Gt,"projectConfigEnvironment");var Be=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:r(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:r(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:r(e=>O(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:r(e=>O(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:r(e=>O(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:r(e=>We(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:r(e=>y(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:r(e=>y(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:r(e=>y(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:r(e=>y(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:r(e=>y(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:r(e=>y(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:r(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:r(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:r(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:r(e=>O(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:r(e=>O(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:r(e=>O(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:r(e=>y(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:r(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:r(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:r(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:r(e=>y(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:r(e=>x(e.workflow?.maxConcurrency),"value")},{configPath:"sandbox.envPass",env:"KODAX_SANDBOX_ENV_PASS",value:r(e=>We(e.sandbox?.envPass)||void 0,"value")}];function Ht(e){for(let t of Be)Gt(t.env,t.value(e))}r(Ht,"applyConfigSurfaceBridges");function y(e){return e?.trim()||void 0}r(y,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}r(x,"configNumberString");function O(e){return e===void 0?void 0:e?"1":"0"}r(O,"configBooleanString");function We(e){return e?.filter(t=>t.trim().length>0).join(",")}r(We,"configStringList");var Kn=[...Be.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function Vt(e){Ht(e)}r(Vt,"applyConfigEnvironment");function Xn(){_t();let e=fe();return Vt(e),Mt(e),Me(e.locale),e}r(Xn,"prepareRuntimeConfig");function Fn(e){let{extensions:t,mcpServers:n,...o}=e;if(E(p,()=>{let i={};if(m.existsSync(p))try{let a=JSON.parse(m.readFileSync(p,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(i=a)}catch{}let s={...i,...o};for(let a of Object.keys(o))o[a]===void 0&&delete s[a];m.writeFileSync(p,JSON.stringify(s,null,2))}),t!==void 0){let i=U(u);T({domain:"extensions",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,paths:le(t)??[]},validate:C})}if(n!==void 0){let i=F(u);T({domain:"mcp",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,servers:n},validate:S})}}r(Fn,"saveConfig");function Un(e,t,n){return e.effort!==void 0||q(n).kind==="value"||t.effort!==void 0}r(Un,"resolveInitialEffortOverride");function w(e){return e?.trim()?e:void 0}r(w,"nonEmptySelection");function Wn(e){return w(e.explicitProvider)??w(e.environmentProvider)??w(e.configuredProvider)??e.defaultProvider}r(Wn,"resolveRuntimeProviderSelection");function Gn(e){let t=w(e.explicitModel);if(t)return t;let n=w(e.configuredModel);if(!n)return;let o=w(e.explicitProvider)??w(e.environmentProvider);return o?w(e.configuredProvider)===o?n:void 0:n}r(Gn,"resolveRuntimeModelSelection");function Hn(e){if(e.explicitEffort!==void 0)return B(e.explicitEffort);let t=q(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:B(e.configuredEffort)}r(Hn,"resolveRuntimeEffortSelection");function zt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}r(zt,"resolvePermissionModeEffort");async function Vn(e){try{let{stdout:t}=await xt("git rev-parse --show-toplevel",{cwd:e,windowsHide:!0});return t.trim()}catch{return null}}r(Vn,"getGitRoot");function Bt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}r(Bt,"formatProviderSourceKind");function zn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Bt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Kt(e.reasoningCapability)}`]}r(zn,"formatProviderCapabilityDetailLines");function Bn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:$t(e,t,n,i.hints)})).filter(i=>i.decision!==null)}r(Bn,"getProviderCommonPolicyScenarios");var Ge=.5,He=0,D={locked:!1,queue:[]};async function qn(e){for(;D.locked;)await new Promise(t=>D.queue.push(t));D.locked=!0;try{let t=(Date.now()-He)/1e3;t<Ge&&await new Promise(o=>setTimeout(o,(Ge-t)*1e3));let n=await e();return He=Date.now(),n}finally{D.locked=!1;let t=D.queue.shift();t&&t()}}r(qn,"rateLimitedCall");export{qt as a,Ae as b,Oe as c,ee as d,nt as e,E as f,k as g,S as h,C as i,_ as j,F as k,U as l,ft as m,ln as n,T as o,De as p,u as q,kn as r,p as s,Sn as t,Ct as u,Cn as v,Mt as w,Rt as x,_n as y,Tt as z,Dt as A,Lt as B,Nt as C,Mn as D,$t as E,An as F,On as G,I as H,In as I,Rn as J,Tn as K,Dn as L,Kt as M,Ln as N,Nn as O,$n as P,fe as Q,Ft as R,ae as S,Wt as T,jn as U,Kn as V,Vt as W,Xn as X,Fn as Y,Un as Z,Wn as _,Gn as $,Hn as aa,zt as ba,Vn as ca,Bt as da,zn as ea,Bn as fa,qn as ga};
|
|
@@ -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-6MGD2A7Z.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};
|