@kodax-ai/kodax 0.7.82 → 0.7.83
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 +30 -0
- package/README.md +10 -0
- package/README_CN.md +8 -0
- package/dist/chunks/{agent-4UTCCMD5.js → agent-S7LMMTG7.js} +1 -1
- package/dist/chunks/argument-completer-SQHG2LYE.js +2 -0
- package/dist/chunks/chunk-37RT45HT.js +379 -0
- package/dist/chunks/{chunk-ZOBNDWOA.js → chunk-3DKQC7A2.js} +1 -1
- package/dist/chunks/{chunk-WMYCNECP.js → chunk-45E23YJI.js} +142 -67
- package/dist/chunks/{chunk-GIVYTXQW.js → chunk-6QILIBOU.js} +155 -155
- package/dist/chunks/{chunk-JDZFNWMZ.js → chunk-DSFHIUHZ.js} +2 -2
- package/dist/chunks/{chunk-7ZN2MLVM.js → chunk-DZUMH6GJ.js} +1 -1
- package/dist/chunks/{chunk-VQBJMNFD.js → chunk-HI6RCW5Y.js} +2 -2
- package/dist/chunks/{chunk-XTCDCU2Q.js → chunk-LF2JBTBG.js} +4 -4
- package/dist/chunks/{chunk-NINELPXH.js → chunk-RAQGGVIF.js} +1 -1
- package/dist/chunks/{chunk-ZZUIO5KL.js → chunk-TC2VHPG5.js} +1 -1
- package/dist/chunks/{chunk-S6JTWDN6.js → chunk-URCS6CVP.js} +1 -1
- package/dist/chunks/{chunk-KH2HED37.js → chunk-XB2JNLXH.js} +2 -2
- package/dist/chunks/{compaction-config-IDL5JQVI.js → compaction-config-SSQ5NXUP.js} +1 -1
- package/dist/chunks/{construction-bootstrap-STYUR6XA.js → construction-bootstrap-E4M3CY3N.js} +1 -1
- package/dist/chunks/{dist-RKBHBUHV.js → dist-MIXP4ULB.js} +1 -1
- package/dist/chunks/{host-RF2IX3N6.js → host-ZCPI7SMC.js} +1 -1
- package/dist/chunks/{run-manager-WE2KPAKZ.js → run-manager-4RYG7HSP.js} +1 -1
- package/dist/chunks/{utils-Z2RSAENX.js → utils-7DKE2EKT.js} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1522 -1098
- package/dist/kodax_resume.js +140 -65
- package/dist/runtime-worker.js +1415 -991
- package/dist/sandbox-workspace-session.js +121 -46
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +8 -1
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +47 -2
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +120 -45
- package/docs/SDK_EMBEDDER_GUIDE.md +35 -8
- package/package.json +2 -1
- package/dist/chunks/argument-completer-N7ORRJBS.js +0 -2
- package/dist/chunks/chunk-PGTU7JQX.js +0 -30
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
var
|
|
2
|
+
var Ur=Object.defineProperty;var o=(e,t)=>Ur(e,"name",{value:t,configurable:!0});import{createHash as $M,randomUUID as kl}from"node:crypto";import{constants as NM,readdirSync as LM,statSync as jM,writeSync as Sl}from"node:fs";import{copyFile as KM,lstat as XM,mkdir as BM,readFile as xl,realpath as UM,rename as WM,rm as El,stat as qM,writeFile as zM}from"node:fs/promises";import{createRequire as Il}from"node:module";import y from"node:path";import Rl from"node:readline";import{fileURLToPath as YM,pathToFileURL as Tl}from"node:url";import{DEFAULT_WINDOWS_PROXY_PORT_RANGE as ZM,SandboxManager as Q,getSrtWinPath as eO,getWindowsSandboxUserStatus as tO,grantWindowsAcl as nO,installWindowsSandbox as rO,resolveSrtWin as oO,revokeWindowsAcl as iO}from"@anthropic-ai/sandbox-runtime";import{AsyncLocalStorage as Wr}from"node:async_hooks";var qr=new Wr;function pe(e){let t=qr.getStore()?.credential;return t?Z(e,t,new WeakMap):e}o(pe,"redactScopedProviderCredential");function Z(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(Z(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=Z(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(Z(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=s.split(t).join("[REDACTED_CREDENTIAL]");i[c]=Z(a.value,t,n)}return i}o(Z,"redactCredentialValue");import{AsyncLocalStorage as zr}from"node:async_hooks";var ou=new zr;var ee={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},Et={...ee,multimodalSupport:"image-input"},me={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},It={...me,multimodalSupport:"image-input"};import Nu from"@anthropic-ai/sdk";import{parse as Su}from"partial-json";import Qu from"openai";import{ClientSideConnection as wf,PROTOCOL_VERSION as vf,ndJsonStream as bf}from"@agentclientprotocol/sdk";var uf=Object.freeze({status:"terminated"}),ff=Object.freeze({status:"already-exited"}),pf=Object.freeze({status:"unknown"}),mf=String.raw`
|
|
3
3
|
using System;
|
|
4
4
|
using System.Runtime.InteropServices;
|
|
5
5
|
using System.Text;
|
|
@@ -86,8 +86,83 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
86
86
|
CloseHandle(snapshot);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
}`;import Mt from"node:fs";import Ot from"node:os";import $t from"node:path";var go="gpt-5.4",ho="auto-gemini-3",yo=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],wo=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Dt(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}o(Dt,"dedupePreserveOrder");function vo(){let e=$t.join(Ot.homedir(),".codex","config.toml");try{return Mt.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(vo,"readCodexConfiguredModel");function bo(){let e=$t.join(Ot.homedir(),".gemini","settings.json");try{let t=JSON.parse(Mt.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}}o(bo,"readGeminiConfiguredModel");function W(){return vo()||go}o(W,"getCodexCliDefaultModel");function q(){return bo()||ho}o(q,"getGeminiCliDefaultModel");function te(){return Dt([W(),...yo])}o(te,"getCodexCliKnownModels");function ne(){return Dt([q(),...wo])}o(ne,"getGeminiCliKnownModels");var Zf=q(),ep=ne();var fp=W(),pp=te();import{existsSync as Po,readFileSync as Mo}from"node:fs";import H from"node:path";import{fileURLToPath as Oo}from"node:url";var Nt=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Lt=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],jt=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Ft=["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-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"],Kt=["max_tokens","max_completion_tokens"],Xt=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Bt=["count-tokens","models-list","minimal-message","unsupported"];function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(O,"isPlainObject");function K(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(K,"requireString");function z(e,t){if(e!==void 0)return K(e,t)}o(z,"optionalString");function qt(e,t){if(e!==void 0){if(typeof e!="string"||!Kt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Kt.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(qt,"optionalMaxOutputTokensField");function L(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}}o(L,"optionalNumber");function E(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(E,"optionalBoolean");function Ut(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)=>K(n,`${t}[${r}]`))}}o(Ut,"optionalStringArray");function So(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=K(i,`${t}.${r}`);return n}o(So,"optionalStringMap");function xo(e,t){if(e!==void 0){if(typeof e!="string"||!Ft.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ft.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(xo,"optionalReasoningPreset");function je(e,t){if(typeof e!="string"||!Nt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Nt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(je,"requireReasoningCapability");function Eo(e,t){if(typeof e!="string"||!Lt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Lt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Eo,"requireEffortStrategy");function Io(e,t){if(e!==void 0){if(typeof e!="string"||!jt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${jt.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Io,"optionalThinkingStrategy");function Wt(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Eo(e.effortStrategy,`${t}.effortStrategy`),r=xo(e.reasoningPreset,`${t}.reasoningPreset`),i=Io(e.thinkingStrategy,`${t}.thinkingStrategy`),s=z(e.defaultEffort,`${t}.defaultEffort`),a=So(e.effortAliases,`${t}.effortAliases`),c=Ut(e.disabledEfforts,`${t}.disabledEfforts`),d=Ut(e.localRejectEfforts,`${t}.localRejectEfforts`),l=E(e.allowCustomEffort,`${t}.allowCustomEffort`),u=E(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=E(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=E(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),g=E(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),m=E(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),_=E(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),k=E(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),h={effortStrategy:n};if(r!==void 0&&(h.reasoningPreset=r),i!==void 0&&(h.thinkingStrategy=i),s!==void 0&&(h.defaultEffort=s),a!==void 0&&(h.effortAliases=a),c!==void 0&&(h.disabledEfforts=c),d!==void 0&&(h.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);h.supportedEfforts=e.supportedEfforts.map((S,w)=>{if(!O(S))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${w}] must be an object`);return{value:K(S.value,`${t}.supportedEfforts[${w}].value`),...z(S.description,`${t}.supportedEfforts[${w}].description`)!==void 0?{description:z(S.description,`${t}.supportedEfforts[${w}].description`)}:{},...E(S.isDefault,`${t}.supportedEfforts[${w}].isDefault`)!==void 0?{isDefault:E(S.isDefault,`${t}.supportedEfforts[${w}].isDefault`)}:{},...E(S.isUserVisible,`${t}.supportedEfforts[${w}].isUserVisible`)!==void 0?{isUserVisible:E(S.isUserVisible,`${t}.supportedEfforts[${w}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!O(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let S={};for(let[w,xt]of Object.entries(e.budgetByEffort))S[w]=L(xt,`${t}.budgetByEffort.${w}`)??0;h.budgetByEffort=S}return l!==void 0&&(h.allowCustomEffort=l),u!==void 0&&(h.supportsReasoningEffort=u),f!==void 0&&(h.supportsReasoningSummary=f),p!==void 0&&(h.supportsEncryptedReasoningReplay=p),g!==void 0&&(h.supportsAdaptiveThinking=g),m!==void 0&&(h.supportsManualThinkingBudget=m),_!==void 0&&(h.supportsDisabledThinking=_),k!==void 0&&(h.requiresEffortBetaHeader=k),h}o(Wt,"validateReasoningProfile");function zt(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?Wt(n,`${t}.reasoningProfile`):Wt(r,`${t}.reasoningCapabilityV2`)}o(zt,"validateReasoningProfileField");function Ro(e,t){if(typeof e!="string"||!Xt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Xt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Ro,"requireProfileName");function To(e,t){if(typeof e!="string"||!Bt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Bt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(To,"requireVerifyStrategy");function _o(e,t){if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=K(e.id,`${t}.id`),r=z(e.wireModel,`${t}.wireModel`),i=z(e.displayName,`${t}.displayName`),s=L(e.contextWindow,`${t}.contextWindow`),a=L(e.maxOutputTokens,`${t}.maxOutputTokens`),c=qt(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=L(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=E(e.replayReasoningContent,`${t}.replayReasoningContent`),u=E(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=L(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:je(e.reasoningCapability,`${t}.reasoningCapability`),g=zt(e,t),m={id:n};return r!==void 0&&(m.wireModel=r),i!==void 0&&(m.displayName=i),s!==void 0&&(m.contextWindow=s),a!==void 0&&(m.maxOutputTokens=a),c!==void 0&&(m.maxOutputTokensField=c),d!==void 0&&(m.thinkingBudgetCap=d),p!==void 0&&(m.reasoningCapability=p),g!==void 0&&(m.reasoningProfile=g),l!==void 0&&(m.replayReasoningContent=l),u!==void 0&&(m.strictThinkingSignature=u),f!==void 0&&(m.streamMaxDurationMs=f),m}o(_o,"validateModelDescriptor");function Co(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=je(i,`${t}.${r}`);return n}o(Co,"validateModelReasoningCapabilities");function Ao(e,t){if(!O(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=E(e.cliBridge,`providers.${t}.cliBridge`),r=K(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=je(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=zt(e,`providers.${t}`),a=Ro(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=To(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=L(e.contextWindow,`providers.${t}.contextWindow`),l=L(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=qt(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=L(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),p=E(e.supportsThinking,`providers.${t}.supportsThinking`),g=Co(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),m=z(e.model,`providers.${t}.model`);if(n&&(m!==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&&m===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let _;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);_=e.models.map((S,w)=>_o(S,`providers.${t}.models[${w}]`));let h=new Set([...m===void 0?[]:[m],..._.map(S=>S.id)]);for(let[S,w]of _.entries())if(w.wireModel!==void 0&&!h.has(w.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${S}].wireModel must reference a declared model, got ${JSON.stringify(w.wireModel)}`)}let k={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(k.reasoningProfile=s),m!==void 0&&(k.model=m),_!==void 0&&(k.models=_),d!==void 0&&(k.contextWindow=d),l!==void 0&&(k.maxOutputTokens=l),u!==void 0&&(k.maxOutputTokensField=u),f!==void 0&&(k.thinkingBudgetCap=f),p!==void 0&&(k.supportsThinking=p),g!==void 0&&(k.modelReasoningCapabilities=g),n&&(k.cliBridge=!0),k}o(Ao,"validateProviderEntry");function Ht(e){if(!O(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=K(e.updatedAt,"updatedAt");if(!O(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]=Ao(i,r);return{version:1,updatedAt:t,providers:n}}o(Ht,"validateProviderCapabilitiesJson");var $o=Object.freeze({native:ee,"image-input-native":Et,"cli-bridge":me,"image-input-cli-bridge":It}),we=null;function Do(){if(process.env.KODAX_BUNDLED==="true")return H.join(H.dirname(process.execPath),"provider-capabilities.json");let e=H.dirname(Oo(import.meta.url)),t=[H.join(e,"provider-capabilities.json"),H.join(H.dirname(e),"provider-capabilities.json")];for(let n of t)if(Po(n))return n;return t[0]}o(Do,"resolveJsonPath");function No(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Vt(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Vt(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(No,"deepFreezeSnapshot");function Vt(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)}o(Vt,"freezeReasoningProfile");function Lo(e){if(e==="gemini-cli"){let t=q();return{model:t,models:ne().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=W();return{model:t,models:te().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(Lo,"resolveCliBridgeModels");function jo(e,t){let n=$o[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=Lo(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(jo,"buildSnapshot");function Gt(){if(we)return we;let e=Do(),t;try{let i=Mo(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=Ht(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=No(jo(i,s));return we=Object.freeze(r),we}o(Gt,"getProviderSnapshots");import Lp from"@anthropic-ai/sdk";var ve=Gt();var Jt=process.env.KODAX_PROVIDER??"zhipu-coding";var hi=[];function C(e){let t=pe(e),n=hi.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${mn(t)}
|
|
90
|
-
`)}catch{}}o(C,"emitKodaXDiagnostic");function mn(e){let t=pe(e),n=
|
|
89
|
+
}`;import Mt from"node:fs";import Ot from"node:os";import $t from"node:path";var ho="gpt-5.4",yo="auto-gemini-3",wo=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],vo=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Dt(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}o(Dt,"dedupePreserveOrder");function bo(){let e=$t.join(Ot.homedir(),".codex","config.toml");try{return Mt.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(bo,"readCodexConfiguredModel");function ko(){let e=$t.join(Ot.homedir(),".gemini","settings.json");try{let t=JSON.parse(Mt.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}}o(ko,"readGeminiConfiguredModel");function W(){return bo()||ho}o(W,"getCodexCliDefaultModel");function q(){return ko()||yo}o(q,"getGeminiCliDefaultModel");function te(){return Dt([W(),...wo])}o(te,"getCodexCliKnownModels");function ne(){return Dt([q(),...vo])}o(ne,"getGeminiCliKnownModels");var ep=q(),tp=ne();var pp=W(),mp=te();import{existsSync as Mo,readFileSync as Oo}from"node:fs";import H from"node:path";import{fileURLToPath as $o}from"node:url";var Nt=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Lt=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],jt=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Ft=["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-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"],Kt=["max_tokens","max_completion_tokens"],Xt=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Bt=["count-tokens","models-list","minimal-message","unsupported"];function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(O,"isPlainObject");function K(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(K,"requireString");function z(e,t){if(e!==void 0)return K(e,t)}o(z,"optionalString");function qt(e,t){if(e!==void 0){if(typeof e!="string"||!Kt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Kt.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(qt,"optionalMaxOutputTokensField");function L(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}}o(L,"optionalNumber");function E(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(E,"optionalBoolean");function Ut(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)=>K(n,`${t}[${r}]`))}}o(Ut,"optionalStringArray");function xo(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=K(i,`${t}.${r}`);return n}o(xo,"optionalStringMap");function Eo(e,t){if(e!==void 0){if(typeof e!="string"||!Ft.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ft.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Eo,"optionalReasoningPreset");function je(e,t){if(typeof e!="string"||!Nt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Nt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(je,"requireReasoningCapability");function Io(e,t){if(typeof e!="string"||!Lt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Lt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Io,"requireEffortStrategy");function Ro(e,t){if(e!==void 0){if(typeof e!="string"||!jt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${jt.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Ro,"optionalThinkingStrategy");function Wt(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Io(e.effortStrategy,`${t}.effortStrategy`),r=Eo(e.reasoningPreset,`${t}.reasoningPreset`),i=Ro(e.thinkingStrategy,`${t}.thinkingStrategy`),s=z(e.defaultEffort,`${t}.defaultEffort`),a=xo(e.effortAliases,`${t}.effortAliases`),c=Ut(e.disabledEfforts,`${t}.disabledEfforts`),d=Ut(e.localRejectEfforts,`${t}.localRejectEfforts`),l=E(e.allowCustomEffort,`${t}.allowCustomEffort`),u=E(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=E(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=E(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),g=E(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),m=E(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),_=E(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),k=E(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),h={effortStrategy:n};if(r!==void 0&&(h.reasoningPreset=r),i!==void 0&&(h.thinkingStrategy=i),s!==void 0&&(h.defaultEffort=s),a!==void 0&&(h.effortAliases=a),c!==void 0&&(h.disabledEfforts=c),d!==void 0&&(h.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);h.supportedEfforts=e.supportedEfforts.map((S,w)=>{if(!O(S))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${w}] must be an object`);return{value:K(S.value,`${t}.supportedEfforts[${w}].value`),...z(S.description,`${t}.supportedEfforts[${w}].description`)!==void 0?{description:z(S.description,`${t}.supportedEfforts[${w}].description`)}:{},...E(S.isDefault,`${t}.supportedEfforts[${w}].isDefault`)!==void 0?{isDefault:E(S.isDefault,`${t}.supportedEfforts[${w}].isDefault`)}:{},...E(S.isUserVisible,`${t}.supportedEfforts[${w}].isUserVisible`)!==void 0?{isUserVisible:E(S.isUserVisible,`${t}.supportedEfforts[${w}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!O(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let S={};for(let[w,xt]of Object.entries(e.budgetByEffort))S[w]=L(xt,`${t}.budgetByEffort.${w}`)??0;h.budgetByEffort=S}return l!==void 0&&(h.allowCustomEffort=l),u!==void 0&&(h.supportsReasoningEffort=u),f!==void 0&&(h.supportsReasoningSummary=f),p!==void 0&&(h.supportsEncryptedReasoningReplay=p),g!==void 0&&(h.supportsAdaptiveThinking=g),m!==void 0&&(h.supportsManualThinkingBudget=m),_!==void 0&&(h.supportsDisabledThinking=_),k!==void 0&&(h.requiresEffortBetaHeader=k),h}o(Wt,"validateReasoningProfile");function zt(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?Wt(n,`${t}.reasoningProfile`):Wt(r,`${t}.reasoningCapabilityV2`)}o(zt,"validateReasoningProfileField");function To(e,t){if(typeof e!="string"||!Xt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Xt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(To,"requireProfileName");function _o(e,t){if(typeof e!="string"||!Bt.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Bt.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_o,"requireVerifyStrategy");function Co(e,t){if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=K(e.id,`${t}.id`),r=z(e.wireModel,`${t}.wireModel`),i=z(e.displayName,`${t}.displayName`),s=L(e.contextWindow,`${t}.contextWindow`),a=L(e.maxOutputTokens,`${t}.maxOutputTokens`),c=qt(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=L(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=E(e.replayReasoningContent,`${t}.replayReasoningContent`),u=E(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=L(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:je(e.reasoningCapability,`${t}.reasoningCapability`),g=zt(e,t),m={id:n};return r!==void 0&&(m.wireModel=r),i!==void 0&&(m.displayName=i),s!==void 0&&(m.contextWindow=s),a!==void 0&&(m.maxOutputTokens=a),c!==void 0&&(m.maxOutputTokensField=c),d!==void 0&&(m.thinkingBudgetCap=d),p!==void 0&&(m.reasoningCapability=p),g!==void 0&&(m.reasoningProfile=g),l!==void 0&&(m.replayReasoningContent=l),u!==void 0&&(m.strictThinkingSignature=u),f!==void 0&&(m.streamMaxDurationMs=f),m}o(Co,"validateModelDescriptor");function Ao(e,t){if(e===void 0)return;if(!O(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=je(i,`${t}.${r}`);return n}o(Ao,"validateModelReasoningCapabilities");function Po(e,t){if(!O(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=E(e.cliBridge,`providers.${t}.cliBridge`),r=K(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=je(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=zt(e,`providers.${t}`),a=To(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=_o(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=L(e.contextWindow,`providers.${t}.contextWindow`),l=L(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=qt(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=L(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),p=E(e.supportsThinking,`providers.${t}.supportsThinking`),g=Ao(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),m=z(e.model,`providers.${t}.model`);if(n&&(m!==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&&m===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let _;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);_=e.models.map((S,w)=>Co(S,`providers.${t}.models[${w}]`));let h=new Set([...m===void 0?[]:[m],..._.map(S=>S.id)]);for(let[S,w]of _.entries())if(w.wireModel!==void 0&&!h.has(w.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${S}].wireModel must reference a declared model, got ${JSON.stringify(w.wireModel)}`)}let k={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(k.reasoningProfile=s),m!==void 0&&(k.model=m),_!==void 0&&(k.models=_),d!==void 0&&(k.contextWindow=d),l!==void 0&&(k.maxOutputTokens=l),u!==void 0&&(k.maxOutputTokensField=u),f!==void 0&&(k.thinkingBudgetCap=f),p!==void 0&&(k.supportsThinking=p),g!==void 0&&(k.modelReasoningCapabilities=g),n&&(k.cliBridge=!0),k}o(Po,"validateProviderEntry");function Ht(e){if(!O(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=K(e.updatedAt,"updatedAt");if(!O(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]=Po(i,r);return{version:1,updatedAt:t,providers:n}}o(Ht,"validateProviderCapabilitiesJson");var Do=Object.freeze({native:ee,"image-input-native":Et,"cli-bridge":me,"image-input-cli-bridge":It}),we=null;function No(){if(process.env.KODAX_BUNDLED==="true")return H.join(H.dirname(process.execPath),"provider-capabilities.json");let e=H.dirname($o(import.meta.url)),t=[H.join(e,"provider-capabilities.json"),H.join(H.dirname(e),"provider-capabilities.json")];for(let n of t)if(Mo(n))return n;return t[0]}o(No,"resolveJsonPath");function Lo(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Vt(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Vt(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Lo,"deepFreezeSnapshot");function Vt(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)}o(Vt,"freezeReasoningProfile");function jo(e){if(e==="gemini-cli"){let t=q();return{model:t,models:ne().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=W();return{model:t,models:te().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(jo,"resolveCliBridgeModels");function Fo(e,t){let n=Do[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=jo(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(Fo,"buildSnapshot");function Gt(){if(we)return we;let e=No(),t;try{let i=Oo(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=Ht(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Lo(Fo(i,s));return we=Object.freeze(r),we}o(Gt,"getProviderSnapshots");import jp from"@anthropic-ai/sdk";var ve=Gt();var Jt=process.env.KODAX_PROVIDER??"zhipu-coding";var yi=[];function C(e){let t=pe(e),n=yi.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${mn(t)}
|
|
90
|
+
`)}catch{}}o(C,"emitKodaXDiagnostic");function mn(e){let t=pe(e),n=wi(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}o(mn,"formatKodaXDiagnostic");function wi(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)}}o(wi,"formatDiagnosticDetail");var re=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??vi,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))}},gn=0;function vi(){gn+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${gn}-${e}`}o(vi,"defaultNextSpanId");var hn=0;function bi(){hn+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${hn}-${e}`}o(bi,"defaultNextTraceId");function qe(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??bi)(),r=t(),i=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:i},c=!1,d,l,u=new re({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(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}o(qe,"createTrace");var ze=[];function He(e){for(let t of ze)try{t.onSpanStart(e)}catch{}}o(He,"_emitSpanStart");function Ve(e){for(let t of ze)try{t.onSpanEnd(e)}catch{}}o(Ve,"_emitSpanEnd");function Ge(e){for(let t of ze)try{t.onTraceEnd(e)}catch{}}o(Ge,"_emitTraceEnd");var be=class{static{o(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return qe({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:He,onSpanEnd:Ve,onTraceEnd:Ge})}},yn=new be;var Ri=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var Ih=new Set(Ri);var ke="ELECTRON_RUN_AS_NODE";var Se="data:text/javascript,delete%20process.env.ELECTRON_RUN_AS_NODE";var hy=String.raw`
|
|
91
|
+
using System;
|
|
92
|
+
using System.Runtime.InteropServices;
|
|
93
|
+
public static class KodaXWindowsJobMembership {
|
|
94
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
95
|
+
private struct BasicLimitInformation {
|
|
96
|
+
public long PerProcessUserTimeLimit;
|
|
97
|
+
public long PerJobUserTimeLimit;
|
|
98
|
+
public uint LimitFlags;
|
|
99
|
+
public UIntPtr MinimumWorkingSetSize;
|
|
100
|
+
public UIntPtr MaximumWorkingSetSize;
|
|
101
|
+
public uint ActiveProcessLimit;
|
|
102
|
+
public UIntPtr Affinity;
|
|
103
|
+
public uint PriorityClass;
|
|
104
|
+
public uint SchedulingClass;
|
|
105
|
+
}
|
|
106
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
107
|
+
private struct IoCounters {
|
|
108
|
+
public ulong ReadOperationCount;
|
|
109
|
+
public ulong WriteOperationCount;
|
|
110
|
+
public ulong OtherOperationCount;
|
|
111
|
+
public ulong ReadTransferCount;
|
|
112
|
+
public ulong WriteTransferCount;
|
|
113
|
+
public ulong OtherTransferCount;
|
|
114
|
+
}
|
|
115
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
116
|
+
private struct ExtendedLimitInformation {
|
|
117
|
+
public BasicLimitInformation BasicLimitInformation;
|
|
118
|
+
public IoCounters IoInfo;
|
|
119
|
+
public UIntPtr ProcessMemoryLimit;
|
|
120
|
+
public UIntPtr JobMemoryLimit;
|
|
121
|
+
public UIntPtr PeakProcessMemoryUsed;
|
|
122
|
+
public UIntPtr PeakJobMemoryUsed;
|
|
123
|
+
}
|
|
124
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
125
|
+
private static extern IntPtr OpenJobObjectW(uint desiredAccess, bool inheritHandle, string name);
|
|
126
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
127
|
+
private static extern bool IsProcessInJob(IntPtr process, IntPtr job, out bool result);
|
|
128
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
129
|
+
private static extern bool QueryInformationJobObject(
|
|
130
|
+
IntPtr job,
|
|
131
|
+
int informationClass,
|
|
132
|
+
out ExtendedLimitInformation information,
|
|
133
|
+
uint informationLength,
|
|
134
|
+
IntPtr returnLength);
|
|
135
|
+
[DllImport("kernel32.dll")]
|
|
136
|
+
private static extern IntPtr GetCurrentProcess();
|
|
137
|
+
[DllImport("kernel32.dll")]
|
|
138
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
139
|
+
public static bool IsCurrentProcessContained(string name) {
|
|
140
|
+
var job = OpenJobObjectW(4, false, name);
|
|
141
|
+
if (job == IntPtr.Zero) return false;
|
|
142
|
+
try {
|
|
143
|
+
bool inJob;
|
|
144
|
+
if (!IsProcessInJob(GetCurrentProcess(), job, out inJob) || !inJob) return false;
|
|
145
|
+
ExtendedLimitInformation limits;
|
|
146
|
+
if (!QueryInformationJobObject(
|
|
147
|
+
job,
|
|
148
|
+
9,
|
|
149
|
+
out limits,
|
|
150
|
+
(uint)Marshal.SizeOf(typeof(ExtendedLimitInformation)),
|
|
151
|
+
IntPtr.Zero)) return false;
|
|
152
|
+
return (limits.BasicLimitInformation.LimitFlags & 0x00002000) != 0;
|
|
153
|
+
} finally {
|
|
154
|
+
CloseHandle(job);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}`,yy=String.raw`
|
|
158
|
+
$ErrorActionPreference = 'Stop'
|
|
159
|
+
$source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
|
|
160
|
+
Add-Type -TypeDefinition $source
|
|
161
|
+
if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB_NAME)) {
|
|
162
|
+
[Console]::Out.Write('1')
|
|
163
|
+
} else {
|
|
164
|
+
[Console]::Out.Write('0')
|
|
165
|
+
}`,wy=String.raw`
|
|
91
166
|
using System;
|
|
92
167
|
using System.Runtime.InteropServices;
|
|
93
168
|
using System.Text;
|
|
@@ -174,26 +249,26 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
174
249
|
CloseHandle(snapshot);
|
|
175
250
|
}
|
|
176
251
|
}
|
|
177
|
-
}`,
|
|
252
|
+
}`,vy=Object.freeze({status:"terminated"}),by=Object.freeze({status:"already-exited"}),ky=Object.freeze({status:"unknown"});import{Jimp as Jy}from"jimp";var ns=Math.floor(3.75*1024*1024);var os=1440*60*1e3;import{fileURLToPath as Ps}from"url";import{dirname as Ms}from"path";var Os=Ps(import.meta.url),Zv=Ms(Os);import{readFile as js,readdir as Fs}from"fs/promises";import{join as X,relative as Ks}from"path";import An from"yaml";var $s=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function Ds(e){let t=e.split(`
|
|
178
253
|
`),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(`
|
|
179
|
-
`)}o(
|
|
254
|
+
`)}o(Ds,"sanitizeYaml");function Pn(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
|
|
180
255
|
`).replace(/\r/g,`
|
|
181
256
|
`).trimStart();if(!n.startsWith(`---
|
|
182
257
|
`)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
|
|
183
258
|
---
|
|
184
259
|
`,4);if(r===-1){let c=n.indexOf(`
|
|
185
|
-
---`,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=
|
|
186
|
-
`)}o(
|
|
260
|
+
---`,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=An.parse(i)??{}}catch{a=An.parse(Ds(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]}o(Pn,"parseYamlFrontmatter");function Mn(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}}o(Mn,"normalizeAllowedToolsString");function Ns(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}}}o(Ns,"normalizeYamlHookEntry");function Ls(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Ns(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}o(Ls,"normalizeYamlHookEntryList");function On(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of $s){let i=Ls(t[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}o(On,"normalizeYamlHookMap");function $n(e){let[t,n]=Pn(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:Mn(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:On(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}}o($n,"parseSkillMarkdown");async function xe(e,t){let n=X(e,"SKILL.md");try{let r=await js(n,"utf-8"),{frontmatter:i,body:s}=$n(r),[a,c,d,l,u]=await Promise.all([V(X(e,"scripts")),V(X(e,"references")),V(X(e,"assets")),V(X(e,"templates")),V(X(e,"resources"))]);return{...i,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},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return C({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}o(xe,"loadFullSkill");async function V(e,t=e){let n=[];try{let r=await Fs(e,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=X(e,i.name);if(i.isDirectory()){n.push(...await V(s,t));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:Ks(t,s).replace(/\\/g,"/")})}}catch{}return n}o(V,"loadSkillFiles");var Dn=64*1024,Nn=256*1024;var Ub=1024*1024;var vk=16*1024;var _k=16*1024;import{execSync as Sa}from"child_process";import xa from"path";var Ea=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"]);function Yn(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Ea)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}o(Yn,"isSingleSafeDynamicContextCommand");function Ia(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&xa.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Yn(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Yn(s))return!1}return!0}o(Ia,"isSafeDynamicContextCommand");function Qn(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}o(Qn,"parseArguments");var _e=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=Qn(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 l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}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.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Ia(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Sa(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}}};async function se(e,t,n){return new _e(n).resolve(e,t)}o(se,"resolveSkillContent");function Zn(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}o(Zn,"escapeXml");var nt=120;function Ce(e){return e.replace(/\\/g,"/")}o(Ce,"formatDisplayPath");function _a(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}))]}o(_a,"collectSupportFiles");function Ca(e){let t=_a(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}/: ${Ce(`${e.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of t.slice(0,nt))r.push(`- ${i}/${s.relativePath}: ${Ce(s.path)}`);return t.length>nt&&r.push(`- ... ${t.length-nt} more files under ${Ce(e.path)}`),r}o(Ca,"buildSupportFileContext");function Aa(e,t,n){let r=[];r.push(`<skill name="${Zn(e.name)}" location="${Zn(e.path)}">`),r.push(""),r.push(`Skill root: ${Ce(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=Ca(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(`
|
|
261
|
+
`)}o(Aa,"buildSkillBlock");async function rt(e,t,n){let r=await se(e.content,t,n);return{content:Aa(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}o(rt,"expandSkillForLLM");import{writeFile as or}from"node:fs/promises";import F from"node:path";import{existsSync as Pa}from"node:fs";import{mkdir as Ma,readFile as ot,readdir as Oa,stat as tr,writeFile as RS}from"node:fs/promises";import $a from"node:os";import $ from"node:path";import{fileURLToPath as nr,pathToFileURL as Da}from"node:url";import Na from"yaml";var G=null;async function j(){if(G)return G;let e=$.dirname(nr(import.meta.url)),t=[],n=$.resolve(e,"../../../index.js");if(Pa(n))return G=await import(Da(n).href),G;t.push(`relative SDK path not found: ${n}`);try{return G=await import(["@kodax-ai","kodax"].join("/")),G}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}.
|
|
187
262
|
Attempted:
|
|
188
263
|
- ${t.join(`
|
|
189
|
-
- `)}`)}o(j,"loadKodaXSDK");function
|
|
264
|
+
- `)}`)}o(j,"loadKodaXSDK");function La(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
|
|
190
265
|
`).replace(/\r/g,`
|
|
191
266
|
`).trimStart();if(!t.startsWith(`---
|
|
192
267
|
`))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
|
|
193
268
|
---
|
|
194
|
-
`,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()}}o(
|
|
269
|
+
`,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()}}o(La,"extractFrontmatter");function Ae(e){let{yamlText:t,body:n}=La(e),r=Na.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}o(Ae,"parseSkillMarkdown");async function ce(e){let t=$.join(e,"SKILL.md");if(!(await tr(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await ot(t,"utf8"),{frontmatter:i,body:s}=Ae(r);return{skillDir:$.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:i}}o(ce,"loadSkill");async function de(e){try{return await tr(e),!0}catch{return!1}}o(de,"pathExists");function Pe(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:ae(t),stddev:ae(Math.sqrt(n)),min:ae(Math.min(...e)),max:ae(Math.max(...e))}}o(Pe,"calculateStats");function ae(e,t=4){return Number(e.toFixed(t))}o(ae,"roundNumber");function Me(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}o(Me,"formatDelta");function er(e){try{return JSON.parse(e)}catch{return null}}o(er,"safeJsonParse");function J(e){let t=er(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:er(e.slice(n,r+1))}o(J,"extractJsonObject");async function P(e,t=null){try{return JSON.parse(await ot(e,"utf8"))}catch{return t}}o(P,"readJsonFile");async function Y(e,t){let n=$.dirname(nr(e));return ot($.resolve(n,t),"utf8")}o(Y,"loadRelativeText");function I(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)}
|
|
195
270
|
|
|
196
|
-
[truncated ${r} chars]`}o(I,"truncateText");function
|
|
271
|
+
[truncated ${r} chars]`}o(I,"truncateText");function rr(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?ae(n/t):0}}o(rr,"computePassSummary");async function it(e,t=e,n=[]){let r=await Oa(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=$.join(t,i.name);if(i.isDirectory()){await it(e,s,n);continue}i.isFile()&&n.push({absolutePath:s,relativePath:$.relative(e,s).replace(/\\/g,"/")})}return n}o(it,"collectFiles");function le(){return $.join($a.homedir(),".kodax","skills")}o(le,"getDefaultSkillsDir");async function R(e){return await Ma(e,{recursive:!0}),e}o(R,"ensureDirectory");function ja(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}o(ja,"titleFromSlug");function Fa(e,t){let n=ja(e);return`---
|
|
197
272
|
name: ${e}
|
|
198
273
|
description: ${t}
|
|
199
274
|
user-invocable: true
|
|
@@ -222,10 +297,10 @@ Describe the task this skill handles, the trigger boundary, and the expected out
|
|
|
222
297
|
- Put deeper guidance in \`references/\`.
|
|
223
298
|
- Put reusable templates or static files in \`assets/\`.
|
|
224
299
|
- Put repeatable helper scripts in \`scripts/\`.
|
|
225
|
-
`}o(
|
|
226
|
-
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}o(
|
|
300
|
+
`}o(Fa,"renderSkillTemplate");function Ka(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)}o(Ka,"renderEvalTemplate");async function Xa(e){let t=F.resolve(e.baseDir??le()),n=F.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await de(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await R(n),await R(F.join(n,"references")),await R(F.join(n,"assets")),await R(F.join(n,"scripts")),await or(F.join(n,"SKILL.md"),Fa(e.name,r),"utf8"),e.includeEvals!==!1&&(await R(F.join(n,"evals")),await or(F.join(n,"evals","evals.json"),`${Ka(e.name)}
|
|
301
|
+
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}o(Xa,"initSkill");function Ba(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}o(Ba,"parseArgs");async function ir(e=process.argv){let t=Ba(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 Xa(t);console.log(`Initialized ${n.skillDir}`)}o(ir,"main");var Ua=!1;Ua&&ir().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import sr from"node:path";var Wa=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function ue(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await ce(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=>!Wa.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=sr.basename(sr.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(u=>typeof u=="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}o(ue,"validateSkillDirectory");async function ar(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await ue(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)}o(ar,"main");var qa=!1;qa&&ar().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as st,writeFile as D}from"node:fs/promises";import v from"node:path";function za(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}o(za,"normalizeAssertion");function Ha(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}o(Ha,"countToolCalls");function Va(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)}o(Va,"countToolErrors");function Ga(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(`
|
|
227
302
|
`)}
|
|
228
|
-
`}o(
|
|
303
|
+
`}o(Ga,"renderTranscript");async function Ja(e,t){let n=v.dirname(v.resolve(t.evalsPath)),r=v.resolve(t.cwd??process.cwd()),i=[];for(let s of e??[]){let a=v.isAbsolute(s)?s:v.resolve(n,s),c=v.resolve(r,s),d=null,l=a;try{d=await st(a,"utf8")}catch{d=await st(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);i.push(`### ${s}
|
|
229
304
|
\`\`\`
|
|
230
305
|
${d}
|
|
231
306
|
\`\`\`
|
|
@@ -235,15 +310,15 @@ ${i.join(`
|
|
|
235
310
|
|
|
236
311
|
`)}
|
|
237
312
|
|
|
238
|
-
`}o(
|
|
313
|
+
`}o(Ja,"readInputFiles");async function Ya(e,t){let n=String(e.prompt??e.query??"").trim();return`${await Ja(e.files,t)}${n}`.trim()}o(Ya,"buildEvalPrompt");async function Qa(e,t){let{runKodaX:n,estimateTokens:r}=await j(),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:v.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-i}}o(Qa,"defaultRunAgent");async function Za(e,t,n,r){return e==="with_skill"?(await rt(t,n,{workingDirectory:v.resolve(r.cwd??process.cwd()),projectRoot:v.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}o(Za,"prepareConfigPrompt");async function ec(e,t,n,r,i){let s=v.join(e,"outputs");await R(s);let a={total_tool_calls:Ha(i.result.messages),errors_encountered:Va(i.result.messages),output_chars:i.result.lastText.length};await D(v.join(s,"result.md"),`${i.result.lastText}
|
|
239
314
|
`,"utf8"),await D(v.join(s,"prompt.txt"),`${r}
|
|
240
|
-
`,"utf8"),await D(v.join(e,"transcript.md"),
|
|
315
|
+
`,"utf8"),await D(v.join(e,"transcript.md"),Ga(r,i.result),"utf8"),await D(v.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:i.result.sessionId,...a},null,2)}
|
|
241
316
|
`,"utf8"),await D(v.join(s,"messages.json"),`${JSON.stringify(i.result.messages,null,2)}
|
|
242
317
|
`,"utf8"),await D(v.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)}
|
|
243
318
|
`,"utf8"),await D(v.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)}
|
|
244
|
-
`,"utf8")}o(
|
|
245
|
-
`,"utf8");let p=await
|
|
246
|
-
`;t.output?(await D(t.output,r,"utf8"),console.log(`Wrote ${v.resolve(t.output)}`)):process.stdout.write(r)}o(
|
|
319
|
+
`,"utf8")}o(ec,"writeRunArtifacts");async function tc(e,t=Qa){let n=await xe(v.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=v.resolve(e.workspaceDir);await R(r);let i=JSON.parse(await st(e.evalsPath,"utf8")),s=Array.isArray(i.evals)?i.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=v.join(r,`eval-${l}`);await R(f),await D(v.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(za).filter(Boolean)},null,2)}
|
|
320
|
+
`,"utf8");let p=await Ya(u,e),g={};for(let m of a){let _=v.join(f,m);await R(_),g[m]=[];for(let k=1;k<=c;k+=1){let h=v.join(_,`run-${k}`);await R(h);let S=await Za(m,n,p,e),w=await t(S,{...e,configName:m,evalItem:u,runIndex:k});await ec(h,m,u,S,w),g[m].push({run_id:`run-${k}`,session_id:w.result.sessionId,success:w.result.success,total_tokens:w.totalTokens,duration_ms:w.durationMs,output_chars:w.result.lastText.length})}}d.push({eval_id:u.id??l,prompt:u.prompt??u.query??"",configs:g})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}o(tc,"runEvalWorkspace");function nc(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}o(nc,"parseArgs");async function cr(e=process.argv){let t=nc(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 tc(t),r=`${JSON.stringify(n,null,2)}
|
|
321
|
+
`;t.output?(await D(t.output,r,"utf8"),console.log(`Wrote ${v.resolve(t.output)}`)):process.stdout.write(r)}o(cr,"main");var rc=!1;rc&&cr().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as oc,readFile as at,writeFile as lr}from"node:fs/promises";import b from"node:path";function U(e){return String(e??"").trim()}o(U,"normalizeExpectationText");function ur(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(i=>typeof i=="string"?U(i):i&&typeof i=="object"&&typeof i.text=="string"?U(i.text):"").filter(Boolean);if(n.length>0)return n;let r=U(e?.expected_output);return r?[r]:[]}o(ur,"normalizeExpectedRubric");function ct(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(ct,"normalizeStringArray");function dr(e,t){return{text:U(e?.text??t),passed:e?.passed===!0,evidence:U(e?.evidence)}}o(dr,"normalizeExpectationEntry");function ic(e,t){let n=J(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],i=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:U(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){i.push({text:a,passed:!1,evidence:""});continue}s.add(c),i.push(dr(r[c],a))}if(t.length===0)for(let a of r){let c=dr(a,"");c.text&&i.push(c)}return{overall_summary:U(n.overall_summary),expectations:i,user_notes_summary:{uncertainties:ct(n.user_notes_summary?.uncertainties),needs_review:ct(n.user_notes_summary?.needs_review),workarounds:ct(n.user_notes_summary?.workarounds)}}}o(ic,"normalizeParsedGrading");async function dt(e){return(await oc(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>b.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(dt,"listDirectories");async function sc(e){let t=b.dirname(e),n=b.dirname(t),r=b.basename(t),i=b.basename(e),s=b.join(e,"outputs"),a=await P(b.join(n,"eval_metadata.json"),{}),c=await at(b.join(s,"result.md"),"utf8").catch(()=>""),d=await at(b.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await at(b.join(e,"transcript.md"),"utf8").catch(()=>""),u=await P(b.join(s,"metrics.json"),{}),f=await P(b.join(e,"result.json"),{}),p=await P(b.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:i,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:p}}o(sc,"loadRunContext");function ac(e){let t=ur(e.evalMetadata),n=t.length>0?t.map((r,i)=>`${i+1}. ${r}`).join(`
|
|
247
322
|
`):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
|
|
248
323
|
|
|
249
324
|
Return JSON with this shape:
|
|
@@ -289,12 +364,12 @@ ${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.executio
|
|
|
289
364
|
|
|
290
365
|
## Transcript Excerpt
|
|
291
366
|
${I(e.transcript,5e3)}
|
|
292
|
-
`}o(
|
|
293
|
-
`,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}o(
|
|
294
|
-
`,"utf8"),a}o(
|
|
295
|
-
`)}o(
|
|
296
|
-
`)}o(
|
|
297
|
-
`),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}o(
|
|
367
|
+
`}o(ac,"buildGradingPrompt");async function fr(e,t){let{runKodaX:n}=await j();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:b.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(fr,"defaultRunJudge");async function cc(e,t,n=fr){let r=await sc(b.resolve(e)),i=ur(r.evalMetadata),s=await Y(import.meta.url,"../agents/grader.md"),a=ac({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=ic(c,i),l={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},u={summary:rr(d.expectations),expectations:d.expectations,execution_metrics:l,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 lr(b.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
|
|
368
|
+
`,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}o(cc,"gradeRun");async function dc(e,t=fr){let n=b.resolve(e.workspaceDir);await R(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),i=[],s=[];for(let c of await dt(n))if(b.basename(c).startsWith("eval-"))for(let d of await dt(c)){let l=b.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await dt(d)){if(!b.basename(u).startsWith("run-"))continue;let f=b.join(u,"grading.json");if(await P(f,null)&&e.overwrite!==!0){s.push(b.relative(n,u).replace(/\\/g,"/"));continue}let g=await cc(u,e,t);i.push({run:b.relative(n,u).replace(/\\/g,"/"),summary:g.grading.summary,config:g.grading.meta.config,eval_id:g.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 lr(b.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
|
|
369
|
+
`,"utf8"),a}o(dc,"gradeWorkspace");function lc(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",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==="--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}o(lc,"parseArgs");async function pr(e=process.argv){let t=lc(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 dc(t);process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
370
|
+
`)}o(pr,"main");var uc=!1;uc&&pr().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as pt}from"node:fs/promises";import N from"node:path";import{readFile as fc,readdir as pc,stat as mc,writeFile as mr}from"node:fs/promises";import T from"node:path";async function lt(e){return JSON.parse(await fc(e,"utf8"))}o(lt,"readJson");async function gc(e){try{return await mc(e),!0}catch{return!1}}o(gc,"pathExists");async function ut(e){return(await pc(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(ut,"listDirectories");async function Oe(e){let t=await gc(T.join(e,"runs"))?T.join(e,"runs"):e,n=(await ut(t)).filter(i=>T.basename(i).startsWith("eval-")),r={};for(let i of n){let s=T.join(i,"eval_metadata.json"),c=(await lt(s).catch(()=>({}))).eval_id??T.basename(i);for(let d of await ut(i)){let l=T.basename(d),u=(await ut(d)).filter(f=>T.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){let p=await lt(T.join(f,"grading.json")).catch(()=>null);if(!p)continue;let g=await lt(T.join(f,"timing.json")).catch(()=>({}));r[l].push({eval_id:c,run_id:T.basename(f),pass_rate:p.summary?.pass_rate??0,passed:p.summary?.passed??0,failed:p.summary?.failed??0,total:p.summary?.total??0,time_seconds:g.total_duration_seconds??p.timing?.total_duration_seconds??0,tokens:g.total_tokens??p.execution_metrics?.output_chars??0,tool_calls:p.execution_metrics?.total_tool_calls??0,errors:p.execution_metrics?.errors_encountered??0,expectations:Array.isArray(p.expectations)?p.expectations:[],notes:[...p.user_notes_summary?.uncertainties??[],...p.user_notes_summary?.needs_review??[],...p.user_notes_summary?.workarounds??[]]})}}}}return r}o(Oe,"loadRunResults");function hc(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:Pe(a.map(c=>Number(c.pass_rate??0))),time_seconds:Pe(a.map(c=>Number(c.time_seconds??0))),tokens:Pe(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:Me(r.pass_rate.mean-i.pass_rate.mean),time_seconds:Me(r.time_seconds.mean-i.time_seconds.mean),tokens:Me(r.tokens.mean-i.tokens.mean)}}}o(hc,"summarizeConfigs");function ft(e,t,n){let r=hc(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:T.resolve(e),configs:r.configs,delta:r.delta,runs:n}}o(ft,"buildBenchmarkDocument");function yc(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(`
|
|
371
|
+
`)}o(yc,"renderBenchmarkMarkdown");function wc(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}o(wc,"parseArgs");async function vc(){let{iterationDir:e,skillName:t}=wc(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Oe(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=ft(e,t,n),i=T.join(e,"benchmark.json"),s=T.join(e,"benchmark.md");await mr(i,JSON.stringify(r,null,2)),await mr(s,`${yc(r)}
|
|
372
|
+
`),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}o(vc,"main");var bc=!1;bc&&vc().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function $e(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o($e,"normalizeStringArray");function kc(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}o(kc,"summarizeFailureClusters");function Sc(e,t,n){let r=J(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:$e(r.key_findings),variance_hotspots:$e(r.variance_hotspots),suggested_actions:$e(r.suggested_actions),watchouts:$e(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}}o(Sc,"normalizeAnalysisResult");function xc(e){return`${e.agentInstructions.trim()}
|
|
298
373
|
|
|
299
374
|
Return JSON with this shape:
|
|
300
375
|
{
|
|
@@ -312,12 +387,12 @@ ${I(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.config
|
|
|
312
387
|
|
|
313
388
|
## Failure Clusters
|
|
314
389
|
${I(JSON.stringify(e.failureClusters,null,2),8e3)}
|
|
315
|
-
`}o(
|
|
390
|
+
`}o(xc,"buildAnalysisPrompt");async function Ec(e,t){let{runKodaX:n}=await j();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:N.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Ec,"defaultRunAnalyst");function Ic(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(`
|
|
316
391
|
`)}
|
|
317
|
-
`}o(
|
|
318
|
-
`,"utf8")}let s=await Oe(n),a=
|
|
319
|
-
`,"utf8"),await pt(p,
|
|
320
|
-
`)}o(
|
|
392
|
+
`}o(Ic,"renderAnalysisMarkdown");async function Rc(e,t=Ec){let n=N.resolve(e.workspaceDir),r=N.resolve(e.benchmarkPath??N.join(n,"benchmark.json")),i=await P(r,null);if(!i){let g=await Oe(n);if(Object.keys(g).length===0)throw new Error(`No benchmark data found in ${n}`);i=ft(n,e.skillName??N.basename(n),g),await pt(r,`${JSON.stringify(i,null,2)}
|
|
393
|
+
`,"utf8")}let s=await Oe(n),a=kc(s),c=await Y(import.meta.url,"../agents/analyzer.md"),d=xc({agentInstructions:c,benchmark:i,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:i}),u=Sc(l,i,a),f=N.resolve(e.outputPath??N.join(n,"analysis.json")),p=N.resolve(e.markdownPath??N.join(n,"analysis.md"));return await pt(f,`${JSON.stringify(u,null,2)}
|
|
394
|
+
`,"utf8"),await pt(p,Ic(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:p}}o(Rc,"analyzeBenchmark");function Tc(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",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==="--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}o(Tc,"parseArgs");async function gr(e=process.argv){let t=Tc(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 Rc(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
|
|
395
|
+
`)}o(gr,"main");var _c=!1;_c&&gr().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Cc,readFile as hr,writeFile as yr}from"node:fs/promises";import x from"node:path";async function gt(e){return(await Cc(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>x.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(gt,"listDirectories");function mt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(mt,"normalizeStringArray");function Ac(e){let t=J(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:mt(t.strengths_a),strengths_b:mt(t.strengths_b),risks:mt(t.risks)}}o(Ac,"normalizeComparisonResult");async function Pc(e,t,n,r){let i=(await gt(x.join(e,t))).filter(f=>x.basename(f).startsWith("run-")),s=(await gt(x.join(e,n))).filter(f=>x.basename(f).startsWith("run-")),a=i[r],c=s[r];if(!a||!c)return null;let d=await P(x.join(e,"eval_metadata.json"),{}),l=await hr(x.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await hr(x.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:x.basename(a),configName:t,output:l},runB:{runDir:c,runId:x.basename(c),configName:n,output:u}}}o(Pc,"loadComparisonPair");function Mc(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
|
|
321
396
|
|
|
322
397
|
Return JSON with this shape:
|
|
323
398
|
{
|
|
@@ -345,15 +420,15 @@ ${I(t.A.output,12e3)}
|
|
|
345
420
|
|
|
346
421
|
## Candidate B
|
|
347
422
|
${I(t.B.output,12e3)}
|
|
348
|
-
`}o(
|
|
423
|
+
`}o(Mc,"buildComparisonPrompt");async function Oc(e,t){let{runKodaX:n}=await j();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:x.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Oc,"defaultRunComparator");function $c(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}o($c,"mapWinnerToConfig");function Dc(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(`
|
|
349
424
|
`)}
|
|
350
|
-
`}o(
|
|
351
|
-
`,"utf8"),await
|
|
352
|
-
`)}o(
|
|
425
|
+
`}o(Dc,"renderComparisonMarkdown");async function Nc(e,t=Oc){let n=x.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 Y(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await gt(n))if(x.basename(f).startsWith("eval-"))for(let p=0;p<s;p+=1){let g=await Pc(f,r,i,p);if(!g)break;let m=c.length%2===0,_=Mc({agentInstructions:a,evalMetadata:g.evalMetadata,runA:g.runA,runB:g.runB,presentPrimaryFirst:m}),k=await t(_,{...e,workspaceDir:n,evalDir:f,pairIndex:p,configA:r,configB:i}),h=Ac(k),S=$c(h.winner,m,r,i);c.push({index:c.length+1,eval_id:g.evalMetadata.eval_id??null,eval_name:g.evalMetadata.eval_name??null,run_a:x.relative(n,g.runA.runDir).replace(/\\/g,"/"),run_b:x.relative(n,g.runB.runDir).replace(/\\/g,"/"),presented_as:m?{A:r,B:i}:{A:i,B:r},winner_label:h.winner,winner_config:S,confidence:h.confidence,rationale:h.rationale,strengths_a:h.strengths_a,strengths_b:h.strengths_b,risks:h.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(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===i).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=x.resolve(e.outputPath??x.join(n,"comparison.json")),u=x.resolve(e.markdownPath??x.join(n,"comparison.md"));return await yr(l,`${JSON.stringify(d,null,2)}
|
|
426
|
+
`,"utf8"),await yr(u,Dc(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}o(Nc,"compareWorkspace");function Lc(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",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==="--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}o(Lc,"parseArgs");async function wr(e=process.argv){let t=Lc(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 Nc(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
|
|
427
|
+
`)}o(wr,"main");var jc=!1;jc&&wr().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Fc,writeFile as Kc}from"node:fs/promises";import{createHash as Xc}from"node:crypto";import ht from"node:path";import{zipSync as Bc,strToU8 as Uc}from"fflate";var Wc=".kodax-package.json";function qc(e){return e instanceof Uint8Array?e:new Uint8Array(e)}o(qc,"toUint8Array");function zc(e){return Xc("sha256").update(e).digest("hex")}o(zc,"sha256");function Hc(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."}}o(Hc,"createPackageManifest");async function Vc(e,t={}){let n=await ue(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
|
|
353
428
|
- ${n.errors.join(`
|
|
354
|
-
- `)}`);let r=await ce(e),i=await it(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let l=
|
|
429
|
+
- `)}`);let r=await ce(e),i=await it(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let l=qc(await Fc(d.absolutePath));s.push({...d,bytes:l,sha256:zc(l)})}let a=Hc(r,s,t),c={[Wc]:Uc(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:Bc(c,{level:6})}}o(Vc,"buildSkillPackage");async function Gc(e,t,n={}){let r=await Vc(e,n);return await Kc(t,r.bytes),{...r,outputPath:ht.resolve(t)}}o(Gc,"writeSkillPackage");function Jc(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}o(Jc,"parseArgs");async function vr(e=process.argv){let t=Jc(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await ce(t.skillDir),r=t.output??ht.join(ht.dirname(t.skillDir),`${n.frontmatter.name}.skill`),i=await Gc(t.skillDir,r);console.log(`Wrote ${i.outputPath}`)}o(vr,"main");var Yc=!1;Yc&&vr().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as Qc,mkdir as yt,readFile as Sr,rm as xr,stat as Zc,writeFile as ed}from"node:fs/promises";import M from"node:path";import{strFromU8 as br,unzipSync as td}from"fflate";var kr=".kodax-package.json";function nd(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}o(nd,"normalizeArchivePath");function rd(e){let t=nd(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}o(rd,"assertSafeArchivePath");function od(e){return/\.(skill|zip)$/i.test(e)}o(od,"isZipLike");function id(e){let t=td(e),n=Object.entries(t).map(([l,u])=>({relativePath:rd(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let i=Ae(br(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(l=>l.relativePath===kr),d=c?JSON.parse(br(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==kr)}}o(id,"readSkillPackageBuffer");async function sd(e,t){if(await de(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await xr(e,{recursive:!0,force:!0})}await yt(e,{recursive:!0})}o(sd,"ensureInstallTarget");async function ad(e,t={}){let n=M.resolve(t.skillsDir??le()),r=id(await Sr(e)),i=M.join(n,r.skillName);await sd(i,t.force===!0);for(let s of r.entries){let a=M.join(i,s.relativePath);await yt(M.dirname(a),{recursive:!0}),await ed(a,s.bytes)}return{skillName:r.skillName,installedTo:i,source:M.resolve(e),manifest:r.manifest}}o(ad,"installSkillArchive");async function cd(e,t={}){let n=await ue(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
|
|
355
430
|
- ${n.errors.join(`
|
|
356
|
-
- `)}`);let r=M.join(e,"SKILL.md"),i=Ae(await
|
|
431
|
+
- `)}`);let r=M.join(e,"SKILL.md"),i=Ae(await Sr(r,"utf8")),s=M.resolve(t.skillsDir??le()),a=M.join(s,i.frontmatter.name);if(await de(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await xr(a,{recursive:!0,force:!0})}return await yt(s,{recursive:!0}),await Qc(e,a,{recursive:!0}),{skillName:i.frontmatter.name,installedTo:a,source:M.resolve(e),manifest:null}}o(cd,"installSkillDirectory");async function dd(e,t={}){let n=M.resolve(e),r=await Zc(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return cd(n,t);if(r.isFile()&&od(n))return ad(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}o(dd,"installSkill");function ld(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}o(ld,"parseArgs");async function Er(e=process.argv){let t=ld(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 dd(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}o(Er,"main");var ud=!1;ud&&Er().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var _E=1440*60*1e3;var DE=5*6e4;var xI=new Intl.Segmenter("zh-CN",{granularity:"word"});var RR=String.raw`const TOOL_NAME = 'echo_tool';
|
|
357
432
|
const RESOURCE_URI = 'memory://guide';
|
|
358
433
|
const PROMPT_NAME = 'draft_prompt';
|
|
359
434
|
let buffer = '';
|
|
@@ -533,9 +608,9 @@ process.stdin.on('data', (chunk) => {
|
|
|
533
608
|
|
|
534
609
|
process.on('SIGTERM', () => process.exit(0));
|
|
535
610
|
process.on('SIGINT', () => process.exit(0));
|
|
536
|
-
`;var
|
|
611
|
+
`;var Cr=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),Md=0,Od=0,Ar=o(e=>{let t=e==="label"?++Md:++Od,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function $d(e,t,n){let r=Ar("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}o($d,"appendLabel");async function Dd(e,t,n){let r=Ar("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}o(Dd,"appendArtifact");function Nd(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(Nd,"buildLineageTree");var Ld=Object.freeze({name:"lineage",entryTypes:Cr,operators:Object.freeze({label:o((async(e,...t)=>{let[n,r]=t;return $d(e,n,r)}),"label"),attachArtifact:o((async(e,...t)=>{let[n,r]=t;return Dd(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:o(e=>Nd(e),"buildLineageTree")})});var zd=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"]),vt=zd,De=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
|
|
537
612
|
|
|
538
|
-
`;var
|
|
613
|
+
`;var WT=De.trimEnd();var qT=16*1024;var Yd={enabled:!1,maxAge:20,protectedTools:Array.from(vt)};import ZC from"typescript";var gP=new Intl.Segmenter("en",{granularity:"grapheme"});var _l=Il(import.meta.url),aO=process.env.KODAX_BUNDLED==="true"?void 0:Tl(_l.resolve("@anthropic-ai/sandbox-runtime")).href;var cO=[".ssh",".aws",".azure",".gnupg",".kube",".docker",".kodax",".agents",".codex",".claude",".gemini",".direnv",".terraform.d",y.join(".cargo","credentials.toml"),y.join(".config","gcloud"),y.join(".config","gh"),y.join(".config","openai"),y.join(".config","anthropic"),".gitconfig",y.join(".config","git","config"),".terraformrc",y.join(".config","pypoetry","auth.toml"),".condarc",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",y.join(".config","fish","config.fish"),y.join(".config","fish","fish_variables"),".bash_history",".zsh_history",y.join(".m2","settings.xml"),y.join(".m2","settings-security.xml"),y.join(".gradle","gradle.properties"),y.join(".nuget","NuGet","NuGet.Config"),y.join(".pip","pip.conf"),y.join(".config","pip","pip.conf"),y.join(".cache","huggingface","token"),y.join(".huggingface","token"),y.join(".config","rclone","rclone.conf"),y.join(".local","share","keyrings"),y.join("Library","Keychains"),y.join("AppData","Roaming","Microsoft","Protect"),y.join("AppData","Roaming","Microsoft","Credentials"),y.join("AppData","Roaming","Microsoft","Vault"),y.join("AppData","Local","Microsoft","Credentials"),y.join("AppData","Local","Microsoft","Protect"),y.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"],Lr=JSON.stringify(Se),kt=JSON.stringify(ke),Cl=String.raw`
|
|
539
614
|
const { spawn } = require('node:child_process');
|
|
540
615
|
const { writeSync } = require('node:fs');
|
|
541
616
|
const input = JSON.parse(Buffer.from(process.argv[2], 'base64').toString('utf8'));
|
|
@@ -560,7 +635,7 @@ child.once('error', (error) => {
|
|
|
560
635
|
child.once('exit', (code, signal) => {
|
|
561
636
|
process.exitCode = signal ? 1 : code ?? 1;
|
|
562
637
|
});
|
|
563
|
-
`,
|
|
638
|
+
`,Fr="eval(Buffer.from(process.argv[1],'base64').toString('utf8'))",Al=JSON.stringify(Fr),Kr=Buffer.from(Cl,"utf8").toString("base64"),Pl=JSON.stringify(Kr),dO=String.raw`
|
|
564
639
|
import { spawn } from 'node:child_process';
|
|
565
640
|
import { randomUUID } from 'node:crypto';
|
|
566
641
|
import { readFile, rm, writeFile } from 'node:fs/promises';
|
|
@@ -661,7 +736,7 @@ let normalFallbackAttempted = false;
|
|
|
661
736
|
const runDirect = async () => {
|
|
662
737
|
const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
|
|
663
738
|
const directArgs = internalElectronNode
|
|
664
|
-
? ['--import', ${
|
|
739
|
+
? ['--import', ${Lr}, ...request.args]
|
|
665
740
|
: request.args;
|
|
666
741
|
const directEnv = internalElectronNode
|
|
667
742
|
? { ...request.env, [${kt}]: '1' }
|
|
@@ -731,13 +806,13 @@ try {
|
|
|
731
806
|
: "'" + value.replaceAll("'", "'\"'\"'") + "'";
|
|
732
807
|
const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
|
|
733
808
|
const childArgs = internalElectronNode
|
|
734
|
-
? ['--import', ${
|
|
809
|
+
? ['--import', ${Lr}, ...request.args]
|
|
735
810
|
: request.args;
|
|
736
811
|
const command = [
|
|
737
812
|
quote(bootstrap),
|
|
738
813
|
'-e',
|
|
739
|
-
quote(${
|
|
740
|
-
${
|
|
814
|
+
quote(${Al}),
|
|
815
|
+
${Pl},
|
|
741
816
|
Buffer.from(JSON.stringify({
|
|
742
817
|
command: request.command,
|
|
743
818
|
args: childArgs,
|
|
@@ -823,7 +898,7 @@ try {
|
|
|
823
898
|
process.exitCode = 1;
|
|
824
899
|
}
|
|
825
900
|
}
|
|
826
|
-
`;function St(e){return e instanceof Error?e.message:String(e)}o(St,"errorText");function
|
|
827
|
-
`)}o(fe,"writeWorkspaceSessionResponse");async function
|
|
828
|
-
`,c=await
|
|
829
|
-
`)}return await
|
|
901
|
+
`;function St(e){return e instanceof Error?e.message:String(e)}o(St,"errorText");function Ml(){return process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath)}o(Ml,"sandboxJavaScriptCommand");var lO=5*6e4;function Ol(e,t){let n=e.lastIndexOf("--");if(n<0)throw new Error("ASRT Windows wrapper omitted its child separator.");let r=new Set;for(let c=0;c<n-1;c+=1){if(e[c]!=="--env")continue;let d=e[c+1]?.split("=",1)[0];d&&r.add(d.toLowerCase())}let i=[];for(let[c,d]of Object.entries(t)){if(d===void 0)continue;if(!c||c.includes("=")||c.includes("\0")||d.includes("\0"))throw new Error("Invalid environment entry for ASRT Windows child.");let l=c.toLowerCase();r.has(l)&&l!=="path"&&l!=="pathext"||i.push("--env",`${c}=${d}`)}let s=[...e.slice(0,n),...i,...e.slice(n)];if(s.reduce((c,d)=>c+d.length+3,0)>3e4)throw new Error("ASRT Windows child environment exceeds the CreateProcess command-line limit.");return s}o(Ol,"withWindowsSandboxChildEnvironment");async function $l(e,t){let n=e.bootstrapCommand??Ml(),r=n===process.execPath&&process.versions.electron!==void 0,i=e.command===process.execPath&&process.versions.electron!==void 0,s=i?["--import",Se,...e.args]:e.args,a=i||r?{...e.env,[ke]:"1"}:e.env,c=o(l=>process.platform==="win32"?`"${l.replaceAll('"','""')}"`:`'${l.replaceAll("'",`'"'"'`)}'`,"quote"),d=[c(n),"-e",c(Fr),Kr,Buffer.from(JSON.stringify({command:e.command,args:s,cwd:e.cwd,targetStartedMarker:t}),"utf8").toString("base64")].join(" ");if(process.platform==="win32"){let l={filesystem:{denyRead:e.config.filesystem.denyRead,allowRead:[],allowWrite:[],denyWrite:e.config.filesystem.denyWrite}},u=await Q.wrapWithSandboxArgv(d,"cmd",l,void 0,e.cwd),f=Ol(u.argv,a);return{executable:f[0],args:f.slice(1),env:u.env,shell:!1}}return{executable:await Q.wrapWithSandbox(d),args:[],env:a,shell:!0}}o($l,"wrapSandboxTarget");async function jr(){try{Q.cleanupAfterCommand()}catch{}await Q.reset().catch(()=>{})}o(jr,"resetSandboxManagerBestEffort");function fe(e){Sl(3,`${JSON.stringify(e)}
|
|
902
|
+
`)}o(fe,"writeWorkspaceSessionResponse");async function Xr(e){try{let t=JSON.parse(await xl(e,"utf8"));await El(e,{force:!0}),await Q.initialize(t.config,async()=>!0),fe({type:"ready",ok:!0});let n=Rl.createInterface({input:process.stdin}),r=Promise.resolve();for await(let i of n){let s=JSON.parse(i);r=r.then(async()=>{try{if(s.type==="cleanup"){Q.cleanupAfterCommand(),fe({id:s.id,type:"result",ok:!0});return}if(!s.request)throw new Error("Missing workspace wrap request.");let a=s.request.targetStartedMarker??`\0KODAX_ASRT_TARGET_STARTED:${kl()}\0
|
|
903
|
+
`,c=await $l(s.request,a);fe({id:s.id,type:"result",ok:!0,invocation:c})}catch(a){fe({id:s.id,type:"result",ok:!1,error:St(a)})}})}return await r,await jr(),0}catch(t){try{fe({type:"ready",ok:!1,error:St(t)})}catch(n){process.stderr.write(`ASRT workspace session could not report startup failure: ${St(n)}
|
|
904
|
+
`)}return await jr(),1}}o(Xr,"runAsrtWorkspaceSessionProcess");var Br=process.argv[2];if(!Br)throw new Error("Missing ASRT workspace session initialization file.");process.exitCode=await Xr(Br);
|