@kodax-ai/kodax 0.7.97-beta.2 → 0.7.97-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/README.md +55 -2
- package/README_CN.md +37 -1
- package/dist/artifacts/dist/contract.js +1 -1
- package/dist/artifacts/dist/contract.js.map +1 -1
- package/dist/artifacts/dist/document-render.d.ts +1 -1
- package/dist/artifacts/dist/document-render.js +41 -10
- package/dist/artifacts/dist/document-render.js.map +1 -1
- package/dist/artifacts/dist/kodax.js +1 -1
- package/dist/artifacts/dist/kodax.js.map +1 -1
- package/dist/artifacts/dist/libreoffice.d.ts +6 -1
- package/dist/artifacts/dist/libreoffice.js +37 -13
- package/dist/artifacts/dist/libreoffice.js.map +1 -1
- package/dist/artifacts/dist/runtime.js +13 -6
- package/dist/artifacts/dist/runtime.js.map +1 -1
- package/dist/artifacts/skills/artifact-review/SKILL.md +5 -1
- package/dist/chunks/agent-NWQPMZ7B.js +2 -0
- package/dist/chunks/agent-adapter-V3IPADCX.js +2 -0
- package/dist/chunks/argument-completer-VNKHT4X4.js +2 -0
- package/dist/chunks/{bedrock-native-Z5VNWF5U.js → bedrock-native-OEPOBW6W.js} +1 -1
- package/dist/chunks/{chunk-NSR4RW2F.js → chunk-3I2MIS4D.js} +1 -1
- package/dist/chunks/{chunk-RYBUYHDL.js → chunk-3Y5PBEOD.js} +1 -1
- package/dist/chunks/chunk-4FVCMKG2.js +20 -0
- package/dist/chunks/{chunk-F6GJXQNA.js → chunk-4GYXZTOD.js} +7 -7
- package/dist/chunks/{chunk-EISRVOBJ.js → chunk-4Z7ZHL6V.js} +2 -2
- package/dist/chunks/{chunk-W2CWO4PQ.js → chunk-576AAIQM.js} +1 -1
- package/dist/chunks/chunk-5E2P4RYS.js +4 -0
- package/dist/chunks/{chunk-X5M7TLJV.js → chunk-5LFQ5FVY.js} +1 -1
- package/dist/chunks/{chunk-WMMESRP3.js → chunk-6RDMSU4B.js} +1 -1
- package/dist/chunks/{chunk-3CP7AUWY.js → chunk-7BA4TSKC.js} +1 -1
- package/dist/chunks/{chunk-I325ER7D.js → chunk-AUU3N4V4.js} +1 -1
- package/dist/chunks/{chunk-DCE7XQUG.js → chunk-AYDLX2UK.js} +1 -1
- package/dist/chunks/{chunk-D36OIMV7.js → chunk-BP3NAYKY.js} +64 -64
- package/dist/chunks/{chunk-6TITQQAI.js → chunk-BSCSKJNC.js} +230 -229
- package/dist/chunks/{chunk-2HH5AS7E.js → chunk-DAQGOWKD.js} +88 -462
- package/dist/chunks/{chunk-UF3GZ5PO.js → chunk-EZF6ZRCO.js} +1 -1
- package/dist/chunks/chunk-F2TFWNVZ.js +2 -0
- package/dist/chunks/{chunk-53CJDQS2.js → chunk-FVXZ5L33.js} +1 -1
- package/dist/chunks/{chunk-MCDZNQWD.js → chunk-G32BMSHH.js} +75 -71
- package/dist/chunks/chunk-HJLYZ5AX.js +361 -0
- package/dist/chunks/{chunk-P55RJIOG.js → chunk-IOIFCU46.js} +1 -1
- package/dist/chunks/{chunk-DV5YPYLW.js → chunk-IR46ZHXU.js} +1 -1
- package/dist/chunks/chunk-NJDR5EEF.js +6 -0
- package/dist/chunks/{chunk-KDSO7V4O.js → chunk-OC3DQXN6.js} +1 -1
- package/dist/chunks/{chunk-J2L2NK6E.js → chunk-OMVAPRQI.js} +90 -57
- package/dist/chunks/chunk-OXCB2TRF.js +42 -0
- package/dist/chunks/{chunk-C6JGLEYD.js → chunk-P6R6V7EW.js} +1 -1
- package/dist/chunks/{chunk-SK3RRGHJ.js → chunk-PFBZ4ZXO.js} +28 -28
- package/dist/chunks/{chunk-V2XJSFFE.js → chunk-QDE6THC5.js} +1 -1
- package/dist/chunks/{chunk-EPK6EWRI.js → chunk-QRYEP34M.js} +1 -1
- package/dist/chunks/chunk-ROWYE472.js +460 -0
- package/dist/chunks/{chunk-R42S4BLA.js → chunk-SQGESMNC.js} +1 -1
- package/dist/chunks/{chunk-XZSFUGPN.js → chunk-U73VEVMP.js} +1 -1
- package/dist/chunks/{chunk-D425EZGC.js → chunk-V2TG7GNW.js} +1 -1
- package/dist/chunks/{chunk-QSZCR5GC.js → chunk-VRO2CDBY.js} +97 -97
- package/dist/chunks/{chunk-BBZWF2EA.js → chunk-WMQQQY3D.js} +1 -1
- package/dist/chunks/{chunk-JAF2YLZO.js → chunk-X3YYJJTF.js} +2 -2
- package/dist/chunks/{chunk-UL6YIT4M.js → chunk-XYRI6ER5.js} +1 -1
- package/dist/chunks/chunk-YRPB3LID.js +3 -0
- package/dist/chunks/{chunk-5MUVRFMU.js → chunk-ZDAU3LZ2.js} +1 -1
- package/dist/chunks/{chunk-WWPVEK6B.js → chunk-ZP3YSYWM.js} +10 -10
- package/dist/chunks/{client-LTIFNED5.js → client-NJ32JBC3.js} +1 -1
- package/dist/chunks/compaction-config-JBQGU3NO.js +2 -0
- package/dist/chunks/{construction-bootstrap-OAZKGI5Y.js → construction-bootstrap-CM47ZXG7.js} +1 -1
- package/dist/chunks/dist-O6BHIQEP.js +2 -0
- package/dist/chunks/{google-native-WLL27OV7.js → google-native-BV5GKT5B.js} +1 -1
- package/dist/chunks/host-PI5NL4W4.js +2 -0
- package/dist/chunks/{mistral-native-JXPIDDYZ.js → mistral-native-X42JCFZH.js} +1 -1
- package/dist/chunks/{model-DZF6URW3.js → model-MT3WJX76.js} +1 -1
- package/dist/chunks/{permission-YVVMLQ5I.js → permission-YVDVSE6H.js} +1 -1
- package/dist/chunks/{pi-messages-5LLOZH57.js → pi-messages-DVJANXV5.js} +1 -1
- package/dist/chunks/readline-helpers-5JS7UGTE.js +2 -0
- package/dist/chunks/run-manager-Y6VYEWSJ.js +2 -0
- package/dist/chunks/running-session-ANMBA5XV.js +2 -0
- package/dist/chunks/skills-XL2XIBWV.js +2 -0
- package/dist/chunks/{tool-dispatch-MLM3QTSU.js → tool-dispatch-2FOG65FC.js} +1 -1
- package/dist/chunks/{utils-2QNMYRGA.js → utils-XZ22R6VB.js} +1 -1
- package/dist/client-history.js +2 -0
- package/dist/history-turn.js +3 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1472 -1810
- package/dist/kodax_doctor.js +1 -1
- package/dist/maintenance-scheduler.js +2 -0
- package/dist/manual-topics.json +32 -3
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/one-shot-task.js +1 -1
- package/dist/provider-auth-cli.js +1 -1
- package/dist/runtime-daemon-schema.json +1 -1
- package/dist/sandbox-network-broker.js +93 -441
- package/dist/sdk-a2a.d.ts +13 -13
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +17 -12
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-client.d.ts +6 -6
- package/dist/sdk-client.js +1 -1
- package/dist/sdk-coding.d.ts +17 -17
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +2 -2
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +4 -2
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +13 -13
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +16 -16
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +46 -46
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +87 -435
- package/dist/storage-repair-cli.js +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-CJliu5-D.d.ts → bash-prefix-extractor.d-BghXa_md.d.ts} +9 -3
- package/dist/types-chunks/{capsule.d-EMwSALqK.d.ts → capsule.d-BTlvC5qq.d.ts} +4 -4
- package/dist/types-chunks/{client-contract-B7q69yMA.d.ts → client-contract-B7ZSFKTv.d.ts} +52 -4
- package/dist/types-chunks/{controller.d-C0SAuNKu.d.ts → controller.d-Btu5FDdw.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-D-hPLKaA.d.ts → controller.d-D6rEz5LS.d.ts} +3 -3
- package/dist/types-chunks/{history-retrieval.d-BwEUR9cb.d.ts → history-retrieval.d-B_AriUJp.d.ts} +1 -1
- package/dist/types-chunks/{manifest.d-YE3-AIeO.d.ts → manifest.d-Yyce-hHj.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-BhDU643p.d.ts → public-api.d-BLv3lFmw.d.ts} +9 -4
- package/dist/types-chunks/{review-inbox.d-Bgt46S7L.d.ts → review-inbox.d-yREk25Vf.d.ts} +2 -0
- package/dist/types-chunks/{review-packet.d-ChOfJaNI.d.ts → review-packet.d-xwXxHmML.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-ChzguipG.d.ts → run-manager.d-D4sa9JYz.d.ts} +26 -12
- package/dist/types-chunks/{runtime-client-info-P_mRDG7j.d.ts → runtime-client-info-oRMrkHmb.d.ts} +2 -2
- package/dist/types-chunks/{runtime-event-BW5Pla7a.d.ts → runtime-event-BOyaILWg.d.ts} +3 -1
- package/dist/types-chunks/{sdk-runtime-cDe7qmN3.d.ts → sdk-runtime-CYyXmQok.d.ts} +27 -13
- package/dist/types-chunks/{sdk-session-D3pcSbnA.d.ts → sdk-session-D6mS5qgO.d.ts} +6 -3
- package/dist/types-chunks/{skill-invocation-error.d-gsNNDnnt.d.ts → skill-invocation-error.d-Be3qg4JQ.d.ts} +3 -3
- package/dist/types-chunks/{trusted-repl-entry-Bbkd2HlO.d.ts → trusted-repl-entry-YWNc4m-Z.d.ts} +7 -7
- package/dist/types-chunks/{types.d-BlXTogOo.d.ts → types.d-BQ-hbni4.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-CxHyBvO6.d.ts → utils.d-C0F3Uf2X.d.ts} +6 -6
- package/dist/windows-effect-job-programs.json +4 -0
- package/docs/ARTIFACT_SDK.md +3 -3
- package/docs/CLIENT_CONTRACT.md +4 -2
- package/docs/SDK_MIGRATION.md +9 -5
- package/docs/SPACE_SDK_SEAMS.md +12 -1
- package/package.json +4 -3
- package/public_docs/README.md +10 -3
- package/public_docs/sdk/embedder-guide.md +1 -1
- package/dist/chunks/agent-DS7M57WD.js +0 -2
- package/dist/chunks/agent-adapter-TLWGGK3V.js +0 -2
- package/dist/chunks/argument-completer-OGCXKTRQ.js +0 -2
- package/dist/chunks/chunk-GJXOTOZB.js +0 -465
- package/dist/chunks/chunk-KE2NBMAP.js +0 -20
- package/dist/chunks/chunk-OGTRDK4Q.js +0 -359
- package/dist/chunks/chunk-R2HTPDI7.js +0 -2
- package/dist/chunks/chunk-SDPZFH6M.js +0 -4
- package/dist/chunks/chunk-XDMNJW6J.js +0 -42
- package/dist/chunks/compaction-config-ECMOFP5H.js +0 -2
- package/dist/chunks/dist-5J53DGAO.js +0 -2
- package/dist/chunks/host-65E5NM5P.js +0 -2
- package/dist/chunks/readline-helpers-UZXWBRXQ.js +0 -2
- package/dist/chunks/run-manager-ZFACIZM2.js +0 -2
- package/dist/chunks/running-session-Q5Y6A2QV.js +0 -2
- package/dist/chunks/skills-TJP6BLZJ.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
var
|
|
2
|
+
var li=Object.defineProperty;var o=(e,t)=>li(e,"name",{value:t,configurable:!0});var l=(e,t)=>()=>(e&&(t=e(e=0)),t);var Gd=(e,t)=>{for(var n in t)li(e,n,{get:t[n],enumerable:!0})};import{homedir as Xd}from"node:os";import{join as Vd}from"node:path";function Pe(){if(ui)return ui;let e=process.env[Yd];return e&&e.length>0?e:Vd(Xd(),Jd)}var Jd,Yd,ui,C=l(()=>{"use strict";Jd=".kodax",Yd="KODAX_HOME";o(Pe,"getAgentConfigHome")});var fi=l(()=>{"use strict"});var Xn=l(()=>{"use strict"});var me=l(()=>{"use strict"});var Kt=l(()=>{"use strict";me()});var P=l(()=>{"use strict"});var Vn=l(()=>{"use strict";P()});var Me=l(()=>{"use strict"});function Jn(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Invalid cache capabilities.");let t=e,n={"openai-retention":["24h"],"openai-options":["30m","12h"],anthropic:["1h"],bedrock:["1h"],pi:[],affinity:[]};if(t.affinityHeader!==void 0&&!["x-session-affinity","x-affinity"].includes(t.affinityHeader)||!Object.hasOwn(n,t.dialect)||t.longTtl!==void 0&&!n[t.dialect]?.includes(t.longTtl)||t.locations!==void 0&&(!Array.isArray(t.locations)||t.locations.some(r=>!["system","tools","messages"].includes(r)))||t.maxCheckpoints!==void 0&&(!Number.isSafeInteger(t.maxCheckpoints)||t.maxCheckpoints<1))throw new Error("Invalid declared cache dialect, lifetime or checkpoints.")}var qt=l(()=>{"use strict";P();o(Jn,"validateCacheCapabilities")});import{AsyncLocalStorage as Zd}from"node:async_hooks";var Bv,N=l(()=>{"use strict";P();qt();Me();Bv=new Zd});function el(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Tool constraints require an object schema.");return e}function Ht(e){if(e===void 0)return;let t=el(e);if(t.strict!==void 0&&typeof t.strict!="boolean"||t.grammar!==void 0&&(!Array.isArray(t.grammar)||t.grammar.some(n=>!["lark","regex"].includes(n))))throw new Error("Invalid declared tool capabilities.")}var X=l(()=>{"use strict";P();o(el,"record");o(Ht,"validateToolCapabilities")});import{AsyncLocalStorage as Oe}from"node:async_hooks";var Jv,Yv,Qv,Zv,eb,tb,B=l(()=>{"use strict";Me();Jv=new Oe,Yv=new Oe,Qv=new Oe,Zv=new Oe,eb=new Oe,tb=new Oe});function Yn(e,t){let n=mi.get(e);return n&&mi.set(t,n),t}var mi,he=l(()=>{"use strict";mi=new WeakMap;o(Yn,"inheritRejectedImage")});var Qn=l(()=>{"use strict"});var Ne=l(()=>{"use strict"});function Zn(e){return e.startsWith(hi)}function zt(){throw new Error("Invalid or expired cloud request credential.")}function tl(e){try{if(!Zn(e))return zt();let t=JSON.parse(Buffer.from(e.slice(hi.length),"base64url").toString("utf8"));if(!t||typeof t!="object")return zt();let n=t;return typeof n.provider!="string"||!n.provider.trim()?zt():{provider:n.provider,credential:n.credential}}catch{return zt()}}function gi(e){if(!Zn(e))return[];try{let t=tl(e).credential;if(!t||typeof t!="object")return[];let n=t;return["key","token","accessKeyId","secretAccessKey","sessionToken"].flatMap(r=>typeof n[r]=="string"&&n[r]?[n[r]]:[])}catch{return[]}}var hi,Gt=l(()=>{"use strict";hi="kodax-cloud-v1:";o(Zn,"isCloudCredentialCarrier");o(zt,"invalid");o(tl,"unpack");o(gi,"cloudCredentialSecrets")});import{AsyncLocalStorage as nl}from"node:async_hooks";function $e(e){let t=rl.getStore(),n=t?.kind==="exact"&&t.isActive()?t.credential:void 0;return n?Xt(e,ol(n),new WeakMap):e}function ol(e){let t=[e,...gi(e)].sort((n,r)=>r.length-n.length);return new RegExp(t.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")+"|\\[REDACTED_CREDENTIAL\\]","g")}function Ze(e,t){return e.replace(t,"[REDACTED_CREDENTIAL]")}function il(e,t,n){let r=e instanceof DOMException?new DOMException(Ze(e.message,t),Ze(e.name,t)):new Error;Object.setPrototypeOf(r,Object.getPrototypeOf(e));let i=Object.getOwnPropertyDescriptor(r,"stack")?.get;delete r.stack,n.set(e,r);for(let s of Reflect.ownKeys(e)){let a=Object.getOwnPropertyDescriptor(e,s);if(s==="stack"&&a?.get&&a.get===i&&(a={configurable:a.configurable,enumerable:a.enumerable,writable:!0,value:e.stack}),a===void 0||!("value"in a))continue;let c=typeof s=="string"?Ze(s,t):s;Object.prototype.hasOwnProperty.call(r,c)||Object.defineProperty(r,c,{...a,value:Xt(a.value,t,n)})}return Yn(e,r)}function Xt(e,t,n){if(typeof e=="string")return Ze(e,t);if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error)return il(e,t,n);if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(Xt(a,t,n));return s}let i={};n.set(e,i);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=Ze(s,t);i[c]=Xt(a.value,t,n)}return i}var rl,$=l(()=>{"use strict";he();Qn();Ne();P();Gt();B();rl=new nl;o($e,"redactScopedProviderCredential");o(ol,"redactionPattern");o(Ze,"redactText");o(il,"redactCredentialError");o(Xt,"redactCredentialValue")});import{AsyncLocalStorage as sl}from"node:async_hooks";var Rb,oe=l(()=>{"use strict";Rb=new sl});var er=l(()=>{"use strict";N()});var et=l(()=>{"use strict"});var wi=l(()=>{"use strict"});var tt=l(()=>{"use strict"});var tr=l(()=>{"use strict"});var De=l(()=>{"use strict"});var Yt=l(()=>{"use strict"});var Le,yi,Qt,vi,ie=l(()=>{"use strict";Le={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},yi={...Le,multimodalSupport:"image-input"},Qt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},vi={...Qt,multimodalSupport:"image-input"}});var nt=l(()=>{"use strict"});var ge=l(()=>{"use strict";nt()});var je=l(()=>{"use strict";et();he();X();N();Ne();N();oe();B();P();wi();tt();tr();De();$();Yt();me();oe();ie();ge()});import{parse as RS}from"partial-json";var tn=l(()=>{"use strict"});var it=l(()=>{"use strict"});var we=l(()=>{"use strict";$()});var st=l(()=>{"use strict"});import{AsyncLocalStorage as yl}from"node:async_hooks";var FS,WS,cr=l(()=>{"use strict";FS=10*1024*1024,WS=yl.snapshot()});import{AsyncLocalStorage as vl}from"node:async_hooks";var HS,H=l(()=>{"use strict";cr();HS=new vl});var Ai=l(()=>{"use strict"});var We=l(()=>{"use strict";he();N();N();X();er();B();je();P();tn();it();me();we();ge();st();$();H();oe();nt();De();Ai()});var dt=l(()=>{"use strict";Vn();Me();N();N();N();X();P();B();$();oe();We();H();Kt();he();we();De();tt();nt()});var ji=l(()=>{"use strict"});var pr=l(()=>{"use strict"});var Fi=l(()=>{"use strict";P()});var Wi=l(()=>{"use strict";P()});var on=l(()=>{"use strict";De();Xn();Me();Fi();N();he();N();X();Wi();er();B();je();tn();it();P();we();me();ge();st();H();oe();$()});var Tx,Cx,Px,Mx,mr=l(()=>{"use strict";Tx=Object.freeze({status:"terminated"}),Cx=Object.freeze({status:"already-exited"}),Px=Object.freeze({status:"unknown"}),Mx=String.raw`
|
|
3
3
|
using System;
|
|
4
4
|
using System.Runtime.InteropServices;
|
|
5
5
|
using System.Text;
|
|
@@ -86,14 +86,25 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
86
86
|
CloseHandle(snapshot);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
}`});var Wi=l(()=>{"use strict";mr()});var on=l(()=>{"use strict";je();Wi();ie();st()});var hr=l(()=>{"use strict";mr()});var gr=l(()=>{"use strict"});var Ui=l(()=>{"use strict";hr();gr()});var wr=l(()=>{"use strict"});import Bi from"node:fs";import Ki from"node:os";import qi from"node:path";function Hi(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}function Ul(){let e=qi.join(Ki.homedir(),".codex","config.toml");try{return Bi.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}function Bl(){let e=qi.join(Ki.homedir(),".gemini","settings.json");try{let t=JSON.parse(Bi.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}function Ue(){return Ul()||Ll}function Be(){return Bl()||jl}function lt(){return Hi([Ue(),...Fl])}function ut(){return Hi([Be(),...Wl])}var Ll,jl,Fl,Wl,ft=l(()=>{"use strict";Ll="gpt-5.4",jl="auto-gemini-3",Fl=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Wl=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];o(Hi,"dedupePreserveOrder");o(Ul,"readCodexConfiguredModel");o(Bl,"readGeminiConfiguredModel");o(Ue,"getCodexCliDefaultModel");o(Be,"getGeminiCliDefaultModel");o(lt,"getCodexCliKnownModels");o(ut,"getGeminiCliKnownModels")});var yE,bE,zi=l(()=>{"use strict";on();Ui();wr();ft();ie();yE=Be(),bE=ut()});var Gi=l(()=>{"use strict";hr();gr()});var PE,ME,Xi=l(()=>{"use strict";on();Gi();wr();ft();PE=Ue(),ME=lt()});function sn(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isSafeInteger(e)||e<=0)throw new Error(`${t}.outputTokenLimit must be a positive safe integer`);return e}}var br=l(()=>{"use strict";o(sn,"optionalOutputTokenLimit")});function Z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function be(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}function ye(e,t){if(e!==void 0)return be(e,t)}function os(e,t){if(e!==void 0){if(typeof e!="string"||!Zi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Zi.join(", ")}, got ${JSON.stringify(e)}`);return e}}function se(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}function M(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}function ns(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>be(n,`${t}[${r}]`))}}function ql(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=be(i,`${t}.${r}`);return n}function Hl(e,t){if(e!==void 0){if(typeof e!="string"||!Qi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Qi.join(", ")}, got ${JSON.stringify(e)}`);return e}}function vr(e,t){if(typeof e!="string"||!Vi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Vi.join(", ")}, got ${JSON.stringify(e)}`);return e}function zl(e,t){if(typeof e!="string"||!Ji.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ji.join(", ")}, got ${JSON.stringify(e)}`);return e}function Gl(e,t){if(e!==void 0){if(typeof e!="string"||!Yi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Yi.join(", ")}, got ${JSON.stringify(e)}`);return e}}function rs(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=zl(e.effortStrategy,`${t}.effortStrategy`),r=Hl(e.reasoningPreset,`${t}.reasoningPreset`),i=Gl(e.thinkingStrategy,`${t}.thinkingStrategy`),s=ye(e.defaultEffort,`${t}.defaultEffort`),a=ql(e.effortAliases,`${t}.effortAliases`),c=ns(e.disabledEfforts,`${t}.disabledEfforts`),d=ns(e.localRejectEfforts,`${t}.localRejectEfforts`),u=M(e.allowCustomEffort,`${t}.allowCustomEffort`),f=M(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),p=M(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),h=M(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),m=M(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),k=M(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=M(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),y=M(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),g={effortStrategy:n};if(r!==void 0&&(g.reasoningPreset=r),i!==void 0&&(g.thinkingStrategy=i),s!==void 0&&(g.defaultEffort=s),a!==void 0&&(g.effortAliases=a),c!==void 0&&(g.disabledEfforts=c),d!==void 0&&(g.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);g.supportedEfforts=e.supportedEfforts.map((w,b)=>{if(!Z(w))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:be(w.value,`${t}.supportedEfforts[${b}].value`),...ye(w.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:ye(w.description,`${t}.supportedEfforts[${b}].description`)}:{},...M(w.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:M(w.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...M(w.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:M(w.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!Z(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let w={};for(let[b,R]of Object.entries(e.budgetByEffort))w[b]=se(R,`${t}.budgetByEffort.${b}`)??0;g.budgetByEffort=w}u!==void 0&&(g.allowCustomEffort=u),f!==void 0&&(g.supportsReasoningEffort=f),p!==void 0&&(g.supportsReasoningSummary=p),h!==void 0&&(g.supportsEncryptedReasoningReplay=h),m!==void 0&&(g.supportsAdaptiveThinking=m),k!==void 0&&(g.supportsManualThinkingBudget=k),v!==void 0&&(g.supportsDisabledThinking=v),y!==void 0&&(g.requiresEffortBetaHeader=y);for(let w of["supportsThinkingDisplay","supportsThinkingBlockBinding"]){let b=M(e[w],`${t}.${w}`);b!==void 0&&Object.assign(g,{[w]:b})}return g}function is(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?rs(n,`${t}.reasoningProfile`):rs(r,`${t}.reasoningCapabilityV2`)}function Xl(e,t){if(typeof e!="string"||!es.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${es.join(", ")}, got ${JSON.stringify(e)}`);return e}function Vl(e,t){if(typeof e!="string"||!ts.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${ts.join(", ")}, got ${JSON.stringify(e)}`);return e}function ss(e,t){try{qt(e.toolCapabilities),Yn(e.cacheCapabilities)}catch(n){throw new Error(`${t}: ${n instanceof Error?n.message:"Invalid constraint metadata."}`)}return{...e.toolCapabilities?{toolCapabilities:structuredClone(e.toolCapabilities)}:{},...e.cacheCapabilities?{cacheCapabilities:structuredClone(e.cacheCapabilities)}:{}}}function Jl(e,t){if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=be(e.id,`${t}.id`),r=ye(e.wireModel,`${t}.wireModel`),i=ye(e.displayName,`${t}.displayName`),s=ye(e.multimodalSupport,`${t}.multimodalSupport`);if(s!==void 0&&!["none","image-input","full"].includes(s))throw new Error(`provider-capabilities.json: ${t}.multimodalSupport must be none, image-input or full`);let a=se(e.contextWindow,`${t}.contextWindow`),c=se(e.maxOutputTokens,`${t}.maxOutputTokens`),d=os(e.maxOutputTokensField,`${t}.maxOutputTokensField`),u=sn(e.outputTokenLimit,t),f=se(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),p=M(e.replayReasoningContent,`${t}.replayReasoningContent`),h=M(e.strictThinkingSignature,`${t}.strictThinkingSignature`),m=se(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),k=e.reasoningCapability===void 0?void 0:vr(e.reasoningCapability,`${t}.reasoningCapability`),v=is(e,t),y={id:n,...ss(e,t)};for(let[g,w]of Object.entries({wireModel:r,displayName:i,multimodalSupport:s,contextWindow:a,maxOutputTokens:c,outputTokenLimit:u,maxOutputTokensField:d,thinkingBudgetCap:f,reasoningCapability:k,reasoningProfile:v,replayReasoningContent:p,strictThinkingSignature:h,streamMaxDurationMs:m}))w!==void 0&&Object.assign(y,{[g]:w});return y}function Yl(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=vr(i,`${t}.${r}`);return n}function Ql(e,t){if(!Z(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=M(e.cliBridge,`providers.${t}.cliBridge`),r=be(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=vr(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=is(e,`providers.${t}`),a=Xl(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Vl(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=se(e.contextWindow,`providers.${t}.contextWindow`),u=se(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),f=os(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),p=sn(e.outputTokenLimit,`providers.${t}`),h=se(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=M(e.supportsThinking,`providers.${t}.supportsThinking`),k=Yl(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),v=ye(e.model,`providers.${t}.model`);if(n&&(v!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&v===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let y;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);y=e.models.map((b,R)=>Jl(b,`providers.${t}.models[${R}]`));let w=new Set([...v===void 0?[]:[v],...y.map(b=>b.id)]);for(let[b,R]of y.entries())if(R.wireModel!==void 0&&!w.has(R.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${b}].wireModel must reference a declared model, got ${JSON.stringify(R.wireModel)}`)}let g={...ss(e,`providers.${t}`),apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};for(let[w,b]of Object.entries({reasoningProfile:s,model:v,models:y,contextWindow:d,maxOutputTokens:u,outputTokenLimit:p,maxOutputTokensField:f,thinkingBudgetCap:h,supportsThinking:m,modelReasoningCapabilities:k}))b!==void 0&&Object.assign(g,{[w]:b});return n&&(g.cliBridge=!0),g}function as(e){if(!Z(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=be(e.updatedAt,"updatedAt");if(!Z(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=Ql(i,r);return{version:1,updatedAt:t,providers:n}}var Vi,Ji,Yi,Qi,Zi,es,ts,cs=l(()=>{"use strict";G();Kt();br();Vi=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Ji=["google-thinking-level","bedrock-anthropic-effort","bedrock-openai-effort","bedrock-openai-nested-effort","openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Yi=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Qi=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k3.1","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Zi=["max_tokens","max_completion_tokens"],es=["native","image-input-native","cli-bridge","image-input-cli-bridge"],ts=["count-tokens","models-list","minimal-message","unsupported"];o(Z,"isPlainObject");o(be,"requireString");o(ye,"optionalString");o(os,"optionalMaxOutputTokensField");o(se,"optionalNumber");o(M,"optionalBoolean");o(ns,"optionalStringArray");o(ql,"optionalStringMap");o(Hl,"optionalReasoningPreset");o(vr,"requireReasoningCapability");o(zl,"requireEffortStrategy");o(Gl,"optionalThinkingStrategy");o(rs,"validateReasoningProfile");o(is,"validateReasoningProfileField");o(Xl,"requireProfileName");o(Vl,"requireVerifyStrategy");o(ss,"constraintMetadata");o(Jl,"validateModelDescriptor");o(Yl,"validateModelReasoningCapabilities");o(Ql,"validateProviderEntry");o(as,"validateProviderCapabilitiesJson")});import{existsSync as Zl,readFileSync as eu}from"node:fs";import Ke from"node:path";import{fileURLToPath as tu}from"node:url";function ru(){if(process.env.KODAX_BUNDLED==="true")return Ke.join(Ke.dirname(process.execPath),"provider-capabilities.json");let e=Ke.dirname(tu(import.meta.url)),t=[Ke.join(e,"provider-capabilities.json"),Ke.join(Ke.dirname(e),"provider-capabilities.json")];for(let n of t)if(Zl(n))return n;return t[0]}function ds(e){e.toolCapabilities?.grammar&&Object.freeze(e.toolCapabilities.grammar),e.toolCapabilities&&Object.freeze(e.toolCapabilities),e.cacheCapabilities?.locations&&Object.freeze(e.cacheCapabilities.locations),e.cacheCapabilities&&Object.freeze(e.cacheCapabilities)}function ou(e){if(ds(e),e.models){for(let t of e.models)t.reasoningProfile&&ls(t.reasoningProfile);for(let t of e.models)ds(t),Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&ls(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}function ls(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}function iu(e){if(e==="gemini-cli"){let t=Be();return{model:t,models:ut().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Ue();return{model:t,models:lt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}function su(e,t){let n=nu[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);let r={...t.cliBridge?iu(e):{model:t.model},apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};for(let i of["reasoningProfile","supportsThinking","toolCapabilities","cacheCapabilities"])t[i]!==void 0&&Object.assign(r,{[i]:t[i]});if(!t.cliBridge)for(let i of["models","modelReasoningCapabilities","contextWindow","maxOutputTokens","outputTokenLimit","maxOutputTokensField","thinkingBudgetCap"])t[i]!==void 0&&Object.assign(r,{[i]:t[i]});return r}function us(){if(an)return an;let e=ru(),t;try{let i=eu(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=as(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=ou(su(i,s));return an=Object.freeze(r),an}var nu,an,fs=l(()=>{"use strict";ie();ft();cs();nu=Object.freeze({native:Le,"image-input-native":gi,"cli-bridge":Yt,"image-input-cli-bridge":wi}),an=null;o(ru,"resolveJsonPath");o(ds,"freezeConstraints");o(ou,"deepFreezeSnapshot");o(ls,"freezeReasoningProfile");o(iu,"resolveCliBridgeModels");o(su,"buildSnapshot");o(us,"getProviderSnapshots")});var cn,ps,pt=l(()=>{"use strict";rn();We();zi();Xi();P();$();ie();fs();cn=us(),ps=process.env.KODAX_PROVIDER??"zhipu-coding"});var hs=l(()=>{"use strict";$();dt();we()});var dn=l(()=>{"use strict"});var mt=l(()=>{"use strict"});var ln=l(()=>{"use strict";Ne();$();N()});var ys=l(()=>{"use strict";N();B();We();dt();ln()});var Er=l(()=>{"use strict";G();je();P();$();we();De()});var bs=l(()=>{"use strict";Er();ln()});var vs=l(()=>{"use strict";Er();bs()});var un=l(()=>{"use strict";rn();We();dt();hs();dn();mt();ys();vs();ie();ge();br();G();Kt()});var fn=l(()=>{"use strict";un();pt();ie()});var Tr=l(()=>{"use strict";pt();fn()});var Cr=l(()=>{"use strict";P();pt();fn();Tr();$()});var Mr=l(()=>{"use strict";je();rn();We();on();pt();un();fn();Tr();Cr();we()});var Ds=l(()=>{"use strict";Mr();ge();pr();nt()});var Or=l(()=>{"use strict"});var Nr=l(()=>{"use strict";Or()});var Ls=l(()=>{"use strict";Nr();it();$()});var ve=l(()=>{"use strict";Ne()});var pn=l(()=>{"use strict";ve()});var Fs=l(()=>{"use strict";pn();ve()});var mn=l(()=>{"use strict";B();nr();N()});var ee=l(()=>{"use strict";et();$();B();mn();tt();Jt();Me()});var Ws=l(()=>{"use strict";me()});var Us=l(()=>{"use strict";X();Ws()});var Bs=l(()=>{"use strict";G()});var Ks=l(()=>{"use strict";et();mt();ln();$();ee();Us();Bs();oe()});var $r=l(()=>{"use strict";mt();dn();un()});var qs=l(()=>{"use strict";ee();Cr()});function Hs(){let e=new Map;return{async read(t,n){n?.throwIfAborted();let r=e.get(t);return r?structuredClone(r):void 0},async compareAndSwap(t,n,r,i){return i.signal?.throwIfAborted(),!i.isCurrent()||e.get(t)?.revision!==n?!1:(e.set(t,structuredClone(r)),!0)}}}var SR,zs=l(()=>{"use strict";ee();B();mn();qs();o(Hs,"createMemoryModelCatalogStore");SR=Hs()});var Dr=l(()=>{"use strict";ve();pn()});var Gs=l(()=>{"use strict";ve();Dr();pn()});var Xs=l(()=>{"use strict";ee()});var Fr=l(()=>{"use strict";X()});var Js=l(()=>{"use strict";ee();Xs();Fr()});var Ys=l(()=>{"use strict";N()});var Qs=l(()=>{"use strict";ee();Fr();mn();Ys();B()});var Zs=l(()=>{"use strict";Ne();N();P();$();Bt();Jn();X();ee();B();G()});var ea=l(()=>{"use strict";$r();ee()});import xT from"proper-lockfile";var ta=l(()=>{"use strict";ve()});var na=l(()=>{"use strict";zt()});var K=l(()=>{"use strict";li();Vn();Bt();dt();B();$();P();tt();Zn();me();Li();pr();ge();Ds();Mr();ft();en();it();oe();Or();Nr();Ls();Jt();st();dr();X();X();he();X();ve();Fs();dn();zt();mt();Ks();$r();zs();Dr();Gs();Js();Qs();Zs();ea();ta();et();na()});function I(e){let t=$e(e),n=of.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ra(t)}
|
|
90
|
-
`)}catch{}}function
|
|
91
|
-
`),t=Date.now(),n=
|
|
92
|
-
`),t=Date.now(),n=
|
|
93
|
-
`)}function
|
|
89
|
+
}`});var Ui=l(()=>{"use strict";mr()});var sn=l(()=>{"use strict";je();Ui();ie();st()});var hr=l(()=>{"use strict";mr()});var gr=l(()=>{"use strict"});var Bi=l(()=>{"use strict";hr();gr()});var wr=l(()=>{"use strict"});import Ki from"node:fs";import qi from"node:os";import Hi from"node:path";function zi(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}function Bl(){let e=Hi.join(qi.homedir(),".codex","config.toml");try{return Ki.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}function Kl(){let e=Hi.join(qi.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ki.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}function Ue(){return Bl()||jl}function Be(){return Kl()||Fl}function lt(){return zi([Ue(),...Wl])}function ut(){return zi([Be(),...Ul])}var jl,Fl,Wl,Ul,ft=l(()=>{"use strict";jl="gpt-5.4",Fl="auto-gemini-3",Wl=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Ul=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];o(zi,"dedupePreserveOrder");o(Bl,"readCodexConfiguredModel");o(Kl,"readGeminiConfiguredModel");o(Ue,"getCodexCliDefaultModel");o(Be,"getGeminiCliDefaultModel");o(lt,"getCodexCliKnownModels");o(ut,"getGeminiCliKnownModels")});var mE,hE,Gi=l(()=>{"use strict";sn();Bi();wr();ft();ie();mE=Be(),hE=ut()});var Xi=l(()=>{"use strict";hr();gr()});var AE,RE,Vi=l(()=>{"use strict";sn();Xi();wr();ft();AE=Ue(),RE=lt()});function an(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isSafeInteger(e)||e<=0)throw new Error(`${t}.outputTokenLimit must be a positive safe integer`);return e}}var vr=l(()=>{"use strict";o(an,"optionalOutputTokenLimit")});function Z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ve(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}function ye(e,t){if(e!==void 0)return ve(e,t)}function is(e,t){if(e!==void 0){if(typeof e!="string"||!es.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${es.join(", ")}, got ${JSON.stringify(e)}`);return e}}function se(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}function M(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}function rs(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ve(n,`${t}[${r}]`))}}function Hl(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ve(i,`${t}.${r}`);return n}function zl(e,t){if(e!==void 0){if(typeof e!="string"||!Zi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Zi.join(", ")}, got ${JSON.stringify(e)}`);return e}}function br(e,t){if(typeof e!="string"||!Ji.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ji.join(", ")}, got ${JSON.stringify(e)}`);return e}function Gl(e,t){if(typeof e!="string"||!Yi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Yi.join(", ")}, got ${JSON.stringify(e)}`);return e}function Xl(e,t){if(e!==void 0){if(typeof e!="string"||!Qi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Qi.join(", ")}, got ${JSON.stringify(e)}`);return e}}function os(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Gl(e.effortStrategy,`${t}.effortStrategy`),r=zl(e.reasoningPreset,`${t}.reasoningPreset`),i=Xl(e.thinkingStrategy,`${t}.thinkingStrategy`),s=ye(e.defaultEffort,`${t}.defaultEffort`),a=Hl(e.effortAliases,`${t}.effortAliases`),c=rs(e.disabledEfforts,`${t}.disabledEfforts`),d=rs(e.localRejectEfforts,`${t}.localRejectEfforts`),u=M(e.allowCustomEffort,`${t}.allowCustomEffort`),f=M(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),p=M(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),h=M(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),m=M(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),k=M(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),b=M(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),y=M(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),g={effortStrategy:n};if(r!==void 0&&(g.reasoningPreset=r),i!==void 0&&(g.thinkingStrategy=i),s!==void 0&&(g.defaultEffort=s),a!==void 0&&(g.effortAliases=a),c!==void 0&&(g.disabledEfforts=c),d!==void 0&&(g.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);g.supportedEfforts=e.supportedEfforts.map((w,v)=>{if(!Z(w))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${v}] must be an object`);return{value:ve(w.value,`${t}.supportedEfforts[${v}].value`),...ye(w.description,`${t}.supportedEfforts[${v}].description`)!==void 0?{description:ye(w.description,`${t}.supportedEfforts[${v}].description`)}:{},...M(w.isDefault,`${t}.supportedEfforts[${v}].isDefault`)!==void 0?{isDefault:M(w.isDefault,`${t}.supportedEfforts[${v}].isDefault`)}:{},...M(w.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)!==void 0?{isUserVisible:M(w.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!Z(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let w={};for(let[v,R]of Object.entries(e.budgetByEffort))w[v]=se(R,`${t}.budgetByEffort.${v}`)??0;g.budgetByEffort=w}u!==void 0&&(g.allowCustomEffort=u),f!==void 0&&(g.supportsReasoningEffort=f),p!==void 0&&(g.supportsReasoningSummary=p),h!==void 0&&(g.supportsEncryptedReasoningReplay=h),m!==void 0&&(g.supportsAdaptiveThinking=m),k!==void 0&&(g.supportsManualThinkingBudget=k),b!==void 0&&(g.supportsDisabledThinking=b),y!==void 0&&(g.requiresEffortBetaHeader=y);for(let w of["supportsThinkingDisplay","supportsThinkingBlockBinding"]){let v=M(e[w],`${t}.${w}`);v!==void 0&&Object.assign(g,{[w]:v})}return g}function ss(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?os(n,`${t}.reasoningProfile`):os(r,`${t}.reasoningCapabilityV2`)}function Vl(e,t){if(typeof e!="string"||!ts.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${ts.join(", ")}, got ${JSON.stringify(e)}`);return e}function Jl(e,t){if(typeof e!="string"||!ns.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${ns.join(", ")}, got ${JSON.stringify(e)}`);return e}function as(e,t){try{Ht(e.toolCapabilities),Jn(e.cacheCapabilities)}catch(n){throw new Error(`${t}: ${n instanceof Error?n.message:"Invalid constraint metadata."}`)}return{...e.toolCapabilities?{toolCapabilities:structuredClone(e.toolCapabilities)}:{},...e.cacheCapabilities?{cacheCapabilities:structuredClone(e.cacheCapabilities)}:{}}}function Yl(e,t){if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ve(e.id,`${t}.id`),r=ye(e.wireModel,`${t}.wireModel`),i=ye(e.displayName,`${t}.displayName`),s=ye(e.multimodalSupport,`${t}.multimodalSupport`);if(s!==void 0&&!["none","image-input","full"].includes(s))throw new Error(`provider-capabilities.json: ${t}.multimodalSupport must be none, image-input or full`);let a=se(e.contextWindow,`${t}.contextWindow`),c=se(e.maxOutputTokens,`${t}.maxOutputTokens`),d=is(e.maxOutputTokensField,`${t}.maxOutputTokensField`),u=an(e.outputTokenLimit,t),f=se(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),p=M(e.replayReasoningContent,`${t}.replayReasoningContent`),h=M(e.strictThinkingSignature,`${t}.strictThinkingSignature`),m=se(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),k=e.reasoningCapability===void 0?void 0:br(e.reasoningCapability,`${t}.reasoningCapability`),b=ss(e,t),y={id:n,...as(e,t)};for(let[g,w]of Object.entries({wireModel:r,displayName:i,multimodalSupport:s,contextWindow:a,maxOutputTokens:c,outputTokenLimit:u,maxOutputTokensField:d,thinkingBudgetCap:f,reasoningCapability:k,reasoningProfile:b,replayReasoningContent:p,strictThinkingSignature:h,streamMaxDurationMs:m}))w!==void 0&&Object.assign(y,{[g]:w});return y}function Ql(e,t){if(e===void 0)return;if(!Z(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=br(i,`${t}.${r}`);return n}function Zl(e,t){if(!Z(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=M(e.cliBridge,`providers.${t}.cliBridge`),r=ve(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=br(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=ss(e,`providers.${t}`),a=Vl(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Jl(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=se(e.contextWindow,`providers.${t}.contextWindow`),u=se(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),f=is(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),p=an(e.outputTokenLimit,`providers.${t}`),h=se(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=M(e.supportsThinking,`providers.${t}.supportsThinking`),k=Ql(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),b=ye(e.model,`providers.${t}.model`);if(n&&(b!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&b===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let y;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);y=e.models.map((v,R)=>Yl(v,`providers.${t}.models[${R}]`));let w=new Set([...b===void 0?[]:[b],...y.map(v=>v.id)]);for(let[v,R]of y.entries())if(R.wireModel!==void 0&&!w.has(R.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${v}].wireModel must reference a declared model, got ${JSON.stringify(R.wireModel)}`)}let g={...as(e,`providers.${t}`),apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};for(let[w,v]of Object.entries({reasoningProfile:s,model:b,models:y,contextWindow:d,maxOutputTokens:u,outputTokenLimit:p,maxOutputTokensField:f,thinkingBudgetCap:h,supportsThinking:m,modelReasoningCapabilities:k}))v!==void 0&&Object.assign(g,{[w]:v});return n&&(g.cliBridge=!0),g}function cs(e){if(!Z(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ve(e.updatedAt,"updatedAt");if(!Z(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=Zl(i,r);return{version:1,updatedAt:t,providers:n}}var Ji,Yi,Qi,Zi,es,ts,ns,ds=l(()=>{"use strict";X();qt();vr();Ji=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Yi=["google-thinking-level","bedrock-anthropic-effort","bedrock-openai-effort","bedrock-openai-nested-effort","openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Qi=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Zi=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k3.1","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],es=["max_tokens","max_completion_tokens"],ts=["native","image-input-native","cli-bridge","image-input-cli-bridge"],ns=["count-tokens","models-list","minimal-message","unsupported"];o(Z,"isPlainObject");o(ve,"requireString");o(ye,"optionalString");o(is,"optionalMaxOutputTokensField");o(se,"optionalNumber");o(M,"optionalBoolean");o(rs,"optionalStringArray");o(Hl,"optionalStringMap");o(zl,"optionalReasoningPreset");o(br,"requireReasoningCapability");o(Gl,"requireEffortStrategy");o(Xl,"optionalThinkingStrategy");o(os,"validateReasoningProfile");o(ss,"validateReasoningProfileField");o(Vl,"requireProfileName");o(Jl,"requireVerifyStrategy");o(as,"constraintMetadata");o(Yl,"validateModelDescriptor");o(Ql,"validateModelReasoningCapabilities");o(Zl,"validateProviderEntry");o(cs,"validateProviderCapabilitiesJson")});import{existsSync as eu,readFileSync as tu}from"node:fs";import Ke from"node:path";import{fileURLToPath as nu}from"node:url";function ou(){if(process.env.KODAX_BUNDLED==="true")return Ke.join(Ke.dirname(process.execPath),"provider-capabilities.json");let e=Ke.dirname(nu(import.meta.url)),t=[Ke.join(e,"provider-capabilities.json"),Ke.join(Ke.dirname(e),"provider-capabilities.json")];for(let n of t)if(eu(n))return n;return t[0]}function ls(e){e.toolCapabilities?.grammar&&Object.freeze(e.toolCapabilities.grammar),e.toolCapabilities&&Object.freeze(e.toolCapabilities),e.cacheCapabilities?.locations&&Object.freeze(e.cacheCapabilities.locations),e.cacheCapabilities&&Object.freeze(e.cacheCapabilities)}function iu(e){if(ls(e),e.models){for(let t of e.models)t.reasoningProfile&&us(t.reasoningProfile);for(let t of e.models)ls(t),Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&us(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}function us(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}function su(e){if(e==="gemini-cli"){let t=Be();return{model:t,models:ut().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Ue();return{model:t,models:lt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}function au(e,t){let n=ru[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);let r={...t.cliBridge?su(e):{model:t.model},apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};for(let i of["reasoningProfile","supportsThinking","toolCapabilities","cacheCapabilities"])t[i]!==void 0&&Object.assign(r,{[i]:t[i]});if(!t.cliBridge)for(let i of["models","modelReasoningCapabilities","contextWindow","maxOutputTokens","outputTokenLimit","maxOutputTokensField","thinkingBudgetCap"])t[i]!==void 0&&Object.assign(r,{[i]:t[i]});return r}function fs(){if(cn)return cn;let e=ou(),t;try{let i=tu(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=cs(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=iu(au(i,s));return cn=Object.freeze(r),cn}var ru,cn,ps=l(()=>{"use strict";ie();ft();ds();ru=Object.freeze({native:Le,"image-input-native":yi,"cli-bridge":Qt,"image-input-cli-bridge":vi}),cn=null;o(ou,"resolveJsonPath");o(ls,"freezeConstraints");o(iu,"deepFreezeSnapshot");o(us,"freezeReasoningProfile");o(su,"resolveCliBridgeModels");o(au,"buildSnapshot");o(fs,"getProviderSnapshots")});var dn,ms,pt=l(()=>{"use strict";on();We();Gi();Vi();P();$();ie();ps();dn=fs(),ms=process.env.KODAX_PROVIDER??"zhipu-coding"});var gs=l(()=>{"use strict";$();dt();we()});var ln=l(()=>{"use strict"});var mt=l(()=>{"use strict"});var un=l(()=>{"use strict";Ne();$();N()});var vs=l(()=>{"use strict";N();B();We();dt();un()});var Er=l(()=>{"use strict";X();je();P();$();we();De()});var bs=l(()=>{"use strict";Er();un()});var Ss=l(()=>{"use strict";Er();bs()});var fn=l(()=>{"use strict";on();We();dt();gs();ln();mt();vs();Ss();ie();ge();vr();X();qt()});var pn=l(()=>{"use strict";fn();pt();ie()});var Tr=l(()=>{"use strict";pt();pn()});var Cr=l(()=>{"use strict";P();pt();pn();Tr();$()});var Mr=l(()=>{"use strict";je();on();We();sn();pt();fn();pn();Tr();Cr();we()});var Ls=l(()=>{"use strict";Mr();ge();pr();nt()});var Or=l(()=>{"use strict"});var Nr=l(()=>{"use strict";Or()});var js=l(()=>{"use strict";Nr();it();$()});var be=l(()=>{"use strict";Ne()});var mn=l(()=>{"use strict";be()});var Ws=l(()=>{"use strict";mn();be()});var hn=l(()=>{"use strict";B();tr();N()});var ee=l(()=>{"use strict";et();$();B();hn();tt();Yt();Me()});var Us=l(()=>{"use strict";me()});var Bs=l(()=>{"use strict";H();Us()});var Ks=l(()=>{"use strict";X()});var qs=l(()=>{"use strict";et();mt();un();$();ee();Bs();Ks();oe()});var $r=l(()=>{"use strict";mt();ln();fn()});var Hs=l(()=>{"use strict";ee();Cr()});function zs(){let e=new Map;return{async read(t,n){n?.throwIfAborted();let r=e.get(t);return r?structuredClone(r):void 0},async compareAndSwap(t,n,r,i){return i.signal?.throwIfAborted(),!i.isCurrent()||e.get(t)?.revision!==n?!1:(e.set(t,structuredClone(r)),!0)}}}var wR,Gs=l(()=>{"use strict";ee();B();hn();Hs();o(zs,"createMemoryModelCatalogStore");wR=zs()});var Dr=l(()=>{"use strict";be();mn()});var Xs=l(()=>{"use strict";be();Dr();mn()});var Vs=l(()=>{"use strict";ee()});var Fr=l(()=>{"use strict";H()});var Ys=l(()=>{"use strict";ee();Vs();Fr()});var Qs=l(()=>{"use strict";N()});var Zs=l(()=>{"use strict";ee();Fr();hn();Qs();B()});var ea=l(()=>{"use strict";Ne();N();P();$();Kt();Vn();H();ee();B();X()});var ta=l(()=>{"use strict";$r();ee()});import vT from"proper-lockfile";var na=l(()=>{"use strict";be()});var ra=l(()=>{"use strict";Gt()});var K=l(()=>{"use strict";fi();Xn();Kt();dt();B();$();P();tt();Qn();me();ji();pr();ge();Ls();Mr();ft();tn();it();oe();Or();Nr();js();Yt();st();cr();H();H();he();H();H();be();Ws();ln();Gt();mt();qs();$r();Gs();Dr();Xs();Ys();Zs();ea();ta();na();et();ra()});function I(e){let t=$e(e),n=sf.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${oa(t)}
|
|
90
|
+
`)}catch{}}function oa(e){let t=$e(e),n=af(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}function af(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}var sf,L=l(()=>{"use strict";K();sf=[];o(I,"emitKodaXDiagnostic");o(oa,"formatKodaXDiagnostic");o(af,"formatDiagnosticDetail")});import{debuglog as Lf}from"node:util";var wM,zr=l(()=>{"use strict";wM=Lf("kodax:macos-git")});import{execFile as xM,spawnSync as vt}from"node:child_process";import{readFileSync as jf}from"node:fs";function bt(e,t,n,r){let i=t.error?.code;I({source:"runtime:windows",level:r?"debug":"warn",message:"Windows process probe completed.",detail:{stage:e,cached:!1,available:r,durationMs:Date.now()-n,timeoutMs:5e3,exitCode:t.status,errorCode:i===void 0?void 0:["ENOENT","EACCES","EPERM","ETIMEDOUT","ENOEXEC","ENOMEM","EIO"].includes(i)?i:"OTHER"}})}function Wf(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).flatMap(i=>{if(typeof i!="object"||i===null)return[];let s=i,a=Number(s.pid),c=Number(s.parentPid),d=typeof s.creationTime=="string"?s.creationTime:String(s.creationTime??"0");return!Number.isFinite(a)||a<=0||!Number.isFinite(c)?[]:[{pid:a,parentPid:c,creationTime:/^\d+$/.test(d)?d:"0"}]})}catch{return[]}}function Uf(e){let t=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-])(\d{3})$/.exec(e);if(!t)return;let[,n,r,i,s,a,c,d,u,f]=t,p=Date.UTC(Number(n),Number(r)-1,Number(i),Number(s),Number(a),Number(c),Number(d.slice(0,3))),h=Number(f)*6e4*(u==="+"?1:-1),m=p-h;if(Number.isFinite(m))return{identity:(BigInt(m)+11644473600000n).toString(),unixMs:m}}function Bf(){let e=["$cutoff = [DateTime]::UtcNow","$items = try { @(Get-CimInstance Win32_Process -ErrorAction Stop) } catch { @(Get-WmiObject Win32_Process -ErrorAction Stop) }","$rows = @($items | ForEach-Object {"," $creationTime = '0'"," try {"," $created = $_.CreationDate"," if ($created -isnot [DateTime]) { $created = [System.Management.ManagementDateTimeConverter]::ToDateTime([string]$created) }"," $created = $created.ToUniversalTime()"," if ($created -le $cutoff) { $creationTime = ([long][Math]::Floor($created.ToFileTimeUtc() / 10000)).ToString() }"," } catch {}"," [PSCustomObject]@{ pid = [int]$_.ProcessId; parentPid = [int]$_.ParentProcessId; creationTime = $creationTime }","})","$rows | ConvertTo-Json -Compress"].join(`
|
|
91
|
+
`),t=Date.now(),n=vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:St,windowsHide:!0});if(!n.error&&n.status===0){let a=Wf(n.stdout);if(a.length>0)return a}bt("process-snapshot-cim",n,t,!1);let r=Date.now(),i=vt("wmic",["process","get","CreationDate,ParentProcessId,ProcessId","/format:list"],{encoding:"utf8",timeout:St,windowsHide:!0});if(i.error||i.status!==0){bt("process-snapshot-wmic",i,r,!1);return}let s=i.stdout.split(/\r?\n\s*\r?\n/).flatMap(a=>{let c=new Map(a.split(/\r?\n/).flatMap(h=>{let m=h.indexOf("=");return m<0?[]:[[h.slice(0,m),h.slice(m+1)]]})),d=Number(c.get("ProcessId")),u=Number(c.get("ParentProcessId")),f=c.get("CreationDate"),p=f===void 0?void 0:Uf(f);return!Number.isFinite(d)||d<=0||!Number.isFinite(u)||p===void 0||p.unixMs>r?[]:[{pid:d,parentPid:u,creationTime:p.identity}]});return s.length>0?s:void 0}function Kf(){let e=["$source = @'",Ff,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
|
|
92
|
+
`),t=Date.now(),n=vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:St,windowsHide:!0});if(n.error||n.status!==0){bt("process-snapshot-native",n,t,!1);return}let r=qf(n.stdout);return r===void 0&&bt("process-snapshot-native",n,t,!1),r}function qf(e){let t=e.split(/\r?\n/).map(r=>r.trim()).filter(Boolean);if(t.some(r=>!/^\d+,\d+,\d+$/.test(r)))return;let n=t.flatMap(r=>{let[i,s,a="0"]=r.split(",",3),c=Number(i),d=Number(s);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)?[]:[{pid:c,parentPid:d,creationTime:a}]});return n.length>0?n:void 0}function da(){return Kf()??Bf()}function Hf(){return fa<=0?da():(ua||(la=da(),ua=!0),la)}function zf(e){return[`foreach ($processId in @(${e.join(",")})) {`,' $target = $null; $creationTime = "0"'," try {"," $target = [System.Diagnostics.Process]::GetProcessById($processId)"," [long]$remainder = 0"," $creationTime = ([Math]::DivRem($target.StartTime.ToFileTimeUtc(), [long]10000, [ref]$remainder)).ToString([System.Globalization.CultureInfo]::InvariantCulture)",' } catch { $creationTime = "0" } finally { if ($null -ne $target) { $target.Dispose() } }',' [Console]::Out.WriteLine("$processId,$creationTime")',"}"].join(`
|
|
93
|
+
`)}function Gf(e,t){let n=e.trim().split(/\r?\n/);if(!(n.length!==t.length||n.some((r,i)=>!r.startsWith(`${t[i]},`)||!/^\d+,\d+$/.test(r))))return new Map(n.map(r=>{let[i,s]=r.split(",");return[Number(i),s]}))}function Xf(e){let t=Date.now(),n=vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",zf(e)],{encoding:"utf8",timeout:St,windowsHide:!0}),r=Gf(n.stdout??"",e);if(n.error||n.status!==0||r===void 0){bt("process-start-identities",n,t,!1);return}return r}function Vr(e){let t=[...new Set(e.filter(r=>Number.isInteger(r)&&r>0))];if(process.platform!=="win32")return new Map(t.map(r=>[r,Se(r)]));if(t.length===0)return new Map;let n=(fa<=0?Xf(t):void 0)??new Map(Hf()?.map(r=>[r.pid,r.creationTime]));return new Map(t.map(r=>{let i=n.get(r);return[r,i==="0"?void 0:i]}))}function Se(e){if(!Number.isInteger(e)||e<=0)return;if(process.platform==="win32"){let r=Vr([e]).get(e);return r===void 0&&I({source:"runtime:windows",level:"warn",message:"Windows process start identity is unavailable.",detail:{stage:"process-start-identity",pid:e,available:!1}}),r}if(process.platform==="linux")try{let r=jf(`/proc/${e}/stat`,"utf8"),i=r.slice(r.lastIndexOf(")")+2).trim().split(/\s+/);return i[19]===void 0?void 0:`linux:${i[19]}`}catch{return}let t=vt("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:St,windowsHide:!0}),n=t.status===0?t.stdout.trim():"";return n===""?void 0:`${process.platform}:${n}`}var St,IM,AM,Ff,RM,TM,CM,la,ua,fa,ke=l(()=>{"use strict";L();o(bt,"reportWindowsProbe");St=5e3,IM=String.raw`
|
|
94
94
|
using System;
|
|
95
95
|
using System.Runtime.InteropServices;
|
|
96
96
|
public static class KodaXWindowsJobMembership {
|
|
97
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
98
|
+
private struct BasicAccountingInformation {
|
|
99
|
+
public long TotalUserTime;
|
|
100
|
+
public long TotalKernelTime;
|
|
101
|
+
public long ThisPeriodTotalUserTime;
|
|
102
|
+
public long ThisPeriodTotalKernelTime;
|
|
103
|
+
public uint TotalPageFaultCount;
|
|
104
|
+
public uint TotalProcesses;
|
|
105
|
+
public uint ActiveProcesses;
|
|
106
|
+
public uint TotalTerminatedProcesses;
|
|
107
|
+
}
|
|
97
108
|
[StructLayout(LayoutKind.Sequential)]
|
|
98
109
|
private struct BasicLimitInformation {
|
|
99
110
|
public long PerProcessUserTimeLimit;
|
|
@@ -135,6 +146,13 @@ public static class KodaXWindowsJobMembership {
|
|
|
135
146
|
out ExtendedLimitInformation information,
|
|
136
147
|
uint informationLength,
|
|
137
148
|
IntPtr returnLength);
|
|
149
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
150
|
+
private static extern bool QueryInformationJobObject(
|
|
151
|
+
IntPtr job,
|
|
152
|
+
int informationClass,
|
|
153
|
+
out BasicAccountingInformation information,
|
|
154
|
+
uint informationLength,
|
|
155
|
+
IntPtr returnLength);
|
|
138
156
|
[DllImport("kernel32.dll")]
|
|
139
157
|
private static extern IntPtr GetCurrentProcess();
|
|
140
158
|
[DllImport("kernel32.dll")]
|
|
@@ -157,7 +175,17 @@ public static class KodaXWindowsJobMembership {
|
|
|
157
175
|
CloseHandle(job);
|
|
158
176
|
}
|
|
159
177
|
}
|
|
160
|
-
|
|
178
|
+
public static long ActiveProcessCount(string name) {
|
|
179
|
+
var job = OpenJobObjectW(4, false, name);
|
|
180
|
+
if (job == IntPtr.Zero) return Marshal.GetLastWin32Error() == 2 ? 0 : -1;
|
|
181
|
+
try {
|
|
182
|
+
BasicAccountingInformation accounting;
|
|
183
|
+
if (!QueryInformationJobObject(job, 1, out accounting,
|
|
184
|
+
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)), IntPtr.Zero)) return -1;
|
|
185
|
+
return accounting.ActiveProcesses;
|
|
186
|
+
} finally { CloseHandle(job); }
|
|
187
|
+
}
|
|
188
|
+
}`,AM=String.raw`
|
|
161
189
|
$ErrorActionPreference = 'Stop'
|
|
162
190
|
$source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
|
|
163
191
|
Add-Type -TypeDefinition $source
|
|
@@ -165,7 +193,7 @@ if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB
|
|
|
165
193
|
[Console]::Out.WriteLine('1')
|
|
166
194
|
} else {
|
|
167
195
|
[Console]::Out.Write('0')
|
|
168
|
-
}`,
|
|
196
|
+
}`,Ff=String.raw`
|
|
169
197
|
using System;
|
|
170
198
|
using System.Runtime.InteropServices;
|
|
171
199
|
using System.Text;
|
|
@@ -252,7 +280,7 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
252
280
|
CloseHandle(snapshot);
|
|
253
281
|
}
|
|
254
282
|
}
|
|
255
|
-
}`,
|
|
283
|
+
}`,RM=Object.freeze({status:"terminated"}),TM=Object.freeze({status:"already-exited"}),CM=Object.freeze({status:"unknown"});o(Wf,"parseWindowsProcessSnapshotJson");o(Uf,"parseWmicCreationTime");o(Bf,"readWindowsProcessSnapshotFallback");o(Kf,"readWindowsProcessSnapshotNative");o(qf,"parseWindowsNativeProcessRows");o(da,"readWindowsProcessSnapshotUncached");ua=!1,fa=0;o(Hf,"readWindowsProcessSnapshot");o(zf,"windowsProcessStartIdentitiesScript");o(Gf,"parseWindowsProcessStartIdentities");o(Xf,"readWindowsProcessStartIdentities");o(Vr,"readProcessStartIdentities");o(Se,"readProcessStartIdentity")});var vn=l(()=>{"use strict"});var bn=l(()=>{"use strict";zr();C();vn();vn()});import Dp from"path";function Ia(e){let t=e.trim();if(!t)throw new Error("Plugin skill path cannot be empty.");return Dp.resolve(t)}function Aa(e){let t=Ia(e);return xt.add(t),()=>{xt.delete(t)}}function Ra(e){return xt.delete(Ia(e))}function Sn(){return Array.from(xt.values())}function Ta(){xt.clear()}var xt,to=l(()=>{"use strict";xt=new Set;o(Ia,"normalizePluginSkillPath");o(Aa,"registerPluginSkillPath");o(Ra,"unregisterPluginSkillPath");o(Sn,"listPluginSkillPaths");o(Ta,"clearPluginSkillPaths")});import{homedir as Lp}from"os";import{existsSync as Ca}from"node:fs";import ae from"path";import{fileURLToPath as jp}from"url";import{dirname as Fp}from"path";function Up(){if(process.env.KODAX_BUNDLED==="true")return ae.join(ae.dirname(process.execPath),"builtin");let e=ae.join(Pa,"builtin"),t=ae.join(Pa,"..","builtin");return!Ca(e)&&Ca(t)?t:e}function kn(e){let t=Lp();return{projectPaths:e?[ae.join(e,".kodax","skills"),ae.join(e,".agents","skills")]:[],userPaths:[ae.join(t,".kodax","skills"),ae.join(t,".agents","skills")],pluginPaths:Sn(),builtinPath:Up()}}function xn(e){let t=[];for(let n of e.projectPaths)t.push({path:n,source:"project"});for(let n of e.userPaths)t.push({path:n,source:"user"});for(let n of e.pluginPaths)t.push({path:n,source:"plugin"});return t.push({path:e.builtinPath,source:"builtin"}),t}var Wp,Pa,no=l(()=>{"use strict";to();Wp=jp(import.meta.url),Pa=Fp(Wp);o(Up,"resolveBuiltinPath");o(kn,"getDefaultSkillPaths");o(xn,"getSkillPathsFlat")});import Ma from"yaml";function Kp(e){let t=e.split(`
|
|
256
284
|
`),n=[];for(let r of t){let i=r.indexOf(":");if(i>0){let s=r.slice(0,i).trim(),a=r.slice(i+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
|
|
257
285
|
`)}function Oa(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
|
|
258
286
|
`).replace(/\r/g,`
|
|
@@ -260,25 +288,25 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
260
288
|
`)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
|
|
261
289
|
---
|
|
262
290
|
`,4);if(r===-1){let c=n.indexOf(`
|
|
263
|
-
---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let i=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Ma.parse(i)??{}}catch{a=Ma.parse(
|
|
264
|
-
`,"utf8");return}catch(r){if(!
|
|
265
|
-
`,"utf8")}catch(r){if(T(r,"ENOENT"))return;n=r}try{await He(e)}catch(r){if(n===void 0&&
|
|
266
|
-
`}function
|
|
267
|
-
`,"utf8"),await ym(n,e)}catch(r){throw await bm(n,{force:!0}),r}}async function _e(e){try{return JSON.parse(await wm(e,"utf8"))}catch(t){if(xo(t,"ENOENT"))return;throw t instanceof SyntaxError?new O("store_integrity_error",`invalid JSON in ${e}`):t}}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xo(e,t){return q(e)&&e.code===t}function Nn(e,t){if(!q(e)||e.schemaVersion!==1&&e.schemaVersion!==2||typeof e.capabilityId!="string"||typeof e.displayName!="string"||typeof e.slug!="string"||typeof e.revision!="number"||typeof e.createdAt!="string"||typeof e.updatedAt!="string"||!q(e.source)||e.schemaVersion===2&&!Am(e))throw new O("store_integrity_error",`invalid capability record in ${t}`);return e}function uc(e){let t=[],n=yc(e);for(;;)try{return Sm(n),x(km.native(n),...t)}catch(r){if(r.code!=="ENOENT")throw r;let i=Ge(n);if(i===n)throw r;t.unshift(Tt(n)),n=i}}function _m(e,t){let n=wc(e,t);return n===""||n!==".."&&!n.startsWith(`..${Em}`)&&!xm(n)}function Im(e,t){return wc(e,t)===""}function bc(e){let t=uc(Pe()),n=uc(e),r=x(t,"runtime");if(Im(n,t)||_m(r,n))throw new O("store_integrity_error",`learned Area path aliases protected Runtime state: ${e}`)}function Am(e){if(e.carrier!=="skill"||!q(e.scope)||!q(e.artifact)||!q(e.provenance)||!q(e.canary))return!1;let t=e.scope,n=e.artifact,r=e.provenance,i=e.canary;return[t.configHomeHash,t.tenantHash,t.projectHash].every(s=>typeof s=="string"&&/^[a-f0-9]{64}$/.test(s))&&n.kind==="skill_markdown"&&typeof n.relativePath=="string"&&typeof n.fingerprint=="string"&&/^[a-f0-9]{64}$/.test(n.fingerprint)&&Number.isSafeInteger(n.contentRevision)&&["jobId","inputHash","decisionId","actionId"].every(s=>typeof r[s]=="string")&&i.maxInvocations===3&&Number.isSafeInteger(i.invocationCount)&&Number.isSafeInteger(i.verifiedSuccesses)&&Number.isSafeInteger(i.credibleNegatives)&&(i.binding===void 0||Rm(i.binding))&&Array.isArray(i.invocations)&&i.invocations.every(Tm)}function Rm(e){return q(e)&&typeof e.bindingId=="string"&&typeof e.ownerSessionRef=="string"&&vo(e.expiresAt)}function Tm(e){return!q(e)||typeof e.invocationId!="string"||typeof e.bindingId!="string"||!["pending","verified_success","credible_negative","inconclusive"].includes(String(e.status))||!Array.isArray(e.evidenceRefs)||!e.evidenceRefs.every(t=>typeof t=="string")||!vo(e.invokedAt)||e.usageSessionHash!==void 0&&(typeof e.usageSessionHash!="string"||!/^[a-f0-9]{64}$/.test(e.usageSessionHash))||e.artifactRevision!==void 0&&!Number.isSafeInteger(e.artifactRevision)||e.artifactFingerprint!==void 0&&(typeof e.artifactFingerprint!="string"||!/^[a-f0-9]{64}$/.test(e.artifactFingerprint))?!1:e.status==="pending"?e.completedAt===void 0:vo(e.completedAt)}function vo(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))}function fc(e,t){if(!q(e)||e.schemaVersion!==1||typeof e.sequence!="number"||!Number.isSafeInteger(e.sequence)||e.sequence<1||typeof e.eventId!="string"||typeof e.capabilityId!="string"||typeof e.capabilityRevision!="number")throw new O("store_integrity_error",`invalid learning event in ${t}`);return e}function Cm(e,t){if(!q(e)||e.schemaVersion!==1||e.clientIdentity!==t||!q(e.events))throw new O("store_integrity_error",`invalid learning client record for ${t}`);return e}async function So(e){try{return(await gc(e)).filter(t=>t.endsWith(".json")).sort().map(t=>x(e,t))}catch(t){if(xo(t,"ENOENT"))return[];throw t}}function Pm(e){let t=Tt(e),n=Ge(e),r=Tt(n),i=Ge(n);return/^[a-f0-9]{64}$/.test(t)&&/^[a-f0-9]{64}$/.test(r)&&Tt(i)==="projects"?Ge(i):e}async function pc(e,t){let n=x(e,"projects"),r=[];for(let i of await mc(n))for(let s of await mc(x(n,i))){let a=x(n,i,s,"capabilities");if(t!==void 0){let c=x(a,`${t}.json`);await _e(c)!==void 0&&r.push(c)}else r.push(...await So(a))}return r.sort()}async function mc(e){try{return(await gc(e,{withFileTypes:!0})).filter(t=>t.isDirectory()&&/^[a-f0-9]{64}$/.test(t.name)).map(t=>t.name).sort()}catch(t){if(xo(t,"ENOENT"))return[];throw t}}function $n(e,t){return{schemaVersion:1,sequence:t,eventId:Rt(e),capabilityId:e.capabilityId,capabilityRevision:e.revision,kind:yo(e),lifecycle:e.lifecycle,displayName:e.displayName,slug:e.slug,carrier:e.carrier,createdAt:e.updatedAt}}var le,Dn=l(()=>{"use strict";J();xe();C();o(ko,"resolveLearnedAreaPaths");o(ze,"assertSafeFileKey");o(bo,"writeJsonAtomic");o(_e,"readJson");o(q,"isRecord");o(xo,"isFileError");o(Nn,"assertCapability");o(uc,"canonicalExistingPath");o(_m,"pathContains");o(Im,"pathsEqual");o(bc,"assertLearnedStoreTarget");o(Am,"isValidV2Capability");o(Rm,"isValidCanaryBinding");o(Tm,"isValidCanaryInvocation");o(vo,"isValidTimestamp");o(fc,"assertEvent");o(Cm,"assertClient");o(So,"listJsonFiles");le=class{static{o(this,"LearnedAreaStore")}paths;#e;constructor(t){let n=yc(t);this.#e=Pm(n),this.paths={...ko(n),events:x(this.#e,"events"),clients:x(this.#e,"clients")}}async initialize(){for(let t of Object.values(this.paths))bc(t);await Promise.all(Object.values(this.paths).map(t=>hc(t,{recursive:!0}))),await this.withOwnerMutation(async()=>{for(let t of await this.listCapabilities())await this.ensureCurrentEvent(t)})}async readCapability(t){ze(t,"capabilityId");let n=x(this.paths.capabilities,`${t}.json`),r=await _e(n);if(r!==void 0)return Nn(r,n);if(this.#e!==this.paths.root)return;let i=await pc(this.#e,t);if(i.length>1)throw new O("store_integrity_error",`duplicate project capabilityId: ${t}`);let s=i[0];return s===void 0?void 0:Nn(await _e(s),s)}async listCapabilities(){let t=await So(this.paths.capabilities),n=this.#e===this.paths.root?await pc(this.#e):[];return Promise.all([...t,...n].map(async r=>Nn(await _e(r),r)))}async writeCapability(t){ze(t.capabilityId,"capabilityId");let n=this.#e===this.paths.root&&t.schemaVersion===2?x(this.#e,"projects",t.scope.tenantHash,t.scope.projectHash,"capabilities"):this.paths.capabilities,r=x(n,`${t.capabilityId}.json`);Nn(t,r),await bo(r,t)}async writeEvent(t){ze(t.eventId,"eventId"),await bo(x(this.paths.events,`${t.eventId}.json`),t)}async listEvents(){return(await Promise.all((await So(this.paths.events)).map(async n=>fc(await _e(n),n)))).sort((n,r)=>n.sequence-r.sequence)}async readClient(t){ze(t,"clientIdentity");let n=x(this.paths.clients,`${t}.json`),r=await _e(n);return r===void 0?{schemaVersion:1,clientIdentity:t,events:{}}:Cm(r,t)}async writeClient(t){ze(t.clientIdentity,"clientIdentity"),await bo(x(this.paths.clients,`${t.clientIdentity}.json`),t)}withOwnerMutation(t){return te(x(this.#e,".owner.lock"),t)}withClientMutation(t,n){return ze(t,"clientIdentity"),te(x(this.paths.clients,`.${t}.lock`),n)}async ensureCurrentEvent(t){let n=Rt(t),r=await _e(x(this.paths.events,`${n}.json`));if(r!==void 0)return fc(r,n);let i=await this.listEvents(),s=$n(t,(i.at(-1)?.sequence??0)+1);return await this.writeEvent(s),s}};o(Pm,"globalLearnedAreaRoot");o(pc,"projectCapabilityFiles");o(mc,"listDirectories");o($n,"eventFromCapability")});var Eo=l(()=>{"use strict";Ee();J()});var kc=l(()=>{"use strict";C();J();Dn();Eo();mo();Ee()});var xc=l(()=>{"use strict";J()});function Ie(e){return e.schemaVersion===2}var dL,Pt=l(()=>{"use strict";J();dL=16*1024;o(Ie,"isLearnedCapabilityRecordV2")});var Ec=l(()=>{"use strict";J();Pt()});var yL,_c=l(()=>{"use strict";J();Dn();yL=16*1024});var Tc=l(()=>{"use strict";J();L();Pt()});var Ln=l(()=>{"use strict";ro();oo();Rn();Ee();po();mo();go();ac();cc();lc();J();kc();Dn();Eo();xc();Ec();_c();Tc();Pt()});import{createHash as ch}from"node:crypto";import{lstat as Mc,readFile as dh,readdir as lh,realpath as uh,stat as fh}from"fs/promises";import{join as Ae,dirname as Io,relative as ph,resolve as jn,sep as Ao}from"path";async function Mt(e,t){let n=new Map,r=[],i=o(d=>{let u=n.get(d.name);u?Re(u.path)!==Re(d.path)&&I({source:"agent:skills",level:"warn",message:`Skill "${d.name}" is shadowed by a higher-priority source.`,detail:{code:"skill_shadowed",name:d.name,selectedPath:Ae(u.path,"SKILL.md"),shadowedPath:Ae(d.path,"SKILL.md")}}):n.set(d.name,d)},"register"),a={...xn(e),...t},c=En(a);for(let{path:d,source:u}of c)try{let f=await Eh(d,u,r);for(let p of f)i(p)}catch(f){r.push({path:d,error:f instanceof Error?f.message:String(f)})}if(a.learnedArea!==void 0){let d=await mh(a.learnedArea);r.push(...d.errors);for(let u of d.skills)i(u)}return{skills:n,errors:r}}async function mh(e){let t=[],n=[];for(let r of gh(e)){let i=await hh(r.rootDir,r.expectedScope,e);t.push(...i.skills),n.push(...i.errors)}return{skills:t,errors:n}}async function hh(e,t,n){let r=new le(e),i=[],s=[],a;try{a=await r.listCapabilities()}catch(c){return{skills:i,errors:[{path:e,error:c instanceof Error?c.message:String(c)}]}}for(let c of a){if(!Ie(c)||!wh(c,t)||!bh(c,n))continue;let d=jn(e,...c.artifact.relativePath.split("/"));try{kh(d,e),await Sh(e,d);let u=await dh(d,"utf8");if(xh(u)!==c.artifact.fingerprint)throw new Error("learned Skill artifact fingerprint mismatch");let f=await xt(Io(d),"learned");if(f===null)throw new Error("learned Skill metadata is invalid");i.push({...f,learned:{capabilityId:c.capabilityId,revision:c.artifact.contentRevision,fingerprint:c.artifact.fingerprint}})}catch(u){let f=u instanceof Error?u.message:String(u);s.push({path:d,error:f}),await vh(r,c,f)}}return{skills:i,errors:s}}function gh(e){let t=[e.rootDir,...e.additionalRootDirs??[]],n=yh(e);if(t.length!==n.length)throw new Error("learned Skill discovery requires one expected scope per physical root");let r=t.map((i,s)=>({rootDir:i,expectedScope:n[s]}));for(let[i,s]of r.entries())if(r.findIndex(c=>Re(c.rootDir)===Re(s.rootDir))!==i)throw new Error("learned Skill discovery physical roots must be unique");return r}function wh(e,t){return e.scope.configHomeHash===t.configHomeHash&&e.scope.tenantHash===t.tenantHash&&e.scope.projectHash===t.projectHash}function yh(e){let t=[...e.expectedScopes??[e.expectedScope]];if(t.length===0)throw new Error("learned Skill discovery requires at least one expected scope");return t}function bh(e,t){if(e.lifecycle==="active_learned")return!0;if(e.lifecycle!=="testing")return!1;let n=t.testingBindings?.[e.capabilityId],r=e.canary.binding;return n!==void 0&&r?.bindingId===n&&Date.parse(r.expiresAt)>Date.parse(t.now??new Date().toISOString())}async function vh(e,t,n){await e.withOwnerMutation(async()=>{let r=await e.readCapability(t.capabilityId);if(r===void 0||!Ie(r)||r.revision!==t.revision||r.lifecycle!=="testing"&&r.lifecycle!=="active_learned")return;let i={...r,lifecycle:"quarantined",revision:r.revision+1,updatedAt:new Date().toISOString(),diagnostics:[...r.diagnostics??[],`artifact discovery rejected: ${n}`]};await e.writeCapability(i),await e.ensureCurrentEvent(i)})}async function Sh(e,t){let r=ph(jn(e),t).split(Ao),i=jn(e),s=await Mc(i);if(!s.isDirectory()||s.isSymbolicLink())throw new Error("learned Skill root is not a regular directory");for(let[a,c]of r.entries()){i=Ae(i,c);let d=await Mc(i),u=a===r.length-1;if(d.isSymbolicLink()||(u?!d.isFile():!d.isDirectory()))throw new Error("learned Skill artifact contains a symlink or non-regular path")}}function kh(e,t){let n=Re(t),r=Re(e);if(r!==n&&!r.startsWith(n.endsWith(Ao)?n:`${n}${Ao}`))throw new Error("learned Skill artifact escapes its Learned Area")}function Re(e){let t=jn(e);return process.platform==="win32"?t.toLowerCase():t}function xh(e){return ch("sha256").update(e,"utf8").digest("hex")}async function Eh(e,t,n){let r=[],i=new Set;async function s(a){try{let c=Re(await uh(a));if(i.has(c))return;i.add(c);let d=await lh(a,{withFileTypes:!0});if(d.some(u=>u.name==="SKILL.md")){let u=await xt(a,t);u?r.push(u):n.push({path:Ae(a,"SKILL.md"),error:"Skill metadata could not be loaded."});return}d.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);for(let u of d){if(u.name.startsWith(".")||u.name==="node_modules")continue;let f=Ae(a,u.name);try{(u.isDirectory()||u.isSymbolicLink()&&(await fh(f)).isDirectory())&&await s(f)}catch(p){Oc(n,f,p)}}}catch(c){Oc(n,a,c)}}return o(s,"visit"),await s(e),r}function Oc(e,t,n){typeof n=="object"&&n!==null&&"code"in n&&n.code==="ENOENT"||e.push({path:t,error:n instanceof Error?n.message:String(n)})}function Ro(e,t){let n=[],r=[".kodax/skills",".agents/skills"],i=e,s=Io(t);for(;i!==s&&i!=="/"&&i.length>3;){for(let c of r)n.push(Ae(i,c));let a=Io(i);if(a===i)break;i=a}return n}async function Nc(e,t){let n=Ro(e,t),r={projectPaths:[Ae(t,".kodax","skills"),...n]};return Mt(t,r)}var To=l(()=>{"use strict";Ln();to();An();L();o(Mt,"discoverSkills");o(mh,"scanRecordGatedLearnedArea");o(hh,"scanRecordGatedLearnedRoot");o(gh,"learnedAreaBindings");o(wh,"scopeMatches");o(yh,"expectedLearnedScopes");o(bh,"isRecordAdmitted");o(vh,"quarantineInvalidLearnedArtifact");o(Sh,"assertRegularArtifactChain");o(kh,"assertInside");o(Re,"comparablePath");o(xh,"sha256");o(Eh,"scanSkillDirectory");o(Oc,"recordDiscoveryError");o(Ro,"getNestedSkillPaths");o(Nc,"discoverSkillsWithMonorepo")});import{execSync as _h}from"child_process";import Ih from"path";function $c(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Ah)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let i=t.split(/\s+/);if(i.includes("-f")||i.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let i=t.split(/\s+/).slice(1);if(i.length>0&&!i.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}function Rh(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&Ih.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return $c(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!$c(s))return!1}return!0}function Co(e){let t=[],n="",r=!1,i="";for(let s=0;s<e.length;s++){let a=e[s];r?a===i?r=!1:n+=a:a==='"'||a==="'"?(r=!0,i=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}function Dc(e){return new Xe(e)}async function ue(e,t,n){return new Xe(n).resolve(e,t)}var Ah,Xe,Ot=l(()=>{"use strict";Ah=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);o($c,"isSingleSafeDynamicContextCommand");o(Rh,"isSafeDynamicContextCommand");o(Co,"parseArguments");Xe=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=Co(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(t))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let u=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${u}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.assertDynamicContextAllowed?.(t),this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Rh(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return _h(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};o(Dc,"createResolver");o(ue,"resolveSkillContent")});function Lc(e,t){let n=e.replace(/\s+/gu," ").trim();return n.length<=t?n:`${n.slice(0,t-1).replace(/[\uD800-\uDBFF]$/,"")}\u2026`}function Po(e){let t=e.filter(c=>!c.disableModelInvocation);if(t.length===0)return"";let n=["## Available Skills","","When users ask you to perform tasks, check if any of the available skills below match the request. Skills provide specialized capabilities and step-by-step instructions for specific workflows.","",'If the current task context already contains an "Active skill invocation" or a host-expanded Skill block for the referenced name, that explicit user invocation is already complete. Follow the expanded instructions and do NOT call the `skill` tool for that Skill again.',"",'When users reference a "slash command" or "/<something>" (e.g. "/feature-list-tracker", "/skill:foo") and the host has not already expanded it, they are referring to a skill. Invoke it via the `skill` tool with the skill name.',"","**BLOCKING REQUIREMENT**: When a model-visible Skill matches the user's request and the host has not already expanded it, you MUST invoke it via the `skill` tool BEFORE generating any other response about the task. Loading the Skill is not optional and not something to defer \u2014 it is the FIRST action you take.","","NEVER mention a model-discovered Skill without actually calling the `skill` tool. This rule does not apply to a host-expanded active user invocation, which must not be called again. Do not guess at Skill names \u2014 only use Skills listed below. Do NOT call `read` on a `SKILL.md` path to load a Skill \u2014 that is the legacy path and bypasses the resolver.",""],r=n.join(`
|
|
268
|
-
`).length+1,i=0,s=0;for(let c of t){let d=Lc(c.description,500),u=c.argumentHint?Lc(c.argumentHint,80):"",f=`- ${c.name}:${u?` ${u}`:""} ${d}`;r+f.length+1>
|
|
269
|
-
`)}function
|
|
270
|
-
`)}parseAllowedTools(t){return t?t.split(",").map(n=>n.trim()).filter(Boolean):[]}};o(Wc,"createExecutor");o(Uc,"executeSkill")});function Kc(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function
|
|
271
|
-
`)}async function qc(e,t,n){let r=await ue(e.content,t,n);return{content:
|
|
291
|
+
---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let i=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Ma.parse(i)??{}}catch{a=Ma.parse(Kp(i))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}function Na(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}function qp(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}function Hp(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>qp(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}function $a(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of Bp){let i=Hp(t[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}var Bp,Da=l(()=>{"use strict";Bp=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];o(Kp,"sanitizeYaml");o(Oa,"parseYamlFrontmatter");o(Na,"normalizeAllowedToolsString");o(qp,"normalizeYamlHookEntry");o(Hp,"normalizeYamlHookEntryList");o($a,"normalizeYamlHookMap")});import{readFile as ro,readdir as zp}from"fs/promises";import{join as ce,relative as Gp}from"path";function En(e){let[t,n]=Oa(e,{throwOnMissing:!0});if(!t)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!t.name||typeof t.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!t.description||typeof t.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:t.name,description:t.description,disableModelInvocation:t["disable-model-invocation"]===!0,userInvocable:t["user-invocable"]!==!1,allowedTools:Na(t["allowed-tools"]),context:t.context==="fork"?"fork":void 0,agent:typeof t.agent=="string"?t.agent:void 0,argumentHint:typeof t["argument-hint"]=="string"?t["argument-hint"]:void 0,model:typeof t.model=="string"?t.model:void 0,hooks:$a(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}async function Et(e,t){let n=ce(e,"SKILL.md");try{let r=await ro(n,"utf-8"),{frontmatter:i}=En(r);return{name:i.name,description:i.description,userInvocable:!0,argumentHint:i.argumentHint,path:e,source:t,disableModelInvocation:i.disableModelInvocation??!1}}catch(r){return I({source:"agent:skills",level:"error",message:`Failed to load skill metadata from ${e}.`,detail:r}),null}}async function _n(e,t){let n=ce(e,"SKILL.md");try{let r=await ro(n,"utf-8"),{frontmatter:i,body:s}=En(r),[a,c,d,u,f]=await Promise.all([qe(ce(e,"scripts")),qe(ce(e,"references")),qe(ce(e,"assets")),qe(ce(e,"templates")),qe(ce(e,"resources"))]);return{...i,userInvocable:!0,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...u.length>0&&{templates:u},...f.length>0&&{resources:f}}}catch(r){return I({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}async function qe(e,t=e){let n=[];try{let r=await zp(e,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=ce(e,i.name);if(i.isDirectory()){n.push(...await qe(s,t));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:Gp(t,s).replace(/\\/g,"/")})}}catch{}return n}async function La(e){if(e.content)return e.content;let t=await ro(e.path,"utf-8");return e.content=t,t}var In=l(()=>{"use strict";L();Da();o(En,"parseSkillMarkdown");o(Et,"loadSkillMetadata");o(_n,"loadFullSkill");o(qe,"loadSkillFiles");o(La,"loadSkillFileContent")});var oo=l(()=>{"use strict"});var io=l(()=>{"use strict"});var ja,Fa,An=l(()=>{"use strict";ja=64*1024,Fa=256*1024});import{randomUUID as Xp}from"node:crypto";import{mkdir as Ka,open as qa,readFile as de,readdir as lo,rm as Vp,stat as Cn,utimes as Jp,writeFile as Ha}from"node:fs/promises";import{dirname as Yp,join as so}from"node:path";function Zp(){return Ua||(Wa=Se(process.pid),Ua=!0),Wa}async function te(e,t,n=za){let r=await Xa(e,n);try{return await t()}finally{await r()}}async function Xa(e,t=za,n={}){await Ka(Yp(e),{recursive:!0});let r=await em(e,t,n.requireKnownOwner===!0),i=!1,s=!1,a;return async()=>{if(!s){if(a!==void 0)return a;a=(async()=>{i||(await r.handle.close(),i=!0),await ao(e,r.token),s=!0})();try{await a}finally{s||(a=void 0)}}}}async function em(e,t,n,r){let i=Date.now()+t,s=await tm(e,r),a,c=!1;try{for(await nm(s,i,e,r);;){await Va(s);try{let d=await cm(e,s.token);try{await uo(s)}catch(u){let f=[u];try{await d.handle.close()}catch(p){f.push(p)}try{await ao(e,d.token)}catch(p){f.push(p)}throw f.length===1?u:new AggregateError(f,"learning lock ticket loss cleanup failed")}return a=d,a}catch(d){let u=await um(d,e);if(u==="retry_missing"){if(c)throw d;c=!0,await It(_t);continue}if(u==="not_contended")throw d;c=!1;let f=await dm(e,n,r);if(f!==void 0&&(!n||At(f.raw)!==void 0)&&await lm(e,f))continue;if(Date.now()>=i)throw nc(e);await It(_t)}}}finally{try{await Qa(s.path,s.raw)}catch(d){if(a===void 0)throw d;let u=[d];try{await a.handle.close()}catch(f){u.push(f)}try{await ao(e,a.token)}catch(f){u.push(f)}throw u.length===1?d:new AggregateError(u,"learning lock acquisition cleanup failed")}}}async function tm(e,t){let n=`${e}.queue`,r=Xp(),i=ec(r),s=so(n,`choosing-${r}.lock`);await Ka(n,{recursive:!0}),await Ba(s,i);try{await Ya(n,e,s,t),await Ja(s,i,"choosing entry");let a=await rm(n),c=Math.max(0,...a.map(f=>f.number))+1;if(!Number.isSafeInteger(c))throw new Error("learning lock ticket overflow");let d=`ticket-${String(c).padStart(Qp,"0")}-${r}.lock`,u=so(n,d);return await Ba(u,i),{queuePath:n,path:u,name:d,raw:i,token:r}}finally{await Qa(s,i)}}async function nm(e,t,n,r){for(;;){await Va(e),await Ya(e.queuePath,n,e.path,r),await uo(e);let i=await lo(e.queuePath),s=i.some(c=>c.startsWith("choosing-")),a=i.map(Pn).filter(c=>c!==void 0).sort(om)[0];if(!s&&a?.name===e.name)return;if(Date.now()>=t)throw nc(n);await It(_t)}}async function Ba(e,t){let n=await qa(e,"wx");try{try{await n.writeFile(t,"utf8")}finally{await n.close()}}catch(r){throw await He(e),r}}async function uo(e){await Ja(e.path,e.raw,"ticket")}async function Va(e){await uo(e);try{let t=new Date;await Jp(e.path,t,t)}catch(t){throw T(t,"ENOENT")?new Error(`learning store lock ticket lost: ${e.path}`):t}}async function Ja(e,t,n){try{if(await de(e,"utf8")!==t)throw new Error(`learning store lock ${n} lost: ${e}`)}catch(r){throw T(r,"ENOENT")?new Error(`learning store lock ${n} lost: ${e}`):r}}async function rm(e){return(await lo(e)).map(Pn).filter(t=>t!==void 0)}function Pn(e){let t=/^ticket-(\d{16})-[0-9a-f-]+\.lock$/i.exec(e);if(t===null)return;let n=Number(t[1]);return Number.isSafeInteger(n)?{name:e,number:n}:void 0}function om(e,t){return e.number-t.number||e.name.localeCompare(t.name)}async function Ya(e,t,n,r){let i=await lo(e);await Promise.all(i.filter(im).map(async s=>{let a=so(e,s);a!==n&&await sm(a,s,t,r)&&await He(a)}))}function im(e){return/^choosing-[0-9a-f-]+\.lock$/i.test(e)||Pn(e)!==void 0}async function sm(e,t,n,r){try{let i=await Cn(e),s=At(await de(e,"utf8"));return s?.released===!0||s!==void 0&&!fo(s.pid)||s!==void 0&&tc(s,r)?!0:Date.now()-i.mtimeMs<=Ga?!1:s===void 0||!co(s)?!0:s.token===void 0?!1:Pn(t)===void 0?!0:!await am(n,s.token)}catch(i){if(T(i,"ENOENT")||["EPERM","EACCES","EBUSY"].some(s=>T(i,s)))return!1;throw i}}async function am(e,t){try{return At(await de(e,"utf8"))?.token===t}catch(n){if(T(n,"ENOENT"))return!1;if(["EPERM","EACCES","EBUSY"].some(r=>T(n,r)))return!0;throw n}}async function cm(e,t){let n=await qa(e,"wx");try{return await n.writeFile(ec(t),"utf8"),{handle:n,token:t}}catch(r){throw await n.close(),await He(e),r}}async function dm(e,t=!1,n){try{let r=await Cn(e),i=await de(e,"utf8"),s=At(i),a=s?.token!==void 0&&await pm(e,s.token),c=s!==void 0&&(!fo(s.pid)||tc(s,n)||t&&!!s.processStartIdentity&&!co(s));return!a&&!c&&Date.now()-r.mtimeMs<=Ga?void 0:a||c||s===void 0||!co(s)?{raw:i,mtimeMs:r.mtimeMs,size:r.size,...c&&s?{abandonedOwner:s}:{}}:void 0}catch(r){if(["ENOENT","EPERM","EACCES","EBUSY"].some(i=>T(r,i)))return;throw r}}async function lm(e,t){try{let n=await Cn(e);return n.mtimeMs!==t.mtimeMs||n.size!==t.size||await de(e,"utf8")!==t.raw?!1:(await He(e),!0)}catch(n){if(T(n,"ENOENT"))return!0;if(["EPERM","EACCES","EBUSY"].some(r=>T(n,r)))return!1;throw n}}async function um(e,t){if(T(e,"EEXIST"))return"contended";if(!["EPERM","EACCES","EBUSY"].some(n=>T(e,n)))return"not_contended";try{return(await Cn(t)).isFile()?"contended":"not_contended"}catch(n){if(T(n,"ENOENT"))return"retry_missing";throw e}}async function ao(e,t){try{if(At(await de(e,"utf8"))?.token!==t)return;try{await He(e);return}catch(r){try{await fm(e,t);return}catch(i){throw new AggregateError([r,i],"learning lock release marker and owner cleanup both failed")}}}catch(n){if(!T(n,"ENOENT"))throw n}}async function fm(e,t){for(let n=1;n<=Rn;n+=1)try{await Ha(Za(e,t),`${t}
|
|
292
|
+
`,"utf8");return}catch(r){if(!po(r)||n===Rn)throw r;await It(_t)}}async function Qa(e,t){let n;try{if(await de(e,"utf8")!==t)throw new Error(`learning store lock queue entry lost: ${e}`);await Ha(e,`${t.trimEnd()} released
|
|
293
|
+
`,"utf8")}catch(r){if(T(r,"ENOENT"))return;n=r}try{await He(e)}catch(r){if(n===void 0&&po(r))return;throw n===void 0?r:new AggregateError([n,r],"learning lock queue marker and cleanup both failed")}}async function pm(e,t){try{return(await de(Za(e,t),"utf8")).trim()===t}catch(n){if(["ENOENT","EPERM","EACCES","EBUSY"].some(r=>T(n,r)))return!1;throw n}}function Za(e,t){return`${e}.${t}.released`}function ec(e){let t=Zp(),n=t===void 0?"":` identity=${Buffer.from(t).toString("base64url")}`;return`${process.pid} ${e}${n}
|
|
294
|
+
`}function At(e){let t=e.trim().split(/\s+/),n=Number(t.shift());if(!Number.isSafeInteger(n)||n<=0)return;let r,i,s=!1;for(let a of t){if(/^[0-9a-f-]+$/i.test(a)&&r===void 0){r=a;continue}if(a.startsWith("identity=")&&i===void 0){let c=a.slice(9);if(!/^[A-Za-z0-9_-]+$/.test(c)||(i=Buffer.from(c,"base64url").toString("utf8"),!i))return;continue}if(a==="released"&&!s){s=!0;continue}return}return{pid:n,...r===void 0?{}:{token:r},...i===void 0?{}:{processStartIdentity:i},released:s}}function fo(e){try{return process.kill(e,0),!0}catch(t){return!T(t,"ESRCH")}}function T(e,t){return typeof e=="object"&&e!==null&&"code"in e&&e.code===t}function co(e){if(!fo(e.pid))return!1;if(e.processStartIdentity===void 0)return!0;let t=Se(e.pid);return t===void 0||t===e.processStartIdentity}function tc(e,t){return!!e.processStartIdentity&&e.pid===t?.pid&&e.processStartIdentity===t.processStartIdentity}function po(e){return["EPERM","EACCES","EBUSY"].some(t=>T(e,t))}async function He(e){for(let t=1;t<=Rn;t+=1)try{await Vp(e,{force:!0});return}catch(n){if(T(n,"ENOENT"))return;if(!po(n)||t===Rn)throw n;await It(_t)}}function nc(e){return new Tn(e)}async function It(e){await new Promise(t=>setTimeout(t,e))}var za,_t,Ga,Qp,Rn,Wa,Ua,Tn,xe=l(()=>{"use strict";ke();za=5e3,_t=10,Ga=3e4,Qp=16,Rn=8,Ua=!1;o(Zp,"getCurrentProcessStartIdentity");Tn=class extends Error{static{o(this,"KodaXFileLockTimeoutError")}lockPath;code="kodax_file_lock_timeout";constructor(t){super(`KodaX file lock timed out: ${t}`),this.lockPath=t,this.name="KodaXFileLockTimeoutError"}};o(te,"withLearningFileLock");o(Xa,"acquireLearningFileLock");o(em,"acquireLock");o(tm,"createLockTicket");o(nm,"waitForTicketTurn");o(Ba,"createOwnerFile");o(uo,"assertTicketOwned");o(Va,"heartbeatLockTicket");o(Ja,"assertQueueEntryOwned");o(rm,"listQueueTickets");o(Pn,"parseQueueTicket");o(om,"compareQueueTickets");o(Ya,"cleanupAbandonedQueueEntries");o(im,"isQueueEntryName");o(sm,"isAbandonedQueueEntry");o(am,"queueTicketOwnsCoordinatorLock");o(cm,"createLock");o(dm,"observeStaleLock");o(lm,"removeObservedStaleLock");o(um,"classifyExistingLockContention");o(ao,"releaseLock");o(fm,"writeReleaseMarkerWithTransientRetry");o(Qa,"releaseQueueEntry");o(pm,"hasReleaseMarker");o(Za,"releaseMarkerPath");o(ec,"lockOwnerRecord");o(At,"parseOwner");o(fo,"isProcessAlive");o(T,"isFileError");o(co,"isRecordedOwnerAlive");o(tc,"matchesAbandonedOwner");o(po,"isTransientFileContention");o(He,"removeFileWithTransientRetry");o(nc,"lockTimeout");o(It,"delay")});var Ee=l(()=>{"use strict";C();bn();xe()});var mo=l(()=>{"use strict";An();io()});var ho=l(()=>{"use strict";mo();An();Ee()});var wo=l(()=>{"use strict";oo();Ee()});var ac=l(()=>{"use strict";C();bn()});var ID,cc=l(()=>{"use strict";ID=1024*1024});var lc=l(()=>{"use strict";wo()});function yo(e){return e==="active_learned"?"activated":e==="promoted_user"?"promoted":e==="quarantined"?"attention":e}function vo(e){return e.lastAction==="rollback"?"attention":yo(e.lifecycle)}function Tt(e){return`${e.capabilityId}-r${e.revision}-${vo(e)}`}var O,J=l(()=>{"use strict";O=class extends Error{static{o(this,"LearningCapabilityError")}code;constructor(t,n){super(n),this.code=t,this.name="LearningCapabilityError"}};o(yo,"learningEventKindForLifecycle");o(vo,"learningEventKindForRecord");o(Tt,"learningEventIdFor")});import{mkdir as hc,readFile as mm,readdir as gc,rename as hm,rm as gm,writeFile as wm}from"node:fs/promises";import{lstatSync as ym,realpathSync as vm}from"node:fs";import{basename as Ct,dirname as Ge,isAbsolute as bm,join as x,relative as wc,resolve as yc,sep as Sm}from"node:path";function xo(e){return{root:e,skills:x(e,"skills"),extensions:x(e,"extensions"),capabilities:x(e,"capabilities"),events:x(e,"events"),clients:x(e,"clients")}}function ze(e,t){if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$/.test(e))throw new O("invalid_record",`${t} is not a safe file key`)}async function bo(e,t){vc(e),await hc(Ge(e),{recursive:!0});let n=x(Ge(e),`.${Ct(e)}.${process.pid}-${Date.now().toString(36)}.tmp`);try{await wm(n,`${JSON.stringify(t,null,2)}
|
|
295
|
+
`,"utf8"),await hm(n,e)}catch(r){throw await gm(n,{force:!0}),r}}async function _e(e){try{return JSON.parse(await mm(e,"utf8"))}catch(t){if(Eo(t,"ENOENT"))return;throw t instanceof SyntaxError?new O("store_integrity_error",`invalid JSON in ${e}`):t}}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Eo(e,t){return q(e)&&e.code===t}function On(e,t){if(!q(e)||e.schemaVersion!==1&&e.schemaVersion!==2||typeof e.capabilityId!="string"||typeof e.displayName!="string"||typeof e.slug!="string"||typeof e.revision!="number"||typeof e.createdAt!="string"||typeof e.updatedAt!="string"||!q(e.source)||e.schemaVersion===2&&!Em(e))throw new O("store_integrity_error",`invalid capability record in ${t}`);return e}function uc(e){let t=[],n=yc(e);for(;;)try{return ym(n),x(vm.native(n),...t)}catch(r){if(r.code!=="ENOENT")throw r;let i=Ge(n);if(i===n)throw r;t.unshift(Ct(n)),n=i}}function km(e,t){let n=wc(e,t);return n===""||n!==".."&&!n.startsWith(`..${Sm}`)&&!bm(n)}function xm(e,t){return wc(e,t)===""}function vc(e){let t=uc(Pe()),n=uc(e),r=x(t,"runtime");if(xm(n,t)||km(r,n))throw new O("store_integrity_error",`learned Area path aliases protected Runtime state: ${e}`)}function Em(e){if(e.carrier!=="skill"||!q(e.scope)||!q(e.artifact)||!q(e.provenance)||!q(e.canary))return!1;let t=e.scope,n=e.artifact,r=e.provenance,i=e.canary;return[t.configHomeHash,t.tenantHash,t.projectHash].every(s=>typeof s=="string"&&/^[a-f0-9]{64}$/.test(s))&&n.kind==="skill_markdown"&&typeof n.relativePath=="string"&&typeof n.fingerprint=="string"&&/^[a-f0-9]{64}$/.test(n.fingerprint)&&Number.isSafeInteger(n.contentRevision)&&["jobId","inputHash","decisionId","actionId"].every(s=>typeof r[s]=="string")&&i.maxInvocations===3&&Number.isSafeInteger(i.invocationCount)&&Number.isSafeInteger(i.verifiedSuccesses)&&Number.isSafeInteger(i.credibleNegatives)&&(i.binding===void 0||_m(i.binding))&&Array.isArray(i.invocations)&&i.invocations.every(Im)}function _m(e){return q(e)&&typeof e.bindingId=="string"&&typeof e.ownerSessionRef=="string"&&So(e.expiresAt)}function Im(e){return!q(e)||typeof e.invocationId!="string"||typeof e.bindingId!="string"||!["pending","verified_success","credible_negative","inconclusive"].includes(String(e.status))||!Array.isArray(e.evidenceRefs)||!e.evidenceRefs.every(t=>typeof t=="string")||!So(e.invokedAt)||e.usageSessionHash!==void 0&&(typeof e.usageSessionHash!="string"||!/^[a-f0-9]{64}$/.test(e.usageSessionHash))||e.artifactRevision!==void 0&&!Number.isSafeInteger(e.artifactRevision)||e.artifactFingerprint!==void 0&&(typeof e.artifactFingerprint!="string"||!/^[a-f0-9]{64}$/.test(e.artifactFingerprint))?!1:e.status==="pending"?e.completedAt===void 0:So(e.completedAt)}function So(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))}function fc(e,t){if(!q(e)||e.schemaVersion!==1||typeof e.sequence!="number"||!Number.isSafeInteger(e.sequence)||e.sequence<1||typeof e.eventId!="string"||typeof e.capabilityId!="string"||typeof e.capabilityRevision!="number")throw new O("store_integrity_error",`invalid learning event in ${t}`);return e}function Am(e,t){if(!q(e)||e.schemaVersion!==1||e.clientIdentity!==t||!q(e.events))throw new O("store_integrity_error",`invalid learning client record for ${t}`);return e}async function ko(e){try{return(await gc(e)).filter(t=>t.endsWith(".json")).sort().map(t=>x(e,t))}catch(t){if(Eo(t,"ENOENT"))return[];throw t}}function Rm(e){let t=Ct(e),n=Ge(e),r=Ct(n),i=Ge(n);return/^[a-f0-9]{64}$/.test(t)&&/^[a-f0-9]{64}$/.test(r)&&Ct(i)==="projects"?Ge(i):e}async function pc(e,t){let n=x(e,"projects"),r=[];for(let i of await mc(n))for(let s of await mc(x(n,i))){let a=x(n,i,s,"capabilities");if(t!==void 0){let c=x(a,`${t}.json`);await _e(c)!==void 0&&r.push(c)}else r.push(...await ko(a))}return r.sort()}async function mc(e){try{return(await gc(e,{withFileTypes:!0})).filter(t=>t.isDirectory()&&/^[a-f0-9]{64}$/.test(t.name)).map(t=>t.name).sort()}catch(t){if(Eo(t,"ENOENT"))return[];throw t}}function Nn(e,t){return{schemaVersion:1,sequence:t,eventId:Tt(e),capabilityId:e.capabilityId,capabilityRevision:e.revision,kind:vo(e),lifecycle:e.lifecycle,displayName:e.displayName,slug:e.slug,carrier:e.carrier,createdAt:e.updatedAt}}var le,$n=l(()=>{"use strict";J();xe();C();o(xo,"resolveLearnedAreaPaths");o(ze,"assertSafeFileKey");o(bo,"writeJsonAtomic");o(_e,"readJson");o(q,"isRecord");o(Eo,"isFileError");o(On,"assertCapability");o(uc,"canonicalExistingPath");o(km,"pathContains");o(xm,"pathsEqual");o(vc,"assertLearnedStoreTarget");o(Em,"isValidV2Capability");o(_m,"isValidCanaryBinding");o(Im,"isValidCanaryInvocation");o(So,"isValidTimestamp");o(fc,"assertEvent");o(Am,"assertClient");o(ko,"listJsonFiles");le=class{static{o(this,"LearnedAreaStore")}paths;#e;constructor(t){let n=yc(t);this.#e=Rm(n),this.paths={...xo(n),events:x(this.#e,"events"),clients:x(this.#e,"clients")}}async initialize(){for(let t of Object.values(this.paths))vc(t);await Promise.all(Object.values(this.paths).map(t=>hc(t,{recursive:!0}))),await this.withOwnerMutation(async()=>{for(let t of await this.listCapabilities())await this.ensureCurrentEvent(t)})}async readCapability(t){ze(t,"capabilityId");let n=x(this.paths.capabilities,`${t}.json`),r=await _e(n);if(r!==void 0)return On(r,n);if(this.#e!==this.paths.root)return;let i=await pc(this.#e,t);if(i.length>1)throw new O("store_integrity_error",`duplicate project capabilityId: ${t}`);let s=i[0];return s===void 0?void 0:On(await _e(s),s)}async listCapabilities(){let t=await ko(this.paths.capabilities),n=this.#e===this.paths.root?await pc(this.#e):[];return Promise.all([...t,...n].map(async r=>On(await _e(r),r)))}async writeCapability(t){ze(t.capabilityId,"capabilityId");let n=this.#e===this.paths.root&&t.schemaVersion===2?x(this.#e,"projects",t.scope.tenantHash,t.scope.projectHash,"capabilities"):this.paths.capabilities,r=x(n,`${t.capabilityId}.json`);On(t,r),await bo(r,t)}async writeEvent(t){ze(t.eventId,"eventId"),await bo(x(this.paths.events,`${t.eventId}.json`),t)}async listEvents(){return(await Promise.all((await ko(this.paths.events)).map(async n=>fc(await _e(n),n)))).sort((n,r)=>n.sequence-r.sequence)}async readClient(t){ze(t,"clientIdentity");let n=x(this.paths.clients,`${t}.json`),r=await _e(n);return r===void 0?{schemaVersion:1,clientIdentity:t,events:{}}:Am(r,t)}async writeClient(t){ze(t.clientIdentity,"clientIdentity"),await bo(x(this.paths.clients,`${t.clientIdentity}.json`),t)}withOwnerMutation(t){return te(x(this.#e,".owner.lock"),t)}withClientMutation(t,n){return ze(t,"clientIdentity"),te(x(this.paths.clients,`.${t}.lock`),n)}async ensureCurrentEvent(t){let n=Tt(t),r=await _e(x(this.paths.events,`${n}.json`));if(r!==void 0)return fc(r,n);let i=await this.listEvents(),s=Nn(t,(i.at(-1)?.sequence??0)+1);return await this.writeEvent(s),s}};o(Rm,"globalLearnedAreaRoot");o(pc,"projectCapabilityFiles");o(mc,"listDirectories");o(Nn,"eventFromCapability")});var _o=l(()=>{"use strict";Ee();J()});var kc=l(()=>{"use strict";C();J();$n();_o();ho();Ee()});var xc=l(()=>{"use strict";J()});function Ie(e){return e.schemaVersion===2}var iL,Mt=l(()=>{"use strict";J();iL=16*1024;o(Ie,"isLearnedCapabilityRecordV2")});var Ec=l(()=>{"use strict";J();Mt()});var mL,_c=l(()=>{"use strict";J();$n();mL=16*1024});var Tc=l(()=>{"use strict";J();L();Mt()});var Dn=l(()=>{"use strict";oo();io();An();Ee();mo();ho();wo();ac();cc();lc();J();kc();$n();_o();xc();Ec();_c();Tc();Mt()});import{createHash as ih}from"node:crypto";import{lstat as Mc,readFile as sh,readdir as ah,realpath as ch,stat as dh}from"fs/promises";import{join as Ae,dirname as Ao,relative as lh,resolve as Ln,sep as Ro}from"path";async function Ot(e,t){let n=new Map,r=[],i=o(d=>{let u=n.get(d.name);u?Re(u.path)!==Re(d.path)&&I({source:"agent:skills",level:"warn",message:`Skill "${d.name}" is shadowed by a higher-priority source.`,detail:{code:"skill_shadowed",name:d.name,selectedPath:Ae(u.path,"SKILL.md"),shadowedPath:Ae(d.path,"SKILL.md")}}):n.set(d.name,d)},"register"),a={...kn(e),...t},c=xn(a);for(let{path:d,source:u}of c)try{let f=await Sh(d,u,r);for(let p of f)i(p)}catch(f){r.push({path:d,error:f instanceof Error?f.message:String(f)})}if(a.learnedArea!==void 0){let d=await uh(a.learnedArea);r.push(...d.errors);for(let u of d.skills)i(u)}return{skills:n,errors:r}}async function uh(e){let t=[],n=[];for(let r of ph(e)){let i=await fh(r.rootDir,r.expectedScope,e);t.push(...i.skills),n.push(...i.errors)}return{skills:t,errors:n}}async function fh(e,t,n){let r=new le(e),i=[],s=[],a;try{a=await r.listCapabilities()}catch(c){return{skills:i,errors:[{path:e,error:c instanceof Error?c.message:String(c)}]}}for(let c of a){if(!Ie(c)||!mh(c,t)||!gh(c,n))continue;let d=Ln(e,...c.artifact.relativePath.split("/"));try{vh(d,e),await yh(e,d);let u=await sh(d,"utf8");if(bh(u)!==c.artifact.fingerprint)throw new Error("learned Skill artifact fingerprint mismatch");let f=await Et(Ao(d),"learned");if(f===null)throw new Error("learned Skill metadata is invalid");i.push({...f,learned:{capabilityId:c.capabilityId,revision:c.artifact.contentRevision,fingerprint:c.artifact.fingerprint}})}catch(u){let f=u instanceof Error?u.message:String(u);s.push({path:d,error:f}),await wh(r,c,f)}}return{skills:i,errors:s}}function ph(e){let t=[e.rootDir,...e.additionalRootDirs??[]],n=hh(e);if(t.length!==n.length)throw new Error("learned Skill discovery requires one expected scope per physical root");let r=t.map((i,s)=>({rootDir:i,expectedScope:n[s]}));for(let[i,s]of r.entries())if(r.findIndex(c=>Re(c.rootDir)===Re(s.rootDir))!==i)throw new Error("learned Skill discovery physical roots must be unique");return r}function mh(e,t){return e.scope.configHomeHash===t.configHomeHash&&e.scope.tenantHash===t.tenantHash&&e.scope.projectHash===t.projectHash}function hh(e){let t=[...e.expectedScopes??[e.expectedScope]];if(t.length===0)throw new Error("learned Skill discovery requires at least one expected scope");return t}function gh(e,t){if(e.lifecycle==="active_learned")return!0;if(e.lifecycle!=="testing")return!1;let n=t.testingBindings?.[e.capabilityId],r=e.canary.binding;return n!==void 0&&r?.bindingId===n&&Date.parse(r.expiresAt)>Date.parse(t.now??new Date().toISOString())}async function wh(e,t,n){await e.withOwnerMutation(async()=>{let r=await e.readCapability(t.capabilityId);if(r===void 0||!Ie(r)||r.revision!==t.revision||r.lifecycle!=="testing"&&r.lifecycle!=="active_learned")return;let i={...r,lifecycle:"quarantined",revision:r.revision+1,updatedAt:new Date().toISOString(),diagnostics:[...r.diagnostics??[],`artifact discovery rejected: ${n}`]};await e.writeCapability(i),await e.ensureCurrentEvent(i)})}async function yh(e,t){let r=lh(Ln(e),t).split(Ro),i=Ln(e),s=await Mc(i);if(!s.isDirectory()||s.isSymbolicLink())throw new Error("learned Skill root is not a regular directory");for(let[a,c]of r.entries()){i=Ae(i,c);let d=await Mc(i),u=a===r.length-1;if(d.isSymbolicLink()||(u?!d.isFile():!d.isDirectory()))throw new Error("learned Skill artifact contains a symlink or non-regular path")}}function vh(e,t){let n=Re(t),r=Re(e);if(r!==n&&!r.startsWith(n.endsWith(Ro)?n:`${n}${Ro}`))throw new Error("learned Skill artifact escapes its Learned Area")}function Re(e){let t=Ln(e);return process.platform==="win32"?t.toLowerCase():t}function bh(e){return ih("sha256").update(e,"utf8").digest("hex")}async function Sh(e,t,n){let r=[],i=new Set;async function s(a){try{let c=Re(await ch(a));if(i.has(c))return;i.add(c);let d=await ah(a,{withFileTypes:!0});if(d.some(u=>u.name==="SKILL.md")){let u=await Et(a,t);u?r.push(u):n.push({path:Ae(a,"SKILL.md"),error:"Skill metadata could not be loaded."});return}d.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);for(let u of d){if(u.name.startsWith(".")||u.name==="node_modules")continue;let f=Ae(a,u.name);try{(u.isDirectory()||u.isSymbolicLink()&&(await dh(f)).isDirectory())&&await s(f)}catch(p){Oc(n,f,p)}}}catch(c){Oc(n,a,c)}}return o(s,"visit"),await s(e),r}function Oc(e,t,n){typeof n=="object"&&n!==null&&"code"in n&&n.code==="ENOENT"||e.push({path:t,error:n instanceof Error?n.message:String(n)})}function To(e,t){let n=[],r=[".kodax/skills",".agents/skills"],i=e,s=Ao(t);for(;i!==s&&i!=="/"&&i.length>3;){for(let c of r)n.push(Ae(i,c));let a=Ao(i);if(a===i)break;i=a}return n}async function Nc(e,t){let n=To(e,t),r={projectPaths:[Ae(t,".kodax","skills"),...n]};return Ot(t,r)}var Co=l(()=>{"use strict";Dn();no();In();L();o(Ot,"discoverSkills");o(uh,"scanRecordGatedLearnedArea");o(fh,"scanRecordGatedLearnedRoot");o(ph,"learnedAreaBindings");o(mh,"scopeMatches");o(hh,"expectedLearnedScopes");o(gh,"isRecordAdmitted");o(wh,"quarantineInvalidLearnedArtifact");o(yh,"assertRegularArtifactChain");o(vh,"assertInside");o(Re,"comparablePath");o(bh,"sha256");o(Sh,"scanSkillDirectory");o(Oc,"recordDiscoveryError");o(To,"getNestedSkillPaths");o(Nc,"discoverSkillsWithMonorepo")});import{execSync as kh}from"child_process";import xh from"path";function $c(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Eh)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let i=t.split(/\s+/);if(i.includes("-f")||i.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let i=t.split(/\s+/).slice(1);if(i.length>0&&!i.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}function _h(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&xh.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return $c(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!$c(s))return!1}return!0}function Po(e){let t=[],n="",r=!1,i="";for(let s=0;s<e.length;s++){let a=e[s];r?a===i?r=!1:n+=a:a==='"'||a==="'"?(r=!0,i=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}function Dc(e){return new Xe(e)}async function ue(e,t,n){return new Xe(n).resolve(e,t)}var Eh,Xe,Nt=l(()=>{"use strict";Eh=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);o($c,"isSingleSafeDynamicContextCommand");o(_h,"isSafeDynamicContextCommand");o(Po,"parseArguments");Xe=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=Po(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(t))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let u=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${u}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.assertDynamicContextAllowed?.(t),this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!_h(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return kh(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};o(Dc,"createResolver");o(ue,"resolveSkillContent")});function Lc(e,t){let n=e.replace(/\s+/gu," ").trim();return n.length<=t?n:`${n.slice(0,t-1).replace(/[\uD800-\uDBFF]$/,"")}\u2026`}function Mo(e){let t=e.filter(c=>!c.disableModelInvocation);if(t.length===0)return"";let n=["## Available Skills","","When users ask you to perform tasks, check if any of the available skills below match the request. Skills provide specialized capabilities and step-by-step instructions for specific workflows.","",'If the current task context already contains an "Active skill invocation" or a host-expanded Skill block for the referenced name, that explicit user invocation is already complete. Follow the expanded instructions and do NOT call the `skill` tool for that Skill again.',"",'When users reference a "slash command" or "/<something>" (e.g. "/feature-list-tracker", "/skill:foo") and the host has not already expanded it, they are referring to a skill. Invoke it via the `skill` tool with the skill name.',"","**BLOCKING REQUIREMENT**: When a model-visible Skill matches the user's request and the host has not already expanded it, you MUST invoke it via the `skill` tool BEFORE generating any other response about the task. Loading the Skill is not optional and not something to defer \u2014 it is the FIRST action you take.","","NEVER mention a model-discovered Skill without actually calling the `skill` tool. This rule does not apply to a host-expanded active user invocation, which must not be called again. Do not guess at Skill names \u2014 only use Skills listed below. Do NOT call `read` on a `SKILL.md` path to load a Skill \u2014 that is the legacy path and bypasses the resolver.",""],r=n.join(`
|
|
296
|
+
`).length+1,i=0,s=0;for(let c of t){let d=Lc(c.description,500),u=c.argumentHint?Lc(c.argumentHint,80):"",f=`- ${c.name}:${u?` ${u}`:""} ${d}`;r+f.length+1>Ih-Ah||(n.push(f),r+=f.length+1,i++,(d!==c.description||u!==(c.argumentHint??""))&&s++)}let a=t.length-i;if(s>0||a>0){let c=`[Skill catalog shortened: ${s} entries shortened; ${a} Skills omitted. Explicit invocation of registered Skills remains available.]`;n.push("",c),I({source:"agent:skills",level:"warn",message:c,detail:{code:"skill_catalog_shortened",total:t.length,included:i,omitted:a,shortened:s}})}return n.push(""),n.join(`
|
|
297
|
+
`)}function Dt(e,t){return Ve&&e!==void 0&&jc!==e&&(Ve=null),Ve||(Ve=new $t(e,t),jc=e),Ve}async function Oo(e,t){let n=Dt(e,t);return await n.discover(),n}function Fc(){Ve=null}var Ih,Ah,$t,Ve,jc,No=l(()=>{"use strict";L();Co();In();Nt();Ih=8e3,Ah=160;o(Lc,"catalogText");o(Mo,"formatSkillsSystemPrompt");$t=class{static{o(this,"SkillRegistry")}skillsByName=new Map;fullSkillsByName=new Map;incompleteDiscovery=!1;get discoveryIncomplete(){return this.incompleteDiscovery}projectRoot;customPaths;constructor(t,n){this.projectRoot=t,this.customPaths=n}async discover(){let t=await Ot(this.projectRoot,this.customPaths);this.incompleteDiscovery=t.errors.length>0,this.fullSkillsByName.clear(),this.skillsByName.clear();for(let[n,r]of t.skills)this.skillsByName.set(n,r);if(t.errors.length>0)for(let{path:n,error:r}of t.errors)I({source:"agent:skills",level:"warn",message:`Error scanning ${n}.`,detail:r})}get skills(){return this.skillsByName}get(t){return this.skillsByName.get(t)}async loadFull(t){let n=this.fullSkillsByName.get(t);if(n)return n;let r=this.skillsByName.get(t);if(!r)throw new Error(`Skill not found: ${t}`);let i=await _n(r.path,r.source);if(this.skillsByName.get(t)!==r)return this.loadFull(t);if(!i)throw new Error(`Failed to load skill: ${t}`);return this.fullSkillsByName.set(t,i),i}async invoke(t,n,r){try{let i=await this.loadFull(t);return{success:!0,content:await ue(i.content,n,r)}}catch(i){return{success:!1,content:"",error:i instanceof Error?i.message:String(i)}}}async reload(){this.skillsByName.clear(),this.fullSkillsByName.clear(),await this.discover()}list(){return Array.from(this.skillsByName.values())}listUserInvocable(){return this.list()}getSystemPromptSnippet(){return Mo(this.list())}has(t){return this.skillsByName.has(t)}get size(){return this.skillsByName.size}},Ve=null;o(Dt,"getSkillRegistry");o(Oo,"initializeSkillRegistry");o(Fc,"resetSkillRegistry")});function Wc(e){return new Je(e)}async function Uc(e,t,n,r){return new Je(n).execute(e,t,r)}var Je,Bc=l(()=>{"use strict";No();Nt();Je=class{static{o(this,"SkillExecutor")}context;constructor(t){this.context=t}async execute(t,n,r){let i=Dt();if(!i.has(t))return{success:!1,content:"",error:`Skill not found: ${t}`};try{let s=await i.loadFull(t),a=r?.mode??(s.context==="fork"?"fork":"inline"),c=await ue(s.content,n,this.context);return a==="fork"?this.executeFork(s,c,r):this.executeInline(s,c,r)}catch(s){return{success:!1,content:"",error:s instanceof Error?s.message:String(s)}}}async executeInline(t,n,r){let i=this.buildPrompt(t,n);if(r?.onExecute)try{return{success:!0,content:await r.onExecute(i,t)}}catch(s){return{success:!1,content:"",error:s instanceof Error?s.message:String(s)}}return{success:!0,content:i}}async executeFork(t,n,r){return{success:!0,content:this.buildPrompt(t,n),artifacts:[{type:"text",name:"fork-config",content:JSON.stringify({agent:r?.agent??t.agent??"general-purpose",model:r?.model??t.model??"haiku",allowedTools:r?.allowedTools??this.parseAllowedTools(t.allowedTools)})}]}}buildPrompt(t,n){let r=[];return r.push(`[Using Skill: ${t.name}]`),r.push(""),t.allowedTools&&(r.push(`**Allowed Tools**: ${t.allowedTools}`),r.push("")),r.push(n),r.join(`
|
|
298
|
+
`)}parseAllowedTools(t){return t?t.split(",").map(n=>n.trim()).filter(Boolean):[]}};o(Wc,"createExecutor");o(Uc,"executeSkill")});function Kc(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function jn(e){return e.replace(/\\/g,"/")}function Rh(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",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}))]}function Th(e){let t=Rh(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[i,s]of n)s?.length&&r.push(`- ${i}/: ${jn(`${e.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of t.slice(0,$o))r.push(`- ${i}/${s.relativePath}: ${jn(s.path)}`);return t.length>$o&&r.push(`- ... ${t.length-$o} more files under ${jn(e.path)}`),r}function Ch(e,t,n){let r=[];r.push(`<skill name="${Kc(e.name)}" location="${Kc(e.path)}">`),r.push(""),r.push(`Skill root: ${jn(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let i=Th(e);return i.length>0&&(r.push(...i),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
|
|
299
|
+
`)}async function qc(e,t,n){let r=await ue(e.content,t,n);return{content:Ch(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}function Hc(e,t){let n=`Skill activated: ${e}`;return t.trim()&&(n+=` with arguments: ${t}`),n}var $o,zc=l(()=>{"use strict";Nt();o(Kc,"escapeXml");$o=120;o(jn,"formatDisplayPath");o(Rh,"collectSupportFiles");o(Th,"buildSupportFileContext");o(Ch,"buildSkillBlock");o(qc,"expandSkillForLLM");o(Hc,"formatSkillActivationMessage")});import{existsSync as Xc}from"node:fs";import{mkdir as Ph,readFile as Do,readdir as Mh,stat as Vc,writeFile as gj}from"node:fs/promises";import Oh from"node:os";import z from"node:path";import{fileURLToPath as Lo,pathToFileURL as Jc}from"node:url";import Nh from"yaml";async function jo(){let e=z.dirname(Lo(import.meta.url)),t=z.resolve(e,"../../../sdk-skills.js");return Xc(t)?import(Jc(t).href):Promise.resolve().then(()=>(Bn(),Zc))}function Yc(e){Te=e}async function fe(){if(Te)return Te;let e=z.dirname(Lo(import.meta.url)),t=[],n=z.resolve(e,"../../../index.js");if(Xc(n))return Te=await import(Jc(n).href),Te;t.push(`relative SDK path not found: ${n}`);try{return Te=await import(["@kodax-ai","kodax"].join("/")),Te}catch(r){t.push(`bare-name @kodax-ai/kodax failed: ${r?.code??r?.message}`)}throw new Error(`Cannot locate KodaX SDK from helper script ${import.meta.url}.
|
|
272
300
|
Attempted:
|
|
273
301
|
- ${t.join(`
|
|
274
|
-
- `)}`)}function
|
|
302
|
+
- `)}`)}function $h(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
|
|
275
303
|
`).replace(/\r/g,`
|
|
276
304
|
`).trimStart();if(!t.startsWith(`---
|
|
277
305
|
`))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
|
|
278
306
|
---
|
|
279
|
-
`,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}function
|
|
307
|
+
`,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}function Fn(e){let{yamlText:t,body:n}=$h(e),r=Nh.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}async function jt(e){let t=z.join(e,"SKILL.md");if(!(await Vc(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Do(t,"utf8"),{frontmatter:i,body:s}=Fn(r);return{skillDir:z.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:i}}async function Ft(e){try{return await Vc(e),!0}catch{return!1}}function Wn(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,i)=>r+i,0)/e.length,n=e.length>1?e.reduce((r,i)=>r+(i-t)**2,0)/(e.length-1):0;return{mean:Lt(t),stddev:Lt(Math.sqrt(n)),min:Lt(Math.min(...e)),max:Lt(Math.max(...e))}}function Lt(e,t=4){return Number(e.toFixed(t))}function Un(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}function Gc(e){try{return JSON.parse(e)}catch{return null}}function Ye(e){let t=Gc(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Gc(e.slice(n,r+1))}async function Y(e,t=null){try{return JSON.parse(await Do(e,"utf8"))}catch{return t}}async function Qe(e,t){let n=z.dirname(Lo(e));return Do(z.resolve(n,t),"utf8")}function j(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
|
|
280
308
|
|
|
281
|
-
[truncated ${r} chars]`}function Qc(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(i=>i?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?
|
|
309
|
+
[truncated ${r} chars]`}function Qc(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(i=>i?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?Lt(n/t):0}}async function Fo(e,t=e,n=[]){let r=await Mh(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=z.join(t,i.name);if(i.isDirectory()){await Fo(e,s,n);continue}i.isFile()&&n.push({absolutePath:s,relativePath:z.relative(e,s).replace(/\\/g,"/")})}return n}function Wt(){return z.join(Oh.homedir(),".kodax","skills")}async function F(e){return await Ph(e,{recursive:!0}),e}var Te,G=l(()=>{"use strict";Te=null;o(jo,"loadKodaXSkills");o(Yc,"setKodaXSDKForSkillCreator");o(fe,"loadKodaXSDK");o($h,"extractFrontmatter");o(Fn,"parseSkillMarkdown");o(jt,"loadSkill");o(Ft,"pathExists");o(Wn,"calculateStats");o(Lt,"roundNumber");o(Un,"formatDelta");o(Gc,"safeJsonParse");o(Ye,"extractJsonObject");o(Y,"readJsonFile");o(Qe,"loadRelativeText");o(j,"truncateText");o(Qc,"computePassSummary");o(Fo,"collectFiles");o(Wt,"getDefaultSkillsDir");o(F,"ensureDirectory")});import{writeFile as ed}from"node:fs/promises";import pe from"node:path";function Dh(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}function Lh(e,t){let n=Dh(e);return`---
|
|
282
310
|
name: ${e}
|
|
283
311
|
description: ${t}
|
|
284
312
|
user-invocable: true
|
|
@@ -308,10 +336,10 @@ Describe the task this skill handles, the trigger boundary, and the expected out
|
|
|
308
336
|
- Put deeper guidance in \`references/\`.
|
|
309
337
|
- Put reusable templates or static files in \`assets/\`.
|
|
310
338
|
- Put repeatable helper scripts in \`scripts/\`.
|
|
311
|
-
`}function
|
|
312
|
-
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}function
|
|
339
|
+
`}function jh(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}async function Fh(e){let t=pe.resolve(e.baseDir??Wt()),n=pe.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await Ft(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(pe.join(n,"references")),await F(pe.join(n,"assets")),await F(pe.join(n,"scripts")),await ed(pe.join(n,"SKILL.md"),Lh(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(pe.join(n,"evals")),await ed(pe.join(n,"evals","evals.json"),`${jh(e.name)}
|
|
340
|
+
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}function Wh(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}async function Wo(e=process.argv){let t=Wh(e);t.name||(console.error("Usage: node scripts/init-skill.js <skill-name> [--path <skills-dir>] [--description <text>] [--force] [--no-evals]"),process.exit(1));let n=await Fh(t);console.log(`Initialized ${n.skillDir}`)}var Uh,td=l(()=>{"use strict";G();o(Dh,"titleFromSlug");o(Lh,"renderSkillTemplate");o(jh,"renderEvalTemplate");o(Fh,"initSkill");o(Wh,"parseArgs");o(Wo,"main");Uh=!1;Uh&&Wo().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import nd from"node:path";async function Ut(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await jt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:i}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!Bh.has(d));s.length>0&&t.errors.push(`Unexpected frontmatter keys: ${s.sort().join(", ")}`);let a=typeof r.name=="string"?r.name.trim():"",c=typeof r.description=="string"?r.description.trim():"";if(!a)t.errors.push("Missing required frontmatter field: name");else{/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a)||t.errors.push(`Invalid skill name "${a}". Use lowercase kebab-case and avoid consecutive hyphens.`),a.length>64&&t.errors.push(`Skill name is too long (${a.length}/64).`);let d=nd.basename(nd.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),i.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(f=>typeof f=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}async function Uo(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await Ut(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}var Bh,Kh,Kn=l(()=>{"use strict";G();Bh=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);o(Ut,"validateSkillDirectory");o(Uo,"main");Kh=!1;Kh&&Uo().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{readFile as Bo,writeFile as ne}from"node:fs/promises";import E from"node:path";function qh(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}function Hh(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}function zh(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}function Gh(e,t){return`${["# Skill Eval Transcript","","## Eval Prompt","",e,"","## Final Response","",t.lastText||"(No final text)","","## Result Flags","",`- success: ${t.success}`,`- signal: ${t.signal??"none"}`,`- interrupted: ${t.interrupted===!0}`,`- limit_reached: ${t.limitReached===!0}`].join(`
|
|
313
341
|
`)}
|
|
314
|
-
`}async function
|
|
342
|
+
`}async function Xh(e,t){let n=E.dirname(E.resolve(t.evalsPath)),r=E.resolve(t.cwd??process.cwd()),i=[];for(let s of e??[]){let a=E.isAbsolute(s)?s:E.resolve(n,s),c=E.resolve(r,s),d=null,u=a;try{d=await Bo(a,"utf8")}catch{d=await Bo(c,"utf8").catch(()=>null),u=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);i.push(`### ${s}
|
|
315
343
|
\`\`\`
|
|
316
344
|
${d}
|
|
317
345
|
\`\`\`
|
|
@@ -321,15 +349,15 @@ ${i.join(`
|
|
|
321
349
|
|
|
322
350
|
`)}
|
|
323
351
|
|
|
324
|
-
`}async function
|
|
352
|
+
`}async function Vh(e,t){let n=String(e.prompt??e.query??"").trim();return`${await Xh(e.files,t)}${n}`.trim()}async function Jh(e,t){let{runKodaX:n,estimateTokens:r}=await fe(),i=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:E.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-i}}async function Yh(e,t,n,r){if(e==="with_skill"){let{expandSkillForLLM:i}=await jo();return(await i(t,n,{workingDirectory:E.resolve(r.cwd??process.cwd()),projectRoot:E.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content}return n}async function Qh(e,t,n,r,i){let s=E.join(e,"outputs");await F(s);let a={total_tool_calls:Hh(i.result.messages),errors_encountered:zh(i.result.messages),output_chars:i.result.lastText.length};await ne(E.join(s,"result.md"),`${i.result.lastText}
|
|
325
353
|
`,"utf8"),await ne(E.join(s,"prompt.txt"),`${r}
|
|
326
|
-
`,"utf8"),await ne(E.join(e,"transcript.md"),
|
|
354
|
+
`,"utf8"),await ne(E.join(e,"transcript.md"),Gh(r,i.result),"utf8"),await ne(E.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:i.result.sessionId,...a},null,2)}
|
|
327
355
|
`,"utf8"),await ne(E.join(s,"messages.json"),`${JSON.stringify(i.result.messages,null,2)}
|
|
328
356
|
`,"utf8"),await ne(E.join(e,"timing.json"),`${JSON.stringify({total_tokens:i.totalTokens,duration_ms:i.durationMs,total_duration_seconds:Number((i.durationMs/1e3).toFixed(4))},null,2)}
|
|
329
357
|
`,"utf8"),await ne(E.join(e,"result.json"),`${JSON.stringify({success:i.result.success,signal:i.result.signal??null,signal_reason:i.result.signalReason??null,interrupted:i.result.interrupted===!0,limit_reached:i.result.limitReached===!0,session_id:i.result.sessionId,execution_metrics:a},null,2)}
|
|
330
|
-
`,"utf8")}async function
|
|
331
|
-
`,"utf8");let m=await
|
|
332
|
-
`;t.output?(await ne(t.output,r,"utf8"),console.log(`Wrote ${E.resolve(t.output)}`)):process.stdout.write(r)}var
|
|
358
|
+
`,"utf8")}async function Zh(e,t=Jh){let{loadFullSkill:n}=await jo(),r=await n(E.resolve(e.skillPath),"user");if(!r)throw new Error(`Failed to load skill from ${e.skillPath}`);let i=E.resolve(e.workspaceDir);await F(i);let s=JSON.parse(await Bo(e.evalsPath,"utf8")),a=Array.isArray(s.evals)?s.evals:[],c=e.configs?.length?e.configs:["with_skill","without_skill"],d=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,u=[];for(let f=0;f<a.length;f+=1){let p=a[f],h=E.join(i,`eval-${f}`);await F(h),await ne(E.join(h,"eval_metadata.json"),`${JSON.stringify({eval_id:p.id??f,eval_name:p.name??`eval-${f}`,prompt:p.prompt??p.query??"",expected_output:p.expected_output??"",assertions:(Array.isArray(p.assertions)?p.assertions:[]).map(qh).filter(Boolean)},null,2)}
|
|
359
|
+
`,"utf8");let m=await Vh(p,e),k={};for(let b of c){let y=E.join(h,b);await F(y),k[b]=[];for(let g=1;g<=d;g+=1){let w=E.join(y,`run-${g}`);await F(w);let v=await Yh(b,r,m,e),R=await t(v,{...e,configName:b,evalItem:p,runIndex:g});await Qh(w,b,p,v,R),k[b].push({run_id:`run-${g}`,session_id:R.result.sessionId,success:R.result.success,total_tokens:R.totalTokens,duration_ms:R.durationMs,output_chars:R.result.lastText.length})}}u.push({eval_id:p.id??f,prompt:p.prompt??p.query??"",configs:k})}return{workspace:i,skill_name:r.name,eval_count:a.length,configs:c,runs_per_config:d,reports:u}}function eg(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}async function Ko(e=process.argv){let t=eg(e);(!t.skillPath||!t.evalsPath||!t.workspaceDir)&&(console.error("Usage: node scripts/run-eval.js --skill-path <dir> --evals <evals.json> --workspace <dir> [--provider anthropic] [--runs 1]"),process.exit(1));let n=await Zh(t),r=`${JSON.stringify(n,null,2)}
|
|
360
|
+
`;t.output?(await ne(t.output,r,"utf8"),console.log(`Wrote ${E.resolve(t.output)}`)):process.stdout.write(r)}var tg,rd=l(()=>{"use strict";G();o(qh,"normalizeAssertion");o(Hh,"countToolCalls");o(zh,"countToolErrors");o(Gh,"renderTranscript");o(Xh,"readInputFiles");o(Vh,"buildEvalPrompt");o(Jh,"defaultRunAgent");o(Yh,"prepareConfigPrompt");o(Qh,"writeRunArtifacts");o(Zh,"runEvalWorkspace");o(eg,"parseArgs");o(Ko,"main");tg=!1;tg&&Ko().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{readdir as ng,readFile as qo,writeFile as id}from"node:fs/promises";import _ from"node:path";function Ce(e){return String(e??"").trim()}function sd(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(i=>typeof i=="string"?Ce(i):i&&typeof i=="object"&&typeof i.text=="string"?Ce(i.text):"").filter(Boolean);if(n.length>0)return n;let r=Ce(e?.expected_output);return r?[r]:[]}function Ho(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}function od(e,t){return{text:Ce(e?.text??t),passed:e?.passed===!0,evidence:Ce(e?.evidence)}}function rg(e,t){let n=Ye(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],i=[],s=new Set;for(let a of t){let c=r.findIndex((d,u)=>s.has(u)?!1:Ce(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){i.push({text:a,passed:!1,evidence:""});continue}s.add(c),i.push(od(r[c],a))}if(t.length===0)for(let a of r){let c=od(a,"");c.text&&i.push(c)}return{overall_summary:Ce(n.overall_summary),expectations:i,user_notes_summary:{uncertainties:Ho(n.user_notes_summary?.uncertainties),needs_review:Ho(n.user_notes_summary?.needs_review),workarounds:Ho(n.user_notes_summary?.workarounds)}}}async function zo(e){return(await ng(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>_.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}async function og(e){let t=_.dirname(e),n=_.dirname(t),r=_.basename(t),i=_.basename(e),s=_.join(e,"outputs"),a=await Y(_.join(n,"eval_metadata.json"),{}),c=await qo(_.join(s,"result.md"),"utf8").catch(()=>""),d=await qo(_.join(s,"prompt.txt"),"utf8").catch(()=>""),u=await qo(_.join(e,"transcript.md"),"utf8").catch(()=>""),f=await Y(_.join(s,"metrics.json"),{}),p=await Y(_.join(e,"result.json"),{}),h=await Y(_.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:i,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:u,metrics:f,result:p,timing:h}}function ig(e){let t=sd(e.evalMetadata),n=t.length>0?t.map((r,i)=>`${i+1}. ${r}`).join(`
|
|
333
361
|
`):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
|
|
334
362
|
|
|
335
363
|
Return JSON with this shape:
|
|
@@ -375,12 +403,12 @@ ${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.executio
|
|
|
375
403
|
|
|
376
404
|
## Transcript Excerpt
|
|
377
405
|
${j(e.transcript,5e3)}
|
|
378
|
-
`}async function ad(e,t){let{runKodaX:n}=await fe();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,effort:t.effort??(t.reasoningMode?void 0:"medium"),reasoningMode:t.reasoningMode,context:{gitRoot:_.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}async function
|
|
379
|
-
`,"utf8"),{runDir:r.runDir,grading:f,prompt:a,rawResponse:c}}async function
|
|
380
|
-
`,"utf8"),a}function
|
|
381
|
-
`)}var
|
|
382
|
-
`)}function
|
|
383
|
-
`),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}var
|
|
406
|
+
`}async function ad(e,t){let{runKodaX:n}=await fe();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,effort:t.effort??(t.reasoningMode?void 0:"medium"),reasoningMode:t.reasoningMode,context:{gitRoot:_.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}async function sg(e,t,n=ad){let r=await og(_.resolve(e)),i=sd(r.evalMetadata),s=await Qe(import.meta.url,"../agents/grader.md"),a=ig({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=rg(c,i),u={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},f={summary:Qc(d.expectations),expectations:d.expectations,execution_metrics:u,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await id(_.join(r.runDir,"grading.json"),`${JSON.stringify(f,null,2)}
|
|
407
|
+
`,"utf8"),{runDir:r.runDir,grading:f,prompt:a,rawResponse:c}}async function ag(e,t=ad){let n=_.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),i=[],s=[];for(let c of await zo(n))if(_.basename(c).startsWith("eval-"))for(let d of await zo(c)){let u=_.basename(d);if(!(r.size>0&&!r.has(u)))for(let f of await zo(d)){if(!_.basename(f).startsWith("run-"))continue;let p=_.join(f,"grading.json");if(await Y(p,null)&&e.overwrite!==!0){s.push(_.relative(n,f).replace(/\\/g,"/"));continue}let m=await sg(f,e,t);i.push({run:_.relative(n,f).replace(/\\/g,"/"),summary:m.grading.summary,config:m.grading.meta.config,eval_id:m.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:i.length,skipped:s.length,processed_runs:i,skipped_runs:s};return await id(_.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
|
|
408
|
+
`,"utf8"),a}function cg(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,effort:void 0,reasoningMode:void 0,maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--effort"&&e[n+1]?t.effort=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean))}return t}async function Go(e=process.argv){let t=cg(e);t.workspaceDir||(console.error("Usage: node scripts/grade-evals.js <workspace> [--provider anthropic] [--configs with_skill,without_skill] [--overwrite]"),process.exit(1));let n=await ag(t);process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
409
|
+
`)}var dg,cd=l(()=>{"use strict";G();o(Ce,"normalizeExpectationText");o(sd,"normalizeExpectedRubric");o(Ho,"normalizeStringArray");o(od,"normalizeExpectationEntry");o(rg,"normalizeParsedGrading");o(zo,"listDirectories");o(og,"loadRunContext");o(ig,"buildGradingPrompt");o(ad,"defaultRunJudge");o(sg,"gradeRun");o(ag,"gradeWorkspace");o(cg,"parseArgs");o(Go,"main");dg=!1;dg&&Go().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{readFile as lg,readdir as ug,stat as fg,writeFile as dd}from"node:fs/promises";import W from"node:path";async function Xo(e){return JSON.parse(await lg(e,"utf8"))}async function pg(e){try{return await fg(e),!0}catch{return!1}}async function Vo(e){return(await ug(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>W.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}async function qn(e){let t=await pg(W.join(e,"runs"))?W.join(e,"runs"):e,n=(await Vo(t)).filter(i=>W.basename(i).startsWith("eval-")),r={};for(let i of n){let s=W.join(i,"eval_metadata.json"),c=(await Xo(s).catch(()=>({}))).eval_id??W.basename(i);for(let d of await Vo(i)){let u=W.basename(d),f=(await Vo(d)).filter(p=>W.basename(p).startsWith("run-"));if(f.length!==0){r[u]??=[];for(let p of f){let h=await Xo(W.join(p,"grading.json")).catch(()=>null);if(!h)continue;let m=await Xo(W.join(p,"timing.json")).catch(()=>({}));r[u].push({eval_id:c,run_id:W.basename(p),pass_rate:h.summary?.pass_rate??0,passed:h.summary?.passed??0,failed:h.summary?.failed??0,total:h.summary?.total??0,time_seconds:m.total_duration_seconds??h.timing?.total_duration_seconds??0,tokens:m.total_tokens??h.execution_metrics?.output_chars??0,tool_calls:h.execution_metrics?.total_tool_calls??0,errors:h.execution_metrics?.errors_encountered??0,expectations:Array.isArray(h.expectations)?h.expectations:[],notes:[...h.user_notes_summary?.uncertainties??[],...h.user_notes_summary?.needs_review??[],...h.user_notes_summary?.workarounds??[]]})}}}}return r}function mg(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:Wn(a.map(c=>Number(c.pass_rate??0))),time_seconds:Wn(a.map(c=>Number(c.time_seconds??0))),tokens:Wn(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},i=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Un(r.pass_rate.mean-i.pass_rate.mean),time_seconds:Un(r.time_seconds.mean-i.time_seconds.mean),tokens:Un(r.tokens.mean-i.tokens.mean)}}}function Jo(e,t,n){let r=mg(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:W.resolve(e),configs:r.configs,delta:r.delta,runs:n}}function hg(e){let t=[`# Benchmark: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"","| Config | Pass Rate | Time (s) | Tokens |","| --- | --- | --- | --- |"];for(let[n,r]of Object.entries(e.configs))t.push(`| ${n} | ${r.pass_rate.mean} \xB1 ${r.pass_rate.stddev} | ${r.time_seconds.mean} \xB1 ${r.time_seconds.stddev} | ${r.tokens.mean} \xB1 ${r.tokens.stddev} |`);return t.push(""),t.push("## Delta"),t.push(""),t.push(`- Pass rate: ${e.delta.pass_rate}`),t.push(`- Time (s): ${e.delta.time_seconds}`),t.push(`- Tokens: ${e.delta.tokens}`),t.join(`
|
|
410
|
+
`)}function gg(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}async function wg(){let{iterationDir:e,skillName:t}=gg(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await qn(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=Jo(e,t,n),i=W.join(e,"benchmark.json"),s=W.join(e,"benchmark.md");await dd(i,JSON.stringify(r,null,2)),await dd(s,`${hg(r)}
|
|
411
|
+
`),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}var yg,ld=l(()=>{"use strict";G();o(Xo,"readJson");o(pg,"pathExists");o(Vo,"listDirectories");o(qn,"loadRunResults");o(mg,"summarizeConfigs");o(Jo,"buildBenchmarkDocument");o(hg,"renderBenchmarkMarkdown");o(gg,"parseArgs");o(wg,"main");yg=!1;yg&&wg().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{writeFile as Yo}from"node:fs/promises";import re from"node:path";function Hn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}function vg(e){let t={};for(let[n,r]of Object.entries(e)){let i=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&i.set(d,(i.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(i.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}function bg(e,t,n){let r=Ye(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Hn(r.key_findings),variance_hotspots:Hn(r.variance_hotspots),suggested_actions:Hn(r.suggested_actions),watchouts:Hn(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}function Sg(e){return`${e.agentInstructions.trim()}
|
|
384
412
|
|
|
385
413
|
Return JSON with this shape:
|
|
386
414
|
{
|
|
@@ -398,12 +426,12 @@ ${j(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.config
|
|
|
398
426
|
|
|
399
427
|
## Failure Clusters
|
|
400
428
|
${j(JSON.stringify(e.failureClusters,null,2),8e3)}
|
|
401
|
-
`}async function
|
|
429
|
+
`}async function kg(e,t){let{runKodaX:n}=await fe();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,effort:t.effort??(t.reasoningMode?void 0:"medium"),reasoningMode:t.reasoningMode,context:{gitRoot:re.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}function xg(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,i]of n){t.push(`## ${i}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
|
|
402
430
|
`)}
|
|
403
|
-
`}async function
|
|
404
|
-
`,"utf8")}let s=await
|
|
405
|
-
`,"utf8"),await
|
|
406
|
-
`)}var
|
|
431
|
+
`}async function Eg(e,t=kg){let n=re.resolve(e.workspaceDir),r=re.resolve(e.benchmarkPath??re.join(n,"benchmark.json")),i=await Y(r,null);if(!i){let m=await qn(n);if(Object.keys(m).length===0)throw new Error(`No benchmark data found in ${n}`);i=Jo(n,e.skillName??re.basename(n),m),await Yo(r,`${JSON.stringify(i,null,2)}
|
|
432
|
+
`,"utf8")}let s=await qn(n),a=vg(s),c=await Qe(import.meta.url,"../agents/analyzer.md"),d=Sg({agentInstructions:c,benchmark:i,failureClusters:a}),u=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:i}),f=bg(u,i,a),p=re.resolve(e.outputPath??re.join(n,"analysis.json")),h=re.resolve(e.markdownPath??re.join(n,"analysis.md"));return await Yo(p,`${JSON.stringify(f,null,2)}
|
|
433
|
+
`,"utf8"),await Yo(h,xg(f),"utf8"),{analysis:f,prompt:d,rawResponse:u,analysisJsonPath:p,analysisMdPath:h}}function _g(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,effort:void 0,reasoningMode:void 0,maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--effort"&&e[n+1]?t.effort=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}async function Qo(e=process.argv){let t=_g(e);t.workspaceDir||(console.error("Usage: node scripts/analyze-benchmark.js <workspace> [--benchmark benchmark.json] [--output analysis.json] [--markdown analysis.md]"),process.exit(1));let n=await Eg(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
|
|
434
|
+
`)}var Ig,ud=l(()=>{"use strict";ld();G();o(Hn,"normalizeStringArray");o(vg,"summarizeFailureClusters");o(bg,"normalizeAnalysisResult");o(Sg,"buildAnalysisPrompt");o(kg,"defaultRunAnalyst");o(xg,"renderAnalysisMarkdown");o(Eg,"analyzeBenchmark");o(_g,"parseArgs");o(Qo,"main");Ig=!1;Ig&&Qo().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{readdir as Ag,readFile as fd,writeFile as pd}from"node:fs/promises";import A from"node:path";async function ei(e){return(await Ag(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>A.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}function Zo(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}function Rg(e){let t=Ye(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:Zo(t.strengths_a),strengths_b:Zo(t.strengths_b),risks:Zo(t.risks)}}async function Tg(e,t,n,r){let i=(await ei(A.join(e,t))).filter(p=>A.basename(p).startsWith("run-")),s=(await ei(A.join(e,n))).filter(p=>A.basename(p).startsWith("run-")),a=i[r],c=s[r];if(!a||!c)return null;let d=await Y(A.join(e,"eval_metadata.json"),{}),u=await fd(A.join(a,"outputs","result.md"),"utf8").catch(()=>""),f=await fd(A.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:A.basename(a),configName:t,output:u},runB:{runDir:c,runId:A.basename(c),configName:n,output:f}}}function Cg(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
|
|
407
435
|
|
|
408
436
|
Return JSON with this shape:
|
|
409
437
|
{
|
|
@@ -431,391 +459,15 @@ ${j(t.A.output,12e3)}
|
|
|
431
459
|
|
|
432
460
|
## Candidate B
|
|
433
461
|
${j(t.B.output,12e3)}
|
|
434
|
-
`}async function
|
|
462
|
+
`}async function Pg(e,t){let{runKodaX:n}=await fe();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,effort:t.effort??(t.reasoningMode?void 0:"medium"),reasoningMode:t.reasoningMode,context:{gitRoot:A.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}function Mg(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}function Og(e){let t=[`# Blind Comparison: ${e.config_a} vs ${e.config_b}`,"",`Generated: ${e.generated_at}`,"",`- ${e.config_a} wins: ${e.summary.config_a_wins}`,`- ${e.config_b} wins: ${e.summary.config_b_wins}`,`- ties: ${e.summary.ties}`,`- inconclusive: ${e.summary.inconclusive}`,""];for(let n of e.comparisons)t.push(`## Eval ${n.eval_id??n.eval_name??n.index}`),t.push(""),t.push(`- Winner: ${n.winner_config}`),t.push(`- Confidence: ${n.confidence}`),t.push(`- Rationale: ${n.rationale||"n/a"}`),t.push("");return`${t.join(`
|
|
435
463
|
`)}
|
|
436
|
-
`}async function
|
|
437
|
-
`,"utf8"),await pd(f,
|
|
438
|
-
`)}var
|
|
464
|
+
`}async function Ng(e,t=Pg){let n=A.resolve(e.workspaceDir),r=e.configA??"with_skill",i=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Qe(import.meta.url,"../agents/comparator.md"),c=[];for(let p of await ei(n))if(A.basename(p).startsWith("eval-"))for(let h=0;h<s;h+=1){let m=await Tg(p,r,i,h);if(!m)break;let k=c.length%2===0,b=Cg({agentInstructions:a,evalMetadata:m.evalMetadata,runA:m.runA,runB:m.runB,presentPrimaryFirst:k}),y=await t(b,{...e,workspaceDir:n,evalDir:p,pairIndex:h,configA:r,configB:i}),g=Rg(y),w=Mg(g.winner,k,r,i);c.push({index:c.length+1,eval_id:m.evalMetadata.eval_id??null,eval_name:m.evalMetadata.eval_name??null,run_a:A.relative(n,m.runA.runDir).replace(/\\/g,"/"),run_b:A.relative(n,m.runB.runDir).replace(/\\/g,"/"),presented_as:k?{A:r,B:i}:{A:i,B:r},winner_label:g.winner,winner_config:w,confidence:g.confidence,rationale:g.rationale,strengths_a:g.strengths_a,strengths_b:g.strengths_b,risks:g.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${i} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:i,summary:{total_pairs:c.length,config_a_wins:c.filter(p=>p.winner_config===r).length,config_b_wins:c.filter(p=>p.winner_config===i).length,ties:c.filter(p=>p.winner_config==="tie").length,inconclusive:c.filter(p=>p.winner_config==="inconclusive").length},comparisons:c},u=A.resolve(e.outputPath??A.join(n,"comparison.json")),f=A.resolve(e.markdownPath??A.join(n,"comparison.md"));return await pd(u,`${JSON.stringify(d,null,2)}
|
|
465
|
+
`,"utf8"),await pd(f,Og(d),"utf8"),{document:d,outputPath:u,markdownPath:f}}function $g(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,effort:void 0,reasoningMode:void 0,maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--effort"&&e[n+1]?t.effort=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}async function ti(e=process.argv){let t=$g(e);t.workspaceDir||(console.error("Usage: node scripts/compare-runs.js <workspace> [--config-a with_skill] [--config-b without_skill] [--output comparison.json]"),process.exit(1));let n=await Ng(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
|
|
466
|
+
`)}var Dg,md=l(()=>{"use strict";G();o(ei,"listDirectories");o(Zo,"normalizeStringArray");o(Rg,"normalizeComparisonResult");o(Tg,"loadComparisonPair");o(Cg,"buildComparisonPrompt");o(Pg,"defaultRunComparator");o(Mg,"mapWinnerToConfig");o(Og,"renderComparisonMarkdown");o(Ng,"compareWorkspace");o($g,"parseArgs");o(ti,"main");Dg=!1;Dg&&ti().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{readFile as Lg,writeFile as jg}from"node:fs/promises";import{createHash as Fg}from"node:crypto";import ni from"node:path";import{zipSync as Wg,strToU8 as Ug}from"fflate";function Kg(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function qg(e){return Fg("sha256").update(e).digest("hex")}function Hg(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}async function zg(e,t={}){let n=await Ut(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
|
|
439
467
|
- ${n.errors.join(`
|
|
440
|
-
- `)}`);let r=await
|
|
468
|
+
- `)}`);let r=await jt(e),i=await Fo(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let u=Kg(await Lg(d.absolutePath));s.push({...d,bytes:u,sha256:qg(u)})}let a=Hg(r,s,t),c={[Bg]:Ug(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:Wg(c,{level:6})}}async function Gg(e,t,n={}){let r=await zg(e,n);return await jg(t,r.bytes),{...r,outputPath:ni.resolve(t)}}function Xg(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}async function ri(e=process.argv){let t=Xg(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await jt(t.skillDir),r=t.output??ni.join(ni.dirname(t.skillDir),`${n.frontmatter.name}.skill`),i=await Gg(t.skillDir,r);console.log(`Wrote ${i.outputPath}`)}var Bg,Vg,hd=l(()=>{"use strict";Kn();G();Bg=".kodax-package.json";o(Kg,"toUint8Array");o(qg,"sha256");o(Hg,"createPackageManifest");o(zg,"buildSkillPackage");o(Gg,"writeSkillPackage");o(Xg,"parseArgs");o(ri,"main");Vg=!1;Vg&&ri().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});import{cp as Jg,mkdir as oi,readFile as yd,rm as vd,stat as Yg,writeFile as Qg}from"node:fs/promises";import Q from"node:path";import{strFromU8 as gd,unzipSync as Zg}from"fflate";function ew(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}function tw(e){let t=ew(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}function nw(e){return/\.(skill|zip)$/i.test(e)}function rw(e){let t=Zg(e),n=Object.entries(t).map(([u,f])=>({relativePath:tw(u),bytes:f})),r=n.find(u=>u.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let i=Fn(gd(r.bytes)),s=typeof i.frontmatter.name=="string"?i.frontmatter.name.trim():"",a=typeof i.frontmatter.description=="string"?i.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(u=>u.relativePath===wd),d=c?JSON.parse(gd(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(u=>u.relativePath!==wd)}}async function ow(e,t){if(await Ft(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await vd(e,{recursive:!0,force:!0})}await oi(e,{recursive:!0})}async function iw(e,t={}){let n=Q.resolve(t.skillsDir??Wt()),r=rw(await yd(e)),i=Q.join(n,r.skillName);await ow(i,t.force===!0);for(let s of r.entries){let a=Q.join(i,s.relativePath);await oi(Q.dirname(a),{recursive:!0}),await Qg(a,s.bytes)}return{skillName:r.skillName,installedTo:i,source:Q.resolve(e),manifest:r.manifest}}async function sw(e,t={}){let n=await Ut(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
|
|
441
469
|
- ${n.errors.join(`
|
|
442
|
-
- `)}`);let r=Q.join(e,"SKILL.md"),i=
|
|
443
|
-
using System;
|
|
444
|
-
using System.IO;
|
|
445
|
-
using System.Runtime.InteropServices;
|
|
446
|
-
using System.Threading;
|
|
447
|
-
|
|
448
|
-
public static class KodaXEffectJob {
|
|
449
|
-
[StructLayout(LayoutKind.Sequential)]
|
|
450
|
-
private struct IoCounters {
|
|
451
|
-
public ulong ReadOperationCount;
|
|
452
|
-
public ulong WriteOperationCount;
|
|
453
|
-
public ulong OtherOperationCount;
|
|
454
|
-
public ulong ReadTransferCount;
|
|
455
|
-
public ulong WriteTransferCount;
|
|
456
|
-
public ulong OtherTransferCount;
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
[StructLayout(LayoutKind.Sequential)]
|
|
460
|
-
private struct BasicLimitInformation {
|
|
461
|
-
public long PerProcessUserTimeLimit;
|
|
462
|
-
public long PerJobUserTimeLimit;
|
|
463
|
-
public uint LimitFlags;
|
|
464
|
-
public UIntPtr MinimumWorkingSetSize;
|
|
465
|
-
public UIntPtr MaximumWorkingSetSize;
|
|
466
|
-
public uint ActiveProcessLimit;
|
|
467
|
-
public UIntPtr Affinity;
|
|
468
|
-
public uint PriorityClass;
|
|
469
|
-
public uint SchedulingClass;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
[StructLayout(LayoutKind.Sequential)]
|
|
473
|
-
private struct ExtendedLimitInformation {
|
|
474
|
-
public BasicLimitInformation BasicLimitInformation;
|
|
475
|
-
public IoCounters IoInfo;
|
|
476
|
-
public UIntPtr ProcessMemoryLimit;
|
|
477
|
-
public UIntPtr JobMemoryLimit;
|
|
478
|
-
public UIntPtr PeakProcessMemoryUsed;
|
|
479
|
-
public UIntPtr PeakJobMemoryUsed;
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
[StructLayout(LayoutKind.Sequential)]
|
|
483
|
-
private struct BasicAccountingInformation {
|
|
484
|
-
public long TotalUserTime;
|
|
485
|
-
public long TotalKernelTime;
|
|
486
|
-
public long ThisPeriodTotalUserTime;
|
|
487
|
-
public long ThisPeriodTotalKernelTime;
|
|
488
|
-
public uint TotalPageFaultCount;
|
|
489
|
-
public uint TotalProcesses;
|
|
490
|
-
public uint ActiveProcesses;
|
|
491
|
-
public uint TotalTerminatedProcesses;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
495
|
-
private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
|
|
496
|
-
|
|
497
|
-
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
498
|
-
private static extern IntPtr OpenJobObjectW(uint desiredAccess, bool inheritHandle, string name);
|
|
499
|
-
|
|
500
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
501
|
-
private static extern bool SetInformationJobObject(
|
|
502
|
-
IntPtr job,
|
|
503
|
-
int infoClass,
|
|
504
|
-
ref ExtendedLimitInformation info,
|
|
505
|
-
uint length);
|
|
506
|
-
|
|
507
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
508
|
-
private static extern bool QueryInformationJobObject(
|
|
509
|
-
IntPtr job,
|
|
510
|
-
int infoClass,
|
|
511
|
-
out BasicAccountingInformation info,
|
|
512
|
-
uint length,
|
|
513
|
-
IntPtr returnLength);
|
|
514
|
-
|
|
515
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
516
|
-
private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
|
|
517
|
-
|
|
518
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
519
|
-
private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
|
|
520
|
-
|
|
521
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
522
|
-
private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
|
|
523
|
-
|
|
524
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
525
|
-
private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
|
|
526
|
-
|
|
527
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
528
|
-
private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
|
|
529
|
-
|
|
530
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
531
|
-
private static extern bool CloseHandle(IntPtr handle);
|
|
532
|
-
|
|
533
|
-
private const uint Synchronize = 0x00100000;
|
|
534
|
-
private const uint ProcessTerminate = 0x0001;
|
|
535
|
-
private const uint ProcessSetQuota = 0x0100;
|
|
536
|
-
private const uint ProcessQueryLimitedInformation = 0x1000;
|
|
537
|
-
private const uint JobObjectTerminate = 0x0008;
|
|
538
|
-
private const uint JobObjectQuery = 0x0004;
|
|
539
|
-
private const uint JobObjectLimitKillOnJobClose = 0x00002000;
|
|
540
|
-
private const uint WaitObject0 = 0;
|
|
541
|
-
|
|
542
|
-
private static void Require(bool result, string operation) {
|
|
543
|
-
if (!result) throw new InvalidOperationException(
|
|
544
|
-
operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
private static void PublishReady() {
|
|
548
|
-
Console.Out.WriteLine("READY");
|
|
549
|
-
Console.Out.Flush();
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
public static void Run(uint targetPid, uint ownerPid, string jobName) {
|
|
553
|
-
var job = CreateJobObjectW(IntPtr.Zero, jobName);
|
|
554
|
-
if (job == IntPtr.Zero) throw new InvalidOperationException(
|
|
555
|
-
"CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
556
|
-
var processAccess = Synchronize | ProcessTerminate | ProcessSetQuota | ProcessQueryLimitedInformation;
|
|
557
|
-
var target = OpenProcess(processAccess, false, targetPid);
|
|
558
|
-
var owner = OpenProcess(Synchronize, false, ownerPid);
|
|
559
|
-
if (target == IntPtr.Zero || owner == IntPtr.Zero) {
|
|
560
|
-
if (target != IntPtr.Zero) CloseHandle(target);
|
|
561
|
-
if (owner != IntPtr.Zero) CloseHandle(owner);
|
|
562
|
-
CloseHandle(job);
|
|
563
|
-
throw new InvalidOperationException(
|
|
564
|
-
"OpenProcess failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
565
|
-
}
|
|
566
|
-
try {
|
|
567
|
-
var limits = new ExtendedLimitInformation();
|
|
568
|
-
limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
|
|
569
|
-
Require(SetInformationJobObject(
|
|
570
|
-
job,
|
|
571
|
-
9,
|
|
572
|
-
ref limits,
|
|
573
|
-
(uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
|
|
574
|
-
"SetInformationJobObject");
|
|
575
|
-
Require(AssignProcessToJobObject(job, target), "AssignProcessToJobObject");
|
|
576
|
-
PublishReady();
|
|
577
|
-
|
|
578
|
-
uint targetExitCode = 1;
|
|
579
|
-
while (true) {
|
|
580
|
-
if (WaitForSingleObject(owner, 0) == WaitObject0) break;
|
|
581
|
-
if (WaitForSingleObject(target, 0) == WaitObject0) {
|
|
582
|
-
GetExitCodeProcess(target, out targetExitCode);
|
|
583
|
-
break;
|
|
584
|
-
}
|
|
585
|
-
Thread.Sleep(20);
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
Require(TerminateJobObject(job, targetExitCode), "TerminateJobObject");
|
|
589
|
-
while (true) {
|
|
590
|
-
BasicAccountingInformation accounting;
|
|
591
|
-
Require(QueryInformationJobObject(
|
|
592
|
-
job,
|
|
593
|
-
1,
|
|
594
|
-
out accounting,
|
|
595
|
-
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
|
|
596
|
-
IntPtr.Zero),
|
|
597
|
-
"QueryInformationJobObject");
|
|
598
|
-
if (accounting.ActiveProcesses == 0) return;
|
|
599
|
-
Thread.Sleep(10);
|
|
600
|
-
}
|
|
601
|
-
} finally {
|
|
602
|
-
CloseHandle(owner);
|
|
603
|
-
CloseHandle(target);
|
|
604
|
-
CloseHandle(job);
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
public static bool TerminateAndDrain(string jobName) {
|
|
609
|
-
var job = OpenJobObjectW(JobObjectTerminate | JobObjectQuery, false, jobName);
|
|
610
|
-
if (job == IntPtr.Zero) {
|
|
611
|
-
var error = Marshal.GetLastWin32Error();
|
|
612
|
-
if (error == 2) return false;
|
|
613
|
-
throw new InvalidOperationException(
|
|
614
|
-
"OpenJobObject failed with Win32 error " + error);
|
|
615
|
-
}
|
|
616
|
-
try {
|
|
617
|
-
Require(TerminateJobObject(job, 1), "TerminateJobObject");
|
|
618
|
-
while (true) {
|
|
619
|
-
BasicAccountingInformation accounting;
|
|
620
|
-
Require(QueryInformationJobObject(
|
|
621
|
-
job,
|
|
622
|
-
1,
|
|
623
|
-
out accounting,
|
|
624
|
-
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
|
|
625
|
-
IntPtr.Zero),
|
|
626
|
-
"QueryInformationJobObject");
|
|
627
|
-
if (accounting.ActiveProcesses == 0) return true;
|
|
628
|
-
Thread.Sleep(10);
|
|
629
|
-
}
|
|
630
|
-
} finally {
|
|
631
|
-
CloseHandle(job);
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
}`,Yf=String.raw`
|
|
636
|
-
using System;
|
|
637
|
-
using System.Collections.Generic;
|
|
638
|
-
using System.Diagnostics;
|
|
639
|
-
using System.Runtime.InteropServices;
|
|
640
|
-
using System.Security.Principal;
|
|
641
|
-
|
|
642
|
-
public static class KodaXSidProbe {
|
|
643
|
-
[StructLayout(LayoutKind.Sequential)]
|
|
644
|
-
private struct WtsProcessInformation {
|
|
645
|
-
public uint SessionId;
|
|
646
|
-
public uint ProcessId;
|
|
647
|
-
public IntPtr ProcessName;
|
|
648
|
-
public IntPtr UserSid;
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
652
|
-
private struct ProcessEntry32 {
|
|
653
|
-
public uint Size;
|
|
654
|
-
public uint Usage;
|
|
655
|
-
public uint ProcessId;
|
|
656
|
-
public UIntPtr DefaultHeapId;
|
|
657
|
-
public uint ModuleId;
|
|
658
|
-
public uint Threads;
|
|
659
|
-
public uint ParentProcessId;
|
|
660
|
-
public int PriorityClassBase;
|
|
661
|
-
public uint Flags;
|
|
662
|
-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
|
|
663
|
-
public string ExecutableFile;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
[DllImport("wtsapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
667
|
-
private static extern bool WTSEnumerateProcessesW(
|
|
668
|
-
IntPtr server,
|
|
669
|
-
uint reserved,
|
|
670
|
-
uint version,
|
|
671
|
-
out IntPtr processInformation,
|
|
672
|
-
out uint count);
|
|
673
|
-
|
|
674
|
-
[DllImport("wtsapi32.dll")]
|
|
675
|
-
private static extern void WTSFreeMemory(IntPtr memory);
|
|
676
|
-
|
|
677
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
678
|
-
private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId);
|
|
679
|
-
|
|
680
|
-
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
681
|
-
private static extern bool Process32FirstW(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
682
|
-
|
|
683
|
-
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
684
|
-
private static extern bool Process32NextW(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
685
|
-
|
|
686
|
-
[DllImport("kernel32.dll", SetLastError = true)]
|
|
687
|
-
private static extern bool CloseHandle(IntPtr handle);
|
|
688
|
-
|
|
689
|
-
private static Dictionary<uint, uint> ProcessParents() {
|
|
690
|
-
var parents = new Dictionary<uint, uint>();
|
|
691
|
-
var snapshot = CreateToolhelp32Snapshot(0x00000002, 0);
|
|
692
|
-
if (snapshot == new IntPtr(-1)) throw new InvalidOperationException(
|
|
693
|
-
"CreateToolhelp32Snapshot failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
694
|
-
try {
|
|
695
|
-
var entry = new ProcessEntry32();
|
|
696
|
-
entry.Size = (uint)Marshal.SizeOf(typeof(ProcessEntry32));
|
|
697
|
-
if (!Process32FirstW(snapshot, ref entry)) throw new InvalidOperationException(
|
|
698
|
-
"Process32First failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
699
|
-
do {
|
|
700
|
-
parents[entry.ProcessId] = entry.ParentProcessId;
|
|
701
|
-
entry.Size = (uint)Marshal.SizeOf(typeof(ProcessEntry32));
|
|
702
|
-
} while (Process32NextW(snapshot, ref entry));
|
|
703
|
-
} finally {
|
|
704
|
-
CloseHandle(snapshot);
|
|
705
|
-
}
|
|
706
|
-
return parents;
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
private static HashSet<uint> MatchingProcesses(SecurityIdentifier expected) {
|
|
710
|
-
var matches = new HashSet<uint>();
|
|
711
|
-
IntPtr processes;
|
|
712
|
-
uint count;
|
|
713
|
-
if (!WTSEnumerateProcessesW(IntPtr.Zero, 0, 1, out processes, out count)) {
|
|
714
|
-
throw new InvalidOperationException(
|
|
715
|
-
"WTSEnumerateProcesses failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
716
|
-
}
|
|
717
|
-
try {
|
|
718
|
-
var entrySize = Marshal.SizeOf(typeof(WtsProcessInformation));
|
|
719
|
-
for (uint index = 0; index < count; index++) {
|
|
720
|
-
var address = new IntPtr(processes.ToInt64() + ((long)index * entrySize));
|
|
721
|
-
var entry = (WtsProcessInformation)Marshal.PtrToStructure(
|
|
722
|
-
address,
|
|
723
|
-
typeof(WtsProcessInformation));
|
|
724
|
-
if (entry.UserSid == IntPtr.Zero) continue;
|
|
725
|
-
if (new SecurityIdentifier(entry.UserSid).Equals(expected)) matches.Add(entry.ProcessId);
|
|
726
|
-
}
|
|
727
|
-
} finally {
|
|
728
|
-
WTSFreeMemory(processes);
|
|
729
|
-
}
|
|
730
|
-
return matches;
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
private static bool DescendsFrom(
|
|
734
|
-
uint process,
|
|
735
|
-
uint root,
|
|
736
|
-
Dictionary<uint, uint> parents
|
|
737
|
-
) {
|
|
738
|
-
var visited = new HashSet<uint>();
|
|
739
|
-
while (process != 0 && visited.Add(process)) {
|
|
740
|
-
if (process == root) return true;
|
|
741
|
-
if (!parents.ContainsKey(process)) return false;
|
|
742
|
-
process = parents[process];
|
|
743
|
-
}
|
|
744
|
-
return false;
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
public static bool HasOtherProcessWithSid(string expectedSid, bool ignoreProbeTree) {
|
|
748
|
-
var expected = new SecurityIdentifier(expectedSid);
|
|
749
|
-
using (var identity = WindowsIdentity.GetCurrent()) {
|
|
750
|
-
var sameUser = identity.User != null && identity.User.Equals(expected);
|
|
751
|
-
var administrator = new WindowsPrincipal(identity)
|
|
752
|
-
.IsInRole(WindowsBuiltInRole.Administrator);
|
|
753
|
-
if (ignoreProbeTree && !sameUser) {
|
|
754
|
-
throw new InvalidOperationException("Process-tree SID probe must run as the expected sandbox user");
|
|
755
|
-
}
|
|
756
|
-
if (!ignoreProbeTree && !sameUser && !administrator) {
|
|
757
|
-
throw new InvalidOperationException(
|
|
758
|
-
"Machine-wide inspection of a foreign Windows SID requires an elevated administrator token");
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
var matches = MatchingProcesses(expected);
|
|
762
|
-
if (!ignoreProbeTree) return matches.Count > 0;
|
|
763
|
-
var current = (uint)Process.GetCurrentProcess().Id;
|
|
764
|
-
if (!matches.Contains(current)) throw new InvalidOperationException(
|
|
765
|
-
"SID probe could not observe its own process");
|
|
766
|
-
var parents = ProcessParents();
|
|
767
|
-
var root = parents.ContainsKey(current) ? parents[current] : current;
|
|
768
|
-
foreach (var process in matches) {
|
|
769
|
-
if (!DescendsFrom(process, root, parents)) return true;
|
|
770
|
-
}
|
|
771
|
-
return false;
|
|
772
|
-
}
|
|
773
|
-
}`,Qf=String.raw`
|
|
774
|
-
$ErrorActionPreference = 'Stop'
|
|
775
|
-
try {
|
|
776
|
-
$payload = [Text.Encoding]::UTF8.GetString(
|
|
777
|
-
[Convert]::FromBase64String($env:${bn})) | ConvertFrom-Json
|
|
778
|
-
Remove-Item Env:${bn} -ErrorAction SilentlyContinue
|
|
779
|
-
$source = @'
|
|
780
|
-
${Jf}
|
|
781
|
-
'@
|
|
782
|
-
Add-Type -TypeDefinition $source
|
|
783
|
-
if ($payload.action -eq 'recover') {
|
|
784
|
-
$drained = [KodaXEffectJob]::TerminateAndDrain([string]$payload.jobName)
|
|
785
|
-
[Console]::Out.WriteLine($(if ($drained) { 'DRAINED' } else { 'NOT_FOUND' }))
|
|
786
|
-
[Console]::Out.Flush()
|
|
787
|
-
} else {
|
|
788
|
-
[KodaXEffectJob]::Run(
|
|
789
|
-
[uint32]$payload.targetPid,
|
|
790
|
-
[uint32]$payload.ownerPid,
|
|
791
|
-
[string]$payload.jobName)
|
|
792
|
-
}
|
|
793
|
-
exit 0
|
|
794
|
-
} catch {
|
|
795
|
-
[Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
|
|
796
|
-
[Console]::Out.Flush()
|
|
797
|
-
exit 1
|
|
798
|
-
}`,YM=Buffer.from(Qf,"utf16le").toString("base64"),Zf=String.raw`
|
|
799
|
-
$ErrorActionPreference = 'Stop'
|
|
800
|
-
try {
|
|
801
|
-
$payload = [Text.Encoding]::UTF8.GetString(
|
|
802
|
-
[Convert]::FromBase64String($env:${bn})) | ConvertFrom-Json
|
|
803
|
-
Remove-Item Env:${bn} -ErrorAction SilentlyContinue
|
|
804
|
-
$source = @'
|
|
805
|
-
${Yf}
|
|
806
|
-
'@
|
|
807
|
-
Add-Type -TypeDefinition $source
|
|
808
|
-
$active = [KodaXSidProbe]::HasOtherProcessWithSid(
|
|
809
|
-
[string]$payload.sid,
|
|
810
|
-
[bool]$payload.ignoreCurrentProcessTree)
|
|
811
|
-
[Console]::Out.WriteLine($(if ($active) { 'ACTIVE' } else { 'CLEAR' }))
|
|
812
|
-
[Console]::Out.Flush()
|
|
813
|
-
exit 0
|
|
814
|
-
} catch {
|
|
815
|
-
[Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
|
|
816
|
-
[Console]::Out.Flush()
|
|
817
|
-
exit 1
|
|
818
|
-
}`,QM=Buffer.from(Zf,"utf16le").toString("base64");ke();var iO=String.raw`
|
|
470
|
+
- `)}`);let r=Q.join(e,"SKILL.md"),i=Fn(await yd(r,"utf8")),s=Q.resolve(t.skillsDir??Wt()),a=Q.join(s,i.frontmatter.name);if(await Ft(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await vd(a,{recursive:!0,force:!0})}return await oi(s,{recursive:!0}),await Jg(e,a,{recursive:!0}),{skillName:i.frontmatter.name,installedTo:a,source:Q.resolve(e),manifest:null}}async function aw(e,t={}){let n=Q.resolve(e),r=await Yg(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return sw(n,t);if(r.isFile()&&nw(n))return iw(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}function cw(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}async function ii(e=process.argv){let t=cw(e);t.input||(console.error("Usage: node scripts/install-skill.js <skill-dir-or-archive> [--dest <skills-dir>] [--force]"),process.exit(1));let n=await aw(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}var wd,dw,bd=l(()=>{"use strict";Kn();G();wd=".kodax-package.json";o(ew,"normalizeArchivePath");o(tw,"assertSafeArchivePath");o(nw,"isZipLike");o(rw,"readSkillPackageBuffer");o(ow,"ensureInstallTarget");o(iw,"installSkillArchive");o(sw,"installSkillDirectory");o(aw,"installSkill");o(cw,"parseArgs");o(ii,"main");dw=!1;dw&&ii().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})});function Sd(e){return e!==void 0&&lw.some(t=>t===e)}async function kd(e,t,n){Yc(n),await uw[e]([process.execPath,`skill-${e}.js`,...t])}var lw,uw,xd=l(()=>{"use strict";td();Kn();rd();cd();ud();md();hd();bd();G();lw=["init","validate","eval","grade","analyze","compare","package","install"],uw={init:Wo,validate:Uo,eval:Ko,grade:Go,analyze:Qo,compare:ti,package:ri,install:ii};o(Sd,"isSkillCreatorDispatchAction");o(kd,"dispatchSkillCreatorTool")});var Zc={};Gd(Zc,{SkillExecutor:()=>Je,SkillRegistry:()=>$t,VariableResolver:()=>Xe,clearPluginSkillPaths:()=>Ta,createExecutor:()=>Wc,createResolver:()=>Dc,discoverSkills:()=>Ot,discoverSkillsWithMonorepo:()=>Nc,dispatchSkillCreatorTool:()=>kd,executeSkill:()=>Uc,expandSkillForLLM:()=>qc,formatSkillActivationMessage:()=>Hc,formatSkillsSystemPrompt:()=>Mo,getDefaultSkillPaths:()=>kn,getNestedSkillPaths:()=>To,getSkillPathsFlat:()=>xn,getSkillRegistry:()=>Dt,initializeSkillRegistry:()=>Oo,isSkillCreatorDispatchAction:()=>Sd,listPluginSkillPaths:()=>Sn,loadFullSkill:()=>_n,loadSkillFileContent:()=>La,loadSkillMetadata:()=>Et,parseArguments:()=>Po,parseSkillMarkdown:()=>En,registerPluginSkillPath:()=>Aa,resetSkillRegistry:()=>Fc,resolveSkillContent:()=>ue,unregisterPluginSkillPath:()=>Ra});var Bn=l(()=>{"use strict";no();to();In();Co();Nt();No();Bc();zc();xd()});import{spawn as Wy,spawnSync as GX}from"node:child_process";import{createHash as Wd,randomInt as VX,randomUUID as Uy}from"node:crypto";import{closeSync as YX,constants as QX,existsSync as ZX,fsyncSync as e3,lstatSync as t3,mkdirSync as n3,openSync as r3,readFileSync as o3,readSync as i3,readdirSync as s3,realpathSync as a3,renameSync as c3,rmSync as d3,statSync as l3,writeFileSync as u3,writeSync as By}from"node:fs";import{copyFile as p3,lstat as m3,mkdir as h3,readFile as di,realpath as g3,rm as Ud,stat as w3,writeFile as y3}from"node:fs/promises";import{createRequire as Ky}from"node:module";import S from"node:path";import{globSync as oX}from"glob";C();L();K();var wt=class e{static{o(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??cf,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},ia=0;function cf(){ia+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ia}-${e}`}o(cf,"defaultNextSpanId");var sa=0;function df(){sa+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${sa}-${e}`}o(df,"defaultNextTraceId");function Wr(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??df)(),r=t(),i=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:i},c=!1,d,u,f=new wt({id:`${n}-root`,traceId:n,name:i,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(f);let p={id:n,startedAt:r,rootSpan:f,metadata:s,get endedAt(){return d},get error(){return u??f.error},end(){c||(c=!0,d=t(),f.end(),e.onTraceEnd&&e.onTraceEnd(p))}};return p}o(Wr,"createTrace");var Ur=[];function Br(e){for(let t of Ur)try{t.onSpanStart(e)}catch{}}o(Br,"_emitSpanStart");function Kr(e){for(let t of Ur)try{t.onSpanEnd(e)}catch{}}o(Kr,"_emitSpanEnd");function qr(e){for(let t of Ur)try{t.onTraceEnd(e)}catch{}}o(qr,"_emitTraceEnd");var yn=class{static{o(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Wr({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Br,onSpanEnd:Kr,onTraceEnd:qr})}},aa=new yn;L();var hf=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var _0=new Set(hf);K();K();C();K();C();zr();var Gr="ELECTRON_RUN_AS_NODE";var Xr="data:text/javascript,delete%20process.env.ELECTRON_RUN_AS_NODE";ke();L();C();ke();import{AsyncLocalStorage as Jf}from"node:async_hooks";var HM=new Jf;ke();ke();var tO=String.raw`
|
|
819
471
|
const { spawn } = require('node:child_process');
|
|
820
472
|
let header = Buffer.alloc(0);
|
|
821
473
|
process.stdin.on('data', function receive(chunk) {
|
|
@@ -851,7 +503,7 @@ process.stdin.on('data', function receive(chunk) {
|
|
|
851
503
|
process.stdin.pipe(child.stdin);
|
|
852
504
|
});
|
|
853
505
|
process.stdin.once('end', () => { if (header !== undefined) process.exit(1); });
|
|
854
|
-
`;var
|
|
506
|
+
`;var sp=Math.floor(3.75*1024*1024);var cp=1440*60*1e3;K();K();C();C();L();K();vn();bn();Bn();Ee();xe();xe();var aF=1440*60*1e3;L();xe();C();var mF=5*6e4;Mt();Dn();Dn();xe();C();var iW=new Intl.Segmenter("zh-CN",{granularity:"word"});import{AsyncLocalStorage as mw}from"node:async_hooks";var dW=new mw;K();C();ke();L();C();C();L();var gU=String.raw`const TOOL_NAME = 'echo_tool';
|
|
855
507
|
const RESOURCE_URI = 'memory://guide';
|
|
856
508
|
const PROMPT_NAME = 'draft_prompt';
|
|
857
509
|
let buffer = '';
|
|
@@ -1031,19 +683,19 @@ process.stdin.on('data', (chunk) => {
|
|
|
1031
683
|
|
|
1032
684
|
process.on('SIGTERM', () => process.exit(0));
|
|
1033
685
|
process.on('SIGINT', () => process.exit(0));
|
|
1034
|
-
`;
|
|
686
|
+
`;Bn();var Id=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),Dw=0,Lw=0,Ad=o(e=>{let t=e==="label"?++Dw:++Lw,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function jw(e,t,n){let r=Ad("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}o(jw,"appendLabel");async function Fw(e,t,n){let r=Ad("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}o(Fw,"appendArtifact");function Ww(e){let t=[],n=new Map,r=[],i=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),i=a;continue}i?i.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}o(Ww,"buildLineageTree");var Uw=Object.freeze({name:"lineage",entryTypes:Id,operators:Object.freeze({label:o((async(e,...t)=>{let[n,r]=t;return jw(e,n,r)}),"label"),attachArtifact:o((async(e,...t)=>{let[n,r]=t;return Fw(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:o(e=>Ww(e),"buildLineageTree")})});K();L();var Jw=new Set(["skill","ask_user_question","exit_plan_mode","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output","tool_search","get_goal","create_goal","update_goal","todo_create","todo_update","todo_list","todo_get","worktree_create","worktree_remove","undo","mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt","repo_overview","changed_scope","changed_diff","changed_diff_bundle","module_context","symbol_context","process_context","impact_estimate","relationship_scan","cyclic_dependencies","semantic_lookup"]),ai=Jw,zn=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
|
|
1035
687
|
|
|
1036
|
-
`;var z2=
|
|
1037
|
-
const isMissingGitTrustPath = ${
|
|
1038
|
-
const normalizeGitSafeDirectoryRootImplementation = ${
|
|
688
|
+
`;var z2=zn.trimEnd();var G2=16*1024;L();var ry={enabled:!1,maxAge:20,protectedTools:Array.from(ai)};import{createRequire as dy}from"node:module";var ly=dy(import.meta.url),Nd,rq=new Proxy({},{get(e,t){return Nd??=ly("typescript"),Reflect.get(Nd,t)}});K();var bH=new Intl.Segmenter("en",{granularity:"grapheme"});import{fileURLToPath as x3,pathToFileURL as qy}from"node:url";function Ty(e){let t=e.code;return t==="ENOENT"||t==="ENOTDIR"}o(Ty,"isMissingGitTrustPath");function Cy(e,t,n){try{let r=t(e).replaceAll("\\","/").replace(/\/+$/,"");return r===""?void 0:/^[A-Za-z]:$/.test(r)?`${r}/`:r}catch(r){if(n(r))return;throw r}}o(Cy,"normalizeGitSafeDirectoryRootImplementation");function Py(e,t,n,r){try{let s=t(n.join(e,".git"));if(s.isDirectory()||s.isFile())return!0}catch(s){if(!r(s))throw s}if(!(n.basename(e).toLowerCase()===".git"||/[/\\]\.git[/\\]modules[/\\]/i.test(e)))return!1;try{return t(n.join(e,"HEAD")).isFile()}catch(s){if(r(s))return!1;throw s}}o(Py,"isRepoBearingGitReadRootImplementation");function My(e,t,n,r,i){let s=[];typeof e=="string"&&e!==""&&s.push(e);for(let d of n??[])i(d)&&s.push(d);s.push(...t??[]);let a=[],c=new Set;for(let d of s){if(a.length>=8)break;let u=r(d);if(u===void 0)continue;let f=u.toLowerCase();c.has(f)||(c.add(f),a.push(u))}return a}o(My,"windowsGitTrustRootsImplementation");function Oy(e){if(e==="git_config_count")return"count";if(/^git_config_key_\d+$/.test(e))return"key";if(/^git_config_value_\d+$/.test(e))return"value"}o(Oy,"gitConfigEnvKind");function Ny(e,t,n,r,i){let s=new Map,a=[],c,d=!1;for(let u=0;u<t;u+=1){if(e[u]!=="--env"||u+1>=t)continue;let f=e[u+1],p=f.indexOf("="),h=(p<0?f:f.slice(0,p)).toLowerCase(),m=n(h);if(m===void 0)continue;d=!0,a.push(u);let k=p<0?"":f.slice(p+1);if(m==="count"){let g=Number.parseInt(k,10);(c!==void 0||!Number.isSafeInteger(g)||g<0||String(g)!==k)&&r(),c=g;continue}let b=Number.parseInt(h.slice(`git_config_${m}_`.length),10),y=s.get(b)??{};(!Number.isSafeInteger(b)||b<0||y[m]!==void 0)&&r(),y[m]=k,s.set(b,y)}return i(s,a,c,d,r)}o(Ny,"parseGitConfigEnvironmentImplementation");function $y(){throw new Error("ASRT GIT_CONFIG environment has an unexpected shape.")}o($y,"throwUnexpectedGitConfigShape");function Dy(e,t,n,r,i){!r||n!==void 0&&e.size===n&&[...e].every(([c,d])=>c<n&&d.key!==void 0&&d.value!==void 0)||i();let a=[...e].map(([c,d])=>({slot:c,key:d.key,value:d.value}));return{argumentIndices:t,pairs:a,sawAny:r}}o(Dy,"finishParsedGitConfigEnvironment");function Ly(e,t){let n=[];for(let i of e)n.push({key:"safe.directory",value:i},{key:"safe.directory",value:`${i}/*`});n.push(...t);let r=n.flatMap((i,s)=>[`GIT_CONFIG_KEY_${s}=${i.key}`,`GIT_CONFIG_VALUE_${s}=${i.value}`]);return r.push(`GIT_CONFIG_COUNT=${n.length}`),r}o(Ly,"gitSafeDirectoryAssignments");function jy(e,t,n,r){let i=new Set(n.argumentIndices),s=[],a=!1;for(let c=0;c<e.length;c+=1)if(i.has(c)){if(!a){for(let d of r)s.push("--env",d);a=!0}c+=1}else s.push(e[c]);return n.sawAny||s.splice(t,0,...r.flatMap(c=>["--env",c])),s}o(jy,"replaceGitConfigEnvironment");function Fy(e,t,n,r,i){let s=e.lastIndexOf("--");if(s<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let a=n(e,s),c=a.pairs.filter(u=>u.key.toLowerCase()!=="safe.directory").sort((u,f)=>u.slot-f.slot),d=r(t,c);return i(e,s,a,d)}o(Fy,"rewriteWindowsGitSafeDirectoryArgvImplementation");function Ld(){return String.raw`
|
|
689
|
+
const isMissingGitTrustPath = ${Ty.toString()};
|
|
690
|
+
const normalizeGitSafeDirectoryRootImplementation = ${Cy.toString()};
|
|
1039
691
|
const normalizeGitSafeDirectoryRoot = (root) => (
|
|
1040
692
|
normalizeGitSafeDirectoryRootImplementation(root, realpathSync, isMissingGitTrustPath)
|
|
1041
693
|
);
|
|
1042
|
-
const isRepoBearingGitReadRootImplementation = ${
|
|
694
|
+
const isRepoBearingGitReadRootImplementation = ${Py.toString()};
|
|
1043
695
|
const isRepoBearingGitReadRoot = (root) => (
|
|
1044
696
|
isRepoBearingGitReadRootImplementation(root, statSync, path, isMissingGitTrustPath)
|
|
1045
697
|
);
|
|
1046
|
-
const windowsGitTrustRootsImplementation = ${
|
|
698
|
+
const windowsGitTrustRootsImplementation = ${My.toString()};
|
|
1047
699
|
const windowsGitTrustRoots = (input) => {
|
|
1048
700
|
const filesystem = (input.config && input.config.filesystem) || {};
|
|
1049
701
|
return windowsGitTrustRootsImplementation(
|
|
@@ -1054,10 +706,10 @@ const windowsGitTrustRoots = (input) => {
|
|
|
1054
706
|
isRepoBearingGitReadRoot,
|
|
1055
707
|
);
|
|
1056
708
|
};
|
|
1057
|
-
const gitConfigEnvKind = ${
|
|
1058
|
-
const throwUnexpectedGitConfigShape = ${
|
|
1059
|
-
const finishParsedGitConfigEnvironment = ${
|
|
1060
|
-
const parseGitConfigEnvironmentImplementation = ${
|
|
709
|
+
const gitConfigEnvKind = ${Oy.toString()};
|
|
710
|
+
const throwUnexpectedGitConfigShape = ${$y.toString()};
|
|
711
|
+
const finishParsedGitConfigEnvironment = ${Dy.toString()};
|
|
712
|
+
const parseGitConfigEnvironmentImplementation = ${Ny.toString()};
|
|
1061
713
|
const parseGitConfigEnvironment = (argv, separator) => (
|
|
1062
714
|
parseGitConfigEnvironmentImplementation(
|
|
1063
715
|
argv,
|
|
@@ -1067,9 +719,9 @@ const parseGitConfigEnvironment = (argv, separator) => (
|
|
|
1067
719
|
finishParsedGitConfigEnvironment,
|
|
1068
720
|
)
|
|
1069
721
|
);
|
|
1070
|
-
const gitSafeDirectoryAssignments = ${
|
|
1071
|
-
const replaceGitConfigEnvironment = ${
|
|
1072
|
-
const rewriteWindowsGitSafeDirectoryArgvImplementation = ${
|
|
722
|
+
const gitSafeDirectoryAssignments = ${Ly.toString()};
|
|
723
|
+
const replaceGitConfigEnvironment = ${jy.toString()};
|
|
724
|
+
const rewriteWindowsGitSafeDirectoryArgvImplementation = ${Fy.toString()};
|
|
1073
725
|
const rewriteWindowsGitSafeDirectoryArgv = (argv, trustRoots) => (
|
|
1074
726
|
rewriteWindowsGitSafeDirectoryArgvImplementation(
|
|
1075
727
|
argv,
|
|
@@ -1079,7 +731,7 @@ const rewriteWindowsGitSafeDirectoryArgv = (argv, trustRoots) => (
|
|
|
1079
731
|
replaceGitConfigEnvironment,
|
|
1080
732
|
)
|
|
1081
733
|
);
|
|
1082
|
-
`}o(Ld,"windowsGitBrokerHelpersSource");var
|
|
734
|
+
`}o(Ld,"windowsGitBrokerHelpersSource");var uX=64*1024*1024;var jd=10;function Fd(e){let t=e.args.flatMap((a,c)=>a==="--"?[c]:[]);if(t.length===0)throw new Error("ASRT Windows invocation omitted its target separator.");if(t.length!==1)throw new Error("ASRT Windows invocation must contain exactly one target separator.");let n=t[0],r=e.args.slice(n+1);if(r.length===0||r[0]==="")throw new Error("ASRT Windows invocation omitted its target executable.");let i=new Map,s=[];for(let a=0;a<=n;a+=1){let c=e.args[a],d=c.toLowerCase();if(d.startsWith("--env="))throw new Error("ASRT Windows invocation used an unsupported inline environment entry.");if(d!=="--env"){s.push(c);continue}if(a+1>=n)throw new Error("ASRT Windows invocation contained an incomplete environment entry.");let u=e.args[a+1],f=u.indexOf("="),p=f<1?"":u.slice(0,f),h=f<0?"":u.slice(f+1),m=p.toLowerCase();if(p===""||p.includes("\0")||h.includes("\0"))throw new Error("ASRT Windows invocation contained an invalid environment entry.");i.set(m,[p,h]),a+=1}return{executable:e.executable,prefixArgs:s,targetArgv:r,childEnvironment:Object.fromEntries(i.values())}}o(Fd,"splitAsrtWindowsInvocation");var{SandboxManager:Gn,getSrtWinPath:T3,getWindowsSandboxUserStatus:Hy,installWindowsSandbox:C3,resolveSrtWin:zy,uninstallWindowsSandbox:P3}=await import("@anthropic-ai/sandbox-runtime"),M3=1024*1024,O3=16*1024;var Gy=Ky(import.meta.url),N3=process.env.KODAX_BUNDLED==="true"?void 0:qy(Gy.resolve("@anthropic-ai/sandbox-runtime")).href;var $3=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",S.join(".cargo","credentials.toml"),S.join(".config","gcloud"),S.join(".config","gh"),S.join(".config","openai"),S.join(".config","anthropic"),".gitconfig",S.join(".config","git","config"),".terraformrc",S.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",S.join(".config","fish","config.fish"),S.join(".config","fish","fish_variables"),".bash_history",".zsh_history",S.join(".m2","settings.xml"),S.join(".m2","settings-security.xml"),S.join(".gradle","gradle.properties"),S.join(".nuget","NuGet","NuGet.Config"),S.join(".pip","pip.conf"),S.join(".config","pip","pip.conf"),S.join(".cache","huggingface","token"),S.join(".huggingface","token"),S.join(".config","rclone","rclone.conf"),S.join(".local","share","keyrings"),S.join("Library","Keychains"),S.join("AppData","Roaming","Microsoft","Protect"),S.join("AppData","Roaming","Microsoft","Credentials"),S.join("AppData","Roaming","Microsoft","Vault"),S.join("AppData","Local","Microsoft","Credentials"),S.join("AppData","Local","Microsoft","Protect"),S.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"];var D3=JSON.stringify(Xr),L3=JSON.stringify(Gr),Xy=String.raw`
|
|
1083
735
|
const { spawn } = require('node:child_process');
|
|
1084
736
|
const { writeSync } = require('node:fs');
|
|
1085
737
|
const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
|
|
@@ -1110,7 +762,7 @@ child.once('error', (error) => {
|
|
|
1110
762
|
child.once('exit', (code, signal) => {
|
|
1111
763
|
process.exitCode = signal ? 1 : code ?? 1;
|
|
1112
764
|
});
|
|
1113
|
-
`,
|
|
765
|
+
`,Vy="eval(Buffer.from(process.argv[1],'base64').toString('utf8'))",j3=JSON.stringify(Vy),Jy=Buffer.from(Xy,"utf8").toString("base64"),F3=JSON.stringify(Jy),W3=Ld(),U3=String.raw`
|
|
1114
766
|
const { spawn } = require('node:child_process');
|
|
1115
767
|
const { createWriteStream } = require('node:fs');
|
|
1116
768
|
const { readFile, rm } = require('node:fs/promises');
|
|
@@ -1143,13 +795,13 @@ input.once('line', async (gate) => {
|
|
|
1143
795
|
});
|
|
1144
796
|
child.once('close', (code) => { process.exitCode = Number.isInteger(code) ? code : 1; });
|
|
1145
797
|
});
|
|
1146
|
-
`;function Bd(e){return e instanceof Error?e.message:String(e)}o(Bd,"errorText");var
|
|
798
|
+
`;function Bd(e){return e instanceof Error?e.message:String(e)}o(Bd,"errorText");var B3=1024*1024;function Yy(e){let t=[];return e.provisioned||t.push("Windows sandbox account does not exist."),e.sid||t.push("Windows sandbox account SID is unavailable."),(!e.groupExists||!e.groupSid)&&t.push("Windows sandbox local group is unavailable."),e.inBuiltinUsers||t.push("Windows sandbox account is not in the built-in Users group."),e.inSandboxGroup||t.push("Windows sandbox account is not in the sandbox-runtime-users group."),e.hiddenFromLogon||t.push("Windows sandbox account is not hidden from interactive logon."),e.credPresent||t.push("Windows sandbox account credential is unavailable."),t}o(Yy,"windowsSandboxAccountDiagnostics");var K3=String.raw`
|
|
1147
799
|
$ErrorActionPreference = 'Stop'
|
|
1148
800
|
$process = Start-Process -FilePath $env:KODAX_NATIVE_SETUP_EXE -ArgumentList @('__setup-account-capabilities', $env:KODAX_NATIVE_SETUP_ENVELOPE) -Verb RunAs -PassThru -WindowStyle Hidden
|
|
1149
801
|
$process.WaitForExit()
|
|
1150
802
|
$exitCode = $process.ExitCode
|
|
1151
803
|
$process.Dispose()
|
|
1152
804
|
exit $exitCode
|
|
1153
|
-
`;function
|
|
1154
|
-
`)}o(Kd,"writeWindowsNetworkBrokerReady");async function
|
|
805
|
+
`;function Qy(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LOCALAPPDATA","LANG"],t={NO_COLOR:"1"};for(let n of e)process.env[n]!==void 0&&(t[n]=process.env[n]);for(let[n,r]of Object.entries(process.env))n.startsWith("LC_")&&r!==void 0&&(t[n]=r);return Zy(t)}o(Qy,"sanitizedEnvironment");function Zy(e){if(process.platform!=="win32")return{...e};let t=new Map;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n.toLowerCase(),[n,r]);return Object.fromEntries(t.values())}o(Zy,"normalizedSandboxEnvironment");function Kd(e){By(3,`${JSON.stringify(e)}
|
|
806
|
+
`)}o(Kd,"writeWindowsNetworkBrokerReady");async function ev(e){let t=Wy(e,["__controller",String(process.pid)],{env:Qy(),shell:!1,stdio:["pipe","pipe","pipe"],windowsHide:!0}),n=Buffer.alloc(0);t.stderr?.on("data",d=>{n=Buffer.concat([n,d]).subarray(-16*1024)});let r,i="",s,a=new Promise(d=>{s=d}),c={child:t,get pipe(){return i},exit:a,stderrTail:o(()=>n.toString("utf8"),"stderrTail"),stopping:!1};t.once("error",d=>{r=d}),t.once("close",(d,u)=>{let f={code:d,signal:u,...r===void 0?{}:{error:r}};c.outcome=f,s(f)});try{let d=t.stdout;if(d===null)throw new Error("Windows native controller stdout pipe was not created.");i=await new Promise((f,p)=>{let h=!1,m=Buffer.alloc(0),k=o(v=>{h||(h=!0,clearTimeout(w),d.off("data",g),t.off("error",b),t.off("exit",y),v())},"finish"),b=o(v=>k(()=>p(v)),"onError"),y=o(v=>k(()=>p(new Error(`Windows native controller exited ${String(v)} before readiness: ${c.stderrTail()}`))),"onExit"),g=o(v=>{if(m=Buffer.concat([m,v]),m.length>4096){k(()=>p(new Error("Windows native controller readiness exceeded 4 KiB.")));return}let R=m.indexOf(10);R>=0&&k(()=>f(m.subarray(0,R).toString("utf8").trim()))},"onData"),w=setTimeout(()=>k(()=>p(new Error("Windows native controller readiness timed out."))),1e4);w.unref(),d.on("data",g),t.once("error",b),t.once("exit",y)});let u=/^\\\\\.\\pipe\\kodax-v2-(\d+)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.exec(i);if(u===null||t.pid===void 0||Number(u[1])!==t.pid)throw new Error("Windows native controller returned an unauthenticated pipe name.");return c}catch(d){try{await qd(c)}catch(u){throw new AggregateError([d,u],"Windows native controller startup and cleanup both failed.")}throw d}}o(ev,"startWindowsNativeController");async function qd(e){e.stopping=!0;let t=e.child.stdin;t!==null&&!t.destroyed&&await new Promise(r=>{let i=o(()=>r(),"finish");t.once("error",i),t.end(i)});let n=await Promise.race([e.exit.then(r=>({graceful:!0,outcome:r})),new Promise(r=>{setTimeout(()=>r(!1),5e3).unref()})]);if(n===!1)throw e.child.kill("SIGKILL"),await e.exit,new Error("Windows native controller did not exit within its cleanup budget.");if(n.outcome.error!==void 0||n.outcome.code!==0||n.outcome.signal!==null)throw new Error(`Windows native controller cleanup failed (code ${String(n.outcome.code)}, signal ${String(n.outcome.signal)}): ${e.stderrTail().trim()}`,n.outcome.error===void 0?void 0:{cause:n.outcome.error})}o(qd,"stopWindowsNativeController");async function Hd(e){let t,n,r=!1,i=[];try{let s=JSON.parse(await di(e,"utf8"));if(await Ud(e,{force:!0}),s.version!==1||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(s.setupGenerationNonce)||s.config.filesystem.disabled!==!0||!S.isAbsolute(s.cwd)||!S.isAbsolute(s.srtWinPath)||!/^[0-9a-f]{64}$/i.test(s.srtWinSha256)||!S.isAbsolute(s.controllerExecutable)||!/^[0-9a-f]{64}$/i.test(s.controllerSha256)||s.controllerProtocol!==jd||!/^S-\d+(?:-\d+)+$/i.test(s.expectedSandboxUserSid)||!/^S-\d+(?:-\d+)+$/i.test(s.expectedSandboxGroupSid))throw new Error("Windows network broker request is invalid or enables filesystem authority.");let a=await di(s.srtWinPath);if(Wd("sha256").update(a).digest("hex")!==s.srtWinSha256.toLowerCase())throw new Error("ASRT Windows runner artifact changed before broker startup.");let c=await di(s.controllerExecutable);if(Wd("sha256").update(c).digest("hex")!==s.controllerSha256.toLowerCase())throw new Error("Windows native controller artifact changed before broker startup.");let d=new Set(s.endpoints.map(y=>`${y.host.toLowerCase()}:${y.port}`)),u=s.allowAllNetwork?async()=>!0:d.size===0?void 0:async({host:y,port:g})=>g!==void 0&&d.has(`${y.toLowerCase()}:${g}`);await Gn.initialize(s.config,u);let f=`KODAX_WINDOWS_V2_${Uy()}`,p=await Gn.wrapWithSandboxArgv(`echo ${f}`,"cmd",void 0,void 0,s.cwd);if(p.argv.length<2||!p.argv.some(y=>y.includes(f)))throw new Error("ASRT Windows wrapper did not preserve the controlled target sentinel.");let h=Fd({executable:p.argv[0],args:p.argv.slice(1)}),m=Hy({srtWin:zy({path:s.srtWinPath})});if(!m.sid||!m.groupSid||Yy(m).length>0)throw new Error("Windows sandbox account is not ready for native shell execution.");if(m.sid.toUpperCase()!==s.expectedSandboxUserSid.toUpperCase()||m.groupSid.toUpperCase()!==s.expectedSandboxGroupSid.toUpperCase())throw new Error("Windows sandbox account changed while the network broker was starting.");t=await ev(s.controllerExecutable),Kd({version:1,ok:!0,asrtExecutable:h.executable,asrtPrefixArgs:h.prefixArgs,asrtChildEnvironment:h.childEnvironment,sandboxUserSid:m.sid,sandboxGroupSid:m.groupSid,controllerPipe:t.pipe}),r=!0;let k=new Promise(y=>{let g=!1,w=o(()=>{g||(g=!0,process.stdin.off("end",w),process.stdin.off("close",w),process.off("SIGINT",w),process.off("SIGTERM",w),process.stdin.pause(),y())},"finish");n=w,process.stdin.once("end",w),process.stdin.once("close",w),process.once("SIGINT",w),process.once("SIGTERM",w),process.stdin.readableEnded||process.stdin.destroyed?w():process.stdin.resume()}),b=t.exit.then(y=>{if(!t?.stopping)throw new Error(`Windows native controller exited while its broker was active (code ${String(y.code)}, signal ${String(y.signal)}): `+t.stderrTail().trim(),y.error===void 0?void 0:{cause:y.error})});if(await Promise.race([k,b]),t.outcome!==void 0&&!t.stopping)throw new Error("Windows native controller exited before broker shutdown completed.")}catch(s){if(!r)try{Kd({version:1,ok:!1,error:Bd(s)}),r=!0}catch(a){i.push(a)}i.push(s)}finally{if(n?.(),t!==void 0)try{await qd(t)}catch(s){i.push(s)}try{Gn.cleanupAfterCommand()}catch(s){i.push(s)}try{await Gn.reset()}catch(s){i.push(s)}try{await Ud(e,{force:!0})}catch(s){i.push(s)}}return i.length>0?(process.stderr.write(`Windows network broker failed: ${i.map(Bd).join(" | ")}
|
|
1155
807
|
`),1):0}o(Hd,"runAsrtWindowsNetworkBrokerProcess");var zd=process.argv[2];if(!zd)throw new Error("Missing Windows ASRT network broker request file.");process.exitCode=await Hd(zd);
|