@kodax-ai/kodax 0.7.82 → 0.7.84
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 +59 -0
- package/README.md +20 -0
- package/README_CN.md +10 -0
- package/dist/chunks/{agent-4UTCCMD5.js → agent-VMXNVYRK.js} +1 -1
- package/dist/chunks/argument-completer-QCS6GUAE.js +2 -0
- package/dist/chunks/{chunk-WMYCNECP.js → chunk-4ZI2CPUQ.js} +142 -67
- package/dist/chunks/{chunk-7ZN2MLVM.js → chunk-726WJGGY.js} +1 -1
- package/dist/chunks/{chunk-S6JTWDN6.js → chunk-A7L7XTUH.js} +1 -1
- package/dist/chunks/{chunk-XTCDCU2Q.js → chunk-BBBS644N.js} +4 -4
- package/dist/chunks/{chunk-JDZFNWMZ.js → chunk-ET2BMEQQ.js} +2 -2
- package/dist/chunks/{chunk-ZOBNDWOA.js → chunk-F44YYR6Z.js} +1 -1
- package/dist/chunks/{chunk-GIVYTXQW.js → chunk-GRLC3N46.js} +155 -155
- package/dist/chunks/{chunk-VQBJMNFD.js → chunk-OHZFGQEH.js} +2 -2
- package/dist/chunks/{chunk-ZZUIO5KL.js → chunk-TDJS5SFS.js} +1 -1
- package/dist/chunks/{chunk-NINELPXH.js → chunk-WTYAZOWO.js} +1 -1
- package/dist/chunks/chunk-WXHHZZRJ.js +379 -0
- package/dist/chunks/{chunk-KH2HED37.js → chunk-ZVPTDYDI.js} +2 -2
- package/dist/chunks/{compaction-config-IDL5JQVI.js → compaction-config-QTMFP7AF.js} +1 -1
- package/dist/chunks/{construction-bootstrap-STYUR6XA.js → construction-bootstrap-EVQ6VWSX.js} +1 -1
- package/dist/chunks/{dist-RKBHBUHV.js → dist-XRH6CRLL.js} +1 -1
- package/dist/chunks/{host-RF2IX3N6.js → host-F4TPD6WY.js} +1 -1
- package/dist/chunks/{run-manager-WE2KPAKZ.js → run-manager-PYD46OGY.js} +1 -1
- package/dist/chunks/{utils-Z2RSAENX.js → utils-TOTTXU2I.js} +1 -1
- package/dist/index.d.ts +13 -13
- package/dist/index.js +5 -5
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1716 -1292
- package/dist/kodax_resume.js +140 -65
- package/dist/runtime-worker.js +1567 -1143
- package/dist/sandbox-workspace-session.js +121 -46
- package/dist/sdk-a2a.d.ts +8 -8
- package/dist/sdk-a2a.js +5 -5
- package/dist/sdk-agent.d.ts +16 -9
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +13 -13
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +11 -11
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +55 -10
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +120 -45
- package/dist/types-chunks/{bash-prefix-extractor.d-CJM7OY-L.d.ts → bash-prefix-extractor.d-CkdGL4rM.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-B7yoH4dM.d.ts → capsule.d-7wQ_kM1C.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-CYNuR2n9.d.ts → controller.d-CesRxFL5.d.ts} +2 -0
- package/dist/types-chunks/{guardrail.d-fM3mn4Op.d.ts → guardrail.d-KaIeVree.d.ts} +2 -2
- package/dist/types-chunks/{history-retrieval.d-BDI-ZMvY.d.ts → history-retrieval.d-CbCls7r0.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-i10kvYFs.d.ts → public-api.d-DpRj8b7d.d.ts} +2 -2
- package/dist/types-chunks/{repl.d-Cs3eqGVT.d.ts → repl.d-DWeC3PLW.d.ts} +5 -5
- package/dist/types-chunks/{run-manager.d-CodHf6rw.d.ts → run-manager.d-BXBkLT0A.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-CRXu5xNs.d.ts → sdk-session-DEtS6u20.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-DfeSUjjM.d.ts → shell-command-sets.d-P2h4_KKL.d.ts} +1 -1
- package/dist/types-chunks/{types.d-DKs4tfSd.d.ts → types.d-0m3PS7Ng.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DIXZFauU.d.ts → types.d-CUtMr2IG.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-CgITiLyc.d.ts → utils.d-C-eSIZ9n.d.ts} +4 -4
- package/docs/SDK_EMBEDDER_GUIDE.md +52 -8
- package/package.json +2 -1
- package/dist/chunks/argument-completer-N7ORRJBS.js +0 -2
- package/dist/chunks/chunk-PGTU7JQX.js +0 -30
package/dist/kodax_resume.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
var
|
|
2
|
+
var Wc=Object.defineProperty;var o=(e,t)=>Wc(e,"name",{value:t,configurable:!0});var At=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er,Qs,Zs=At(()=>{Er=class{static{o(this,"WebSocketStub")}},Qs=Er});var an,ea=At(()=>{"use strict";Zs();an=global;an.WebSocket||=Qs;an.window||=global;an.self||=global;an.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var ta,Ir,na=At(()=>{ta=o(()=>{},"noop"),Ir={initialize:ta,connectToDevTools:ta}});var Cg={};var ra=At(()=>{"use strict";ea();na();Ir.initialize();Ir.connectToDevTools()});import Je from"node:fs/promises";import Hw from"node:os";import Qe from"node:path";import R from"fs/promises";import Ns from"fs";import P from"path";import Cn from"path";import{createHash as Vc}from"crypto";import{execFile as Hc}from"child_process";import zc from"path";import{promisify as qc}from"util";var ov=qc(Hc);function In(e){if(!(!e||!e.trim()))return zc.resolve(e).replace(/\\/g,"/")}o(In,"normalizePath");function mo(e){let t=In(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=In(e.runtimeInfo?.executionCwd??t),r=In(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}o(mo,"resolveSessionRuntimeInfo");var Ze="_unknown",ho=80;function Gc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}o(Gc,"caseFold");function Yc(e){return Gc(Cn.resolve(e).replace(/\\/g,"/"))}o(Yc,"normalizeRoot");function go(e){return Vc("sha256").update(e).digest("hex").slice(0,10)}o(go,"shortHash");function Jc(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>ho?t.slice(t.length-ho):t}o(Jc,"slugify");function Qc(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=Yc(e),n=Jc(t),r=n?`${n}-${go(t)}`:go(t),i=Cn.basename(Cn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:i}}o(Qc,"deriveProjectKeyFromRoot");function yo(e){let t=mo({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Qc(n)}o(yo,"deriveProjectKeyFromData");import Zt from"node:fs/promises";import pt from"node:path";import{AsyncLocalStorage as Zc}from"node:async_hooks";var ed=new Zc;function Pt(e){let t=ed.getStore()?.credential;return t?et(e,t,new WeakMap):e}o(Pt,"redactScopedProviderCredential");function et(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(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(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]=et(a.value,t,n)}return i}o(et,"redactCredentialValue");import{AsyncLocalStorage as td}from"node:async_hooks";var Nv=new td;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},wo={...tt,multimodalSupport:"image-input"},Mt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},vo={...Mt,multimodalSupport:"image-input"};import fb from"@anthropic-ai/sdk";import{parse as Qv}from"partial-json";import Rb from"openai";import{ClientSideConnection as qb,PROTOCOL_VERSION as Vb,ndJsonStream as Gb}from"@agentclientprotocol/sdk";var Kb=Object.freeze({status:"terminated"}),Bb=Object.freeze({status:"already-exited"}),Xb=Object.freeze({status:"unknown"}),Ub=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 Co from"node:fs";import To from"node:os";import Ro from"node:path";var Sd="gpt-5.4",Ed="auto-gemini-3",Id=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Cd=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function _o(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(_o,"dedupePreserveOrder");function Td(){let e=Ro.join(To.homedir(),".codex","config.toml");try{return Co.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(Td,"readCodexConfiguredModel");function Rd(){let e=Ro.join(To.homedir(),".gemini","settings.json");try{let t=JSON.parse(Co.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(Rd,"readGeminiConfiguredModel");function Oe(){return Td()||Sd}o(Oe,"getCodexCliDefaultModel");function Ne(){return Rd()||Ed}o(Ne,"getGeminiCliDefaultModel");function nt(){return _o([Oe(),...Id])}o(nt,"getCodexCliKnownModels");function rt(){return _o([Ne(),...Cd])}o(rt,"getGeminiCliKnownModels");var Rk=Ne(),_k=rt();var Bk=Oe(),Xk=nt();import{existsSync as jd,readFileSync as Kd}from"node:fs";import De from"node:path";import{fileURLToPath as Bd}from"node:url";var Ao=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Po=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Oo=["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"],No=["max_tokens","max_completion_tokens"],$o=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Do=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ne,"isPlainObject");function ke(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(ke,"requireString");function $e(e,t){if(e!==void 0)return ke(e,t)}o($e,"optionalString");function jo(e,t){if(e!==void 0){if(typeof e!="string"||!No.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${No.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(jo,"optionalMaxOutputTokensField");function pe(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(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(D,"optionalBoolean");function Lo(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)=>ke(n,`${t}[${r}]`))}}o(Lo,"optionalStringArray");function Ad(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ke(i,`${t}.${r}`);return n}o(Ad,"optionalStringMap");function Pd(e,t){if(e!==void 0){if(typeof e!="string"||!Oo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Pd,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!Ao.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ao.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_n,"requireReasoningCapability");function Md(e,t){if(typeof e!="string"||!Po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Po.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Md,"requireEffortStrategy");function Od(e,t){if(e!==void 0){if(typeof e!="string"||!Mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Od,"optionalThinkingStrategy");function Fo(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Md(e.effortStrategy,`${t}.effortStrategy`),r=Pd(e.reasoningPreset,`${t}.reasoningPreset`),i=Od(e.thinkingStrategy,`${t}.thinkingStrategy`),s=$e(e.defaultEffort,`${t}.defaultEffort`),a=Ad(e.effortAliases,`${t}.effortAliases`),c=Lo(e.disabledEfforts,`${t}.disabledEfforts`),d=Lo(e.localRejectEfforts,`${t}.localRejectEfforts`),u=D(e.allowCustomEffort,`${t}.allowCustomEffort`),l=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),i!==void 0&&(y.thinkingStrategy=i),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...$e(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:$e(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return u!==void 0&&(y.allowCustomEffort=u),l!==void 0&&(y.supportsReasoningEffort=l),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}o(Fo,"validateReasoningProfile");function Ko(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?Fo(n,`${t}.reasoningProfile`):Fo(r,`${t}.reasoningCapabilityV2`)}o(Ko,"validateReasoningProfileField");function Nd(e,t){if(typeof e!="string"||!$o.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$o.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Nd,"requireProfileName");function $d(e,t){if(typeof e!="string"||!Do.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Do.join(", ")}, got ${JSON.stringify(e)}`);return e}o($d,"requireVerifyStrategy");function Dd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=$e(e.wireModel,`${t}.wireModel`),i=$e(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=jo(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),u=D(e.replayReasoningContent,`${t}.replayReasoningContent`),l=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=Ko(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),i!==void 0&&(g.displayName=i),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),u!==void 0&&(g.replayReasoningContent=u),l!==void 0&&(g.strictThinkingSignature=l),f!==void 0&&(g.streamMaxDurationMs=f),g}o(Dd,"validateModelDescriptor");function Ld(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=_n(i,`${t}.${r}`);return n}o(Ld,"validateModelReasoningCapabilities");function Fd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ko(e,`providers.${t}`),a=Nd(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=$d(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=pe(e.contextWindow,`providers.${t}.contextWindow`),u=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),l=jo(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Ld(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=$e(e.model,`providers.${t}.model`);if(n&&(g!==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&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Dd(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),u!==void 0&&(w.maxOutputTokens=u),l!==void 0&&(w.maxOutputTokensField=l),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}o(Fd,"validateProviderEntry");function Bo(e){if(!ne(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=ke(e.updatedAt,"updatedAt");if(!ne(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]=Fd(i,r);return{version:1,updatedAt:t,providers:n}}o(Bo,"validateProviderCapabilitiesJson");var Xd=Object.freeze({native:tt,"image-input-native":wo,"cli-bridge":Mt,"image-input-cli-bridge":vo}),Dt=null;function Ud(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Bd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(jd(n))return n;return t[0]}o(Ud,"resolveJsonPath");function Wd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Xo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Xo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Wd,"deepFreezeSnapshot");function Xo(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(Xo,"freezeReasoningProfile");function Hd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(Hd,"resolveCliBridgeModels");function zd(e,t){let n=Xd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=Hd(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(zd,"buildSnapshot");function Uo(){if(Dt)return Dt;let e=Ud(),t;try{let i=Kd(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=Bo(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Wd(zd(i,s));return Dt=Object.freeze(r),Dt}o(Uo,"getProviderSnapshots");import fx from"@anthropic-ai/sdk";var Lt=Uo();var Wo=process.env.KODAX_PROVIDER??"zhipu-coding";var Eu=[];function z(e){let t=Pt(e),n=Eu.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ai(t)}
|
|
90
|
-
`)}catch{}}o(z,"emitKodaXDiagnostic");function ai(e){let t=Pt(e),n=
|
|
89
|
+
}`;import Co from"node:fs";import To from"node:os";import Ro from"node:path";var Ed="gpt-5.4",Id="auto-gemini-3",Cd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Td=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function _o(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(_o,"dedupePreserveOrder");function Rd(){let e=Ro.join(To.homedir(),".codex","config.toml");try{return Co.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(Rd,"readCodexConfiguredModel");function _d(){let e=Ro.join(To.homedir(),".gemini","settings.json");try{let t=JSON.parse(Co.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(_d,"readGeminiConfiguredModel");function Oe(){return Rd()||Ed}o(Oe,"getCodexCliDefaultModel");function Ne(){return _d()||Id}o(Ne,"getGeminiCliDefaultModel");function nt(){return _o([Oe(),...Cd])}o(nt,"getCodexCliKnownModels");function rt(){return _o([Ne(),...Td])}o(rt,"getGeminiCliKnownModels");var _k=Ne(),Ak=rt();var Xk=Oe(),Uk=nt();import{existsSync as Kd,readFileSync as Bd}from"node:fs";import De from"node:path";import{fileURLToPath as Xd}from"node:url";var Ao=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Po=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Oo=["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"],No=["max_tokens","max_completion_tokens"],$o=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Do=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ne,"isPlainObject");function ke(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(ke,"requireString");function $e(e,t){if(e!==void 0)return ke(e,t)}o($e,"optionalString");function jo(e,t){if(e!==void 0){if(typeof e!="string"||!No.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${No.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(jo,"optionalMaxOutputTokensField");function pe(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(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(D,"optionalBoolean");function Lo(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)=>ke(n,`${t}[${r}]`))}}o(Lo,"optionalStringArray");function Pd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ke(i,`${t}.${r}`);return n}o(Pd,"optionalStringMap");function Md(e,t){if(e!==void 0){if(typeof e!="string"||!Oo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Md,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!Ao.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ao.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_n,"requireReasoningCapability");function Od(e,t){if(typeof e!="string"||!Po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Po.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Od,"requireEffortStrategy");function Nd(e,t){if(e!==void 0){if(typeof e!="string"||!Mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Nd,"optionalThinkingStrategy");function Fo(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Od(e.effortStrategy,`${t}.effortStrategy`),r=Md(e.reasoningPreset,`${t}.reasoningPreset`),i=Nd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=$e(e.defaultEffort,`${t}.defaultEffort`),a=Pd(e.effortAliases,`${t}.effortAliases`),c=Lo(e.disabledEfforts,`${t}.disabledEfforts`),d=Lo(e.localRejectEfforts,`${t}.localRejectEfforts`),u=D(e.allowCustomEffort,`${t}.allowCustomEffort`),l=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),i!==void 0&&(y.thinkingStrategy=i),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...$e(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:$e(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return u!==void 0&&(y.allowCustomEffort=u),l!==void 0&&(y.supportsReasoningEffort=l),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}o(Fo,"validateReasoningProfile");function Ko(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?Fo(n,`${t}.reasoningProfile`):Fo(r,`${t}.reasoningCapabilityV2`)}o(Ko,"validateReasoningProfileField");function $d(e,t){if(typeof e!="string"||!$o.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$o.join(", ")}, got ${JSON.stringify(e)}`);return e}o($d,"requireProfileName");function Dd(e,t){if(typeof e!="string"||!Do.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Do.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Dd,"requireVerifyStrategy");function Ld(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=$e(e.wireModel,`${t}.wireModel`),i=$e(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=jo(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),u=D(e.replayReasoningContent,`${t}.replayReasoningContent`),l=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=Ko(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),i!==void 0&&(g.displayName=i),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),u!==void 0&&(g.replayReasoningContent=u),l!==void 0&&(g.strictThinkingSignature=l),f!==void 0&&(g.streamMaxDurationMs=f),g}o(Ld,"validateModelDescriptor");function Fd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=_n(i,`${t}.${r}`);return n}o(Fd,"validateModelReasoningCapabilities");function jd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ko(e,`providers.${t}`),a=$d(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Dd(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=pe(e.contextWindow,`providers.${t}.contextWindow`),u=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),l=jo(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Fd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=$e(e.model,`providers.${t}.model`);if(n&&(g!==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&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Ld(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),u!==void 0&&(w.maxOutputTokens=u),l!==void 0&&(w.maxOutputTokensField=l),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}o(jd,"validateProviderEntry");function Bo(e){if(!ne(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=ke(e.updatedAt,"updatedAt");if(!ne(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]=jd(i,r);return{version:1,updatedAt:t,providers:n}}o(Bo,"validateProviderCapabilitiesJson");var Ud=Object.freeze({native:tt,"image-input-native":wo,"cli-bridge":Mt,"image-input-cli-bridge":vo}),Dt=null;function Wd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Xd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Kd(n))return n;return t[0]}o(Wd,"resolveJsonPath");function Hd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Xo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Xo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Hd,"deepFreezeSnapshot");function Xo(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(Xo,"freezeReasoningProfile");function zd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(zd,"resolveCliBridgeModels");function qd(e,t){let n=Ud[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=zd(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(qd,"buildSnapshot");function Uo(){if(Dt)return Dt;let e=Wd(),t;try{let i=Bd(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=Bo(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Hd(qd(i,s));return Dt=Object.freeze(r),Dt}o(Uo,"getProviderSnapshots");import px from"@anthropic-ai/sdk";var Lt=Uo();var Wo=process.env.KODAX_PROVIDER??"zhipu-coding";var Iu=[];function z(e){let t=Pt(e),n=Iu.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ai(t)}
|
|
90
|
+
`)}catch{}}o(z,"emitKodaXDiagnostic");function ai(e){let t=Pt(e),n=Cu(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}o(ai,"formatKodaXDiagnostic");function Cu(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(Cu,"formatDiagnosticDetail");var ot=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??Tu,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))}},ci=0;function Tu(){ci+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ci}-${e}`}o(Tu,"defaultNextSpanId");var di=0;function Ru(){di+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${di}-${e}`}o(Ru,"defaultNextTraceId");function Dn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Ru)(),r=t(),i=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:i},c=!1,d,u,l=new ot({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(l);let f={id:n,startedAt:r,rootSpan:l,metadata:s,get endedAt(){return d},get error(){return u??l.error},end(){c||(c=!0,d=t(),l.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}o(Dn,"createTrace");var Ln=[];function Fn(e){for(let t of Ln)try{t.onSpanStart(e)}catch{}}o(Fn,"_emitSpanStart");function jn(e){for(let t of Ln)try{t.onSpanEnd(e)}catch{}}o(jn,"_emitSpanEnd");function Kn(e){for(let t of Ln)try{t.onTraceEnd(e)}catch{}}o(Kn,"_emitTraceEnd");var Ft=class{static{o(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Dn({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:Fn,onSpanEnd:jn,onTraceEnd:Kn})}},ui=new Ft;var Nu=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var eI=new Set(Nu);var HI=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
|
+
}`,zI=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
|
+
}`,qI=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
|
+
}`,VI=Object.freeze({status:"terminated"}),GI=Object.freeze({status:"already-exited"}),YI=Object.freeze({status:"unknown"});import{Jimp as IC}from"jimp";var ul=Math.floor(3.75*1024*1024);var fl=1440*60*1e3;import{fileURLToPath as jl}from"url";import{dirname as Kl}from"path";var Bl=jl(import.meta.url),RR=Kl(Bl);import{readFile as zl,readdir as ql}from"fs/promises";import{join as xe,relative as Vl}from"path";import Ei from"yaml";var Xl=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function Ul(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(Ul,"sanitizeYaml");function Ii(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=Ei.parse(i)??{}}catch{a=Ei.parse(Ul(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(Ii,"parseYamlFrontmatter");function Ci(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(Ci,"normalizeAllowedToolsString");function Wl(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(Wl,"normalizeYamlHookEntry");function Hl(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Wl(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}o(Hl,"normalizeYamlHookEntryList");function Ti(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of Xl){let i=Hl(t[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}o(Ti,"normalizeYamlHookMap");function Ri(e){let[t,n]=Ii(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:Ci(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:Ti(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(Ri,"parseSkillMarkdown");async function jt(e,t){let n=xe(e,"SKILL.md");try{let r=await zl(n,"utf-8"),{frontmatter:i,body:s}=Ri(r),[a,c,d,u,l]=await Promise.all([Le(xe(e,"scripts")),Le(xe(e,"references")),Le(xe(e,"assets")),Le(xe(e,"templates")),Le(xe(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},...u.length>0&&{templates:u},...l.length>0&&{resources:l}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}o(jt,"loadFullSkill");async function Le(e,t=e){let n=[];try{let r=await ql(e,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=xe(e,i.name);if(i.isDirectory()){n.push(...await Le(s,t));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:Vl(t,s).replace(/\\/g,"/")})}}catch{}return n}o(Le,"loadSkillFiles");var _i=64*1024,Ai=256*1024;var w_=1024*1024;var V_=16*1024;var rA=16*1024;import{execSync as Pf}from"child_process";import Mf from"path";var Of=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 Hi(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Of)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(Hi,"isSingleSafeDynamicContextCommand");function Nf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&Mf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Hi(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Hi(s))return!1}return!0}o(Nf,"isSafeDynamicContextCommand");function zi(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(zi,"parseArguments");var Wt=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=zi(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(t))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let u=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${u}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Nf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Pf(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 at(e,t,n){return new Wt(n).resolve(e,t)}o(at,"resolveSkillContent");function qi(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}o(qi,"escapeXml");var zn=120;function Ht(e){return e.replace(/\\/g,"/")}o(Ht,"formatDisplayPath");function Lf(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(Lf,"collectSupportFiles");function Ff(e){let t=Lf(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}/: ${Ht(`${e.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of t.slice(0,zn))r.push(`- ${i}/${s.relativePath}: ${Ht(s.path)}`);return t.length>zn&&r.push(`- ... ${t.length-zn} more files under ${Ht(e.path)}`),r}o(Ff,"buildSupportFileContext");function jf(e,t,n){let r=[];r.push(`<skill name="${qi(e.name)}" location="${qi(e.path)}">`),r.push(""),r.push(`Skill root: ${Ht(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=Ff(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(jf,"buildSkillBlock");async function qn(e,t,n){let r=await at(e.content,t,n);return{content:jf(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}o(qn,"expandSkillForLLM");import{writeFile as Qi}from"node:fs/promises";import he from"node:path";import{existsSync as Kf}from"node:fs";import{mkdir as Bf,readFile as Vn,readdir as Xf,stat as Gi,writeFile as t0}from"node:fs/promises";import Uf from"node:os";import re from"node:path";import{fileURLToPath as Yi,pathToFileURL as Wf}from"node:url";import Hf from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(Yi(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(Kf(n))return Fe=await import(Wf(n).href),Fe;t.push(`relative SDK path not found: ${n}`);try{return Fe=await import(["@kodax-ai","kodax"].join("/")),Fe}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(me,"loadKodaXSDK");function
|
|
264
|
+
- `)}`)}o(me,"loadKodaXSDK");function zf(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(zf,"extractFrontmatter");function zt(e){let{yamlText:t,body:n}=zf(e),r=Hf.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(zt,"parseSkillMarkdown");async function dt(e){let t=re.join(e,"SKILL.md");if(!(await Gi(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Vn(t,"utf8"),{frontmatter:i,body:s}=zt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:i}}o(dt,"loadSkill");async function ut(e){try{return await Gi(e),!0}catch{return!1}}o(ut,"pathExists");function qt(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:ct(t),stddev:ct(Math.sqrt(n)),min:ct(Math.min(...e)),max:ct(Math.max(...e))}}o(qt,"calculateStats");function ct(e,t=4){return Number(e.toFixed(t))}o(ct,"roundNumber");function Vt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}o(Vt,"formatDelta");function Vi(e){try{return JSON.parse(e)}catch{return null}}o(Vi,"safeJsonParse");function je(e){let t=Vi(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Vi(e.slice(n,r+1))}o(je,"extractJsonObject");async function Y(e,t=null){try{return JSON.parse(await Vn(e,"utf8"))}catch{return t}}o(Y,"readJsonFile");async function Ke(e,t){let n=re.dirname(Yi(e));return Vn(re.resolve(n,t),"utf8")}o(Ke,"loadRelativeText");function L(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(L,"truncateText");function
|
|
271
|
+
[truncated ${r} chars]`}o(L,"truncateText");function Ji(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?ct(n/t):0}}o(Ji,"computePassSummary");async function Gn(e,t=e,n=[]){let r=await Xf(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,i.name);if(i.isDirectory()){await Gn(e,s,n);continue}i.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}o(Gn,"collectFiles");function lt(){return re.join(Uf.homedir(),".kodax","skills")}o(lt,"getDefaultSkillsDir");async function F(e){return await Bf(e,{recursive:!0}),e}o(F,"ensureDirectory");function qf(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}o(qf,"titleFromSlug");function Vf(e,t){let n=qf(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(Vf,"renderSkillTemplate");function Gf(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(Gf,"renderEvalTemplate");async function Yf(e){let t=he.resolve(e.baseDir??lt()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await Qi(he.join(n,"SKILL.md"),Vf(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await Qi(he.join(n,"evals","evals.json"),`${Gf(e.name)}
|
|
301
|
+
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}o(Yf,"initSkill");function Jf(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(Jf,"parseArgs");async function Zi(e=process.argv){let t=Jf(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 Yf(t);console.log(`Initialized ${n.skillDir}`)}o(Zi,"main");var Qf=!1;Qf&&Zi().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import es from"node:path";var Zf=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function ft(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await dt(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=>!Zf.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=es.basename(es.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(l=>typeof l=="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(ft,"validateSkillDirectory");async function ts(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await ft(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(ts,"main");var ep=!1;ep&&ts().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Yn,writeFile as oe}from"node:fs/promises";import C from"node:path";function tp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}o(tp,"normalizeAssertion");function np(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}o(np,"countToolCalls");function rp(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(rp,"countToolErrors");function op(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(op,"renderTranscript");async function ip(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),i=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,u=a;try{d=await Yn(a,"utf8")}catch{d=await Yn(c,"utf8").catch(()=>null),u=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(ip,"readInputFiles");async function sp(e,t){let n=String(e.prompt??e.query??"").trim();return`${await ip(e.files,t)}${n}`.trim()}o(sp,"buildEvalPrompt");async function ap(e,t){let{runKodaX:n,estimateTokens:r}=await me(),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:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-i}}o(ap,"defaultRunAgent");async function cp(e,t,n,r){return e==="with_skill"?(await qn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}o(cp,"prepareConfigPrompt");async function dp(e,t,n,r,i){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:np(i.result.messages),errors_encountered:rp(i.result.messages),output_chars:i.result.lastText.length};await oe(C.join(s,"result.md"),`${i.result.lastText}
|
|
239
314
|
`,"utf8"),await oe(C.join(s,"prompt.txt"),`${r}
|
|
240
|
-
`,"utf8"),await oe(C.join(e,"transcript.md"),
|
|
315
|
+
`,"utf8"),await oe(C.join(e,"transcript.md"),op(r,i.result),"utf8"),await oe(C.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 oe(C.join(s,"messages.json"),`${JSON.stringify(i.result.messages,null,2)}
|
|
242
317
|
`,"utf8"),await oe(C.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 oe(C.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 m=await
|
|
246
|
-
`;t.output?(await oe(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}o(
|
|
319
|
+
`,"utf8")}o(dp,"writeRunArtifacts");async function up(e,t=ap){let n=await jt(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let i=JSON.parse(await Yn(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 u=0;u<s.length;u+=1){let l=s[u],f=C.join(r,`eval-${u}`);await F(f),await oe(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:l.id??u,eval_name:l.name??`eval-${u}`,prompt:l.prompt??l.query??"",expected_output:l.expected_output??"",assertions:(Array.isArray(l.assertions)?l.assertions:[]).map(tp).filter(Boolean)},null,2)}
|
|
320
|
+
`,"utf8");let m=await sp(l,e),p={};for(let g of a){let v=C.join(f,g);await F(v),p[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await cp(g,n,m,e),b=await t(h,{...e,configName:g,evalItem:l,runIndex:w});await dp(y,g,l,h,b),p[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:l.id??u,prompt:l.prompt??l.query??"",configs:p})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}o(up,"runEvalWorkspace");function lp(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(lp,"parseArgs");async function ns(e=process.argv){let t=lp(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 up(t),r=`${JSON.stringify(n,null,2)}
|
|
321
|
+
`;t.output?(await oe(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}o(ns,"main");var fp=!1;fp&&ns().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as pp,readFile as Jn,writeFile as os}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}o(Ee,"normalizeExpectationText");function is(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(i=>typeof i=="string"?Ee(i):i&&typeof i=="object"&&typeof i.text=="string"?Ee(i.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}o(is,"normalizeExpectedRubric");function Qn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Qn,"normalizeStringArray");function rs(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}o(rs,"normalizeExpectationEntry");function mp(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],i=[],s=new Set;for(let a of t){let c=r.findIndex((d,u)=>s.has(u)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){i.push({text:a,passed:!1,evidence:""});continue}s.add(c),i.push(rs(r[c],a))}if(t.length===0)for(let a of r){let c=rs(a,"");c.text&&i.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:i,user_notes_summary:{uncertainties:Qn(n.user_notes_summary?.uncertainties),needs_review:Qn(n.user_notes_summary?.needs_review),workarounds:Qn(n.user_notes_summary?.workarounds)}}}o(mp,"normalizeParsedGrading");async function Zn(e){return(await pp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(Zn,"listDirectories");async function hp(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),i=T.basename(e),s=T.join(e,"outputs"),a=await Y(T.join(n,"eval_metadata.json"),{}),c=await Jn(T.join(s,"result.md"),"utf8").catch(()=>""),d=await Jn(T.join(s,"prompt.txt"),"utf8").catch(()=>""),u=await Jn(T.join(e,"transcript.md"),"utf8").catch(()=>""),l=await Y(T.join(s,"metrics.json"),{}),f=await Y(T.join(e,"result.json"),{}),m=await Y(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:i,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:u,metrics:l,result:f,timing:m}}o(hp,"loadRunContext");function gp(e){let t=is(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
|
${L(e.transcript,5e3)}
|
|
292
|
-
`}o(
|
|
293
|
-
`,"utf8"),{runDir:r.runDir,grading:l,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(gp,"buildGradingPrompt");async function ss(e,t){let{runKodaX:n}=await me();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:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(ss,"defaultRunJudge");async function yp(e,t,n=ss){let r=await hp(T.resolve(e)),i=is(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=gp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=mp(c,i),u={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},l={summary:Ji(d.expectations),expectations:d.expectations,execution_metrics:u,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await os(T.join(r.runDir,"grading.json"),`${JSON.stringify(l,null,2)}
|
|
368
|
+
`,"utf8"),{runDir:r.runDir,grading:l,prompt:a,rawResponse:c}}o(yp,"gradeRun");async function wp(e,t=ss){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),i=[],s=[];for(let c of await Zn(n))if(T.basename(c).startsWith("eval-"))for(let d of await Zn(c)){let u=T.basename(d);if(!(r.size>0&&!r.has(u)))for(let l of await Zn(d)){if(!T.basename(l).startsWith("run-"))continue;let f=T.join(l,"grading.json");if(await Y(f,null)&&e.overwrite!==!0){s.push(T.relative(n,l).replace(/\\/g,"/"));continue}let p=await yp(l,e,t);i.push({run:T.relative(n,l).replace(/\\/g,"/"),summary:p.grading.summary,config:p.grading.meta.config,eval_id:p.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 os(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
|
|
369
|
+
`,"utf8"),a}o(wp,"gradeWorkspace");function vp(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(vp,"parseArgs");async function as(e=process.argv){let t=vp(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 wp(t);process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
370
|
+
`)}o(as,"main");var bp=!1;bp&&as().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as rr}from"node:fs/promises";import ie from"node:path";import{readFile as kp,readdir as xp,stat as Sp,writeFile as cs}from"node:fs/promises";import j from"node:path";async function er(e){return JSON.parse(await kp(e,"utf8"))}o(er,"readJson");async function Ep(e){try{return await Sp(e),!0}catch{return!1}}o(Ep,"pathExists");async function tr(e){return(await xp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(tr,"listDirectories");async function Gt(e){let t=await Ep(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await tr(t)).filter(i=>j.basename(i).startsWith("eval-")),r={};for(let i of n){let s=j.join(i,"eval_metadata.json"),c=(await er(s).catch(()=>({}))).eval_id??j.basename(i);for(let d of await tr(i)){let u=j.basename(d),l=(await tr(d)).filter(f=>j.basename(f).startsWith("run-"));if(l.length!==0){r[u]??=[];for(let f of l){let m=await er(j.join(f,"grading.json")).catch(()=>null);if(!m)continue;let p=await er(j.join(f,"timing.json")).catch(()=>({}));r[u].push({eval_id:c,run_id:j.basename(f),pass_rate:m.summary?.pass_rate??0,passed:m.summary?.passed??0,failed:m.summary?.failed??0,total:m.summary?.total??0,time_seconds:p.total_duration_seconds??m.timing?.total_duration_seconds??0,tokens:p.total_tokens??m.execution_metrics?.output_chars??0,tool_calls:m.execution_metrics?.total_tool_calls??0,errors:m.execution_metrics?.errors_encountered??0,expectations:Array.isArray(m.expectations)?m.expectations:[],notes:[...m.user_notes_summary?.uncertainties??[],...m.user_notes_summary?.needs_review??[],...m.user_notes_summary?.workarounds??[]]})}}}}return r}o(Gt,"loadRunResults");function Ip(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:qt(a.map(c=>Number(c.pass_rate??0))),time_seconds:qt(a.map(c=>Number(c.time_seconds??0))),tokens:qt(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:Vt(r.pass_rate.mean-i.pass_rate.mean),time_seconds:Vt(r.time_seconds.mean-i.time_seconds.mean),tokens:Vt(r.tokens.mean-i.tokens.mean)}}}o(Ip,"summarizeConfigs");function nr(e,t,n){let r=Ip(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}o(nr,"buildBenchmarkDocument");function Cp(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(Cp,"renderBenchmarkMarkdown");function Tp(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(Tp,"parseArgs");async function Rp(){let{iterationDir:e,skillName:t}=Tp(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Gt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=nr(e,t,n),i=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await cs(i,JSON.stringify(r,null,2)),await cs(s,`${Cp(r)}
|
|
372
|
+
`),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}o(Rp,"main");var _p=!1;_p&&Rp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Yt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Yt,"normalizeStringArray");function Ap(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(Ap,"summarizeFailureClusters");function Pp(e,t,n){let r=je(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:Yt(r.key_findings),variance_hotspots:Yt(r.variance_hotspots),suggested_actions:Yt(r.suggested_actions),watchouts:Yt(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(Pp,"normalizeAnalysisResult");function Mp(e){return`${e.agentInstructions.trim()}
|
|
298
373
|
|
|
299
374
|
Return JSON with this shape:
|
|
300
375
|
{
|
|
@@ -312,12 +387,12 @@ ${L(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.config
|
|
|
312
387
|
|
|
313
388
|
## Failure Clusters
|
|
314
389
|
${L(JSON.stringify(e.failureClusters,null,2),8e3)}
|
|
315
|
-
`}o(
|
|
390
|
+
`}o(Mp,"buildAnalysisPrompt");async function Op(e,t){let{runKodaX:n}=await me();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:ie.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Op,"defaultRunAnalyst");function Np(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 Gt(n),a=
|
|
319
|
-
`,"utf8"),await rr(m,
|
|
320
|
-
`)}o(
|
|
392
|
+
`}o(Np,"renderAnalysisMarkdown");async function $p(e,t=Op){let n=ie.resolve(e.workspaceDir),r=ie.resolve(e.benchmarkPath??ie.join(n,"benchmark.json")),i=await Y(r,null);if(!i){let p=await Gt(n);if(Object.keys(p).length===0)throw new Error(`No benchmark data found in ${n}`);i=nr(n,e.skillName??ie.basename(n),p),await rr(r,`${JSON.stringify(i,null,2)}
|
|
393
|
+
`,"utf8")}let s=await Gt(n),a=Ap(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=Mp({agentInstructions:c,benchmark:i,failureClusters:a}),u=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:i}),l=Pp(u,i,a),f=ie.resolve(e.outputPath??ie.join(n,"analysis.json")),m=ie.resolve(e.markdownPath??ie.join(n,"analysis.md"));return await rr(f,`${JSON.stringify(l,null,2)}
|
|
394
|
+
`,"utf8"),await rr(m,Np(l),"utf8"),{analysis:l,prompt:d,rawResponse:u,analysisJsonPath:f,analysisMdPath:m}}o($p,"analyzeBenchmark");function Dp(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(Dp,"parseArgs");async function ds(e=process.argv){let t=Dp(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 $p(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
|
|
395
|
+
`)}o(ds,"main");var Lp=!1;Lp&&ds().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Fp,readFile as us,writeFile as ls}from"node:fs/promises";import O from"node:path";async function ir(e){return(await Fp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(ir,"listDirectories");function or(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(or,"normalizeStringArray");function jp(e){let t=je(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:or(t.strengths_a),strengths_b:or(t.strengths_b),risks:or(t.risks)}}o(jp,"normalizeComparisonResult");async function Kp(e,t,n,r){let i=(await ir(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await ir(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=i[r],c=s[r];if(!a||!c)return null;let d=await Y(O.join(e,"eval_metadata.json"),{}),u=await us(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),l=await us(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:u},runB:{runDir:c,runId:O.basename(c),configName:n,output:l}}}o(Kp,"loadComparisonPair");function Bp(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 @@ ${L(t.A.output,12e3)}
|
|
|
345
420
|
|
|
346
421
|
## Candidate B
|
|
347
422
|
${L(t.B.output,12e3)}
|
|
348
|
-
`}o(
|
|
423
|
+
`}o(Bp,"buildComparisonPrompt");async function Xp(e,t){let{runKodaX:n}=await me();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:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Xp,"defaultRunComparator");function Up(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}o(Up,"mapWinnerToConfig");function Wp(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(Wp,"renderComparisonMarkdown");async function Hp(e,t=Xp){let n=O.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 Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await ir(n))if(O.basename(f).startsWith("eval-"))for(let m=0;m<s;m+=1){let p=await Kp(f,r,i,m);if(!p)break;let g=c.length%2===0,v=Bp({agentInstructions:a,evalMetadata:p.evalMetadata,runA:p.runA,runB:p.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:m,configA:r,configB:i}),y=jp(w),h=Up(y.winner,g,r,i);c.push({index:c.length+1,eval_id:p.evalMetadata.eval_id??null,eval_name:p.evalMetadata.eval_name??null,run_a:O.relative(n,p.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,p.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:i}:{A:i,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.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},u=O.resolve(e.outputPath??O.join(n,"comparison.json")),l=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await ls(u,`${JSON.stringify(d,null,2)}
|
|
426
|
+
`,"utf8"),await ls(l,Wp(d),"utf8"),{document:d,outputPath:u,markdownPath:l}}o(Hp,"compareWorkspace");function zp(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(zp,"parseArgs");async function fs(e=process.argv){let t=zp(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 Hp(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
|
|
427
|
+
`)}o(fs,"main");var qp=!1;qp&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Vp,writeFile as Gp}from"node:fs/promises";import{createHash as Yp}from"node:crypto";import sr from"node:path";import{zipSync as Jp,strToU8 as Qp}from"fflate";var Zp=".kodax-package.json";function em(e){return e instanceof Uint8Array?e:new Uint8Array(e)}o(em,"toUint8Array");function tm(e){return Yp("sha256").update(e).digest("hex")}o(tm,"sha256");function nm(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(nm,"createPackageManifest");async function rm(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
|
|
353
428
|
- ${n.errors.join(`
|
|
354
|
-
- `)}`);let r=await dt(e),i=await Gn(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let u=
|
|
429
|
+
- `)}`);let r=await dt(e),i=await Gn(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let u=em(await Vp(d.absolutePath));s.push({...d,bytes:u,sha256:tm(u)})}let a=nm(r,s,t),c={[Zp]:Qp(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:Jp(c,{level:6})}}o(rm,"buildSkillPackage");async function om(e,t,n={}){let r=await rm(e,n);return await Gp(t,r.bytes),{...r,outputPath:sr.resolve(t)}}o(om,"writeSkillPackage");function im(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(im,"parseArgs");async function ps(e=process.argv){let t=im(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await dt(t.skillDir),r=t.output??sr.join(sr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),i=await om(t.skillDir,r);console.log(`Wrote ${i.outputPath}`)}o(ps,"main");var sm=!1;sm&&ps().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as am,mkdir as ar,readFile as gs,rm as ys,stat as cm,writeFile as dm}from"node:fs/promises";import J from"node:path";import{strFromU8 as ms,unzipSync as um}from"fflate";var hs=".kodax-package.json";function lm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}o(lm,"normalizeArchivePath");function fm(e){let t=lm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}o(fm,"assertSafeArchivePath");function pm(e){return/\.(skill|zip)$/i.test(e)}o(pm,"isZipLike");function mm(e){let t=um(e),n=Object.entries(t).map(([u,l])=>({relativePath:fm(u),bytes:l})),r=n.find(u=>u.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let i=zt(ms(r.bytes)),s=typeof i.frontmatter.name=="string"?i.frontmatter.name.trim():"",a=typeof i.frontmatter.description=="string"?i.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(u=>u.relativePath===hs),d=c?JSON.parse(ms(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(u=>u.relativePath!==hs)}}o(mm,"readSkillPackageBuffer");async function hm(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await ys(e,{recursive:!0,force:!0})}await ar(e,{recursive:!0})}o(hm,"ensureInstallTarget");async function gm(e,t={}){let n=J.resolve(t.skillsDir??lt()),r=mm(await gs(e)),i=J.join(n,r.skillName);await hm(i,t.force===!0);for(let s of r.entries){let a=J.join(i,s.relativePath);await ar(J.dirname(a),{recursive:!0}),await dm(a,s.bytes)}return{skillName:r.skillName,installedTo:i,source:J.resolve(e),manifest:r.manifest}}o(gm,"installSkillArchive");async function ym(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
|
|
355
430
|
- ${n.errors.join(`
|
|
356
|
-
- `)}`);let r=J.join(e,"SKILL.md"),i=zt(await
|
|
431
|
+
- `)}`);let r=J.join(e,"SKILL.md"),i=zt(await gs(r,"utf8")),s=J.resolve(t.skillsDir??lt()),a=J.join(s,i.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await ys(a,{recursive:!0,force:!0})}return await ar(s,{recursive:!0}),await am(e,a,{recursive:!0}),{skillName:i.frontmatter.name,installedTo:a,source:J.resolve(e),manifest:null}}o(ym,"installSkillDirectory");async function wm(e,t={}){let n=J.resolve(e),r=await cm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return ym(n,t);if(r.isFile()&&pm(n))return gm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}o(wm,"installSkill");function vm(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(vm,"parseArgs");async function ws(e=process.argv){let t=vm(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 wm(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}o(ws,"main");var bm=!1;bm&&ws().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var rM=1440*60*1e3;var uM=5*6e4;var QM=new Intl.Segmenter("zh-CN",{granularity:"word"});var tN=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,14 +608,14 @@ 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
|
|
537
|
-
|
|
538
|
-
`;var
|
|
539
|
-
`),a=(s>=0?i.slice(0,s):i).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}o(
|
|
540
|
-
`))if(r.trim())try{let i=JSON.parse(r);i.done&&typeof i.from=="string"&&t.add(i.from)}catch{}}catch{}return t}o(
|
|
541
|
-
`,"utf8"),await R.rename(t,fr(e))}o(
|
|
542
|
-
`),i+=1)}}finally{await r.close()}return await
|
|
543
|
-
`).length,i={width:n,height:r};return Ks.set(e,i),i},"measureText"),wr=eg;import tg from"wrap-ansi";import ng from"cli-truncate";var Bs={},rg=o((e,t,n)=>{let r=e+String(t)+String(n),i=Bs[r];if(i)return i;let s=e;if(n==="wrap"&&(s=tg(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=ng(e,t,{position:a})}return Bs[r]=s,s},"wrapText"),nn=rg;var og=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),ig=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),sg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Ws=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),ag=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Hs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Xs=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!og(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!ig(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!sg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Us=o((e,t,n)=>{for(let r=t;r<e.length;r++){let i=e[r];if(n&&i==="\x07"||i==="\x9C")return r+1;if(i==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),cg=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Ws(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!ag(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),dg=o(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),ug=o(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Hs(t))return!0;return!1},"hasAnsiControlCharacters"),Ue=o((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),zs=o(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let i=e[r];if(i===void 0)break;if(i==="\x1B"){let a=e[r+1];if(a===void 0)return Ue(t,e,n,r);if(a==="["){let u=Xs(e,r+2);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,u.endIndex),parameterString:u.parameterString,intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}let c=dg(a);if(c!==void 0){let u=Us(e,r+2,c.allowBellTerminator);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,u)}),r=u,n=r;continue}let d=cg(e,r+1);if(d===void 0){if(Ws(a))return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(i==="\x9B"){let a=Xs(e,r+1);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=ug(i);if(s!==void 0){let a=Us(e,r+1,s.allowBellTerminator);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(i==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:i}),r++,n=r;continue}if(Hs(i)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:i}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var lg=/^[\d:;]*$/,fg=o(e=>{if(!vr(e))return e;let t="";for(let n of zs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&lg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),qs=fg;var Vs=o(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let i="";r.nodeName==="#text"?i=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=Vs(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return qs(t)},"squashTextNodes"),mt=Vs;var rn=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:pg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(mg.bind(null,t)),t},"createNode"),on=o((e,t)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=o((e,t,n)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),ht=o((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=o((e,t)=>{e.style=t},"setStyle"),Gs=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return gt(t,e),t},"createTextNode"),mg=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:mt(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=nn(n,t,i);return wr(s)},"measureTextNode"),Ys=o(e=>{if(e?.parentNode)return e.yogaNode??Ys(e.parentNode)},"findClosestYogaNode"),sn=o(e=>{Ys(e)?.markDirty()},"markNodeAsDirty"),gt=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var gg=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),yg=o((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),wg=o((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),vg=o((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),bg=o((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),kg=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),xg=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),Sg=o((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Eg=o((e,t={})=>{gg(e,t),yg(e,t),wg(e,t),vg(e,t),bg(e,t),kg(e,t),xg(e,t),Sg(e,t)},"styles"),Sr=Eg;if(tn())try{await Promise.resolve().then(()=>(na(),Ig))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
|
|
611
|
+
`;var xs=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),Xm=0,Um=0,Ss=o(e=>{let t=e==="label"?++Xm:++Um,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function Wm(e,t,n){let r=Ss("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}o(Wm,"appendLabel");async function Hm(e,t,n){let r=Ss("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}o(Hm,"appendArtifact");function zm(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(zm,"buildLineageTree");var qm=Object.freeze({name:"lineage",entryTypes:xs,operators:Object.freeze({label:o((async(e,...t)=>{let[n,r]=t;return Wm(e,n,r)}),"label"),attachArtifact:o((async(e,...t)=>{let[n,r]=t;return Hm(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:o(e=>zm(e),"buildLineageTree")})});var nh=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"]),dr=nh,Jt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
|
|
612
|
+
|
|
613
|
+
`;var v$=Jt.trimEnd();var b$=16*1024;var ah={enabled:!1,maxAge:20,protectedTools:Array.from(dr)};import TL from"typescript";var UF=new Intl.Segmenter("en",{granularity:"grapheme"});var fK=4*1024;var hK=64*1024;var ur=".conversation-cache.",TK=`${ur}json`,RK=1024*1024,_K=1024*1024,AK=1024*1024,PK=4*1024*1024,MK=128*1024;var Ie=class extends Error{static{o(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function As(e){let t=e.lastIndexOf(ur);if(t<=0)return;let n=e.slice(t+ur.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}o(As,"cacheArtifactSessionId");async function Ps(e){let t=pt.dirname(e),n=pt.basename(e,pt.extname(e)),r;try{r=await Zt.readdir(t)}catch(i){if(i.code==="ENOENT")return;throw i}await Promise.all(r.filter(i=>As(i)===n).map(i=>Zt.rm(pt.join(t,i),{force:!0})))}o(Ps,"removeConversationPageCache");async function lr(e){let t;try{t=await Zt.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&As(n.name)!==void 0).map(n=>Zt.rm(pt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}o(lr,"removeConversationPageCachesInDirectory");var $s=3,Ah=300*1e3,Ms=65536,fr=o(e=>P.join(e,".layout.json"),"layoutMarkerPath"),mr=o(e=>P.join(e,".migration-lock"),"lockDirPath"),Ds=o(e=>P.join(mr(e),"owner.json"),"ownerPath"),pr=o(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),hr=o(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function gr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(gr,"isSessionFile");function Ls(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}o(Ls,"sidecarId");async function Ph(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe(Ms),{bytesRead:r}=await t.read(n,0,Ms,0);if(r===0)return null;let i=n.toString("utf8",0,r),s=i.indexOf(`
|
|
614
|
+
`),a=(s>=0?i.slice(0,s):i).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}o(Ph,"readMeta");async function Mh(e){let t=await Ph(e);return t?yo({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}o(Mh,"destKeyFor");async function Oh(e){let t=[],n=o(async(r,i)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(gr(a.name)||i&&Ls(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(hr(e),!0),t}o(Oh,"collectFlatSources");async function Nh(e){let t=await Oh(e),n=t.filter(s=>gr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),i=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await Mh(s);i.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let u=P.join(P.dirname(s),`${a}${d}`);Ns.existsSync(u)&&i.push({from:u,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Ls(P.basename(s));a===null||r.has(a)||i.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return i}o(Nh,"planMigration");async function $h(e){try{let t=JSON.parse(await R.readFile(fr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===$s}catch{return!1}}o($h,"isMigrated");async function Os(e){await lr(e),await lr(hr(e))}o(Os,"removeLegacyConversationCaches");async function Dh(e){try{let t=JSON.parse(await R.readFile(Ds(e),"utf8"));if(typeof t.pid=="number"&&t.pid!==process.pid)try{process.kill(t.pid,0)}catch(n){if(n.code==="ESRCH")return!0}return typeof t.heartbeatAt=="number"&&Date.now()-t.heartbeatAt>Ah}catch{return!0}}o(Dh,"lockIsStale");async function Lh(e){let t=mr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Ds(e),JSON.stringify({pid:process.pid,startTime:Date.now(),heartbeatAt:Date.now()})),!0}catch(r){if(r.code!=="EEXIST")return!1;if(n===0&&await Dh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}o(Lh,"acquireLock");async function Fh(e){await R.rm(mr(e),{recursive:!0,force:!0}).catch(()=>{})}o(Fh,"releaseLock");async function jh(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}o(jh,"assertNoActiveSessionWriters");async function Kh(e){let t=new Set;try{let n=await R.readFile(pr(e),"utf8");for(let r of n.split(`
|
|
615
|
+
`))if(r.trim())try{let i=JSON.parse(r);i.done&&typeof i.from=="string"&&t.add(i.from)}catch{}}catch{}return t}o(Kh,"readJournalDone");async function Bh(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),Ns.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}o(Bh,"executeMove");async function Xh(e){await R.mkdir(e,{recursive:!0});let t=`${fr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:$s,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
|
|
616
|
+
`,"utf8"),await R.rename(t,fr(e))}o(Xh,"writeMarker");async function Uh(e){let t=hr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}o(Uh,"retireSessionsArchive");async function Wh(e){if(!await Lh(e))return{moved:0,planned:0};try{await jh(e),await Os(e);let t=await Nh(e),n=await Kh(e),r=await R.open(pr(e),"a"),i=0;try{for(let s of t){if(gr(P.basename(s.from)))try{await Ps(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await Bh(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
|
|
617
|
+
`),i+=1)}}finally{await r.close()}return await Uh(e),await Os(e),await Xh(e),await R.rm(pr(e),{force:!0}).catch(()=>{}),{moved:i,planned:t.length}}finally{await Fh(e)}}o(Wh,"runMigration");async function Fs(e){try{if(await $h(e))return;await Wh(e)}catch(t){if(t instanceof Ie)throw t}}o(Fs,"ensureLayoutMigrated");import{jsx as Ct,jsxs as Ye}from"react/jsx-runtime";import{useMemo as Fw,useRef as jw,useState as to}from"react";import{jsx as Ic}from"react/jsx-runtime";import{createContext as Iw,useContext as Jr,useEffect as Ge,useMemo as Ec,useState as Cw,useCallback as Cc,useRef as vn}from"react";import{Stream as tw}from"node:stream";import{openSync as nw,writeSync as pc}from"node:fs";import{performance as rw}from"node:perf_hooks";import{tmpdir as ow}from"node:os";import{join as iw}from"node:path";import yr,{forwardRef as qh,useContext as Vh}from"react";import{createContext as Hh}from"react";var Be=Hh({isScreenReaderEnabled:!1});import{createContext as zh}from"react";var en=zh(void 0);var js=qh(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":i,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=Vh(Be),u=n?yr.createElement("ink-text",null,n):void 0;if(d&&r)return null;let l=yr.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:i,state:s}},d&&u?u:e);return t?yr.createElement(en.Provider,{value:t},l):l});js.displayName="Box";var q=js;import Qh,{useContext as Ks}from"react";import Xe from"chalk";import ge from"chalk";var Gh=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Yh=/^ansi256\(\s?(\d+)\s?\)$/;function Jh(e){return e in ge}o(Jh,"isNamedColor");function G(e,t,n){if(!t)return e;if(Jh(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let i=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[i]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=Yh.exec(t);if(!r)return e;let i=Number(r[1]);return n==="foreground"?ge.ansi256(i)(e):ge.bgAnsi256(i)(e)}if(t.startsWith("rgb")){let r=Gh.exec(t);if(!r)return e;let i=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(i,s,a)(e):ge.bgRgb(i,s,a)(e)}return e}o(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:i=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:u,"aria-label":l,"aria-hidden":f=!1,internal_cursorAnchor:m=!1}){let{isScreenReaderEnabled:p}=Ks(Be),g=Ks(en),v=p&&l?l:u;if(v==null)return null;let w=o(y=>{let h=y;n&&(h=Xe.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Xe.bold(h)),i&&(h=Xe.italic(h)),s&&(h=Xe.underline(h)),a&&(h=Xe.strikethrough(h)),c&&(h=Xe.inverse(h)),h},"transform");return p&&f?null:Qh.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...m?{internal_cursorAnchor:!0}:{}},p&&l?l:u)}o(K,"Text");import aB,{useLayoutEffect as cB,useMemo as dB,useState as uB}from"react";import Pe from"node:process";import uc from"react";import{throttle as Dy}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Ly from"auto-bind";import{onExit as Fy}from"signal-exit";import jy from"patch-console";import{LegacyRoot as Ky,ConcurrentRoot as By}from"react-reconciler/constants.js";import Xy from"yoga-layout";import Uy from"wrap-ansi";import Wy from"terminal-size";import Zh from"node:process";var tn=o(()=>Zh.env.DEV==="true","isDev");import Tg from"react-reconciler";import{DefaultEventPriority as Rg,NoEventPriority as ca}from"react-reconciler/constants.js";import*as ye from"scheduler";import oa from"yoga-layout";import{createContext as _g}from"react";import mg from"yoga-layout";import eg from"widest-line";var Bs=new Map,tg=o(e=>{if(e.length===0)return{width:0,height:0};let t=Bs.get(e);if(t)return t;let n=eg(e),r=e.split(`
|
|
618
|
+
`).length,i={width:n,height:r};return Bs.set(e,i),i},"measureText"),wr=tg;import ng from"wrap-ansi";import rg from"cli-truncate";var Xs={},og=o((e,t,n)=>{let r=e+String(t)+String(n),i=Xs[r];if(i)return i;let s=e;if(n==="wrap"&&(s=ng(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=rg(e,t,{position:a})}return Xs[r]=s,s},"wrapText"),nn=og;var ig=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),sg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),ag=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Hs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),cg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),zs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Us=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!ig(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!sg(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!ag(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Ws=o((e,t,n)=>{for(let r=t;r<e.length;r++){let i=e[r];if(n&&i==="\x07"||i==="\x9C")return r+1;if(i==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),dg=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Hs(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!cg(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),ug=o(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),lg=o(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(zs(t))return!0;return!1},"hasAnsiControlCharacters"),Ue=o((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),qs=o(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let i=e[r];if(i===void 0)break;if(i==="\x1B"){let a=e[r+1];if(a===void 0)return Ue(t,e,n,r);if(a==="["){let u=Us(e,r+2);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,u.endIndex),parameterString:u.parameterString,intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}let c=ug(a);if(c!==void 0){let u=Ws(e,r+2,c.allowBellTerminator);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,u)}),r=u,n=r;continue}let d=dg(e,r+1);if(d===void 0){if(Hs(a))return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(i==="\x9B"){let a=Us(e,r+1);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=lg(i);if(s!==void 0){let a=Ws(e,r+1,s.allowBellTerminator);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(i==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:i}),r++,n=r;continue}if(zs(i)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:i}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var fg=/^[\d:;]*$/,pg=o(e=>{if(!vr(e))return e;let t="";for(let n of qs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&fg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Vs=pg;var Gs=o(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let i="";r.nodeName==="#text"?i=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=Gs(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return Vs(t)},"squashTextNodes"),mt=Gs;var rn=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:mg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(hg.bind(null,t)),t},"createNode"),on=o((e,t)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=o((e,t,n)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),ht=o((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=o((e,t)=>{e.style=t},"setStyle"),Ys=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return gt(t,e),t},"createTextNode"),hg=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:mt(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=nn(n,t,i);return wr(s)},"measureTextNode"),Js=o(e=>{if(e?.parentNode)return e.yogaNode??Js(e.parentNode)},"findClosestYogaNode"),sn=o(e=>{Js(e)?.markDirty()},"markNodeAsDirty"),gt=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var yg=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),wg=o((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),vg=o((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),bg=o((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),kg=o((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),xg=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Sg=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),Eg=o((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Ig=o((e,t={})=>{yg(e,t),wg(e,t),vg(e,t),bg(e,t),kg(e,t),xg(e,t),Sg(e,t),Eg(e,t)},"styles"),Sr=Ig;if(tn())try{await Promise.resolve().then(()=>(ra(),Cg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
|
|
544
619
|
The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
|
|
545
620
|
but this failed as it was not installed. Debugging with React Devtools requires it.
|
|
546
621
|
|
|
@@ -548,33 +623,33 @@ To install use this command:
|
|
|
548
623
|
|
|
549
624
|
$ npm install --save-dev react-devtools-core
|
|
550
625
|
`.trim()+`
|
|
551
|
-
`);else throw e}var
|
|
626
|
+
`);else throw e}var ia=o((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let i of Object.keys(e))(!t||!Object.hasOwn(t,i))&&(n[i]=void 0,r=!0);if(t)for(let i of Object.keys(t))t[i]!==e[i]&&(n[i]=t[i],r=!0);return r?n:void 0},"diff"),sa=o(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),cn=ca,Cr,aa={name:void 0,version:void 0},se=Tg({getRootHostContext:o(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:o(()=>null,"prepareForCommit"),preparePortalMount:o(()=>null,"preparePortalMount"),clearContainer:o(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:o(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let i=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=rn(i);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){xr(s,c),s.yogaNode&&Sr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){Cr=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}kr(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return Ys(e)},resetTextContent(){},hideTextInstance(e){gt(e,"")},unhideTextInstance(e,t){gt(e,t)},getPublicInstance:o(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(oa.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(oa.DISPLAY_FLEX)},appendInitialChild:on,appendChild:on,insertBefore:br,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:o(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:o(()=>null,"getInstanceFromScope"),appendChildToContainer:on,insertInContainerBefore:br,removeChildFromContainer(e,t){ht(e,t),sa(t.yogaNode)},commitUpdate(e,t,n,r){Cr&&e.internal_static&&(Cr.isStaticDirty=!0);let i=ia(n,r),s=ia(n.style,r.style);if(!(!i&&!s)){if(i)for(let[a,c]of Object.entries(i)){if(a==="style"){xr(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}kr(e,a,c)}s&&e.yogaNode&&Sr(e.yogaNode,s)}},commitTextUpdate(e,t,n){gt(e,n)},removeChild(e,t){ht(e,t),sa(t.yogaNode)},setCurrentUpdatePriority(e){cn=e},getCurrentUpdatePriority:o(()=>cn,"getCurrentUpdatePriority"),resolveUpdatePriority(){return cn!==ca?cn:Rg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:_g(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:aa.name,rendererVersion:aa.version});import Ng from"widest-line";import $g from"indent-string";import we from"yoga-layout";import dn from"yoga-layout";var Ag=o(e=>e.getComputedWidth()-e.getComputedPadding(dn.EDGE_LEFT)-e.getComputedPadding(dn.EDGE_RIGHT)-e.getComputedBorder(dn.EDGE_LEFT)-e.getComputedBorder(dn.EDGE_RIGHT),"getMaxWidth"),da=Ag;import Pg from"cli-boxes";import un from"chalk";var Mg=o((e,t,n,r)=>{if(n.style.borderStyle){let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?Pg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,u=n.style.borderLeftColor??n.style.borderColor,l=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,m=n.style.borderBottomDimColor??n.style.borderDimColor,p=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=i-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=un.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,u,"foreground")+`
|
|
552
627
|
`).repeat(_);p&&(W=un.dim(W));let H=(G(a.right,l,"foreground")+`
|
|
553
|
-
`).repeat(_);g&&(H=un.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=un.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+i-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),
|
|
554
|
-
`.repeat(i)
|
|
555
|
-
`;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>ln(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:i}=e.internal_accessibility;if(i){let a=Object.keys(i).filter(c=>i[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function
|
|
628
|
+
`).repeat(_);g&&(H=un.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=un.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+i-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),ua=Mg;var Og=o((e,t,n,r)=>{if(!n.style.backgroundColor)return;let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,u=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,l=i-a-c,f=s-d-u;if(!(l>0&&f>0))return;let m=G(" ".repeat(l),n.style.backgroundColor,"background");for(let p=0;p<f;p++)r.write(e+a,t+d+p,m,{transformers:[]})},"renderBackground"),la=Og;function fa(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:i,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:u,previousAppliedScrollTop:l,regionTop:f}=e,m=Math.max(0,n-r),p=Math.max(0,Math.min(Math.floor(t),m)),v=s&&n>=i?m:p,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(m,c??m))):v,y=d&&u!==void 0,h=Math.max(0,Math.floor(u??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(l!==void 0&&l!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-l})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}o(fa,"computeScrollState");var Dg=o((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),i=n.getComputedTop();t=`
|
|
629
|
+
`.repeat(i)+$g(t,r)}return t},"applyPaddingToText"),ln=o((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=mt(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
|
|
630
|
+
`;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>ln(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:i}=e.internal_accessibility;if(i){let a=Object.keys(i).filter(c=>i[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function pa(){Tr=null,Rr=null}o(pa,"resetScrollHint");function ma(){return Tr}o(ma,"getScrollHint");function ha(){return Rr}o(ha,"getScrollRepaint");var ga=o((e,t,n)=>{let{offsetX:r=0,offsetY:i=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),u=i+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:u});let l=s;if(typeof e.internal_transform=="function"&&(l=[e.internal_transform,...s]),e.nodeName==="ink-text"){let p=mt(e);if(p.length>0){let g=Ng(p),v=da(c);if(g>v){let w=e.style.textWrap??"wrap";p=nn(p,v,w)}p=Dg(e,p),t.write(d,u,p,{transformers:l})}return}let f=!1,m=0;if(e.nodeName==="ink-box"){la(d,u,e,t),ua(d,u,e,t);let p=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=p==="hidden"||p==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=fa({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:u+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Tr=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Rr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,m=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?u+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?u+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let p of e.childNodes)ga(p,t,{offsetX:d,offsetY:u-m,transformers:l,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),_r=ga;import Lg from"slice-ansi";import Fg from"string-width";import{styledCharsFromTokens as jg,styledCharsToString as Kg,tokenize as Bg}from"@alcalzone/ansi-tokenize";var Ar=class{static{o(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=jg(Bg(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Fg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let i of t.split(`
|
|
556
631
|
`))r=Math.max(r,this.getStringWidth(i));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{o(this,"Output")}width;height;operations=[];caches=new Ar;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,i){let{transformers:s}=i;r&&this.operations.push({type:"write",x:t,y:n,text:r,transformers:s})}clip(t){this.operations.push({type:"clip",clip:t})}unclip(){this.operations.push({type:"unclip"})}getGrid(){let t=[];for(let r=0;r<this.height;r++){let i=[];for(let s=0;s<this.width;s++)i.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(i)}let n=[];for(let r of this.operations)if(r.type==="clip"&&n.push(r.clip),r.type==="unclip"&&n.pop(),r.type==="write"){let{text:i,transformers:s}=r,{x:a,y:c}=r,d=i.split(`
|
|
557
|
-
`),u=n.at(-1);if(u){let f=typeof u?.x1=="number"&&typeof u?.x2=="number",m=typeof u?.y1=="number"&&typeof u?.y2=="number";if(f){let p=this.caches.getWidestLine(i);if(a+p<u.x1||a>u.x2)continue}if(m){let p=d.length;if(c+p<u.y1||c>u.y2)continue}if(f&&(d=d.map(p=>{let g=a<u.x1?u.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>u.x2?u.x2-a:v;return
|
|
558
|
-
`),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function
|
|
632
|
+
`),u=n.at(-1);if(u){let f=typeof u?.x1=="number"&&typeof u?.x2=="number",m=typeof u?.y1=="number"&&typeof u?.y2=="number";if(f){let p=this.caches.getWidestLine(i);if(a+p<u.x1||a>u.x2)continue}if(m){let p=d.length;if(c+p<u.y1||c>u.y2)continue}if(f&&(d=d.map(p=>{let g=a<u.x1?u.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>u.x2?u.x2-a:v;return Lg(p,g,w)}),a<u.x1&&(a=u.x1)),m){let p=c<u.y1?u.y1-c:0,g=d.length,v=c+g>u.y2?u.y2-c:g;d=d.slice(p,v),c<u.y1&&(c=u.y1)}}let l=0;for(let[f,m]of d.entries()){let p=t[c+l];if(!p)continue;for(let w of s)m=w(m,f);let g=this.caches.getStyledChars(m),v=a;for(let w of g){p[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)p[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}l++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let i=r.filter(s=>s!==void 0);return Kg(i).trimEnd()}).join(`
|
|
633
|
+
`),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function ya(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}o(ya,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}o(Ce,"cellAt");function wa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(i,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(i<0||s<0||i>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${i}, ${s}) on ${e}x${t}`);n[s*e+i]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}o(wa,"createScreenBuilder");function*fn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let i=0;i<r;i++)for(let s=0;s<n;s++){let a=Ce(e,s,i),c=Ce(t,s,i);Xg(a,c)||(yield{x:s,y:i,prev:a,next:c})}}o(fn,"diffEach");function va(e,t,n,r){if(r===0||e.height===0)return e;let i=Math.max(0,t),s=Math.min(e.height-1,n);if(i>s)return e;let a=e.width,c=e.cells.slice(),d=s-i+1,u=o(l=>{for(let f=0;f<a;f++)c[l*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let l=i;l<=s;l++)u(l);return{...e,cells:c}}if(r>0){for(let l=i;l<=s-r;l++)for(let f=0;f<a;f++)c[l*a+f]=e.cells[(l+r)*a+f]??Q;for(let l=s-r+1;l<=s;l++)u(l)}else{let l=-r;for(let f=s;f>=i+l;f--)for(let m=0;m<a;m++)c[f*a+m]=e.cells[(f-l)*a+m]??Q;for(let f=i;f<=i+l-1;f++)u(f)}return{...e,cells:c}}o(va,"shiftRowsRegion");function Xg(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}o(Xg,"cellsEqual");var Pr="\x1B]8;";function Ug(e){return e.endsWith("\x07")?e.slice(0,-1):e}o(Ug,"stripOsc8Terminator");function Wg(e){if(!e.startsWith(Pr))return;let t=e.slice(Pr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),i=Ug(r);return i.length>0?i:void 0}o(Wg,"parseOsc8Url");function Hg(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Pr)){let i=Wg(r.code);i!==void 0&&(n=i)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}o(Hg,"styledCharToCell");function ba(e){let t=e.getGrid(),n=e.width,r=e.height,i=wa(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let u=0;u<d;u++){let l=c[u];if(!l)continue;let f=Hg(l);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||i.setCellAt(u,a,f)}}return i.build()}o(ba,"outputToScreen");var zg=o((e,t,n)=>{if(e.yogaNode){if(t){let m=ln(e,{skipStaticElements:!0}),p=m===""?0:m.split(`
|
|
559
634
|
`).length,g="";return e.staticNode&&(g=ln(e.staticNode,{skipStaticElements:!1})),{output:m,outputHeight:p,staticOutput:g?`${g}
|
|
560
|
-
`:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});
|
|
561
|
-
`:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=
|
|
562
|
-
`)}]}o(Nr,"renderFullFrame");var
|
|
563
|
-
`};function kt(e,t,n){let r=t.width===Z.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let l=t.char.length>2?i:i+1;if(c+2>=l)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let u=r===2&&Ma(t.char);return u&&c+1<i&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),u&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}o(kt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(_e,"moveCursorTo");function xt(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=vt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=bt(s,m.style);kt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let u=ae(a,void 0);for(let f of u.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=u.current;let l=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(f=>l?[[ce],{dx:-f.x,dy:0}]:[[ce,vt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);let d=ae(a,void 0);for(let u of d.patches)e.txn(()=>[[u],{dx:0,dy:0}])}}o(xt,"renderFrameSlice");function $r(e,t,n,r){let i=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=i;a<=s;a++)Zg(e,t,a)}o($r,"repaintFrameRows");function Zg(e,t,n){let r="",i;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+yt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(i,a.hyperlink);for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);i=c.current;let d=bt(r,a.style);kt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(Zg,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let i=Ce(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);xt(r,e,0,e.screen.height,n);let i=[{type:"clearTerminal",reason:t}];for(let s of r.diff)i.push(s);return i}o(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,i=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:i,prevHadScrollback:s,nextFitsViewport:a}}o(pn,"computeViewportState");function Oa(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}o(Oa,"shouldFullReset");function Na(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o(Na,"shouldSkipDiff");var mn=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let i=r.inlineBottomAnchored??!1,s=$a(t,i),a=$a(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",i);let c=Oa(s,a,Dr);if(c.reset)return ze(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return ey(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let u={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},l={...s,screen:wa(s.screen,d.top,d.bottom,d.delta)};return[u,...Da(l,a,i)]}return Da(s,a,i)}reset(){}};function Lr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Lr,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");Lr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Lr(e,r.patches)}return{style:"",hyperlink:void 0}}o(Fr,"resetStyleAndHyperlink");function ey(e,t,n){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&La(i,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&$r(i,t,c.top,c.bottom);let d=Fa(i,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(i,d.currentStyle,d.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height),ja(i,t),i.diff)}o(ey,"renderScrollRepaint");function La(e,t,n){let r=t.screen.height-n.screen.height;e.txn(i=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-i.x,dy:-r}])}o(La,"applyShrink");function Fa(e,t,n,r){let i="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:u,prev:l,next:f}=c;if(r.growing&&u>=t.screen.height||r.skipRows&&u>=r.skipRows.top&&u<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!Na(l,f,m)){if(u<r.viewportY){a=!0;break}if(_e(e,d,u),f){let p=ae(s,f.hyperlink);Lr(e,p.patches),s=p.current;let g=bt(i,f.style);kt(e,f,g.str)&&(i=g.current)}else if(l){let p=Fr(e,i,s);i=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(Fa,"diffPass");function $a(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}o($a,"clampRestingCursor");function ja(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=vt;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}o(ja,"restoreCursor");function Da(e,t,n=!1){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&La(i,e,t);let s=Fa(i,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(i,s.currentStyle,s.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height,n),ja(i,t),i.diff)}o(Da,"renderIncremental");var ty="\x1B[?25l",ny="\x1B[?25h",ry=`\x1B[2J${xa}`,oy="\x1B[?2026h",iy="\x1B[?2026l";function sy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ty;case"cursorShow":return ny;case"cursorMove":return Sa(e.x,e.y);case"cursorTo":return ka(e.col);case"eraseLine":return Or;case"clear":return Ea(e.count);case"clearTerminal":return ry;case"hyperlink":return wt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?_a(r):Aa(r);return Ca+Ra(t,n)+i+Ia+Ta}}}o(sy,"patchToBytes");function hn(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=sy(s);if(r.length!==0){if(n&&i){e.write(oy+r+iy);return}e.write(r)}}o(hn,"applyDiff");function Ka(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(Ka,"applyCellFrame");function St(e,t){return{screen:ga(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(St,"emptyFrame");import ay from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function ue(e){return"isTTY"in e&&e.isTTY===!0&&!ay}o(ue,"shouldSynchronize");var cy=new WeakMap,Ba=cy;import{EventEmitter as Ry}from"node:events";import _y from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as ic}from"react";import Ay from"cli-cursor";var dy=o(e=>e>=48&&e<=63,"isCsiParameterByte"),uy=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Ua=o(e=>e>=64&&e<=126,"isCsiFinalByte");function ly(e,t,n){let r=t+n+1,i=r;for(;i<e.length;i+=1){let s=e.codePointAt(i);if(s===void 0)return"pending";if(!(dy(s)||uy(s))&&!(s===91&&i===r))return Ua(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(ly,"parseCsiSequence");function fy(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Ua(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(fy,"parseSs3Sequence");function Xa(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return ly(e,t,n);if(r==="O")return fy(e,t,n)}o(Xa,"parseControlSequence");function py(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,i=t+1+r;return{sequence:e.slice(t,i),nextIndex:i}}o(py,"parseEscapedCodePoint");function my(e){let t=[],n=0,r=o(i=>({events:t,pending:e.slice(i)}),"pendingFrom");for(;n<e.length;){let i=e.indexOf("\x1B",n);if(i===-1)return t.push(e.slice(n)),{events:t,pending:""};if(i>n&&t.push(e.slice(n,i)),i===e.length-1)return r(i);let s=Xa(e,i,1);if(s==="pending")return r(i);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[i+1]==="\x1B"){if(i+2>=e.length)return r(i);let d=Xa(e,i,2);if(d==="pending")return r(i);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=py(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(my,"parseKeypresses");function gn(){let e="";return{push(t){let n=my(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}o(gn,"createInputParser");import{createContext as hy}from"react";var Wa=hy({exit(){}});Wa.displayName="InternalAppContext";var Ha=Wa;import{EventEmitter as gy}from"node:events";import{createContext as yy}from"react";var wy={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},za=yy({stdin:wy,internal_eventEmitter:new gy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});za.displayName="InternalStdinContext";var qa=za;import{createContext as vy}from"react";var by={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Va=vy({stdout:by,write(){}});Va.displayName="InternalStdoutContext";var Ga=Va;import{createContext as ky}from"react";var xy={isTTY:!1,write(){return!0},on(){},off(){}},Ya=ky({stderr:xy,write(){}});Ya.displayName="InternalStderrContext";var Ja=Ya;import{createContext as Sy}from"react";var Qa=Sy({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Qa.displayName="InternalFocusContext";var Za=Qa;import{createContext as Ey}from"react";var ec=Ey({setCursorPosition(){}});ec.displayName="InternalCursorContext";var tc=ec;import Cy,{PureComponent as Ty}from"react";import*as yn from"node:fs";import{cwd as oc}from"node:process";import N from"react";import nc from"stack-utils";import Iy from"code-excerpt";var jr=o(e=>e?.replace(`file://${oc()}/`,""),"cleanupPath"),rc=new nc({cwd:oc(),internals:nc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
|
|
564
|
-
`).slice(1):void 0,n=t?
|
|
565
|
-
`).slice(1).map(a=>{let c=
|
|
635
|
+
`:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});pa(),_r(e,r,{skipStaticElements:!0});let i;e.staticNode?.yogaNode&&(i=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),_r(e.staticNode,i,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=ba(r),d=n?.columns??e.yogaNode.getComputedWidth(),u=n?.rows??e.yogaNode.getComputedHeight(),l=r.cursorPosition,f={screen:c,viewport:{width:d,height:u},cursor:{x:0,y:c.height,visible:!1},scrollHint:ma(),scrollRepaint:ha(),...l?{inputCursor:{x:l.x,y:l.y}}:{}};return{output:s,outputHeight:a,staticOutput:i?`${i.get().output}
|
|
636
|
+
`:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=zg;function U(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}o(U,"csi");function ka(e=1){return e===0?"":U(e,"A")}o(ka,"cursorUp");function qg(e=1){return e===0?"":U(e,"B")}o(qg,"cursorDown");function Vg(e=1){return e===0?"":U(e,"C")}o(Vg,"cursorForward");function Gg(e=1){return e===0?"":U(e,"D")}o(Gg,"cursorBack");function xa(e){return U(e,"G")}o(xa,"cursorTo");var Yg=U("G"),Sa=U("H");function Ea(e,t){let n="";return e<0?n+=Gg(-e):e>0&&(n+=Vg(e)),t<0?n+=ka(-t):t>0&&(n+=qg(t)),n}o(Ea,"cursorMove");var Or=U(2,"K");function Ia(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Or,n<e-1&&(t+=ka(1));return t+=Yg,t}o(Ia,"eraseLines");var Ca=U("r"),Ta="\x1B7",Ra="\x1B8";function _a(e,t){return U(e,t,"r")}o(_a,"setScrollRegion");function Aa(e=1){return U(e,"S")}o(Aa,"scrollUp");function Pa(e=1){return U(e,"T")}o(Pa,"scrollDown");var yt=U(0,"m");function Ma(e){return`\x1B]${e.join(";")}\x07`}o(Ma,"osc");function Jg(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}o(Jg,"osc8Id");function wt(e,t){if(!e)return He;let n={id:Jg(e),...t??{}},r=Object.entries(n).map(([i,s])=>`${i}=${s}`).join(":");return Ma(["8",r,e])}o(wt,"link");var He=Ma(["8","",""]);function Nr(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",i;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==i&&(i!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=wt(d.hyperlink)),i=d.hyperlink),d.style!==r&&(r!==""&&(a+=yt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}i!==void 0&&(a+=He,i=void 0),r!==""&&(a+=yt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
|
|
637
|
+
`)}]}o(Nr,"renderFullFrame");var Qg=Object.freeze([]),Zg=Object.freeze([]);function Te(e,t){if(e===t)return{patches:Qg,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:yt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}o(Te,"transitionStyle");function bt(e,t){let n=Te(e,t),r="";for(let i of n.patches)i.type==="stdout"&&(r+=i.content);return{str:r,current:n.current}}o(bt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:Zg,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:wt(t)}),{patches:n,current:t}}o(ae,"transitionHyperlink");function Oa(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}o(Oa,"needsWidthCompensation");var Re=class{static{o(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let i of n)this._diffMut.push(i);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},vt={type:"stdout",content:`
|
|
638
|
+
`};function kt(e,t,n){let r=t.width===Z.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let l=t.char.length>2?i:i+1;if(c+2>=l)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let u=r===2&&Oa(t.char);return u&&c+1<i&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),u&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}o(kt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(_e,"moveCursorTo");function xt(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=vt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=bt(s,m.style);kt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let u=ae(a,void 0);for(let f of u.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=u.current;let l=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(f=>l?[[ce],{dx:-f.x,dy:0}]:[[ce,vt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);let d=ae(a,void 0);for(let u of d.patches)e.txn(()=>[[u],{dx:0,dy:0}])}}o(xt,"renderFrameSlice");function $r(e,t,n,r){let i=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=i;a<=s;a++)ey(e,t,a)}o($r,"repaintFrameRows");function ey(e,t,n){let r="",i;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+yt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(i,a.hyperlink);for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);i=c.current;let d=bt(r,a.style);kt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(ey,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let i=Ce(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);xt(r,e,0,e.screen.height,n);let i=[{type:"clearTerminal",reason:t}];for(let s of r.diff)i.push(s);return i}o(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,i=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:i,prevHadScrollback:s,nextFitsViewport:a}}o(pn,"computeViewportState");function Na(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}o(Na,"shouldFullReset");function $a(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o($a,"shouldSkipDiff");var mn=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let i=r.inlineBottomAnchored??!1,s=Da(t,i),a=Da(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",i);let c=Na(s,a,Dr);if(c.reset)return ze(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return ty(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let u={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},l={...s,screen:va(s.screen,d.top,d.bottom,d.delta)};return[u,...La(l,a,i)]}return La(s,a,i)}reset(){}};function Lr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Lr,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");Lr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Lr(e,r.patches)}return{style:"",hyperlink:void 0}}o(Fr,"resetStyleAndHyperlink");function ty(e,t,n){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&$r(i,t,c.top,c.bottom);let d=ja(i,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(i,d.currentStyle,d.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height),Ka(i,t),i.diff)}o(ty,"renderScrollRepaint");function Fa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(i=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-i.x,dy:-r}])}o(Fa,"applyShrink");function ja(e,t,n,r){let i="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:u,prev:l,next:f}=c;if(r.growing&&u>=t.screen.height||r.skipRows&&u>=r.skipRows.top&&u<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!$a(l,f,m)){if(u<r.viewportY){a=!0;break}if(_e(e,d,u),f){let p=ae(s,f.hyperlink);Lr(e,p.patches),s=p.current;let g=bt(i,f.style);kt(e,f,g.str)&&(i=g.current)}else if(l){let p=Fr(e,i,s);i=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(ja,"diffPass");function Da(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}o(Da,"clampRestingCursor");function Ka(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=vt;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}o(Ka,"restoreCursor");function La(e,t,n=!1){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=ja(i,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(i,s.currentStyle,s.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height,n),Ka(i,t),i.diff)}o(La,"renderIncremental");var ny="\x1B[?25l",ry="\x1B[?25h",oy=`\x1B[2J${Sa}`,iy="\x1B[?2026h",sy="\x1B[?2026l";function ay(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ny;case"cursorShow":return ry;case"cursorMove":return Ea(e.x,e.y);case"cursorTo":return xa(e.col);case"eraseLine":return Or;case"clear":return Ia(e.count);case"clearTerminal":return oy;case"hyperlink":return wt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?Aa(r):Pa(r);return Ta+_a(t,n)+i+Ca+Ra}}}o(ay,"patchToBytes");function hn(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=ay(s);if(r.length!==0){if(n&&i){e.write(iy+r+sy);return}e.write(r)}}o(hn,"applyDiff");function Ba(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(Ba,"applyCellFrame");function St(e,t){return{screen:ya(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(St,"emptyFrame");import cy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function ue(e){return"isTTY"in e&&e.isTTY===!0&&!cy}o(ue,"shouldSynchronize");var dy=new WeakMap,Xa=dy;import{EventEmitter as _y}from"node:events";import Ay from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as sc}from"react";import Py from"cli-cursor";var uy=o(e=>e>=48&&e<=63,"isCsiParameterByte"),ly=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Wa=o(e=>e>=64&&e<=126,"isCsiFinalByte");function fy(e,t,n){let r=t+n+1,i=r;for(;i<e.length;i+=1){let s=e.codePointAt(i);if(s===void 0)return"pending";if(!(uy(s)||ly(s))&&!(s===91&&i===r))return Wa(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(fy,"parseCsiSequence");function py(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Wa(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(py,"parseSs3Sequence");function Ua(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return fy(e,t,n);if(r==="O")return py(e,t,n)}o(Ua,"parseControlSequence");function my(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,i=t+1+r;return{sequence:e.slice(t,i),nextIndex:i}}o(my,"parseEscapedCodePoint");function hy(e){let t=[],n=0,r=o(i=>({events:t,pending:e.slice(i)}),"pendingFrom");for(;n<e.length;){let i=e.indexOf("\x1B",n);if(i===-1)return t.push(e.slice(n)),{events:t,pending:""};if(i>n&&t.push(e.slice(n,i)),i===e.length-1)return r(i);let s=Ua(e,i,1);if(s==="pending")return r(i);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[i+1]==="\x1B"){if(i+2>=e.length)return r(i);let d=Ua(e,i,2);if(d==="pending")return r(i);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=my(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(hy,"parseKeypresses");function gn(){let e="";return{push(t){let n=hy(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}o(gn,"createInputParser");import{createContext as gy}from"react";var Ha=gy({exit(){}});Ha.displayName="InternalAppContext";var za=Ha;import{EventEmitter as yy}from"node:events";import{createContext as wy}from"react";var vy={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},qa=wy({stdin:vy,internal_eventEmitter:new yy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});qa.displayName="InternalStdinContext";var Va=qa;import{createContext as by}from"react";var ky={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Ga=by({stdout:ky,write(){}});Ga.displayName="InternalStdoutContext";var Ya=Ga;import{createContext as xy}from"react";var Sy={isTTY:!1,write(){return!0},on(){},off(){}},Ja=xy({stderr:Sy,write(){}});Ja.displayName="InternalStderrContext";var Qa=Ja;import{createContext as Ey}from"react";var Za=Ey({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Za.displayName="InternalFocusContext";var ec=Za;import{createContext as Iy}from"react";var tc=Iy({setCursorPosition(){}});tc.displayName="InternalCursorContext";var nc=tc;import Ty,{PureComponent as Ry}from"react";import*as yn from"node:fs";import{cwd as ic}from"node:process";import N from"react";import rc from"stack-utils";import Cy from"code-excerpt";var jr=o(e=>e?.replace(`file://${ic()}/`,""),"cleanupPath"),oc=new rc({cwd:ic(),internals:rc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
|
|
639
|
+
`).slice(1):void 0,n=t?oc.parseLine(t[0]):void 0,r=jr(n?.file),i,s=0;if(r&&n?.line&&yn.existsSync(r)){let a=yn.readFileSync(r,"utf8");if(i=Cy(a,n.line),i)for(let{line:c}of i)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&i&&N.createElement(q,{marginTop:1,flexDirection:"column"},i.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
|
|
640
|
+
`).slice(1).map(a=>{let c=oc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${jr(c.file)??""} line ${c.line} column ${c.column}`}," ","(",jr(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}o(Kr,"ErrorOverview");var Et=class extends Ry{static{o(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?Ty.createElement(Kr,{error:this.state.error}):this.props.children}};var My=" ",Oy="\x1B[Z",Ny="\x1B";function ac({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:i,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[u,l]=Br(!0),[f,m]=Br(void 0),[,p]=Br([]),g=qe(0),v=qe(0),w=qe(new _y);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(gn()),b=qe(void 0),I=M(()=>{b.current&&(clearImmediate(b.current),b.current=void 0)},[]),_=t.isTTY,W=M(()=>{y.current&&(t.removeListener("readable",y.current),y.current=void 0)},[t]),H=M(()=>{t.setRawMode(!1),W(),t.unref(),v.current=0,h.current.reset(),I()},[t,W,I]),A=M(x=>{_&&v.current>0&&H(),c(x)},[_,H,c]),Me=M(x=>{if(x===""&&a){A();return}x===Ny&&m(S=>S&&void 0)},[a,A]),Tt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),no=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Tt(x)})},[I,Tt]),En=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Tt(E)}h.current.hasPendingEscape()&&no()},[t,Tt,I,no]),ro=M(x=>{if(!_)throw t===Ay.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
|
|
566
641
|
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.
|
|
567
|
-
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),oo=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E+1;$<x.length;$++){let te=x[$];if(te?.isActive)return te.id}},[]),io=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E-1;$>=0;$--){let te=x[$];if(te?.isActive)return te.id}},[]),Rt=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return oo(x,S)??E}),x))},[oo]),_t=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return io(x,S)??E}),x))},[io]);
|
|
642
|
+
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),oo=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E+1;$<x.length;$++){let te=x[$];if(te?.isActive)return te.id}},[]),io=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E-1;$>=0;$--){let te=x[$];if(te?.isActive)return te.id}},[]),Rt=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return oo(x,S)??E}),x))},[oo]),_t=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return io(x,S)??E}),x))},[io]);sc(()=>{let x=o(E=>{!u||g.current===0||(E===My&&Rt(),E===Oy&&_t())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[u,Rt,_t]);let so=M(()=>{l(!0)},[]),ao=M(()=>{l(!1)},[]),co=M(x=>{p(S=>(S.some($=>$?.id===x)&&m(x),S))},[]),uo=M((x,{autoFocus:S})=>{p(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&m(E=>E??x)},[]),lo=M(x=>{m(S=>S===x?void 0:S),p(S=>{let E=S.filter($=>$.id!==x);return g.current=E.length,E})},[]),fo=M(x=>{p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),po=M(x=>{m(S=>S===x?void 0:S),p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);sc(()=>()=>{Py.show(n),_&&v.current>0&&H()},[n,_,H]);let Fc=Ve(()=>({exit:A}),[A]),jc=Ve(()=>({stdin:t,setRawMode:ro,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,ro,_,a]),Kc=Ve(()=>({stdout:n,write:i}),[n,i]),Bc=Ve(()=>({stderr:r,write:s}),[r,s]),Xc=Ve(()=>({setCursorPosition:d}),[d]),Uc=Ve(()=>({activeId:f,add:uo,remove:lo,activate:fo,deactivate:po,enableFocus:so,disableFocus:ao,focusNext:Rt,focusPrevious:_t,focus:co}),[f,uo,lo,fo,po,so,ao,Rt,_t,co]);return Ae.createElement(za.Provider,{value:Fc},Ae.createElement(Va.Provider,{value:jc},Ae.createElement(Ya.Provider,{value:Kc},Ae.createElement(Qa.Provider,{value:Bc},Ae.createElement(ec.Provider,{value:Uc},Ae.createElement(nc.Provider,{value:Xc},Ae.createElement(Et,{onError:A},e)))))))}o(ac,"App");ac.displayName="InternalApp";var cc=ac;var $y={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function dc(e){let t=0;for(let n of e)t|=$y[n];return t}o(dc,"resolveFlags");var le={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Xr=o((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Ur=o((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return i=>({x:i.x,y:Math.min(Math.max(i.y-n,0),r)})},"toVisibleCursor"),wn=o(()=>{},"noop"),Hy=27,zy=91,qy=63,Vy=117,Gy=48,Yy=57,Jy=o(e=>e>=Gy&&e<=Yy,"isDigitByte"),lc=o((e,t)=>{if(e[t]!==Hy||e[t+1]!==zy||e[t+2]!==qy)return;let n=t+3,r=n;for(;n<e.length&&Jy(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===Vy)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),Qy=o(e=>{for(let t=0;t<e.length;t++)if(lc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),Zy=o(e=>{let t=[],n=0;for(;n<e.length;){let r=lc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),Wr=o(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),ew=class{static{o(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Ly(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=rn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,i=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=Dy(this.onRender,i,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new mn({isTTY:!!t.stdout.isTTY}),this.prevFrame=St(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?By:Ky;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Fy(this.unmount,{alwaysLast:!1}),tn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=o(()=>this.options.stdout.columns?this.options.stdout.columns:Wy()?.columns??80,"getTerminalWidth");resized=o(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=o(()=>{},"resolveExitPromise");rejectExitPromise=o(()=>{},"rejectExitPromise");unsubscribeExit=o(()=>{},"unsubscribeExit");handleAppExit=o(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(Wr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=o(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let i=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:i,y:s}},"setCursorPosition");resetOutputTracking=o(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=o((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||i!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||i!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,i=n.write,s=o((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=o((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=i)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=o(()=>{if(this.prevFrame.screen.height===0)return;let t=St(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>hn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=o(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=o(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,Xy.DIRECTION_LTR)},"calculateLayout");onRender=o(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:i,staticOutput:s,frame:a}=Mr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
|
|
568
643
|
`;if(this.options.debug){c&&(this.fullStaticOutput+=s),this.writeStdout(this.fullStaticOutput+r);return}if(fe){c&&this.writeStdout(s),this.lastOutput=r,this.lastOutputToRender=r+`
|
|
569
|
-
`,this.lastOutputHeight=i;return}if(this.isScreenReaderEnabled){let w=ue(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=
|
|
644
|
+
`,this.lastOutputHeight=i;return}if(this.isScreenReaderEnabled){let w=ue(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=Uy(r,y,{trim:!1,hard:!0});if(c)this.writeStdout(h);else{let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+h)}this.lastOutput=r,this.lastOutputToRender=h,this.lastOutputHeight=h===""?0:h.split(`
|
|
570
645
|
`).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let u=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,l=o(w=>{w&&(u?u.push(w):this.writeStdout(w))},"emit"),f=u?{write:l}:null;l(this.computeReturnToRestSeq());let m=this.altScreenActive,g=this.options.stdout.isTTY&&i>=this.options.stdout.rows&&m?r:r+`
|
|
571
|
-
`;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=ue(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i;return}let w=ue(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=i,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!u&&ue(this.options.stdout);try{if(c?(v&&l(de),l(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&i<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&l(de),l(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Ur(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Xr(h.x-y.x,h.y-y.y);l(b),this.displayCursor=h}}finally{u&&this.flushCursorTxn(u)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i},"onRender");applyCellFrame=o((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},i=ue(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:i,synchronized:n?!1:i,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>
|
|
572
|
-
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),
|
|
573
|
-
`),ve}catch{return ve=-1,null}}o(
|
|
574
|
-
`),c=0,d=0,u=p,l+=1,f?.(m)}}let i=
|
|
575
|
-
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=pw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=mw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=yc[c]??"",s.shift=hw(c)||s.shift,s.ctrl=gw(c)||s.ctrl}return s}o(Gr,"parseKeypress");var Cw=50;function Yr(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(Yr,"resolveTerminalSize");var bn=Ew(null),Tw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var Cc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function Rw(e){for(let t of e)if(t.rawMode)return!0;return!1}o(Rw,"hasRawModeSubscribers");function _w({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(f=>{for(let m of r)m.listener(f)},"handleData"),d=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),u=o(()=>{let f=i;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),i=void 0},"detachInput"),l=o(()=>{if(i&&i!==e&&u(),!e||r.size===0){u();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&Rw(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),l(),()=>{r.delete(p),l()}},dispose(){r.clear(),u()}}}o(_w,"createTerminalInputController");var Aw=o(({children:e,runtime:t})=>{let[n,r]=Iw(()=>t.terminalSize);Ge(()=>{if(r(Yr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(Yr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=Ic(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Sc(()=>_w({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Sc(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:i,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,i]);return Ec(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function Pw(e){let t=e?.stdout??Tw,n=e?.stdin??Cc,r=o(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),i;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:o(()=>{i?.()},"exit"),terminalSize:Yr(t),isTTY:t?.isTTY===!0,writeRaw:o(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:o(()=>()=>{},"subscribeInput"),attachExit(s){i=s}}}o(Pw,"createRuntimeValue");function kn(e,t){let n=Pw(t),r=zr(Ec(Aw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(kn,"render");var be=mc,V=hc;function Mw(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&wc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}o(Mw,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),i=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=gn(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Ic(c=>{let{input:d,key:u}=Mw(Gr(c));r.current(d,u)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=i.current,u=typeof c=="string"?c:c.toString("utf8"),l=d?.push(u)??[u];for(let f of l)a(f);u.length>0&&(s.current=setTimeout(()=>{let f=i.current?.flushPendingEscape();f&&a(f)},Cw))},{isActive:n,rawMode:!0})}o(xn,"useInput");function Qr(){let e=Jr(bn),t=e?.stdin??Cc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(Qr,"useStdin");function Sn(){return{exit:Jr(bn)?.exit??(()=>{})}}o(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Jr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(i)return i.subscribeInput(m=>{d.current(m)},{rawMode:r});let u=s,l=u.isRaw;r&&c&&l===!1&&a(!0);let f=o(m=>{d.current(m)},"handleData");return u.on?.("data",f),()=>{if(u.off?.("data",f),r&&c&&l===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(Zr,"useTerminalInput");import{jsx as hW}from"react/jsx-runtime";import{useInsertionEffect as yW,useMemo as wW}from"react";import{jsx as nH,jsxs as rH}from"react/jsx-runtime";import{jsx as MW}from"react/jsx-runtime";import NW,{useEffect as $W,useImperativeHandle as DW,useMemo as LW,useRef as FW,useCallback as jW,useState as KW}from"react";var eo=class{static{o(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Ow=1e3;var zW=new eo(Ow);var jw=40;function Kw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let i=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>i.includes(s))})}o(Kw,"filterSessionPickerItems");function Bw(e,t,n){let r=Math.max(1,n),i=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(i/r)*r;return{items:e.slice(s,s+r),selectedIndex:i,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}o(Bw,"buildSessionPickerPage");function Xw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${i} ${s}:${a}`}o(Xw,"formatTimestamp");function Uw({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=Sn(),[a,c]=to(""),[d,u]=to(0),[l,f]=to(!1),m=Fw(!1),p=Lw(()=>Kw(e,a),[e,a]),g=Bw(p,d,i),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,jw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)u(h=>Math.max(0,h-1));else if(y.downArrow)u(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)u(h=>Math.max(0,h-i));else if(y.pageDown)u(h=>Math.min(Math.max(0,p.length-1),h+i));else if(y.home)u(0);else if(y.end)u(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),u(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),u(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),u(0))}}),Ye(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Ct(V,{bold:!0,color:"cyan",children:"Resume a session"}),Ye(V,{children:["Search: ",Ct(V,{color:"yellow",children:a||"type to filter"})]}),Ct(V,{dimColor:!0,children:l?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Ye(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Ct(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Ye(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Xw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Ye(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Ye(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}o(Uw,"SessionPicker");async function Ac(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,i=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Ct(Uw,{sessions:e,pageSize:a,onSelect:o(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:o(d=>{i=!0,s=d},"onSelectionError"),onCancel:o(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(i)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}o(Ac,"runSessionPicker");var Pc=65536,Mc=48;function Hw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Ww.homedir(),".kodax");return Qe.join(t,"sessions")}o(Hw,"defaultSessionsDir");function Oc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(Oc,"isSessionFile");async function zw(e){let t=[],n;try{n=await Je.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let i=Qe.join(e,r.name);if(r.isFile()&&Oc(r.name)&&!r.name.startsWith("archived-")){t.push(i);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Je.readdir(i,{withFileTypes:!0}))s.isFile()&&Oc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(i,s.name))}catch{}}return t}o(zw,"collectActiveSessionFiles");function Nc(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o(Nc,"normalizeComparableRoot");function qw(e,t){let n=Nc(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>Nc(s)===n)}o(qw,"matchesProjectRoot");async function Vw(e){let t;try{t=await Je.open(e,"r");let n=Buffer.allocUnsafe(Pc),{bytesRead:r}=await t.read(n,0,Pc,0);if(r===0)return;let i=n.toString("utf8",0,r),s=i.indexOf(`
|
|
646
|
+
`;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=ue(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i;return}let w=ue(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=i,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!u&&ue(this.options.stdout);try{if(c?(v&&l(de),l(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&i<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&l(de),l(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Ur(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Xr(h.x-y.x,h.y-y.y);l(b),this.displayCursor=h}}finally{u&&this.flushCursorTxn(u)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i},"onRender");applyCellFrame=o((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},i=ue(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:i,synchronized:n?!1:i,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>Ba(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=o(()=>{this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=o(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=o(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],i=o(c=>{c&&r.push(c)},"emit"),s={write:i};i(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();i(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:u,frame:l}=Mr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(l,s),l?.inputCursor){let f=Ur(l,!this.altScreenActive),m=f(l.cursor),p=f(l.inputCursor),g=Xr(p.x-m.x,p.y-m.y);i(g),this.displayCursor=p}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=u}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=ue(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=uc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},uc.createElement(cc,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,wn):(se.updateContainerSync(n,this.container,null,wn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=Ur(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Xr(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(o(u=>{typeof u.flush=="function"&&(r?u.flush():typeof u.cancel=="function"&&u.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
|
|
647
|
+
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),Xa.delete(this.options.stdout);let{exitResult:s}=this,a=o(()=>{Wr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!Wr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=jy((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let i=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||i==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],i=o(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=Zy(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=o(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let u of d)r.push(u);Qy(r)&&(i(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(i,200);this.cancelKittyDetection=i,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${dc(t)}u`),this.kittyProtocolEnabled=!0}},fc=ew;var It=class{static{o(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new fc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=o(t=>{this.engineInstance.render(t)},"render");unmount=o(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=o(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=o(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=o((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=o((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=o(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=o(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=o(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function mc(){if(ve===-1)return null;if(ve!==null)return ve;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return ve=-1,null;let t=e==="1"||e==="true"?iw(ow(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=nw(t,"a"),pc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
|
|
648
|
+
`),ve}catch{return ve=-1,null}}o(mc,"resolveTraceFd");function sw(e){let t=mc();if(t!==null)try{pc(t,e)}catch{}}o(sw,"traceLine");var Hr=new WeakMap,aw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},cw={isTTY:!1,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},dw={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function uw(e={}){return e instanceof tw?{stdout:e}:e}o(uw,"getOptions");function lw(e,t,n){let r=Hr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Hr.set(e,r)),r}o(lw,"getInstance");function zr(e,t){let n={stdout:aw,stdin:dw,stderr:cw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...uw(t)};if(mc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((m,...p)=>(c+=1,d+=typeof m=="string"?Buffer.byteLength(m,"utf8"):m?.length??0,a(m,...p)));let u=0,l=0,f=n.onRender;n.onRender=m=>{let p=rw.now(),g=u===0?0:p-u,v=s,w=v.columns??0,y=v.rows??0;return sw(`frame=${l} renderTime=${m.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
|
|
649
|
+
`),c=0,d=0,u=p,l+=1,f?.(m)}}let i=lw(n.stdout,()=>new It(n),n.concurrent??!1);return i.render(e),{rerender:i.render,unmount(){i.unmount()},waitUntilExit:i.waitUntilExit,cleanup:o(()=>{Hr.delete(n.stdout)},"cleanup"),clear:i.clear}}o(zr,"render");var hc=q,gc=K;import{Buffer as pw}from"node:buffer";var mw=/^(?:\x1b)([a-zA-Z0-9])$/,hw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,wc={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},vc=[...Object.values(wc),"backspace"],gw=o(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),yw=o(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),bc=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,ww=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,vw={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},bw={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},yc={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24"},kc=o(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),qr=o(e=>kc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function xc(e){return e===3?"release":e===2?"repeat":"press"}o(xc,"resolveEventType");function Sc(e){return{ctrl:!!(e&le.ctrl),shift:!!(e&le.shift),meta:!!(e&le.meta),option:!!(e&le.alt),super:!!(e&le.super),hyper:!!(e&le.hyper),capsLock:!!(e&le.capsLock),numLock:!!(e&le.numLock)}}o(Sc,"parseKittyModifiers");function kw(e){let t=bc.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,i=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!kc(n))return null;let a;s&&(a=s.split(":").map(u=>qr(Number.parseInt(u,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):yc[n]?(c=yc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=qr(n).toLowerCase(),d=!0),d&&!a&&(a=qr(n)),{name:c,...Sc(r),eventType:xc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}o(kw,"parseKittyKeypress");function xw(e){let t=ww.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),i=Number.parseInt(t[3],10),s=t[4],a=s==="~"?bw[n]:vw[s];return a?{name:a,...Sc(r),eventType:xc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}o(xw,"parseKittySpecialKey");var Vr="\x1B[200~",Sw="\x1B[201~";function Ew(e){if(!e.startsWith(Vr))return null;let t=e.indexOf(Sw,Vr.length);return t===-1?null:e.slice(Vr.length,t)}o(Ew,"extractBracketedPaste");function Gr(e=""){let t=e,n;if(pw.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=""),typeof t=="string"){let a=Ew(t);if(a!==null)return{name:"paste",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isPaste:!0,isPrintable:!1,text:a}}let r=kw(t);if(r)return r;let i=xw(t);if(i)return i;if(bc.test(t))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isKittyProtocol:!0,isPrintable:!1};let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(s.sequence=s.sequence||t||s.name,t==="\r"||t==="\x1B\r")s.raw=void 0,s.name="return",s.option=t.length===2;else if(t===`
|
|
650
|
+
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=mw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=hw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=wc[c]??"",s.shift=gw(c)||s.shift,s.ctrl=yw(c)||s.ctrl}return s}o(Gr,"parseKeypress");var Tw=50;function Yr(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(Yr,"resolveTerminalSize");var bn=Iw(null),Rw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var Tc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function _w(e){for(let t of e)if(t.rawMode)return!0;return!1}o(_w,"hasRawModeSubscribers");function Aw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(f=>{for(let m of r)m.listener(f)},"handleData"),d=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),u=o(()=>{let f=i;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),i=void 0},"detachInput"),l=o(()=>{if(i&&i!==e&&u(),!e||r.size===0){u();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&_w(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),l(),()=>{r.delete(p),l()}},dispose(){r.clear(),u()}}}o(Aw,"createTerminalInputController");var Pw=o(({children:e,runtime:t})=>{let[n,r]=Cw(()=>t.terminalSize);Ge(()=>{if(r(Yr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(Yr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=Cc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Ec(()=>Aw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Ec(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:i,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,i]);return Ic(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function Mw(e){let t=e?.stdout??Rw,n=e?.stdin??Tc,r=o(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),i;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:o(()=>{i?.()},"exit"),terminalSize:Yr(t),isTTY:t?.isTTY===!0,writeRaw:o(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:o(()=>()=>{},"subscribeInput"),attachExit(s){i=s}}}o(Mw,"createRuntimeValue");function kn(e,t){let n=Mw(t),r=zr(Ic(Pw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(kn,"render");var be=hc,V=gc;function Ow(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&vc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}o(Ow,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),i=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=gn(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Cc(c=>{let{input:d,key:u}=Ow(Gr(c));r.current(d,u)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=i.current,u=typeof c=="string"?c:c.toString("utf8"),l=d?.push(u)??[u];for(let f of l)a(f);u.length>0&&(s.current=setTimeout(()=>{let f=i.current?.flushPendingEscape();f&&a(f)},Tw))},{isActive:n,rawMode:!0})}o(xn,"useInput");function Qr(){let e=Jr(bn),t=e?.stdin??Tc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(Qr,"useStdin");function Sn(){return{exit:Jr(bn)?.exit??(()=>{})}}o(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Jr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(i)return i.subscribeInput(m=>{d.current(m)},{rawMode:r});let u=s,l=u.isRaw;r&&c&&l===!1&&a(!0);let f=o(m=>{d.current(m)},"handleData");return u.on?.("data",f),()=>{if(u.off?.("data",f),r&&c&&l===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(Zr,"useTerminalInput");import{jsx as wW}from"react/jsx-runtime";import{useInsertionEffect as bW,useMemo as kW}from"react";import{jsx as iH,jsxs as sH}from"react/jsx-runtime";import{jsx as $W}from"react/jsx-runtime";import LW,{useEffect as FW,useImperativeHandle as jW,useMemo as KW,useRef as BW,useCallback as XW,useState as UW}from"react";var eo=class{static{o(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Nw=1e3;var GW=new eo(Nw);var Kw=40;function Bw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let i=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>i.includes(s))})}o(Bw,"filterSessionPickerItems");function Xw(e,t,n){let r=Math.max(1,n),i=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(i/r)*r;return{items:e.slice(s,s+r),selectedIndex:i,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}o(Xw,"buildSessionPickerPage");function Uw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${i} ${s}:${a}`}o(Uw,"formatTimestamp");function Ww({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=Sn(),[a,c]=to(""),[d,u]=to(0),[l,f]=to(!1),m=jw(!1),p=Fw(()=>Bw(e,a),[e,a]),g=Xw(p,d,i),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,Kw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)u(h=>Math.max(0,h-1));else if(y.downArrow)u(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)u(h=>Math.max(0,h-i));else if(y.pageDown)u(h=>Math.min(Math.max(0,p.length-1),h+i));else if(y.home)u(0);else if(y.end)u(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),u(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),u(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),u(0))}}),Ye(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Ct(V,{bold:!0,color:"cyan",children:"Resume a session"}),Ye(V,{children:["Search: ",Ct(V,{color:"yellow",children:a||"type to filter"})]}),Ct(V,{dimColor:!0,children:l?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Ye(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Ct(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Ye(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Uw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Ye(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Ye(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}o(Ww,"SessionPicker");async function Pc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,i=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Ct(Ww,{sessions:e,pageSize:a,onSelect:o(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:o(d=>{i=!0,s=d},"onSelectionError"),onCancel:o(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(i)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}o(Pc,"runSessionPicker");var Mc=65536,Oc=48;function zw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Hw.homedir(),".kodax");return Qe.join(t,"sessions")}o(zw,"defaultSessionsDir");function Nc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(Nc,"isSessionFile");async function qw(e){let t=[],n;try{n=await Je.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let i=Qe.join(e,r.name);if(r.isFile()&&Nc(r.name)&&!r.name.startsWith("archived-")){t.push(i);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Je.readdir(i,{withFileTypes:!0}))s.isFile()&&Nc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(i,s.name))}catch{}}return t}o(qw,"collectActiveSessionFiles");function $c(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o($c,"normalizeComparableRoot");function Vw(e,t){let n=$c(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>$c(s)===n)}o(Vw,"matchesProjectRoot");async function Gw(e){let t;try{t=await Je.open(e,"r");let n=Buffer.allocUnsafe(Mc),{bytesRead:r}=await t.read(n,0,Mc,0);if(r===0)return;let i=n.toString("utf8",0,r),s=i.indexOf(`
|
|
576
651
|
`);if(s>=0)return i.slice(0,s).trim();let a=await Je.readFile(e,"utf8"),c=a.indexOf(`
|
|
577
|
-
`);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}o(
|
|
578
|
-
`).length-1-r)}o(
|
|
652
|
+
`);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}o(Gw,"readFirstLine");async function Yw(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Je.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
|
|
653
|
+
`).length-1-r)}o(Yw,"readMessageCount");function Jw(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}o(Jw,"runtimeSummary");async function Qw(e,t){try{let n=await Gw(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let i=r;if(i._type!=="meta"||i.scope==="managed-task-worker"||!Vw(i,t))return;let s=await Yw(e,i);if(s<=0)return;let a=typeof i.createdAt=="string"?i.createdAt:void 0,c=Jw(i);return{id:Qe.basename(e,".jsonl"),title:typeof i.title=="string"?i.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}o(Qw,"readResumeCandidate");async function Dc(e){try{let t=e.sessionsDir??zw();await Fs(t),await Je.mkdir(t,{recursive:!0});let n=await qw(t),r=[],i=new Set;for(let s=0;s<n.length;s+=Oc){let a=await Promise.all(n.slice(s,s+Oc).map(c=>Qw(c,e.projectRoot)));for(let c of a)c&&!i.has(c.id)&&(i.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}o(Dc,"listCliResumeSessions");async function Lc(e,t={}){return Pc(e,t)}o(Lc,"runCliResumePicker");async function Zw(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
|
|
579
654
|
`);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
|
|
580
|
-
`)}o(
|
|
655
|
+
`)}o(Zw,"printResumeNotice");async function JH(e={}){let t=e.listSessions??Dc,n=e.pickSession??Lc,r=e.notify??Zw,i=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(i.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(i,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}o(JH,"resolveBareResume");export{JH as resolveBareResume};
|