@kodax-ai/kodax 0.7.85 → 0.7.86

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +93 -1
  2. package/README.md +1867 -1841
  3. package/README_CN.md +1136 -1130
  4. package/dist/chunks/{agent-OQ37XUWF.js → agent-IO6TXNCV.js} +1 -1
  5. package/dist/chunks/argument-completer-JMICSGL6.js +2 -0
  6. package/dist/chunks/chunk-2RAXDUC7.js +379 -0
  7. package/dist/chunks/{chunk-MJ4G5ZCW.js → chunk-A5VQGXH2.js} +1 -1
  8. package/dist/chunks/{chunk-TBBY2DKE.js → chunk-AAFFS6RU.js} +2 -2
  9. package/dist/chunks/{chunk-IA246OAN.js → chunk-B36G256E.js} +2 -2
  10. package/dist/chunks/{chunk-3E4OSFP2.js → chunk-G5FGIRDJ.js} +136 -137
  11. package/dist/chunks/{chunk-RSOAHVUR.js → chunk-GVGLYVG4.js} +1 -1
  12. package/dist/chunks/chunk-MFCPQZ7E.js +519 -0
  13. package/dist/chunks/chunk-Q6UAGROD.js +415 -0
  14. package/dist/chunks/{chunk-IWRNGH4M.js → chunk-R4EHASEN.js} +5 -5
  15. package/dist/chunks/{chunk-ZVOXWLT6.js → chunk-U6HNMLNN.js} +226 -214
  16. package/dist/chunks/{chunk-ODRLFQQH.js → chunk-UKCDCVMD.js} +1 -1
  17. package/dist/chunks/{chunk-CZCEFGQG.js → chunk-XA4ENCAH.js} +1 -1
  18. package/dist/chunks/{chunk-SR4E5FQK.js → chunk-XUKLF26Q.js} +2 -2
  19. package/dist/chunks/{compaction-config-3WLLNN57.js → compaction-config-5RMG22CY.js} +1 -1
  20. package/dist/chunks/{construction-bootstrap-CZ6NWEWQ.js → construction-bootstrap-4DGAYOWH.js} +1 -1
  21. package/dist/chunks/{dist-NFLLOZWF.js → dist-DFW7MXT7.js} +1 -1
  22. package/dist/chunks/host-6MMHYTI5.js +2 -0
  23. package/dist/chunks/run-manager-ISQSWCAM.js +2 -0
  24. package/dist/chunks/{utils-KFLK3EHJ.js → utils-LV7FHKYN.js} +1 -1
  25. package/dist/index.d.ts +8 -8
  26. package/dist/index.js +1 -1
  27. package/dist/kodax_bootstrap.js +1 -1
  28. package/dist/kodax_cli.js +1459 -1411
  29. package/dist/kodax_resume.js +78 -76
  30. package/dist/runtime-worker.js +1467 -1419
  31. package/dist/sandbox-workspace-session.js +346 -302
  32. package/dist/sdk-a2a.d.ts +5 -5
  33. package/dist/sdk-a2a.js +1 -1
  34. package/dist/sdk-agent.js +1 -1
  35. package/dist/sdk-coding.d.ts +8 -8
  36. package/dist/sdk-coding.js +1 -1
  37. package/dist/sdk-experimental-memory.js +1 -1
  38. package/dist/sdk-mcp.js +1 -1
  39. package/dist/sdk-repl.d.ts +9 -11
  40. package/dist/sdk-repl.js +1 -1
  41. package/dist/sdk-runtime.d.ts +14 -6
  42. package/dist/sdk-runtime.js +1 -1
  43. package/dist/sdk-sandbox.d.ts +1 -1
  44. package/dist/sdk-sandbox.js +1 -1
  45. package/dist/sdk-session.d.ts +3 -3
  46. package/dist/sdk-session.js +1 -1
  47. package/dist/sdk-skills.js +1 -1
  48. package/dist/semantic-worker.js +63 -64
  49. package/dist/types-chunks/{bash-prefix-extractor.d-BnZQDirs.d.ts → bash-prefix-extractor.d-QqKtuLZm.d.ts} +9 -3
  50. package/dist/types-chunks/{guardrail.d-BCkgaWT1.d.ts → guardrail.d-Y_AIh8-I.d.ts} +1 -7
  51. package/dist/types-chunks/{public-api.d-N6G6Jw8X.d.ts → public-api.d-Cg-4GTbK.d.ts} +1 -1
  52. package/dist/types-chunks/{repl.d-BkTIOkJD.d.ts → repl.d-Bhrbueab.d.ts} +4 -4
  53. package/dist/types-chunks/{sdk-session-DLkZTOc-.d.ts → sdk-session-fQ_KENev.d.ts} +1 -1
  54. package/dist/types-chunks/{shell-command-sets.d-BrLw-WN9.d.ts → shell-command-sets.d-DRGjd_7Q.d.ts} +1 -1
  55. package/dist/types-chunks/{types.d-Ch3BD97c.d.ts → types.d-BRrJU4pb.d.ts} +1 -1
  56. package/dist/types-chunks/{utils.d-BI-kjuev.d.ts → utils.d-BIhh_BqE.d.ts} +3 -3
  57. package/package.json +1 -1
  58. package/dist/chunks/argument-completer-IMRSIF2N.js +0 -2
  59. package/dist/chunks/chunk-2XJQNFVR.js +0 -379
  60. package/dist/chunks/chunk-CDWYKVZC.js +0 -482
  61. package/dist/chunks/chunk-RTFVMEF6.js +0 -415
  62. package/dist/chunks/host-LWUSSCWH.js +0 -2
  63. package/dist/chunks/run-manager-PBMOVP7A.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- var zc=Object.defineProperty;var i=(e,t)=>zc(e,"name",{value:t,configurable:!0});var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er,ea,ta=Pt(()=>{Er=class{static{i(this,"WebSocketStub")}},ea=Er});var an,na=Pt(()=>{"use strict";ta();an=global;an.WebSocket||=ea;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 ra,Ir,ia=Pt(()=>{ra=i(()=>{},"noop"),Ir={initialize:ra,connectToDevTools:ra}});var Pg={};var oa=Pt(()=>{"use strict";na();ia();Ir.initialize();Ir.connectToDevTools()});import Ye from"node:fs/promises";import Jw from"node:os";import Qe from"node:path";import R from"fs/promises";import Ds from"fs";import P from"path";import Cn from"path";import{createHash as Jc}from"crypto";import{execFile as qc}from"child_process";import Vc from"path";import{promisify as Gc}from"util";var dv=Gc(qc);function In(e){if(!(!e||!e.trim()))return Vc.resolve(e).replace(/\\/g,"/")}i(In,"normalizePath");function pi(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"}}i(pi,"resolveSessionRuntimeInfo");var Ze="_unknown",mi=80;function Yc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}i(Yc,"caseFold");function Qc(e){return Yc(Cn.resolve(e).replace(/\\/g,"/"))}i(Qc,"normalizeRoot");function hi(e){return Jc("sha256").update(e).digest("hex").slice(0,10)}i(hi,"shortHash");function Zc(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>mi?t.slice(t.length-mi):t}i(Zc,"slugify");function ed(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=Qc(e),n=Zc(t),r=n?`${n}-${hi(t)}`:hi(t),o=Cn.basename(Cn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:o}}i(ed,"deriveProjectKeyFromRoot");function gi(e){let t=pi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return ed(n)}i(gi,"deriveProjectKeyFromData");import Zt from"node:fs/promises";import mt from"node:path";import{AsyncLocalStorage as td}from"node:async_hooks";var nd=new td;function Mt(e){let t=nd.getStore()?.credential;return t?et(e,t,new WeakMap):e}i(Mt,"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 o={};n.set(e,o);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]");o[c]=et(a.value,t,n)}return o}i(et,"redactCredentialValue");import{AsyncLocalStorage as rd}from"node:async_hooks";var jv=new rd;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},yi={...tt,multimodalSupport:"image-input"},Ot={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},wi={...Ot,multimodalSupport:"image-input"};import yb from"@anthropic-ai/sdk";import{parse as rb}from"partial-json";import Ob from"openai";import{ClientSideConnection as Qb,PROTOCOL_VERSION as Zb,ndJsonStream as ek}from"@agentclientprotocol/sdk";var Hb=Object.freeze({status:"terminated"}),zb=Object.freeze({status:"already-exited"}),qb=Object.freeze({status:"unknown"}),Vb=String.raw`
2
+ var Gc=Object.defineProperty;var i=(e,t)=>Gc(e,"name",{value:t,configurable:!0});var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Tr,ra,ia=Pt(()=>{Tr=class{static{i(this,"WebSocketStub")}},ra=Tr});var dn,oa=Pt(()=>{"use strict";ia();dn=global;dn.WebSocket||=ra;dn.window||=global;dn.self||=global;dn.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 sa,Rr,aa=Pt(()=>{sa=i(()=>{},"noop"),Rr={initialize:sa,connectToDevTools:sa}});var Bg={};var ca=Pt(()=>{"use strict";oa();aa();Rr.initialize();Rr.connectToDevTools()});import Ye from"node:fs/promises";import sv from"node:os";import Qe from"node:path";import R from"fs/promises";import js from"fs";import P from"path";import Rn from"path";import{createHash as Zc}from"crypto";import{execFile as Jc}from"child_process";import Yc from"path";import{promisify as Qc}from"util";var vv=Qc(Jc);function Tn(e){if(!(!e||!e.trim()))return Yc.resolve(e).replace(/\\/g,"/")}i(Tn,"normalizePath");function gi(e){let t=Tn(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=Tn(e.runtimeInfo?.executionCwd??t),r=Tn(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}i(gi,"resolveSessionRuntimeInfo");var Ze="_unknown",yi=80;function ed(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}i(ed,"caseFold");function td(e){return ed(Rn.resolve(e).replace(/\\/g,"/"))}i(td,"normalizeRoot");function wi(e){return Zc("sha256").update(e).digest("hex").slice(0,10)}i(wi,"shortHash");function nd(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>yi?t.slice(t.length-yi):t}i(nd,"slugify");function rd(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=td(e),n=nd(t),r=n?`${n}-${wi(t)}`:wi(t),o=Rn.basename(Rn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:o}}i(rd,"deriveProjectKeyFromRoot");function vi(e){let t=gi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return rd(n)}i(vi,"deriveProjectKeyFromData");import tn from"node:fs/promises";import mt from"node:path";import{AsyncLocalStorage as id}from"node:async_hooks";var od=new id;function Mt(e){let t=od.getStore()?.credential;return t?et(e,t,new WeakMap):e}i(Mt,"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 o={};n.set(e,o);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]");o[c]=et(a.value,t,n)}return o}i(et,"redactCredentialValue");import{AsyncLocalStorage as sd}from"node:async_hooks";var Gv=new sd;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},bi={...tt,multimodalSupport:"image-input"},Ot={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},ki={...Ot,multimodalSupport:"image-input"};import Tb from"@anthropic-ai/sdk";import{parse as pb}from"partial-json";import Xb from"openai";import{ClientSideConnection as ck,PROTOCOL_VERSION as dk,ndJsonStream as lk}from"@agentclientprotocol/sdk";var tk=Object.freeze({status:"terminated"}),nk=Object.freeze({status:"already-exited"}),rk=Object.freeze({status:"unknown"}),ik=String.raw`
3
3
  using System;
4
4
  using System.Runtime.InteropServices;
5
5
  using System.Text;
@@ -86,8 +86,8 @@ public static class KodaXNativeProcessSnapshot {
86
86
  CloseHandle(snapshot);
87
87
  }
88
88
  }
89
- }`;import Ii from"node:fs";import Ci from"node:os";import Ti from"node:path";var Cd="gpt-5.4",Td="auto-gemini-3",Rd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],_d=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Ri(e){let t=new Set,n=[];for(let r of e){let o=r.trim();if(!o)continue;let s=o.toLowerCase();t.has(s)||(t.add(s),n.push(o))}return n}i(Ri,"dedupePreserveOrder");function Ad(){let e=Ti.join(Ci.homedir(),".codex","config.toml");try{return Ii.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Ad,"readCodexConfiguredModel");function Pd(){let e=Ti.join(Ci.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ii.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}}i(Pd,"readGeminiConfiguredModel");function Oe(){return Ad()||Cd}i(Oe,"getCodexCliDefaultModel");function Ne(){return Pd()||Td}i(Ne,"getGeminiCliDefaultModel");function nt(){return Ri([Oe(),...Rd])}i(nt,"getCodexCliKnownModels");function rt(){return Ri([Ne(),..._d])}i(rt,"getGeminiCliKnownModels");var Nk=Ne(),Lk=rt();var qk=Oe(),Vk=nt();import{existsSync as Ud,readFileSync as Xd}from"node:fs";import De from"node:path";import{fileURLToPath as Wd}from"node:url";var _i=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Ai=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Pi=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Mi=["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"],Oi=["max_tokens","max_completion_tokens"],Ni=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Li=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(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}i(ke,"requireString");function Le(e,t){if(e!==void 0)return ke(e,t)}i(Le,"optionalString");function Fi(e,t){if(e!==void 0){if(typeof e!="string"||!Oi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Fi,"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}}i(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}}i(D,"optionalBoolean");function Di(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}]`))}}i(Di,"optionalStringArray");function Od(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,o]of Object.entries(e))n[r]=ke(o,`${t}.${r}`);return n}i(Od,"optionalStringMap");function Nd(e,t){if(e!==void 0){if(typeof e!="string"||!Mi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Nd,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!_i.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${_i.join(", ")}, got ${JSON.stringify(e)}`);return e}i(_n,"requireReasoningCapability");function Ld(e,t){if(typeof e!="string"||!Ai.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ai.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Ld,"requireEffortStrategy");function Dd(e,t){if(e!==void 0){if(typeof e!="string"||!Pi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Pi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Dd,"optionalThinkingStrategy");function $i(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Ld(e.effortStrategy,`${t}.effortStrategy`),r=Nd(e.reasoningPreset,`${t}.reasoningPreset`),o=Dd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=Le(e.defaultEffort,`${t}.defaultEffort`),a=Od(e.effortAliases,`${t}.effortAliases`),c=Di(e.disabledEfforts,`${t}.disabledEfforts`),d=Di(e.localRejectEfforts,`${t}.localRejectEfforts`),l=D(e.allowCustomEffort,`${t}.allowCustomEffort`),u=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),o!==void 0&&(y.thinkingStrategy=o),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`),...Le(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:Le(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 l!==void 0&&(y.allowCustomEffort=l),u!==void 0&&(y.supportsReasoningEffort=u),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}i($i,"validateReasoningProfile");function ji(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?$i(n,`${t}.reasoningProfile`):$i(r,`${t}.reasoningCapabilityV2`)}i(ji,"validateReasoningProfileField");function $d(e,t){if(typeof e!="string"||!Ni.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ni.join(", ")}, got ${JSON.stringify(e)}`);return e}i($d,"requireProfileName");function Fd(e,t){if(typeof e!="string"||!Li.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Li.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Fd,"requireVerifyStrategy");function jd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=Le(e.wireModel,`${t}.wireModel`),o=Le(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=Fi(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=D(e.replayReasoningContent,`${t}.replayReasoningContent`),u=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=ji(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),o!==void 0&&(g.displayName=o),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),l!==void 0&&(g.replayReasoningContent=l),u!==void 0&&(g.strictThinkingSignature=u),f!==void 0&&(g.streamMaxDurationMs=f),g}i(jd,"validateModelDescriptor");function Kd(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,o]of Object.entries(e))n[r]=_n(o,`${t}.${r}`);return n}i(Kd,"validateModelReasoningCapabilities");function Bd(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`),o=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=ji(e,`providers.${t}`),a=$d(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Fd(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`),l=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=Fi(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Kd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=Le(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)=>jd(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:o,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),l!==void 0&&(w.maxOutputTokens=l),u!==void 0&&(w.maxOutputTokensField=u),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}i(Bd,"validateProviderEntry");function Ki(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,o]of Object.entries(e.providers))n[r]=Bd(o,r);return{version:1,updatedAt:t,providers:n}}i(Ki,"validateProviderCapabilitiesJson");var Hd=Object.freeze({native:tt,"image-input-native":yi,"cli-bridge":Ot,"image-input-cli-bridge":wi}),$t=null;function zd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Wd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Ud(n))return n;return t[0]}i(zd,"resolveJsonPath");function qd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Bi(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Bi(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(qd,"deepFreezeSnapshot");function Bi(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)}i(Bi,"freezeReasoningProfile");function Vd(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}'`)}i(Vd,"resolveCliBridgeModels");function Gd(e,t){let n=Hd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let o=Vd(e),s={model:o.model,models:o.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}i(Gd,"buildSnapshot");function Ui(){if($t)return $t;let e=zd(),t;try{let o=Xd(e,"utf8");t=JSON.parse(o)}catch(o){let s=o instanceof Error?o.message:String(o);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Ki(t),r={};for(let[o,s]of Object.entries(n.providers))r[o]=qd(Gd(o,s));return $t=Object.freeze(r),$t}i(Ui,"getProviderSnapshots");import wx from"@anthropic-ai/sdk";var Ft=Ui();var Xi=process.env.KODAX_PROVIDER??"zhipu-coding";var Tl=[];function z(e){let t=Mt(e),n=Tl.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${so(t)}
90
- `)}catch{}}i(z,"emitKodaXDiagnostic");function so(e){let t=Mt(e),n=Rl(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}i(so,"formatKodaXDiagnostic");function Rl(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)}}i(Rl,"formatDiagnosticDetail");var it=class e{static{i(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??_l,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))}},ao=0;function _l(){ao+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ao}-${e}`}i(_l,"defaultNextSpanId");var co=0;function Al(){co+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${co}-${e}`}i(Al,"defaultNextTraceId");function Dn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Al)(),r=t(),o=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:o},c=!1,d,l,u=new it({id:`${n}-root`,traceId:n,name:o,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}i(Dn,"createTrace");var $n=[];function Fn(e){for(let t of $n)try{t.onSpanStart(e)}catch{}}i(Fn,"_emitSpanStart");function jn(e){for(let t of $n)try{t.onSpanEnd(e)}catch{}}i(jn,"_emitSpanEnd");function Kn(e){for(let t of $n)try{t.onTraceEnd(e)}catch{}}i(Kn,"_emitTraceEnd");var jt=class{static{i(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})}},lo=new jt;var Dl=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var oI=new Set(Dl);var JI=String.raw`
89
+ }`;import Ri from"node:fs";import _i from"node:os";import Ai from"node:path";var _d="gpt-5.4",Ad="auto-gemini-3",Pd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Md=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Pi(e){let t=new Set,n=[];for(let r of e){let o=r.trim();if(!o)continue;let s=o.toLowerCase();t.has(s)||(t.add(s),n.push(o))}return n}i(Pi,"dedupePreserveOrder");function Od(){let e=Ai.join(_i.homedir(),".codex","config.toml");try{return Ri.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Od,"readCodexConfiguredModel");function Nd(){let e=Ai.join(_i.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ri.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}}i(Nd,"readGeminiConfiguredModel");function Oe(){return Od()||_d}i(Oe,"getCodexCliDefaultModel");function Ne(){return Nd()||Ad}i(Ne,"getGeminiCliDefaultModel");function nt(){return Pi([Oe(),...Pd])}i(nt,"getCodexCliKnownModels");function rt(){return Pi([Ne(),...Md])}i(rt,"getGeminiCliKnownModels");var Wk=Ne(),Hk=rt();var rx=Oe(),ix=nt();import{existsSync as Hd,readFileSync as zd}from"node:fs";import De from"node:path";import{fileURLToPath as qd}from"node:url";var Mi=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Oi=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Ni=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Li=["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"],Di=["max_tokens","max_completion_tokens"],$i=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Fi=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(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}i(ke,"requireString");function Le(e,t){if(e!==void 0)return ke(e,t)}i(Le,"optionalString");function Bi(e,t){if(e!==void 0){if(typeof e!="string"||!Di.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Di.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Bi,"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}}i(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}}i(D,"optionalBoolean");function ji(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}]`))}}i(ji,"optionalStringArray");function Dd(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,o]of Object.entries(e))n[r]=ke(o,`${t}.${r}`);return n}i(Dd,"optionalStringMap");function $d(e,t){if(e!==void 0){if(typeof e!="string"||!Li.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Li.join(", ")}, got ${JSON.stringify(e)}`);return e}}i($d,"optionalReasoningPreset");function Pn(e,t){if(typeof e!="string"||!Mi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Pn,"requireReasoningCapability");function Fd(e,t){if(typeof e!="string"||!Oi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Fd,"requireEffortStrategy");function jd(e,t){if(e!==void 0){if(typeof e!="string"||!Ni.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ni.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(jd,"optionalThinkingStrategy");function Ki(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Fd(e.effortStrategy,`${t}.effortStrategy`),r=$d(e.reasoningPreset,`${t}.reasoningPreset`),o=jd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=Le(e.defaultEffort,`${t}.defaultEffort`),a=Dd(e.effortAliases,`${t}.effortAliases`),c=ji(e.disabledEfforts,`${t}.disabledEfforts`),d=ji(e.localRejectEfforts,`${t}.localRejectEfforts`),l=D(e.allowCustomEffort,`${t}.allowCustomEffort`),u=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),m=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),o!==void 0&&(y.thinkingStrategy=o),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`),...Le(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:Le(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 l!==void 0&&(y.allowCustomEffort=l),u!==void 0&&(y.supportsReasoningEffort=u),f!==void 0&&(y.supportsReasoningSummary=f),p!==void 0&&(y.supportsEncryptedReasoningReplay=p),m!==void 0&&(y.supportsAdaptiveThinking=m),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}i(Ki,"validateReasoningProfile");function Ui(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?Ki(n,`${t}.reasoningProfile`):Ki(r,`${t}.reasoningCapabilityV2`)}i(Ui,"validateReasoningProfileField");function Kd(e,t){if(typeof e!="string"||!$i.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$i.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Kd,"requireProfileName");function Bd(e,t){if(typeof e!="string"||!Fi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Fi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Bd,"requireVerifyStrategy");function Ud(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=Le(e.wireModel,`${t}.wireModel`),o=Le(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=Bi(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=D(e.replayReasoningContent,`${t}.replayReasoningContent`),u=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:Pn(e.reasoningCapability,`${t}.reasoningCapability`),m=Ui(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),o!==void 0&&(g.displayName=o),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),p!==void 0&&(g.reasoningCapability=p),m!==void 0&&(g.reasoningProfile=m),l!==void 0&&(g.replayReasoningContent=l),u!==void 0&&(g.strictThinkingSignature=u),f!==void 0&&(g.streamMaxDurationMs=f),g}i(Ud,"validateModelDescriptor");function Xd(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,o]of Object.entries(e))n[r]=Pn(o,`${t}.${r}`);return n}i(Xd,"validateModelReasoningCapabilities");function Wd(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`),o=Pn(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ui(e,`providers.${t}`),a=Kd(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Bd(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`),l=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=Bi(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),p=D(e.supportsThinking,`providers.${t}.supportsThinking`),m=Xd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=Le(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)=>Ud(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:o,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),l!==void 0&&(w.maxOutputTokens=l),u!==void 0&&(w.maxOutputTokensField=u),f!==void 0&&(w.thinkingBudgetCap=f),p!==void 0&&(w.supportsThinking=p),m!==void 0&&(w.modelReasoningCapabilities=m),n&&(w.cliBridge=!0),w}i(Wd,"validateProviderEntry");function Xi(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,o]of Object.entries(e.providers))n[r]=Wd(o,r);return{version:1,updatedAt:t,providers:n}}i(Xi,"validateProviderCapabilitiesJson");var Vd=Object.freeze({native:tt,"image-input-native":bi,"cli-bridge":Ot,"image-input-cli-bridge":ki}),$t=null;function Gd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(qd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Hd(n))return n;return t[0]}i(Gd,"resolveJsonPath");function Jd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Wi(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Wi(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(Jd,"deepFreezeSnapshot");function Wi(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)}i(Wi,"freezeReasoningProfile");function Yd(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}'`)}i(Yd,"resolveCliBridgeModels");function Qd(e,t){let n=Vd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let o=Yd(e),s={model:o.model,models:o.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}i(Qd,"buildSnapshot");function Hi(){if($t)return $t;let e=Gd(),t;try{let o=zd(e,"utf8");t=JSON.parse(o)}catch(o){let s=o instanceof Error?o.message:String(o);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Xi(t),r={};for(let[o,s]of Object.entries(n.providers))r[o]=Jd(Qd(o,s));return $t=Object.freeze(r),$t}i(Hi,"getProviderSnapshots");import Rx from"@anthropic-ai/sdk";var Ft=Hi();var zi=process.env.KODAX_PROVIDER??"zhipu-coding";var Al=[];function z(e){let t=Mt(e),n=Al.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${lo(t)}
90
+ `)}catch{}}i(z,"emitKodaXDiagnostic");function lo(e){let t=Mt(e),n=Pl(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}i(lo,"formatKodaXDiagnostic");function Pl(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)}}i(Pl,"formatDiagnosticDetail");var it=class e{static{i(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??Ml,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))}},uo=0;function Ml(){uo+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${uo}-${e}`}i(Ml,"defaultNextSpanId");var fo=0;function Ol(){fo+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${fo}-${e}`}i(Ol,"defaultNextTraceId");function Fn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Ol)(),r=t(),o=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:o},c=!1,d,l,u=new it({id:`${n}-root`,traceId:n,name:o,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}i(Fn,"createTrace");var jn=[];function Kn(e){for(let t of jn)try{t.onSpanStart(e)}catch{}}i(Kn,"_emitSpanStart");function Bn(e){for(let t of jn)try{t.onSpanEnd(e)}catch{}}i(Bn,"_emitSpanEnd");function Un(e){for(let t of jn)try{t.onTraceEnd(e)}catch{}}i(Un,"_emitTraceEnd");var jt=class{static{i(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Fn({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:Kn,onSpanEnd:Bn,onTraceEnd:Un})}},po=new jt;var jl=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var hI=new Set(jl);import{spawnSync as Kt}from"node:child_process";import{readFileSync as su}from"node:fs";var Bt=5e3,cC=String.raw`
91
91
  using System;
92
92
  using System.Runtime.InteropServices;
93
93
  public static class KodaXWindowsJobMembership {
@@ -154,7 +154,7 @@ public static class KodaXWindowsJobMembership {
154
154
  CloseHandle(job);
155
155
  }
156
156
  }
157
- }`,YI=String.raw`
157
+ }`,dC=String.raw`
158
158
  $ErrorActionPreference = 'Stop'
159
159
  $source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
160
160
  Add-Type -TypeDefinition $source
@@ -162,7 +162,7 @@ if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB
162
162
  [Console]::Out.Write('1')
163
163
  } else {
164
164
  [Console]::Out.Write('0')
165
- }`,QI=String.raw`
165
+ }`,au=String.raw`
166
166
  using System;
167
167
  using System.Runtime.InteropServices;
168
168
  using System.Text;
@@ -249,7 +249,9 @@ public static class KodaXNativeProcessSnapshot {
249
249
  CloseHandle(snapshot);
250
250
  }
251
251
  }
252
- }`,ZI=Object.freeze({status:"terminated"}),eC=Object.freeze({status:"already-exited"}),tC=Object.freeze({status:"unknown"});var go="KODAX_EFFECT_JOB_PAYLOAD";var iu=String.raw`
252
+ }`,lC=Object.freeze({status:"terminated"}),uC=Object.freeze({status:"already-exited"}),fC=Object.freeze({status:"unknown"});function cu(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).flatMap(o=>{if(typeof o!="object"||o===null)return[];let s=o,a=Number(s.pid),c=Number(s.parentPid),d=typeof s.creationTime=="string"?s.creationTime:String(s.creationTime??"0");return!Number.isFinite(a)||a<=0||!Number.isFinite(c)?[]:[{pid:a,parentPid:c,creationTime:/^\d+$/.test(d)?d:"0"}]})}catch{return[]}}i(cu,"parseWindowsProcessSnapshotJson");function du(e){let t=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-])(\d{3})$/.exec(e);if(!t)return;let[,n,r,o,s,a,c,d,l,u]=t,f=Date.UTC(Number(n),Number(r)-1,Number(o),Number(s),Number(a),Number(c),Number(d.slice(0,3))),p=Number(u)*6e4*(l==="+"?1:-1),m=f-p;if(Number.isFinite(m))return{identity:(BigInt(m)+11644473600000n).toString(),unixMs:m}}i(du,"parseWmicCreationTime");function lu(){let e=["$cutoff = [DateTime]::UtcNow","$items = try { @(Get-CimInstance Win32_Process -ErrorAction Stop) } catch { @(Get-WmiObject Win32_Process -ErrorAction Stop) }","$rows = @($items | ForEach-Object {"," $creationTime = '0'"," try {"," $created = $_.CreationDate"," if ($created -isnot [DateTime]) { $created = [System.Management.ManagementDateTimeConverter]::ToDateTime([string]$created) }"," $created = $created.ToUniversalTime()"," if ($created -le $cutoff) { $creationTime = ([long][Math]::Floor($created.ToFileTimeUtc() / 10000)).ToString() }"," } catch {}"," [PSCustomObject]@{ pid = [int]$_.ProcessId; parentPid = [int]$_.ParentProcessId; creationTime = $creationTime }","})","$rows | ConvertTo-Json -Compress"].join(`
253
+ `),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(!t.error&&t.status===0){let s=cu(t.stdout);if(s.length>0)return s}let n=Date.now(),r=Kt("wmic",["process","get","CreationDate,ParentProcessId,ProcessId","/format:list"],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(r.error||r.status!==0)return;let o=r.stdout.split(/\r?\n\s*\r?\n/).flatMap(s=>{let a=new Map(s.split(/\r?\n/).flatMap(f=>{let p=f.indexOf("=");return p<0?[]:[[f.slice(0,p),f.slice(p+1)]]})),c=Number(a.get("ProcessId")),d=Number(a.get("ParentProcessId")),l=a.get("CreationDate"),u=l===void 0?void 0:du(l);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)||u===void 0||u.unixMs>n?[]:[{pid:c,parentPid:d,creationTime:u.identity}]});return o.length>0?o:void 0}i(lu,"readWindowsProcessSnapshotFallback");function uu(){let e=["$source = @'",au,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
254
+ `),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(t.error||t.status!==0)return;let n=t.stdout.split(/\r?\n/).flatMap(r=>{let[o,s,a="0"]=r.split(",",3),c=Number(o),d=Number(s);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)?[]:[{pid:c,parentPid:d,creationTime:a}]});return n.length>0?n:void 0}i(uu,"readWindowsProcessSnapshotNative");function fu(){return uu()??lu()}i(fu,"readWindowsProcessSnapshot");function Xn(e){if(!Number.isInteger(e)||e<=0)return;if(process.platform==="win32"){let r=fu()?.find(o=>o.pid===e);return r?.creationTime==="0"?void 0:r?.creationTime}if(process.platform==="linux")try{let r=su(`/proc/${e}/stat`,"utf8"),o=r.slice(r.lastIndexOf(")")+2).trim().split(/\s+/);return o[19]===void 0?void 0:`linux:${o[19]}`}catch{return}let t=Kt("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:Bt,windowsHide:!0}),n=t.status===0?t.stdout.trim():"";return n===""?void 0:`${process.platform}:${n}`}i(Xn,"readProcessStartIdentity");var vo="KODAX_EFFECT_JOB_PAYLOAD";var mu=String.raw`
253
255
  using System;
254
256
  using System.IO;
255
257
  using System.Runtime.InteropServices;
@@ -409,14 +411,14 @@ public static class KodaXEffectJob {
409
411
  CloseHandle(job);
410
412
  }
411
413
  }
412
- }`,ou=String.raw`
414
+ }`,hu=String.raw`
413
415
  $ErrorActionPreference = 'Stop'
414
416
  try {
415
417
  $payload = [Text.Encoding]::UTF8.GetString(
416
- [Convert]::FromBase64String($env:${go})) | ConvertFrom-Json
417
- Remove-Item Env:${go} -ErrorAction SilentlyContinue
418
+ [Convert]::FromBase64String($env:${vo})) | ConvertFrom-Json
419
+ Remove-Item Env:${vo} -ErrorAction SilentlyContinue
418
420
  $source = @'
419
- ${iu}
421
+ ${mu}
420
422
  '@
421
423
  Add-Type -TypeDefinition $source
422
424
  [KodaXEffectJob]::Run(
@@ -428,26 +430,26 @@ ${iu}
428
430
  [Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
429
431
  [Console]::Out.Flush()
430
432
  exit 1
431
- }`,uC=Buffer.from(ou,"utf16le").toString("base64");import{Jimp as OC}from"jimp";var mu=Math.floor(3.75*1024*1024);var gu=1440*60*1e3;import{fileURLToPath as Xu}from"url";import{dirname as Wu}from"path";var Hu=Xu(import.meta.url),FR=Wu(Hu);import{readFile as Ju,readdir as Yu}from"fs/promises";import{join as xe,relative as Qu}from"path";import Co from"yaml";var zu=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function qu(e){let t=e.split(`
433
+ }`,xC=Buffer.from(hu,"utf16le").toString("base64");import{Jimp as WC}from"jimp";var Eu=Math.floor(3.75*1024*1024);var Cu=1440*60*1e3;import{fileURLToPath as Zu}from"url";import{dirname as ef}from"path";var tf=Zu(import.meta.url),GR=ef(tf);import{readFile as af,readdir as cf}from"fs/promises";import{join as xe,relative as df}from"path";import _o from"yaml";var nf=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function rf(e){let t=e.split(`
432
434
  `),n=[];for(let r of t){let o=r.indexOf(":");if(o>0){let s=r.slice(0,o).trim(),a=r.slice(o+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(`
433
- `)}i(qu,"sanitizeYaml");function To(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
435
+ `)}i(rf,"sanitizeYaml");function Ao(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
434
436
  `).replace(/\r/g,`
435
437
  `).trimStart();if(!n.startsWith(`---
436
438
  `)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
437
439
  ---
438
440
  `,4);if(r===-1){let c=n.indexOf(`
439
- ---`,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 o=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Co.parse(o)??{}}catch{a=Co.parse(qu(o))??{}}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]}i(To,"parseYamlFrontmatter");function Ro(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}}i(Ro,"normalizeAllowedToolsString");function Vu(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}}}i(Vu,"normalizeYamlHookEntry");function Gu(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Vu(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}i(Gu,"normalizeYamlHookEntryList");function _o(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of zu){let o=Gu(t[r]);o&&(n[r]=o)}return Object.keys(n).length>0?n:void 0}i(_o,"normalizeYamlHookMap");function Ao(e){let[t,n]=To(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:Ro(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:_o(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}}i(Ao,"parseSkillMarkdown");async function Kt(e,t){let n=xe(e,"SKILL.md");try{let r=await Ju(n,"utf-8"),{frontmatter:o,body:s}=Ao(r),[a,c,d,l,u]=await Promise.all([$e(xe(e,"scripts")),$e(xe(e,"references")),$e(xe(e,"assets")),$e(xe(e,"templates")),$e(xe(e,"resources"))]);return{...o,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}i(Kt,"loadFullSkill");async function $e(e,t=e){let n=[];try{let r=await Yu(e,{withFileTypes:!0});r.sort((o,s)=>o.name.localeCompare(s.name));for(let o of r){let s=xe(e,o.name);if(o.isDirectory()){n.push(...await $e(s,t));continue}o.isFile()&&n.push({name:o.name,path:s,relativePath:Qu(t,s).replace(/\\/g,"/")})}}catch{}return n}i($e,"loadSkillFiles");var Po=64*1024,Mo=256*1024;var R_=1024*1024;var oA=16*1024;var mA=16*1024;import{execSync as Df}from"child_process";import $f from"path";var Ff=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 qo(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Ff)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 o=t.split(/\s+/);if(o.includes("-f")||o.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let o=t.split(/\s+/).slice(1);if(o.length>0&&!o.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}i(qo,"isSingleSafeDynamicContextCommand");function jf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&$f.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return qo(r[0]);for(let o of r){let s=o?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!qo(s))return!1}return!0}i(jf,"isSafeDynamicContextCommand");function Vo(e){let t=[],n="",r=!1,o="";for(let s=0;s<e.length;s++){let a=e[s];r?a===o?r=!1:n+=a:a==='"'||a==="'"?(r=!0,o=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}i(Vo,"parseArguments");var Wt=class{static{i(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,o=Vo(n);return r=this.resolvePositionalArgs(r,o),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,o)=>{let s=parseInt(o,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,o)=>n[o]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],o;for(;(o=n.exec(t))!==null;)r.push({match:o[0],command:o[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!jf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Df(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 ct(e,t,n){return new Wt(n).resolve(e,t)}i(ct,"resolveSkillContent");function Go(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}i(Go,"escapeXml");var zn=120;function Ht(e){return e.replace(/\\/g,"/")}i(Ht,"formatDisplayPath");function Uf(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}))]}i(Uf,"collectSupportFiles");function Xf(e){let t=Uf(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[o,s]of n)s?.length&&r.push(`- ${o}/: ${Ht(`${e.path}/${o}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:o,file:s}of t.slice(0,zn))r.push(`- ${o}/${s.relativePath}: ${Ht(s.path)}`);return t.length>zn&&r.push(`- ... ${t.length-zn} more files under ${Ht(e.path)}`),r}i(Xf,"buildSupportFileContext");function Wf(e,t,n){let r=[];r.push(`<skill name="${Go(e.name)}" location="${Go(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 o=Xf(e);return o.length>0&&(r.push(...o),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
440
- `)}i(Wf,"buildSkillBlock");async function qn(e,t,n){let r=await ct(e.content,t,n);return{content:Wf(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}i(qn,"expandSkillForLLM");import{writeFile as es}from"node:fs/promises";import he from"node:path";import{existsSync as Hf}from"node:fs";import{mkdir as zf,readFile as Vn,readdir as qf,stat as Yo,writeFile as fP}from"node:fs/promises";import Vf from"node:os";import re from"node:path";import{fileURLToPath as Qo,pathToFileURL as Gf}from"node:url";import Jf from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(Qo(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(Hf(n))return Fe=await import(Gf(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}.
441
+ ---`,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 o=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=_o.parse(o)??{}}catch{a=_o.parse(rf(o))??{}}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]}i(Ao,"parseYamlFrontmatter");function Po(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}}i(Po,"normalizeAllowedToolsString");function of(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}}}i(of,"normalizeYamlHookEntry");function sf(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>of(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}i(sf,"normalizeYamlHookEntryList");function Mo(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of nf){let o=sf(t[r]);o&&(n[r]=o)}return Object.keys(n).length>0?n:void 0}i(Mo,"normalizeYamlHookMap");function Oo(e){let[t,n]=Ao(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:Po(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:Mo(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}}i(Oo,"parseSkillMarkdown");async function Ut(e,t){let n=xe(e,"SKILL.md");try{let r=await af(n,"utf-8"),{frontmatter:o,body:s}=Oo(r),[a,c,d,l,u]=await Promise.all([$e(xe(e,"scripts")),$e(xe(e,"references")),$e(xe(e,"assets")),$e(xe(e,"templates")),$e(xe(e,"resources"))]);return{...o,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}i(Ut,"loadFullSkill");async function $e(e,t=e){let n=[];try{let r=await cf(e,{withFileTypes:!0});r.sort((o,s)=>o.name.localeCompare(s.name));for(let o of r){let s=xe(e,o.name);if(o.isDirectory()){n.push(...await $e(s,t));continue}o.isFile()&&n.push({name:o.name,path:s,relativePath:df(t,s).replace(/\\/g,"/")})}}catch{}return n}i($e,"loadSkillFiles");var No=64*1024,Lo=256*1024;var h_=Xn(process.pid);var B_=1024*1024;var wA=16*1024;var TA=16*1024;import{execSync as zf}from"child_process";import qf from"path";var Vf=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 Jo(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Vf)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 o=t.split(/\s+/);if(o.includes("-f")||o.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let o=t.split(/\s+/).slice(1);if(o.length>0&&!o.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}i(Jo,"isSingleSafeDynamicContextCommand");function Gf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&qf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Jo(r[0]);for(let o of r){let s=o?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Jo(s))return!1}return!0}i(Gf,"isSafeDynamicContextCommand");function Yo(e){let t=[],n="",r=!1,o="";for(let s=0;s<e.length;s++){let a=e[s];r?a===o?r=!1:n+=a:a==='"'||a==="'"?(r=!0,o=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}i(Yo,"parseArguments");var zt=class{static{i(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,o=Yo(n);return r=this.resolvePositionalArgs(r,o),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,o)=>{let s=parseInt(o,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,o)=>n[o]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],o;for(;(o=n.exec(t))!==null;)r.push({match:o[0],command:o[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Gf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return zf(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 ct(e,t,n){return new zt(n).resolve(e,t)}i(ct,"resolveSkillContent");function Qo(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}i(Qo,"escapeXml");var Gn=120;function qt(e){return e.replace(/\\/g,"/")}i(qt,"formatDisplayPath");function Qf(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}))]}i(Qf,"collectSupportFiles");function Zf(e){let t=Qf(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[o,s]of n)s?.length&&r.push(`- ${o}/: ${qt(`${e.path}/${o}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:o,file:s}of t.slice(0,Gn))r.push(`- ${o}/${s.relativePath}: ${qt(s.path)}`);return t.length>Gn&&r.push(`- ... ${t.length-Gn} more files under ${qt(e.path)}`),r}i(Zf,"buildSupportFileContext");function ep(e,t,n){let r=[];r.push(`<skill name="${Qo(e.name)}" location="${Qo(e.path)}">`),r.push(""),r.push(`Skill root: ${qt(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 o=Zf(e);return o.length>0&&(r.push(...o),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
442
+ `)}i(ep,"buildSkillBlock");async function Jn(e,t,n){let r=await ct(e.content,t,n);return{content:ep(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}i(Jn,"expandSkillForLLM");import{writeFile as rs}from"node:fs/promises";import he from"node:path";import{existsSync as tp}from"node:fs";import{mkdir as np,readFile as Yn,readdir as rp,stat as es,writeFile as IP}from"node:fs/promises";import ip from"node:os";import re from"node:path";import{fileURLToPath as ts,pathToFileURL as op}from"node:url";import sp from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(ts(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(tp(n))return Fe=await import(op(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}.
441
443
  Attempted:
442
444
  - ${t.join(`
443
- - `)}`)}i(me,"loadKodaXSDK");function Yf(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
445
+ - `)}`)}i(me,"loadKodaXSDK");function ap(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
444
446
  `).replace(/\r/g,`
445
447
  `).trimStart();if(!t.startsWith(`---
446
448
  `))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
447
449
  ---
448
- `,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()}}i(Yf,"extractFrontmatter");function zt(e){let{yamlText:t,body:n}=Yf(e),r=Jf.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}i(zt,"parseSkillMarkdown");async function lt(e){let t=re.join(e,"SKILL.md");if(!(await Yo(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Vn(t,"utf8"),{frontmatter:o,body:s}=zt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:o}}i(lt,"loadSkill");async function ut(e){try{return await Yo(e),!0}catch{return!1}}i(ut,"pathExists");function qt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,o)=>r+o,0)/e.length,n=e.length>1?e.reduce((r,o)=>r+(o-t)**2,0)/(e.length-1):0;return{mean:dt(t),stddev:dt(Math.sqrt(n)),min:dt(Math.min(...e)),max:dt(Math.max(...e))}}i(qt,"calculateStats");function dt(e,t=4){return Number(e.toFixed(t))}i(dt,"roundNumber");function Vt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}i(Vt,"formatDelta");function Jo(e){try{return JSON.parse(e)}catch{return null}}i(Jo,"safeJsonParse");function je(e){let t=Jo(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Jo(e.slice(n,r+1))}i(je,"extractJsonObject");async function J(e,t=null){try{return JSON.parse(await Vn(e,"utf8"))}catch{return t}}i(J,"readJsonFile");async function Ke(e,t){let n=re.dirname(Qo(e));return Vn(re.resolve(n,t),"utf8")}i(Ke,"loadRelativeText");function $(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)}
450
+ `,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()}}i(ap,"extractFrontmatter");function Vt(e){let{yamlText:t,body:n}=ap(e),r=sp.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}i(Vt,"parseSkillMarkdown");async function lt(e){let t=re.join(e,"SKILL.md");if(!(await es(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Yn(t,"utf8"),{frontmatter:o,body:s}=Vt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:o}}i(lt,"loadSkill");async function ut(e){try{return await es(e),!0}catch{return!1}}i(ut,"pathExists");function Gt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,o)=>r+o,0)/e.length,n=e.length>1?e.reduce((r,o)=>r+(o-t)**2,0)/(e.length-1):0;return{mean:dt(t),stddev:dt(Math.sqrt(n)),min:dt(Math.min(...e)),max:dt(Math.max(...e))}}i(Gt,"calculateStats");function dt(e,t=4){return Number(e.toFixed(t))}i(dt,"roundNumber");function Jt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}i(Jt,"formatDelta");function Zo(e){try{return JSON.parse(e)}catch{return null}}i(Zo,"safeJsonParse");function je(e){let t=Zo(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Zo(e.slice(n,r+1))}i(je,"extractJsonObject");async function J(e,t=null){try{return JSON.parse(await Yn(e,"utf8"))}catch{return t}}i(J,"readJsonFile");async function Ke(e,t){let n=re.dirname(ts(e));return Yn(re.resolve(n,t),"utf8")}i(Ke,"loadRelativeText");function $(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)}
449
451
 
450
- [truncated ${r} chars]`}i($,"truncateText");function Zo(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(o=>o?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?dt(n/t):0}}i(Zo,"computePassSummary");async function Gn(e,t=e,n=[]){let r=await qf(t,{withFileTypes:!0}).catch(()=>[]);for(let o of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,o.name);if(o.isDirectory()){await Gn(e,s,n);continue}o.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}i(Gn,"collectFiles");function ft(){return re.join(Vf.homedir(),".kodax","skills")}i(ft,"getDefaultSkillsDir");async function F(e){return await zf(e,{recursive:!0}),e}i(F,"ensureDirectory");function Qf(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}i(Qf,"titleFromSlug");function Zf(e,t){let n=Qf(e);return`---
452
+ [truncated ${r} chars]`}i($,"truncateText");function ns(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(o=>o?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?dt(n/t):0}}i(ns,"computePassSummary");async function Qn(e,t=e,n=[]){let r=await rp(t,{withFileTypes:!0}).catch(()=>[]);for(let o of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,o.name);if(o.isDirectory()){await Qn(e,s,n);continue}o.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}i(Qn,"collectFiles");function ft(){return re.join(ip.homedir(),".kodax","skills")}i(ft,"getDefaultSkillsDir");async function F(e){return await np(e,{recursive:!0}),e}i(F,"ensureDirectory");function cp(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}i(cp,"titleFromSlug");function dp(e,t){let n=cp(e);return`---
451
453
  name: ${e}
452
454
  description: ${t}
453
455
  user-invocable: true
@@ -476,10 +478,10 @@ Describe the task this skill handles, the trigger boundary, and the expected out
476
478
  - Put deeper guidance in \`references/\`.
477
479
  - Put reusable templates or static files in \`assets/\`.
478
480
  - Put repeatable helper scripts in \`scripts/\`.
479
- `}i(Zf,"renderSkillTemplate");function ep(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)}i(ep,"renderEvalTemplate");async function tp(e){let t=he.resolve(e.baseDir??ft()),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 es(he.join(n,"SKILL.md"),Zf(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await es(he.join(n,"evals","evals.json"),`${ep(e.name)}
480
- `,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}i(tp,"initSkill");function np(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}i(np,"parseArgs");async function ts(e=process.argv){let t=np(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 tp(t);console.log(`Initialized ${n.skillDir}`)}i(ts,"main");var rp=!1;rp&&ts().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import ns from"node:path";var ip=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function pt(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await lt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:o}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!ip.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=ns.basename(ns.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"),o.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(u=>typeof u=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}i(pt,"validateSkillDirectory");async function rs(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await pt(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)}i(rs,"main");var op=!1;op&&rs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Jn,writeFile as ie}from"node:fs/promises";import C from"node:path";function sp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}i(sp,"normalizeAssertion");function ap(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}i(ap,"countToolCalls");function cp(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)}i(cp,"countToolErrors");function dp(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(`
481
+ `}i(dp,"renderSkillTemplate");function lp(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)}i(lp,"renderEvalTemplate");async function up(e){let t=he.resolve(e.baseDir??ft()),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 rs(he.join(n,"SKILL.md"),dp(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await rs(he.join(n,"evals","evals.json"),`${lp(e.name)}
482
+ `,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}i(up,"initSkill");function fp(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}i(fp,"parseArgs");async function is(e=process.argv){let t=fp(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 up(t);console.log(`Initialized ${n.skillDir}`)}i(is,"main");var pp=!1;pp&&is().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import os from"node:path";var mp=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function pt(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await lt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:o}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!mp.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=os.basename(os.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"),o.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(u=>typeof u=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}i(pt,"validateSkillDirectory");async function ss(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await pt(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)}i(ss,"main");var hp=!1;hp&&ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Zn,writeFile as ie}from"node:fs/promises";import C from"node:path";function gp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}i(gp,"normalizeAssertion");function yp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}i(yp,"countToolCalls");function wp(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)}i(wp,"countToolErrors");function vp(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(`
481
483
  `)}
482
- `}i(dp,"renderTranscript");async function lp(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),o=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,l=a;try{d=await Jn(a,"utf8")}catch{d=await Jn(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);o.push(`### ${s}
484
+ `}i(vp,"renderTranscript");async function bp(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),o=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,l=a;try{d=await Zn(a,"utf8")}catch{d=await Zn(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);o.push(`### ${s}
483
485
  \`\`\`
484
486
  ${d}
485
487
  \`\`\`
@@ -489,15 +491,15 @@ ${o.join(`
489
491
 
490
492
  `)}
491
493
 
492
- `}i(lp,"readInputFiles");async function up(e,t){let n=String(e.prompt??e.query??"").trim();return`${await lp(e.files,t)}${n}`.trim()}i(up,"buildEvalPrompt");async function fp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),o=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()-o}}i(fp,"defaultRunAgent");async function pp(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}i(pp,"prepareConfigPrompt");async function mp(e,t,n,r,o){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:ap(o.result.messages),errors_encountered:cp(o.result.messages),output_chars:o.result.lastText.length};await ie(C.join(s,"result.md"),`${o.result.lastText}
494
+ `}i(bp,"readInputFiles");async function kp(e,t){let n=String(e.prompt??e.query??"").trim();return`${await bp(e.files,t)}${n}`.trim()}i(kp,"buildEvalPrompt");async function xp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),o=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()-o}}i(xp,"defaultRunAgent");async function Sp(e,t,n,r){return e==="with_skill"?(await Jn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}i(Sp,"prepareConfigPrompt");async function Ep(e,t,n,r,o){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:yp(o.result.messages),errors_encountered:wp(o.result.messages),output_chars:o.result.lastText.length};await ie(C.join(s,"result.md"),`${o.result.lastText}
493
495
  `,"utf8"),await ie(C.join(s,"prompt.txt"),`${r}
494
- `,"utf8"),await ie(C.join(e,"transcript.md"),dp(r,o.result),"utf8"),await ie(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:o.result.sessionId,...a},null,2)}
496
+ `,"utf8"),await ie(C.join(e,"transcript.md"),vp(r,o.result),"utf8"),await ie(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:o.result.sessionId,...a},null,2)}
495
497
  `,"utf8"),await ie(C.join(s,"messages.json"),`${JSON.stringify(o.result.messages,null,2)}
496
498
  `,"utf8"),await ie(C.join(e,"timing.json"),`${JSON.stringify({total_tokens:o.totalTokens,duration_ms:o.durationMs,total_duration_seconds:Number((o.durationMs/1e3).toFixed(4))},null,2)}
497
499
  `,"utf8"),await ie(C.join(e,"result.json"),`${JSON.stringify({success:o.result.success,signal:o.result.signal??null,signal_reason:o.result.signalReason??null,interrupted:o.result.interrupted===!0,limit_reached:o.result.limitReached===!0,session_id:o.result.sessionId,execution_metrics:a},null,2)}
498
- `,"utf8")}i(mp,"writeRunArtifacts");async function hp(e,t=fp){let n=await Kt(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 o=JSON.parse(await Jn(e.evalsPath,"utf8")),s=Array.isArray(o.evals)?o.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=C.join(r,`eval-${l}`);await F(f),await ie(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(sp).filter(Boolean)},null,2)}
499
- `,"utf8");let m=await up(u,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 pp(g,n,m,e),b=await t(h,{...e,configName:g,evalItem:u,runIndex:w});await mp(y,g,u,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:u.id??l,prompt:u.prompt??u.query??"",configs:p})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}i(hp,"runEvalWorkspace");function gp(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(o=>o.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}i(gp,"parseArgs");async function is(e=process.argv){let t=gp(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 hp(t),r=`${JSON.stringify(n,null,2)}
500
- `;t.output?(await ie(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}i(is,"main");var yp=!1;yp&&is().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as wp,readFile as Yn,writeFile as ss}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}i(Ee,"normalizeExpectationText");function as(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(o=>typeof o=="string"?Ee(o):o&&typeof o=="object"&&typeof o.text=="string"?Ee(o.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}i(as,"normalizeExpectedRubric");function Qn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Qn,"normalizeStringArray");function os(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}i(os,"normalizeExpectationEntry");function vp(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],o=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){o.push({text:a,passed:!1,evidence:""});continue}s.add(c),o.push(os(r[c],a))}if(t.length===0)for(let a of r){let c=os(a,"");c.text&&o.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:o,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)}}}i(vp,"normalizeParsedGrading");async function Zn(e){return(await wp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(Zn,"listDirectories");async function bp(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),o=T.basename(e),s=T.join(e,"outputs"),a=await J(T.join(n,"eval_metadata.json"),{}),c=await Yn(T.join(s,"result.md"),"utf8").catch(()=>""),d=await Yn(T.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await Yn(T.join(e,"transcript.md"),"utf8").catch(()=>""),u=await J(T.join(s,"metrics.json"),{}),f=await J(T.join(e,"result.json"),{}),m=await J(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:o,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:m}}i(bp,"loadRunContext");function kp(e){let t=as(e.evalMetadata),n=t.length>0?t.map((r,o)=>`${o+1}. ${r}`).join(`
500
+ `,"utf8")}i(Ep,"writeRunArtifacts");async function Ip(e,t=xp){let n=await Ut(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 o=JSON.parse(await Zn(e.evalsPath,"utf8")),s=Array.isArray(o.evals)?o.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=C.join(r,`eval-${l}`);await F(f),await ie(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(gp).filter(Boolean)},null,2)}
501
+ `,"utf8");let p=await kp(u,e),m={};for(let g of a){let v=C.join(f,g);await F(v),m[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await Sp(g,n,p,e),b=await t(h,{...e,configName:g,evalItem:u,runIndex:w});await Ep(y,g,u,h,b),m[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:u.id??l,prompt:u.prompt??u.query??"",configs:m})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}i(Ip,"runEvalWorkspace");function Cp(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(o=>o.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}i(Cp,"parseArgs");async function as(e=process.argv){let t=Cp(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 Ip(t),r=`${JSON.stringify(n,null,2)}
502
+ `;t.output?(await ie(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}i(as,"main");var Tp=!1;Tp&&as().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Rp,readFile as er,writeFile as ds}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}i(Ee,"normalizeExpectationText");function ls(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(o=>typeof o=="string"?Ee(o):o&&typeof o=="object"&&typeof o.text=="string"?Ee(o.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}i(ls,"normalizeExpectedRubric");function tr(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(tr,"normalizeStringArray");function cs(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}i(cs,"normalizeExpectationEntry");function _p(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],o=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){o.push({text:a,passed:!1,evidence:""});continue}s.add(c),o.push(cs(r[c],a))}if(t.length===0)for(let a of r){let c=cs(a,"");c.text&&o.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:o,user_notes_summary:{uncertainties:tr(n.user_notes_summary?.uncertainties),needs_review:tr(n.user_notes_summary?.needs_review),workarounds:tr(n.user_notes_summary?.workarounds)}}}i(_p,"normalizeParsedGrading");async function nr(e){return(await Rp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(nr,"listDirectories");async function Ap(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),o=T.basename(e),s=T.join(e,"outputs"),a=await J(T.join(n,"eval_metadata.json"),{}),c=await er(T.join(s,"result.md"),"utf8").catch(()=>""),d=await er(T.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await er(T.join(e,"transcript.md"),"utf8").catch(()=>""),u=await J(T.join(s,"metrics.json"),{}),f=await J(T.join(e,"result.json"),{}),p=await J(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:o,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:p}}i(Ap,"loadRunContext");function Pp(e){let t=ls(e.evalMetadata),n=t.length>0?t.map((r,o)=>`${o+1}. ${r}`).join(`
501
503
  `):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
502
504
 
503
505
  Return JSON with this shape:
@@ -543,12 +545,12 @@ ${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.executio
543
545
 
544
546
  ## Transcript Excerpt
545
547
  ${$(e.transcript,5e3)}
546
- `}i(kp,"buildGradingPrompt");async function cs(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}i(cs,"defaultRunJudge");async function xp(e,t,n=cs){let r=await bp(T.resolve(e)),o=as(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=kp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=vp(c,o),l={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},u={summary:Zo(d.expectations),expectations:d.expectations,execution_metrics:l,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await ss(T.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
547
- `,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}i(xp,"gradeRun");async function Sp(e,t=cs){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),o=[],s=[];for(let c of await Zn(n))if(T.basename(c).startsWith("eval-"))for(let d of await Zn(c)){let l=T.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await Zn(d)){if(!T.basename(u).startsWith("run-"))continue;let f=T.join(u,"grading.json");if(await J(f,null)&&e.overwrite!==!0){s.push(T.relative(n,u).replace(/\\/g,"/"));continue}let p=await xp(u,e,t);o.push({run:T.relative(n,u).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:o.length,skipped:s.length,processed_runs:o,skipped_runs:s};return await ss(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
548
- `,"utf8"),a}i(Sp,"gradeWorkspace");function Ep(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(o=>o.trim()).filter(Boolean))}return t}i(Ep,"parseArgs");async function ds(e=process.argv){let t=Ep(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 Sp(t);process.stdout.write(`${JSON.stringify(n,null,2)}
549
- `)}i(ds,"main");var Ip=!1;Ip&&ds().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as rr}from"node:fs/promises";import oe from"node:path";import{readFile as Cp,readdir as Tp,stat as Rp,writeFile as ls}from"node:fs/promises";import j from"node:path";async function er(e){return JSON.parse(await Cp(e,"utf8"))}i(er,"readJson");async function _p(e){try{return await Rp(e),!0}catch{return!1}}i(_p,"pathExists");async function tr(e){return(await Tp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(tr,"listDirectories");async function Gt(e){let t=await _p(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await tr(t)).filter(o=>j.basename(o).startsWith("eval-")),r={};for(let o of n){let s=j.join(o,"eval_metadata.json"),c=(await er(s).catch(()=>({}))).eval_id??j.basename(o);for(let d of await tr(o)){let l=j.basename(d),u=(await tr(d)).filter(f=>j.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){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[l].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}i(Gt,"loadRunResults");function Ap(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}},o=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-o.pass_rate.mean),time_seconds:Vt(r.time_seconds.mean-o.time_seconds.mean),tokens:Vt(r.tokens.mean-o.tokens.mean)}}}i(Ap,"summarizeConfigs");function nr(e,t,n){let r=Ap(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}i(nr,"buildBenchmarkDocument");function Pp(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(`
550
- `)}i(Pp,"renderBenchmarkMarkdown");function Mp(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}i(Mp,"parseArgs");async function Op(){let{iterationDir:e,skillName:t}=Mp(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),o=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await ls(o,JSON.stringify(r,null,2)),await ls(s,`${Pp(r)}
551
- `),console.log(`Wrote ${o}`),console.log(`Wrote ${s}`)}i(Op,"main");var Np=!1;Np&&Op().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Jt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Jt,"normalizeStringArray");function Lp(e){let t={};for(let[n,r]of Object.entries(e)){let o=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&&o.set(d,(o.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(o.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}i(Lp,"summarizeFailureClusters");function Dp(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:Jt(r.key_findings),variance_hotspots:Jt(r.variance_hotspots),suggested_actions:Jt(r.suggested_actions),watchouts:Jt(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}}i(Dp,"normalizeAnalysisResult");function $p(e){return`${e.agentInstructions.trim()}
548
+ `}i(Pp,"buildGradingPrompt");async function us(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}i(us,"defaultRunJudge");async function Mp(e,t,n=us){let r=await Ap(T.resolve(e)),o=ls(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=Pp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=_p(c,o),l={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},u={summary:ns(d.expectations),expectations:d.expectations,execution_metrics:l,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await ds(T.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
549
+ `,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}i(Mp,"gradeRun");async function Op(e,t=us){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),o=[],s=[];for(let c of await nr(n))if(T.basename(c).startsWith("eval-"))for(let d of await nr(c)){let l=T.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await nr(d)){if(!T.basename(u).startsWith("run-"))continue;let f=T.join(u,"grading.json");if(await J(f,null)&&e.overwrite!==!0){s.push(T.relative(n,u).replace(/\\/g,"/"));continue}let m=await Mp(u,e,t);o.push({run:T.relative(n,u).replace(/\\/g,"/"),summary:m.grading.summary,config:m.grading.meta.config,eval_id:m.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:o.length,skipped:s.length,processed_runs:o,skipped_runs:s};return await ds(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
550
+ `,"utf8"),a}i(Op,"gradeWorkspace");function Np(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(o=>o.trim()).filter(Boolean))}return t}i(Np,"parseArgs");async function fs(e=process.argv){let t=Np(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 Op(t);process.stdout.write(`${JSON.stringify(n,null,2)}
551
+ `)}i(fs,"main");var Lp=!1;Lp&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as sr}from"node:fs/promises";import oe from"node:path";import{readFile as Dp,readdir as $p,stat as Fp,writeFile as ps}from"node:fs/promises";import j from"node:path";async function rr(e){return JSON.parse(await Dp(e,"utf8"))}i(rr,"readJson");async function jp(e){try{return await Fp(e),!0}catch{return!1}}i(jp,"pathExists");async function ir(e){return(await $p(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(ir,"listDirectories");async function Yt(e){let t=await jp(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await ir(t)).filter(o=>j.basename(o).startsWith("eval-")),r={};for(let o of n){let s=j.join(o,"eval_metadata.json"),c=(await rr(s).catch(()=>({}))).eval_id??j.basename(o);for(let d of await ir(o)){let l=j.basename(d),u=(await ir(d)).filter(f=>j.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){let p=await rr(j.join(f,"grading.json")).catch(()=>null);if(!p)continue;let m=await rr(j.join(f,"timing.json")).catch(()=>({}));r[l].push({eval_id:c,run_id:j.basename(f),pass_rate:p.summary?.pass_rate??0,passed:p.summary?.passed??0,failed:p.summary?.failed??0,total:p.summary?.total??0,time_seconds:m.total_duration_seconds??p.timing?.total_duration_seconds??0,tokens:m.total_tokens??p.execution_metrics?.output_chars??0,tool_calls:p.execution_metrics?.total_tool_calls??0,errors:p.execution_metrics?.errors_encountered??0,expectations:Array.isArray(p.expectations)?p.expectations:[],notes:[...p.user_notes_summary?.uncertainties??[],...p.user_notes_summary?.needs_review??[],...p.user_notes_summary?.workarounds??[]]})}}}}return r}i(Yt,"loadRunResults");function Kp(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:Gt(a.map(c=>Number(c.pass_rate??0))),time_seconds:Gt(a.map(c=>Number(c.time_seconds??0))),tokens:Gt(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}},o=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Jt(r.pass_rate.mean-o.pass_rate.mean),time_seconds:Jt(r.time_seconds.mean-o.time_seconds.mean),tokens:Jt(r.tokens.mean-o.tokens.mean)}}}i(Kp,"summarizeConfigs");function or(e,t,n){let r=Kp(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}i(or,"buildBenchmarkDocument");function Bp(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(`
552
+ `)}i(Bp,"renderBenchmarkMarkdown");function Up(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}i(Up,"parseArgs");async function Xp(){let{iterationDir:e,skillName:t}=Up(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Yt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=or(e,t,n),o=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await ps(o,JSON.stringify(r,null,2)),await ps(s,`${Bp(r)}
553
+ `),console.log(`Wrote ${o}`),console.log(`Wrote ${s}`)}i(Xp,"main");var Wp=!1;Wp&&Xp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Qt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Qt,"normalizeStringArray");function Hp(e){let t={};for(let[n,r]of Object.entries(e)){let o=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&&o.set(d,(o.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(o.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}i(Hp,"summarizeFailureClusters");function zp(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:Qt(r.key_findings),variance_hotspots:Qt(r.variance_hotspots),suggested_actions:Qt(r.suggested_actions),watchouts:Qt(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}}i(zp,"normalizeAnalysisResult");function qp(e){return`${e.agentInstructions.trim()}
552
554
 
553
555
  Return JSON with this shape:
554
556
  {
@@ -566,12 +568,12 @@ ${$(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.config
566
568
 
567
569
  ## Failure Clusters
568
570
  ${$(JSON.stringify(e.failureClusters,null,2),8e3)}
569
- `}i($p,"buildAnalysisPrompt");async function Fp(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:oe.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(Fp,"defaultRunAnalyst");function jp(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,o]of n){t.push(`## ${o}`),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(`
571
+ `}i(qp,"buildAnalysisPrompt");async function Vp(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:oe.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(Vp,"defaultRunAnalyst");function Gp(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,o]of n){t.push(`## ${o}`),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(`
570
572
  `)}
571
- `}i(jp,"renderAnalysisMarkdown");async function Kp(e,t=Fp){let n=oe.resolve(e.workspaceDir),r=oe.resolve(e.benchmarkPath??oe.join(n,"benchmark.json")),o=await J(r,null);if(!o){let p=await Gt(n);if(Object.keys(p).length===0)throw new Error(`No benchmark data found in ${n}`);o=nr(n,e.skillName??oe.basename(n),p),await rr(r,`${JSON.stringify(o,null,2)}
572
- `,"utf8")}let s=await Gt(n),a=Lp(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=$p({agentInstructions:c,benchmark:o,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:o}),u=Dp(l,o,a),f=oe.resolve(e.outputPath??oe.join(n,"analysis.json")),m=oe.resolve(e.markdownPath??oe.join(n,"analysis.md"));return await rr(f,`${JSON.stringify(u,null,2)}
573
- `,"utf8"),await rr(m,jp(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:m}}i(Kp,"analyzeBenchmark");function Bp(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}i(Bp,"parseArgs");async function us(e=process.argv){let t=Bp(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 Kp(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
574
- `)}i(us,"main");var Up=!1;Up&&us().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Xp,readFile as fs,writeFile as ps}from"node:fs/promises";import O from"node:path";async function or(e){return(await Xp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(or,"listDirectories");function ir(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(ir,"normalizeStringArray");function Wp(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:ir(t.strengths_a),strengths_b:ir(t.strengths_b),risks:ir(t.risks)}}i(Wp,"normalizeComparisonResult");async function Hp(e,t,n,r){let o=(await or(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await or(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=o[r],c=s[r];if(!a||!c)return null;let d=await J(O.join(e,"eval_metadata.json"),{}),l=await fs(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await fs(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:l},runB:{runDir:c,runId:O.basename(c),configName:n,output:u}}}i(Hp,"loadComparisonPair");function zp(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
573
+ `}i(Gp,"renderAnalysisMarkdown");async function Jp(e,t=Vp){let n=oe.resolve(e.workspaceDir),r=oe.resolve(e.benchmarkPath??oe.join(n,"benchmark.json")),o=await J(r,null);if(!o){let m=await Yt(n);if(Object.keys(m).length===0)throw new Error(`No benchmark data found in ${n}`);o=or(n,e.skillName??oe.basename(n),m),await sr(r,`${JSON.stringify(o,null,2)}
574
+ `,"utf8")}let s=await Yt(n),a=Hp(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=qp({agentInstructions:c,benchmark:o,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:o}),u=zp(l,o,a),f=oe.resolve(e.outputPath??oe.join(n,"analysis.json")),p=oe.resolve(e.markdownPath??oe.join(n,"analysis.md"));return await sr(f,`${JSON.stringify(u,null,2)}
575
+ `,"utf8"),await sr(p,Gp(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:p}}i(Jp,"analyzeBenchmark");function Yp(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}i(Yp,"parseArgs");async function ms(e=process.argv){let t=Yp(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 Jp(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
576
+ `)}i(ms,"main");var Qp=!1;Qp&&ms().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Zp,readFile as hs,writeFile as gs}from"node:fs/promises";import O from"node:path";async function cr(e){return(await Zp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(cr,"listDirectories");function ar(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(ar,"normalizeStringArray");function em(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:ar(t.strengths_a),strengths_b:ar(t.strengths_b),risks:ar(t.risks)}}i(em,"normalizeComparisonResult");async function tm(e,t,n,r){let o=(await cr(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await cr(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=o[r],c=s[r];if(!a||!c)return null;let d=await J(O.join(e,"eval_metadata.json"),{}),l=await hs(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await hs(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:l},runB:{runDir:c,runId:O.basename(c),configName:n,output:u}}}i(tm,"loadComparisonPair");function nm(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
575
577
 
576
578
  Return JSON with this shape:
577
579
  {
@@ -599,15 +601,15 @@ ${$(t.A.output,12e3)}
599
601
 
600
602
  ## Candidate B
601
603
  ${$(t.B.output,12e3)}
602
- `}i(zp,"buildComparisonPrompt");async function qp(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}i(qp,"defaultRunComparator");function Vp(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}i(Vp,"mapWinnerToConfig");function Gp(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(`
604
+ `}i(nm,"buildComparisonPrompt");async function rm(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}i(rm,"defaultRunComparator");function im(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}i(im,"mapWinnerToConfig");function om(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(`
603
605
  `)}
604
- `}i(Gp,"renderComparisonMarkdown");async function Jp(e,t=qp){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",o=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 or(n))if(O.basename(f).startsWith("eval-"))for(let m=0;m<s;m+=1){let p=await Hp(f,r,o,m);if(!p)break;let g=c.length%2===0,v=zp({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:o}),y=Wp(w),h=Vp(y.winner,g,r,o);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:o}:{A:o,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 ${o} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:o,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===o).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=O.resolve(e.outputPath??O.join(n,"comparison.json")),u=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await ps(l,`${JSON.stringify(d,null,2)}
605
- `,"utf8"),await ps(u,Gp(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}i(Jp,"compareWorkspace");function Yp(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}i(Yp,"parseArgs");async function ms(e=process.argv){let t=Yp(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 Jp(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
606
- `)}i(ms,"main");var Qp=!1;Qp&&ms().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Zp,writeFile as em}from"node:fs/promises";import{createHash as tm}from"node:crypto";import sr from"node:path";import{zipSync as nm,strToU8 as rm}from"fflate";var im=".kodax-package.json";function om(e){return e instanceof Uint8Array?e:new Uint8Array(e)}i(om,"toUint8Array");function sm(e){return tm("sha256").update(e).digest("hex")}i(sm,"sha256");function am(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."}}i(am,"createPackageManifest");async function cm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
606
+ `}i(om,"renderComparisonMarkdown");async function sm(e,t=rm){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",o=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 cr(n))if(O.basename(f).startsWith("eval-"))for(let p=0;p<s;p+=1){let m=await tm(f,r,o,p);if(!m)break;let g=c.length%2===0,v=nm({agentInstructions:a,evalMetadata:m.evalMetadata,runA:m.runA,runB:m.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:p,configA:r,configB:o}),y=em(w),h=im(y.winner,g,r,o);c.push({index:c.length+1,eval_id:m.evalMetadata.eval_id??null,eval_name:m.evalMetadata.eval_name??null,run_a:O.relative(n,m.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,m.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:o}:{A:o,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 ${o} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:o,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===o).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=O.resolve(e.outputPath??O.join(n,"comparison.json")),u=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await gs(l,`${JSON.stringify(d,null,2)}
607
+ `,"utf8"),await gs(u,om(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}i(sm,"compareWorkspace");function am(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}i(am,"parseArgs");async function ys(e=process.argv){let t=am(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 sm(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
608
+ `)}i(ys,"main");var cm=!1;cm&&ys().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as dm,writeFile as lm}from"node:fs/promises";import{createHash as um}from"node:crypto";import dr from"node:path";import{zipSync as fm,strToU8 as pm}from"fflate";var mm=".kodax-package.json";function hm(e){return e instanceof Uint8Array?e:new Uint8Array(e)}i(hm,"toUint8Array");function gm(e){return um("sha256").update(e).digest("hex")}i(gm,"sha256");function ym(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."}}i(ym,"createPackageManifest");async function wm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
607
609
  - ${n.errors.join(`
608
- - `)}`);let r=await lt(e),o=await Gn(e),s=[];for(let d of o){if(d.relativePath.endsWith(".skill"))continue;let l=om(await Zp(d.absolutePath));s.push({...d,bytes:l,sha256:sm(l)})}let a=am(r,s,t),c={[im]:rm(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:nm(c,{level:6})}}i(cm,"buildSkillPackage");async function dm(e,t,n={}){let r=await cm(e,n);return await em(t,r.bytes),{...r,outputPath:sr.resolve(t)}}i(dm,"writeSkillPackage");function lm(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}i(lm,"parseArgs");async function hs(e=process.argv){let t=lm(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await lt(t.skillDir),r=t.output??sr.join(sr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),o=await dm(t.skillDir,r);console.log(`Wrote ${o.outputPath}`)}i(hs,"main");var um=!1;um&&hs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as fm,mkdir as ar,readFile as ws,rm as vs,stat as pm,writeFile as mm}from"node:fs/promises";import Y from"node:path";import{strFromU8 as gs,unzipSync as hm}from"fflate";var ys=".kodax-package.json";function gm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}i(gm,"normalizeArchivePath");function ym(e){let t=gm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}i(ym,"assertSafeArchivePath");function wm(e){return/\.(skill|zip)$/i.test(e)}i(wm,"isZipLike");function vm(e){let t=hm(e),n=Object.entries(t).map(([l,u])=>({relativePath:ym(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let o=zt(gs(r.bytes)),s=typeof o.frontmatter.name=="string"?o.frontmatter.name.trim():"",a=typeof o.frontmatter.description=="string"?o.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(l=>l.relativePath===ys),d=c?JSON.parse(gs(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==ys)}}i(vm,"readSkillPackageBuffer");async function bm(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await vs(e,{recursive:!0,force:!0})}await ar(e,{recursive:!0})}i(bm,"ensureInstallTarget");async function km(e,t={}){let n=Y.resolve(t.skillsDir??ft()),r=vm(await ws(e)),o=Y.join(n,r.skillName);await bm(o,t.force===!0);for(let s of r.entries){let a=Y.join(o,s.relativePath);await ar(Y.dirname(a),{recursive:!0}),await mm(a,s.bytes)}return{skillName:r.skillName,installedTo:o,source:Y.resolve(e),manifest:r.manifest}}i(km,"installSkillArchive");async function xm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
610
+ - `)}`);let r=await lt(e),o=await Qn(e),s=[];for(let d of o){if(d.relativePath.endsWith(".skill"))continue;let l=hm(await dm(d.absolutePath));s.push({...d,bytes:l,sha256:gm(l)})}let a=ym(r,s,t),c={[mm]:pm(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:fm(c,{level:6})}}i(wm,"buildSkillPackage");async function vm(e,t,n={}){let r=await wm(e,n);return await lm(t,r.bytes),{...r,outputPath:dr.resolve(t)}}i(vm,"writeSkillPackage");function bm(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}i(bm,"parseArgs");async function ws(e=process.argv){let t=bm(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await lt(t.skillDir),r=t.output??dr.join(dr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),o=await vm(t.skillDir,r);console.log(`Wrote ${o.outputPath}`)}i(ws,"main");var km=!1;km&&ws().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as xm,mkdir as lr,readFile as ks,rm as xs,stat as Sm,writeFile as Em}from"node:fs/promises";import Y from"node:path";import{strFromU8 as vs,unzipSync as Im}from"fflate";var bs=".kodax-package.json";function Cm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}i(Cm,"normalizeArchivePath");function Tm(e){let t=Cm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}i(Tm,"assertSafeArchivePath");function Rm(e){return/\.(skill|zip)$/i.test(e)}i(Rm,"isZipLike");function _m(e){let t=Im(e),n=Object.entries(t).map(([l,u])=>({relativePath:Tm(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let o=Vt(vs(r.bytes)),s=typeof o.frontmatter.name=="string"?o.frontmatter.name.trim():"",a=typeof o.frontmatter.description=="string"?o.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(l=>l.relativePath===bs),d=c?JSON.parse(vs(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==bs)}}i(_m,"readSkillPackageBuffer");async function Am(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await xs(e,{recursive:!0,force:!0})}await lr(e,{recursive:!0})}i(Am,"ensureInstallTarget");async function Pm(e,t={}){let n=Y.resolve(t.skillsDir??ft()),r=_m(await ks(e)),o=Y.join(n,r.skillName);await Am(o,t.force===!0);for(let s of r.entries){let a=Y.join(o,s.relativePath);await lr(Y.dirname(a),{recursive:!0}),await Em(a,s.bytes)}return{skillName:r.skillName,installedTo:o,source:Y.resolve(e),manifest:r.manifest}}i(Pm,"installSkillArchive");async function Mm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
609
611
  - ${n.errors.join(`
610
- - `)}`);let r=Y.join(e,"SKILL.md"),o=zt(await ws(r,"utf8")),s=Y.resolve(t.skillsDir??ft()),a=Y.join(s,o.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await vs(a,{recursive:!0,force:!0})}return await ar(s,{recursive:!0}),await fm(e,a,{recursive:!0}),{skillName:o.frontmatter.name,installedTo:a,source:Y.resolve(e),manifest:null}}i(xm,"installSkillDirectory");async function Sm(e,t={}){let n=Y.resolve(e),r=await pm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return xm(n,t);if(r.isFile()&&wm(n))return km(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}i(Sm,"installSkill");function Em(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}i(Em,"parseArgs");async function bs(e=process.argv){let t=Em(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 Sm(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}i(bs,"main");var Im=!1;Im&&bs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var xM=1440*60*1e3;var _M=5*6e4;var bO=new Intl.Segmenter("zh-CN",{granularity:"word"});var SN=String.raw`const TOOL_NAME = 'echo_tool';
612
+ - `)}`);let r=Y.join(e,"SKILL.md"),o=Vt(await ks(r,"utf8")),s=Y.resolve(t.skillsDir??ft()),a=Y.join(s,o.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await xs(a,{recursive:!0,force:!0})}return await lr(s,{recursive:!0}),await xm(e,a,{recursive:!0}),{skillName:o.frontmatter.name,installedTo:a,source:Y.resolve(e),manifest:null}}i(Mm,"installSkillDirectory");async function Om(e,t={}){let n=Y.resolve(e),r=await Sm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return Mm(n,t);if(r.isFile()&&Rm(n))return Pm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}i(Om,"installSkill");function Nm(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}i(Nm,"parseArgs");async function Ss(e=process.argv){let t=Nm(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 Om(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}i(Ss,"main");var Lm=!1;Lm&&Ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var LM=1440*60*1e3;var UM=5*6e4;var OO=new Intl.Segmenter("zh-CN",{granularity:"word"});var DN=String.raw`const TOOL_NAME = 'echo_tool';
611
613
  const RESOURCE_URI = 'memory://guide';
612
614
  const PROMPT_NAME = 'draft_prompt';
613
615
  let buffer = '';
@@ -787,14 +789,14 @@ process.stdin.on('data', (chunk) => {
787
789
 
788
790
  process.on('SIGTERM', () => process.exit(0));
789
791
  process.on('SIGINT', () => process.exit(0));
790
- `;var Es=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),qm=0,Vm=0,Is=i(e=>{let t=e==="label"?++qm:++Vm,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function Gm(e,t,n){let r=Is("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}i(Gm,"appendLabel");async function Jm(e,t,n){let r=Is("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}i(Jm,"appendArtifact");function Ym(e){let t=[],n=new Map,r=[],o=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),o=a;continue}o?o.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}i(Ym,"buildLineageTree");var Qm=Object.freeze({name:"lineage",entryTypes:Es,operators:Object.freeze({label:i((async(e,...t)=>{let[n,r]=t;return Gm(e,n,r)}),"label"),attachArtifact:i((async(e,...t)=>{let[n,r]=t;return Jm(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:i(e=>Ym(e),"buildLineageTree")})});var ah=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=ah,Yt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
791
-
792
- `;var BL=Yt.trimEnd();var UL=16*1024;var fh={enabled:!1,maxAge:20,protectedTools:Array.from(dr)};import G$ from"typescript";var u1=new Intl.Segmenter("en",{granularity:"grapheme"});var DK=4*1024;var jK=64*1024;var lr=".conversation-cache.",YK=`${lr}json`,QK=1024*1024,ZK=1024*1024,eB=1024*1024,tB=4*1024*1024,nB=128*1024;var Ie=class extends Error{static{i(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 Ms(e){let t=e.lastIndexOf(lr);if(t<=0)return;let n=e.slice(t+lr.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}i(Ms,"cacheArtifactSessionId");async function Os(e){let t=mt.dirname(e),n=mt.basename(e,mt.extname(e)),r;try{r=await Zt.readdir(t)}catch(o){if(o.code==="ENOENT")return;throw o}await Promise.all(r.filter(o=>Ms(o)===n).map(o=>Zt.rm(mt.join(t,o),{force:!0})))}i(Os,"removeConversationPageCache");async function ur(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()&&Ms(n.name)!==void 0).map(n=>Zt.rm(mt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}i(ur,"removeConversationPageCachesInDirectory");var $s=3,Lh=300*1e3,Ns=65536,fr=i(e=>P.join(e,".layout.json"),"layoutMarkerPath"),mr=i(e=>P.join(e,".migration-lock"),"lockDirPath"),Fs=i(e=>P.join(mr(e),"owner.json"),"ownerPath"),pr=i(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),hr=i(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(".")}i(gr,"isSessionFile");function js(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}i(js,"sidecarId");async function Dh(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe(Ns),{bytesRead:r}=await t.read(n,0,Ns,0);if(r===0)return null;let o=n.toString("utf8",0,r),s=o.indexOf(`
793
- `),a=(s>=0?o.slice(0,s):o).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()}}i(Dh,"readMeta");async function $h(e){let t=await Dh(e);return t?gi({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}i($h,"destKeyFor");async function Fh(e){let t=[],n=i(async(r,o)=>{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)||o&&js(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(hr(e),!0),t}i(Fh,"collectFlatSources");async function jh(e){let t=await Fh(e),n=t.filter(s=>gr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),o=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await $h(s);o.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let l=P.join(P.dirname(s),`${a}${d}`);Ds.existsSync(l)&&o.push({from:l,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=js(P.basename(s));a===null||r.has(a)||o.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return o}i(jh,"planMigration");async function Kh(e){try{let t=JSON.parse(await R.readFile(fr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===$s}catch{return!1}}i(Kh,"isMigrated");async function Ls(e){await ur(e),await ur(hr(e))}i(Ls,"removeLegacyConversationCaches");async function Bh(e){try{let t=JSON.parse(await R.readFile(Fs(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>Lh}catch{return!0}}i(Bh,"lockIsStale");async function Uh(e){let t=mr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Fs(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 Bh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}i(Uh,"acquireLock");async function Xh(e){await R.rm(mr(e),{recursive:!0,force:!0}).catch(()=>{})}i(Xh,"releaseLock");async function Wh(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}}i(Wh,"assertNoActiveSessionWriters");async function Hh(e){let t=new Set;try{let n=await R.readFile(pr(e),"utf8");for(let r of n.split(`
794
- `))if(r.trim())try{let o=JSON.parse(r);o.done&&typeof o.from=="string"&&t.add(o.from)}catch{}}catch{}return t}i(Hh,"readJournalDone");async function zh(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),Ds.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}}i(zh,"executeMove");async function qh(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+`
795
- `,"utf8"),await R.rename(t,fr(e))}i(qh,"writeMarker");async function Vh(e){let t=hr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}i(Vh,"retireSessionsArchive");async function Gh(e){if(!await Uh(e))return{moved:0,planned:0};try{await Wh(e),await Ls(e);let t=await jh(e),n=await Hh(e),r=await R.open(pr(e),"a"),o=0;try{for(let s of t){if(gr(P.basename(s.from)))try{await Os(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await zh(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
796
- `),o+=1)}}finally{await r.close()}return await Vh(e),await Ls(e),await qh(e),await R.rm(pr(e),{force:!0}).catch(()=>{}),{moved:o,planned:t.length}}finally{await Xh(e)}}i(Gh,"runMigration");async function Ks(e){try{if(await Kh(e))return;await Gh(e)}catch(t){if(t instanceof Ie)throw t}}i(Ks,"ensureLayoutMigrated");import{jsx as Tt,jsxs as Je}from"react/jsx-runtime";import{useMemo as Xw,useRef as Ww,useState as ti}from"react";import{jsx as Tc}from"react/jsx-runtime";import{createContext as Aw,useContext as Yr,useEffect as Ge,useMemo as Cc,useState as Pw,useCallback as Rc,useRef as vn}from"react";import{Stream as sw}from"node:stream";import{openSync as aw,writeSync as hc}from"node:fs";import{performance as cw}from"node:perf_hooks";import{tmpdir as dw}from"node:os";import{join as lw}from"node:path";import yr,{forwardRef as Qh,useContext as Zh}from"react";import{createContext as Jh}from"react";var Be=Jh({isScreenReaderEnabled:!1});import{createContext as Yh}from"react";var en=Yh(void 0);var Bs=Qh(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":o,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=Zh(Be),l=n?yr.createElement("ink-text",null,n):void 0;if(d&&r)return null;let u=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:o,state:s}},d&&l?l:e);return t?yr.createElement(en.Provider,{value:t},u):u});Bs.displayName="Box";var q=Bs;import rg,{useContext as Us}from"react";import Ue from"chalk";import ge from"chalk";var eg=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,tg=/^ansi256\(\s?(\d+)\s?\)$/;function ng(e){return e in ge}i(ng,"isNamedColor");function G(e,t,n){if(!t)return e;if(ng(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let o=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[o]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=tg.exec(t);if(!r)return e;let o=Number(r[1]);return n==="foreground"?ge.ansi256(o)(e):ge.bgAnsi256(o)(e)}if(t.startsWith("rgb")){let r=eg.exec(t);if(!r)return e;let o=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(o,s,a)(e):ge.bgRgb(o,s,a)(e)}return e}i(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:o=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:l,"aria-label":u,"aria-hidden":f=!1,internal_cursorAnchor:m=!1}){let{isScreenReaderEnabled:p}=Us(Be),g=Us(en),v=p&&u?u:l;if(v==null)return null;let w=i(y=>{let h=y;n&&(h=Ue.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Ue.bold(h)),o&&(h=Ue.italic(h)),s&&(h=Ue.underline(h)),a&&(h=Ue.strikethrough(h)),c&&(h=Ue.inverse(h)),h},"transform");return p&&f?null:rg.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...m?{internal_cursorAnchor:!0}:{}},p&&u?u:l)}i(K,"Text");import PB,{useLayoutEffect as MB,useMemo as OB,useState as NB}from"react";import Pe from"node:process";import fc from"react";import{throttle as By}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Uy from"auto-bind";import{onExit as Xy}from"signal-exit";import Wy from"patch-console";import{LegacyRoot as Hy,ConcurrentRoot as zy}from"react-reconciler/constants.js";import qy from"yoga-layout";import Vy from"wrap-ansi";import Gy from"terminal-size";import ig from"node:process";var tn=i(()=>ig.env.DEV==="true","isDev");import Mg from"react-reconciler";import{DefaultEventPriority as Og,NoEventPriority as la}from"react-reconciler/constants.js";import*as ye from"scheduler";import sa from"yoga-layout";import{createContext as Ng}from"react";import vg from"yoga-layout";import og from"widest-line";var Xs=new Map,sg=i(e=>{if(e.length===0)return{width:0,height:0};let t=Xs.get(e);if(t)return t;let n=og(e),r=e.split(`
797
- `).length,o={width:n,height:r};return Xs.set(e,o),o},"measureText"),wr=sg;import ag from"wrap-ansi";import cg from"cli-truncate";var Ws={},dg=i((e,t,n)=>{let r=e+String(t)+String(n),o=Ws[r];if(o)return o;let s=e;if(n==="wrap"&&(s=ag(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=cg(e,t,{position:a})}return Ws[r]=s,s},"wrapText"),nn=dg;var lg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),ug=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),fg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),qs=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),pg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Vs=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Hs=i((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!lg(c))break;n++}let r=e.slice(t,n),o=n;for(;n<e.length;){let c=e[n];if(!ug(c))break;n++}let s=e.slice(o,n),a=e[n];if(!(a===void 0||!fg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),zs=i((e,t,n)=>{for(let r=t;r<e.length;r++){let o=e[r];if(n&&o==="\x07"||o==="\x9C")return r+1;if(o==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),mg=i((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!qs(s))break;n++}let r=e.slice(t,n),o=e[n];if(!(o===void 0||!pg(o)))return{endIndex:n+1,intermediateString:r,finalCharacter:o}},"readEscapeSequence"),hg=i(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"),gg=i(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=i(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Vs(t))return!0;return!1},"hasAnsiControlCharacters"),Xe=i((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"),Gs=i(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let o=e[r];if(o===void 0)break;if(o==="\x1B"){let a=e[r+1];if(a===void 0)return Xe(t,e,n,r);if(a==="["){let l=Hs(e,r+2);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=hg(a);if(c!==void 0){let l=zs(e,r+2,c.allowBellTerminator);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let d=mg(e,r+1);if(d===void 0){if(qs(a))return Xe(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(o==="\x9B"){let a=Hs(e,r+1);if(a===void 0)return Xe(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=gg(o);if(s!==void 0){let a=zs(e,r+1,s.allowBellTerminator);if(a===void 0)return Xe(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(o==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:o}),r++,n=r;continue}if(Vs(o)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:o}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var yg=/^[\d:;]*$/,wg=i(e=>{if(!vr(e))return e;let t="";for(let n of Gs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&yg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Js=wg;var Ys=i(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=Ys(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o,n))),t+=o}return Js(t)},"squashTextNodes"),ht=Ys;var rn=i(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:vg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(bg.bind(null,t)),t},"createNode"),on=i((e,t)=>{t.parentNode&&gt(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=i((e,t,n)=>{t.parentNode&&gt(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"),gt=i((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=i((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=i((e,t)=>{e.style=t},"setStyle"),Qs=i(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return yt(t,e),t},"createTextNode"),bg=i(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:ht(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let o=e.style?.textWrap??"wrap",s=nn(n,t,o);return wr(s)},"measureTextNode"),Zs=i(e=>{if(e?.parentNode)return e.yogaNode??Zs(e.parentNode)},"findClosestYogaNode"),sn=i(e=>{Zs(e)?.markDirty()},"markNodeAsDirty"),yt=i((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var xg=i((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"),Sg=i((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"),Eg=i((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"),Ig=i((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"),Cg=i((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"),Tg=i((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Rg=i((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"),_g=i((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"),Ag=i((e,t={})=>{xg(e,t),Sg(e,t),Eg(e,t),Ig(e,t),Cg(e,t),Tg(e,t),Rg(e,t),_g(e,t)},"styles"),Sr=Ag;if(tn())try{await Promise.resolve().then(()=>(oa(),Pg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
792
+ `;var Ts=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),rh=0,ih=0,Rs=i(e=>{let t=e==="label"?++rh:++ih,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function oh(e,t,n){let r=Rs("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}i(oh,"appendLabel");async function sh(e,t,n){let r=Rs("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}i(sh,"appendArtifact");function ah(e){let t=[],n=new Map,r=[],o=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),o=a;continue}o?o.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}i(ah,"buildLineageTree");var ch=Object.freeze({name:"lineage",entryTypes:Ts,operators:Object.freeze({label:i((async(e,...t)=>{let[n,r]=t;return oh(e,n,r)}),"label"),attachArtifact:i((async(e,...t)=>{let[n,r]=t;return sh(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:i(e=>ah(e),"buildLineageTree")})});var yh=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"]),fr=yh,Zt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
793
+
794
+ `;var eD=Zt.trimEnd();var tD=16*1024;var xh={enabled:!1,maxAge:20,protectedTools:Array.from(fr)};import cF from"typescript";var E1=new Intl.Segmenter("en",{granularity:"grapheme"});var VK=4*1024;var YK=64*1024;var pr=".conversation-cache.",dB=`${pr}json`,lB=1024*1024,uB=1024*1024,fB=1024*1024,pB=4*1024*1024,mB=128*1024;var Ie=class extends Error{static{i(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 Ls(e){let t=e.lastIndexOf(pr);if(t<=0)return;let n=e.slice(t+pr.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}i(Ls,"cacheArtifactSessionId");async function Ds(e){let t=mt.dirname(e),n=mt.basename(e,mt.extname(e)),r;try{r=await tn.readdir(t)}catch(o){if(o.code==="ENOENT")return;throw o}await Promise.all(r.filter(o=>Ls(o)===n).map(o=>tn.rm(mt.join(t,o),{force:!0})))}i(Ds,"removeConversationPageCache");async function mr(e){let t;try{t=await tn.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()&&Ls(n.name)!==void 0).map(n=>tn.rm(mt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}i(mr,"removeConversationPageCachesInDirectory");var Ks=3,Hh=300*1e3,$s=65536,hr=i(e=>P.join(e,".layout.json"),"layoutMarkerPath"),yr=i(e=>P.join(e,".migration-lock"),"lockDirPath"),Bs=i(e=>P.join(yr(e),"owner.json"),"ownerPath"),gr=i(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),wr=i(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function vr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(vr,"isSessionFile");function Us(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}i(Us,"sidecarId");async function zh(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe($s),{bytesRead:r}=await t.read(n,0,$s,0);if(r===0)return null;let o=n.toString("utf8",0,r),s=o.indexOf(`
795
+ `),a=(s>=0?o.slice(0,s):o).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()}}i(zh,"readMeta");async function qh(e){let t=await zh(e);return t?vi({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}i(qh,"destKeyFor");async function Vh(e){let t=[],n=i(async(r,o)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(vr(a.name)||o&&Us(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(wr(e),!0),t}i(Vh,"collectFlatSources");async function Gh(e){let t=await Vh(e),n=t.filter(s=>vr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),o=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await qh(s);o.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let l=P.join(P.dirname(s),`${a}${d}`);js.existsSync(l)&&o.push({from:l,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Us(P.basename(s));a===null||r.has(a)||o.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return o}i(Gh,"planMigration");async function Jh(e){try{let t=JSON.parse(await R.readFile(hr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===Ks}catch{return!1}}i(Jh,"isMigrated");async function Fs(e){await mr(e),await mr(wr(e))}i(Fs,"removeLegacyConversationCaches");async function Yh(e){try{let t=JSON.parse(await R.readFile(Bs(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>Hh}catch{return!0}}i(Yh,"lockIsStale");async function Qh(e){let t=yr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Bs(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 Yh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}i(Qh,"acquireLock");async function Zh(e){await R.rm(yr(e),{recursive:!0,force:!0}).catch(()=>{})}i(Zh,"releaseLock");async function eg(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}}i(eg,"assertNoActiveSessionWriters");async function tg(e){let t=new Set;try{let n=await R.readFile(gr(e),"utf8");for(let r of n.split(`
796
+ `))if(r.trim())try{let o=JSON.parse(r);o.done&&typeof o.from=="string"&&t.add(o.from)}catch{}}catch{}return t}i(tg,"readJournalDone");async function ng(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),js.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}}i(ng,"executeMove");async function rg(e){await R.mkdir(e,{recursive:!0});let t=`${hr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:Ks,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
797
+ `,"utf8"),await R.rename(t,hr(e))}i(rg,"writeMarker");async function ig(e){let t=wr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}i(ig,"retireSessionsArchive");async function og(e){if(!await Qh(e))return{moved:0,planned:0};try{await eg(e),await Fs(e);let t=await Gh(e),n=await tg(e),r=await R.open(gr(e),"a"),o=0;try{for(let s of t){if(vr(P.basename(s.from)))try{await Ds(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await ng(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
798
+ `),o+=1)}}finally{await r.close()}return await ig(e),await Fs(e),await rg(e),await R.rm(gr(e),{force:!0}).catch(()=>{}),{moved:o,planned:t.length}}finally{await Zh(e)}}i(og,"runMigration");async function Xs(e){try{if(await Jh(e))return;await og(e)}catch(t){if(t instanceof Ie)throw t}}i(Xs,"ensureLayoutMigrated");import{jsx as Tt,jsxs as Je}from"react/jsx-runtime";import{useMemo as Zw,useRef as ev,useState as ii}from"react";import{jsx as Ac}from"react/jsx-runtime";import{createContext as Kw,useContext as ei,useEffect as Ge,useMemo as _c,useState as Bw,useCallback as Pc,useRef as kn}from"react";import{Stream as gw}from"node:stream";import{openSync as yw,writeSync as wc}from"node:fs";import{performance as ww}from"node:perf_hooks";import{tmpdir as vw}from"node:os";import{join as bw}from"node:path";import br,{forwardRef as cg,useContext as dg}from"react";import{createContext as sg}from"react";var Be=sg({isScreenReaderEnabled:!1});import{createContext as ag}from"react";var nn=ag(void 0);var Ws=cg(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":o,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=dg(Be),l=n?br.createElement("ink-text",null,n):void 0;if(d&&r)return null;let u=br.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:o,state:s}},d&&l?l:e);return t?br.createElement(nn.Provider,{value:t},u):u});Ws.displayName="Box";var q=Ws;import pg,{useContext as Hs}from"react";import Ue from"chalk";import ge from"chalk";var lg=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,ug=/^ansi256\(\s?(\d+)\s?\)$/;function fg(e){return e in ge}i(fg,"isNamedColor");function G(e,t,n){if(!t)return e;if(fg(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let o=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[o]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=ug.exec(t);if(!r)return e;let o=Number(r[1]);return n==="foreground"?ge.ansi256(o)(e):ge.bgAnsi256(o)(e)}if(t.startsWith("rgb")){let r=lg.exec(t);if(!r)return e;let o=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(o,s,a)(e):ge.bgRgb(o,s,a)(e)}return e}i(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:o=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:l,"aria-label":u,"aria-hidden":f=!1,internal_cursorAnchor:p=!1}){let{isScreenReaderEnabled:m}=Hs(Be),g=Hs(nn),v=m&&u?u:l;if(v==null)return null;let w=i(y=>{let h=y;n&&(h=Ue.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Ue.bold(h)),o&&(h=Ue.italic(h)),s&&(h=Ue.underline(h)),a&&(h=Ue.strikethrough(h)),c&&(h=Ue.inverse(h)),h},"transform");return m&&f?null:pg.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...p?{internal_cursorAnchor:!0}:{}},m&&u?u:l)}i(K,"Text");import XB,{useLayoutEffect as WB,useMemo as HB,useState as zB}from"react";import Pe from"node:process";import hc from"react";import{throttle as Yy}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Qy from"auto-bind";import{onExit as Zy}from"signal-exit";import ew from"patch-console";import{LegacyRoot as tw,ConcurrentRoot as nw}from"react-reconciler/constants.js";import rw from"yoga-layout";import iw from"wrap-ansi";import ow from"terminal-size";import mg from"node:process";var rn=i(()=>mg.env.DEV==="true","isDev");import Ug from"react-reconciler";import{DefaultEventPriority as Xg,NoEventPriority as pa}from"react-reconciler/constants.js";import*as ye from"scheduler";import da from"yoga-layout";import{createContext as Wg}from"react";import _g from"yoga-layout";import hg from"widest-line";var zs=new Map,gg=i(e=>{if(e.length===0)return{width:0,height:0};let t=zs.get(e);if(t)return t;let n=hg(e),r=e.split(`
799
+ `).length,o={width:n,height:r};return zs.set(e,o),o},"measureText"),kr=gg;import yg from"wrap-ansi";import wg from"cli-truncate";var qs={},vg=i((e,t,n)=>{let r=e+String(t)+String(n),o=qs[r];if(o)return o;let s=e;if(n==="wrap"&&(s=yg(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=wg(e,t,{position:a})}return qs[r]=s,s},"wrapText"),on=vg;var bg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),kg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),xg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Js=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),Sg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Ys=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Vs=i((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!bg(c))break;n++}let r=e.slice(t,n),o=n;for(;n<e.length;){let c=e[n];if(!kg(c))break;n++}let s=e.slice(o,n),a=e[n];if(!(a===void 0||!xg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Gs=i((e,t,n)=>{for(let r=t;r<e.length;r++){let o=e[r];if(n&&o==="\x07"||o==="\x9C")return r+1;if(o==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),Eg=i((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Js(s))break;n++}let r=e.slice(t,n),o=e[n];if(!(o===void 0||!Sg(o)))return{endIndex:n+1,intermediateString:r,finalCharacter:o}},"readEscapeSequence"),Ig=i(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"),Cg=i(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"),xr=i(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Ys(t))return!0;return!1},"hasAnsiControlCharacters"),Xe=i((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=i(e=>{if(!xr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let o=e[r];if(o===void 0)break;if(o==="\x1B"){let a=e[r+1];if(a===void 0)return Xe(t,e,n,r);if(a==="["){let l=Vs(e,r+2);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=Ig(a);if(c!==void 0){let l=Gs(e,r+2,c.allowBellTerminator);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let d=Eg(e,r+1);if(d===void 0){if(Js(a))return Xe(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(o==="\x9B"){let a=Vs(e,r+1);if(a===void 0)return Xe(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=Cg(o);if(s!==void 0){let a=Gs(e,r+1,s.allowBellTerminator);if(a===void 0)return Xe(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(o==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:o}),r++,n=r;continue}if(Ys(o)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:o}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var Tg=/^[\d:;]*$/,Rg=i(e=>{if(!xr(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===""&&Tg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Zs=Rg;var ea=i(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=ea(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o,n))),t+=o}return Zs(t)},"squashTextNodes"),ht=ea;var sn=i(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:_g.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(Ag.bind(null,t)),t},"createNode"),an=i((e,t)=>{t.parentNode&&gt(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")&&cn(e)},"appendChildNode"),Sr=i((e,t,n)=>{t.parentNode&&gt(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")&&cn(e)},"insertBeforeNode"),gt=i((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")&&cn(e)},"removeChildNode"),Er=i((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),Ir=i((e,t)=>{e.style=t},"setStyle"),ta=i(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return yt(t,e),t},"createTextNode"),Ag=i(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:ht(e),r=kr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let o=e.style?.textWrap??"wrap",s=on(n,t,o);return kr(s)},"measureTextNode"),na=i(e=>{if(e?.parentNode)return e.yogaNode??na(e.parentNode)},"findClosestYogaNode"),cn=i(e=>{na(e)?.markDirty()},"markNodeAsDirty"),yt=i((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,cn(e)},"setTextNodeValue");import k from"yoga-layout";var Mg=i((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"),Og=i((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"),Ng=i((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"),Lg=i((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"),Dg=i((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"),$g=i((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Fg=i((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"),jg=i((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"),Kg=i((e,t={})=>{Mg(e,t),Og(e,t),Ng(e,t),Lg(e,t),Dg(e,t),$g(e,t),Fg(e,t),jg(e,t)},"styles"),Cr=Kg;if(rn())try{await Promise.resolve().then(()=>(ca(),Bg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
798
800
  The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
799
801
  but this failed as it was not installed. Debugging with React Devtools requires it.
800
802
 
@@ -802,33 +804,33 @@ To install use this command:
802
804
 
803
805
  $ npm install --save-dev react-devtools-core
804
806
  `.trim()+`
805
- `);else throw e}var aa=i((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let o of Object.keys(e))(!t||!Object.hasOwn(t,o))&&(n[o]=void 0,r=!0);if(t)for(let o of Object.keys(t))t[o]!==e[o]&&(n[o]=t[o],r=!0);return r?n:void 0},"diff"),ca=i(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),cn=la,Cr,da={name:void 0,version:void 0},se=Mg({getRootHostContext:i(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:i(()=>null,"prepareForCommit"),preparePortalMount:i(()=>null,"preparePortalMount"),clearContainer:i(()=>!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:i(()=>!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 o=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=rn(o);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 Qs(e)},resetTextContent(){},hideTextInstance(e){yt(e,"")},unhideTextInstance(e,t){yt(e,t)},getPublicInstance:i(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(sa.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(sa.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:i(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:i(()=>null,"getInstanceFromScope"),appendChildToContainer:on,insertInContainerBefore:br,removeChildFromContainer(e,t){gt(e,t),ca(t.yogaNode)},commitUpdate(e,t,n,r){Cr&&e.internal_static&&(Cr.isStaticDirty=!0);let o=aa(n,r),s=aa(n.style,r.style);if(!(!o&&!s)){if(o)for(let[a,c]of Object.entries(o)){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){yt(e,n)},removeChild(e,t){gt(e,t),ca(t.yogaNode)},setCurrentUpdatePriority(e){cn=e},getCurrentUpdatePriority:i(()=>cn,"getCurrentUpdatePriority"),resolveUpdatePriority(){return cn!==la?cn:Og},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Ng(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:da.name,rendererVersion:da.version});import jg from"widest-line";import Kg from"indent-string";import we from"yoga-layout";import dn from"yoga-layout";var Lg=i(e=>e.getComputedWidth()-e.getComputedPadding(dn.EDGE_LEFT)-e.getComputedPadding(dn.EDGE_RIGHT)-e.getComputedBorder(dn.EDGE_LEFT)-e.getComputedBorder(dn.EDGE_RIGHT),"getMaxWidth"),ua=Lg;import Dg from"cli-boxes";import ln from"chalk";var $g=i((e,t,n,r)=>{if(n.style.borderStyle){let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?Dg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,u=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=o-(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=ln.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,l,"foreground")+`
806
- `).repeat(_);p&&(W=ln.dim(W));let H=(G(a.right,u,"foreground")+`
807
- `).repeat(_);g&&(H=ln.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=ln.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+o-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),fa=$g;var Fg=i((e,t,n,r)=>{if(!n.style.backgroundColor)return;let o=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,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,u=o-a-c,f=s-d-l;if(!(u>0&&f>0))return;let m=G(" ".repeat(u),n.style.backgroundColor,"background");for(let p=0;p<f;p++)r.write(e+a,t+d+p,m,{transformers:[]})},"renderBackground"),pa=Fg;function ma(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:o,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:l,previousAppliedScrollTop:u,regionTop:f}=e,m=Math.max(0,n-r),p=Math.max(0,Math.min(Math.floor(t),m)),v=s&&n>=o?m:p,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(m,c??m))):v,y=d&&l!==void 0,h=Math.max(0,Math.floor(l??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(u!==void 0&&u!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-u})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}i(ma,"computeScrollState");var Bg=i((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),o=n.getComputedTop();t=`
808
- `.repeat(o)+Kg(t,r)}return t},"applyPaddingToText"),un=i((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=ht(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
809
- `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>un(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:o}=e.internal_accessibility;if(o){let a=Object.keys(o).filter(c=>o[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function ha(){Tr=null,Rr=null}i(ha,"resetScrollHint");function ga(){return Tr}i(ga,"getScrollHint");function ya(){return Rr}i(ya,"getScrollRepaint");var wa=i((e,t,n)=>{let{offsetX:r=0,offsetY:o=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(),l=o+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:l});let u=s;if(typeof e.internal_transform=="function"&&(u=[e.internal_transform,...s]),e.nodeName==="ink-text"){let p=ht(e);if(p.length>0){let g=jg(p),v=ua(c);if(g>v){let w=e.style.textWrap??"wrap";p=nn(p,v,w)}p=Bg(e,p),t.write(d,l,p,{transformers:u})}return}let f=!1,m=0;if(e.nodeName==="ink-box"){pa(d,l,e,t),fa(d,l,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=ma({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:l+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?l+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?l+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)wa(p,t,{offsetX:d,offsetY:l-m,transformers:u,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),_r=wa;import Ug from"slice-ansi";import Xg from"string-width";import{styledCharsFromTokens as Wg,styledCharsToString as Hg,tokenize as zg}from"@alcalzone/ansi-tokenize";var Ar=class{static{i(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=Wg(zg(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Xg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let o of t.split(`
810
- `))r=Math.max(r,this.getStringWidth(o));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{i(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,o){let{transformers:s}=o;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 o=[];for(let s=0;s<this.width;s++)o.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(o)}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:o,transformers:s}=r,{x:a,y:c}=r,d=o.split(`
811
- `),l=n.at(-1);if(l){let f=typeof l?.x1=="number"&&typeof l?.x2=="number",m=typeof l?.y1=="number"&&typeof l?.y2=="number";if(f){let p=this.caches.getWidestLine(o);if(a+p<l.x1||a>l.x2)continue}if(m){let p=d.length;if(c+p<l.y1||c>l.y2)continue}if(f&&(d=d.map(p=>{let g=a<l.x1?l.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>l.x2?l.x2-a:v;return Ug(p,g,w)}),a<l.x1&&(a=l.x1)),m){let p=c<l.y1?l.y1-c:0,g=d.length,v=c+g>l.y2?l.y2-c:g;d=d.slice(p,v),c<l.y1&&(c=l.y1)}}let u=0;for(let[f,m]of d.entries()){let p=t[c+u];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}u++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let o=r.filter(s=>s!==void 0);return Hg(o).trimEnd()}).join(`
812
- `),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function va(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}}i(va,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}i(Ce,"cellAt");function ba(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(o,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(o<0||s<0||o>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${o}, ${s}) on ${e}x${t}`);n[s*e+o]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}i(ba,"createScreenBuilder");function*fn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let o=0;o<r;o++)for(let s=0;s<n;s++){let a=Ce(e,s,o),c=Ce(t,s,o);qg(a,c)||(yield{x:s,y:o,prev:a,next:c})}}i(fn,"diffEach");function ka(e,t,n,r){if(r===0||e.height===0)return e;let o=Math.max(0,t),s=Math.min(e.height-1,n);if(o>s)return e;let a=e.width,c=e.cells.slice(),d=s-o+1,l=i(u=>{for(let f=0;f<a;f++)c[u*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let u=o;u<=s;u++)l(u);return{...e,cells:c}}if(r>0){for(let u=o;u<=s-r;u++)for(let f=0;f<a;f++)c[u*a+f]=e.cells[(u+r)*a+f]??Q;for(let u=s-r+1;u<=s;u++)l(u)}else{let u=-r;for(let f=s;f>=o+u;f--)for(let m=0;m<a;m++)c[f*a+m]=e.cells[(f-u)*a+m]??Q;for(let f=o;f<=o+u-1;f++)l(f)}return{...e,cells:c}}i(ka,"shiftRowsRegion");function qg(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}i(qg,"cellsEqual");var Pr="\x1B]8;";function Vg(e){return e.endsWith("\x07")?e.slice(0,-1):e}i(Vg,"stripOsc8Terminator");function Gg(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),o=Vg(r);return o.length>0?o:void 0}i(Gg,"parseOsc8Url");function Jg(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 o=Gg(r.code);o!==void 0&&(n=o)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}i(Jg,"styledCharToCell");function xa(e){let t=e.getGrid(),n=e.width,r=e.height,o=ba(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 l=0;l<d;l++){let u=c[l];if(!u)continue;let f=Jg(u);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||o.setCellAt(l,a,f)}}return o.build()}i(xa,"outputToScreen");var Yg=i((e,t,n)=>{if(e.yogaNode){if(t){let m=un(e,{skipStaticElements:!0}),p=m===""?0:m.split(`
813
- `).length,g="";return e.staticNode&&(g=un(e.staticNode,{skipStaticElements:!1})),{output:m,outputHeight:p,staticOutput:g?`${g}
814
- `:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});ha(),_r(e,r,{skipStaticElements:!0});let o;e.staticNode?.yogaNode&&(o=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),_r(e.staticNode,o,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=xa(r),d=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),u=r.cursorPosition,f={screen:c,viewport:{width:d,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:ga(),scrollRepaint:ya(),...u?{inputCursor:{x:u.x,y:u.y}}:{}};return{output:s,outputHeight:a,staticOutput:o?`${o.get().output}
815
- `:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=Yg;function X(...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}`}i(X,"csi");function Sa(e=1){return e===0?"":X(e,"A")}i(Sa,"cursorUp");function Qg(e=1){return e===0?"":X(e,"B")}i(Qg,"cursorDown");function Zg(e=1){return e===0?"":X(e,"C")}i(Zg,"cursorForward");function ey(e=1){return e===0?"":X(e,"D")}i(ey,"cursorBack");function Ea(e){return X(e,"G")}i(Ea,"cursorTo");var ty=X("G"),Ia=X("H");function Ca(e,t){let n="";return e<0?n+=ey(-e):e>0&&(n+=Zg(e)),t<0?n+=Sa(-t):t>0&&(n+=Qg(t)),n}i(Ca,"cursorMove");var Or=X(2,"K");function Ta(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Or,n<e-1&&(t+=Sa(1));return t+=ty,t}i(Ta,"eraseLines");var Ra=X("r"),_a="\x1B7",Aa="\x1B8";function Pa(e,t){return X(e,t,"r")}i(Pa,"setScrollRegion");function Ma(e=1){return X(e,"S")}i(Ma,"scrollUp");function Oa(e=1){return X(e,"T")}i(Oa,"scrollDown");var wt=X(0,"m");function Na(e){return`\x1B]${e.join(";")}\x07`}i(Na,"osc");function ny(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)}i(ny,"osc8Id");function vt(e,t){if(!e)return He;let n={id:ny(e),...t??{}},r=Object.entries(n).map(([o,s])=>`${o}=${s}`).join(":");return Na(["8",r,e])}i(vt,"link");var He=Na(["8","",""]);function Nr(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",o;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!==o&&(o!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=vt(d.hyperlink)),o=d.hyperlink),d.style!==r&&(r!==""&&(a+=wt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}o!==void 0&&(a+=He,o=void 0),r!==""&&(a+=wt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
816
- `)}]}i(Nr,"renderFullFrame");var ry=Object.freeze([]),iy=Object.freeze([]);function Te(e,t){if(e===t)return{patches:ry,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:wt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}i(Te,"transitionStyle");function kt(e,t){let n=Te(e,t),r="";for(let o of n.patches)o.type==="stdout"&&(r+=o.content);return{str:r,current:n.current}}i(kt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:iy,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:vt(t)}),{patches:n,current:t}}i(ae,"transitionHyperlink");function La(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}i(La,"needsWidthCompensation");var Re=class{static{i(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 o of n)this._diffMut.push(o);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},bt={type:"stdout",content:`
817
- `};function xt(e,t,n){let r=t.width===Z.Wide?2:1,o=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<o){let u=t.char.length>2?o:o+1;if(c+2>=u)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let l=r===2&&La(t.char);return l&&c+1<o&&(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}),l&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=o?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}i(xt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let o=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:[[{type:"cursorMove",x:o,y:s}],{dx:o,dy:s}]})}i(_e,"moveCursorTo");function St(e,t,n,r,o=!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]=bt;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=kt(s,m.style);xt(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 l=ae(a,void 0);for(let f of l.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=l.current;let u=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||o);e.txn(f=>u?[[ce],{dx:-f.x,dy:0}]:[[ce,bt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let d=ae(a,void 0);for(let l of d.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}i(St,"renderFrameSlice");function Lr(e,t,n,r){let o=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=o;a<=s;a++)oy(e,t,a)}i(Lr,"repaintFrameRows");function oy(e,t,n){let r="",o;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+wt},{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(o,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);o=c.current;let d=kt(r,a.style);xt(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(o,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}i(oy,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let o=Ce(e,r,t);n+=o?.char??" "}return n.trimEnd()}i(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);St(r,e,0,e.screen.height,n);let o=[{type:"clearTerminal",reason:t}];for(let s of r.diff)o.push(s);return o}i(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,o=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:o,prevHadScrollback:s,nextFitsViewport:a}}i(pn,"computeViewportState");function Da(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}}i(Da,"shouldFullReset");function $a(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}i($a,"shouldSkipDiff");var mn=class{static{i(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let o=r.inlineBottomAnchored??!1,s=Fa(t,o),a=Fa(n,o);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",o);let c=Da(s,a,Dr);if(c.reset)return ze(a,c.reason,o);if(a.scrollRepaint&&r.altScreen===!0)return sy(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 l={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},u={...s,screen:ka(s.screen,d.top,d.bottom,d.delta)};return[l,...ja(u,a,o)]}return ja(s,a,o)}reset(){}};function $r(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}i($r,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");$r(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);$r(e,r.patches)}return{style:"",hyperlink:void 0}}i(Fr,"resetStyleAndHyperlink");function sy(e,t,n){let r=pn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Ka(o,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&&Lr(o,t,c.top,c.bottom);let d=Ba(o,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(o,d.currentStyle,d.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height),Ua(o,t),o.diff)}i(sy,"renderScrollRepaint");function Ka(e,t,n){let r=t.screen.height-n.screen.height;e.txn(o=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-o.x,dy:-r}])}i(Ka,"applyShrink");function Ba(e,t,n,r){let o="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:l,prev:u,next:f}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!$a(u,f,m)){if(l<r.viewportY){a=!0;break}if(_e(e,d,l),f){let p=ae(s,f.hyperlink);$r(e,p.patches),s=p.current;let g=kt(o,f.style);xt(e,f,g.str)&&(o=g.current)}else if(u){let p=Fr(e,o,s);o=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:o,currentHyperlink:s,needsFullReset:a}}i(Ba,"diffPass");function Fa(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}}}i(Fa,"clampRestingCursor");function Ua(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]=bt;return[s,{dx:-n.x,dy:r}]}let o=t.cursor.y-n.y;return o!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:o}],{dx:t.cursor.x-n.x,dy:o}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}i(Ua,"restoreCursor");function ja(e,t,n=!1){let r=pn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Ka(o,e,t);let s=Ba(o,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(o,s.currentStyle,s.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height,n),Ua(o,t),o.diff)}i(ja,"renderIncremental");var ay="\x1B[?25l",cy="\x1B[?25h",dy=`\x1B[2J${Ia}`,ly="\x1B[?2026h",uy="\x1B[?2026l";function fy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ay;case"cursorShow":return cy;case"cursorMove":return Ca(e.x,e.y);case"cursorTo":return Ea(e.col);case"eraseLine":return Or;case"clear":return Ta(e.count);case"clearTerminal":return dy;case"hyperlink":return vt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),o=e.delta>0?Ma(r):Oa(r);return _a+Pa(t,n)+o+Ra+Aa}}}i(fy,"patchToBytes");function hn(e,t,n=!1){let r="",o=!1;for(let s of t)s.type==="clearTerminal"&&(o=!0),r+=fy(s);if(r.length!==0){if(n&&o){e.write(ly+r+uy);return}e.write(r)}}i(hn,"applyDiff");function Xa(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}i(Xa,"applyCellFrame");function Et(e,t){return{screen:va(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}i(Et,"emptyFrame");import py from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function le(e){return"isTTY"in e&&e.isTTY===!0&&!py}i(le,"shouldSynchronize");var my=new WeakMap,Wa=my;import{EventEmitter as Ny}from"node:events";import Ly from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as cc}from"react";import Dy from"cli-cursor";var hy=i(e=>e>=48&&e<=63,"isCsiParameterByte"),gy=i(e=>e>=32&&e<=47,"isCsiIntermediateByte"),za=i(e=>e>=64&&e<=126,"isCsiFinalByte");function yy(e,t,n){let r=t+n+1,o=r;for(;o<e.length;o+=1){let s=e.codePointAt(o);if(s===void 0)return"pending";if(!(hy(s)||gy(s))&&!(s===91&&o===r))return za(s)?{sequence:e.slice(t,o+1),nextIndex:o+1}:void 0}return"pending"}i(yy,"parseCsiSequence");function wy(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let o=e.codePointAt(r-1);if(!(o===void 0||!za(o)))return{sequence:e.slice(t,r),nextIndex:r}}i(wy,"parseSs3Sequence");function Ha(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return yy(e,t,n);if(r==="O")return wy(e,t,n)}i(Ha,"parseControlSequence");function vy(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,o=t+1+r;return{sequence:e.slice(t,o),nextIndex:o}}i(vy,"parseEscapedCodePoint");function by(e){let t=[],n=0,r=i(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;n<e.length;){let o=e.indexOf("\x1B",n);if(o===-1)return t.push(e.slice(n)),{events:t,pending:""};if(o>n&&t.push(e.slice(n,o)),o===e.length-1)return r(o);let s=Ha(e,o,1);if(s==="pending")return r(o);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[o+1]==="\x1B"){if(o+2>=e.length)return r(o);let d=Ha(e,o,2);if(d==="pending")return r(o);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(o,o+2)),n=o+2;continue}let c=vy(e,o);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}i(by,"parseKeypresses");function gn(){let e="";return{push(t){let n=by(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=""}}}i(gn,"createInputParser");import{createContext as ky}from"react";var qa=ky({exit(){}});qa.displayName="InternalAppContext";var Va=qa;import{EventEmitter as xy}from"node:events";import{createContext as Sy}from"react";var Ey={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Ga=Sy({stdin:Ey,internal_eventEmitter:new xy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Ga.displayName="InternalStdinContext";var Ja=Ga;import{createContext as Iy}from"react";var Cy={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Ya=Iy({stdout:Cy,write(){}});Ya.displayName="InternalStdoutContext";var Qa=Ya;import{createContext as Ty}from"react";var Ry={isTTY:!1,write(){return!0},on(){},off(){}},Za=Ty({stderr:Ry,write(){}});Za.displayName="InternalStderrContext";var ec=Za;import{createContext as _y}from"react";var tc=_y({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});tc.displayName="InternalFocusContext";var nc=tc;import{createContext as Ay}from"react";var rc=Ay({setCursorPosition(){}});rc.displayName="InternalCursorContext";var ic=rc;import My,{PureComponent as Oy}from"react";import*as yn from"node:fs";import{cwd as ac}from"node:process";import N from"react";import oc from"stack-utils";import Py from"code-excerpt";var jr=i(e=>e?.replace(`file://${ac()}/`,""),"cleanupPath"),sc=new oc({cwd:ac(),internals:oc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
818
- `).slice(1):void 0,n=t?sc.parseLine(t[0]):void 0,r=jr(n?.file),o,s=0;if(r&&n?.line&&yn.existsSync(r)){let a=yn.readFileSync(r,"utf8");if(o=Py(a,n.line),o)for(let{line:c}of o)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&&o&&N.createElement(q,{marginTop:1,flexDirection:"column"},o.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(`
819
- `).slice(1).map(a=>{let c=sc.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"," "))})))}i(Kr,"ErrorOverview");var It=class extends Oy{static{i(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?My.createElement(Kr,{error:this.state.error}):this.props.children}};var $y=" ",Fy="\x1B[Z",jy="\x1B";function dc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:o,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[l,u]=Br(!0),[f,m]=Br(void 0),[,p]=Br([]),g=qe(0),v=qe(0),w=qe(new Ny);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===jy&&m(S=>S&&void 0)},[a,A]),Rt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),ni=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Rt(x)})},[I,Rt]),En=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Rt(E)}h.current.hasPendingEscape()&&ni()},[t,Rt,I,ni]),ri=M(x=>{if(!_)throw t===Ly.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
807
+ `);else throw e}var la=i((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let o of Object.keys(e))(!t||!Object.hasOwn(t,o))&&(n[o]=void 0,r=!0);if(t)for(let o of Object.keys(t))t[o]!==e[o]&&(n[o]=t[o],r=!0);return r?n:void 0},"diff"),ua=i(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),ln=pa,_r,fa={name:void 0,version:void 0},se=Ug({getRootHostContext:i(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:i(()=>null,"prepareForCommit"),preparePortalMount:i(()=>null,"preparePortalMount"),clearContainer:i(()=>!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:i(()=>!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 o=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=sn(o);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){Ir(s,c),s.yogaNode&&Cr(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"){_r=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}Er(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 ta(e)},resetTextContent(){},hideTextInstance(e){yt(e,"")},unhideTextInstance(e,t){yt(e,t)},getPublicInstance:i(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_FLEX)},appendInitialChild:an,appendChild:an,insertBefore:Sr,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:i(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:i(()=>null,"getInstanceFromScope"),appendChildToContainer:an,insertInContainerBefore:Sr,removeChildFromContainer(e,t){gt(e,t),ua(t.yogaNode)},commitUpdate(e,t,n,r){_r&&e.internal_static&&(_r.isStaticDirty=!0);let o=la(n,r),s=la(n.style,r.style);if(!(!o&&!s)){if(o)for(let[a,c]of Object.entries(o)){if(a==="style"){Ir(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}Er(e,a,c)}s&&e.yogaNode&&Cr(e.yogaNode,s)}},commitTextUpdate(e,t,n){yt(e,n)},removeChild(e,t){gt(e,t),ua(t.yogaNode)},setCurrentUpdatePriority(e){ln=e},getCurrentUpdatePriority:i(()=>ln,"getCurrentUpdatePriority"),resolveUpdatePriority(){return ln!==pa?ln:Xg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Wg(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:fa.name,rendererVersion:fa.version});import Gg from"widest-line";import Jg from"indent-string";import we from"yoga-layout";import un from"yoga-layout";var Hg=i(e=>e.getComputedWidth()-e.getComputedPadding(un.EDGE_LEFT)-e.getComputedPadding(un.EDGE_RIGHT)-e.getComputedBorder(un.EDGE_LEFT)-e.getComputedBorder(un.EDGE_RIGHT),"getMaxWidth"),ma=Hg;import zg from"cli-boxes";import fn from"chalk";var qg=i((e,t,n,r)=>{if(n.style.borderStyle){let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?zg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,u=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,p=n.style.borderBottomDimColor??n.style.borderDimColor,m=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=o-(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=fn.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,l,"foreground")+`
808
+ `).repeat(_);m&&(W=fn.dim(W));let H=(G(a.right,u,"foreground")+`
809
+ `).repeat(_);g&&(H=fn.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&p&&(A=fn.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+o-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),ha=qg;var Vg=i((e,t,n,r)=>{if(!n.style.backgroundColor)return;let o=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,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,u=o-a-c,f=s-d-l;if(!(u>0&&f>0))return;let p=G(" ".repeat(u),n.style.backgroundColor,"background");for(let m=0;m<f;m++)r.write(e+a,t+d+m,p,{transformers:[]})},"renderBackground"),ga=Vg;function ya(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:o,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:l,previousAppliedScrollTop:u,regionTop:f}=e,p=Math.max(0,n-r),m=Math.max(0,Math.min(Math.floor(t),p)),v=s&&n>=o?p:m,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(p,c??p))):v,y=d&&l!==void 0,h=Math.max(0,Math.floor(l??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(u!==void 0&&u!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-u})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}i(ya,"computeScrollState");var Yg=i((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),o=n.getComputedTop();t=`
810
+ `.repeat(o)+Jg(t,r)}return t},"applyPaddingToText"),pn=i((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=ht(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
811
+ `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>pn(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:o}=e.internal_accessibility;if(o){let a=Object.keys(o).filter(c=>o[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Ar=null,Pr=null;function wa(){Ar=null,Pr=null}i(wa,"resetScrollHint");function va(){return Ar}i(va,"getScrollHint");function ba(){return Pr}i(ba,"getScrollRepaint");var ka=i((e,t,n)=>{let{offsetX:r=0,offsetY:o=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(),l=o+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:l});let u=s;if(typeof e.internal_transform=="function"&&(u=[e.internal_transform,...s]),e.nodeName==="ink-text"){let m=ht(e);if(m.length>0){let g=Gg(m),v=ma(c);if(g>v){let w=e.style.textWrap??"wrap";m=on(m,v,w)}m=Yg(e,m),t.write(d,l,m,{transformers:u})}return}let f=!1,p=0;if(e.nodeName==="ink-box"){ga(d,l,e,t),ha(d,l,e,t);let m=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=m==="hidden"||m==="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=ya({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:l+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Ar=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Pr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,p=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?l+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?l+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 m of e.childNodes)ka(m,t,{offsetX:d,offsetY:l-p,transformers:u,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),Mr=ka;import Qg from"slice-ansi";import Zg from"string-width";import{styledCharsFromTokens as ey,styledCharsToString as ty,tokenize as ny}from"@alcalzone/ansi-tokenize";var Or=class{static{i(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=ey(ny(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Zg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let o of t.split(`
812
+ `))r=Math.max(r,this.getStringWidth(o));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{i(this,"Output")}width;height;operations=[];caches=new Or;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,o){let{transformers:s}=o;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 o=[];for(let s=0;s<this.width;s++)o.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(o)}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:o,transformers:s}=r,{x:a,y:c}=r,d=o.split(`
813
+ `),l=n.at(-1);if(l){let f=typeof l?.x1=="number"&&typeof l?.x2=="number",p=typeof l?.y1=="number"&&typeof l?.y2=="number";if(f){let m=this.caches.getWidestLine(o);if(a+m<l.x1||a>l.x2)continue}if(p){let m=d.length;if(c+m<l.y1||c>l.y2)continue}if(f&&(d=d.map(m=>{let g=a<l.x1?l.x1-a:0,v=this.caches.getStringWidth(m),w=a+v>l.x2?l.x2-a:v;return Qg(m,g,w)}),a<l.x1&&(a=l.x1)),p){let m=c<l.y1?l.y1-c:0,g=d.length,v=c+g>l.y2?l.y2-c:g;d=d.slice(m,v),c<l.y1&&(c=l.y1)}}let u=0;for(let[f,p]of d.entries()){let m=t[c+u];if(!m)continue;for(let w of s)p=w(p,f);let g=this.caches.getStyledChars(p),v=a;for(let w of g){m[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)m[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}u++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let o=r.filter(s=>s!==void 0);return ty(o).trimEnd()}).join(`
814
+ `),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function xa(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}}i(xa,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}i(Ce,"cellAt");function Sa(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(o,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(o<0||s<0||o>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${o}, ${s}) on ${e}x${t}`);n[s*e+o]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}i(Sa,"createScreenBuilder");function*mn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let o=0;o<r;o++)for(let s=0;s<n;s++){let a=Ce(e,s,o),c=Ce(t,s,o);ry(a,c)||(yield{x:s,y:o,prev:a,next:c})}}i(mn,"diffEach");function Ea(e,t,n,r){if(r===0||e.height===0)return e;let o=Math.max(0,t),s=Math.min(e.height-1,n);if(o>s)return e;let a=e.width,c=e.cells.slice(),d=s-o+1,l=i(u=>{for(let f=0;f<a;f++)c[u*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let u=o;u<=s;u++)l(u);return{...e,cells:c}}if(r>0){for(let u=o;u<=s-r;u++)for(let f=0;f<a;f++)c[u*a+f]=e.cells[(u+r)*a+f]??Q;for(let u=s-r+1;u<=s;u++)l(u)}else{let u=-r;for(let f=s;f>=o+u;f--)for(let p=0;p<a;p++)c[f*a+p]=e.cells[(f-u)*a+p]??Q;for(let f=o;f<=o+u-1;f++)l(f)}return{...e,cells:c}}i(Ea,"shiftRowsRegion");function ry(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}i(ry,"cellsEqual");var Nr="\x1B]8;";function iy(e){return e.endsWith("\x07")?e.slice(0,-1):e}i(iy,"stripOsc8Terminator");function oy(e){if(!e.startsWith(Nr))return;let t=e.slice(Nr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),o=iy(r);return o.length>0?o:void 0}i(oy,"parseOsc8Url");function sy(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(Nr)){let o=oy(r.code);o!==void 0&&(n=o)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}i(sy,"styledCharToCell");function Ia(e){let t=e.getGrid(),n=e.width,r=e.height,o=Sa(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 l=0;l<d;l++){let u=c[l];if(!u)continue;let f=sy(u);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||o.setCellAt(l,a,f)}}return o.build()}i(Ia,"outputToScreen");var ay=i((e,t,n)=>{if(e.yogaNode){if(t){let p=pn(e,{skipStaticElements:!0}),m=p===""?0:p.split(`
815
+ `).length,g="";return e.staticNode&&(g=pn(e.staticNode,{skipStaticElements:!1})),{output:p,outputHeight:m,staticOutput:g?`${g}
816
+ `:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});wa(),Mr(e,r,{skipStaticElements:!0});let o;e.staticNode?.yogaNode&&(o=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),Mr(e.staticNode,o,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=Ia(r),d=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),u=r.cursorPosition,f={screen:c,viewport:{width:d,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:va(),scrollRepaint:ba(),...u?{inputCursor:{x:u.x,y:u.y}}:{}};return{output:s,outputHeight:a,staticOutput:o?`${o.get().output}
817
+ `:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Lr=ay;function X(...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}`}i(X,"csi");function Ca(e=1){return e===0?"":X(e,"A")}i(Ca,"cursorUp");function cy(e=1){return e===0?"":X(e,"B")}i(cy,"cursorDown");function dy(e=1){return e===0?"":X(e,"C")}i(dy,"cursorForward");function ly(e=1){return e===0?"":X(e,"D")}i(ly,"cursorBack");function Ta(e){return X(e,"G")}i(Ta,"cursorTo");var uy=X("G"),Ra=X("H");function _a(e,t){let n="";return e<0?n+=ly(-e):e>0&&(n+=dy(e)),t<0?n+=Ca(-t):t>0&&(n+=cy(t)),n}i(_a,"cursorMove");var Dr=X(2,"K");function Aa(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Dr,n<e-1&&(t+=Ca(1));return t+=uy,t}i(Aa,"eraseLines");var Pa=X("r"),Ma="\x1B7",Oa="\x1B8";function Na(e,t){return X(e,t,"r")}i(Na,"setScrollRegion");function La(e=1){return X(e,"S")}i(La,"scrollUp");function Da(e=1){return X(e,"T")}i(Da,"scrollDown");var wt=X(0,"m");function $a(e){return`\x1B]${e.join(";")}\x07`}i($a,"osc");function fy(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)}i(fy,"osc8Id");function vt(e,t){if(!e)return He;let n={id:fy(e),...t??{}},r=Object.entries(n).map(([o,s])=>`${o}=${s}`).join(":");return $a(["8",r,e])}i(vt,"link");var He=$a(["8","",""]);function $r(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",o;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!==o&&(o!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=vt(d.hyperlink)),o=d.hyperlink),d.style!==r&&(r!==""&&(a+=wt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}o!==void 0&&(a+=He,o=void 0),r!==""&&(a+=wt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
818
+ `)}]}i($r,"renderFullFrame");var py=Object.freeze([]),my=Object.freeze([]);function Te(e,t){if(e===t)return{patches:py,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:wt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}i(Te,"transitionStyle");function kt(e,t){let n=Te(e,t),r="";for(let o of n.patches)o.type==="stdout"&&(r+=o.content);return{str:r,current:n.current}}i(kt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:my,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:vt(t)}),{patches:n,current:t}}i(ae,"transitionHyperlink");function Fa(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}i(Fa,"needsWidthCompensation");var Re=class{static{i(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 o of n)this._diffMut.push(o);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},bt={type:"stdout",content:`
819
+ `};function xt(e,t,n){let r=t.width===Z.Wide?2:1,o=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<o){let u=t.char.length>2?o:o+1;if(c+2>=u)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let l=r===2&&Fa(t.char);return l&&c+1<o&&(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}),l&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=o?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}i(xt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let o=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:[[{type:"cursorMove",x:o,y:s}],{dx:o,dy:s}]})}i(_e,"moveCursorTo");function St(e,t,n,r,o=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(p=>{let m=new Array(1+f);m[0]=ce;for(let g=0;g<f;g++)m[1+g]=bt;return[m,{dx:-p.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let p=Ce(t.screen,f,c);if(!p||p.width===Z.SpacerTail||p.char===" "&&p.style===""&&p.hyperlink===void 0)continue;_e(e,f,c);let m=ae(a,p.hyperlink);for(let v of m.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=m.current;let g=kt(s,p.style);xt(e,p,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 l=ae(a,void 0);for(let f of l.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=l.current;let u=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||o);e.txn(f=>u?[[ce],{dx:-f.x,dy:0}]:[[ce,bt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let d=ae(a,void 0);for(let l of d.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}i(St,"renderFrameSlice");function Fr(e,t,n,r){let o=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=o;a<=s;a++)hy(e,t,a)}i(Fr,"repaintFrameRows");function hy(e,t,n){let r="",o;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+wt},{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(o,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);o=c.current;let d=kt(r,a.style);xt(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(o,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}i(hy,"repaintFrameRow");function jr(e,t){let n="";for(let r=0;r<e.width;r++){let o=Ce(e,r,t);n+=o?.char??" "}return n.trimEnd()}i(jr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);St(r,e,0,e.screen.height,n);let o=[{type:"clearTerminal",reason:t}];for(let s of r.diff)o.push(s);return o}i(ze,"fullResetSequence_CAUSES_FLICKER");function hn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,o=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:o,prevHadScrollback:s,nextFitsViewport:a}}i(hn,"computeViewportState");function ja(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=hn(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 mn(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}}i(ja,"shouldFullReset");function Ka(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}i(Ka,"shouldSkipDiff");var gn=class{static{i(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return $r(n);let o=r.inlineBottomAnchored??!1,s=Ba(t,o),a=Ba(n,o);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",o);let c=ja(s,a,jr);if(c.reset)return ze(a,c.reason,o);if(a.scrollRepaint&&r.altScreen===!0)return gy(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 l={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},u={...s,screen:Ea(s.screen,d.top,d.bottom,d.delta)};return[l,...Ua(u,a,o)]}return Ua(s,a,o)}reset(){}};function Kr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}i(Kr,"emitPatches");function Br(e,t,n){if(t!==""){let r=Te(t,"");Kr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Kr(e,r.patches)}return{style:"",hyperlink:void 0}}i(Br,"resetStyleAndHyperlink");function gy(e,t,n){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,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&&Fr(o,t,c.top,c.bottom);let d=Wa(o,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Br(o,d.currentStyle,d.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height),Ha(o,t),o.diff)}i(gy,"renderScrollRepaint");function Xa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(o=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-o.x,dy:-r}])}i(Xa,"applyShrink");function Wa(e,t,n,r){let o="",s,a=!1;for(let c of mn(t.screen,n.screen)){let{x:d,y:l,prev:u,next:f}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let p=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!Ka(u,f,p)){if(l<r.viewportY){a=!0;break}if(_e(e,d,l),f){let m=ae(s,f.hyperlink);Kr(e,m.patches),s=m.current;let g=kt(o,f.style);xt(e,f,g.str)&&(o=g.current)}else if(u){let m=Br(e,o,s);o=m.style,s=m.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:o,currentHyperlink:s,needsFullReset:a}}i(Wa,"diffPass");function Ba(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}}}i(Ba,"clampRestingCursor");function Ha(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]=bt;return[s,{dx:-n.x,dy:r}]}let o=t.cursor.y-n.y;return o!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:o}],{dx:t.cursor.x-n.x,dy:o}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}i(Ha,"restoreCursor");function Ua(e,t,n=!1){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,e,t);let s=Wa(o,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Br(o,s.currentStyle,s.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height,n),Ha(o,t),o.diff)}i(Ua,"renderIncremental");var yy="\x1B[?25l",wy="\x1B[?25h",vy=`\x1B[2J${Ra}`,by="\x1B[?2026h",ky="\x1B[?2026l";function xy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return yy;case"cursorShow":return wy;case"cursorMove":return _a(e.x,e.y);case"cursorTo":return Ta(e.col);case"eraseLine":return Dr;case"clear":return Aa(e.count);case"clearTerminal":return vy;case"hyperlink":return vt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),o=e.delta>0?La(r):Da(r);return Ma+Na(t,n)+o+Pa+Oa}}}i(xy,"patchToBytes");function yn(e,t,n=!1){let r="",o=!1;for(let s of t)s.type==="clearTerminal"&&(o=!0),r+=xy(s);if(r.length!==0){if(n&&o){e.write(by+r+ky);return}e.write(r)}}i(yn,"applyDiff");function za(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return yn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}i(za,"applyCellFrame");function Et(e,t){return{screen:xa(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}i(Et,"emptyFrame");import Sy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function le(e){return"isTTY"in e&&e.isTTY===!0&&!Sy}i(le,"shouldSynchronize");var Ey=new WeakMap,qa=Ey;import{EventEmitter as Wy}from"node:events";import Hy from"node:process";import Ae,{useState as Wr,useRef as qe,useCallback as M,useMemo as Ve,useEffect as uc}from"react";import zy from"cli-cursor";var Iy=i(e=>e>=48&&e<=63,"isCsiParameterByte"),Cy=i(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Ga=i(e=>e>=64&&e<=126,"isCsiFinalByte");function Ty(e,t,n){let r=t+n+1,o=r;for(;o<e.length;o+=1){let s=e.codePointAt(o);if(s===void 0)return"pending";if(!(Iy(s)||Cy(s))&&!(s===91&&o===r))return Ga(s)?{sequence:e.slice(t,o+1),nextIndex:o+1}:void 0}return"pending"}i(Ty,"parseCsiSequence");function Ry(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let o=e.codePointAt(r-1);if(!(o===void 0||!Ga(o)))return{sequence:e.slice(t,r),nextIndex:r}}i(Ry,"parseSs3Sequence");function Va(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return Ty(e,t,n);if(r==="O")return Ry(e,t,n)}i(Va,"parseControlSequence");function _y(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,o=t+1+r;return{sequence:e.slice(t,o),nextIndex:o}}i(_y,"parseEscapedCodePoint");function Ay(e){let t=[],n=0,r=i(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;n<e.length;){let o=e.indexOf("\x1B",n);if(o===-1)return t.push(e.slice(n)),{events:t,pending:""};if(o>n&&t.push(e.slice(n,o)),o===e.length-1)return r(o);let s=Va(e,o,1);if(s==="pending")return r(o);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[o+1]==="\x1B"){if(o+2>=e.length)return r(o);let d=Va(e,o,2);if(d==="pending")return r(o);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(o,o+2)),n=o+2;continue}let c=_y(e,o);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}i(Ay,"parseKeypresses");function wn(){let e="";return{push(t){let n=Ay(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=""}}}i(wn,"createInputParser");import{createContext as Py}from"react";var Ja=Py({exit(){}});Ja.displayName="InternalAppContext";var Ya=Ja;import{EventEmitter as My}from"node:events";import{createContext as Oy}from"react";var Ny={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Qa=Oy({stdin:Ny,internal_eventEmitter:new My,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Qa.displayName="InternalStdinContext";var Za=Qa;import{createContext as Ly}from"react";var Dy={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},ec=Ly({stdout:Dy,write(){}});ec.displayName="InternalStdoutContext";var tc=ec;import{createContext as $y}from"react";var Fy={isTTY:!1,write(){return!0},on(){},off(){}},nc=$y({stderr:Fy,write(){}});nc.displayName="InternalStderrContext";var rc=nc;import{createContext as jy}from"react";var ic=jy({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});ic.displayName="InternalFocusContext";var oc=ic;import{createContext as Ky}from"react";var sc=Ky({setCursorPosition(){}});sc.displayName="InternalCursorContext";var ac=sc;import Uy,{PureComponent as Xy}from"react";import*as vn from"node:fs";import{cwd as lc}from"node:process";import N from"react";import cc from"stack-utils";import By from"code-excerpt";var Ur=i(e=>e?.replace(`file://${lc()}/`,""),"cleanupPath"),dc=new cc({cwd:lc(),internals:cc.nodeInternals()});function Xr({error:e}){let t=e.stack?e.stack.split(`
820
+ `).slice(1):void 0,n=t?dc.parseLine(t[0]):void 0,r=Ur(n?.file),o,s=0;if(r&&n?.line&&vn.existsSync(r)){let a=vn.readFileSync(r,"utf8");if(o=By(a,n.line),o)for(let{line:c}of o)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&&o&&N.createElement(q,{marginTop:1,flexDirection:"column"},o.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(`
821
+ `).slice(1).map(a=>{let c=dc.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 ${Ur(c.file)??""} line ${c.line} column ${c.column}`}," ","(",Ur(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"," "))})))}i(Xr,"ErrorOverview");var It=class extends Xy{static{i(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?Uy.createElement(Xr,{error:this.state.error}):this.props.children}};var qy=" ",Vy="\x1B[Z",Gy="\x1B";function fc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:o,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[l,u]=Wr(!0),[f,p]=Wr(void 0),[,m]=Wr([]),g=qe(0),v=qe(0),w=qe(new Wy);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(wn()),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===Gy&&p(S=>S&&void 0)},[a,A]),Rt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),oi=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Rt(x)})},[I,Rt]),Cn=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Rt(E)}h.current.hasPendingEscape()&&oi()},[t,Rt,I,oi]),si=M(x=>{if(!_)throw t===Hy.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
820
822
  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.
821
- 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]),ii=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E+1;L<x.length;L++){let te=x[L];if(te?.isActive)return te.id}},[]),oi=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E-1;L>=0;L--){let te=x[L];if(te?.isActive)return te.id}},[]),_t=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return ii(x,S)??E}),x))},[ii]),At=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return oi(x,S)??E}),x))},[oi]);cc(()=>{let x=i(E=>{!l||g.current===0||(E===$y&&_t(),E===Fy&&At())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[l,_t,At]);let si=M(()=>{u(!0)},[]),ai=M(()=>{u(!1)},[]),ci=M(x=>{p(S=>(S.some(L=>L?.id===x)&&m(x),S))},[]),di=M((x,{autoFocus:S})=>{p(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&m(E=>E??x)},[]),li=M(x=>{m(S=>S===x?void 0:S),p(S=>{let E=S.filter(L=>L.id!==x);return g.current=E.length,E})},[]),ui=M(x=>{p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),fi=M(x=>{m(S=>S===x?void 0:S),p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);cc(()=>()=>{Dy.show(n),_&&v.current>0&&H()},[n,_,H]);let Kc=Ve(()=>({exit:A}),[A]),Bc=Ve(()=>({stdin:t,setRawMode:ri,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,ri,_,a]),Uc=Ve(()=>({stdout:n,write:o}),[n,o]),Xc=Ve(()=>({stderr:r,write:s}),[r,s]),Wc=Ve(()=>({setCursorPosition:d}),[d]),Hc=Ve(()=>({activeId:f,add:di,remove:li,activate:ui,deactivate:fi,enableFocus:si,disableFocus:ai,focusNext:_t,focusPrevious:At,focus:ci}),[f,di,li,ui,fi,si,ai,_t,At,ci]);return Ae.createElement(Va.Provider,{value:Kc},Ae.createElement(Ja.Provider,{value:Bc},Ae.createElement(Qa.Provider,{value:Uc},Ae.createElement(ec.Provider,{value:Xc},Ae.createElement(nc.Provider,{value:Hc},Ae.createElement(ic.Provider,{value:Wc},Ae.createElement(It,{onError:A},e)))))))}i(dc,"App");dc.displayName="InternalApp";var lc=dc;var Ky={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function uc(e){let t=0;for(let n of e)t|=Ky[n];return t}i(uc,"resolveFlags");var ue={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Ur=i((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Xr=i((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 o=>({x:o.x,y:Math.min(Math.max(o.y-n,0),r)})},"toVisibleCursor"),wn=i(()=>{},"noop"),Jy=27,Yy=91,Qy=63,Zy=117,ew=48,tw=57,nw=i(e=>e>=ew&&e<=tw,"isDigitByte"),pc=i((e,t)=>{if(e[t]!==Jy||e[t+1]!==Yy||e[t+2]!==Qy)return;let n=t+3,r=n;for(;n<e.length&&nw(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===Zy)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),rw=i(e=>{for(let t=0;t<e.length;t++)if(pc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),iw=i(e=>{let t=[],n=0;for(;n<e.length;){let r=pc(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=i(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),ow=class{static{i(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){Uy(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,o=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=By(this.onRender,o,{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=Et(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?zy:Hy;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Xy(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=i(()=>this.options.stdout.columns?this.options.stdout.columns:Gy()?.columns??80,"getTerminalWidth");resized=i(()=>{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=Et(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=i(()=>{},"resolveExitPromise");rejectExitPromise=i(()=>{},"rejectExitPromise");unsubscribeExit=i(()=>{},"unsubscribeExit");handleAppExit=i(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(Wr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=i(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 o=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:o,y:s}},"setCursorPosition");resetOutputTracking=i(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=i((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||o!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||o!==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,o=n.write,s=i((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=i((...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=o)}}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=i(()=>{if(this.prevFrame.screen.height===0)return;let t=Et(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>hn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=i(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=i(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,qy.DIRECTION_LTR)},"calculateLayout");onRender=i(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:o,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!==`
823
+ 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=Cn,t.addListener("readable",Cn)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,Cn,H]),ai=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E+1;L<x.length;L++){let te=x[L];if(te?.isActive)return te.id}},[]),ci=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E-1;L>=0;L--){let te=x[L];if(te?.isActive)return te.id}},[]),_t=M(()=>{m(x=>(p(S=>{let E=x.find(te=>te.isActive)?.id;return ai(x,S)??E}),x))},[ai]),At=M(()=>{m(x=>(p(S=>{let E=x.findLast(te=>te.isActive)?.id;return ci(x,S)??E}),x))},[ci]);uc(()=>{let x=i(E=>{!l||g.current===0||(E===qy&&_t(),E===Vy&&At())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[l,_t,At]);let di=M(()=>{u(!0)},[]),li=M(()=>{u(!1)},[]),ui=M(x=>{m(S=>(S.some(L=>L?.id===x)&&p(x),S))},[]),fi=M((x,{autoFocus:S})=>{m(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&p(E=>E??x)},[]),pi=M(x=>{p(S=>S===x?void 0:S),m(S=>{let E=S.filter(L=>L.id!==x);return g.current=E.length,E})},[]),mi=M(x=>{m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),hi=M(x=>{p(S=>S===x?void 0:S),m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);uc(()=>()=>{zy.show(n),_&&v.current>0&&H()},[n,_,H]);let Xc=Ve(()=>({exit:A}),[A]),Wc=Ve(()=>({stdin:t,setRawMode:si,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,si,_,a]),Hc=Ve(()=>({stdout:n,write:o}),[n,o]),zc=Ve(()=>({stderr:r,write:s}),[r,s]),qc=Ve(()=>({setCursorPosition:d}),[d]),Vc=Ve(()=>({activeId:f,add:fi,remove:pi,activate:mi,deactivate:hi,enableFocus:di,disableFocus:li,focusNext:_t,focusPrevious:At,focus:ui}),[f,fi,pi,mi,hi,di,li,_t,At,ui]);return Ae.createElement(Ya.Provider,{value:Xc},Ae.createElement(Za.Provider,{value:Wc},Ae.createElement(tc.Provider,{value:Hc},Ae.createElement(rc.Provider,{value:zc},Ae.createElement(oc.Provider,{value:Vc},Ae.createElement(ac.Provider,{value:qc},Ae.createElement(It,{onError:A},e)))))))}i(fc,"App");fc.displayName="InternalApp";var pc=fc;var Jy={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function mc(e){let t=0;for(let n of e)t|=Jy[n];return t}i(mc,"resolveFlags");var ue={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Hr=i((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),zr=i((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 o=>({x:o.x,y:Math.min(Math.max(o.y-n,0),r)})},"toVisibleCursor"),bn=i(()=>{},"noop"),sw=27,aw=91,cw=63,dw=117,lw=48,uw=57,fw=i(e=>e>=lw&&e<=uw,"isDigitByte"),gc=i((e,t)=>{if(e[t]!==sw||e[t+1]!==aw||e[t+2]!==cw)return;let n=t+3,r=n;for(;n<e.length&&fw(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===dw)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),pw=i(e=>{for(let t=0;t<e.length;t++)if(gc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),mw=i(e=>{let t=[],n=0;for(;n<e.length;){let r=gc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),qr=i(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),hw=class{static{i(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){Qy(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=sn("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,o=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=Yy(this.onRender,o,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new gn({isTTY:!!t.stdout.isTTY}),this.prevFrame=Et(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?nw:tw;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Zy(this.unmount,{alwaysLast:!1}),rn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=i(()=>this.options.stdout.columns?this.options.stdout.columns:ow()?.columns??80,"getTerminalWidth");resized=i(()=>{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=Et(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=i(()=>{},"resolveExitPromise");rejectExitPromise=i(()=>{},"rejectExitPromise");unsubscribeExit=i(()=>{},"unsubscribeExit");handleAppExit=i(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(qr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=i(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 o=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:o,y:s}},"setCursorPosition");resetOutputTracking=i(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=i((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||o!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||o!==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,o=n.write,s=i((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=i((...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=o)}}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=i(()=>{if(this.prevFrame.screen.height===0)return;let t=Et(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>yn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=i(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=i(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,rw.DIRECTION_LTR)},"calculateLayout");onRender=i(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:o,staticOutput:s,frame:a}=Lr(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!==`
822
824
  `;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+`
823
- `,this.lastOutputHeight=o;return}if(this.isScreenReaderEnabled){let w=le(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=Vy(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(`
824
- `).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,u=i(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),f=l?{write:u}:null;u(this.computeReturnToRestSeq());let m=this.altScreenActive,g=this.options.stdout.isTTY&&o>=this.options.stdout.rows&&m?r:r+`
825
- `;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=le(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o;return}let w=le(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=o,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!l&&le(this.options.stdout);try{if(c?(v&&u(de),u(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&o<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&u(de),u(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Xr(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Ur(h.x-y.x,h.y-y.y);u(b),this.displayCursor=h}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o},"onRender");applyCellFrame=i((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},o=le(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:o,synchronized:n?!1:o,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>Xa(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=i(()=>{this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=i(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=i(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],o=i(c=>{c&&r.push(c)},"emit"),s={write:o};o(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();o(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:l,frame:u}=Mr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(u,s),u?.inputCursor){let f=Xr(u,!this.altScreenActive),m=f(u.cursor),p=f(u.inputCursor),g=Ur(p.x-m.x,p.y-m.y);o(g),this.displayCursor=p}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=le(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=fc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},fc.createElement(lc,{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=Xr(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Ur(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=le(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=le(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(i(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.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+`
826
- `)}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()),Wa.delete(this.options.stdout);let{exitResult:s}=this,a=i(()=>{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=Wy((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 o=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||o==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],o=i(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=iw(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=i(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let l of d)r.push(l);rw(r)&&(o(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(o,200);this.cancelKittyDetection=o,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${uc(t)}u`),this.kittyProtocolEnabled=!0}},mc=ow;var Ct=class{static{i(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new mc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=i(t=>{this.engineInstance.render(t)},"render");unmount=i(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=i(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=i(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=i((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=i((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=i(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=i(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=i(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function gc(){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"?lw(dw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=aw(t,"a"),hc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
827
- `),ve}catch{return ve=-1,null}}i(gc,"resolveTraceFd");function uw(e){let t=gc();if(t!==null)try{hc(t,e)}catch{}}i(uw,"traceLine");var Hr=new WeakMap,fw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},pw={isTTY:!1,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},mw={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function hw(e={}){return e instanceof sw?{stdout:e}:e}i(hw,"getOptions");function gw(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}i(gw,"getInstance");function zr(e,t){let n={stdout:fw,stdin:mw,stderr:pw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...hw(t)};if(gc()!==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 l=0,u=0,f=n.onRender;n.onRender=m=>{let p=cw.now(),g=l===0?0:p-l,v=s,w=v.columns??0,y=v.rows??0;return uw(`frame=${u} renderTime=${m.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
828
- `),c=0,d=0,l=p,u+=1,f?.(m)}}let o=gw(n.stdout,()=>new Ct(n),n.concurrent??!1);return o.render(e),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:i(()=>{Hr.delete(n.stdout)},"cleanup"),clear:o.clear}}i(zr,"render");var yc=q,wc=K;import{Buffer as ww}from"node:buffer";var vw=/^(?:\x1b)([a-zA-Z0-9])$/,bw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,bc={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"},kc=[...Object.values(bc),"backspace"],kw=i(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),xw=i(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),xc=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,Sw=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,Ew={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},Iw={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"},vc={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"},Sc=i(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),qr=i(e=>Sc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function Ec(e){return e===3?"release":e===2?"repeat":"press"}i(Ec,"resolveEventType");function Ic(e){return{ctrl:!!(e&ue.ctrl),shift:!!(e&ue.shift),meta:!!(e&ue.meta),option:!!(e&ue.alt),super:!!(e&ue.super),hyper:!!(e&ue.hyper),capsLock:!!(e&ue.capsLock),numLock:!!(e&ue.numLock)}}i(Ic,"parseKittyModifiers");function Cw(e){let t=xc.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,o=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!Sc(n))return null;let a;s&&(a=s.split(":").map(l=>qr(Number.parseInt(l,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):vc[n]?(c=vc[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,...Ic(r),eventType:Ec(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}i(Cw,"parseKittyKeypress");function Tw(e){let t=Sw.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),o=Number.parseInt(t[3],10),s=t[4],a=s==="~"?Iw[n]:Ew[s];return a?{name:a,...Ic(r),eventType:Ec(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}i(Tw,"parseKittySpecialKey");var Vr="\x1B[200~",Rw="\x1B[201~";function _w(e){if(!e.startsWith(Vr))return null;let t=e.indexOf(Rw,Vr.length);return t===-1?null:e.slice(Vr.length,t)}i(_w,"extractBracketedPaste");function Gr(e=""){let t=e,n;if(ww.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=_w(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=Cw(t);if(r)return r;let o=Tw(t);if(o)return o;if(xc.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===`
829
- `)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=vw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=bw.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=bc[c]??"",s.shift=kw(c)||s.shift,s.ctrl=xw(c)||s.ctrl}return s}i(Gr,"parseKeypress");var Mw=50;function Jr(e){return{columns:e?.columns??80,rows:e?.rows??24}}i(Jr,"resolveTerminalSize");var bn=Aw(null),Ow={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")};var _c={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Nw(e){for(let t of e)if(t.rawMode)return!0;return!1}i(Nw,"hasRawModeSubscribers");function Lw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,o,s=!1,a=!1,c=i(f=>{for(let m of r)m.listener(f)},"handleData"),d=i(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=i(()=>{let f=o;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),o=void 0},"detachInput"),u=i(()=>{if(o&&o!==e&&l(),!e||r.size===0){l();return}if(o!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),o=e),!(n&&Nw(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),u(),()=>{r.delete(p),u()}},dispose(){r.clear(),l()}}}i(Lw,"createTerminalInputController");var Dw=i(({children:e,runtime:t})=>{let[n,r]=Pw(()=>t.terminalSize);Ge(()=>{if(r(Jr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=i(()=>{r(Jr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let o=Rc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Cc(()=>Lw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Cc(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:o,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,o]);return Tc(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function $w(e){let t=e?.stdout??Ow,n=e?.stdin??_c,r=i(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),o;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:i(()=>{o?.()},"exit"),terminalSize:Jr(t),isTTY:t?.isTTY===!0,writeRaw:i(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:i(()=>()=>{},"subscribeInput"),attachExit(s){o=s}}}i($w,"createRuntimeValue");function kn(e,t){let n=$w(t),r=zr(Tc(Dw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}i(kn,"render");var be=yc,V=wc;function Fw(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&&kc.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}}i(Fw,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),o=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){o.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return o.current=gn(),()=>{o.current?.reset(),o.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Rc(c=>{let{input:d,key:l}=Fw(Gr(c));r.current(d,l)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=o.current,l=typeof c=="string"?c:c.toString("utf8"),u=d?.push(l)??[l];for(let f of u)a(f);l.length>0&&(s.current=setTimeout(()=>{let f=o.current?.flushPendingEscape();f&&a(f)},Mw))},{isActive:n,rawMode:!0})}i(xn,"useInput");function Qr(){let e=Yr(bn),t=e?.stdin??_c,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}i(Qr,"useStdin");function Sn(){return{exit:Yr(bn)?.exit??(()=>{})}}i(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,o=Yr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(o)return o.subscribeInput(m=>{d.current(m)},{rawMode:r});let l=s,u=l.isRaw;r&&c&&u===!1&&a(!0);let f=i(m=>{d.current(m)},"handleData");return l.on?.("data",f),()=>{if(l.off?.("data",f),r&&c&&u===!1)try{a(!1)}catch{}}},[o,s,n,r,c,a])}i(Zr,"useTerminalInput");import{jsx as U2}from"react/jsx-runtime";import{useInsertionEffect as W2,useMemo as H2}from"react";import{jsx as _H,jsxs as AH}from"react/jsx-runtime";import{jsx as oH}from"react/jsx-runtime";import aH,{useEffect as cH,useImperativeHandle as dH,useMemo as lH,useRef as uH,useCallback as fH,useState as pH}from"react";var ei=class{static{i(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 jw=1e3;var vH=new ei(jw);var Hw=40;function zw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let o=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>o.includes(s))})}i(zw,"filterSessionPickerItems");function qw(e,t,n){let r=Math.max(1,n),o=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(o/r)*r;return{items:e.slice(s,s+r),selectedIndex:o,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}i(qw,"buildSessionPickerPage");function Vw(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"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${o} ${s}:${a}`}i(Vw,"formatTimestamp");function Gw({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:o=8}){let{exit:s}=Sn(),[a,c]=ti(""),[d,l]=ti(0),[u,f]=ti(!1),m=Ww(!1),p=Xw(()=>zw(e,a),[e,a]),g=qw(p,d,o),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,Hw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)l(h=>Math.max(0,h-1));else if(y.downArrow)l(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)l(h=>Math.max(0,h-o));else if(y.pageDown)l(h=>Math.min(Math.max(0,p.length-1),h+o));else if(y.home)l(0);else if(y.end)l(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),l(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),l(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),l(0))}}),Je(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Tt(V,{bold:!0,color:"cyan",children:"Resume a session"}),Je(V,{children:["Search: ",Tt(V,{color:"yellow",children:a||"type to filter"})]}),Tt(V,{dimColor:!0,children:u?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Je(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Tt(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 Je(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Vw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Je(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Je(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}i(Gw,"SessionPicker");async function Oc(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,o=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Tt(Gw,{sessions:e,pageSize:a,onSelect:i(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:i(d=>{o=!0,s=d},"onSelectionError"),onCancel:i(()=>{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(o)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}i(Oc,"runSessionPicker");var Nc=65536,Lc=48;function Yw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Jw.homedir(),".kodax");return Qe.join(t,"sessions")}i(Yw,"defaultSessionsDir");function Dc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(Dc,"isSessionFile");async function Qw(e){let t=[],n;try{n=await Ye.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let o=Qe.join(e,r.name);if(r.isFile()&&Dc(r.name)&&!r.name.startsWith("archived-")){t.push(o);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Ye.readdir(o,{withFileTypes:!0}))s.isFile()&&Dc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(o,s.name))}catch{}}return t}i(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}i($c,"normalizeComparableRoot");function Zw(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)}i(Zw,"matchesProjectRoot");async function ev(e){let t;try{t=await Ye.open(e,"r");let n=Buffer.allocUnsafe(Nc),{bytesRead:r}=await t.read(n,0,Nc,0);if(r===0)return;let o=n.toString("utf8",0,r),s=o.indexOf(`
825
+ `,this.lastOutputHeight=o;return}if(this.isScreenReaderEnabled){let w=le(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=iw(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(`
826
+ `).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,u=i(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),f=l?{write:u}:null;u(this.computeReturnToRestSeq());let p=this.altScreenActive,g=this.options.stdout.isTTY&&o>=this.options.stdout.rows&&p?r:r+`
827
+ `;if(this.lastOutputHeight>=this.options.stdout.rows&&p){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=le(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o;return}let w=le(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=o,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!l&&le(this.options.stdout);try{if(c?(v&&u(de),u(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&o<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&u(de),u(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=zr(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Hr(h.x-y.x,h.y-y.y);u(b),this.displayCursor=h}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o},"onRender");applyCellFrame=i((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},o=le(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:o,synchronized:n?!1:o,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>za(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=i(()=>{this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=i(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=i(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],o=i(c=>{c&&r.push(c)},"emit"),s={write:o};o(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();o(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:l,frame:u}=Lr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(u,s),u?.inputCursor){let f=zr(u,!this.altScreenActive),p=f(u.cursor),m=f(u.inputCursor),g=Hr(m.x-p.x,m.y-p.y);o(g),this.displayCursor=m}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=le(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=hc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},hc.createElement(pc,{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,bn):(se.updateContainerSync(n,this.container,null,bn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=zr(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Hr(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=le(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=le(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(i(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.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+`
828
+ `)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,bn):(se.updateContainerSync(null,this.container,null,bn),se.flushSyncWork()),qa.delete(this.options.stdout);let{exitResult:s}=this,a=i(()=>{qr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!qr(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=ew((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 o=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||o==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],o=i(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=mw(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=i(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let l of d)r.push(l);pw(r)&&(o(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(o,200);this.cancelKittyDetection=o,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${mc(t)}u`),this.kittyProtocolEnabled=!0}},yc=hw;var Ct=class{static{i(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new yc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=i(t=>{this.engineInstance.render(t)},"render");unmount=i(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=i(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=i(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=i((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=i((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=i(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=i(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=i(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function vc(){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"?bw(vw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=yw(t,"a"),wc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
829
+ `),ve}catch{return ve=-1,null}}i(vc,"resolveTraceFd");function kw(e){let t=vc();if(t!==null)try{wc(t,e)}catch{}}i(kw,"traceLine");var Vr=new WeakMap,xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Sw={isTTY:!1,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Ew={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Iw(e={}){return e instanceof gw?{stdout:e}:e}i(Iw,"getOptions");function Cw(e,t,n){let r=Vr.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(),Vr.set(e,r)),r}i(Cw,"getInstance");function Gr(e,t){let n={stdout:xw,stdin:Ew,stderr:Sw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...Iw(t)};if(vc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((p,...m)=>(c+=1,d+=typeof p=="string"?Buffer.byteLength(p,"utf8"):p?.length??0,a(p,...m)));let l=0,u=0,f=n.onRender;n.onRender=p=>{let m=ww.now(),g=l===0?0:m-l,v=s,w=v.columns??0,y=v.rows??0;return kw(`frame=${u} renderTime=${p.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
830
+ `),c=0,d=0,l=m,u+=1,f?.(p)}}let o=Cw(n.stdout,()=>new Ct(n),n.concurrent??!1);return o.render(e),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:i(()=>{Vr.delete(n.stdout)},"cleanup"),clear:o.clear}}i(Gr,"render");var bc=q,kc=K;import{Buffer as Rw}from"node:buffer";var _w=/^(?:\x1b)([a-zA-Z0-9])$/,Aw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Sc={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"},Ec=[...Object.values(Sc),"backspace"],Pw=i(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),Mw=i(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),Ic=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,Ow=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,Nw={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},Lw={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"},xc={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"},Cc=i(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),Jr=i(e=>Cc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function Tc(e){return e===3?"release":e===2?"repeat":"press"}i(Tc,"resolveEventType");function Rc(e){return{ctrl:!!(e&ue.ctrl),shift:!!(e&ue.shift),meta:!!(e&ue.meta),option:!!(e&ue.alt),super:!!(e&ue.super),hyper:!!(e&ue.hyper),capsLock:!!(e&ue.capsLock),numLock:!!(e&ue.numLock)}}i(Rc,"parseKittyModifiers");function Dw(e){let t=Ic.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,o=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!Cc(n))return null;let a;s&&(a=s.split(":").map(l=>Jr(Number.parseInt(l,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):xc[n]?(c=xc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=Jr(n).toLowerCase(),d=!0),d&&!a&&(a=Jr(n)),{name:c,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}i(Dw,"parseKittyKeypress");function $w(e){let t=Ow.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),o=Number.parseInt(t[3],10),s=t[4],a=s==="~"?Lw[n]:Nw[s];return a?{name:a,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}i($w,"parseKittySpecialKey");var Yr="\x1B[200~",Fw="\x1B[201~";function jw(e){if(!e.startsWith(Yr))return null;let t=e.indexOf(Fw,Yr.length);return t===-1?null:e.slice(Yr.length,t)}i(jw,"extractBracketedPaste");function Qr(e=""){let t=e,n;if(Rw.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=jw(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=Dw(t);if(r)return r;let o=$w(t);if(o)return o;if(Ic.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===`
831
+ `)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=_w.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=Aw.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=Sc[c]??"",s.shift=Pw(c)||s.shift,s.ctrl=Mw(c)||s.ctrl}return s}i(Qr,"parseKeypress");var Uw=50;function Zr(e){return{columns:e?.columns??80,rows:e?.rows??24}}i(Zr,"resolveTerminalSize");var xn=Kw(null),Xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")};var Mc={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Ww(e){for(let t of e)if(t.rawMode)return!0;return!1}i(Ww,"hasRawModeSubscribers");function Hw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,o,s=!1,a=!1,c=i(f=>{for(let p of r)p.listener(f)},"handleData"),d=i(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=i(()=>{let f=o;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),o=void 0},"detachInput"),u=i(()=>{if(o&&o!==e&&l(),!e||r.size===0){l();return}if(o!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),o=e),!(n&&Ww(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,p={}){let m={listener:f,rawMode:p.rawMode!==!1};return r.add(m),u(),()=>{r.delete(m),u()}},dispose(){r.clear(),l()}}}i(Hw,"createTerminalInputController");var zw=i(({children:e,runtime:t})=>{let[n,r]=Bw(()=>t.terminalSize);Ge(()=>{if(r(Zr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=i(()=>{r(Zr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let o=Pc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=_c(()=>Hw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=_c(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:o,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,o]);return Ac(xn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function qw(e){let t=e?.stdout??Xw,n=e?.stdin??Mc,r=i(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),o;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:i(()=>{o?.()},"exit"),terminalSize:Zr(t),isTTY:t?.isTTY===!0,writeRaw:i(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:i(()=>()=>{},"subscribeInput"),attachExit(s){o=s}}}i(qw,"createRuntimeValue");function Sn(e,t){let n=qw(t),r=Gr(Ac(zw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}i(Sn,"render");var be=bc,V=kc;function Vw(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&&Ec.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}}i(Vw,"createCompatKeypress");function En(e,t={}){let{isActive:n=!0}=t,r=kn(e),o=kn(null),s=kn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){o.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return o.current=wn(),()=>{o.current?.reset(),o.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Pc(c=>{let{input:d,key:l}=Vw(Qr(c));r.current(d,l)},[]);ni(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=o.current,l=typeof c=="string"?c:c.toString("utf8"),u=d?.push(l)??[l];for(let f of u)a(f);l.length>0&&(s.current=setTimeout(()=>{let f=o.current?.flushPendingEscape();f&&a(f)},Uw))},{isActive:n,rawMode:!0})}i(En,"useInput");function ti(){let e=ei(xn),t=e?.stdin??Mc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}i(ti,"useStdin");function In(){return{exit:ei(xn)?.exit??(()=>{})}}i(In,"useApp");function ni(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,o=ei(xn),{stdin:s,setRawMode:a,isRawModeSupported:c}=ti(),d=kn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(o)return o.subscribeInput(p=>{d.current(p)},{rawMode:r});let l=s,u=l.isRaw;r&&c&&u===!1&&a(!0);let f=i(p=>{d.current(p)},"handleData");return l.on?.("data",f),()=>{if(l.off?.("data",f),r&&c&&u===!1)try{a(!1)}catch{}}},[o,s,n,r,c,a])}i(ni,"useTerminalInput");import{jsx as eH}from"react/jsx-runtime";import{useInsertionEffect as nH,useMemo as rH}from"react";import{jsx as BH,jsxs as UH}from"react/jsx-runtime";import{jsx as yH}from"react/jsx-runtime";import vH,{useEffect as bH,useImperativeHandle as kH,useMemo as xH,useRef as SH,useCallback as EH,useState as IH}from"react";var ri=class{static{i(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 Gw=1e3;var PH=new ri(Gw);var tv=40;function nv(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let o=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>o.includes(s))})}i(nv,"filterSessionPickerItems");function rv(e,t,n){let r=Math.max(1,n),o=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(o/r)*r;return{items:e.slice(s,s+r),selectedIndex:o,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}i(rv,"buildSessionPickerPage");function iv(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"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${o} ${s}:${a}`}i(iv,"formatTimestamp");function ov({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:o=8}){let{exit:s}=In(),[a,c]=ii(""),[d,l]=ii(0),[u,f]=ii(!1),p=ev(!1),m=Zw(()=>nv(e,a),[e,a]),g=rv(m,d,o),v=m[g.selectedIndex];return En((w,y)=>{if(!p.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=m[g.selectedIndex];h&&(p.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,tv));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)l(h=>Math.max(0,h-1));else if(y.downArrow)l(h=>Math.min(Math.max(0,m.length-1),h+1));else if(y.pageUp)l(h=>Math.max(0,h-o));else if(y.pageDown)l(h=>Math.min(Math.max(0,m.length-1),h+o));else if(y.home)l(0);else if(y.end)l(Math.max(0,m.length-1));else if(y.tab){let h=m[g.selectedIndex];h&&(c(h.title),l(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),l(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),l(0))}}),Je(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Tt(V,{bold:!0,color:"cyan",children:"Resume a session"}),Je(V,{children:["Search: ",Tt(V,{color:"yellow",children:a||"type to filter"})]}),Tt(V,{dimColor:!0,children:u?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Je(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Tt(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 Je(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",iv(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Je(V,{dimColor:!0,children:[m.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Je(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}i(ov,"SessionPicker");async function Dc(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,o=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=Sn(Tt(ov,{sessions:e,pageSize:a,onSelect:i(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:i(d=>{o=!0,s=d},"onSelectionError"),onCancel:i(()=>{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(o)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}i(Dc,"runSessionPicker");var $c=65536,Fc=48;function av(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(sv.homedir(),".kodax");return Qe.join(t,"sessions")}i(av,"defaultSessionsDir");function jc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(jc,"isSessionFile");async function cv(e){let t=[],n;try{n=await Ye.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let o=Qe.join(e,r.name);if(r.isFile()&&jc(r.name)&&!r.name.startsWith("archived-")){t.push(o);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Ye.readdir(o,{withFileTypes:!0}))s.isFile()&&jc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(o,s.name))}catch{}}return t}i(cv,"collectActiveSessionFiles");function Kc(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}i(Kc,"normalizeComparableRoot");function dv(e,t){let n=Kc(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=>Kc(s)===n)}i(dv,"matchesProjectRoot");async function lv(e){let t;try{t=await Ye.open(e,"r");let n=Buffer.allocUnsafe($c),{bytesRead:r}=await t.read(n,0,$c,0);if(r===0)return;let o=n.toString("utf8",0,r),s=o.indexOf(`
830
832
  `);if(s>=0)return o.slice(0,s).trim();let a=await Ye.readFile(e,"utf8"),c=a.indexOf(`
831
- `);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}i(ev,"readFirstLine");async function tv(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Ye.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(`
832
- `).length-1-r)}i(tv,"readMessageCount");function nv(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}:{}}}i(nv,"runtimeSummary");async function rv(e,t){try{let n=await ev(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let o=r;if(o._type!=="meta"||o.scope==="managed-task-worker"||!Zw(o,t))return;let s=await tv(e,o);if(s<=0)return;let a=typeof o.createdAt=="string"?o.createdAt:void 0,c=nv(o);return{id:Qe.basename(e,".jsonl"),title:typeof o.title=="string"?o.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}i(rv,"readResumeCandidate");async function Fc(e){try{let t=e.sessionsDir??Yw();await Ks(t),await Ye.mkdir(t,{recursive:!0});let n=await Qw(t),r=[],o=new Set;for(let s=0;s<n.length;s+=Lc){let a=await Promise.all(n.slice(s,s+Lc).map(c=>rv(c,e.projectRoot)));for(let c of a)c&&!o.has(c.id)&&(o.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[]}}i(Fc,"listCliResumeSessions");async function jc(e,t={}){return Oc(e,t)}i(jc,"runCliResumePicker");async function iv(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
833
+ `);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}i(lv,"readFirstLine");async function uv(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Ye.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(`
834
+ `).length-1-r)}i(uv,"readMessageCount");function fv(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}:{}}}i(fv,"runtimeSummary");async function pv(e,t){try{let n=await lv(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let o=r;if(o._type!=="meta"||o.scope==="managed-task-worker"||!dv(o,t))return;let s=await uv(e,o);if(s<=0)return;let a=typeof o.createdAt=="string"?o.createdAt:void 0,c=fv(o);return{id:Qe.basename(e,".jsonl"),title:typeof o.title=="string"?o.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}i(pv,"readResumeCandidate");async function Bc(e){try{let t=e.sessionsDir??av();await Xs(t),await Ye.mkdir(t,{recursive:!0});let n=await cv(t),r=[],o=new Set;for(let s=0;s<n.length;s+=Fc){let a=await Promise.all(n.slice(s,s+Fc).map(c=>pv(c,e.projectRoot)));for(let c of a)c&&!o.has(c.id)&&(o.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[]}}i(Bc,"listCliResumeSessions");async function Uc(e,t={}){return Dc(e,t)}i(Uc,"runCliResumePicker");async function mv(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
833
835
  `);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
834
- `)}i(iv,"printResumeNotice");async function kz(e={}){let t=e.listSessions??Fc,n=e.pickSession??jc,r=e.notify??iv,o=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(o.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(o,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}i(kz,"resolveBareResume");export{kz as resolveBareResume};
836
+ `)}i(mv,"printResumeNotice");async function Oz(e={}){let t=e.listSessions??Bc,n=e.pickSession??Uc,r=e.notify??mv,o=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(o.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(o,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}i(Oz,"resolveBareResume");export{Oz as resolveBareResume};