@kodax-ai/kodax 0.7.82 → 0.7.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +20 -0
  3. package/README_CN.md +10 -0
  4. package/dist/chunks/{agent-4UTCCMD5.js → agent-VMXNVYRK.js} +1 -1
  5. package/dist/chunks/argument-completer-QCS6GUAE.js +2 -0
  6. package/dist/chunks/{chunk-WMYCNECP.js → chunk-4ZI2CPUQ.js} +142 -67
  7. package/dist/chunks/{chunk-7ZN2MLVM.js → chunk-726WJGGY.js} +1 -1
  8. package/dist/chunks/{chunk-S6JTWDN6.js → chunk-A7L7XTUH.js} +1 -1
  9. package/dist/chunks/{chunk-XTCDCU2Q.js → chunk-BBBS644N.js} +4 -4
  10. package/dist/chunks/{chunk-JDZFNWMZ.js → chunk-ET2BMEQQ.js} +2 -2
  11. package/dist/chunks/{chunk-ZOBNDWOA.js → chunk-F44YYR6Z.js} +1 -1
  12. package/dist/chunks/{chunk-GIVYTXQW.js → chunk-GRLC3N46.js} +155 -155
  13. package/dist/chunks/{chunk-VQBJMNFD.js → chunk-OHZFGQEH.js} +2 -2
  14. package/dist/chunks/{chunk-ZZUIO5KL.js → chunk-TDJS5SFS.js} +1 -1
  15. package/dist/chunks/{chunk-NINELPXH.js → chunk-WTYAZOWO.js} +1 -1
  16. package/dist/chunks/chunk-WXHHZZRJ.js +379 -0
  17. package/dist/chunks/{chunk-KH2HED37.js → chunk-ZVPTDYDI.js} +2 -2
  18. package/dist/chunks/{compaction-config-IDL5JQVI.js → compaction-config-QTMFP7AF.js} +1 -1
  19. package/dist/chunks/{construction-bootstrap-STYUR6XA.js → construction-bootstrap-EVQ6VWSX.js} +1 -1
  20. package/dist/chunks/{dist-RKBHBUHV.js → dist-XRH6CRLL.js} +1 -1
  21. package/dist/chunks/{host-RF2IX3N6.js → host-F4TPD6WY.js} +1 -1
  22. package/dist/chunks/{run-manager-WE2KPAKZ.js → run-manager-PYD46OGY.js} +1 -1
  23. package/dist/chunks/{utils-Z2RSAENX.js → utils-TOTTXU2I.js} +1 -1
  24. package/dist/index.d.ts +13 -13
  25. package/dist/index.js +5 -5
  26. package/dist/kodax_bootstrap.js +1 -1
  27. package/dist/kodax_cli.js +1716 -1292
  28. package/dist/kodax_resume.js +140 -65
  29. package/dist/runtime-worker.js +1567 -1143
  30. package/dist/sandbox-workspace-session.js +121 -46
  31. package/dist/sdk-a2a.d.ts +8 -8
  32. package/dist/sdk-a2a.js +5 -5
  33. package/dist/sdk-agent.d.ts +16 -9
  34. package/dist/sdk-agent.js +1 -1
  35. package/dist/sdk-coding.d.ts +13 -13
  36. package/dist/sdk-coding.js +1 -1
  37. package/dist/sdk-mcp.js +1 -1
  38. package/dist/sdk-repl.d.ts +11 -11
  39. package/dist/sdk-repl.js +1 -1
  40. package/dist/sdk-runtime.d.ts +55 -10
  41. package/dist/sdk-runtime.js +1 -1
  42. package/dist/sdk-sandbox.js +1 -1
  43. package/dist/sdk-session.d.ts +4 -4
  44. package/dist/sdk-session.js +1 -1
  45. package/dist/sdk-skills.js +1 -1
  46. package/dist/semantic-worker.js +120 -45
  47. package/dist/types-chunks/{bash-prefix-extractor.d-CJM7OY-L.d.ts → bash-prefix-extractor.d-CkdGL4rM.d.ts} +1 -1
  48. package/dist/types-chunks/{capsule.d-B7yoH4dM.d.ts → capsule.d-7wQ_kM1C.d.ts} +1 -1
  49. package/dist/types-chunks/{controller.d-CYNuR2n9.d.ts → controller.d-CesRxFL5.d.ts} +2 -0
  50. package/dist/types-chunks/{guardrail.d-fM3mn4Op.d.ts → guardrail.d-KaIeVree.d.ts} +2 -2
  51. package/dist/types-chunks/{history-retrieval.d-BDI-ZMvY.d.ts → history-retrieval.d-CbCls7r0.d.ts} +1 -1
  52. package/dist/types-chunks/{public-api.d-i10kvYFs.d.ts → public-api.d-DpRj8b7d.d.ts} +2 -2
  53. package/dist/types-chunks/{repl.d-Cs3eqGVT.d.ts → repl.d-DWeC3PLW.d.ts} +5 -5
  54. package/dist/types-chunks/{run-manager.d-CodHf6rw.d.ts → run-manager.d-BXBkLT0A.d.ts} +1 -1
  55. package/dist/types-chunks/{sdk-session-CRXu5xNs.d.ts → sdk-session-DEtS6u20.d.ts} +2 -2
  56. package/dist/types-chunks/{shell-command-sets.d-DfeSUjjM.d.ts → shell-command-sets.d-P2h4_KKL.d.ts} +1 -1
  57. package/dist/types-chunks/{types.d-DKs4tfSd.d.ts → types.d-0m3PS7Ng.d.ts} +2 -2
  58. package/dist/types-chunks/{types.d-DIXZFauU.d.ts → types.d-CUtMr2IG.d.ts} +1 -1
  59. package/dist/types-chunks/{utils.d-CgITiLyc.d.ts → utils.d-C-eSIZ9n.d.ts} +4 -4
  60. package/docs/SDK_EMBEDDER_GUIDE.md +52 -8
  61. package/package.json +2 -1
  62. package/dist/chunks/argument-completer-N7ORRJBS.js +0 -2
  63. package/dist/chunks/chunk-PGTU7JQX.js +0 -30
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- var Uc=Object.defineProperty;var o=(e,t)=>Uc(e,"name",{value:t,configurable:!0});var At=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er,Js,Qs=At(()=>{Er=class{static{o(this,"WebSocketStub")}},Js=Er});var an,Zs=At(()=>{"use strict";Qs();an=global;an.WebSocket||=Js;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 ea,Ir,ta=At(()=>{ea=o(()=>{},"noop"),Ir={initialize:ea,connectToDevTools:ea}});var Ig={};var na=At(()=>{"use strict";Zs();ta();Ir.initialize();Ir.connectToDevTools()});import Je from"node:fs/promises";import Ww from"node:os";import Qe from"node:path";import R from"fs/promises";import Os from"fs";import P from"path";import Cn from"path";import{createHash as qc}from"crypto";import{execFile as Wc}from"child_process";import Hc from"path";import{promisify as zc}from"util";var rv=zc(Wc);function In(e){if(!(!e||!e.trim()))return Hc.resolve(e).replace(/\\/g,"/")}o(In,"normalizePath");function mo(e){let t=In(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=In(e.runtimeInfo?.executionCwd??t),r=In(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}o(mo,"resolveSessionRuntimeInfo");var Ze="_unknown",ho=80;function Vc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}o(Vc,"caseFold");function Gc(e){return Vc(Cn.resolve(e).replace(/\\/g,"/"))}o(Gc,"normalizeRoot");function go(e){return qc("sha256").update(e).digest("hex").slice(0,10)}o(go,"shortHash");function Yc(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>ho?t.slice(t.length-ho):t}o(Yc,"slugify");function Jc(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=Gc(e),n=Yc(t),r=n?`${n}-${go(t)}`:go(t),i=Cn.basename(Cn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:i}}o(Jc,"deriveProjectKeyFromRoot");function yo(e){let t=mo({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Jc(n)}o(yo,"deriveProjectKeyFromData");import Zt from"node:fs/promises";import pt from"node:path";import{AsyncLocalStorage as Qc}from"node:async_hooks";var Zc=new Qc;function Pt(e){let t=Zc.getStore()?.credential;return t?et(e,t,new WeakMap):e}o(Pt,"redactScopedProviderCredential");function et(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(a,t,n));return s}let i={};n.set(e,i);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=s.split(t).join("[REDACTED_CREDENTIAL]");i[c]=et(a.value,t,n)}return i}o(et,"redactCredentialValue");import{AsyncLocalStorage as ed}from"node:async_hooks";var Ov=new ed;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},wo={...tt,multimodalSupport:"image-input"},Mt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},vo={...Mt,multimodalSupport:"image-input"};import lb from"@anthropic-ai/sdk";import{parse as Jv}from"partial-json";import Tb from"openai";import{ClientSideConnection as zb,PROTOCOL_VERSION as qb,ndJsonStream as Vb}from"@agentclientprotocol/sdk";var jb=Object.freeze({status:"terminated"}),Kb=Object.freeze({status:"already-exited"}),Bb=Object.freeze({status:"unknown"}),Xb=String.raw`
2
+ var Wc=Object.defineProperty;var o=(e,t)=>Wc(e,"name",{value:t,configurable:!0});var At=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er,Qs,Zs=At(()=>{Er=class{static{o(this,"WebSocketStub")}},Qs=Er});var an,ea=At(()=>{"use strict";Zs();an=global;an.WebSocket||=Qs;an.window||=global;an.self||=global;an.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var ta,Ir,na=At(()=>{ta=o(()=>{},"noop"),Ir={initialize:ta,connectToDevTools:ta}});var Cg={};var ra=At(()=>{"use strict";ea();na();Ir.initialize();Ir.connectToDevTools()});import Je from"node:fs/promises";import Hw from"node:os";import Qe from"node:path";import R from"fs/promises";import Ns from"fs";import P from"path";import Cn from"path";import{createHash as Vc}from"crypto";import{execFile as Hc}from"child_process";import zc from"path";import{promisify as qc}from"util";var ov=qc(Hc);function In(e){if(!(!e||!e.trim()))return zc.resolve(e).replace(/\\/g,"/")}o(In,"normalizePath");function mo(e){let t=In(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=In(e.runtimeInfo?.executionCwd??t),r=In(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}o(mo,"resolveSessionRuntimeInfo");var Ze="_unknown",ho=80;function Gc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}o(Gc,"caseFold");function Yc(e){return Gc(Cn.resolve(e).replace(/\\/g,"/"))}o(Yc,"normalizeRoot");function go(e){return Vc("sha256").update(e).digest("hex").slice(0,10)}o(go,"shortHash");function Jc(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>ho?t.slice(t.length-ho):t}o(Jc,"slugify");function Qc(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=Yc(e),n=Jc(t),r=n?`${n}-${go(t)}`:go(t),i=Cn.basename(Cn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:i}}o(Qc,"deriveProjectKeyFromRoot");function yo(e){let t=mo({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Qc(n)}o(yo,"deriveProjectKeyFromData");import Zt from"node:fs/promises";import pt from"node:path";import{AsyncLocalStorage as Zc}from"node:async_hooks";var ed=new Zc;function Pt(e){let t=ed.getStore()?.credential;return t?et(e,t,new WeakMap):e}o(Pt,"redactScopedProviderCredential");function et(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(a,t,n));return s}let i={};n.set(e,i);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=s.split(t).join("[REDACTED_CREDENTIAL]");i[c]=et(a.value,t,n)}return i}o(et,"redactCredentialValue");import{AsyncLocalStorage as td}from"node:async_hooks";var Nv=new td;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},wo={...tt,multimodalSupport:"image-input"},Mt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},vo={...Mt,multimodalSupport:"image-input"};import fb from"@anthropic-ai/sdk";import{parse as Qv}from"partial-json";import Rb from"openai";import{ClientSideConnection as qb,PROTOCOL_VERSION as Vb,ndJsonStream as Gb}from"@agentclientprotocol/sdk";var Kb=Object.freeze({status:"terminated"}),Bb=Object.freeze({status:"already-exited"}),Xb=Object.freeze({status:"unknown"}),Ub=String.raw`
3
3
  using System;
4
4
  using System.Runtime.InteropServices;
5
5
  using System.Text;
@@ -86,8 +86,83 @@ public static class KodaXNativeProcessSnapshot {
86
86
  CloseHandle(snapshot);
87
87
  }
88
88
  }
89
- }`;import Co from"node:fs";import To from"node:os";import Ro from"node:path";var Sd="gpt-5.4",Ed="auto-gemini-3",Id=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Cd=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function _o(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}o(_o,"dedupePreserveOrder");function Td(){let e=Ro.join(To.homedir(),".codex","config.toml");try{return Co.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(Td,"readCodexConfiguredModel");function Rd(){let e=Ro.join(To.homedir(),".gemini","settings.json");try{let t=JSON.parse(Co.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}o(Rd,"readGeminiConfiguredModel");function Oe(){return Td()||Sd}o(Oe,"getCodexCliDefaultModel");function Ne(){return Rd()||Ed}o(Ne,"getGeminiCliDefaultModel");function nt(){return _o([Oe(),...Id])}o(nt,"getCodexCliKnownModels");function rt(){return _o([Ne(),...Cd])}o(rt,"getGeminiCliKnownModels");var Rk=Ne(),_k=rt();var Bk=Oe(),Xk=nt();import{existsSync as jd,readFileSync as Kd}from"node:fs";import De from"node:path";import{fileURLToPath as Bd}from"node:url";var Ao=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Po=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Oo=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],No=["max_tokens","max_completion_tokens"],$o=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Do=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(ke,"requireString");function $e(e,t){if(e!==void 0)return ke(e,t)}o($e,"optionalString");function jo(e,t){if(e!==void 0){if(typeof e!="string"||!No.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${No.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(jo,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}o(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(D,"optionalBoolean");function Lo(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}o(Lo,"optionalStringArray");function Ad(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ke(i,`${t}.${r}`);return n}o(Ad,"optionalStringMap");function Pd(e,t){if(e!==void 0){if(typeof e!="string"||!Oo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Pd,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!Ao.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ao.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_n,"requireReasoningCapability");function Md(e,t){if(typeof e!="string"||!Po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Po.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Md,"requireEffortStrategy");function Od(e,t){if(e!==void 0){if(typeof e!="string"||!Mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Od,"optionalThinkingStrategy");function Fo(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Md(e.effortStrategy,`${t}.effortStrategy`),r=Pd(e.reasoningPreset,`${t}.reasoningPreset`),i=Od(e.thinkingStrategy,`${t}.thinkingStrategy`),s=$e(e.defaultEffort,`${t}.defaultEffort`),a=Ad(e.effortAliases,`${t}.effortAliases`),c=Lo(e.disabledEfforts,`${t}.disabledEfforts`),d=Lo(e.localRejectEfforts,`${t}.localRejectEfforts`),u=D(e.allowCustomEffort,`${t}.allowCustomEffort`),l=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),i!==void 0&&(y.thinkingStrategy=i),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...$e(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:$e(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return u!==void 0&&(y.allowCustomEffort=u),l!==void 0&&(y.supportsReasoningEffort=l),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}o(Fo,"validateReasoningProfile");function Ko(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Fo(n,`${t}.reasoningProfile`):Fo(r,`${t}.reasoningCapabilityV2`)}o(Ko,"validateReasoningProfileField");function Nd(e,t){if(typeof e!="string"||!$o.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$o.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Nd,"requireProfileName");function $d(e,t){if(typeof e!="string"||!Do.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Do.join(", ")}, got ${JSON.stringify(e)}`);return e}o($d,"requireVerifyStrategy");function Dd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=$e(e.wireModel,`${t}.wireModel`),i=$e(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=jo(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),u=D(e.replayReasoningContent,`${t}.replayReasoningContent`),l=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=Ko(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),i!==void 0&&(g.displayName=i),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),u!==void 0&&(g.replayReasoningContent=u),l!==void 0&&(g.strictThinkingSignature=l),f!==void 0&&(g.streamMaxDurationMs=f),g}o(Dd,"validateModelDescriptor");function Ld(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=_n(i,`${t}.${r}`);return n}o(Ld,"validateModelReasoningCapabilities");function Fd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ko(e,`providers.${t}`),a=Nd(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=$d(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),u=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),l=jo(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Ld(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=$e(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Dd(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),u!==void 0&&(w.maxOutputTokens=u),l!==void 0&&(w.maxOutputTokensField=l),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}o(Fd,"validateProviderEntry");function Bo(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=Fd(i,r);return{version:1,updatedAt:t,providers:n}}o(Bo,"validateProviderCapabilitiesJson");var Xd=Object.freeze({native:tt,"image-input-native":wo,"cli-bridge":Mt,"image-input-cli-bridge":vo}),Dt=null;function Ud(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Bd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(jd(n))return n;return t[0]}o(Ud,"resolveJsonPath");function Wd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Xo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Xo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Wd,"deepFreezeSnapshot");function Xo(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}o(Xo,"freezeReasoningProfile");function Hd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(Hd,"resolveCliBridgeModels");function zd(e,t){let n=Xd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=Hd(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(zd,"buildSnapshot");function Uo(){if(Dt)return Dt;let e=Ud(),t;try{let i=Kd(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Bo(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Wd(zd(i,s));return Dt=Object.freeze(r),Dt}o(Uo,"getProviderSnapshots");import fx from"@anthropic-ai/sdk";var Lt=Uo();var Wo=process.env.KODAX_PROVIDER??"zhipu-coding";var Eu=[];function z(e){let t=Pt(e),n=Eu.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ai(t)}
90
- `)}catch{}}o(z,"emitKodaXDiagnostic");function ai(e){let t=Pt(e),n=Iu(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}o(ai,"formatKodaXDiagnostic");function Iu(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}o(Iu,"formatDiagnosticDetail");var ot=class e{static{o(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??Cu,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},ci=0;function Cu(){ci+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ci}-${e}`}o(Cu,"defaultNextSpanId");var di=0;function Tu(){di+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${di}-${e}`}o(Tu,"defaultNextTraceId");function Dn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Tu)(),r=t(),i=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:i},c=!1,d,u,l=new ot({id:`${n}-root`,traceId:n,name:i,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(l);let f={id:n,startedAt:r,rootSpan:l,metadata:s,get endedAt(){return d},get error(){return u??l.error},end(){c||(c=!0,d=t(),l.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}o(Dn,"createTrace");var Ln=[];function Fn(e){for(let t of Ln)try{t.onSpanStart(e)}catch{}}o(Fn,"_emitSpanStart");function jn(e){for(let t of Ln)try{t.onSpanEnd(e)}catch{}}o(jn,"_emitSpanEnd");function Kn(e){for(let t of Ln)try{t.onTraceEnd(e)}catch{}}o(Kn,"_emitTraceEnd");var Ft=class{static{o(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Dn({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Fn,onSpanEnd:jn,onTraceEnd:Kn})}},ui=new Ft;var Ou=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var ZE=new Set(Ou);var WI=String.raw`
89
+ }`;import Co from"node:fs";import To from"node:os";import Ro from"node:path";var Ed="gpt-5.4",Id="auto-gemini-3",Cd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Td=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function _o(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}o(_o,"dedupePreserveOrder");function Rd(){let e=Ro.join(To.homedir(),".codex","config.toml");try{return Co.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(Rd,"readCodexConfiguredModel");function _d(){let e=Ro.join(To.homedir(),".gemini","settings.json");try{let t=JSON.parse(Co.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}o(_d,"readGeminiConfiguredModel");function Oe(){return Rd()||Ed}o(Oe,"getCodexCliDefaultModel");function Ne(){return _d()||Id}o(Ne,"getGeminiCliDefaultModel");function nt(){return _o([Oe(),...Cd])}o(nt,"getCodexCliKnownModels");function rt(){return _o([Ne(),...Td])}o(rt,"getGeminiCliKnownModels");var _k=Ne(),Ak=rt();var Xk=Oe(),Uk=nt();import{existsSync as Kd,readFileSync as Bd}from"node:fs";import De from"node:path";import{fileURLToPath as Xd}from"node:url";var Ao=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Po=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Oo=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],No=["max_tokens","max_completion_tokens"],$o=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Do=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(ke,"requireString");function $e(e,t){if(e!==void 0)return ke(e,t)}o($e,"optionalString");function jo(e,t){if(e!==void 0){if(typeof e!="string"||!No.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${No.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(jo,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}o(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(D,"optionalBoolean");function Lo(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}o(Lo,"optionalStringArray");function Pd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ke(i,`${t}.${r}`);return n}o(Pd,"optionalStringMap");function Md(e,t){if(e!==void 0){if(typeof e!="string"||!Oo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Md,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!Ao.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ao.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_n,"requireReasoningCapability");function Od(e,t){if(typeof e!="string"||!Po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Po.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Od,"requireEffortStrategy");function Nd(e,t){if(e!==void 0){if(typeof e!="string"||!Mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Nd,"optionalThinkingStrategy");function Fo(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Od(e.effortStrategy,`${t}.effortStrategy`),r=Md(e.reasoningPreset,`${t}.reasoningPreset`),i=Nd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=$e(e.defaultEffort,`${t}.defaultEffort`),a=Pd(e.effortAliases,`${t}.effortAliases`),c=Lo(e.disabledEfforts,`${t}.disabledEfforts`),d=Lo(e.localRejectEfforts,`${t}.localRejectEfforts`),u=D(e.allowCustomEffort,`${t}.allowCustomEffort`),l=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),i!==void 0&&(y.thinkingStrategy=i),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...$e(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:$e(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return u!==void 0&&(y.allowCustomEffort=u),l!==void 0&&(y.supportsReasoningEffort=l),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}o(Fo,"validateReasoningProfile");function Ko(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Fo(n,`${t}.reasoningProfile`):Fo(r,`${t}.reasoningCapabilityV2`)}o(Ko,"validateReasoningProfileField");function $d(e,t){if(typeof e!="string"||!$o.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$o.join(", ")}, got ${JSON.stringify(e)}`);return e}o($d,"requireProfileName");function Dd(e,t){if(typeof e!="string"||!Do.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Do.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Dd,"requireVerifyStrategy");function Ld(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=$e(e.wireModel,`${t}.wireModel`),i=$e(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=jo(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),u=D(e.replayReasoningContent,`${t}.replayReasoningContent`),l=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=Ko(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),i!==void 0&&(g.displayName=i),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),u!==void 0&&(g.replayReasoningContent=u),l!==void 0&&(g.strictThinkingSignature=l),f!==void 0&&(g.streamMaxDurationMs=f),g}o(Ld,"validateModelDescriptor");function Fd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=_n(i,`${t}.${r}`);return n}o(Fd,"validateModelReasoningCapabilities");function jd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ko(e,`providers.${t}`),a=$d(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Dd(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),u=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),l=jo(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Fd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=$e(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Ld(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),u!==void 0&&(w.maxOutputTokens=u),l!==void 0&&(w.maxOutputTokensField=l),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}o(jd,"validateProviderEntry");function Bo(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=jd(i,r);return{version:1,updatedAt:t,providers:n}}o(Bo,"validateProviderCapabilitiesJson");var Ud=Object.freeze({native:tt,"image-input-native":wo,"cli-bridge":Mt,"image-input-cli-bridge":vo}),Dt=null;function Wd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Xd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Kd(n))return n;return t[0]}o(Wd,"resolveJsonPath");function Hd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Xo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Xo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Hd,"deepFreezeSnapshot");function Xo(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}o(Xo,"freezeReasoningProfile");function zd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(zd,"resolveCliBridgeModels");function qd(e,t){let n=Ud[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=zd(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(qd,"buildSnapshot");function Uo(){if(Dt)return Dt;let e=Wd(),t;try{let i=Bd(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Bo(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Hd(qd(i,s));return Dt=Object.freeze(r),Dt}o(Uo,"getProviderSnapshots");import px from"@anthropic-ai/sdk";var Lt=Uo();var Wo=process.env.KODAX_PROVIDER??"zhipu-coding";var Iu=[];function z(e){let t=Pt(e),n=Iu.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ai(t)}
90
+ `)}catch{}}o(z,"emitKodaXDiagnostic");function ai(e){let t=Pt(e),n=Cu(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}o(ai,"formatKodaXDiagnostic");function Cu(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}o(Cu,"formatDiagnosticDetail");var ot=class e{static{o(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??Tu,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},ci=0;function Tu(){ci+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ci}-${e}`}o(Tu,"defaultNextSpanId");var di=0;function Ru(){di+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${di}-${e}`}o(Ru,"defaultNextTraceId");function Dn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Ru)(),r=t(),i=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:i},c=!1,d,u,l=new ot({id:`${n}-root`,traceId:n,name:i,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(l);let f={id:n,startedAt:r,rootSpan:l,metadata:s,get endedAt(){return d},get error(){return u??l.error},end(){c||(c=!0,d=t(),l.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}o(Dn,"createTrace");var Ln=[];function Fn(e){for(let t of Ln)try{t.onSpanStart(e)}catch{}}o(Fn,"_emitSpanStart");function jn(e){for(let t of Ln)try{t.onSpanEnd(e)}catch{}}o(jn,"_emitSpanEnd");function Kn(e){for(let t of Ln)try{t.onTraceEnd(e)}catch{}}o(Kn,"_emitTraceEnd");var Ft=class{static{o(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Dn({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Fn,onSpanEnd:jn,onTraceEnd:Kn})}},ui=new Ft;var Nu=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var eI=new Set(Nu);var HI=String.raw`
91
+ using System;
92
+ using System.Runtime.InteropServices;
93
+ public static class KodaXWindowsJobMembership {
94
+ [StructLayout(LayoutKind.Sequential)]
95
+ private struct BasicLimitInformation {
96
+ public long PerProcessUserTimeLimit;
97
+ public long PerJobUserTimeLimit;
98
+ public uint LimitFlags;
99
+ public UIntPtr MinimumWorkingSetSize;
100
+ public UIntPtr MaximumWorkingSetSize;
101
+ public uint ActiveProcessLimit;
102
+ public UIntPtr Affinity;
103
+ public uint PriorityClass;
104
+ public uint SchedulingClass;
105
+ }
106
+ [StructLayout(LayoutKind.Sequential)]
107
+ private struct IoCounters {
108
+ public ulong ReadOperationCount;
109
+ public ulong WriteOperationCount;
110
+ public ulong OtherOperationCount;
111
+ public ulong ReadTransferCount;
112
+ public ulong WriteTransferCount;
113
+ public ulong OtherTransferCount;
114
+ }
115
+ [StructLayout(LayoutKind.Sequential)]
116
+ private struct ExtendedLimitInformation {
117
+ public BasicLimitInformation BasicLimitInformation;
118
+ public IoCounters IoInfo;
119
+ public UIntPtr ProcessMemoryLimit;
120
+ public UIntPtr JobMemoryLimit;
121
+ public UIntPtr PeakProcessMemoryUsed;
122
+ public UIntPtr PeakJobMemoryUsed;
123
+ }
124
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
125
+ private static extern IntPtr OpenJobObjectW(uint desiredAccess, bool inheritHandle, string name);
126
+ [DllImport("kernel32.dll", SetLastError = true)]
127
+ private static extern bool IsProcessInJob(IntPtr process, IntPtr job, out bool result);
128
+ [DllImport("kernel32.dll", SetLastError = true)]
129
+ private static extern bool QueryInformationJobObject(
130
+ IntPtr job,
131
+ int informationClass,
132
+ out ExtendedLimitInformation information,
133
+ uint informationLength,
134
+ IntPtr returnLength);
135
+ [DllImport("kernel32.dll")]
136
+ private static extern IntPtr GetCurrentProcess();
137
+ [DllImport("kernel32.dll")]
138
+ private static extern bool CloseHandle(IntPtr handle);
139
+ public static bool IsCurrentProcessContained(string name) {
140
+ var job = OpenJobObjectW(4, false, name);
141
+ if (job == IntPtr.Zero) return false;
142
+ try {
143
+ bool inJob;
144
+ if (!IsProcessInJob(GetCurrentProcess(), job, out inJob) || !inJob) return false;
145
+ ExtendedLimitInformation limits;
146
+ if (!QueryInformationJobObject(
147
+ job,
148
+ 9,
149
+ out limits,
150
+ (uint)Marshal.SizeOf(typeof(ExtendedLimitInformation)),
151
+ IntPtr.Zero)) return false;
152
+ return (limits.BasicLimitInformation.LimitFlags & 0x00002000) != 0;
153
+ } finally {
154
+ CloseHandle(job);
155
+ }
156
+ }
157
+ }`,zI=String.raw`
158
+ $ErrorActionPreference = 'Stop'
159
+ $source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
160
+ Add-Type -TypeDefinition $source
161
+ if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB_NAME)) {
162
+ [Console]::Out.Write('1')
163
+ } else {
164
+ [Console]::Out.Write('0')
165
+ }`,qI=String.raw`
91
166
  using System;
92
167
  using System.Runtime.InteropServices;
93
168
  using System.Text;
@@ -174,26 +249,26 @@ public static class KodaXNativeProcessSnapshot {
174
249
  CloseHandle(snapshot);
175
250
  }
176
251
  }
177
- }`,HI=Object.freeze({status:"terminated"}),zI=Object.freeze({status:"already-exited"}),qI=Object.freeze({status:"unknown"});import{Jimp as xC}from"jimp";var dl=Math.floor(3.75*1024*1024);var ll=1440*60*1e3;import{fileURLToPath as Fl}from"url";import{dirname as jl}from"path";var Kl=Fl(import.meta.url),IR=jl(Kl);import{readFile as Hl,readdir as zl}from"fs/promises";import{join as xe,relative as ql}from"path";import Si from"yaml";var Bl=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function Xl(e){let t=e.split(`
252
+ }`,VI=Object.freeze({status:"terminated"}),GI=Object.freeze({status:"already-exited"}),YI=Object.freeze({status:"unknown"});import{Jimp as IC}from"jimp";var ul=Math.floor(3.75*1024*1024);var fl=1440*60*1e3;import{fileURLToPath as jl}from"url";import{dirname as Kl}from"path";var Bl=jl(import.meta.url),RR=Kl(Bl);import{readFile as zl,readdir as ql}from"fs/promises";import{join as xe,relative as Vl}from"path";import Ei from"yaml";var Xl=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function Ul(e){let t=e.split(`
178
253
  `),n=[];for(let r of t){let i=r.indexOf(":");if(i>0){let s=r.slice(0,i).trim(),a=r.slice(i+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
179
- `)}o(Xl,"sanitizeYaml");function Ei(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
254
+ `)}o(Ul,"sanitizeYaml");function Ii(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
180
255
  `).replace(/\r/g,`
181
256
  `).trimStart();if(!n.startsWith(`---
182
257
  `)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
183
258
  ---
184
259
  `,4);if(r===-1){let c=n.indexOf(`
185
- ---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let i=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Si.parse(i)??{}}catch{a=Si.parse(Xl(i))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}o(Ei,"parseYamlFrontmatter");function Ii(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}o(Ii,"normalizeAllowedToolsString");function Ul(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}o(Ul,"normalizeYamlHookEntry");function Wl(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Ul(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}o(Wl,"normalizeYamlHookEntryList");function Ci(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of Bl){let i=Wl(t[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}o(Ci,"normalizeYamlHookMap");function Ti(e){let[t,n]=Ei(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:Ii(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:Ci(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}o(Ti,"parseSkillMarkdown");async function jt(e,t){let n=xe(e,"SKILL.md");try{let r=await Hl(n,"utf-8"),{frontmatter:i,body:s}=Ti(r),[a,c,d,u,l]=await Promise.all([Le(xe(e,"scripts")),Le(xe(e,"references")),Le(xe(e,"assets")),Le(xe(e,"templates")),Le(xe(e,"resources"))]);return{...i,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...u.length>0&&{templates:u},...l.length>0&&{resources:l}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}o(jt,"loadFullSkill");async function Le(e,t=e){let n=[];try{let r=await zl(e,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=xe(e,i.name);if(i.isDirectory()){n.push(...await Le(s,t));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:ql(t,s).replace(/\\/g,"/")})}}catch{}return n}o(Le,"loadSkillFiles");var Ri=64*1024,_i=256*1024;var h_=1024*1024;var H_=16*1024;var eA=16*1024;import{execSync as Af}from"child_process";import Pf from"path";var Mf=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 Wi(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Mf)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let i=t.split(/\s+/);if(i.includes("-f")||i.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let i=t.split(/\s+/).slice(1);if(i.length>0&&!i.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}o(Wi,"isSingleSafeDynamicContextCommand");function Of(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&Pf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Wi(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Wi(s))return!1}return!0}o(Of,"isSafeDynamicContextCommand");function Hi(e){let t=[],n="",r=!1,i="";for(let s=0;s<e.length;s++){let a=e[s];r?a===i?r=!1:n+=a:a==='"'||a==="'"?(r=!0,i=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}o(Hi,"parseArguments");var Wt=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=Hi(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(t))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let u=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${u}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Of(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Af(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};async function at(e,t,n){return new Wt(n).resolve(e,t)}o(at,"resolveSkillContent");function zi(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}o(zi,"escapeXml");var zn=120;function Ht(e){return e.replace(/\\/g,"/")}o(Ht,"formatDisplayPath");function Df(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))]}o(Df,"collectSupportFiles");function Lf(e){let t=Df(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[i,s]of n)s?.length&&r.push(`- ${i}/: ${Ht(`${e.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of t.slice(0,zn))r.push(`- ${i}/${s.relativePath}: ${Ht(s.path)}`);return t.length>zn&&r.push(`- ... ${t.length-zn} more files under ${Ht(e.path)}`),r}o(Lf,"buildSupportFileContext");function Ff(e,t,n){let r=[];r.push(`<skill name="${zi(e.name)}" location="${zi(e.path)}">`),r.push(""),r.push(`Skill root: ${Ht(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let i=Lf(e);return i.length>0&&(r.push(...i),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
186
- `)}o(Ff,"buildSkillBlock");async function qn(e,t,n){let r=await at(e.content,t,n);return{content:Ff(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}o(qn,"expandSkillForLLM");import{writeFile as Ji}from"node:fs/promises";import he from"node:path";import{existsSync as jf}from"node:fs";import{mkdir as Kf,readFile as Vn,readdir as Bf,stat as Vi,writeFile as QA}from"node:fs/promises";import Xf from"node:os";import re from"node:path";import{fileURLToPath as Gi,pathToFileURL as Uf}from"node:url";import Wf from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(Gi(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(jf(n))return Fe=await import(Uf(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}.
260
+ ---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let i=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Ei.parse(i)??{}}catch{a=Ei.parse(Ul(i))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}o(Ii,"parseYamlFrontmatter");function Ci(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}o(Ci,"normalizeAllowedToolsString");function Wl(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}o(Wl,"normalizeYamlHookEntry");function Hl(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Wl(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}o(Hl,"normalizeYamlHookEntryList");function Ti(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of Xl){let i=Hl(t[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}o(Ti,"normalizeYamlHookMap");function Ri(e){let[t,n]=Ii(e,{throwOnMissing:!0});if(!t)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!t.name||typeof t.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!t.description||typeof t.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:t.name,description:t.description,disableModelInvocation:t["disable-model-invocation"]===!0,userInvocable:t["user-invocable"]!==!1,allowedTools:Ci(t["allowed-tools"]),context:t.context==="fork"?"fork":void 0,agent:typeof t.agent=="string"?t.agent:void 0,argumentHint:typeof t["argument-hint"]=="string"?t["argument-hint"]:void 0,model:typeof t.model=="string"?t.model:void 0,hooks:Ti(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}o(Ri,"parseSkillMarkdown");async function jt(e,t){let n=xe(e,"SKILL.md");try{let r=await zl(n,"utf-8"),{frontmatter:i,body:s}=Ri(r),[a,c,d,u,l]=await Promise.all([Le(xe(e,"scripts")),Le(xe(e,"references")),Le(xe(e,"assets")),Le(xe(e,"templates")),Le(xe(e,"resources"))]);return{...i,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...u.length>0&&{templates:u},...l.length>0&&{resources:l}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}o(jt,"loadFullSkill");async function Le(e,t=e){let n=[];try{let r=await ql(e,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=xe(e,i.name);if(i.isDirectory()){n.push(...await Le(s,t));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:Vl(t,s).replace(/\\/g,"/")})}}catch{}return n}o(Le,"loadSkillFiles");var _i=64*1024,Ai=256*1024;var w_=1024*1024;var V_=16*1024;var rA=16*1024;import{execSync as Pf}from"child_process";import Mf from"path";var Of=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function Hi(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Of)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let i=t.split(/\s+/);if(i.includes("-f")||i.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let i=t.split(/\s+/).slice(1);if(i.length>0&&!i.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}o(Hi,"isSingleSafeDynamicContextCommand");function Nf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&Mf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Hi(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Hi(s))return!1}return!0}o(Nf,"isSafeDynamicContextCommand");function zi(e){let t=[],n="",r=!1,i="";for(let s=0;s<e.length;s++){let a=e[s];r?a===i?r=!1:n+=a:a==='"'||a==="'"?(r=!0,i=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}o(zi,"parseArguments");var Wt=class{static{o(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,i=zi(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(t))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let u=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${u}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Nf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Pf(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};async function at(e,t,n){return new Wt(n).resolve(e,t)}o(at,"resolveSkillContent");function qi(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}o(qi,"escapeXml");var zn=120;function Ht(e){return e.replace(/\\/g,"/")}o(Ht,"formatDisplayPath");function Lf(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))]}o(Lf,"collectSupportFiles");function Ff(e){let t=Lf(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[i,s]of n)s?.length&&r.push(`- ${i}/: ${Ht(`${e.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of t.slice(0,zn))r.push(`- ${i}/${s.relativePath}: ${Ht(s.path)}`);return t.length>zn&&r.push(`- ... ${t.length-zn} more files under ${Ht(e.path)}`),r}o(Ff,"buildSupportFileContext");function jf(e,t,n){let r=[];r.push(`<skill name="${qi(e.name)}" location="${qi(e.path)}">`),r.push(""),r.push(`Skill root: ${Ht(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let i=Ff(e);return i.length>0&&(r.push(...i),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
261
+ `)}o(jf,"buildSkillBlock");async function qn(e,t,n){let r=await at(e.content,t,n);return{content:jf(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}o(qn,"expandSkillForLLM");import{writeFile as Qi}from"node:fs/promises";import he from"node:path";import{existsSync as Kf}from"node:fs";import{mkdir as Bf,readFile as Vn,readdir as Xf,stat as Gi,writeFile as t0}from"node:fs/promises";import Uf from"node:os";import re from"node:path";import{fileURLToPath as Yi,pathToFileURL as Wf}from"node:url";import Hf from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(Yi(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(Kf(n))return Fe=await import(Wf(n).href),Fe;t.push(`relative SDK path not found: ${n}`);try{return Fe=await import(["@kodax-ai","kodax"].join("/")),Fe}catch(r){t.push(`bare-name @kodax-ai/kodax failed: ${r?.code??r?.message}`)}throw new Error(`Cannot locate KodaX SDK from helper script ${import.meta.url}.
187
262
  Attempted:
188
263
  - ${t.join(`
189
- - `)}`)}o(me,"loadKodaXSDK");function Hf(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
264
+ - `)}`)}o(me,"loadKodaXSDK");function zf(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
190
265
  `).replace(/\r/g,`
191
266
  `).trimStart();if(!t.startsWith(`---
192
267
  `))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
193
268
  ---
194
- `,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}o(Hf,"extractFrontmatter");function zt(e){let{yamlText:t,body:n}=Hf(e),r=Wf.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}o(zt,"parseSkillMarkdown");async function dt(e){let t=re.join(e,"SKILL.md");if(!(await Vi(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Vn(t,"utf8"),{frontmatter:i,body:s}=zt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:i}}o(dt,"loadSkill");async function ut(e){try{return await Vi(e),!0}catch{return!1}}o(ut,"pathExists");function qt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,i)=>r+i,0)/e.length,n=e.length>1?e.reduce((r,i)=>r+(i-t)**2,0)/(e.length-1):0;return{mean:ct(t),stddev:ct(Math.sqrt(n)),min:ct(Math.min(...e)),max:ct(Math.max(...e))}}o(qt,"calculateStats");function ct(e,t=4){return Number(e.toFixed(t))}o(ct,"roundNumber");function Vt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}o(Vt,"formatDelta");function qi(e){try{return JSON.parse(e)}catch{return null}}o(qi,"safeJsonParse");function je(e){let t=qi(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:qi(e.slice(n,r+1))}o(je,"extractJsonObject");async function Y(e,t=null){try{return JSON.parse(await Vn(e,"utf8"))}catch{return t}}o(Y,"readJsonFile");async function Ke(e,t){let n=re.dirname(Gi(e));return Vn(re.resolve(n,t),"utf8")}o(Ke,"loadRelativeText");function L(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
269
+ `,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}o(zf,"extractFrontmatter");function zt(e){let{yamlText:t,body:n}=zf(e),r=Hf.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}o(zt,"parseSkillMarkdown");async function dt(e){let t=re.join(e,"SKILL.md");if(!(await Gi(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Vn(t,"utf8"),{frontmatter:i,body:s}=zt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:i}}o(dt,"loadSkill");async function ut(e){try{return await Gi(e),!0}catch{return!1}}o(ut,"pathExists");function qt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,i)=>r+i,0)/e.length,n=e.length>1?e.reduce((r,i)=>r+(i-t)**2,0)/(e.length-1):0;return{mean:ct(t),stddev:ct(Math.sqrt(n)),min:ct(Math.min(...e)),max:ct(Math.max(...e))}}o(qt,"calculateStats");function ct(e,t=4){return Number(e.toFixed(t))}o(ct,"roundNumber");function Vt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}o(Vt,"formatDelta");function Vi(e){try{return JSON.parse(e)}catch{return null}}o(Vi,"safeJsonParse");function je(e){let t=Vi(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Vi(e.slice(n,r+1))}o(je,"extractJsonObject");async function Y(e,t=null){try{return JSON.parse(await Vn(e,"utf8"))}catch{return t}}o(Y,"readJsonFile");async function Ke(e,t){let n=re.dirname(Yi(e));return Vn(re.resolve(n,t),"utf8")}o(Ke,"loadRelativeText");function L(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
195
270
 
196
- [truncated ${r} chars]`}o(L,"truncateText");function Yi(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(i=>i?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?ct(n/t):0}}o(Yi,"computePassSummary");async function Gn(e,t=e,n=[]){let r=await Bf(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,i.name);if(i.isDirectory()){await Gn(e,s,n);continue}i.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}o(Gn,"collectFiles");function lt(){return re.join(Xf.homedir(),".kodax","skills")}o(lt,"getDefaultSkillsDir");async function F(e){return await Kf(e,{recursive:!0}),e}o(F,"ensureDirectory");function zf(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}o(zf,"titleFromSlug");function qf(e,t){let n=zf(e);return`---
271
+ [truncated ${r} chars]`}o(L,"truncateText");function Ji(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(i=>i?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?ct(n/t):0}}o(Ji,"computePassSummary");async function Gn(e,t=e,n=[]){let r=await Xf(t,{withFileTypes:!0}).catch(()=>[]);for(let i of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,i.name);if(i.isDirectory()){await Gn(e,s,n);continue}i.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}o(Gn,"collectFiles");function lt(){return re.join(Uf.homedir(),".kodax","skills")}o(lt,"getDefaultSkillsDir");async function F(e){return await Bf(e,{recursive:!0}),e}o(F,"ensureDirectory");function qf(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}o(qf,"titleFromSlug");function Vf(e,t){let n=qf(e);return`---
197
272
  name: ${e}
198
273
  description: ${t}
199
274
  user-invocable: true
@@ -222,10 +297,10 @@ Describe the task this skill handles, the trigger boundary, and the expected out
222
297
  - Put deeper guidance in \`references/\`.
223
298
  - Put reusable templates or static files in \`assets/\`.
224
299
  - Put repeatable helper scripts in \`scripts/\`.
225
- `}o(qf,"renderSkillTemplate");function Vf(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}o(Vf,"renderEvalTemplate");async function Gf(e){let t=he.resolve(e.baseDir??lt()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await Ji(he.join(n,"SKILL.md"),qf(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await Ji(he.join(n,"evals","evals.json"),`${Vf(e.name)}
226
- `,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}o(Gf,"initSkill");function Yf(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}o(Yf,"parseArgs");async function Qi(e=process.argv){let t=Yf(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 Gf(t);console.log(`Initialized ${n.skillDir}`)}o(Qi,"main");var Jf=!1;Jf&&Qi().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import Zi from"node:path";var Qf=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function ft(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await dt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:i}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!Qf.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=Zi.basename(Zi.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),i.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(l=>typeof l=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}o(ft,"validateSkillDirectory");async function es(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await ft(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}o(es,"main");var Zf=!1;Zf&&es().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Yn,writeFile as oe}from"node:fs/promises";import C from"node:path";function ep(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}o(ep,"normalizeAssertion");function tp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}o(tp,"countToolCalls");function np(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}o(np,"countToolErrors");function rp(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(`
300
+ `}o(Vf,"renderSkillTemplate");function Gf(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}o(Gf,"renderEvalTemplate");async function Yf(e){let t=he.resolve(e.baseDir??lt()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await Qi(he.join(n,"SKILL.md"),Vf(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await Qi(he.join(n,"evals","evals.json"),`${Gf(e.name)}
301
+ `,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}o(Yf,"initSkill");function Jf(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}o(Jf,"parseArgs");async function Zi(e=process.argv){let t=Jf(e);t.name||(console.error("Usage: node scripts/init-skill.js <skill-name> [--path <skills-dir>] [--description <text>] [--force] [--no-evals]"),process.exit(1));let n=await Yf(t);console.log(`Initialized ${n.skillDir}`)}o(Zi,"main");var Qf=!1;Qf&&Zi().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import es from"node:path";var Zf=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function ft(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await dt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:i}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!Zf.has(d));s.length>0&&t.errors.push(`Unexpected frontmatter keys: ${s.sort().join(", ")}`);let a=typeof r.name=="string"?r.name.trim():"",c=typeof r.description=="string"?r.description.trim():"";if(!a)t.errors.push("Missing required frontmatter field: name");else{/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a)||t.errors.push(`Invalid skill name "${a}". Use lowercase kebab-case and avoid consecutive hyphens.`),a.length>64&&t.errors.push(`Skill name is too long (${a.length}/64).`);let d=es.basename(es.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),i.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(l=>typeof l=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}o(ft,"validateSkillDirectory");async function ts(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await ft(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}o(ts,"main");var ep=!1;ep&&ts().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Yn,writeFile as oe}from"node:fs/promises";import C from"node:path";function tp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}o(tp,"normalizeAssertion");function np(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}o(np,"countToolCalls");function rp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}o(rp,"countToolErrors");function op(e,t){return`${["# Skill Eval Transcript","","## Eval Prompt","",e,"","## Final Response","",t.lastText||"(No final text)","","## Result Flags","",`- success: ${t.success}`,`- signal: ${t.signal??"none"}`,`- interrupted: ${t.interrupted===!0}`,`- limit_reached: ${t.limitReached===!0}`].join(`
227
302
  `)}
228
- `}o(rp,"renderTranscript");async function op(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),i=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,u=a;try{d=await Yn(a,"utf8")}catch{d=await Yn(c,"utf8").catch(()=>null),u=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);i.push(`### ${s}
303
+ `}o(op,"renderTranscript");async function ip(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),i=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,u=a;try{d=await Yn(a,"utf8")}catch{d=await Yn(c,"utf8").catch(()=>null),u=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);i.push(`### ${s}
229
304
  \`\`\`
230
305
  ${d}
231
306
  \`\`\`
@@ -235,15 +310,15 @@ ${i.join(`
235
310
 
236
311
  `)}
237
312
 
238
- `}o(op,"readInputFiles");async function ip(e,t){let n=String(e.prompt??e.query??"").trim();return`${await op(e.files,t)}${n}`.trim()}o(ip,"buildEvalPrompt");async function sp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),i=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-i}}o(sp,"defaultRunAgent");async function ap(e,t,n,r){return e==="with_skill"?(await qn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}o(ap,"prepareConfigPrompt");async function cp(e,t,n,r,i){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:tp(i.result.messages),errors_encountered:np(i.result.messages),output_chars:i.result.lastText.length};await oe(C.join(s,"result.md"),`${i.result.lastText}
313
+ `}o(ip,"readInputFiles");async function sp(e,t){let n=String(e.prompt??e.query??"").trim();return`${await ip(e.files,t)}${n}`.trim()}o(sp,"buildEvalPrompt");async function ap(e,t){let{runKodaX:n,estimateTokens:r}=await me(),i=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-i}}o(ap,"defaultRunAgent");async function cp(e,t,n,r){return e==="with_skill"?(await qn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}o(cp,"prepareConfigPrompt");async function dp(e,t,n,r,i){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:np(i.result.messages),errors_encountered:rp(i.result.messages),output_chars:i.result.lastText.length};await oe(C.join(s,"result.md"),`${i.result.lastText}
239
314
  `,"utf8"),await oe(C.join(s,"prompt.txt"),`${r}
240
- `,"utf8"),await oe(C.join(e,"transcript.md"),rp(r,i.result),"utf8"),await oe(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:i.result.sessionId,...a},null,2)}
315
+ `,"utf8"),await oe(C.join(e,"transcript.md"),op(r,i.result),"utf8"),await oe(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:i.result.sessionId,...a},null,2)}
241
316
  `,"utf8"),await oe(C.join(s,"messages.json"),`${JSON.stringify(i.result.messages,null,2)}
242
317
  `,"utf8"),await oe(C.join(e,"timing.json"),`${JSON.stringify({total_tokens:i.totalTokens,duration_ms:i.durationMs,total_duration_seconds:Number((i.durationMs/1e3).toFixed(4))},null,2)}
243
318
  `,"utf8"),await oe(C.join(e,"result.json"),`${JSON.stringify({success:i.result.success,signal:i.result.signal??null,signal_reason:i.result.signalReason??null,interrupted:i.result.interrupted===!0,limit_reached:i.result.limitReached===!0,session_id:i.result.sessionId,execution_metrics:a},null,2)}
244
- `,"utf8")}o(cp,"writeRunArtifacts");async function dp(e,t=sp){let n=await jt(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let i=JSON.parse(await Yn(e.evalsPath,"utf8")),s=Array.isArray(i.evals)?i.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let u=0;u<s.length;u+=1){let l=s[u],f=C.join(r,`eval-${u}`);await F(f),await oe(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:l.id??u,eval_name:l.name??`eval-${u}`,prompt:l.prompt??l.query??"",expected_output:l.expected_output??"",assertions:(Array.isArray(l.assertions)?l.assertions:[]).map(ep).filter(Boolean)},null,2)}
245
- `,"utf8");let m=await ip(l,e),p={};for(let g of a){let v=C.join(f,g);await F(v),p[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await ap(g,n,m,e),b=await t(h,{...e,configName:g,evalItem:l,runIndex:w});await cp(y,g,l,h,b),p[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:l.id??u,prompt:l.prompt??l.query??"",configs:p})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}o(dp,"runEvalWorkspace");function up(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}o(up,"parseArgs");async function ts(e=process.argv){let t=up(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 dp(t),r=`${JSON.stringify(n,null,2)}
246
- `;t.output?(await oe(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}o(ts,"main");var lp=!1;lp&&ts().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as fp,readFile as Jn,writeFile as rs}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}o(Ee,"normalizeExpectationText");function os(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(i=>typeof i=="string"?Ee(i):i&&typeof i=="object"&&typeof i.text=="string"?Ee(i.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}o(os,"normalizeExpectedRubric");function Qn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Qn,"normalizeStringArray");function ns(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}o(ns,"normalizeExpectationEntry");function pp(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],i=[],s=new Set;for(let a of t){let c=r.findIndex((d,u)=>s.has(u)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){i.push({text:a,passed:!1,evidence:""});continue}s.add(c),i.push(ns(r[c],a))}if(t.length===0)for(let a of r){let c=ns(a,"");c.text&&i.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:i,user_notes_summary:{uncertainties:Qn(n.user_notes_summary?.uncertainties),needs_review:Qn(n.user_notes_summary?.needs_review),workarounds:Qn(n.user_notes_summary?.workarounds)}}}o(pp,"normalizeParsedGrading");async function Zn(e){return(await fp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(Zn,"listDirectories");async function mp(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),i=T.basename(e),s=T.join(e,"outputs"),a=await Y(T.join(n,"eval_metadata.json"),{}),c=await Jn(T.join(s,"result.md"),"utf8").catch(()=>""),d=await Jn(T.join(s,"prompt.txt"),"utf8").catch(()=>""),u=await Jn(T.join(e,"transcript.md"),"utf8").catch(()=>""),l=await Y(T.join(s,"metrics.json"),{}),f=await Y(T.join(e,"result.json"),{}),m=await Y(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:i,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:u,metrics:l,result:f,timing:m}}o(mp,"loadRunContext");function hp(e){let t=os(e.evalMetadata),n=t.length>0?t.map((r,i)=>`${i+1}. ${r}`).join(`
319
+ `,"utf8")}o(dp,"writeRunArtifacts");async function up(e,t=ap){let n=await jt(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let i=JSON.parse(await Yn(e.evalsPath,"utf8")),s=Array.isArray(i.evals)?i.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let u=0;u<s.length;u+=1){let l=s[u],f=C.join(r,`eval-${u}`);await F(f),await oe(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:l.id??u,eval_name:l.name??`eval-${u}`,prompt:l.prompt??l.query??"",expected_output:l.expected_output??"",assertions:(Array.isArray(l.assertions)?l.assertions:[]).map(tp).filter(Boolean)},null,2)}
320
+ `,"utf8");let m=await sp(l,e),p={};for(let g of a){let v=C.join(f,g);await F(v),p[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await cp(g,n,m,e),b=await t(h,{...e,configName:g,evalItem:l,runIndex:w});await dp(y,g,l,h,b),p[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:l.id??u,prompt:l.prompt??l.query??"",configs:p})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}o(up,"runEvalWorkspace");function lp(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}o(lp,"parseArgs");async function ns(e=process.argv){let t=lp(e);(!t.skillPath||!t.evalsPath||!t.workspaceDir)&&(console.error("Usage: node scripts/run-eval.js --skill-path <dir> --evals <evals.json> --workspace <dir> [--provider anthropic] [--runs 1]"),process.exit(1));let n=await up(t),r=`${JSON.stringify(n,null,2)}
321
+ `;t.output?(await oe(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}o(ns,"main");var fp=!1;fp&&ns().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as pp,readFile as Jn,writeFile as os}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}o(Ee,"normalizeExpectationText");function is(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(i=>typeof i=="string"?Ee(i):i&&typeof i=="object"&&typeof i.text=="string"?Ee(i.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}o(is,"normalizeExpectedRubric");function Qn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Qn,"normalizeStringArray");function rs(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}o(rs,"normalizeExpectationEntry");function mp(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],i=[],s=new Set;for(let a of t){let c=r.findIndex((d,u)=>s.has(u)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){i.push({text:a,passed:!1,evidence:""});continue}s.add(c),i.push(rs(r[c],a))}if(t.length===0)for(let a of r){let c=rs(a,"");c.text&&i.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:i,user_notes_summary:{uncertainties:Qn(n.user_notes_summary?.uncertainties),needs_review:Qn(n.user_notes_summary?.needs_review),workarounds:Qn(n.user_notes_summary?.workarounds)}}}o(mp,"normalizeParsedGrading");async function Zn(e){return(await pp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(Zn,"listDirectories");async function hp(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),i=T.basename(e),s=T.join(e,"outputs"),a=await Y(T.join(n,"eval_metadata.json"),{}),c=await Jn(T.join(s,"result.md"),"utf8").catch(()=>""),d=await Jn(T.join(s,"prompt.txt"),"utf8").catch(()=>""),u=await Jn(T.join(e,"transcript.md"),"utf8").catch(()=>""),l=await Y(T.join(s,"metrics.json"),{}),f=await Y(T.join(e,"result.json"),{}),m=await Y(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:i,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:u,metrics:l,result:f,timing:m}}o(hp,"loadRunContext");function gp(e){let t=is(e.evalMetadata),n=t.length>0?t.map((r,i)=>`${i+1}. ${r}`).join(`
247
322
  `):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
248
323
 
249
324
  Return JSON with this shape:
@@ -289,12 +364,12 @@ ${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.executio
289
364
 
290
365
  ## Transcript Excerpt
291
366
  ${L(e.transcript,5e3)}
292
- `}o(hp,"buildGradingPrompt");async function is(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(is,"defaultRunJudge");async function gp(e,t,n=is){let r=await mp(T.resolve(e)),i=os(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=hp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=pp(c,i),u={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},l={summary:Yi(d.expectations),expectations:d.expectations,execution_metrics:u,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await rs(T.join(r.runDir,"grading.json"),`${JSON.stringify(l,null,2)}
293
- `,"utf8"),{runDir:r.runDir,grading:l,prompt:a,rawResponse:c}}o(gp,"gradeRun");async function yp(e,t=is){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),i=[],s=[];for(let c of await Zn(n))if(T.basename(c).startsWith("eval-"))for(let d of await Zn(c)){let u=T.basename(d);if(!(r.size>0&&!r.has(u)))for(let l of await Zn(d)){if(!T.basename(l).startsWith("run-"))continue;let f=T.join(l,"grading.json");if(await Y(f,null)&&e.overwrite!==!0){s.push(T.relative(n,l).replace(/\\/g,"/"));continue}let p=await gp(l,e,t);i.push({run:T.relative(n,l).replace(/\\/g,"/"),summary:p.grading.summary,config:p.grading.meta.config,eval_id:p.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:i.length,skipped:s.length,processed_runs:i,skipped_runs:s};return await rs(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
294
- `,"utf8"),a}o(yp,"gradeWorkspace");function wp(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean))}return t}o(wp,"parseArgs");async function ss(e=process.argv){let t=wp(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 yp(t);process.stdout.write(`${JSON.stringify(n,null,2)}
295
- `)}o(ss,"main");var vp=!1;vp&&ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as rr}from"node:fs/promises";import ie from"node:path";import{readFile as bp,readdir as kp,stat as xp,writeFile as as}from"node:fs/promises";import j from"node:path";async function er(e){return JSON.parse(await bp(e,"utf8"))}o(er,"readJson");async function Sp(e){try{return await xp(e),!0}catch{return!1}}o(Sp,"pathExists");async function tr(e){return(await kp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(tr,"listDirectories");async function Gt(e){let t=await Sp(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await tr(t)).filter(i=>j.basename(i).startsWith("eval-")),r={};for(let i of n){let s=j.join(i,"eval_metadata.json"),c=(await er(s).catch(()=>({}))).eval_id??j.basename(i);for(let d of await tr(i)){let u=j.basename(d),l=(await tr(d)).filter(f=>j.basename(f).startsWith("run-"));if(l.length!==0){r[u]??=[];for(let f of l){let m=await er(j.join(f,"grading.json")).catch(()=>null);if(!m)continue;let p=await er(j.join(f,"timing.json")).catch(()=>({}));r[u].push({eval_id:c,run_id:j.basename(f),pass_rate:m.summary?.pass_rate??0,passed:m.summary?.passed??0,failed:m.summary?.failed??0,total:m.summary?.total??0,time_seconds:p.total_duration_seconds??m.timing?.total_duration_seconds??0,tokens:p.total_tokens??m.execution_metrics?.output_chars??0,tool_calls:m.execution_metrics?.total_tool_calls??0,errors:m.execution_metrics?.errors_encountered??0,expectations:Array.isArray(m.expectations)?m.expectations:[],notes:[...m.user_notes_summary?.uncertainties??[],...m.user_notes_summary?.needs_review??[],...m.user_notes_summary?.workarounds??[]]})}}}}return r}o(Gt,"loadRunResults");function Ep(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:qt(a.map(c=>Number(c.pass_rate??0))),time_seconds:qt(a.map(c=>Number(c.time_seconds??0))),tokens:qt(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},i=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Vt(r.pass_rate.mean-i.pass_rate.mean),time_seconds:Vt(r.time_seconds.mean-i.time_seconds.mean),tokens:Vt(r.tokens.mean-i.tokens.mean)}}}o(Ep,"summarizeConfigs");function nr(e,t,n){let r=Ep(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}o(nr,"buildBenchmarkDocument");function Ip(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(`
296
- `)}o(Ip,"renderBenchmarkMarkdown");function Cp(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}o(Cp,"parseArgs");async function Tp(){let{iterationDir:e,skillName:t}=Cp(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Gt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=nr(e,t,n),i=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await as(i,JSON.stringify(r,null,2)),await as(s,`${Ip(r)}
297
- `),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}o(Tp,"main");var Rp=!1;Rp&&Tp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Yt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Yt,"normalizeStringArray");function _p(e){let t={};for(let[n,r]of Object.entries(e)){let i=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&i.set(d,(i.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(i.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}o(_p,"summarizeFailureClusters");function Ap(e,t,n){let r=je(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Yt(r.key_findings),variance_hotspots:Yt(r.variance_hotspots),suggested_actions:Yt(r.suggested_actions),watchouts:Yt(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}o(Ap,"normalizeAnalysisResult");function Pp(e){return`${e.agentInstructions.trim()}
367
+ `}o(gp,"buildGradingPrompt");async function ss(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(ss,"defaultRunJudge");async function yp(e,t,n=ss){let r=await hp(T.resolve(e)),i=is(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=gp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=mp(c,i),u={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},l={summary:Ji(d.expectations),expectations:d.expectations,execution_metrics:u,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await os(T.join(r.runDir,"grading.json"),`${JSON.stringify(l,null,2)}
368
+ `,"utf8"),{runDir:r.runDir,grading:l,prompt:a,rawResponse:c}}o(yp,"gradeRun");async function wp(e,t=ss){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),i=[],s=[];for(let c of await Zn(n))if(T.basename(c).startsWith("eval-"))for(let d of await Zn(c)){let u=T.basename(d);if(!(r.size>0&&!r.has(u)))for(let l of await Zn(d)){if(!T.basename(l).startsWith("run-"))continue;let f=T.join(l,"grading.json");if(await Y(f,null)&&e.overwrite!==!0){s.push(T.relative(n,l).replace(/\\/g,"/"));continue}let p=await yp(l,e,t);i.push({run:T.relative(n,l).replace(/\\/g,"/"),summary:p.grading.summary,config:p.grading.meta.config,eval_id:p.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:i.length,skipped:s.length,processed_runs:i,skipped_runs:s};return await os(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
369
+ `,"utf8"),a}o(wp,"gradeWorkspace");function vp(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(i=>i.trim()).filter(Boolean))}return t}o(vp,"parseArgs");async function as(e=process.argv){let t=vp(e);t.workspaceDir||(console.error("Usage: node scripts/grade-evals.js <workspace> [--provider anthropic] [--configs with_skill,without_skill] [--overwrite]"),process.exit(1));let n=await wp(t);process.stdout.write(`${JSON.stringify(n,null,2)}
370
+ `)}o(as,"main");var bp=!1;bp&&as().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as rr}from"node:fs/promises";import ie from"node:path";import{readFile as kp,readdir as xp,stat as Sp,writeFile as cs}from"node:fs/promises";import j from"node:path";async function er(e){return JSON.parse(await kp(e,"utf8"))}o(er,"readJson");async function Ep(e){try{return await Sp(e),!0}catch{return!1}}o(Ep,"pathExists");async function tr(e){return(await xp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(tr,"listDirectories");async function Gt(e){let t=await Ep(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await tr(t)).filter(i=>j.basename(i).startsWith("eval-")),r={};for(let i of n){let s=j.join(i,"eval_metadata.json"),c=(await er(s).catch(()=>({}))).eval_id??j.basename(i);for(let d of await tr(i)){let u=j.basename(d),l=(await tr(d)).filter(f=>j.basename(f).startsWith("run-"));if(l.length!==0){r[u]??=[];for(let f of l){let m=await er(j.join(f,"grading.json")).catch(()=>null);if(!m)continue;let p=await er(j.join(f,"timing.json")).catch(()=>({}));r[u].push({eval_id:c,run_id:j.basename(f),pass_rate:m.summary?.pass_rate??0,passed:m.summary?.passed??0,failed:m.summary?.failed??0,total:m.summary?.total??0,time_seconds:p.total_duration_seconds??m.timing?.total_duration_seconds??0,tokens:p.total_tokens??m.execution_metrics?.output_chars??0,tool_calls:m.execution_metrics?.total_tool_calls??0,errors:m.execution_metrics?.errors_encountered??0,expectations:Array.isArray(m.expectations)?m.expectations:[],notes:[...m.user_notes_summary?.uncertainties??[],...m.user_notes_summary?.needs_review??[],...m.user_notes_summary?.workarounds??[]]})}}}}return r}o(Gt,"loadRunResults");function Ip(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:qt(a.map(c=>Number(c.pass_rate??0))),time_seconds:qt(a.map(c=>Number(c.time_seconds??0))),tokens:qt(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},i=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Vt(r.pass_rate.mean-i.pass_rate.mean),time_seconds:Vt(r.time_seconds.mean-i.time_seconds.mean),tokens:Vt(r.tokens.mean-i.tokens.mean)}}}o(Ip,"summarizeConfigs");function nr(e,t,n){let r=Ip(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}o(nr,"buildBenchmarkDocument");function Cp(e){let t=[`# Benchmark: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"","| Config | Pass Rate | Time (s) | Tokens |","| --- | --- | --- | --- |"];for(let[n,r]of Object.entries(e.configs))t.push(`| ${n} | ${r.pass_rate.mean} \xB1 ${r.pass_rate.stddev} | ${r.time_seconds.mean} \xB1 ${r.time_seconds.stddev} | ${r.tokens.mean} \xB1 ${r.tokens.stddev} |`);return t.push(""),t.push("## Delta"),t.push(""),t.push(`- Pass rate: ${e.delta.pass_rate}`),t.push(`- Time (s): ${e.delta.time_seconds}`),t.push(`- Tokens: ${e.delta.tokens}`),t.join(`
371
+ `)}o(Cp,"renderBenchmarkMarkdown");function Tp(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}o(Tp,"parseArgs");async function Rp(){let{iterationDir:e,skillName:t}=Tp(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Gt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=nr(e,t,n),i=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await cs(i,JSON.stringify(r,null,2)),await cs(s,`${Cp(r)}
372
+ `),console.log(`Wrote ${i}`),console.log(`Wrote ${s}`)}o(Rp,"main");var _p=!1;_p&&Rp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Yt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(Yt,"normalizeStringArray");function Ap(e){let t={};for(let[n,r]of Object.entries(e)){let i=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&i.set(d,(i.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(i.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}o(Ap,"summarizeFailureClusters");function Pp(e,t,n){let r=je(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Yt(r.key_findings),variance_hotspots:Yt(r.variance_hotspots),suggested_actions:Yt(r.suggested_actions),watchouts:Yt(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}o(Pp,"normalizeAnalysisResult");function Mp(e){return`${e.agentInstructions.trim()}
298
373
 
299
374
  Return JSON with this shape:
300
375
  {
@@ -312,12 +387,12 @@ ${L(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.config
312
387
 
313
388
  ## Failure Clusters
314
389
  ${L(JSON.stringify(e.failureClusters,null,2),8e3)}
315
- `}o(Pp,"buildAnalysisPrompt");async function Mp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:ie.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Mp,"defaultRunAnalyst");function Op(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,i]of n){t.push(`## ${i}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
390
+ `}o(Mp,"buildAnalysisPrompt");async function Op(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:ie.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Op,"defaultRunAnalyst");function Np(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,i]of n){t.push(`## ${i}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
316
391
  `)}
317
- `}o(Op,"renderAnalysisMarkdown");async function Np(e,t=Mp){let n=ie.resolve(e.workspaceDir),r=ie.resolve(e.benchmarkPath??ie.join(n,"benchmark.json")),i=await Y(r,null);if(!i){let p=await Gt(n);if(Object.keys(p).length===0)throw new Error(`No benchmark data found in ${n}`);i=nr(n,e.skillName??ie.basename(n),p),await rr(r,`${JSON.stringify(i,null,2)}
318
- `,"utf8")}let s=await Gt(n),a=_p(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=Pp({agentInstructions:c,benchmark:i,failureClusters:a}),u=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:i}),l=Ap(u,i,a),f=ie.resolve(e.outputPath??ie.join(n,"analysis.json")),m=ie.resolve(e.markdownPath??ie.join(n,"analysis.md"));return await rr(f,`${JSON.stringify(l,null,2)}
319
- `,"utf8"),await rr(m,Op(l),"utf8"),{analysis:l,prompt:d,rawResponse:u,analysisJsonPath:f,analysisMdPath:m}}o(Np,"analyzeBenchmark");function $p(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}o($p,"parseArgs");async function cs(e=process.argv){let t=$p(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 Np(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
320
- `)}o(cs,"main");var Dp=!1;Dp&&cs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Lp,readFile as ds,writeFile as us}from"node:fs/promises";import O from"node:path";async function ir(e){return(await Lp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(ir,"listDirectories");function or(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(or,"normalizeStringArray");function Fp(e){let t=je(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:or(t.strengths_a),strengths_b:or(t.strengths_b),risks:or(t.risks)}}o(Fp,"normalizeComparisonResult");async function jp(e,t,n,r){let i=(await ir(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await ir(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=i[r],c=s[r];if(!a||!c)return null;let d=await Y(O.join(e,"eval_metadata.json"),{}),u=await ds(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),l=await ds(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:u},runB:{runDir:c,runId:O.basename(c),configName:n,output:l}}}o(jp,"loadComparisonPair");function Kp(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
392
+ `}o(Np,"renderAnalysisMarkdown");async function $p(e,t=Op){let n=ie.resolve(e.workspaceDir),r=ie.resolve(e.benchmarkPath??ie.join(n,"benchmark.json")),i=await Y(r,null);if(!i){let p=await Gt(n);if(Object.keys(p).length===0)throw new Error(`No benchmark data found in ${n}`);i=nr(n,e.skillName??ie.basename(n),p),await rr(r,`${JSON.stringify(i,null,2)}
393
+ `,"utf8")}let s=await Gt(n),a=Ap(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=Mp({agentInstructions:c,benchmark:i,failureClusters:a}),u=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:i}),l=Pp(u,i,a),f=ie.resolve(e.outputPath??ie.join(n,"analysis.json")),m=ie.resolve(e.markdownPath??ie.join(n,"analysis.md"));return await rr(f,`${JSON.stringify(l,null,2)}
394
+ `,"utf8"),await rr(m,Np(l),"utf8"),{analysis:l,prompt:d,rawResponse:u,analysisJsonPath:f,analysisMdPath:m}}o($p,"analyzeBenchmark");function Dp(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}o(Dp,"parseArgs");async function ds(e=process.argv){let t=Dp(e);t.workspaceDir||(console.error("Usage: node scripts/analyze-benchmark.js <workspace> [--benchmark benchmark.json] [--output analysis.json] [--markdown analysis.md]"),process.exit(1));let n=await $p(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
395
+ `)}o(ds,"main");var Lp=!1;Lp&&ds().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Fp,readFile as us,writeFile as ls}from"node:fs/promises";import O from"node:path";async function ir(e){return(await Fp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}o(ir,"listDirectories");function or(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}o(or,"normalizeStringArray");function jp(e){let t=je(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:or(t.strengths_a),strengths_b:or(t.strengths_b),risks:or(t.risks)}}o(jp,"normalizeComparisonResult");async function Kp(e,t,n,r){let i=(await ir(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await ir(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=i[r],c=s[r];if(!a||!c)return null;let d=await Y(O.join(e,"eval_metadata.json"),{}),u=await us(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),l=await us(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:u},runB:{runDir:c,runId:O.basename(c),configName:n,output:l}}}o(Kp,"loadComparisonPair");function Bp(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
321
396
 
322
397
  Return JSON with this shape:
323
398
  {
@@ -345,15 +420,15 @@ ${L(t.A.output,12e3)}
345
420
 
346
421
  ## Candidate B
347
422
  ${L(t.B.output,12e3)}
348
- `}o(Kp,"buildComparisonPrompt");async function Bp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Bp,"defaultRunComparator");function Xp(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}o(Xp,"mapWinnerToConfig");function Up(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(`
423
+ `}o(Bp,"buildComparisonPrompt");async function Xp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}o(Xp,"defaultRunComparator");function Up(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}o(Up,"mapWinnerToConfig");function Wp(e){let t=[`# Blind Comparison: ${e.config_a} vs ${e.config_b}`,"",`Generated: ${e.generated_at}`,"",`- ${e.config_a} wins: ${e.summary.config_a_wins}`,`- ${e.config_b} wins: ${e.summary.config_b_wins}`,`- ties: ${e.summary.ties}`,`- inconclusive: ${e.summary.inconclusive}`,""];for(let n of e.comparisons)t.push(`## Eval ${n.eval_id??n.eval_name??n.index}`),t.push(""),t.push(`- Winner: ${n.winner_config}`),t.push(`- Confidence: ${n.confidence}`),t.push(`- Rationale: ${n.rationale||"n/a"}`),t.push("");return`${t.join(`
349
424
  `)}
350
- `}o(Up,"renderComparisonMarkdown");async function Wp(e,t=Bp){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",i=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await ir(n))if(O.basename(f).startsWith("eval-"))for(let m=0;m<s;m+=1){let p=await jp(f,r,i,m);if(!p)break;let g=c.length%2===0,v=Kp({agentInstructions:a,evalMetadata:p.evalMetadata,runA:p.runA,runB:p.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:m,configA:r,configB:i}),y=Fp(w),h=Xp(y.winner,g,r,i);c.push({index:c.length+1,eval_id:p.evalMetadata.eval_id??null,eval_name:p.evalMetadata.eval_name??null,run_a:O.relative(n,p.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,p.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:i}:{A:i,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${i} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:i,summary:{total_pairs:c.length,config_a_wins:c.filter(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===i).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},u=O.resolve(e.outputPath??O.join(n,"comparison.json")),l=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await us(u,`${JSON.stringify(d,null,2)}
351
- `,"utf8"),await us(l,Up(d),"utf8"),{document:d,outputPath:u,markdownPath:l}}o(Wp,"compareWorkspace");function Hp(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}o(Hp,"parseArgs");async function ls(e=process.argv){let t=Hp(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 Wp(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
352
- `)}o(ls,"main");var zp=!1;zp&&ls().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as qp,writeFile as Vp}from"node:fs/promises";import{createHash as Gp}from"node:crypto";import sr from"node:path";import{zipSync as Yp,strToU8 as Jp}from"fflate";var Qp=".kodax-package.json";function Zp(e){return e instanceof Uint8Array?e:new Uint8Array(e)}o(Zp,"toUint8Array");function em(e){return Gp("sha256").update(e).digest("hex")}o(em,"sha256");function tm(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}o(tm,"createPackageManifest");async function nm(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
425
+ `}o(Wp,"renderComparisonMarkdown");async function Hp(e,t=Xp){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",i=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await ir(n))if(O.basename(f).startsWith("eval-"))for(let m=0;m<s;m+=1){let p=await Kp(f,r,i,m);if(!p)break;let g=c.length%2===0,v=Bp({agentInstructions:a,evalMetadata:p.evalMetadata,runA:p.runA,runB:p.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:m,configA:r,configB:i}),y=jp(w),h=Up(y.winner,g,r,i);c.push({index:c.length+1,eval_id:p.evalMetadata.eval_id??null,eval_name:p.evalMetadata.eval_name??null,run_a:O.relative(n,p.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,p.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:i}:{A:i,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${i} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:i,summary:{total_pairs:c.length,config_a_wins:c.filter(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===i).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},u=O.resolve(e.outputPath??O.join(n,"comparison.json")),l=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await ls(u,`${JSON.stringify(d,null,2)}
426
+ `,"utf8"),await ls(l,Wp(d),"utf8"),{document:d,outputPath:u,markdownPath:l}}o(Hp,"compareWorkspace");function zp(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}o(zp,"parseArgs");async function fs(e=process.argv){let t=zp(e);t.workspaceDir||(console.error("Usage: node scripts/compare-runs.js <workspace> [--config-a with_skill] [--config-b without_skill] [--output comparison.json]"),process.exit(1));let n=await Hp(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
427
+ `)}o(fs,"main");var qp=!1;qp&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Vp,writeFile as Gp}from"node:fs/promises";import{createHash as Yp}from"node:crypto";import sr from"node:path";import{zipSync as Jp,strToU8 as Qp}from"fflate";var Zp=".kodax-package.json";function em(e){return e instanceof Uint8Array?e:new Uint8Array(e)}o(em,"toUint8Array");function tm(e){return Yp("sha256").update(e).digest("hex")}o(tm,"sha256");function nm(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}o(nm,"createPackageManifest");async function rm(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
353
428
  - ${n.errors.join(`
354
- - `)}`);let r=await dt(e),i=await Gn(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let u=Zp(await qp(d.absolutePath));s.push({...d,bytes:u,sha256:em(u)})}let a=tm(r,s,t),c={[Qp]:Jp(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:Yp(c,{level:6})}}o(nm,"buildSkillPackage");async function rm(e,t,n={}){let r=await nm(e,n);return await Vp(t,r.bytes),{...r,outputPath:sr.resolve(t)}}o(rm,"writeSkillPackage");function om(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}o(om,"parseArgs");async function fs(e=process.argv){let t=om(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await dt(t.skillDir),r=t.output??sr.join(sr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),i=await rm(t.skillDir,r);console.log(`Wrote ${i.outputPath}`)}o(fs,"main");var im=!1;im&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as sm,mkdir as ar,readFile as hs,rm as gs,stat as am,writeFile as cm}from"node:fs/promises";import J from"node:path";import{strFromU8 as ps,unzipSync as dm}from"fflate";var ms=".kodax-package.json";function um(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}o(um,"normalizeArchivePath");function lm(e){let t=um(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}o(lm,"assertSafeArchivePath");function fm(e){return/\.(skill|zip)$/i.test(e)}o(fm,"isZipLike");function pm(e){let t=dm(e),n=Object.entries(t).map(([u,l])=>({relativePath:lm(u),bytes:l})),r=n.find(u=>u.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let i=zt(ps(r.bytes)),s=typeof i.frontmatter.name=="string"?i.frontmatter.name.trim():"",a=typeof i.frontmatter.description=="string"?i.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(u=>u.relativePath===ms),d=c?JSON.parse(ps(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(u=>u.relativePath!==ms)}}o(pm,"readSkillPackageBuffer");async function mm(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await gs(e,{recursive:!0,force:!0})}await ar(e,{recursive:!0})}o(mm,"ensureInstallTarget");async function hm(e,t={}){let n=J.resolve(t.skillsDir??lt()),r=pm(await hs(e)),i=J.join(n,r.skillName);await mm(i,t.force===!0);for(let s of r.entries){let a=J.join(i,s.relativePath);await ar(J.dirname(a),{recursive:!0}),await cm(a,s.bytes)}return{skillName:r.skillName,installedTo:i,source:J.resolve(e),manifest:r.manifest}}o(hm,"installSkillArchive");async function gm(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
429
+ - `)}`);let r=await dt(e),i=await Gn(e),s=[];for(let d of i){if(d.relativePath.endsWith(".skill"))continue;let u=em(await Vp(d.absolutePath));s.push({...d,bytes:u,sha256:tm(u)})}let a=nm(r,s,t),c={[Zp]:Qp(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:Jp(c,{level:6})}}o(rm,"buildSkillPackage");async function om(e,t,n={}){let r=await rm(e,n);return await Gp(t,r.bytes),{...r,outputPath:sr.resolve(t)}}o(om,"writeSkillPackage");function im(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}o(im,"parseArgs");async function ps(e=process.argv){let t=im(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await dt(t.skillDir),r=t.output??sr.join(sr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),i=await om(t.skillDir,r);console.log(`Wrote ${i.outputPath}`)}o(ps,"main");var sm=!1;sm&&ps().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as am,mkdir as ar,readFile as gs,rm as ys,stat as cm,writeFile as dm}from"node:fs/promises";import J from"node:path";import{strFromU8 as ms,unzipSync as um}from"fflate";var hs=".kodax-package.json";function lm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}o(lm,"normalizeArchivePath");function fm(e){let t=lm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}o(fm,"assertSafeArchivePath");function pm(e){return/\.(skill|zip)$/i.test(e)}o(pm,"isZipLike");function mm(e){let t=um(e),n=Object.entries(t).map(([u,l])=>({relativePath:fm(u),bytes:l})),r=n.find(u=>u.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let i=zt(ms(r.bytes)),s=typeof i.frontmatter.name=="string"?i.frontmatter.name.trim():"",a=typeof i.frontmatter.description=="string"?i.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(u=>u.relativePath===hs),d=c?JSON.parse(ms(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(u=>u.relativePath!==hs)}}o(mm,"readSkillPackageBuffer");async function hm(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await ys(e,{recursive:!0,force:!0})}await ar(e,{recursive:!0})}o(hm,"ensureInstallTarget");async function gm(e,t={}){let n=J.resolve(t.skillsDir??lt()),r=mm(await gs(e)),i=J.join(n,r.skillName);await hm(i,t.force===!0);for(let s of r.entries){let a=J.join(i,s.relativePath);await ar(J.dirname(a),{recursive:!0}),await dm(a,s.bytes)}return{skillName:r.skillName,installedTo:i,source:J.resolve(e),manifest:r.manifest}}o(gm,"installSkillArchive");async function ym(e,t={}){let n=await ft(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
355
430
  - ${n.errors.join(`
356
- - `)}`);let r=J.join(e,"SKILL.md"),i=zt(await hs(r,"utf8")),s=J.resolve(t.skillsDir??lt()),a=J.join(s,i.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await gs(a,{recursive:!0,force:!0})}return await ar(s,{recursive:!0}),await sm(e,a,{recursive:!0}),{skillName:i.frontmatter.name,installedTo:a,source:J.resolve(e),manifest:null}}o(gm,"installSkillDirectory");async function ym(e,t={}){let n=J.resolve(e),r=await am(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return gm(n,t);if(r.isFile()&&fm(n))return hm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}o(ym,"installSkill");function wm(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}o(wm,"parseArgs");async function ys(e=process.argv){let t=wm(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 ym(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}o(ys,"main");var vm=!1;vm&&ys().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var eM=1440*60*1e3;var aM=5*6e4;var GM=new Intl.Segmenter("zh-CN",{granularity:"word"});var QO=String.raw`const TOOL_NAME = 'echo_tool';
431
+ - `)}`);let r=J.join(e,"SKILL.md"),i=zt(await gs(r,"utf8")),s=J.resolve(t.skillsDir??lt()),a=J.join(s,i.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await ys(a,{recursive:!0,force:!0})}return await ar(s,{recursive:!0}),await am(e,a,{recursive:!0}),{skillName:i.frontmatter.name,installedTo:a,source:J.resolve(e),manifest:null}}o(ym,"installSkillDirectory");async function wm(e,t={}){let n=J.resolve(e),r=await cm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return ym(n,t);if(r.isFile()&&pm(n))return gm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}o(wm,"installSkill");function vm(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}o(vm,"parseArgs");async function ws(e=process.argv){let t=vm(e);t.input||(console.error("Usage: node scripts/install-skill.js <skill-dir-or-archive> [--dest <skills-dir>] [--force]"),process.exit(1));let n=await wm(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}o(ws,"main");var bm=!1;bm&&ws().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var rM=1440*60*1e3;var uM=5*6e4;var QM=new Intl.Segmenter("zh-CN",{granularity:"word"});var tN=String.raw`const TOOL_NAME = 'echo_tool';
357
432
  const RESOURCE_URI = 'memory://guide';
358
433
  const PROMPT_NAME = 'draft_prompt';
359
434
  let buffer = '';
@@ -533,14 +608,14 @@ process.stdin.on('data', (chunk) => {
533
608
 
534
609
  process.on('SIGTERM', () => process.exit(0));
535
610
  process.on('SIGINT', () => process.exit(0));
536
- `;var ks=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),Bm=0,Xm=0,xs=o(e=>{let t=e==="label"?++Bm:++Xm,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function Um(e,t,n){let r=xs("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}o(Um,"appendLabel");async function Wm(e,t,n){let r=xs("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}o(Wm,"appendArtifact");function Hm(e){let t=[],n=new Map,r=[],i=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),i=a;continue}i?i.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}o(Hm,"buildLineageTree");var zm=Object.freeze({name:"lineage",entryTypes:ks,operators:Object.freeze({label:o((async(e,...t)=>{let[n,r]=t;return Um(e,n,r)}),"label"),attachArtifact:o((async(e,...t)=>{let[n,r]=t;return Wm(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:o(e=>Hm(e),"buildLineageTree")})});var th=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=th,Jt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
537
-
538
- `;var g$=Jt.trimEnd();var y$=16*1024;var sh={enabled:!1,maxAge:20,protectedTools:Array.from(dr)};import EL from"typescript";var KF=new Intl.Segmenter("en",{granularity:"grapheme"});var dK=4*1024;var fK=64*1024;var ur=".conversation-cache.",EK=`${ur}json`,IK=1024*1024,CK=1024*1024,TK=1024*1024,RK=4*1024*1024,_K=128*1024;var Ie=class extends Error{static{o(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function _s(e){let t=e.lastIndexOf(ur);if(t<=0)return;let n=e.slice(t+ur.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}o(_s,"cacheArtifactSessionId");async function As(e){let t=pt.dirname(e),n=pt.basename(e,pt.extname(e)),r;try{r=await Zt.readdir(t)}catch(i){if(i.code==="ENOENT")return;throw i}await Promise.all(r.filter(i=>_s(i)===n).map(i=>Zt.rm(pt.join(t,i),{force:!0})))}o(As,"removeConversationPageCache");async function lr(e){let t;try{t=await Zt.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&_s(n.name)!==void 0).map(n=>Zt.rm(pt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}o(lr,"removeConversationPageCachesInDirectory");var Ns=3,_h=300*1e3,Ps=65536,fr=o(e=>P.join(e,".layout.json"),"layoutMarkerPath"),mr=o(e=>P.join(e,".migration-lock"),"lockDirPath"),$s=o(e=>P.join(mr(e),"owner.json"),"ownerPath"),pr=o(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),hr=o(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function gr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(gr,"isSessionFile");function Ds(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}o(Ds,"sidecarId");async function Ah(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe(Ps),{bytesRead:r}=await t.read(n,0,Ps,0);if(r===0)return null;let i=n.toString("utf8",0,r),s=i.indexOf(`
539
- `),a=(s>=0?i.slice(0,s):i).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}o(Ah,"readMeta");async function Ph(e){let t=await Ah(e);return t?yo({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}o(Ph,"destKeyFor");async function Mh(e){let t=[],n=o(async(r,i)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(gr(a.name)||i&&Ds(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(hr(e),!0),t}o(Mh,"collectFlatSources");async function Oh(e){let t=await Mh(e),n=t.filter(s=>gr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),i=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await Ph(s);i.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let u=P.join(P.dirname(s),`${a}${d}`);Os.existsSync(u)&&i.push({from:u,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Ds(P.basename(s));a===null||r.has(a)||i.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return i}o(Oh,"planMigration");async function Nh(e){try{let t=JSON.parse(await R.readFile(fr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===Ns}catch{return!1}}o(Nh,"isMigrated");async function Ms(e){await lr(e),await lr(hr(e))}o(Ms,"removeLegacyConversationCaches");async function $h(e){try{let t=JSON.parse(await R.readFile($s(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>_h}catch{return!0}}o($h,"lockIsStale");async function Dh(e){let t=mr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile($s(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 $h(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}o(Dh,"acquireLock");async function Lh(e){await R.rm(mr(e),{recursive:!0,force:!0}).catch(()=>{})}o(Lh,"releaseLock");async function Fh(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}o(Fh,"assertNoActiveSessionWriters");async function jh(e){let t=new Set;try{let n=await R.readFile(pr(e),"utf8");for(let r of n.split(`
540
- `))if(r.trim())try{let i=JSON.parse(r);i.done&&typeof i.from=="string"&&t.add(i.from)}catch{}}catch{}return t}o(jh,"readJournalDone");async function Kh(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),Os.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}o(Kh,"executeMove");async function Bh(e){await R.mkdir(e,{recursive:!0});let t=`${fr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:Ns,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
541
- `,"utf8"),await R.rename(t,fr(e))}o(Bh,"writeMarker");async function Xh(e){let t=hr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}o(Xh,"retireSessionsArchive");async function Uh(e){if(!await Dh(e))return{moved:0,planned:0};try{await Fh(e),await Ms(e);let t=await Oh(e),n=await jh(e),r=await R.open(pr(e),"a"),i=0;try{for(let s of t){if(gr(P.basename(s.from)))try{await As(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await Kh(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
542
- `),i+=1)}}finally{await r.close()}return await Xh(e),await Ms(e),await Bh(e),await R.rm(pr(e),{force:!0}).catch(()=>{}),{moved:i,planned:t.length}}finally{await Lh(e)}}o(Uh,"runMigration");async function Ls(e){try{if(await Nh(e))return;await Uh(e)}catch(t){if(t instanceof Ie)throw t}}o(Ls,"ensureLayoutMigrated");import{jsx as Ct,jsxs as Ye}from"react/jsx-runtime";import{useMemo as Lw,useRef as Fw,useState as to}from"react";import{jsx as Ec}from"react/jsx-runtime";import{createContext as Ew,useContext as Jr,useEffect as Ge,useMemo as Sc,useState as Iw,useCallback as Ic,useRef as vn}from"react";import{Stream as ew}from"node:stream";import{openSync as tw,writeSync as fc}from"node:fs";import{performance as nw}from"node:perf_hooks";import{tmpdir as rw}from"node:os";import{join as ow}from"node:path";import yr,{forwardRef as zh,useContext as qh}from"react";import{createContext as Wh}from"react";var Be=Wh({isScreenReaderEnabled:!1});import{createContext as Hh}from"react";var en=Hh(void 0);var Fs=zh(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":i,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=qh(Be),u=n?yr.createElement("ink-text",null,n):void 0;if(d&&r)return null;let l=yr.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:i,state:s}},d&&u?u:e);return t?yr.createElement(en.Provider,{value:t},l):l});Fs.displayName="Box";var q=Fs;import Jh,{useContext as js}from"react";import Xe from"chalk";import ge from"chalk";var Vh=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Gh=/^ansi256\(\s?(\d+)\s?\)$/;function Yh(e){return e in ge}o(Yh,"isNamedColor");function G(e,t,n){if(!t)return e;if(Yh(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let i=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[i]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=Gh.exec(t);if(!r)return e;let i=Number(r[1]);return n==="foreground"?ge.ansi256(i)(e):ge.bgAnsi256(i)(e)}if(t.startsWith("rgb")){let r=Vh.exec(t);if(!r)return e;let i=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(i,s,a)(e):ge.bgRgb(i,s,a)(e)}return e}o(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:i=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:u,"aria-label":l,"aria-hidden":f=!1,internal_cursorAnchor:m=!1}){let{isScreenReaderEnabled:p}=js(Be),g=js(en),v=p&&l?l:u;if(v==null)return null;let w=o(y=>{let h=y;n&&(h=Xe.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Xe.bold(h)),i&&(h=Xe.italic(h)),s&&(h=Xe.underline(h)),a&&(h=Xe.strikethrough(h)),c&&(h=Xe.inverse(h)),h},"transform");return p&&f?null:Jh.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...m?{internal_cursorAnchor:!0}:{}},p&&l?l:u)}o(K,"Text");import oB,{useLayoutEffect as iB,useMemo as sB,useState as aB}from"react";import Pe from"node:process";import dc from"react";import{throttle as $y}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Dy from"auto-bind";import{onExit as Ly}from"signal-exit";import Fy from"patch-console";import{LegacyRoot as jy,ConcurrentRoot as Ky}from"react-reconciler/constants.js";import By from"yoga-layout";import Xy from"wrap-ansi";import Uy from"terminal-size";import Qh from"node:process";var tn=o(()=>Qh.env.DEV==="true","isDev");import Cg from"react-reconciler";import{DefaultEventPriority as Tg,NoEventPriority as aa}from"react-reconciler/constants.js";import*as ye from"scheduler";import ra from"yoga-layout";import{createContext as Rg}from"react";import pg from"yoga-layout";import Zh from"widest-line";var Ks=new Map,eg=o(e=>{if(e.length===0)return{width:0,height:0};let t=Ks.get(e);if(t)return t;let n=Zh(e),r=e.split(`
543
- `).length,i={width:n,height:r};return Ks.set(e,i),i},"measureText"),wr=eg;import tg from"wrap-ansi";import ng from"cli-truncate";var Bs={},rg=o((e,t,n)=>{let r=e+String(t)+String(n),i=Bs[r];if(i)return i;let s=e;if(n==="wrap"&&(s=tg(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=ng(e,t,{position:a})}return Bs[r]=s,s},"wrapText"),nn=rg;var og=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),ig=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),sg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Ws=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),ag=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Hs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Xs=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!og(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!ig(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!sg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Us=o((e,t,n)=>{for(let r=t;r<e.length;r++){let i=e[r];if(n&&i==="\x07"||i==="\x9C")return r+1;if(i==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),cg=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Ws(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!ag(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),dg=o(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),ug=o(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Hs(t))return!0;return!1},"hasAnsiControlCharacters"),Ue=o((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),zs=o(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let i=e[r];if(i===void 0)break;if(i==="\x1B"){let a=e[r+1];if(a===void 0)return Ue(t,e,n,r);if(a==="["){let u=Xs(e,r+2);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,u.endIndex),parameterString:u.parameterString,intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}let c=dg(a);if(c!==void 0){let u=Us(e,r+2,c.allowBellTerminator);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,u)}),r=u,n=r;continue}let d=cg(e,r+1);if(d===void 0){if(Ws(a))return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(i==="\x9B"){let a=Xs(e,r+1);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=ug(i);if(s!==void 0){let a=Us(e,r+1,s.allowBellTerminator);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(i==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:i}),r++,n=r;continue}if(Hs(i)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:i}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var lg=/^[\d:;]*$/,fg=o(e=>{if(!vr(e))return e;let t="";for(let n of zs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&lg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),qs=fg;var Vs=o(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let i="";r.nodeName==="#text"?i=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=Vs(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return qs(t)},"squashTextNodes"),mt=Vs;var rn=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:pg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(mg.bind(null,t)),t},"createNode"),on=o((e,t)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=o((e,t,n)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),ht=o((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=o((e,t)=>{e.style=t},"setStyle"),Gs=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return gt(t,e),t},"createTextNode"),mg=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:mt(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=nn(n,t,i);return wr(s)},"measureTextNode"),Ys=o(e=>{if(e?.parentNode)return e.yogaNode??Ys(e.parentNode)},"findClosestYogaNode"),sn=o(e=>{Ys(e)?.markDirty()},"markNodeAsDirty"),gt=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var gg=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),yg=o((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),wg=o((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),vg=o((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),bg=o((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),kg=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),xg=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),Sg=o((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Eg=o((e,t={})=>{gg(e,t),yg(e,t),wg(e,t),vg(e,t),bg(e,t),kg(e,t),xg(e,t),Sg(e,t)},"styles"),Sr=Eg;if(tn())try{await Promise.resolve().then(()=>(na(),Ig))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
611
+ `;var xs=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),Xm=0,Um=0,Ss=o(e=>{let t=e==="label"?++Xm:++Um,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function Wm(e,t,n){let r=Ss("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}o(Wm,"appendLabel");async function Hm(e,t,n){let r=Ss("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}o(Hm,"appendArtifact");function zm(e){let t=[],n=new Map,r=[],i=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),i=a;continue}i?i.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}o(zm,"buildLineageTree");var qm=Object.freeze({name:"lineage",entryTypes:xs,operators:Object.freeze({label:o((async(e,...t)=>{let[n,r]=t;return Wm(e,n,r)}),"label"),attachArtifact:o((async(e,...t)=>{let[n,r]=t;return Hm(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:o(e=>zm(e),"buildLineageTree")})});var nh=new Set(["skill","ask_user_question","exit_plan_mode","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output","tool_search","get_goal","create_goal","update_goal","todo_create","todo_update","todo_list","todo_get","worktree_create","worktree_remove","undo","mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt","repo_overview","changed_scope","changed_diff","changed_diff_bundle","module_context","symbol_context","process_context","impact_estimate","relationship_scan","cyclic_dependencies","semantic_lookup"]),dr=nh,Jt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
612
+
613
+ `;var v$=Jt.trimEnd();var b$=16*1024;var ah={enabled:!1,maxAge:20,protectedTools:Array.from(dr)};import TL from"typescript";var UF=new Intl.Segmenter("en",{granularity:"grapheme"});var fK=4*1024;var hK=64*1024;var ur=".conversation-cache.",TK=`${ur}json`,RK=1024*1024,_K=1024*1024,AK=1024*1024,PK=4*1024*1024,MK=128*1024;var Ie=class extends Error{static{o(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function As(e){let t=e.lastIndexOf(ur);if(t<=0)return;let n=e.slice(t+ur.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}o(As,"cacheArtifactSessionId");async function Ps(e){let t=pt.dirname(e),n=pt.basename(e,pt.extname(e)),r;try{r=await Zt.readdir(t)}catch(i){if(i.code==="ENOENT")return;throw i}await Promise.all(r.filter(i=>As(i)===n).map(i=>Zt.rm(pt.join(t,i),{force:!0})))}o(Ps,"removeConversationPageCache");async function lr(e){let t;try{t=await Zt.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&As(n.name)!==void 0).map(n=>Zt.rm(pt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}o(lr,"removeConversationPageCachesInDirectory");var $s=3,Ah=300*1e3,Ms=65536,fr=o(e=>P.join(e,".layout.json"),"layoutMarkerPath"),mr=o(e=>P.join(e,".migration-lock"),"lockDirPath"),Ds=o(e=>P.join(mr(e),"owner.json"),"ownerPath"),pr=o(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),hr=o(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function gr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(gr,"isSessionFile");function Ls(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}o(Ls,"sidecarId");async function Ph(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe(Ms),{bytesRead:r}=await t.read(n,0,Ms,0);if(r===0)return null;let i=n.toString("utf8",0,r),s=i.indexOf(`
614
+ `),a=(s>=0?i.slice(0,s):i).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}o(Ph,"readMeta");async function Mh(e){let t=await Ph(e);return t?yo({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}o(Mh,"destKeyFor");async function Oh(e){let t=[],n=o(async(r,i)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(gr(a.name)||i&&Ls(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(hr(e),!0),t}o(Oh,"collectFlatSources");async function Nh(e){let t=await Oh(e),n=t.filter(s=>gr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),i=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await Mh(s);i.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let u=P.join(P.dirname(s),`${a}${d}`);Ns.existsSync(u)&&i.push({from:u,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Ls(P.basename(s));a===null||r.has(a)||i.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return i}o(Nh,"planMigration");async function $h(e){try{let t=JSON.parse(await R.readFile(fr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===$s}catch{return!1}}o($h,"isMigrated");async function Os(e){await lr(e),await lr(hr(e))}o(Os,"removeLegacyConversationCaches");async function Dh(e){try{let t=JSON.parse(await R.readFile(Ds(e),"utf8"));if(typeof t.pid=="number"&&t.pid!==process.pid)try{process.kill(t.pid,0)}catch(n){if(n.code==="ESRCH")return!0}return typeof t.heartbeatAt=="number"&&Date.now()-t.heartbeatAt>Ah}catch{return!0}}o(Dh,"lockIsStale");async function Lh(e){let t=mr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Ds(e),JSON.stringify({pid:process.pid,startTime:Date.now(),heartbeatAt:Date.now()})),!0}catch(r){if(r.code!=="EEXIST")return!1;if(n===0&&await Dh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}o(Lh,"acquireLock");async function Fh(e){await R.rm(mr(e),{recursive:!0,force:!0}).catch(()=>{})}o(Fh,"releaseLock");async function jh(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}o(jh,"assertNoActiveSessionWriters");async function Kh(e){let t=new Set;try{let n=await R.readFile(pr(e),"utf8");for(let r of n.split(`
615
+ `))if(r.trim())try{let i=JSON.parse(r);i.done&&typeof i.from=="string"&&t.add(i.from)}catch{}}catch{}return t}o(Kh,"readJournalDone");async function Bh(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),Ns.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}o(Bh,"executeMove");async function Xh(e){await R.mkdir(e,{recursive:!0});let t=`${fr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:$s,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
616
+ `,"utf8"),await R.rename(t,fr(e))}o(Xh,"writeMarker");async function Uh(e){let t=hr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}o(Uh,"retireSessionsArchive");async function Wh(e){if(!await Lh(e))return{moved:0,planned:0};try{await jh(e),await Os(e);let t=await Nh(e),n=await Kh(e),r=await R.open(pr(e),"a"),i=0;try{for(let s of t){if(gr(P.basename(s.from)))try{await Ps(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await Bh(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
617
+ `),i+=1)}}finally{await r.close()}return await Uh(e),await Os(e),await Xh(e),await R.rm(pr(e),{force:!0}).catch(()=>{}),{moved:i,planned:t.length}}finally{await Fh(e)}}o(Wh,"runMigration");async function Fs(e){try{if(await $h(e))return;await Wh(e)}catch(t){if(t instanceof Ie)throw t}}o(Fs,"ensureLayoutMigrated");import{jsx as Ct,jsxs as Ye}from"react/jsx-runtime";import{useMemo as Fw,useRef as jw,useState as to}from"react";import{jsx as Ic}from"react/jsx-runtime";import{createContext as Iw,useContext as Jr,useEffect as Ge,useMemo as Ec,useState as Cw,useCallback as Cc,useRef as vn}from"react";import{Stream as tw}from"node:stream";import{openSync as nw,writeSync as pc}from"node:fs";import{performance as rw}from"node:perf_hooks";import{tmpdir as ow}from"node:os";import{join as iw}from"node:path";import yr,{forwardRef as qh,useContext as Vh}from"react";import{createContext as Hh}from"react";var Be=Hh({isScreenReaderEnabled:!1});import{createContext as zh}from"react";var en=zh(void 0);var js=qh(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":i,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=Vh(Be),u=n?yr.createElement("ink-text",null,n):void 0;if(d&&r)return null;let l=yr.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:i,state:s}},d&&u?u:e);return t?yr.createElement(en.Provider,{value:t},l):l});js.displayName="Box";var q=js;import Qh,{useContext as Ks}from"react";import Xe from"chalk";import ge from"chalk";var Gh=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Yh=/^ansi256\(\s?(\d+)\s?\)$/;function Jh(e){return e in ge}o(Jh,"isNamedColor");function G(e,t,n){if(!t)return e;if(Jh(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let i=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[i]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=Yh.exec(t);if(!r)return e;let i=Number(r[1]);return n==="foreground"?ge.ansi256(i)(e):ge.bgAnsi256(i)(e)}if(t.startsWith("rgb")){let r=Gh.exec(t);if(!r)return e;let i=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(i,s,a)(e):ge.bgRgb(i,s,a)(e)}return e}o(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:i=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:u,"aria-label":l,"aria-hidden":f=!1,internal_cursorAnchor:m=!1}){let{isScreenReaderEnabled:p}=Ks(Be),g=Ks(en),v=p&&l?l:u;if(v==null)return null;let w=o(y=>{let h=y;n&&(h=Xe.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Xe.bold(h)),i&&(h=Xe.italic(h)),s&&(h=Xe.underline(h)),a&&(h=Xe.strikethrough(h)),c&&(h=Xe.inverse(h)),h},"transform");return p&&f?null:Qh.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...m?{internal_cursorAnchor:!0}:{}},p&&l?l:u)}o(K,"Text");import aB,{useLayoutEffect as cB,useMemo as dB,useState as uB}from"react";import Pe from"node:process";import uc from"react";import{throttle as Dy}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Ly from"auto-bind";import{onExit as Fy}from"signal-exit";import jy from"patch-console";import{LegacyRoot as Ky,ConcurrentRoot as By}from"react-reconciler/constants.js";import Xy from"yoga-layout";import Uy from"wrap-ansi";import Wy from"terminal-size";import Zh from"node:process";var tn=o(()=>Zh.env.DEV==="true","isDev");import Tg from"react-reconciler";import{DefaultEventPriority as Rg,NoEventPriority as ca}from"react-reconciler/constants.js";import*as ye from"scheduler";import oa from"yoga-layout";import{createContext as _g}from"react";import mg from"yoga-layout";import eg from"widest-line";var Bs=new Map,tg=o(e=>{if(e.length===0)return{width:0,height:0};let t=Bs.get(e);if(t)return t;let n=eg(e),r=e.split(`
618
+ `).length,i={width:n,height:r};return Bs.set(e,i),i},"measureText"),wr=tg;import ng from"wrap-ansi";import rg from"cli-truncate";var Xs={},og=o((e,t,n)=>{let r=e+String(t)+String(n),i=Xs[r];if(i)return i;let s=e;if(n==="wrap"&&(s=ng(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=rg(e,t,{position:a})}return Xs[r]=s,s},"wrapText"),nn=og;var ig=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),sg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),ag=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Hs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),cg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),zs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Us=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!ig(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!sg(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!ag(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Ws=o((e,t,n)=>{for(let r=t;r<e.length;r++){let i=e[r];if(n&&i==="\x07"||i==="\x9C")return r+1;if(i==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),dg=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Hs(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!cg(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),ug=o(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),lg=o(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(zs(t))return!0;return!1},"hasAnsiControlCharacters"),Ue=o((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),qs=o(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let i=e[r];if(i===void 0)break;if(i==="\x1B"){let a=e[r+1];if(a===void 0)return Ue(t,e,n,r);if(a==="["){let u=Us(e,r+2);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,u.endIndex),parameterString:u.parameterString,intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}let c=ug(a);if(c!==void 0){let u=Ws(e,r+2,c.allowBellTerminator);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,u)}),r=u,n=r;continue}let d=dg(e,r+1);if(d===void 0){if(Hs(a))return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(i==="\x9B"){let a=Us(e,r+1);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=lg(i);if(s!==void 0){let a=Ws(e,r+1,s.allowBellTerminator);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(i==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:i}),r++,n=r;continue}if(zs(i)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:i}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var fg=/^[\d:;]*$/,pg=o(e=>{if(!vr(e))return e;let t="";for(let n of qs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&fg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Vs=pg;var Gs=o(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let i="";r.nodeName==="#text"?i=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=Gs(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return Vs(t)},"squashTextNodes"),mt=Gs;var rn=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:mg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(hg.bind(null,t)),t},"createNode"),on=o((e,t)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=o((e,t,n)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),ht=o((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=o((e,t)=>{e.style=t},"setStyle"),Ys=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return gt(t,e),t},"createTextNode"),hg=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:mt(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=nn(n,t,i);return wr(s)},"measureTextNode"),Js=o(e=>{if(e?.parentNode)return e.yogaNode??Js(e.parentNode)},"findClosestYogaNode"),sn=o(e=>{Js(e)?.markDirty()},"markNodeAsDirty"),gt=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var yg=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),wg=o((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),vg=o((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),bg=o((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),kg=o((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),xg=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Sg=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),Eg=o((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Ig=o((e,t={})=>{yg(e,t),wg(e,t),vg(e,t),bg(e,t),kg(e,t),xg(e,t),Sg(e,t),Eg(e,t)},"styles"),Sr=Ig;if(tn())try{await Promise.resolve().then(()=>(ra(),Cg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
544
619
  The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
545
620
  but this failed as it was not installed. Debugging with React Devtools requires it.
546
621
 
@@ -548,33 +623,33 @@ To install use this command:
548
623
 
549
624
  $ npm install --save-dev react-devtools-core
550
625
  `.trim()+`
551
- `);else throw e}var oa=o((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let i of Object.keys(e))(!t||!Object.hasOwn(t,i))&&(n[i]=void 0,r=!0);if(t)for(let i of Object.keys(t))t[i]!==e[i]&&(n[i]=t[i],r=!0);return r?n:void 0},"diff"),ia=o(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),cn=aa,Cr,sa={name:void 0,version:void 0},se=Cg({getRootHostContext:o(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:o(()=>null,"prepareForCommit"),preparePortalMount:o(()=>null,"preparePortalMount"),clearContainer:o(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:o(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let i=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=rn(i);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){xr(s,c),s.yogaNode&&Sr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){Cr=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}kr(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return Gs(e)},resetTextContent(){},hideTextInstance(e){gt(e,"")},unhideTextInstance(e,t){gt(e,t)},getPublicInstance:o(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(ra.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(ra.DISPLAY_FLEX)},appendInitialChild:on,appendChild:on,insertBefore:br,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:o(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:o(()=>null,"getInstanceFromScope"),appendChildToContainer:on,insertInContainerBefore:br,removeChildFromContainer(e,t){ht(e,t),ia(t.yogaNode)},commitUpdate(e,t,n,r){Cr&&e.internal_static&&(Cr.isStaticDirty=!0);let i=oa(n,r),s=oa(n.style,r.style);if(!(!i&&!s)){if(i)for(let[a,c]of Object.entries(i)){if(a==="style"){xr(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}kr(e,a,c)}s&&e.yogaNode&&Sr(e.yogaNode,s)}},commitTextUpdate(e,t,n){gt(e,n)},removeChild(e,t){ht(e,t),ia(t.yogaNode)},setCurrentUpdatePriority(e){cn=e},getCurrentUpdatePriority:o(()=>cn,"getCurrentUpdatePriority"),resolveUpdatePriority(){return cn!==aa?cn:Tg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Rg(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:sa.name,rendererVersion:sa.version});import Og from"widest-line";import Ng from"indent-string";import we from"yoga-layout";import dn from"yoga-layout";var _g=o(e=>e.getComputedWidth()-e.getComputedPadding(dn.EDGE_LEFT)-e.getComputedPadding(dn.EDGE_RIGHT)-e.getComputedBorder(dn.EDGE_LEFT)-e.getComputedBorder(dn.EDGE_RIGHT),"getMaxWidth"),ca=_g;import Ag from"cli-boxes";import un from"chalk";var Pg=o((e,t,n,r)=>{if(n.style.borderStyle){let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?Ag[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,u=n.style.borderLeftColor??n.style.borderColor,l=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,m=n.style.borderBottomDimColor??n.style.borderDimColor,p=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=i-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=un.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,u,"foreground")+`
626
+ `);else throw e}var ia=o((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let i of Object.keys(e))(!t||!Object.hasOwn(t,i))&&(n[i]=void 0,r=!0);if(t)for(let i of Object.keys(t))t[i]!==e[i]&&(n[i]=t[i],r=!0);return r?n:void 0},"diff"),sa=o(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),cn=ca,Cr,aa={name:void 0,version:void 0},se=Tg({getRootHostContext:o(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:o(()=>null,"prepareForCommit"),preparePortalMount:o(()=>null,"preparePortalMount"),clearContainer:o(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:o(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let i=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=rn(i);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){xr(s,c),s.yogaNode&&Sr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){Cr=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}kr(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return Ys(e)},resetTextContent(){},hideTextInstance(e){gt(e,"")},unhideTextInstance(e,t){gt(e,t)},getPublicInstance:o(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(oa.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(oa.DISPLAY_FLEX)},appendInitialChild:on,appendChild:on,insertBefore:br,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:o(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:o(()=>null,"getInstanceFromScope"),appendChildToContainer:on,insertInContainerBefore:br,removeChildFromContainer(e,t){ht(e,t),sa(t.yogaNode)},commitUpdate(e,t,n,r){Cr&&e.internal_static&&(Cr.isStaticDirty=!0);let i=ia(n,r),s=ia(n.style,r.style);if(!(!i&&!s)){if(i)for(let[a,c]of Object.entries(i)){if(a==="style"){xr(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}kr(e,a,c)}s&&e.yogaNode&&Sr(e.yogaNode,s)}},commitTextUpdate(e,t,n){gt(e,n)},removeChild(e,t){ht(e,t),sa(t.yogaNode)},setCurrentUpdatePriority(e){cn=e},getCurrentUpdatePriority:o(()=>cn,"getCurrentUpdatePriority"),resolveUpdatePriority(){return cn!==ca?cn:Rg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:_g(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:aa.name,rendererVersion:aa.version});import Ng from"widest-line";import $g from"indent-string";import we from"yoga-layout";import dn from"yoga-layout";var Ag=o(e=>e.getComputedWidth()-e.getComputedPadding(dn.EDGE_LEFT)-e.getComputedPadding(dn.EDGE_RIGHT)-e.getComputedBorder(dn.EDGE_LEFT)-e.getComputedBorder(dn.EDGE_RIGHT),"getMaxWidth"),da=Ag;import Pg from"cli-boxes";import un from"chalk";var Mg=o((e,t,n,r)=>{if(n.style.borderStyle){let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?Pg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,u=n.style.borderLeftColor??n.style.borderColor,l=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,m=n.style.borderBottomDimColor??n.style.borderDimColor,p=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=i-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=un.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,u,"foreground")+`
552
627
  `).repeat(_);p&&(W=un.dim(W));let H=(G(a.right,l,"foreground")+`
553
- `).repeat(_);g&&(H=un.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=un.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+i-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),da=Pg;var Mg=o((e,t,n,r)=>{if(!n.style.backgroundColor)return;let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,u=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,l=i-a-c,f=s-d-u;if(!(l>0&&f>0))return;let m=G(" ".repeat(l),n.style.backgroundColor,"background");for(let p=0;p<f;p++)r.write(e+a,t+d+p,m,{transformers:[]})},"renderBackground"),ua=Mg;function la(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:i,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:u,previousAppliedScrollTop:l,regionTop:f}=e,m=Math.max(0,n-r),p=Math.max(0,Math.min(Math.floor(t),m)),v=s&&n>=i?m:p,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(m,c??m))):v,y=d&&u!==void 0,h=Math.max(0,Math.floor(u??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(l!==void 0&&l!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-l})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}o(la,"computeScrollState");var $g=o((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),i=n.getComputedTop();t=`
554
- `.repeat(i)+Ng(t,r)}return t},"applyPaddingToText"),ln=o((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=mt(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
555
- `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>ln(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:i}=e.internal_accessibility;if(i){let a=Object.keys(i).filter(c=>i[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function fa(){Tr=null,Rr=null}o(fa,"resetScrollHint");function pa(){return Tr}o(pa,"getScrollHint");function ma(){return Rr}o(ma,"getScrollRepaint");var ha=o((e,t,n)=>{let{offsetX:r=0,offsetY:i=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),u=i+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:u});let l=s;if(typeof e.internal_transform=="function"&&(l=[e.internal_transform,...s]),e.nodeName==="ink-text"){let p=mt(e);if(p.length>0){let g=Og(p),v=ca(c);if(g>v){let w=e.style.textWrap??"wrap";p=nn(p,v,w)}p=$g(e,p),t.write(d,u,p,{transformers:l})}return}let f=!1,m=0;if(e.nodeName==="ink-box"){ua(d,u,e,t),da(d,u,e,t);let p=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=p==="hidden"||p==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=la({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:u+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Tr=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Rr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,m=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?u+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?u+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let p of e.childNodes)ha(p,t,{offsetX:d,offsetY:u-m,transformers:l,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),_r=ha;import Dg from"slice-ansi";import Lg from"string-width";import{styledCharsFromTokens as Fg,styledCharsToString as jg,tokenize as Kg}from"@alcalzone/ansi-tokenize";var Ar=class{static{o(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=Fg(Kg(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Lg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let i of t.split(`
628
+ `).repeat(_);g&&(H=un.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=un.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+i-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),ua=Mg;var Og=o((e,t,n,r)=>{if(!n.style.backgroundColor)return;let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,u=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,l=i-a-c,f=s-d-u;if(!(l>0&&f>0))return;let m=G(" ".repeat(l),n.style.backgroundColor,"background");for(let p=0;p<f;p++)r.write(e+a,t+d+p,m,{transformers:[]})},"renderBackground"),la=Og;function fa(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:i,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:u,previousAppliedScrollTop:l,regionTop:f}=e,m=Math.max(0,n-r),p=Math.max(0,Math.min(Math.floor(t),m)),v=s&&n>=i?m:p,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(m,c??m))):v,y=d&&u!==void 0,h=Math.max(0,Math.floor(u??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(l!==void 0&&l!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-l})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}o(fa,"computeScrollState");var Dg=o((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),i=n.getComputedTop();t=`
629
+ `.repeat(i)+$g(t,r)}return t},"applyPaddingToText"),ln=o((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=mt(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
630
+ `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>ln(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:i}=e.internal_accessibility;if(i){let a=Object.keys(i).filter(c=>i[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function pa(){Tr=null,Rr=null}o(pa,"resetScrollHint");function ma(){return Tr}o(ma,"getScrollHint");function ha(){return Rr}o(ha,"getScrollRepaint");var ga=o((e,t,n)=>{let{offsetX:r=0,offsetY:i=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),u=i+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:u});let l=s;if(typeof e.internal_transform=="function"&&(l=[e.internal_transform,...s]),e.nodeName==="ink-text"){let p=mt(e);if(p.length>0){let g=Ng(p),v=da(c);if(g>v){let w=e.style.textWrap??"wrap";p=nn(p,v,w)}p=Dg(e,p),t.write(d,u,p,{transformers:l})}return}let f=!1,m=0;if(e.nodeName==="ink-box"){la(d,u,e,t),ua(d,u,e,t);let p=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=p==="hidden"||p==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=fa({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:u+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Tr=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Rr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,m=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?u+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?u+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let p of e.childNodes)ga(p,t,{offsetX:d,offsetY:u-m,transformers:l,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),_r=ga;import Lg from"slice-ansi";import Fg from"string-width";import{styledCharsFromTokens as jg,styledCharsToString as Kg,tokenize as Bg}from"@alcalzone/ansi-tokenize";var Ar=class{static{o(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=jg(Bg(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Fg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let i of t.split(`
556
631
  `))r=Math.max(r,this.getStringWidth(i));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{o(this,"Output")}width;height;operations=[];caches=new Ar;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,i){let{transformers:s}=i;r&&this.operations.push({type:"write",x:t,y:n,text:r,transformers:s})}clip(t){this.operations.push({type:"clip",clip:t})}unclip(){this.operations.push({type:"unclip"})}getGrid(){let t=[];for(let r=0;r<this.height;r++){let i=[];for(let s=0;s<this.width;s++)i.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(i)}let n=[];for(let r of this.operations)if(r.type==="clip"&&n.push(r.clip),r.type==="unclip"&&n.pop(),r.type==="write"){let{text:i,transformers:s}=r,{x:a,y:c}=r,d=i.split(`
557
- `),u=n.at(-1);if(u){let f=typeof u?.x1=="number"&&typeof u?.x2=="number",m=typeof u?.y1=="number"&&typeof u?.y2=="number";if(f){let p=this.caches.getWidestLine(i);if(a+p<u.x1||a>u.x2)continue}if(m){let p=d.length;if(c+p<u.y1||c>u.y2)continue}if(f&&(d=d.map(p=>{let g=a<u.x1?u.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>u.x2?u.x2-a:v;return Dg(p,g,w)}),a<u.x1&&(a=u.x1)),m){let p=c<u.y1?u.y1-c:0,g=d.length,v=c+g>u.y2?u.y2-c:g;d=d.slice(p,v),c<u.y1&&(c=u.y1)}}let l=0;for(let[f,m]of d.entries()){let p=t[c+l];if(!p)continue;for(let w of s)m=w(m,f);let g=this.caches.getStyledChars(m),v=a;for(let w of g){p[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)p[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}l++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let i=r.filter(s=>s!==void 0);return jg(i).trimEnd()}).join(`
558
- `),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function ga(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}o(ga,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}o(Ce,"cellAt");function ya(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(i,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(i<0||s<0||i>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${i}, ${s}) on ${e}x${t}`);n[s*e+i]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}o(ya,"createScreenBuilder");function*fn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let i=0;i<r;i++)for(let s=0;s<n;s++){let a=Ce(e,s,i),c=Ce(t,s,i);Bg(a,c)||(yield{x:s,y:i,prev:a,next:c})}}o(fn,"diffEach");function wa(e,t,n,r){if(r===0||e.height===0)return e;let i=Math.max(0,t),s=Math.min(e.height-1,n);if(i>s)return e;let a=e.width,c=e.cells.slice(),d=s-i+1,u=o(l=>{for(let f=0;f<a;f++)c[l*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let l=i;l<=s;l++)u(l);return{...e,cells:c}}if(r>0){for(let l=i;l<=s-r;l++)for(let f=0;f<a;f++)c[l*a+f]=e.cells[(l+r)*a+f]??Q;for(let l=s-r+1;l<=s;l++)u(l)}else{let l=-r;for(let f=s;f>=i+l;f--)for(let m=0;m<a;m++)c[f*a+m]=e.cells[(f-l)*a+m]??Q;for(let f=i;f<=i+l-1;f++)u(f)}return{...e,cells:c}}o(wa,"shiftRowsRegion");function Bg(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}o(Bg,"cellsEqual");var Pr="\x1B]8;";function Xg(e){return e.endsWith("\x07")?e.slice(0,-1):e}o(Xg,"stripOsc8Terminator");function Ug(e){if(!e.startsWith(Pr))return;let t=e.slice(Pr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),i=Xg(r);return i.length>0?i:void 0}o(Ug,"parseOsc8Url");function Wg(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Pr)){let i=Ug(r.code);i!==void 0&&(n=i)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}o(Wg,"styledCharToCell");function va(e){let t=e.getGrid(),n=e.width,r=e.height,i=ya(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let u=0;u<d;u++){let l=c[u];if(!l)continue;let f=Wg(l);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||i.setCellAt(u,a,f)}}return i.build()}o(va,"outputToScreen");var Hg=o((e,t,n)=>{if(e.yogaNode){if(t){let m=ln(e,{skipStaticElements:!0}),p=m===""?0:m.split(`
632
+ `),u=n.at(-1);if(u){let f=typeof u?.x1=="number"&&typeof u?.x2=="number",m=typeof u?.y1=="number"&&typeof u?.y2=="number";if(f){let p=this.caches.getWidestLine(i);if(a+p<u.x1||a>u.x2)continue}if(m){let p=d.length;if(c+p<u.y1||c>u.y2)continue}if(f&&(d=d.map(p=>{let g=a<u.x1?u.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>u.x2?u.x2-a:v;return Lg(p,g,w)}),a<u.x1&&(a=u.x1)),m){let p=c<u.y1?u.y1-c:0,g=d.length,v=c+g>u.y2?u.y2-c:g;d=d.slice(p,v),c<u.y1&&(c=u.y1)}}let l=0;for(let[f,m]of d.entries()){let p=t[c+l];if(!p)continue;for(let w of s)m=w(m,f);let g=this.caches.getStyledChars(m),v=a;for(let w of g){p[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)p[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}l++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let i=r.filter(s=>s!==void 0);return Kg(i).trimEnd()}).join(`
633
+ `),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function ya(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}o(ya,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}o(Ce,"cellAt");function wa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(i,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(i<0||s<0||i>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${i}, ${s}) on ${e}x${t}`);n[s*e+i]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}o(wa,"createScreenBuilder");function*fn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let i=0;i<r;i++)for(let s=0;s<n;s++){let a=Ce(e,s,i),c=Ce(t,s,i);Xg(a,c)||(yield{x:s,y:i,prev:a,next:c})}}o(fn,"diffEach");function va(e,t,n,r){if(r===0||e.height===0)return e;let i=Math.max(0,t),s=Math.min(e.height-1,n);if(i>s)return e;let a=e.width,c=e.cells.slice(),d=s-i+1,u=o(l=>{for(let f=0;f<a;f++)c[l*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let l=i;l<=s;l++)u(l);return{...e,cells:c}}if(r>0){for(let l=i;l<=s-r;l++)for(let f=0;f<a;f++)c[l*a+f]=e.cells[(l+r)*a+f]??Q;for(let l=s-r+1;l<=s;l++)u(l)}else{let l=-r;for(let f=s;f>=i+l;f--)for(let m=0;m<a;m++)c[f*a+m]=e.cells[(f-l)*a+m]??Q;for(let f=i;f<=i+l-1;f++)u(f)}return{...e,cells:c}}o(va,"shiftRowsRegion");function Xg(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}o(Xg,"cellsEqual");var Pr="\x1B]8;";function Ug(e){return e.endsWith("\x07")?e.slice(0,-1):e}o(Ug,"stripOsc8Terminator");function Wg(e){if(!e.startsWith(Pr))return;let t=e.slice(Pr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),i=Ug(r);return i.length>0?i:void 0}o(Wg,"parseOsc8Url");function Hg(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Pr)){let i=Wg(r.code);i!==void 0&&(n=i)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}o(Hg,"styledCharToCell");function ba(e){let t=e.getGrid(),n=e.width,r=e.height,i=wa(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let u=0;u<d;u++){let l=c[u];if(!l)continue;let f=Hg(l);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||i.setCellAt(u,a,f)}}return i.build()}o(ba,"outputToScreen");var zg=o((e,t,n)=>{if(e.yogaNode){if(t){let m=ln(e,{skipStaticElements:!0}),p=m===""?0:m.split(`
559
634
  `).length,g="";return e.staticNode&&(g=ln(e.staticNode,{skipStaticElements:!1})),{output:m,outputHeight:p,staticOutput:g?`${g}
560
- `:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});fa(),_r(e,r,{skipStaticElements:!0});let i;e.staticNode?.yogaNode&&(i=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),_r(e.staticNode,i,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=va(r),d=n?.columns??e.yogaNode.getComputedWidth(),u=n?.rows??e.yogaNode.getComputedHeight(),l=r.cursorPosition,f={screen:c,viewport:{width:d,height:u},cursor:{x:0,y:c.height,visible:!1},scrollHint:pa(),scrollRepaint:ma(),...l?{inputCursor:{x:l.x,y:l.y}}:{}};return{output:s,outputHeight:a,staticOutput:i?`${i.get().output}
561
- `:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=Hg;function U(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}o(U,"csi");function ba(e=1){return e===0?"":U(e,"A")}o(ba,"cursorUp");function zg(e=1){return e===0?"":U(e,"B")}o(zg,"cursorDown");function qg(e=1){return e===0?"":U(e,"C")}o(qg,"cursorForward");function Vg(e=1){return e===0?"":U(e,"D")}o(Vg,"cursorBack");function ka(e){return U(e,"G")}o(ka,"cursorTo");var Gg=U("G"),xa=U("H");function Sa(e,t){let n="";return e<0?n+=Vg(-e):e>0&&(n+=qg(e)),t<0?n+=ba(-t):t>0&&(n+=zg(t)),n}o(Sa,"cursorMove");var Or=U(2,"K");function Ea(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Or,n<e-1&&(t+=ba(1));return t+=Gg,t}o(Ea,"eraseLines");var Ia=U("r"),Ca="\x1B7",Ta="\x1B8";function Ra(e,t){return U(e,t,"r")}o(Ra,"setScrollRegion");function _a(e=1){return U(e,"S")}o(_a,"scrollUp");function Aa(e=1){return U(e,"T")}o(Aa,"scrollDown");var yt=U(0,"m");function Pa(e){return`\x1B]${e.join(";")}\x07`}o(Pa,"osc");function Yg(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}o(Yg,"osc8Id");function wt(e,t){if(!e)return He;let n={id:Yg(e),...t??{}},r=Object.entries(n).map(([i,s])=>`${i}=${s}`).join(":");return Pa(["8",r,e])}o(wt,"link");var He=Pa(["8","",""]);function Nr(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",i;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==i&&(i!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=wt(d.hyperlink)),i=d.hyperlink),d.style!==r&&(r!==""&&(a+=yt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}i!==void 0&&(a+=He,i=void 0),r!==""&&(a+=yt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
562
- `)}]}o(Nr,"renderFullFrame");var Jg=Object.freeze([]),Qg=Object.freeze([]);function Te(e,t){if(e===t)return{patches:Jg,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:yt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}o(Te,"transitionStyle");function bt(e,t){let n=Te(e,t),r="";for(let i of n.patches)i.type==="stdout"&&(r+=i.content);return{str:r,current:n.current}}o(bt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:Qg,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:wt(t)}),{patches:n,current:t}}o(ae,"transitionHyperlink");function Ma(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}o(Ma,"needsWidthCompensation");var Re=class{static{o(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let i of n)this._diffMut.push(i);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},vt={type:"stdout",content:`
563
- `};function kt(e,t,n){let r=t.width===Z.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let l=t.char.length>2?i:i+1;if(c+2>=l)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let u=r===2&&Ma(t.char);return u&&c+1<i&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),u&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}o(kt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(_e,"moveCursorTo");function xt(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=vt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=bt(s,m.style);kt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let u=ae(a,void 0);for(let f of u.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=u.current;let l=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(f=>l?[[ce],{dx:-f.x,dy:0}]:[[ce,vt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);let d=ae(a,void 0);for(let u of d.patches)e.txn(()=>[[u],{dx:0,dy:0}])}}o(xt,"renderFrameSlice");function $r(e,t,n,r){let i=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=i;a<=s;a++)Zg(e,t,a)}o($r,"repaintFrameRows");function Zg(e,t,n){let r="",i;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+yt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(i,a.hyperlink);for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);i=c.current;let d=bt(r,a.style);kt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(Zg,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let i=Ce(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);xt(r,e,0,e.screen.height,n);let i=[{type:"clearTerminal",reason:t}];for(let s of r.diff)i.push(s);return i}o(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,i=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:i,prevHadScrollback:s,nextFitsViewport:a}}o(pn,"computeViewportState");function Oa(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}o(Oa,"shouldFullReset");function Na(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o(Na,"shouldSkipDiff");var mn=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let i=r.inlineBottomAnchored??!1,s=$a(t,i),a=$a(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",i);let c=Oa(s,a,Dr);if(c.reset)return ze(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return ey(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let u={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},l={...s,screen:wa(s.screen,d.top,d.bottom,d.delta)};return[u,...Da(l,a,i)]}return Da(s,a,i)}reset(){}};function Lr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Lr,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");Lr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Lr(e,r.patches)}return{style:"",hyperlink:void 0}}o(Fr,"resetStyleAndHyperlink");function ey(e,t,n){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&La(i,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&$r(i,t,c.top,c.bottom);let d=Fa(i,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(i,d.currentStyle,d.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height),ja(i,t),i.diff)}o(ey,"renderScrollRepaint");function La(e,t,n){let r=t.screen.height-n.screen.height;e.txn(i=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-i.x,dy:-r}])}o(La,"applyShrink");function Fa(e,t,n,r){let i="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:u,prev:l,next:f}=c;if(r.growing&&u>=t.screen.height||r.skipRows&&u>=r.skipRows.top&&u<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!Na(l,f,m)){if(u<r.viewportY){a=!0;break}if(_e(e,d,u),f){let p=ae(s,f.hyperlink);Lr(e,p.patches),s=p.current;let g=bt(i,f.style);kt(e,f,g.str)&&(i=g.current)}else if(l){let p=Fr(e,i,s);i=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(Fa,"diffPass");function $a(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}o($a,"clampRestingCursor");function ja(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=vt;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}o(ja,"restoreCursor");function Da(e,t,n=!1){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&La(i,e,t);let s=Fa(i,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(i,s.currentStyle,s.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height,n),ja(i,t),i.diff)}o(Da,"renderIncremental");var ty="\x1B[?25l",ny="\x1B[?25h",ry=`\x1B[2J${xa}`,oy="\x1B[?2026h",iy="\x1B[?2026l";function sy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ty;case"cursorShow":return ny;case"cursorMove":return Sa(e.x,e.y);case"cursorTo":return ka(e.col);case"eraseLine":return Or;case"clear":return Ea(e.count);case"clearTerminal":return ry;case"hyperlink":return wt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?_a(r):Aa(r);return Ca+Ra(t,n)+i+Ia+Ta}}}o(sy,"patchToBytes");function hn(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=sy(s);if(r.length!==0){if(n&&i){e.write(oy+r+iy);return}e.write(r)}}o(hn,"applyDiff");function Ka(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(Ka,"applyCellFrame");function St(e,t){return{screen:ga(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(St,"emptyFrame");import ay from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function ue(e){return"isTTY"in e&&e.isTTY===!0&&!ay}o(ue,"shouldSynchronize");var cy=new WeakMap,Ba=cy;import{EventEmitter as Ry}from"node:events";import _y from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as ic}from"react";import Ay from"cli-cursor";var dy=o(e=>e>=48&&e<=63,"isCsiParameterByte"),uy=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Ua=o(e=>e>=64&&e<=126,"isCsiFinalByte");function ly(e,t,n){let r=t+n+1,i=r;for(;i<e.length;i+=1){let s=e.codePointAt(i);if(s===void 0)return"pending";if(!(dy(s)||uy(s))&&!(s===91&&i===r))return Ua(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(ly,"parseCsiSequence");function fy(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Ua(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(fy,"parseSs3Sequence");function Xa(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return ly(e,t,n);if(r==="O")return fy(e,t,n)}o(Xa,"parseControlSequence");function py(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,i=t+1+r;return{sequence:e.slice(t,i),nextIndex:i}}o(py,"parseEscapedCodePoint");function my(e){let t=[],n=0,r=o(i=>({events:t,pending:e.slice(i)}),"pendingFrom");for(;n<e.length;){let i=e.indexOf("\x1B",n);if(i===-1)return t.push(e.slice(n)),{events:t,pending:""};if(i>n&&t.push(e.slice(n,i)),i===e.length-1)return r(i);let s=Xa(e,i,1);if(s==="pending")return r(i);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[i+1]==="\x1B"){if(i+2>=e.length)return r(i);let d=Xa(e,i,2);if(d==="pending")return r(i);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=py(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(my,"parseKeypresses");function gn(){let e="";return{push(t){let n=my(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}o(gn,"createInputParser");import{createContext as hy}from"react";var Wa=hy({exit(){}});Wa.displayName="InternalAppContext";var Ha=Wa;import{EventEmitter as gy}from"node:events";import{createContext as yy}from"react";var wy={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},za=yy({stdin:wy,internal_eventEmitter:new gy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});za.displayName="InternalStdinContext";var qa=za;import{createContext as vy}from"react";var by={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Va=vy({stdout:by,write(){}});Va.displayName="InternalStdoutContext";var Ga=Va;import{createContext as ky}from"react";var xy={isTTY:!1,write(){return!0},on(){},off(){}},Ya=ky({stderr:xy,write(){}});Ya.displayName="InternalStderrContext";var Ja=Ya;import{createContext as Sy}from"react";var Qa=Sy({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Qa.displayName="InternalFocusContext";var Za=Qa;import{createContext as Ey}from"react";var ec=Ey({setCursorPosition(){}});ec.displayName="InternalCursorContext";var tc=ec;import Cy,{PureComponent as Ty}from"react";import*as yn from"node:fs";import{cwd as oc}from"node:process";import N from"react";import nc from"stack-utils";import Iy from"code-excerpt";var jr=o(e=>e?.replace(`file://${oc()}/`,""),"cleanupPath"),rc=new nc({cwd:oc(),internals:nc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
564
- `).slice(1):void 0,n=t?rc.parseLine(t[0]):void 0,r=jr(n?.file),i,s=0;if(r&&n?.line&&yn.existsSync(r)){let a=yn.readFileSync(r,"utf8");if(i=Iy(a,n.line),i)for(let{line:c}of i)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&i&&N.createElement(q,{marginTop:1,flexDirection:"column"},i.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
565
- `).slice(1).map(a=>{let c=rc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${jr(c.file)??""} line ${c.line} column ${c.column}`}," ","(",jr(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}o(Kr,"ErrorOverview");var Et=class extends Ty{static{o(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?Cy.createElement(Kr,{error:this.state.error}):this.props.children}};var Py=" ",My="\x1B[Z",Oy="\x1B";function sc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:i,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[u,l]=Br(!0),[f,m]=Br(void 0),[,p]=Br([]),g=qe(0),v=qe(0),w=qe(new Ry);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===Oy&&m(S=>S&&void 0)},[a,A]),Tt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),no=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Tt(x)})},[I,Tt]),En=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Tt(E)}h.current.hasPendingEscape()&&no()},[t,Tt,I,no]),ro=M(x=>{if(!_)throw t===_y.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
635
+ `:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});pa(),_r(e,r,{skipStaticElements:!0});let i;e.staticNode?.yogaNode&&(i=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),_r(e.staticNode,i,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=ba(r),d=n?.columns??e.yogaNode.getComputedWidth(),u=n?.rows??e.yogaNode.getComputedHeight(),l=r.cursorPosition,f={screen:c,viewport:{width:d,height:u},cursor:{x:0,y:c.height,visible:!1},scrollHint:ma(),scrollRepaint:ha(),...l?{inputCursor:{x:l.x,y:l.y}}:{}};return{output:s,outputHeight:a,staticOutput:i?`${i.get().output}
636
+ `:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=zg;function U(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}o(U,"csi");function ka(e=1){return e===0?"":U(e,"A")}o(ka,"cursorUp");function qg(e=1){return e===0?"":U(e,"B")}o(qg,"cursorDown");function Vg(e=1){return e===0?"":U(e,"C")}o(Vg,"cursorForward");function Gg(e=1){return e===0?"":U(e,"D")}o(Gg,"cursorBack");function xa(e){return U(e,"G")}o(xa,"cursorTo");var Yg=U("G"),Sa=U("H");function Ea(e,t){let n="";return e<0?n+=Gg(-e):e>0&&(n+=Vg(e)),t<0?n+=ka(-t):t>0&&(n+=qg(t)),n}o(Ea,"cursorMove");var Or=U(2,"K");function Ia(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Or,n<e-1&&(t+=ka(1));return t+=Yg,t}o(Ia,"eraseLines");var Ca=U("r"),Ta="\x1B7",Ra="\x1B8";function _a(e,t){return U(e,t,"r")}o(_a,"setScrollRegion");function Aa(e=1){return U(e,"S")}o(Aa,"scrollUp");function Pa(e=1){return U(e,"T")}o(Pa,"scrollDown");var yt=U(0,"m");function Ma(e){return`\x1B]${e.join(";")}\x07`}o(Ma,"osc");function Jg(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}o(Jg,"osc8Id");function wt(e,t){if(!e)return He;let n={id:Jg(e),...t??{}},r=Object.entries(n).map(([i,s])=>`${i}=${s}`).join(":");return Ma(["8",r,e])}o(wt,"link");var He=Ma(["8","",""]);function Nr(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",i;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==i&&(i!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=wt(d.hyperlink)),i=d.hyperlink),d.style!==r&&(r!==""&&(a+=yt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}i!==void 0&&(a+=He,i=void 0),r!==""&&(a+=yt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
637
+ `)}]}o(Nr,"renderFullFrame");var Qg=Object.freeze([]),Zg=Object.freeze([]);function Te(e,t){if(e===t)return{patches:Qg,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:yt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}o(Te,"transitionStyle");function bt(e,t){let n=Te(e,t),r="";for(let i of n.patches)i.type==="stdout"&&(r+=i.content);return{str:r,current:n.current}}o(bt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:Zg,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:wt(t)}),{patches:n,current:t}}o(ae,"transitionHyperlink");function Oa(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}o(Oa,"needsWidthCompensation");var Re=class{static{o(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let i of n)this._diffMut.push(i);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},vt={type:"stdout",content:`
638
+ `};function kt(e,t,n){let r=t.width===Z.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let l=t.char.length>2?i:i+1;if(c+2>=l)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let u=r===2&&Oa(t.char);return u&&c+1<i&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),u&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}o(kt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(_e,"moveCursorTo");function xt(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=vt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=bt(s,m.style);kt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let u=ae(a,void 0);for(let f of u.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=u.current;let l=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(f=>l?[[ce],{dx:-f.x,dy:0}]:[[ce,vt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);let d=ae(a,void 0);for(let u of d.patches)e.txn(()=>[[u],{dx:0,dy:0}])}}o(xt,"renderFrameSlice");function $r(e,t,n,r){let i=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=i;a<=s;a++)ey(e,t,a)}o($r,"repaintFrameRows");function ey(e,t,n){let r="",i;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+yt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(i,a.hyperlink);for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);i=c.current;let d=bt(r,a.style);kt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(ey,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let i=Ce(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);xt(r,e,0,e.screen.height,n);let i=[{type:"clearTerminal",reason:t}];for(let s of r.diff)i.push(s);return i}o(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,i=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:i,prevHadScrollback:s,nextFitsViewport:a}}o(pn,"computeViewportState");function Na(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}o(Na,"shouldFullReset");function $a(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o($a,"shouldSkipDiff");var mn=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let i=r.inlineBottomAnchored??!1,s=Da(t,i),a=Da(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",i);let c=Na(s,a,Dr);if(c.reset)return ze(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return ty(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let u={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},l={...s,screen:va(s.screen,d.top,d.bottom,d.delta)};return[u,...La(l,a,i)]}return La(s,a,i)}reset(){}};function Lr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Lr,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");Lr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Lr(e,r.patches)}return{style:"",hyperlink:void 0}}o(Fr,"resetStyleAndHyperlink");function ty(e,t,n){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&$r(i,t,c.top,c.bottom);let d=ja(i,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(i,d.currentStyle,d.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height),Ka(i,t),i.diff)}o(ty,"renderScrollRepaint");function Fa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(i=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-i.x,dy:-r}])}o(Fa,"applyShrink");function ja(e,t,n,r){let i="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:u,prev:l,next:f}=c;if(r.growing&&u>=t.screen.height||r.skipRows&&u>=r.skipRows.top&&u<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!$a(l,f,m)){if(u<r.viewportY){a=!0;break}if(_e(e,d,u),f){let p=ae(s,f.hyperlink);Lr(e,p.patches),s=p.current;let g=bt(i,f.style);kt(e,f,g.str)&&(i=g.current)}else if(l){let p=Fr(e,i,s);i=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(ja,"diffPass");function Da(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}o(Da,"clampRestingCursor");function Ka(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=vt;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}o(Ka,"restoreCursor");function La(e,t,n=!1){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=ja(i,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(i,s.currentStyle,s.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height,n),Ka(i,t),i.diff)}o(La,"renderIncremental");var ny="\x1B[?25l",ry="\x1B[?25h",oy=`\x1B[2J${Sa}`,iy="\x1B[?2026h",sy="\x1B[?2026l";function ay(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ny;case"cursorShow":return ry;case"cursorMove":return Ea(e.x,e.y);case"cursorTo":return xa(e.col);case"eraseLine":return Or;case"clear":return Ia(e.count);case"clearTerminal":return oy;case"hyperlink":return wt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?Aa(r):Pa(r);return Ta+_a(t,n)+i+Ca+Ra}}}o(ay,"patchToBytes");function hn(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=ay(s);if(r.length!==0){if(n&&i){e.write(iy+r+sy);return}e.write(r)}}o(hn,"applyDiff");function Ba(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(Ba,"applyCellFrame");function St(e,t){return{screen:ya(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(St,"emptyFrame");import cy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function ue(e){return"isTTY"in e&&e.isTTY===!0&&!cy}o(ue,"shouldSynchronize");var dy=new WeakMap,Xa=dy;import{EventEmitter as _y}from"node:events";import Ay from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as sc}from"react";import Py from"cli-cursor";var uy=o(e=>e>=48&&e<=63,"isCsiParameterByte"),ly=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Wa=o(e=>e>=64&&e<=126,"isCsiFinalByte");function fy(e,t,n){let r=t+n+1,i=r;for(;i<e.length;i+=1){let s=e.codePointAt(i);if(s===void 0)return"pending";if(!(uy(s)||ly(s))&&!(s===91&&i===r))return Wa(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(fy,"parseCsiSequence");function py(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Wa(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(py,"parseSs3Sequence");function Ua(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return fy(e,t,n);if(r==="O")return py(e,t,n)}o(Ua,"parseControlSequence");function my(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,i=t+1+r;return{sequence:e.slice(t,i),nextIndex:i}}o(my,"parseEscapedCodePoint");function hy(e){let t=[],n=0,r=o(i=>({events:t,pending:e.slice(i)}),"pendingFrom");for(;n<e.length;){let i=e.indexOf("\x1B",n);if(i===-1)return t.push(e.slice(n)),{events:t,pending:""};if(i>n&&t.push(e.slice(n,i)),i===e.length-1)return r(i);let s=Ua(e,i,1);if(s==="pending")return r(i);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[i+1]==="\x1B"){if(i+2>=e.length)return r(i);let d=Ua(e,i,2);if(d==="pending")return r(i);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=my(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(hy,"parseKeypresses");function gn(){let e="";return{push(t){let n=hy(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}o(gn,"createInputParser");import{createContext as gy}from"react";var Ha=gy({exit(){}});Ha.displayName="InternalAppContext";var za=Ha;import{EventEmitter as yy}from"node:events";import{createContext as wy}from"react";var vy={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},qa=wy({stdin:vy,internal_eventEmitter:new yy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});qa.displayName="InternalStdinContext";var Va=qa;import{createContext as by}from"react";var ky={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Ga=by({stdout:ky,write(){}});Ga.displayName="InternalStdoutContext";var Ya=Ga;import{createContext as xy}from"react";var Sy={isTTY:!1,write(){return!0},on(){},off(){}},Ja=xy({stderr:Sy,write(){}});Ja.displayName="InternalStderrContext";var Qa=Ja;import{createContext as Ey}from"react";var Za=Ey({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Za.displayName="InternalFocusContext";var ec=Za;import{createContext as Iy}from"react";var tc=Iy({setCursorPosition(){}});tc.displayName="InternalCursorContext";var nc=tc;import Ty,{PureComponent as Ry}from"react";import*as yn from"node:fs";import{cwd as ic}from"node:process";import N from"react";import rc from"stack-utils";import Cy from"code-excerpt";var jr=o(e=>e?.replace(`file://${ic()}/`,""),"cleanupPath"),oc=new rc({cwd:ic(),internals:rc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
639
+ `).slice(1):void 0,n=t?oc.parseLine(t[0]):void 0,r=jr(n?.file),i,s=0;if(r&&n?.line&&yn.existsSync(r)){let a=yn.readFileSync(r,"utf8");if(i=Cy(a,n.line),i)for(let{line:c}of i)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&i&&N.createElement(q,{marginTop:1,flexDirection:"column"},i.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
640
+ `).slice(1).map(a=>{let c=oc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${jr(c.file)??""} line ${c.line} column ${c.column}`}," ","(",jr(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}o(Kr,"ErrorOverview");var Et=class extends Ry{static{o(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?Ty.createElement(Kr,{error:this.state.error}):this.props.children}};var My=" ",Oy="\x1B[Z",Ny="\x1B";function ac({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:i,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[u,l]=Br(!0),[f,m]=Br(void 0),[,p]=Br([]),g=qe(0),v=qe(0),w=qe(new _y);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(gn()),b=qe(void 0),I=M(()=>{b.current&&(clearImmediate(b.current),b.current=void 0)},[]),_=t.isTTY,W=M(()=>{y.current&&(t.removeListener("readable",y.current),y.current=void 0)},[t]),H=M(()=>{t.setRawMode(!1),W(),t.unref(),v.current=0,h.current.reset(),I()},[t,W,I]),A=M(x=>{_&&v.current>0&&H(),c(x)},[_,H,c]),Me=M(x=>{if(x===""&&a){A();return}x===Ny&&m(S=>S&&void 0)},[a,A]),Tt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),no=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Tt(x)})},[I,Tt]),En=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Tt(E)}h.current.hasPendingEscape()&&no()},[t,Tt,I,no]),ro=M(x=>{if(!_)throw t===Ay.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
566
641
  Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.
567
- Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),oo=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E+1;$<x.length;$++){let te=x[$];if(te?.isActive)return te.id}},[]),io=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E-1;$>=0;$--){let te=x[$];if(te?.isActive)return te.id}},[]),Rt=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return oo(x,S)??E}),x))},[oo]),_t=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return io(x,S)??E}),x))},[io]);ic(()=>{let x=o(E=>{!u||g.current===0||(E===Py&&Rt(),E===My&&_t())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[u,Rt,_t]);let so=M(()=>{l(!0)},[]),ao=M(()=>{l(!1)},[]),co=M(x=>{p(S=>(S.some($=>$?.id===x)&&m(x),S))},[]),uo=M((x,{autoFocus:S})=>{p(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&m(E=>E??x)},[]),lo=M(x=>{m(S=>S===x?void 0:S),p(S=>{let E=S.filter($=>$.id!==x);return g.current=E.length,E})},[]),fo=M(x=>{p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),po=M(x=>{m(S=>S===x?void 0:S),p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);ic(()=>()=>{Ay.show(n),_&&v.current>0&&H()},[n,_,H]);let Lc=Ve(()=>({exit:A}),[A]),Fc=Ve(()=>({stdin:t,setRawMode:ro,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,ro,_,a]),jc=Ve(()=>({stdout:n,write:i}),[n,i]),Kc=Ve(()=>({stderr:r,write:s}),[r,s]),Bc=Ve(()=>({setCursorPosition:d}),[d]),Xc=Ve(()=>({activeId:f,add:uo,remove:lo,activate:fo,deactivate:po,enableFocus:so,disableFocus:ao,focusNext:Rt,focusPrevious:_t,focus:co}),[f,uo,lo,fo,po,so,ao,Rt,_t,co]);return Ae.createElement(Ha.Provider,{value:Lc},Ae.createElement(qa.Provider,{value:Fc},Ae.createElement(Ga.Provider,{value:jc},Ae.createElement(Ja.Provider,{value:Kc},Ae.createElement(Za.Provider,{value:Xc},Ae.createElement(tc.Provider,{value:Bc},Ae.createElement(Et,{onError:A},e)))))))}o(sc,"App");sc.displayName="InternalApp";var ac=sc;var Ny={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function cc(e){let t=0;for(let n of e)t|=Ny[n];return t}o(cc,"resolveFlags");var le={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Xr=o((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Ur=o((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return i=>({x:i.x,y:Math.min(Math.max(i.y-n,0),r)})},"toVisibleCursor"),wn=o(()=>{},"noop"),Wy=27,Hy=91,zy=63,qy=117,Vy=48,Gy=57,Yy=o(e=>e>=Vy&&e<=Gy,"isDigitByte"),uc=o((e,t)=>{if(e[t]!==Wy||e[t+1]!==Hy||e[t+2]!==zy)return;let n=t+3,r=n;for(;n<e.length&&Yy(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===qy)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),Jy=o(e=>{for(let t=0;t<e.length;t++)if(uc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),Qy=o(e=>{let t=[],n=0;for(;n<e.length;){let r=uc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),Wr=o(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),Zy=class{static{o(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Dy(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=rn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,i=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=$y(this.onRender,i,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new mn({isTTY:!!t.stdout.isTTY}),this.prevFrame=St(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?Ky:jy;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Ly(this.unmount,{alwaysLast:!1}),tn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=o(()=>this.options.stdout.columns?this.options.stdout.columns:Uy()?.columns??80,"getTerminalWidth");resized=o(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=o(()=>{},"resolveExitPromise");rejectExitPromise=o(()=>{},"rejectExitPromise");unsubscribeExit=o(()=>{},"unsubscribeExit");handleAppExit=o(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(Wr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=o(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let i=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:i,y:s}},"setCursorPosition");resetOutputTracking=o(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=o((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||i!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||i!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,i=n.write,s=o((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=o((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=i)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=o(()=>{if(this.prevFrame.screen.height===0)return;let t=St(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>hn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=o(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=o(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,By.DIRECTION_LTR)},"calculateLayout");onRender=o(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:i,staticOutput:s,frame:a}=Mr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
642
+ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),oo=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E+1;$<x.length;$++){let te=x[$];if(te?.isActive)return te.id}},[]),io=M((x,S)=>{let E=x.findIndex($=>$.id===S);for(let $=E-1;$>=0;$--){let te=x[$];if(te?.isActive)return te.id}},[]),Rt=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return oo(x,S)??E}),x))},[oo]),_t=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return io(x,S)??E}),x))},[io]);sc(()=>{let x=o(E=>{!u||g.current===0||(E===My&&Rt(),E===Oy&&_t())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[u,Rt,_t]);let so=M(()=>{l(!0)},[]),ao=M(()=>{l(!1)},[]),co=M(x=>{p(S=>(S.some($=>$?.id===x)&&m(x),S))},[]),uo=M((x,{autoFocus:S})=>{p(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&m(E=>E??x)},[]),lo=M(x=>{m(S=>S===x?void 0:S),p(S=>{let E=S.filter($=>$.id!==x);return g.current=E.length,E})},[]),fo=M(x=>{p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),po=M(x=>{m(S=>S===x?void 0:S),p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);sc(()=>()=>{Py.show(n),_&&v.current>0&&H()},[n,_,H]);let Fc=Ve(()=>({exit:A}),[A]),jc=Ve(()=>({stdin:t,setRawMode:ro,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,ro,_,a]),Kc=Ve(()=>({stdout:n,write:i}),[n,i]),Bc=Ve(()=>({stderr:r,write:s}),[r,s]),Xc=Ve(()=>({setCursorPosition:d}),[d]),Uc=Ve(()=>({activeId:f,add:uo,remove:lo,activate:fo,deactivate:po,enableFocus:so,disableFocus:ao,focusNext:Rt,focusPrevious:_t,focus:co}),[f,uo,lo,fo,po,so,ao,Rt,_t,co]);return Ae.createElement(za.Provider,{value:Fc},Ae.createElement(Va.Provider,{value:jc},Ae.createElement(Ya.Provider,{value:Kc},Ae.createElement(Qa.Provider,{value:Bc},Ae.createElement(ec.Provider,{value:Uc},Ae.createElement(nc.Provider,{value:Xc},Ae.createElement(Et,{onError:A},e)))))))}o(ac,"App");ac.displayName="InternalApp";var cc=ac;var $y={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function dc(e){let t=0;for(let n of e)t|=$y[n];return t}o(dc,"resolveFlags");var le={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Xr=o((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Ur=o((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return i=>({x:i.x,y:Math.min(Math.max(i.y-n,0),r)})},"toVisibleCursor"),wn=o(()=>{},"noop"),Hy=27,zy=91,qy=63,Vy=117,Gy=48,Yy=57,Jy=o(e=>e>=Gy&&e<=Yy,"isDigitByte"),lc=o((e,t)=>{if(e[t]!==Hy||e[t+1]!==zy||e[t+2]!==qy)return;let n=t+3,r=n;for(;n<e.length&&Jy(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===Vy)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),Qy=o(e=>{for(let t=0;t<e.length;t++)if(lc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),Zy=o(e=>{let t=[],n=0;for(;n<e.length;){let r=lc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),Wr=o(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),ew=class{static{o(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Ly(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=rn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,i=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=Dy(this.onRender,i,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new mn({isTTY:!!t.stdout.isTTY}),this.prevFrame=St(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?By:Ky;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Fy(this.unmount,{alwaysLast:!1}),tn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=o(()=>this.options.stdout.columns?this.options.stdout.columns:Wy()?.columns??80,"getTerminalWidth");resized=o(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=o(()=>{},"resolveExitPromise");rejectExitPromise=o(()=>{},"rejectExitPromise");unsubscribeExit=o(()=>{},"unsubscribeExit");handleAppExit=o(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(Wr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=o(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let i=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:i,y:s}},"setCursorPosition");resetOutputTracking=o(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=o((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||i!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,i=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||i!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,i=n.write,s=o((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=o((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=i)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=o(()=>{if(this.prevFrame.screen.height===0)return;let t=St(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>hn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=o(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=o(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,Xy.DIRECTION_LTR)},"calculateLayout");onRender=o(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:i,staticOutput:s,frame:a}=Mr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
568
643
  `;if(this.options.debug){c&&(this.fullStaticOutput+=s),this.writeStdout(this.fullStaticOutput+r);return}if(fe){c&&this.writeStdout(s),this.lastOutput=r,this.lastOutputToRender=r+`
569
- `,this.lastOutputHeight=i;return}if(this.isScreenReaderEnabled){let w=ue(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=Xy(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(`
644
+ `,this.lastOutputHeight=i;return}if(this.isScreenReaderEnabled){let w=ue(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=Uy(r,y,{trim:!1,hard:!0});if(c)this.writeStdout(h);else{let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+h)}this.lastOutput=r,this.lastOutputToRender=h,this.lastOutputHeight=h===""?0:h.split(`
570
645
  `).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let u=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,l=o(w=>{w&&(u?u.push(w):this.writeStdout(w))},"emit"),f=u?{write:l}:null;l(this.computeReturnToRestSeq());let m=this.altScreenActive,g=this.options.stdout.isTTY&&i>=this.options.stdout.rows&&m?r:r+`
571
- `;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=ue(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i;return}let w=ue(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=i,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!u&&ue(this.options.stdout);try{if(c?(v&&l(de),l(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&i<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&l(de),l(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Ur(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Xr(h.x-y.x,h.y-y.y);l(b),this.displayCursor=h}}finally{u&&this.flushCursorTxn(u)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i},"onRender");applyCellFrame=o((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},i=ue(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:i,synchronized:n?!1:i,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>Ka(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=o(()=>{this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=o(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=o(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],i=o(c=>{c&&r.push(c)},"emit"),s={write:i};i(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();i(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:u,frame:l}=Mr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(l,s),l?.inputCursor){let f=Ur(l,!this.altScreenActive),m=f(l.cursor),p=f(l.inputCursor),g=Xr(p.x-m.x,p.y-m.y);i(g),this.displayCursor=p}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=u}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=ue(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=dc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},dc.createElement(ac,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,wn):(se.updateContainerSync(n,this.container,null,wn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=Ur(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Xr(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(o(u=>{typeof u.flush=="function"&&(r?u.flush():typeof u.cancel=="function"&&u.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
572
- `)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),Ba.delete(this.options.stdout);let{exitResult:s}=this,a=o(()=>{Wr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!Wr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=Fy((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let i=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||i==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],i=o(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=Qy(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=o(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let u of d)r.push(u);Jy(r)&&(i(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(i,200);this.cancelKittyDetection=i,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${cc(t)}u`),this.kittyProtocolEnabled=!0}},lc=Zy;var It=class{static{o(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new lc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=o(t=>{this.engineInstance.render(t)},"render");unmount=o(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=o(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=o(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=o((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=o((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=o(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=o(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=o(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function pc(){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"?ow(rw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=tw(t,"a"),fc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
573
- `),ve}catch{return ve=-1,null}}o(pc,"resolveTraceFd");function iw(e){let t=pc();if(t!==null)try{fc(t,e)}catch{}}o(iw,"traceLine");var Hr=new WeakMap,sw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},aw={isTTY:!1,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},cw={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function dw(e={}){return e instanceof ew?{stdout:e}:e}o(dw,"getOptions");function uw(e,t,n){let r=Hr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Hr.set(e,r)),r}o(uw,"getInstance");function zr(e,t){let n={stdout:sw,stdin:cw,stderr:aw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...dw(t)};if(pc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((m,...p)=>(c+=1,d+=typeof m=="string"?Buffer.byteLength(m,"utf8"):m?.length??0,a(m,...p)));let u=0,l=0,f=n.onRender;n.onRender=m=>{let p=nw.now(),g=u===0?0:p-u,v=s,w=v.columns??0,y=v.rows??0;return iw(`frame=${l} renderTime=${m.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
574
- `),c=0,d=0,u=p,l+=1,f?.(m)}}let i=uw(n.stdout,()=>new It(n),n.concurrent??!1);return i.render(e),{rerender:i.render,unmount(){i.unmount()},waitUntilExit:i.waitUntilExit,cleanup:o(()=>{Hr.delete(n.stdout)},"cleanup"),clear:i.clear}}o(zr,"render");var mc=q,hc=K;import{Buffer as fw}from"node:buffer";var pw=/^(?:\x1b)([a-zA-Z0-9])$/,mw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,yc={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"},wc=[...Object.values(yc),"backspace"],hw=o(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),gw=o(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),vc=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,yw=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,ww={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},vw={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"},gc={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"},bc=o(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),qr=o(e=>bc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function kc(e){return e===3?"release":e===2?"repeat":"press"}o(kc,"resolveEventType");function xc(e){return{ctrl:!!(e&le.ctrl),shift:!!(e&le.shift),meta:!!(e&le.meta),option:!!(e&le.alt),super:!!(e&le.super),hyper:!!(e&le.hyper),capsLock:!!(e&le.capsLock),numLock:!!(e&le.numLock)}}o(xc,"parseKittyModifiers");function bw(e){let t=vc.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,i=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!bc(n))return null;let a;s&&(a=s.split(":").map(u=>qr(Number.parseInt(u,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):gc[n]?(c=gc[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,...xc(r),eventType:kc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}o(bw,"parseKittyKeypress");function kw(e){let t=yw.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),i=Number.parseInt(t[3],10),s=t[4],a=s==="~"?vw[n]:ww[s];return a?{name:a,...xc(r),eventType:kc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}o(kw,"parseKittySpecialKey");var Vr="\x1B[200~",xw="\x1B[201~";function Sw(e){if(!e.startsWith(Vr))return null;let t=e.indexOf(xw,Vr.length);return t===-1?null:e.slice(Vr.length,t)}o(Sw,"extractBracketedPaste");function Gr(e=""){let t=e,n;if(fw.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=Sw(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=bw(t);if(r)return r;let i=kw(t);if(i)return i;if(vc.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===`
575
- `)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=pw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=mw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=yc[c]??"",s.shift=hw(c)||s.shift,s.ctrl=gw(c)||s.ctrl}return s}o(Gr,"parseKeypress");var Cw=50;function Yr(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(Yr,"resolveTerminalSize");var bn=Ew(null),Tw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var Cc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function Rw(e){for(let t of e)if(t.rawMode)return!0;return!1}o(Rw,"hasRawModeSubscribers");function _w({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(f=>{for(let m of r)m.listener(f)},"handleData"),d=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),u=o(()=>{let f=i;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),i=void 0},"detachInput"),l=o(()=>{if(i&&i!==e&&u(),!e||r.size===0){u();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&Rw(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),l(),()=>{r.delete(p),l()}},dispose(){r.clear(),u()}}}o(_w,"createTerminalInputController");var Aw=o(({children:e,runtime:t})=>{let[n,r]=Iw(()=>t.terminalSize);Ge(()=>{if(r(Yr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(Yr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=Ic(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Sc(()=>_w({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Sc(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:i,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,i]);return Ec(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function Pw(e){let t=e?.stdout??Tw,n=e?.stdin??Cc,r=o(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),i;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:o(()=>{i?.()},"exit"),terminalSize:Yr(t),isTTY:t?.isTTY===!0,writeRaw:o(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:o(()=>()=>{},"subscribeInput"),attachExit(s){i=s}}}o(Pw,"createRuntimeValue");function kn(e,t){let n=Pw(t),r=zr(Ec(Aw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(kn,"render");var be=mc,V=hc;function Mw(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&wc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}o(Mw,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),i=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=gn(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Ic(c=>{let{input:d,key:u}=Mw(Gr(c));r.current(d,u)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=i.current,u=typeof c=="string"?c:c.toString("utf8"),l=d?.push(u)??[u];for(let f of l)a(f);u.length>0&&(s.current=setTimeout(()=>{let f=i.current?.flushPendingEscape();f&&a(f)},Cw))},{isActive:n,rawMode:!0})}o(xn,"useInput");function Qr(){let e=Jr(bn),t=e?.stdin??Cc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(Qr,"useStdin");function Sn(){return{exit:Jr(bn)?.exit??(()=>{})}}o(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Jr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(i)return i.subscribeInput(m=>{d.current(m)},{rawMode:r});let u=s,l=u.isRaw;r&&c&&l===!1&&a(!0);let f=o(m=>{d.current(m)},"handleData");return u.on?.("data",f),()=>{if(u.off?.("data",f),r&&c&&l===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(Zr,"useTerminalInput");import{jsx as hW}from"react/jsx-runtime";import{useInsertionEffect as yW,useMemo as wW}from"react";import{jsx as nH,jsxs as rH}from"react/jsx-runtime";import{jsx as MW}from"react/jsx-runtime";import NW,{useEffect as $W,useImperativeHandle as DW,useMemo as LW,useRef as FW,useCallback as jW,useState as KW}from"react";var eo=class{static{o(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Ow=1e3;var zW=new eo(Ow);var jw=40;function Kw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let i=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>i.includes(s))})}o(Kw,"filterSessionPickerItems");function Bw(e,t,n){let r=Math.max(1,n),i=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(i/r)*r;return{items:e.slice(s,s+r),selectedIndex:i,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}o(Bw,"buildSessionPickerPage");function Xw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${i} ${s}:${a}`}o(Xw,"formatTimestamp");function Uw({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=Sn(),[a,c]=to(""),[d,u]=to(0),[l,f]=to(!1),m=Fw(!1),p=Lw(()=>Kw(e,a),[e,a]),g=Bw(p,d,i),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,jw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)u(h=>Math.max(0,h-1));else if(y.downArrow)u(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)u(h=>Math.max(0,h-i));else if(y.pageDown)u(h=>Math.min(Math.max(0,p.length-1),h+i));else if(y.home)u(0);else if(y.end)u(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),u(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),u(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),u(0))}}),Ye(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Ct(V,{bold:!0,color:"cyan",children:"Resume a session"}),Ye(V,{children:["Search: ",Ct(V,{color:"yellow",children:a||"type to filter"})]}),Ct(V,{dimColor:!0,children:l?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Ye(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Ct(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Ye(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Xw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Ye(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Ye(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}o(Uw,"SessionPicker");async function Ac(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,i=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Ct(Uw,{sessions:e,pageSize:a,onSelect:o(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:o(d=>{i=!0,s=d},"onSelectionError"),onCancel:o(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(i)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}o(Ac,"runSessionPicker");var Pc=65536,Mc=48;function Hw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Ww.homedir(),".kodax");return Qe.join(t,"sessions")}o(Hw,"defaultSessionsDir");function Oc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(Oc,"isSessionFile");async function zw(e){let t=[],n;try{n=await Je.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let i=Qe.join(e,r.name);if(r.isFile()&&Oc(r.name)&&!r.name.startsWith("archived-")){t.push(i);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Je.readdir(i,{withFileTypes:!0}))s.isFile()&&Oc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(i,s.name))}catch{}}return t}o(zw,"collectActiveSessionFiles");function Nc(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o(Nc,"normalizeComparableRoot");function qw(e,t){let n=Nc(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>Nc(s)===n)}o(qw,"matchesProjectRoot");async function Vw(e){let t;try{t=await Je.open(e,"r");let n=Buffer.allocUnsafe(Pc),{bytesRead:r}=await t.read(n,0,Pc,0);if(r===0)return;let i=n.toString("utf8",0,r),s=i.indexOf(`
646
+ `;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=ue(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i;return}let w=ue(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=i,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!u&&ue(this.options.stdout);try{if(c?(v&&l(de),l(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&i<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&l(de),l(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&l(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Ur(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Xr(h.x-y.x,h.y-y.y);l(b),this.displayCursor=h}}finally{u&&this.flushCursorTxn(u)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=i},"onRender");applyCellFrame=o((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},i=ue(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:i,synchronized:n?!1:i,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>Ba(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=o(()=>{this.cellLogUpdate.reset(),this.prevFrame=St(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=o(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=o(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],i=o(c=>{c&&r.push(c)},"emit"),s={write:i};i(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();i(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:u,frame:l}=Mr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(l,s),l?.inputCursor){let f=Ur(l,!this.altScreenActive),m=f(l.cursor),p=f(l.inputCursor),g=Xr(p.x-m.x,p.y-m.y);i(g),this.displayCursor=p}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=u}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=ue(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=uc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},uc.createElement(cc,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,wn):(se.updateContainerSync(n,this.container,null,wn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=Ur(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Xr(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=ue(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(o(u=>{typeof u.flush=="function"&&(r?u.flush():typeof u.cancel=="function"&&u.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
647
+ `)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),Xa.delete(this.options.stdout);let{exitResult:s}=this,a=o(()=>{Wr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!Wr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=jy((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let i=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||i==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],i=o(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=Zy(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=o(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let u of d)r.push(u);Qy(r)&&(i(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(i,200);this.cancelKittyDetection=i,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${dc(t)}u`),this.kittyProtocolEnabled=!0}},fc=ew;var It=class{static{o(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new fc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=o(t=>{this.engineInstance.render(t)},"render");unmount=o(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=o(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=o(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=o((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=o((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=o(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=o(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=o(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function mc(){if(ve===-1)return null;if(ve!==null)return ve;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return ve=-1,null;let t=e==="1"||e==="true"?iw(ow(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=nw(t,"a"),pc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
648
+ `),ve}catch{return ve=-1,null}}o(mc,"resolveTraceFd");function sw(e){let t=mc();if(t!==null)try{pc(t,e)}catch{}}o(sw,"traceLine");var Hr=new WeakMap,aw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},cw={isTTY:!1,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},dw={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function uw(e={}){return e instanceof tw?{stdout:e}:e}o(uw,"getOptions");function lw(e,t,n){let r=Hr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Hr.set(e,r)),r}o(lw,"getInstance");function zr(e,t){let n={stdout:aw,stdin:dw,stderr:cw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...uw(t)};if(mc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((m,...p)=>(c+=1,d+=typeof m=="string"?Buffer.byteLength(m,"utf8"):m?.length??0,a(m,...p)));let u=0,l=0,f=n.onRender;n.onRender=m=>{let p=rw.now(),g=u===0?0:p-u,v=s,w=v.columns??0,y=v.rows??0;return sw(`frame=${l} renderTime=${m.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
649
+ `),c=0,d=0,u=p,l+=1,f?.(m)}}let i=lw(n.stdout,()=>new It(n),n.concurrent??!1);return i.render(e),{rerender:i.render,unmount(){i.unmount()},waitUntilExit:i.waitUntilExit,cleanup:o(()=>{Hr.delete(n.stdout)},"cleanup"),clear:i.clear}}o(zr,"render");var hc=q,gc=K;import{Buffer as pw}from"node:buffer";var mw=/^(?:\x1b)([a-zA-Z0-9])$/,hw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,wc={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},vc=[...Object.values(wc),"backspace"],gw=o(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),yw=o(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),bc=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,ww=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,vw={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},bw={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},yc={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24"},kc=o(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),qr=o(e=>kc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function xc(e){return e===3?"release":e===2?"repeat":"press"}o(xc,"resolveEventType");function Sc(e){return{ctrl:!!(e&le.ctrl),shift:!!(e&le.shift),meta:!!(e&le.meta),option:!!(e&le.alt),super:!!(e&le.super),hyper:!!(e&le.hyper),capsLock:!!(e&le.capsLock),numLock:!!(e&le.numLock)}}o(Sc,"parseKittyModifiers");function kw(e){let t=bc.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,i=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!kc(n))return null;let a;s&&(a=s.split(":").map(u=>qr(Number.parseInt(u,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):yc[n]?(c=yc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=qr(n).toLowerCase(),d=!0),d&&!a&&(a=qr(n)),{name:c,...Sc(r),eventType:xc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}o(kw,"parseKittyKeypress");function xw(e){let t=ww.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),i=Number.parseInt(t[3],10),s=t[4],a=s==="~"?bw[n]:vw[s];return a?{name:a,...Sc(r),eventType:xc(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}o(xw,"parseKittySpecialKey");var Vr="\x1B[200~",Sw="\x1B[201~";function Ew(e){if(!e.startsWith(Vr))return null;let t=e.indexOf(Sw,Vr.length);return t===-1?null:e.slice(Vr.length,t)}o(Ew,"extractBracketedPaste");function Gr(e=""){let t=e,n;if(pw.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=""),typeof t=="string"){let a=Ew(t);if(a!==null)return{name:"paste",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isPaste:!0,isPrintable:!1,text:a}}let r=kw(t);if(r)return r;let i=xw(t);if(i)return i;if(bc.test(t))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isKittyProtocol:!0,isPrintable:!1};let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(s.sequence=s.sequence||t||s.name,t==="\r"||t==="\x1B\r")s.raw=void 0,s.name="return",s.option=t.length===2;else if(t===`
650
+ `)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=mw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=hw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=wc[c]??"",s.shift=gw(c)||s.shift,s.ctrl=yw(c)||s.ctrl}return s}o(Gr,"parseKeypress");var Tw=50;function Yr(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(Yr,"resolveTerminalSize");var bn=Iw(null),Rw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var Tc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function _w(e){for(let t of e)if(t.rawMode)return!0;return!1}o(_w,"hasRawModeSubscribers");function Aw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(f=>{for(let m of r)m.listener(f)},"handleData"),d=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),u=o(()=>{let f=i;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),i=void 0},"detachInput"),l=o(()=>{if(i&&i!==e&&u(),!e||r.size===0){u();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&_w(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),l(),()=>{r.delete(p),l()}},dispose(){r.clear(),u()}}}o(Aw,"createTerminalInputController");var Pw=o(({children:e,runtime:t})=>{let[n,r]=Cw(()=>t.terminalSize);Ge(()=>{if(r(Yr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(Yr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=Cc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Ec(()=>Aw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Ec(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:i,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,i]);return Ic(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function Mw(e){let t=e?.stdout??Rw,n=e?.stdin??Tc,r=o(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),i;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:o(()=>{i?.()},"exit"),terminalSize:Yr(t),isTTY:t?.isTTY===!0,writeRaw:o(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:o(()=>()=>{},"subscribeInput"),attachExit(s){i=s}}}o(Mw,"createRuntimeValue");function kn(e,t){let n=Mw(t),r=zr(Ic(Pw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(kn,"render");var be=hc,V=gc;function Ow(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&vc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}o(Ow,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),i=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=gn(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Cc(c=>{let{input:d,key:u}=Ow(Gr(c));r.current(d,u)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=i.current,u=typeof c=="string"?c:c.toString("utf8"),l=d?.push(u)??[u];for(let f of l)a(f);u.length>0&&(s.current=setTimeout(()=>{let f=i.current?.flushPendingEscape();f&&a(f)},Tw))},{isActive:n,rawMode:!0})}o(xn,"useInput");function Qr(){let e=Jr(bn),t=e?.stdin??Tc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(Qr,"useStdin");function Sn(){return{exit:Jr(bn)?.exit??(()=>{})}}o(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Jr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(i)return i.subscribeInput(m=>{d.current(m)},{rawMode:r});let u=s,l=u.isRaw;r&&c&&l===!1&&a(!0);let f=o(m=>{d.current(m)},"handleData");return u.on?.("data",f),()=>{if(u.off?.("data",f),r&&c&&l===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(Zr,"useTerminalInput");import{jsx as wW}from"react/jsx-runtime";import{useInsertionEffect as bW,useMemo as kW}from"react";import{jsx as iH,jsxs as sH}from"react/jsx-runtime";import{jsx as $W}from"react/jsx-runtime";import LW,{useEffect as FW,useImperativeHandle as jW,useMemo as KW,useRef as BW,useCallback as XW,useState as UW}from"react";var eo=class{static{o(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Nw=1e3;var GW=new eo(Nw);var Kw=40;function Bw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let i=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>i.includes(s))})}o(Bw,"filterSessionPickerItems");function Xw(e,t,n){let r=Math.max(1,n),i=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(i/r)*r;return{items:e.slice(s,s+r),selectedIndex:i,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}o(Xw,"buildSessionPickerPage");function Uw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${i} ${s}:${a}`}o(Uw,"formatTimestamp");function Ww({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=Sn(),[a,c]=to(""),[d,u]=to(0),[l,f]=to(!1),m=jw(!1),p=Fw(()=>Bw(e,a),[e,a]),g=Xw(p,d,i),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,Kw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)u(h=>Math.max(0,h-1));else if(y.downArrow)u(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)u(h=>Math.max(0,h-i));else if(y.pageDown)u(h=>Math.min(Math.max(0,p.length-1),h+i));else if(y.home)u(0);else if(y.end)u(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),u(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),u(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),u(0))}}),Ye(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Ct(V,{bold:!0,color:"cyan",children:"Resume a session"}),Ye(V,{children:["Search: ",Ct(V,{color:"yellow",children:a||"type to filter"})]}),Ct(V,{dimColor:!0,children:l?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Ye(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Ct(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Ye(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Uw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Ye(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Ye(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}o(Ww,"SessionPicker");async function Pc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,i=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Ct(Ww,{sessions:e,pageSize:a,onSelect:o(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:o(d=>{i=!0,s=d},"onSelectionError"),onCancel:o(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(i)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}o(Pc,"runSessionPicker");var Mc=65536,Oc=48;function zw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Hw.homedir(),".kodax");return Qe.join(t,"sessions")}o(zw,"defaultSessionsDir");function Nc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(Nc,"isSessionFile");async function qw(e){let t=[],n;try{n=await Je.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let i=Qe.join(e,r.name);if(r.isFile()&&Nc(r.name)&&!r.name.startsWith("archived-")){t.push(i);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Je.readdir(i,{withFileTypes:!0}))s.isFile()&&Nc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(i,s.name))}catch{}}return t}o(qw,"collectActiveSessionFiles");function $c(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o($c,"normalizeComparableRoot");function Vw(e,t){let n=$c(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>$c(s)===n)}o(Vw,"matchesProjectRoot");async function Gw(e){let t;try{t=await Je.open(e,"r");let n=Buffer.allocUnsafe(Mc),{bytesRead:r}=await t.read(n,0,Mc,0);if(r===0)return;let i=n.toString("utf8",0,r),s=i.indexOf(`
576
651
  `);if(s>=0)return i.slice(0,s).trim();let a=await Je.readFile(e,"utf8"),c=a.indexOf(`
577
- `);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}o(Vw,"readFirstLine");async function Gw(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Je.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
578
- `).length-1-r)}o(Gw,"readMessageCount");function Yw(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}o(Yw,"runtimeSummary");async function Jw(e,t){try{let n=await Vw(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let i=r;if(i._type!=="meta"||i.scope==="managed-task-worker"||!qw(i,t))return;let s=await Gw(e,i);if(s<=0)return;let a=typeof i.createdAt=="string"?i.createdAt:void 0,c=Yw(i);return{id:Qe.basename(e,".jsonl"),title:typeof i.title=="string"?i.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}o(Jw,"readResumeCandidate");async function $c(e){try{let t=e.sessionsDir??Hw();await Ls(t),await Je.mkdir(t,{recursive:!0});let n=await zw(t),r=[],i=new Set;for(let s=0;s<n.length;s+=Mc){let a=await Promise.all(n.slice(s,s+Mc).map(c=>Jw(c,e.projectRoot)));for(let c of a)c&&!i.has(c.id)&&(i.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}o($c,"listCliResumeSessions");async function Dc(e,t={}){return Ac(e,t)}o(Dc,"runCliResumePicker");async function Qw(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
652
+ `);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}o(Gw,"readFirstLine");async function Yw(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Je.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
653
+ `).length-1-r)}o(Yw,"readMessageCount");function Jw(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}o(Jw,"runtimeSummary");async function Qw(e,t){try{let n=await Gw(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let i=r;if(i._type!=="meta"||i.scope==="managed-task-worker"||!Vw(i,t))return;let s=await Yw(e,i);if(s<=0)return;let a=typeof i.createdAt=="string"?i.createdAt:void 0,c=Jw(i);return{id:Qe.basename(e,".jsonl"),title:typeof i.title=="string"?i.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}o(Qw,"readResumeCandidate");async function Dc(e){try{let t=e.sessionsDir??zw();await Fs(t),await Je.mkdir(t,{recursive:!0});let n=await qw(t),r=[],i=new Set;for(let s=0;s<n.length;s+=Oc){let a=await Promise.all(n.slice(s,s+Oc).map(c=>Qw(c,e.projectRoot)));for(let c of a)c&&!i.has(c.id)&&(i.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}o(Dc,"listCliResumeSessions");async function Lc(e,t={}){return Pc(e,t)}o(Lc,"runCliResumePicker");async function Zw(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
579
654
  `);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
580
- `)}o(Qw,"printResumeNotice");async function VH(e={}){let t=e.listSessions??$c,n=e.pickSession??Dc,r=e.notify??Qw,i=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(i.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(i,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}o(VH,"resolveBareResume");export{VH as resolveBareResume};
655
+ `)}o(Zw,"printResumeNotice");async function JH(e={}){let t=e.listSessions??Dc,n=e.pickSession??Lc,r=e.notify??Zw,i=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(i.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(i,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}o(JH,"resolveBareResume");export{JH as resolveBareResume};