@kodax-ai/kodax 0.7.87 → 0.7.88

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 (83) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +20 -12
  3. package/README_CN.md +5 -3
  4. package/dist/chunks/agent-ZVZPWX5T.js +2 -0
  5. package/dist/chunks/argument-completer-LF5FUYJI.js +2 -0
  6. package/dist/chunks/{chunk-U44C5STU.js → chunk-4Y6OSDZE.js} +1 -1
  7. package/dist/chunks/{chunk-XH7UM4GO.js → chunk-5247AKGN.js} +3 -3
  8. package/dist/chunks/{chunk-DB4O33RR.js → chunk-6MGD2A7Z.js} +220 -220
  9. package/dist/chunks/{chunk-ITP7J5HX.js → chunk-72H6JNPN.js} +142 -142
  10. package/dist/chunks/{chunk-BCYJIACJ.js → chunk-GSGNXLDU.js} +2 -2
  11. package/dist/chunks/{chunk-XKLVC7F6.js → chunk-L2SYMK46.js} +1 -1
  12. package/dist/chunks/{chunk-JS4RSF4B.js → chunk-O2ZV775M.js} +1 -1
  13. package/dist/chunks/{chunk-3PGNESV3.js → chunk-OG4ML65E.js} +11 -11
  14. package/dist/chunks/chunk-PROPMIT4.js +2 -0
  15. package/dist/chunks/{chunk-ZQNOEKOB.js → chunk-QCXFQFIO.js} +2 -2
  16. package/dist/chunks/{chunk-4OLXWSCQ.js → chunk-RGAMBFT4.js} +254 -254
  17. package/dist/chunks/chunk-TXZ2XYMA.js +320 -0
  18. package/dist/chunks/{chunk-SKELDH3G.js → chunk-UNEC2WXJ.js} +17 -17
  19. package/dist/chunks/{chunk-GRJ7NKWP.js → chunk-W5RPVR3O.js} +1 -1
  20. package/dist/chunks/{chunk-ASFCAPIG.js → chunk-WSDVHFBK.js} +2 -2
  21. package/dist/chunks/{chunk-YB7YVAPL.js → chunk-ZKJEAQHA.js} +4 -4
  22. package/dist/chunks/{chunk-7XTUXMAI.js → chunk-ZWRG2GHC.js} +3 -3
  23. package/dist/chunks/client-ZXBSEDS4.js +2 -0
  24. package/dist/chunks/compaction-config-HVHPJ6CS.js +2 -0
  25. package/dist/chunks/{construction-bootstrap-YTFOT4M2.js → construction-bootstrap-HUGXOAUK.js} +1 -1
  26. package/dist/chunks/dist-VH56OGLV.js +2 -0
  27. package/dist/chunks/{dist-X55TWIK4.js → dist-WILA35IA.js} +1 -1
  28. package/dist/chunks/host-33L5PX3J.js +2 -0
  29. package/dist/chunks/run-manager-OOMXDNDA.js +2 -0
  30. package/dist/chunks/utils-WCVYP3JY.js +2 -0
  31. package/dist/index.d.ts +14 -14
  32. package/dist/index.js +5 -5
  33. package/dist/kodax_bootstrap.js +1 -1
  34. package/dist/kodax_cli.js +1562 -1559
  35. package/dist/kodax_resume.js +35 -826
  36. package/dist/provider-capabilities.json +1156 -1118
  37. package/dist/runtime-worker.js +1254 -1253
  38. package/dist/sandbox-workspace-session.js +264 -264
  39. package/dist/sdk-a2a.d.ts +9 -9
  40. package/dist/sdk-a2a.js +1 -1
  41. package/dist/sdk-agent.d.ts +12 -12
  42. package/dist/sdk-agent.js +1 -1
  43. package/dist/sdk-coding.d.ts +16 -16
  44. package/dist/sdk-coding.js +1 -1
  45. package/dist/sdk-experimental-memory.d.ts +3 -3
  46. package/dist/sdk-experimental-memory.js +1 -1
  47. package/dist/sdk-llm.js +1 -1
  48. package/dist/sdk-mcp.js +1 -1
  49. package/dist/sdk-media.js +1 -1
  50. package/dist/sdk-repl.d.ts +12 -12
  51. package/dist/sdk-repl.js +1 -1
  52. package/dist/sdk-runtime.d.ts +11 -11
  53. package/dist/sdk-runtime.js +1 -1
  54. package/dist/sdk-sandbox.js +1 -1
  55. package/dist/sdk-session.d.ts +5 -5
  56. package/dist/sdk-session.js +1 -1
  57. package/dist/sdk-skills.js +1 -1
  58. package/dist/semantic-worker.js +59 -59
  59. package/dist/types-chunks/{bash-prefix-extractor.d-B36OQwNA.d.ts → bash-prefix-extractor.d-DcHi4vz5.d.ts} +2 -2
  60. package/dist/types-chunks/{capsule.d-DEncDNzD.d.ts → capsule.d-CjNNucoy.d.ts} +2 -2
  61. package/dist/types-chunks/{controller.d-C1YdP_pQ.d.ts → controller.d-BcUJlVOt.d.ts} +1 -1
  62. package/dist/types-chunks/{controller.d-Dif9pbC9.d.ts → controller.d-C-GjOuPV.d.ts} +8 -1
  63. package/dist/types-chunks/{guardrail.d-DhpnJv4Y.d.ts → guardrail.d-BuI5uypW.d.ts} +8 -2
  64. package/dist/types-chunks/{history-retrieval.d-YJQpQt7h.d.ts → history-retrieval.d-BjJTJtKF.d.ts} +1 -1
  65. package/dist/types-chunks/{public-api.d-D4q3WxKq.d.ts → public-api.d-hYcrNiNt.d.ts} +9 -4
  66. package/dist/types-chunks/{repl.d-D4ye29Kk.d.ts → repl.d-DSQdq_FY.d.ts} +5 -5
  67. package/dist/types-chunks/{review-inbox.d-C1_xZ-yg.d.ts → review-inbox.d-D2EtBlPt.d.ts} +1 -1
  68. package/dist/types-chunks/{run-manager.d-D30IvnwV.d.ts → run-manager.d-i7Q30bns.d.ts} +1 -1
  69. package/dist/types-chunks/{sdk-session-DIU6sHa2.d.ts → sdk-session-CAL2IZsM.d.ts} +2 -2
  70. package/dist/types-chunks/{shell-command-sets.d-rIHkZ_VR.d.ts → shell-command-sets.d-BLjNQYPi.d.ts} +1 -1
  71. package/dist/types-chunks/{types.d-sW-OqiFt.d.ts → types.d-BSFS8--Y.d.ts} +33 -2
  72. package/dist/types-chunks/{types.d-COhAF5Xo.d.ts → types.d-CqIcGQlc.d.ts} +1 -1
  73. package/dist/types-chunks/{types.d-Bz5Y-PD9.d.ts → types.d-DNIzbJD_.d.ts} +2 -2
  74. package/dist/types-chunks/{utils.d-B65ozSTV.d.ts → utils.d-CeM3tG-E.d.ts} +5 -5
  75. package/package.json +2 -2
  76. package/dist/chunks/agent-Z64QF7KG.js +0 -2
  77. package/dist/chunks/argument-completer-HIJBXRUT.js +0 -2
  78. package/dist/chunks/chunk-UWKM3HNY.js +0 -319
  79. package/dist/chunks/compaction-config-E4TFBCDJ.js +0 -2
  80. package/dist/chunks/dist-M3JV4PNA.js +0 -2
  81. package/dist/chunks/host-SJHHJBPB.js +0 -2
  82. package/dist/chunks/run-manager-T5QGWNON.js +0 -2
  83. package/dist/chunks/utils-2FHVIO6X.js +0 -2
@@ -1,802 +1,12 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- var Gc=Object.defineProperty;var i=(e,t)=>Gc(e,"name",{value:t,configurable:!0});var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Tr,ra,ia=Pt(()=>{Tr=class{static{i(this,"WebSocketStub")}},ra=Tr});var dn,oa=Pt(()=>{"use strict";ia();dn=global;dn.WebSocket||=ra;dn.window||=global;dn.self||=global;dn.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var sa,Rr,aa=Pt(()=>{sa=i(()=>{},"noop"),Rr={initialize:sa,connectToDevTools:sa}});var Bg={};var ca=Pt(()=>{"use strict";oa();aa();Rr.initialize();Rr.connectToDevTools()});import Ye from"node:fs/promises";import sv from"node:os";import Qe from"node:path";import R from"fs/promises";import js from"fs";import P from"path";import Rn from"path";import{createHash as Zc}from"crypto";import{execFile as Jc}from"child_process";import Yc from"path";import{promisify as Qc}from"util";var vv=Qc(Jc);function Tn(e){if(!(!e||!e.trim()))return Yc.resolve(e).replace(/\\/g,"/")}i(Tn,"normalizePath");function gi(e){let t=Tn(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=Tn(e.runtimeInfo?.executionCwd??t),r=Tn(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}i(gi,"resolveSessionRuntimeInfo");var Ze="_unknown",yi=80;function ed(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}i(ed,"caseFold");function td(e){return ed(Rn.resolve(e).replace(/\\/g,"/"))}i(td,"normalizeRoot");function wi(e){return Zc("sha256").update(e).digest("hex").slice(0,10)}i(wi,"shortHash");function nd(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>yi?t.slice(t.length-yi):t}i(nd,"slugify");function rd(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=td(e),n=nd(t),r=n?`${n}-${wi(t)}`:wi(t),o=Rn.basename(Rn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:o}}i(rd,"deriveProjectKeyFromRoot");function vi(e){let t=gi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return rd(n)}i(vi,"deriveProjectKeyFromData");import tn from"node:fs/promises";import mt from"node:path";import{AsyncLocalStorage as id}from"node:async_hooks";var od=new id;function Mt(e){let t=od.getStore()?.credential;return t?et(e,t,new WeakMap):e}i(Mt,"redactScopedProviderCredential");function et(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(a,t,n));return s}let o={};n.set(e,o);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=s.split(t).join("[REDACTED_CREDENTIAL]");o[c]=et(a.value,t,n)}return o}i(et,"redactCredentialValue");import{AsyncLocalStorage as sd}from"node:async_hooks";var Gv=new sd;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},bi={...tt,multimodalSupport:"image-input"},Ot={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},ki={...Ot,multimodalSupport:"image-input"};import Tb from"@anthropic-ai/sdk";import{parse as pb}from"partial-json";import Xb from"openai";import{ClientSideConnection as ck,PROTOCOL_VERSION as dk,ndJsonStream as lk}from"@agentclientprotocol/sdk";var tk=Object.freeze({status:"terminated"}),nk=Object.freeze({status:"already-exited"}),rk=Object.freeze({status:"unknown"}),ik=String.raw`
3
- using System;
4
- using System.Runtime.InteropServices;
5
- using System.Text;
6
- public static class KodaXNativeProcessSnapshot {
7
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
8
- private struct ProcessEntry32 {
9
- public uint dwSize;
10
- public uint cntUsage;
11
- public uint th32ProcessID;
12
- public IntPtr th32DefaultHeapID;
13
- public uint th32ModuleID;
14
- public uint cntThreads;
15
- public uint th32ParentProcessID;
16
- public int pcPriClassBase;
17
- public uint dwFlags;
18
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
19
- public string szExeFile;
20
- }
21
- [DllImport("kernel32.dll", SetLastError = true)]
22
- private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId);
23
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
24
- private static extern bool Process32First(IntPtr snapshot, ref ProcessEntry32 entry);
25
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
26
- private static extern bool Process32Next(IntPtr snapshot, ref ProcessEntry32 entry);
27
- [StructLayout(LayoutKind.Sequential)]
28
- private struct FileTime {
29
- public uint Low;
30
- public uint High;
31
- }
32
- [DllImport("kernel32.dll", SetLastError = true)]
33
- private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
34
- [DllImport("kernel32.dll", SetLastError = true)]
35
- private static extern bool GetProcessTimes(IntPtr process, out FileTime creation, out FileTime exit, out FileTime kernel, out FileTime user);
36
- [DllImport("kernel32.dll", SetLastError = true)]
37
- private static extern bool TerminateProcess(IntPtr process, uint exitCode);
38
- [DllImport("kernel32.dll")]
39
- private static extern void GetSystemTimeAsFileTime(out FileTime systemTime);
40
- [DllImport("kernel32.dll")]
41
- private static extern bool CloseHandle(IntPtr handle);
42
- private static ulong ReadCreationTime(uint processId) {
43
- var process = OpenProcess(0x1000, false, processId);
44
- if (process == IntPtr.Zero) return 0;
45
- try {
46
- FileTime creation, exit, kernel, user;
47
- if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
48
- return ((ulong)creation.High << 32) | creation.Low;
49
- } finally {
50
- CloseHandle(process);
51
- }
52
- }
53
- public static int TerminateExact(uint processId, ulong expectedCreationTime) {
54
- var process = OpenProcess(0x1001, false, processId);
55
- if (process == IntPtr.Zero) return 0;
56
- try {
57
- FileTime creation, exit, kernel, user;
58
- if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
59
- var actual = (((ulong)creation.High << 32) | creation.Low) / 10000;
60
- if (actual != expectedCreationTime) return 2;
61
- return TerminateProcess(process, 1) ? 1 : 0;
62
- } finally {
63
- CloseHandle(process);
64
- }
65
- }
66
- public static string ReadRows() {
67
- FileTime cutoffTime;
68
- GetSystemTimeAsFileTime(out cutoffTime);
69
- var cutoff = (((ulong)cutoffTime.High << 32) | cutoffTime.Low) / 10000;
70
- var snapshot = CreateToolhelp32Snapshot(2, 0);
71
- if (snapshot == new IntPtr(-1)) return string.Empty;
72
- var rows = new StringBuilder();
73
- var entry = new ProcessEntry32();
74
- entry.dwSize = (uint)Marshal.SizeOf(entry);
75
- try {
76
- if (!Process32First(snapshot, ref entry)) return string.Empty;
77
- do {
78
- var creationTime = ReadCreationTime(entry.th32ProcessID) / 10000;
79
- if (creationTime == 0 || creationTime <= cutoff) {
80
- rows.Append(entry.th32ProcessID).Append(',').Append(entry.th32ParentProcessID).Append(',').Append(creationTime).Append('\n');
81
- }
82
- entry.dwSize = (uint)Marshal.SizeOf(entry);
83
- } while (Process32Next(snapshot, ref entry));
84
- return rows.ToString();
85
- } finally {
86
- CloseHandle(snapshot);
87
- }
88
- }
89
- }`;import Ri from"node:fs";import _i from"node:os";import Ai from"node:path";var _d="gpt-5.4",Ad="auto-gemini-3",Pd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Md=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Pi(e){let t=new Set,n=[];for(let r of e){let o=r.trim();if(!o)continue;let s=o.toLowerCase();t.has(s)||(t.add(s),n.push(o))}return n}i(Pi,"dedupePreserveOrder");function Od(){let e=Ai.join(_i.homedir(),".codex","config.toml");try{return Ri.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Od,"readCodexConfiguredModel");function Nd(){let e=Ai.join(_i.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ri.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}i(Nd,"readGeminiConfiguredModel");function Oe(){return Od()||_d}i(Oe,"getCodexCliDefaultModel");function Ne(){return Nd()||Ad}i(Ne,"getGeminiCliDefaultModel");function nt(){return Pi([Oe(),...Pd])}i(nt,"getCodexCliKnownModels");function rt(){return Pi([Ne(),...Md])}i(rt,"getGeminiCliKnownModels");var Wk=Ne(),Hk=rt();var rx=Oe(),ix=nt();import{existsSync as Hd,readFileSync as zd}from"node:fs";import De from"node:path";import{fileURLToPath as qd}from"node:url";var Mi=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Oi=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Ni=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Li=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Di=["max_tokens","max_completion_tokens"],$i=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Fi=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}i(ke,"requireString");function Le(e,t){if(e!==void 0)return ke(e,t)}i(Le,"optionalString");function Bi(e,t){if(e!==void 0){if(typeof e!="string"||!Di.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Di.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Bi,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}i(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}i(D,"optionalBoolean");function ji(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}i(ji,"optionalStringArray");function Dd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=ke(o,`${t}.${r}`);return n}i(Dd,"optionalStringMap");function $d(e,t){if(e!==void 0){if(typeof e!="string"||!Li.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Li.join(", ")}, got ${JSON.stringify(e)}`);return e}}i($d,"optionalReasoningPreset");function Pn(e,t){if(typeof e!="string"||!Mi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Pn,"requireReasoningCapability");function Fd(e,t){if(typeof e!="string"||!Oi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Fd,"requireEffortStrategy");function jd(e,t){if(e!==void 0){if(typeof e!="string"||!Ni.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ni.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(jd,"optionalThinkingStrategy");function Ki(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Fd(e.effortStrategy,`${t}.effortStrategy`),r=$d(e.reasoningPreset,`${t}.reasoningPreset`),o=jd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=Le(e.defaultEffort,`${t}.defaultEffort`),a=Dd(e.effortAliases,`${t}.effortAliases`),c=ji(e.disabledEfforts,`${t}.disabledEfforts`),d=ji(e.localRejectEfforts,`${t}.localRejectEfforts`),l=D(e.allowCustomEffort,`${t}.allowCustomEffort`),u=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),m=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),o!==void 0&&(y.thinkingStrategy=o),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...Le(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:Le(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return l!==void 0&&(y.allowCustomEffort=l),u!==void 0&&(y.supportsReasoningEffort=u),f!==void 0&&(y.supportsReasoningSummary=f),p!==void 0&&(y.supportsEncryptedReasoningReplay=p),m!==void 0&&(y.supportsAdaptiveThinking=m),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}i(Ki,"validateReasoningProfile");function Ui(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Ki(n,`${t}.reasoningProfile`):Ki(r,`${t}.reasoningCapabilityV2`)}i(Ui,"validateReasoningProfileField");function Kd(e,t){if(typeof e!="string"||!$i.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$i.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Kd,"requireProfileName");function Bd(e,t){if(typeof e!="string"||!Fi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Fi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Bd,"requireVerifyStrategy");function Ud(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=Le(e.wireModel,`${t}.wireModel`),o=Le(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=Bi(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=D(e.replayReasoningContent,`${t}.replayReasoningContent`),u=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:Pn(e.reasoningCapability,`${t}.reasoningCapability`),m=Ui(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),o!==void 0&&(g.displayName=o),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),p!==void 0&&(g.reasoningCapability=p),m!==void 0&&(g.reasoningProfile=m),l!==void 0&&(g.replayReasoningContent=l),u!==void 0&&(g.strictThinkingSignature=u),f!==void 0&&(g.streamMaxDurationMs=f),g}i(Ud,"validateModelDescriptor");function Xd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=Pn(o,`${t}.${r}`);return n}i(Xd,"validateModelReasoningCapabilities");function Wd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),o=Pn(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ui(e,`providers.${t}`),a=Kd(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Bd(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),l=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=Bi(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),p=D(e.supportsThinking,`providers.${t}.supportsThinking`),m=Xd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=Le(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Ud(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:o,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),l!==void 0&&(w.maxOutputTokens=l),u!==void 0&&(w.maxOutputTokensField=u),f!==void 0&&(w.thinkingBudgetCap=f),p!==void 0&&(w.supportsThinking=p),m!==void 0&&(w.modelReasoningCapabilities=m),n&&(w.cliBridge=!0),w}i(Wd,"validateProviderEntry");function Xi(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,o]of Object.entries(e.providers))n[r]=Wd(o,r);return{version:1,updatedAt:t,providers:n}}i(Xi,"validateProviderCapabilitiesJson");var Vd=Object.freeze({native:tt,"image-input-native":bi,"cli-bridge":Ot,"image-input-cli-bridge":ki}),$t=null;function Gd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(qd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Hd(n))return n;return t[0]}i(Gd,"resolveJsonPath");function Jd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Wi(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Wi(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(Jd,"deepFreezeSnapshot");function Wi(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}i(Wi,"freezeReasoningProfile");function Yd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}i(Yd,"resolveCliBridgeModels");function Qd(e,t){let n=Vd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let o=Yd(e),s={model:o.model,models:o.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}i(Qd,"buildSnapshot");function Hi(){if($t)return $t;let e=Gd(),t;try{let o=zd(e,"utf8");t=JSON.parse(o)}catch(o){let s=o instanceof Error?o.message:String(o);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Xi(t),r={};for(let[o,s]of Object.entries(n.providers))r[o]=Jd(Qd(o,s));return $t=Object.freeze(r),$t}i(Hi,"getProviderSnapshots");import Rx from"@anthropic-ai/sdk";var Ft=Hi();var zi=process.env.KODAX_PROVIDER??"zhipu-coding";var Al=[];function z(e){let t=Mt(e),n=Al.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${lo(t)}
90
- `)}catch{}}i(z,"emitKodaXDiagnostic");function lo(e){let t=Mt(e),n=Pl(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}i(lo,"formatKodaXDiagnostic");function Pl(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}i(Pl,"formatDiagnosticDetail");var it=class e{static{i(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??Ml,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},uo=0;function Ml(){uo+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${uo}-${e}`}i(Ml,"defaultNextSpanId");var fo=0;function Ol(){fo+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${fo}-${e}`}i(Ol,"defaultNextTraceId");function Fn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Ol)(),r=t(),o=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:o},c=!1,d,l,u=new it({id:`${n}-root`,traceId:n,name:o,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}i(Fn,"createTrace");var jn=[];function Kn(e){for(let t of jn)try{t.onSpanStart(e)}catch{}}i(Kn,"_emitSpanStart");function Bn(e){for(let t of jn)try{t.onSpanEnd(e)}catch{}}i(Bn,"_emitSpanEnd");function Un(e){for(let t of jn)try{t.onTraceEnd(e)}catch{}}i(Un,"_emitTraceEnd");var jt=class{static{i(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Fn({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Kn,onSpanEnd:Bn,onTraceEnd:Un})}},po=new jt;var jl=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var hI=new Set(jl);import{spawnSync as Kt}from"node:child_process";import{readFileSync as su}from"node:fs";var Bt=5e3,cC=String.raw`
91
- 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
- }`,dC=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
- }`,au=String.raw`
166
- using System;
167
- using System.Runtime.InteropServices;
168
- using System.Text;
169
- public static class KodaXNativeProcessSnapshot {
170
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
171
- private struct ProcessEntry32 {
172
- public uint dwSize;
173
- public uint cntUsage;
174
- public uint th32ProcessID;
175
- public IntPtr th32DefaultHeapID;
176
- public uint th32ModuleID;
177
- public uint cntThreads;
178
- public uint th32ParentProcessID;
179
- public int pcPriClassBase;
180
- public uint dwFlags;
181
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
182
- public string szExeFile;
183
- }
184
- [DllImport("kernel32.dll", SetLastError = true)]
185
- private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId);
186
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
187
- private static extern bool Process32First(IntPtr snapshot, ref ProcessEntry32 entry);
188
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
189
- private static extern bool Process32Next(IntPtr snapshot, ref ProcessEntry32 entry);
190
- [StructLayout(LayoutKind.Sequential)]
191
- private struct FileTime {
192
- public uint Low;
193
- public uint High;
194
- }
195
- [DllImport("kernel32.dll", SetLastError = true)]
196
- private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
197
- [DllImport("kernel32.dll", SetLastError = true)]
198
- private static extern bool GetProcessTimes(IntPtr process, out FileTime creation, out FileTime exit, out FileTime kernel, out FileTime user);
199
- [DllImport("kernel32.dll", SetLastError = true)]
200
- private static extern bool TerminateProcess(IntPtr process, uint exitCode);
201
- [DllImport("kernel32.dll")]
202
- private static extern void GetSystemTimeAsFileTime(out FileTime systemTime);
203
- [DllImport("kernel32.dll")]
204
- private static extern bool CloseHandle(IntPtr handle);
205
- private static ulong ReadCreationTime(uint processId) {
206
- var process = OpenProcess(0x1000, false, processId);
207
- if (process == IntPtr.Zero) return 0;
208
- try {
209
- FileTime creation, exit, kernel, user;
210
- if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
211
- return ((ulong)creation.High << 32) | creation.Low;
212
- } finally {
213
- CloseHandle(process);
214
- }
215
- }
216
- public static int TerminateExact(uint processId, ulong expectedCreationTime) {
217
- var process = OpenProcess(0x1001, false, processId);
218
- if (process == IntPtr.Zero) return 0;
219
- try {
220
- FileTime creation, exit, kernel, user;
221
- if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
222
- var actual = (((ulong)creation.High << 32) | creation.Low) / 10000;
223
- if (actual != expectedCreationTime) return 2;
224
- return TerminateProcess(process, 1) ? 1 : 0;
225
- } finally {
226
- CloseHandle(process);
227
- }
228
- }
229
- public static string ReadRows() {
230
- FileTime cutoffTime;
231
- GetSystemTimeAsFileTime(out cutoffTime);
232
- var cutoff = (((ulong)cutoffTime.High << 32) | cutoffTime.Low) / 10000;
233
- var snapshot = CreateToolhelp32Snapshot(2, 0);
234
- if (snapshot == new IntPtr(-1)) return string.Empty;
235
- var rows = new StringBuilder();
236
- var entry = new ProcessEntry32();
237
- entry.dwSize = (uint)Marshal.SizeOf(entry);
238
- try {
239
- if (!Process32First(snapshot, ref entry)) return string.Empty;
240
- do {
241
- var creationTime = ReadCreationTime(entry.th32ProcessID) / 10000;
242
- if (creationTime == 0 || creationTime <= cutoff) {
243
- rows.Append(entry.th32ProcessID).Append(',').Append(entry.th32ParentProcessID).Append(',').Append(creationTime).Append('\n');
244
- }
245
- entry.dwSize = (uint)Marshal.SizeOf(entry);
246
- } while (Process32Next(snapshot, ref entry));
247
- return rows.ToString();
248
- } finally {
249
- CloseHandle(snapshot);
250
- }
251
- }
252
- }`,lC=Object.freeze({status:"terminated"}),uC=Object.freeze({status:"already-exited"}),fC=Object.freeze({status:"unknown"});function cu(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).flatMap(o=>{if(typeof o!="object"||o===null)return[];let s=o,a=Number(s.pid),c=Number(s.parentPid),d=typeof s.creationTime=="string"?s.creationTime:String(s.creationTime??"0");return!Number.isFinite(a)||a<=0||!Number.isFinite(c)?[]:[{pid:a,parentPid:c,creationTime:/^\d+$/.test(d)?d:"0"}]})}catch{return[]}}i(cu,"parseWindowsProcessSnapshotJson");function du(e){let t=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-])(\d{3})$/.exec(e);if(!t)return;let[,n,r,o,s,a,c,d,l,u]=t,f=Date.UTC(Number(n),Number(r)-1,Number(o),Number(s),Number(a),Number(c),Number(d.slice(0,3))),p=Number(u)*6e4*(l==="+"?1:-1),m=f-p;if(Number.isFinite(m))return{identity:(BigInt(m)+11644473600000n).toString(),unixMs:m}}i(du,"parseWmicCreationTime");function lu(){let e=["$cutoff = [DateTime]::UtcNow","$items = try { @(Get-CimInstance Win32_Process -ErrorAction Stop) } catch { @(Get-WmiObject Win32_Process -ErrorAction Stop) }","$rows = @($items | ForEach-Object {"," $creationTime = '0'"," try {"," $created = $_.CreationDate"," if ($created -isnot [DateTime]) { $created = [System.Management.ManagementDateTimeConverter]::ToDateTime([string]$created) }"," $created = $created.ToUniversalTime()"," if ($created -le $cutoff) { $creationTime = ([long][Math]::Floor($created.ToFileTimeUtc() / 10000)).ToString() }"," } catch {}"," [PSCustomObject]@{ pid = [int]$_.ProcessId; parentPid = [int]$_.ParentProcessId; creationTime = $creationTime }","})","$rows | ConvertTo-Json -Compress"].join(`
253
- `),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(!t.error&&t.status===0){let s=cu(t.stdout);if(s.length>0)return s}let n=Date.now(),r=Kt("wmic",["process","get","CreationDate,ParentProcessId,ProcessId","/format:list"],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(r.error||r.status!==0)return;let o=r.stdout.split(/\r?\n\s*\r?\n/).flatMap(s=>{let a=new Map(s.split(/\r?\n/).flatMap(f=>{let p=f.indexOf("=");return p<0?[]:[[f.slice(0,p),f.slice(p+1)]]})),c=Number(a.get("ProcessId")),d=Number(a.get("ParentProcessId")),l=a.get("CreationDate"),u=l===void 0?void 0:du(l);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)||u===void 0||u.unixMs>n?[]:[{pid:c,parentPid:d,creationTime:u.identity}]});return o.length>0?o:void 0}i(lu,"readWindowsProcessSnapshotFallback");function uu(){let e=["$source = @'",au,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
254
- `),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(t.error||t.status!==0)return;let n=t.stdout.split(/\r?\n/).flatMap(r=>{let[o,s,a="0"]=r.split(",",3),c=Number(o),d=Number(s);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)?[]:[{pid:c,parentPid:d,creationTime:a}]});return n.length>0?n:void 0}i(uu,"readWindowsProcessSnapshotNative");function fu(){return uu()??lu()}i(fu,"readWindowsProcessSnapshot");function Xn(e){if(!Number.isInteger(e)||e<=0)return;if(process.platform==="win32"){let r=fu()?.find(o=>o.pid===e);return r?.creationTime==="0"?void 0:r?.creationTime}if(process.platform==="linux")try{let r=su(`/proc/${e}/stat`,"utf8"),o=r.slice(r.lastIndexOf(")")+2).trim().split(/\s+/);return o[19]===void 0?void 0:`linux:${o[19]}`}catch{return}let t=Kt("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:Bt,windowsHide:!0}),n=t.status===0?t.stdout.trim():"";return n===""?void 0:`${process.platform}:${n}`}i(Xn,"readProcessStartIdentity");var vo="KODAX_EFFECT_JOB_PAYLOAD";var mu=String.raw`
255
- using System;
256
- using System.IO;
257
- using System.Runtime.InteropServices;
258
- using System.Threading;
259
-
260
- public static class KodaXEffectJob {
261
- [StructLayout(LayoutKind.Sequential)]
262
- private struct IoCounters {
263
- public ulong ReadOperationCount;
264
- public ulong WriteOperationCount;
265
- public ulong OtherOperationCount;
266
- public ulong ReadTransferCount;
267
- public ulong WriteTransferCount;
268
- public ulong OtherTransferCount;
269
- }
270
-
271
- [StructLayout(LayoutKind.Sequential)]
272
- private struct BasicLimitInformation {
273
- public long PerProcessUserTimeLimit;
274
- public long PerJobUserTimeLimit;
275
- public uint LimitFlags;
276
- public UIntPtr MinimumWorkingSetSize;
277
- public UIntPtr MaximumWorkingSetSize;
278
- public uint ActiveProcessLimit;
279
- public UIntPtr Affinity;
280
- public uint PriorityClass;
281
- public uint SchedulingClass;
282
- }
283
-
284
- [StructLayout(LayoutKind.Sequential)]
285
- private struct ExtendedLimitInformation {
286
- public BasicLimitInformation BasicLimitInformation;
287
- public IoCounters IoInfo;
288
- public UIntPtr ProcessMemoryLimit;
289
- public UIntPtr JobMemoryLimit;
290
- public UIntPtr PeakProcessMemoryUsed;
291
- public UIntPtr PeakJobMemoryUsed;
292
- }
293
-
294
- [StructLayout(LayoutKind.Sequential)]
295
- private struct BasicAccountingInformation {
296
- public long TotalUserTime;
297
- public long TotalKernelTime;
298
- public long ThisPeriodTotalUserTime;
299
- public long ThisPeriodTotalKernelTime;
300
- public uint TotalPageFaultCount;
301
- public uint TotalProcesses;
302
- public uint ActiveProcesses;
303
- public uint TotalTerminatedProcesses;
304
- }
305
-
306
- [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
307
- private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
308
-
309
- [DllImport("kernel32.dll", SetLastError = true)]
310
- private static extern bool SetInformationJobObject(
311
- IntPtr job,
312
- int infoClass,
313
- ref ExtendedLimitInformation info,
314
- uint length);
315
-
316
- [DllImport("kernel32.dll", SetLastError = true)]
317
- private static extern bool QueryInformationJobObject(
318
- IntPtr job,
319
- int infoClass,
320
- out BasicAccountingInformation info,
321
- uint length,
322
- IntPtr returnLength);
323
-
324
- [DllImport("kernel32.dll", SetLastError = true)]
325
- private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
326
-
327
- [DllImport("kernel32.dll", SetLastError = true)]
328
- private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
329
-
330
- [DllImport("kernel32.dll", SetLastError = true)]
331
- private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
332
-
333
- [DllImport("kernel32.dll", SetLastError = true)]
334
- private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
335
-
336
- [DllImport("kernel32.dll", SetLastError = true)]
337
- private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
338
-
339
- [DllImport("kernel32.dll", SetLastError = true)]
340
- private static extern bool CloseHandle(IntPtr handle);
341
-
342
- private const uint Synchronize = 0x00100000;
343
- private const uint ProcessTerminate = 0x0001;
344
- private const uint ProcessSetQuota = 0x0100;
345
- private const uint ProcessQueryLimitedInformation = 0x1000;
346
- private const uint JobObjectLimitKillOnJobClose = 0x00002000;
347
- private const uint WaitObject0 = 0;
348
-
349
- private static void Require(bool result, string operation) {
350
- if (!result) throw new InvalidOperationException(
351
- operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
352
- }
353
-
354
- private static void PublishReady() {
355
- Console.Out.WriteLine("READY");
356
- Console.Out.Flush();
357
- }
358
-
359
- public static void Run(uint targetPid, uint ownerPid, string jobName) {
360
- var job = CreateJobObjectW(IntPtr.Zero, jobName);
361
- if (job == IntPtr.Zero) throw new InvalidOperationException(
362
- "CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
363
- var processAccess = Synchronize | ProcessTerminate | ProcessSetQuota | ProcessQueryLimitedInformation;
364
- var target = OpenProcess(processAccess, false, targetPid);
365
- var owner = OpenProcess(Synchronize, false, ownerPid);
366
- if (target == IntPtr.Zero || owner == IntPtr.Zero) {
367
- if (target != IntPtr.Zero) CloseHandle(target);
368
- if (owner != IntPtr.Zero) CloseHandle(owner);
369
- CloseHandle(job);
370
- throw new InvalidOperationException(
371
- "OpenProcess failed with Win32 error " + Marshal.GetLastWin32Error());
372
- }
373
- try {
374
- var limits = new ExtendedLimitInformation();
375
- limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
376
- Require(SetInformationJobObject(
377
- job,
378
- 9,
379
- ref limits,
380
- (uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
381
- "SetInformationJobObject");
382
- Require(AssignProcessToJobObject(job, target), "AssignProcessToJobObject");
383
- PublishReady();
384
-
385
- uint targetExitCode = 1;
386
- while (true) {
387
- if (WaitForSingleObject(owner, 0) == WaitObject0) break;
388
- if (WaitForSingleObject(target, 0) == WaitObject0) {
389
- GetExitCodeProcess(target, out targetExitCode);
390
- break;
391
- }
392
- Thread.Sleep(20);
393
- }
394
-
395
- Require(TerminateJobObject(job, targetExitCode), "TerminateJobObject");
396
- while (true) {
397
- BasicAccountingInformation accounting;
398
- Require(QueryInformationJobObject(
399
- job,
400
- 1,
401
- out accounting,
402
- (uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
403
- IntPtr.Zero),
404
- "QueryInformationJobObject");
405
- if (accounting.ActiveProcesses == 0) return;
406
- Thread.Sleep(10);
407
- }
408
- } finally {
409
- CloseHandle(owner);
410
- CloseHandle(target);
411
- CloseHandle(job);
412
- }
413
- }
414
- }`,hu=String.raw`
415
- $ErrorActionPreference = 'Stop'
416
- try {
417
- $payload = [Text.Encoding]::UTF8.GetString(
418
- [Convert]::FromBase64String($env:${vo})) | ConvertFrom-Json
419
- Remove-Item Env:${vo} -ErrorAction SilentlyContinue
420
- $source = @'
421
- ${mu}
422
- '@
423
- Add-Type -TypeDefinition $source
424
- [KodaXEffectJob]::Run(
425
- [uint32]$payload.targetPid,
426
- [uint32]$payload.ownerPid,
427
- [string]$payload.jobName)
428
- exit 0
429
- } catch {
430
- [Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
431
- [Console]::Out.Flush()
432
- exit 1
433
- }`,xC=Buffer.from(hu,"utf16le").toString("base64");import{Jimp as WC}from"jimp";var Eu=Math.floor(3.75*1024*1024);var Cu=1440*60*1e3;import{fileURLToPath as Zu}from"url";import{dirname as ef}from"path";var tf=Zu(import.meta.url),GR=ef(tf);import{readFile as af,readdir as cf}from"fs/promises";import{join as xe,relative as df}from"path";import _o from"yaml";var nf=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function rf(e){let t=e.split(`
434
- `),n=[];for(let r of t){let o=r.indexOf(":");if(o>0){let s=r.slice(0,o).trim(),a=r.slice(o+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
435
- `)}i(rf,"sanitizeYaml");function Ao(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
436
- `).replace(/\r/g,`
437
- `).trimStart();if(!n.startsWith(`---
438
- `)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
439
- ---
440
- `,4);if(r===-1){let c=n.indexOf(`
441
- ---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let o=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=_o.parse(o)??{}}catch{a=_o.parse(rf(o))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}i(Ao,"parseYamlFrontmatter");function Po(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}i(Po,"normalizeAllowedToolsString");function of(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}i(of,"normalizeYamlHookEntry");function sf(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>of(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}i(sf,"normalizeYamlHookEntryList");function Mo(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of nf){let o=sf(t[r]);o&&(n[r]=o)}return Object.keys(n).length>0?n:void 0}i(Mo,"normalizeYamlHookMap");function Oo(e){let[t,n]=Ao(e,{throwOnMissing:!0});if(!t)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!t.name||typeof t.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!t.description||typeof t.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:t.name,description:t.description,disableModelInvocation:t["disable-model-invocation"]===!0,userInvocable:t["user-invocable"]!==!1,allowedTools:Po(t["allowed-tools"]),context:t.context==="fork"?"fork":void 0,agent:typeof t.agent=="string"?t.agent:void 0,argumentHint:typeof t["argument-hint"]=="string"?t["argument-hint"]:void 0,model:typeof t.model=="string"?t.model:void 0,hooks:Mo(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}i(Oo,"parseSkillMarkdown");async function Ut(e,t){let n=xe(e,"SKILL.md");try{let r=await af(n,"utf-8"),{frontmatter:o,body:s}=Oo(r),[a,c,d,l,u]=await Promise.all([$e(xe(e,"scripts")),$e(xe(e,"references")),$e(xe(e,"assets")),$e(xe(e,"templates")),$e(xe(e,"resources"))]);return{...o,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}i(Ut,"loadFullSkill");async function $e(e,t=e){let n=[];try{let r=await cf(e,{withFileTypes:!0});r.sort((o,s)=>o.name.localeCompare(s.name));for(let o of r){let s=xe(e,o.name);if(o.isDirectory()){n.push(...await $e(s,t));continue}o.isFile()&&n.push({name:o.name,path:s,relativePath:df(t,s).replace(/\\/g,"/")})}}catch{}return n}i($e,"loadSkillFiles");var No=64*1024,Lo=256*1024;var h_=Xn(process.pid);var B_=1024*1024;var wA=16*1024;var TA=16*1024;import{execSync as zf}from"child_process";import qf from"path";var Vf=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function Jo(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Vf)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let o=t.split(/\s+/);if(o.includes("-f")||o.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let o=t.split(/\s+/).slice(1);if(o.length>0&&!o.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}i(Jo,"isSingleSafeDynamicContextCommand");function Gf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&qf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Jo(r[0]);for(let o of r){let s=o?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Jo(s))return!1}return!0}i(Gf,"isSafeDynamicContextCommand");function Yo(e){let t=[],n="",r=!1,o="";for(let s=0;s<e.length;s++){let a=e[s];r?a===o?r=!1:n+=a:a==='"'||a==="'"?(r=!0,o=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}i(Yo,"parseArguments");var zt=class{static{i(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,o=Yo(n);return r=this.resolvePositionalArgs(r,o),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,o)=>{let s=parseInt(o,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,o)=>n[o]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],o;for(;(o=n.exec(t))!==null;)r.push({match:o[0],command:o[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Gf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return zf(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};async function ct(e,t,n){return new zt(n).resolve(e,t)}i(ct,"resolveSkillContent");function Qo(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}i(Qo,"escapeXml");var Gn=120;function qt(e){return e.replace(/\\/g,"/")}i(qt,"formatDisplayPath");function Qf(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))]}i(Qf,"collectSupportFiles");function Zf(e){let t=Qf(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[o,s]of n)s?.length&&r.push(`- ${o}/: ${qt(`${e.path}/${o}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:o,file:s}of t.slice(0,Gn))r.push(`- ${o}/${s.relativePath}: ${qt(s.path)}`);return t.length>Gn&&r.push(`- ... ${t.length-Gn} more files under ${qt(e.path)}`),r}i(Zf,"buildSupportFileContext");function ep(e,t,n){let r=[];r.push(`<skill name="${Qo(e.name)}" location="${Qo(e.path)}">`),r.push(""),r.push(`Skill root: ${qt(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let o=Zf(e);return o.length>0&&(r.push(...o),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
442
- `)}i(ep,"buildSkillBlock");async function Jn(e,t,n){let r=await ct(e.content,t,n);return{content:ep(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}i(Jn,"expandSkillForLLM");import{writeFile as rs}from"node:fs/promises";import he from"node:path";import{existsSync as tp}from"node:fs";import{mkdir as np,readFile as Yn,readdir as rp,stat as es,writeFile as IP}from"node:fs/promises";import ip from"node:os";import re from"node:path";import{fileURLToPath as ts,pathToFileURL as op}from"node:url";import sp from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(ts(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(tp(n))return Fe=await import(op(n).href),Fe;t.push(`relative SDK path not found: ${n}`);try{return Fe=await import(["@kodax-ai","kodax"].join("/")),Fe}catch(r){t.push(`bare-name @kodax-ai/kodax failed: ${r?.code??r?.message}`)}throw new Error(`Cannot locate KodaX SDK from helper script ${import.meta.url}.
443
- Attempted:
444
- - ${t.join(`
445
- - `)}`)}i(me,"loadKodaXSDK");function ap(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
446
- `).replace(/\r/g,`
447
- `).trimStart();if(!t.startsWith(`---
448
- `))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
449
- ---
450
- `,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}i(ap,"extractFrontmatter");function Vt(e){let{yamlText:t,body:n}=ap(e),r=sp.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}i(Vt,"parseSkillMarkdown");async function lt(e){let t=re.join(e,"SKILL.md");if(!(await es(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Yn(t,"utf8"),{frontmatter:o,body:s}=Vt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:o}}i(lt,"loadSkill");async function ut(e){try{return await es(e),!0}catch{return!1}}i(ut,"pathExists");function Gt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,o)=>r+o,0)/e.length,n=e.length>1?e.reduce((r,o)=>r+(o-t)**2,0)/(e.length-1):0;return{mean:dt(t),stddev:dt(Math.sqrt(n)),min:dt(Math.min(...e)),max:dt(Math.max(...e))}}i(Gt,"calculateStats");function dt(e,t=4){return Number(e.toFixed(t))}i(dt,"roundNumber");function Jt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}i(Jt,"formatDelta");function Zo(e){try{return JSON.parse(e)}catch{return null}}i(Zo,"safeJsonParse");function je(e){let t=Zo(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Zo(e.slice(n,r+1))}i(je,"extractJsonObject");async function J(e,t=null){try{return JSON.parse(await Yn(e,"utf8"))}catch{return t}}i(J,"readJsonFile");async function Ke(e,t){let n=re.dirname(ts(e));return Yn(re.resolve(n,t),"utf8")}i(Ke,"loadRelativeText");function $(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
451
-
452
- [truncated ${r} chars]`}i($,"truncateText");function ns(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(o=>o?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?dt(n/t):0}}i(ns,"computePassSummary");async function Qn(e,t=e,n=[]){let r=await rp(t,{withFileTypes:!0}).catch(()=>[]);for(let o of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,o.name);if(o.isDirectory()){await Qn(e,s,n);continue}o.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}i(Qn,"collectFiles");function ft(){return re.join(ip.homedir(),".kodax","skills")}i(ft,"getDefaultSkillsDir");async function F(e){return await np(e,{recursive:!0}),e}i(F,"ensureDirectory");function cp(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}i(cp,"titleFromSlug");function dp(e,t){let n=cp(e);return`---
453
- name: ${e}
454
- description: ${t}
455
- user-invocable: true
456
- allowed-tools: "Read, Grep, Glob"
457
- compatibility: "Optimized for KodaX and Agent Skills style directories."
458
- ---
459
-
460
- # ${n}
461
-
462
- Describe the task this skill handles, the trigger boundary, and the expected outcome.
463
-
464
- ## When to use
465
-
466
- - Use this skill when the user asks for ${n.toLowerCase()}.
467
- - Do not use this skill when the request only needs a short explanation or is out of scope.
468
-
469
- ## Workflow
470
-
471
- 1. Restate the task boundary in one sentence.
472
- 2. Gather the minimum context needed to do the work well.
473
- 3. Execute the task, preferring small, verifiable steps.
474
- 4. Summarize what changed, what was validated, and any remaining risks.
475
-
476
- ## References
477
-
478
- - Put deeper guidance in \`references/\`.
479
- - Put reusable templates or static files in \`assets/\`.
480
- - Put repeatable helper scripts in \`scripts/\`.
481
- `}i(dp,"renderSkillTemplate");function lp(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}i(lp,"renderEvalTemplate");async function up(e){let t=he.resolve(e.baseDir??ft()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await rs(he.join(n,"SKILL.md"),dp(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await rs(he.join(n,"evals","evals.json"),`${lp(e.name)}
482
- `,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}i(up,"initSkill");function fp(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}i(fp,"parseArgs");async function is(e=process.argv){let t=fp(e);t.name||(console.error("Usage: node scripts/init-skill.js <skill-name> [--path <skills-dir>] [--description <text>] [--force] [--no-evals]"),process.exit(1));let n=await up(t);console.log(`Initialized ${n.skillDir}`)}i(is,"main");var pp=!1;pp&&is().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import os from"node:path";var mp=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function pt(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await lt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:o}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!mp.has(d));s.length>0&&t.errors.push(`Unexpected frontmatter keys: ${s.sort().join(", ")}`);let a=typeof r.name=="string"?r.name.trim():"",c=typeof r.description=="string"?r.description.trim():"";if(!a)t.errors.push("Missing required frontmatter field: name");else{/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a)||t.errors.push(`Invalid skill name "${a}". Use lowercase kebab-case and avoid consecutive hyphens.`),a.length>64&&t.errors.push(`Skill name is too long (${a.length}/64).`);let d=os.basename(os.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),o.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(u=>typeof u=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}i(pt,"validateSkillDirectory");async function ss(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await pt(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}i(ss,"main");var hp=!1;hp&&ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Zn,writeFile as ie}from"node:fs/promises";import C from"node:path";function gp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}i(gp,"normalizeAssertion");function yp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}i(yp,"countToolCalls");function wp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}i(wp,"countToolErrors");function vp(e,t){return`${["# Skill Eval Transcript","","## Eval Prompt","",e,"","## Final Response","",t.lastText||"(No final text)","","## Result Flags","",`- success: ${t.success}`,`- signal: ${t.signal??"none"}`,`- interrupted: ${t.interrupted===!0}`,`- limit_reached: ${t.limitReached===!0}`].join(`
483
- `)}
484
- `}i(vp,"renderTranscript");async function bp(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),o=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,l=a;try{d=await Zn(a,"utf8")}catch{d=await Zn(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);o.push(`### ${s}
485
- \`\`\`
486
- ${d}
487
- \`\`\`
488
- (Resolved from ${l})`)}return o.length===0?"":`## Input Files
489
-
490
- ${o.join(`
491
-
492
- `)}
493
-
494
- `}i(bp,"readInputFiles");async function kp(e,t){let n=String(e.prompt??e.query??"").trim();return`${await bp(e.files,t)}${n}`.trim()}i(kp,"buildEvalPrompt");async function xp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),o=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-o}}i(xp,"defaultRunAgent");async function Sp(e,t,n,r){return e==="with_skill"?(await Jn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}i(Sp,"prepareConfigPrompt");async function Ep(e,t,n,r,o){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:yp(o.result.messages),errors_encountered:wp(o.result.messages),output_chars:o.result.lastText.length};await ie(C.join(s,"result.md"),`${o.result.lastText}
495
- `,"utf8"),await ie(C.join(s,"prompt.txt"),`${r}
496
- `,"utf8"),await ie(C.join(e,"transcript.md"),vp(r,o.result),"utf8"),await ie(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:o.result.sessionId,...a},null,2)}
497
- `,"utf8"),await ie(C.join(s,"messages.json"),`${JSON.stringify(o.result.messages,null,2)}
498
- `,"utf8"),await ie(C.join(e,"timing.json"),`${JSON.stringify({total_tokens:o.totalTokens,duration_ms:o.durationMs,total_duration_seconds:Number((o.durationMs/1e3).toFixed(4))},null,2)}
499
- `,"utf8"),await ie(C.join(e,"result.json"),`${JSON.stringify({success:o.result.success,signal:o.result.signal??null,signal_reason:o.result.signalReason??null,interrupted:o.result.interrupted===!0,limit_reached:o.result.limitReached===!0,session_id:o.result.sessionId,execution_metrics:a},null,2)}
500
- `,"utf8")}i(Ep,"writeRunArtifacts");async function Ip(e,t=xp){let n=await Ut(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let o=JSON.parse(await Zn(e.evalsPath,"utf8")),s=Array.isArray(o.evals)?o.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=C.join(r,`eval-${l}`);await F(f),await ie(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(gp).filter(Boolean)},null,2)}
501
- `,"utf8");let p=await kp(u,e),m={};for(let g of a){let v=C.join(f,g);await F(v),m[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await Sp(g,n,p,e),b=await t(h,{...e,configName:g,evalItem:u,runIndex:w});await Ep(y,g,u,h,b),m[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:u.id??l,prompt:u.prompt??u.query??"",configs:m})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}i(Ip,"runEvalWorkspace");function Cp(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}i(Cp,"parseArgs");async function as(e=process.argv){let t=Cp(e);(!t.skillPath||!t.evalsPath||!t.workspaceDir)&&(console.error("Usage: node scripts/run-eval.js --skill-path <dir> --evals <evals.json> --workspace <dir> [--provider anthropic] [--runs 1]"),process.exit(1));let n=await Ip(t),r=`${JSON.stringify(n,null,2)}
502
- `;t.output?(await ie(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}i(as,"main");var Tp=!1;Tp&&as().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Rp,readFile as er,writeFile as ds}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}i(Ee,"normalizeExpectationText");function ls(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(o=>typeof o=="string"?Ee(o):o&&typeof o=="object"&&typeof o.text=="string"?Ee(o.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}i(ls,"normalizeExpectedRubric");function tr(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(tr,"normalizeStringArray");function cs(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}i(cs,"normalizeExpectationEntry");function _p(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],o=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){o.push({text:a,passed:!1,evidence:""});continue}s.add(c),o.push(cs(r[c],a))}if(t.length===0)for(let a of r){let c=cs(a,"");c.text&&o.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:o,user_notes_summary:{uncertainties:tr(n.user_notes_summary?.uncertainties),needs_review:tr(n.user_notes_summary?.needs_review),workarounds:tr(n.user_notes_summary?.workarounds)}}}i(_p,"normalizeParsedGrading");async function nr(e){return(await Rp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(nr,"listDirectories");async function Ap(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),o=T.basename(e),s=T.join(e,"outputs"),a=await J(T.join(n,"eval_metadata.json"),{}),c=await er(T.join(s,"result.md"),"utf8").catch(()=>""),d=await er(T.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await er(T.join(e,"transcript.md"),"utf8").catch(()=>""),u=await J(T.join(s,"metrics.json"),{}),f=await J(T.join(e,"result.json"),{}),p=await J(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:o,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:p}}i(Ap,"loadRunContext");function Pp(e){let t=ls(e.evalMetadata),n=t.length>0?t.map((r,o)=>`${o+1}. ${r}`).join(`
503
- `):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
504
-
505
- Return JSON with this shape:
506
- {
507
- "overall_summary": "short summary",
508
- "expectations": [
509
- {
510
- "text": "expectation text",
511
- "passed": true,
512
- "evidence": "short evidence grounded in the output"
513
- }
514
- ],
515
- "user_notes_summary": {
516
- "uncertainties": [],
517
- "needs_review": [],
518
- "workarounds": []
519
- }
520
- }
521
-
522
- ## Run Metadata
523
- - eval_id: ${e.evalMetadata.eval_id??"unknown"}
524
- - eval_name: ${e.evalMetadata.eval_name??"unknown"}
525
- - config: ${e.configName}
526
- - run_id: ${e.runId}
527
-
528
- ## Eval Prompt
529
- ${$(e.evalMetadata.prompt??e.promptText,4e3)}
530
-
531
- ## Expected Outcome
532
- ${$(e.evalMetadata.expected_output??"",2e3)}
533
-
534
- ## Assertions
535
- ${n}
536
-
537
- ## Final Output
538
- ${$(e.resultText,12e3)}
539
-
540
- ## Result Flags
541
- ${JSON.stringify({success:e.result.success??null,signal:e.result.signal??null,interrupted:e.result.interrupted??!1,limit_reached:e.result.limit_reached??e.result.limitReached??!1},null,2)}
542
-
543
- ## Execution Metrics
544
- ${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.execution_metrics?.total_tool_calls??0,errors_encountered:e.metrics.errors_encountered??e.result.execution_metrics?.errors_encountered??0,output_chars:e.metrics.output_chars??e.result.execution_metrics?.output_chars??e.resultText.length,total_tokens:e.timing.total_tokens??0,total_duration_seconds:e.timing.total_duration_seconds??0},null,2)}
545
-
546
- ## Transcript Excerpt
547
- ${$(e.transcript,5e3)}
548
- `}i(Pp,"buildGradingPrompt");async function us(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(us,"defaultRunJudge");async function Mp(e,t,n=us){let r=await Ap(T.resolve(e)),o=ls(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=Pp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=_p(c,o),l={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},u={summary:ns(d.expectations),expectations:d.expectations,execution_metrics:l,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await ds(T.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
549
- `,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}i(Mp,"gradeRun");async function Op(e,t=us){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),o=[],s=[];for(let c of await nr(n))if(T.basename(c).startsWith("eval-"))for(let d of await nr(c)){let l=T.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await nr(d)){if(!T.basename(u).startsWith("run-"))continue;let f=T.join(u,"grading.json");if(await J(f,null)&&e.overwrite!==!0){s.push(T.relative(n,u).replace(/\\/g,"/"));continue}let m=await Mp(u,e,t);o.push({run:T.relative(n,u).replace(/\\/g,"/"),summary:m.grading.summary,config:m.grading.meta.config,eval_id:m.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:o.length,skipped:s.length,processed_runs:o,skipped_runs:s};return await ds(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
550
- `,"utf8"),a}i(Op,"gradeWorkspace");function Np(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean))}return t}i(Np,"parseArgs");async function fs(e=process.argv){let t=Np(e);t.workspaceDir||(console.error("Usage: node scripts/grade-evals.js <workspace> [--provider anthropic] [--configs with_skill,without_skill] [--overwrite]"),process.exit(1));let n=await Op(t);process.stdout.write(`${JSON.stringify(n,null,2)}
551
- `)}i(fs,"main");var Lp=!1;Lp&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as sr}from"node:fs/promises";import oe from"node:path";import{readFile as Dp,readdir as $p,stat as Fp,writeFile as ps}from"node:fs/promises";import j from"node:path";async function rr(e){return JSON.parse(await Dp(e,"utf8"))}i(rr,"readJson");async function jp(e){try{return await Fp(e),!0}catch{return!1}}i(jp,"pathExists");async function ir(e){return(await $p(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(ir,"listDirectories");async function Yt(e){let t=await jp(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await ir(t)).filter(o=>j.basename(o).startsWith("eval-")),r={};for(let o of n){let s=j.join(o,"eval_metadata.json"),c=(await rr(s).catch(()=>({}))).eval_id??j.basename(o);for(let d of await ir(o)){let l=j.basename(d),u=(await ir(d)).filter(f=>j.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){let p=await rr(j.join(f,"grading.json")).catch(()=>null);if(!p)continue;let m=await rr(j.join(f,"timing.json")).catch(()=>({}));r[l].push({eval_id:c,run_id:j.basename(f),pass_rate:p.summary?.pass_rate??0,passed:p.summary?.passed??0,failed:p.summary?.failed??0,total:p.summary?.total??0,time_seconds:m.total_duration_seconds??p.timing?.total_duration_seconds??0,tokens:m.total_tokens??p.execution_metrics?.output_chars??0,tool_calls:p.execution_metrics?.total_tool_calls??0,errors:p.execution_metrics?.errors_encountered??0,expectations:Array.isArray(p.expectations)?p.expectations:[],notes:[...p.user_notes_summary?.uncertainties??[],...p.user_notes_summary?.needs_review??[],...p.user_notes_summary?.workarounds??[]]})}}}}return r}i(Yt,"loadRunResults");function Kp(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:Gt(a.map(c=>Number(c.pass_rate??0))),time_seconds:Gt(a.map(c=>Number(c.time_seconds??0))),tokens:Gt(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},o=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Jt(r.pass_rate.mean-o.pass_rate.mean),time_seconds:Jt(r.time_seconds.mean-o.time_seconds.mean),tokens:Jt(r.tokens.mean-o.tokens.mean)}}}i(Kp,"summarizeConfigs");function or(e,t,n){let r=Kp(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}i(or,"buildBenchmarkDocument");function Bp(e){let t=[`# Benchmark: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"","| Config | Pass Rate | Time (s) | Tokens |","| --- | --- | --- | --- |"];for(let[n,r]of Object.entries(e.configs))t.push(`| ${n} | ${r.pass_rate.mean} \xB1 ${r.pass_rate.stddev} | ${r.time_seconds.mean} \xB1 ${r.time_seconds.stddev} | ${r.tokens.mean} \xB1 ${r.tokens.stddev} |`);return t.push(""),t.push("## Delta"),t.push(""),t.push(`- Pass rate: ${e.delta.pass_rate}`),t.push(`- Time (s): ${e.delta.time_seconds}`),t.push(`- Tokens: ${e.delta.tokens}`),t.join(`
552
- `)}i(Bp,"renderBenchmarkMarkdown");function Up(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}i(Up,"parseArgs");async function Xp(){let{iterationDir:e,skillName:t}=Up(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Yt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=or(e,t,n),o=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await ps(o,JSON.stringify(r,null,2)),await ps(s,`${Bp(r)}
553
- `),console.log(`Wrote ${o}`),console.log(`Wrote ${s}`)}i(Xp,"main");var Wp=!1;Wp&&Xp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Qt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Qt,"normalizeStringArray");function Hp(e){let t={};for(let[n,r]of Object.entries(e)){let o=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&o.set(d,(o.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(o.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}i(Hp,"summarizeFailureClusters");function zp(e,t,n){let r=je(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Qt(r.key_findings),variance_hotspots:Qt(r.variance_hotspots),suggested_actions:Qt(r.suggested_actions),watchouts:Qt(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}i(zp,"normalizeAnalysisResult");function qp(e){return`${e.agentInstructions.trim()}
554
-
555
- Return JSON with this shape:
556
- {
557
- "verdict": "improves | regresses | mixed | inconclusive",
558
- "release_readiness": "ready | needs_iteration | needs_manual_review",
559
- "recommendation": "short recommendation",
560
- "key_findings": [],
561
- "variance_hotspots": [],
562
- "suggested_actions": [],
563
- "watchouts": []
564
- }
565
-
566
- ## Benchmark Summary
567
- ${$(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.configs,delta:e.benchmark.delta},null,2),12e3)}
568
-
569
- ## Failure Clusters
570
- ${$(JSON.stringify(e.failureClusters,null,2),8e3)}
571
- `}i(qp,"buildAnalysisPrompt");async function Vp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:oe.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(Vp,"defaultRunAnalyst");function Gp(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,o]of n){t.push(`## ${o}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
572
- `)}
573
- `}i(Gp,"renderAnalysisMarkdown");async function Jp(e,t=Vp){let n=oe.resolve(e.workspaceDir),r=oe.resolve(e.benchmarkPath??oe.join(n,"benchmark.json")),o=await J(r,null);if(!o){let m=await Yt(n);if(Object.keys(m).length===0)throw new Error(`No benchmark data found in ${n}`);o=or(n,e.skillName??oe.basename(n),m),await sr(r,`${JSON.stringify(o,null,2)}
574
- `,"utf8")}let s=await Yt(n),a=Hp(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=qp({agentInstructions:c,benchmark:o,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:o}),u=zp(l,o,a),f=oe.resolve(e.outputPath??oe.join(n,"analysis.json")),p=oe.resolve(e.markdownPath??oe.join(n,"analysis.md"));return await sr(f,`${JSON.stringify(u,null,2)}
575
- `,"utf8"),await sr(p,Gp(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:p}}i(Jp,"analyzeBenchmark");function Yp(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(Yp,"parseArgs");async function ms(e=process.argv){let t=Yp(e);t.workspaceDir||(console.error("Usage: node scripts/analyze-benchmark.js <workspace> [--benchmark benchmark.json] [--output analysis.json] [--markdown analysis.md]"),process.exit(1));let n=await Jp(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
576
- `)}i(ms,"main");var Qp=!1;Qp&&ms().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Zp,readFile as hs,writeFile as gs}from"node:fs/promises";import O from"node:path";async function cr(e){return(await Zp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(cr,"listDirectories");function ar(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(ar,"normalizeStringArray");function em(e){let t=je(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:ar(t.strengths_a),strengths_b:ar(t.strengths_b),risks:ar(t.risks)}}i(em,"normalizeComparisonResult");async function tm(e,t,n,r){let o=(await cr(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await cr(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=o[r],c=s[r];if(!a||!c)return null;let d=await J(O.join(e,"eval_metadata.json"),{}),l=await hs(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await hs(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:l},runB:{runDir:c,runId:O.basename(c),configName:n,output:u}}}i(tm,"loadComparisonPair");function nm(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
577
-
578
- Return JSON with this shape:
579
- {
580
- "winner": "A | B | tie | inconclusive",
581
- "confidence": 0.0,
582
- "rationale": "short explanation",
583
- "strengths_a": [],
584
- "strengths_b": [],
585
- "risks": []
586
- }
587
-
588
- Judge only the visible outputs. Do not mention hidden config names in the rationale.
589
-
590
- ## Eval Prompt
591
- ${$(e.evalMetadata.prompt??"",4e3)}
592
-
593
- ## Expected Outcome
594
- ${$(e.evalMetadata.expected_output??"",2e3)}
595
-
596
- ## Assertions
597
- ${$(JSON.stringify(e.evalMetadata.assertions??[],null,2),4e3)}
598
-
599
- ## Candidate A
600
- ${$(t.A.output,12e3)}
601
-
602
- ## Candidate B
603
- ${$(t.B.output,12e3)}
604
- `}i(nm,"buildComparisonPrompt");async function rm(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(rm,"defaultRunComparator");function im(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}i(im,"mapWinnerToConfig");function om(e){let t=[`# Blind Comparison: ${e.config_a} vs ${e.config_b}`,"",`Generated: ${e.generated_at}`,"",`- ${e.config_a} wins: ${e.summary.config_a_wins}`,`- ${e.config_b} wins: ${e.summary.config_b_wins}`,`- ties: ${e.summary.ties}`,`- inconclusive: ${e.summary.inconclusive}`,""];for(let n of e.comparisons)t.push(`## Eval ${n.eval_id??n.eval_name??n.index}`),t.push(""),t.push(`- Winner: ${n.winner_config}`),t.push(`- Confidence: ${n.confidence}`),t.push(`- Rationale: ${n.rationale||"n/a"}`),t.push("");return`${t.join(`
605
- `)}
606
- `}i(om,"renderComparisonMarkdown");async function sm(e,t=rm){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",o=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await cr(n))if(O.basename(f).startsWith("eval-"))for(let p=0;p<s;p+=1){let m=await tm(f,r,o,p);if(!m)break;let g=c.length%2===0,v=nm({agentInstructions:a,evalMetadata:m.evalMetadata,runA:m.runA,runB:m.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:p,configA:r,configB:o}),y=em(w),h=im(y.winner,g,r,o);c.push({index:c.length+1,eval_id:m.evalMetadata.eval_id??null,eval_name:m.evalMetadata.eval_name??null,run_a:O.relative(n,m.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,m.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:o}:{A:o,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${o} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:o,summary:{total_pairs:c.length,config_a_wins:c.filter(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===o).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=O.resolve(e.outputPath??O.join(n,"comparison.json")),u=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await gs(l,`${JSON.stringify(d,null,2)}
607
- `,"utf8"),await gs(u,om(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}i(sm,"compareWorkspace");function am(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(am,"parseArgs");async function ys(e=process.argv){let t=am(e);t.workspaceDir||(console.error("Usage: node scripts/compare-runs.js <workspace> [--config-a with_skill] [--config-b without_skill] [--output comparison.json]"),process.exit(1));let n=await sm(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
608
- `)}i(ys,"main");var cm=!1;cm&&ys().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as dm,writeFile as lm}from"node:fs/promises";import{createHash as um}from"node:crypto";import dr from"node:path";import{zipSync as fm,strToU8 as pm}from"fflate";var mm=".kodax-package.json";function hm(e){return e instanceof Uint8Array?e:new Uint8Array(e)}i(hm,"toUint8Array");function gm(e){return um("sha256").update(e).digest("hex")}i(gm,"sha256");function ym(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}i(ym,"createPackageManifest");async function wm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
609
- - ${n.errors.join(`
610
- - `)}`);let r=await lt(e),o=await Qn(e),s=[];for(let d of o){if(d.relativePath.endsWith(".skill"))continue;let l=hm(await dm(d.absolutePath));s.push({...d,bytes:l,sha256:gm(l)})}let a=ym(r,s,t),c={[mm]:pm(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:fm(c,{level:6})}}i(wm,"buildSkillPackage");async function vm(e,t,n={}){let r=await wm(e,n);return await lm(t,r.bytes),{...r,outputPath:dr.resolve(t)}}i(vm,"writeSkillPackage");function bm(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}i(bm,"parseArgs");async function ws(e=process.argv){let t=bm(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await lt(t.skillDir),r=t.output??dr.join(dr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),o=await vm(t.skillDir,r);console.log(`Wrote ${o.outputPath}`)}i(ws,"main");var km=!1;km&&ws().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as xm,mkdir as lr,readFile as ks,rm as xs,stat as Sm,writeFile as Em}from"node:fs/promises";import Y from"node:path";import{strFromU8 as vs,unzipSync as Im}from"fflate";var bs=".kodax-package.json";function Cm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}i(Cm,"normalizeArchivePath");function Tm(e){let t=Cm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}i(Tm,"assertSafeArchivePath");function Rm(e){return/\.(skill|zip)$/i.test(e)}i(Rm,"isZipLike");function _m(e){let t=Im(e),n=Object.entries(t).map(([l,u])=>({relativePath:Tm(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let o=Vt(vs(r.bytes)),s=typeof o.frontmatter.name=="string"?o.frontmatter.name.trim():"",a=typeof o.frontmatter.description=="string"?o.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(l=>l.relativePath===bs),d=c?JSON.parse(vs(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==bs)}}i(_m,"readSkillPackageBuffer");async function Am(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await xs(e,{recursive:!0,force:!0})}await lr(e,{recursive:!0})}i(Am,"ensureInstallTarget");async function Pm(e,t={}){let n=Y.resolve(t.skillsDir??ft()),r=_m(await ks(e)),o=Y.join(n,r.skillName);await Am(o,t.force===!0);for(let s of r.entries){let a=Y.join(o,s.relativePath);await lr(Y.dirname(a),{recursive:!0}),await Em(a,s.bytes)}return{skillName:r.skillName,installedTo:o,source:Y.resolve(e),manifest:r.manifest}}i(Pm,"installSkillArchive");async function Mm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
611
- - ${n.errors.join(`
612
- - `)}`);let r=Y.join(e,"SKILL.md"),o=Vt(await ks(r,"utf8")),s=Y.resolve(t.skillsDir??ft()),a=Y.join(s,o.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await xs(a,{recursive:!0,force:!0})}return await lr(s,{recursive:!0}),await xm(e,a,{recursive:!0}),{skillName:o.frontmatter.name,installedTo:a,source:Y.resolve(e),manifest:null}}i(Mm,"installSkillDirectory");async function Om(e,t={}){let n=Y.resolve(e),r=await Sm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return Mm(n,t);if(r.isFile()&&Rm(n))return Pm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}i(Om,"installSkill");function Nm(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}i(Nm,"parseArgs");async function Ss(e=process.argv){let t=Nm(e);t.input||(console.error("Usage: node scripts/install-skill.js <skill-dir-or-archive> [--dest <skills-dir>] [--force]"),process.exit(1));let n=await Om(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}i(Ss,"main");var Lm=!1;Lm&&Ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var LM=1440*60*1e3;var UM=5*6e4;var OO=new Intl.Segmenter("zh-CN",{granularity:"word"});var DN=String.raw`const TOOL_NAME = 'echo_tool';
613
- const RESOURCE_URI = 'memory://guide';
614
- const PROMPT_NAME = 'draft_prompt';
615
- let buffer = '';
616
-
617
- function writeMessage(payload) {
618
- process.stdout.write(JSON.stringify(payload) + '\n');
619
- }
620
-
621
- function handleRequest(message) {
622
- const id = message.id;
623
- const method = message.method;
624
- const params = message.params || {};
625
- if (method === 'initialize') {
626
- writeMessage({
627
- jsonrpc: '2.0',
628
- id,
629
- result: {
630
- protocolVersion: '2025-11-25',
631
- capabilities: {
632
- tools: {},
633
- resources: {},
634
- prompts: {},
635
- },
636
- serverInfo: {
637
- name: 'kodax-mcp-test-server',
638
- version: '1.0.0',
639
- },
640
- },
641
- });
642
- return;
643
- }
644
- if (method === 'tools/list') {
645
- writeMessage({
646
- jsonrpc: '2.0',
647
- id,
648
- result: {
649
- tools: [{
650
- name: TOOL_NAME,
651
- title: 'Echo Tool',
652
- description: 'Echo text back from the MCP test server.',
653
- inputSchema: {
654
- type: 'object',
655
- properties: {
656
- text: { type: 'string' },
657
- mode: { type: 'string' },
658
- },
659
- required: ['text'],
660
- },
661
- annotations: {
662
- destructive: false,
663
- },
664
- }],
665
- },
666
- });
667
- return;
668
- }
669
- if (method === 'resources/list') {
670
- writeMessage({
671
- jsonrpc: '2.0',
672
- id,
673
- result: {
674
- resources: [{
675
- uri: RESOURCE_URI,
676
- title: 'Guide Resource',
677
- description: 'Provides guide text.',
678
- mimeType: 'text/plain',
679
- }],
680
- },
681
- });
682
- return;
683
- }
684
- if (method === 'prompts/list') {
685
- writeMessage({
686
- jsonrpc: '2.0',
687
- id,
688
- result: {
689
- prompts: [{
690
- name: PROMPT_NAME,
691
- title: 'Draft Prompt',
692
- description: 'A simple prompt from the MCP test server.',
693
- }],
694
- },
695
- });
696
- return;
697
- }
698
- if (method === 'tools/call') {
699
- const args = params.arguments || params.args || {};
700
- writeMessage({
701
- jsonrpc: '2.0',
702
- id,
703
- result: {
704
- content: [{
705
- type: 'text',
706
- text: 'echo:' + String(args.text || ''),
707
- }],
708
- structuredContent: {
709
- echo: args.text || '',
710
- mode: args.mode || null,
711
- },
712
- },
713
- });
714
- return;
715
- }
716
- if (method === 'resources/read') {
717
- const uri = params.uri || params.name || RESOURCE_URI;
718
- writeMessage({
719
- jsonrpc: '2.0',
720
- id,
721
- result: {
722
- contents: [{
723
- uri,
724
- mimeType: 'text/plain',
725
- text: 'resource:' + String(uri),
726
- }],
727
- },
728
- });
729
- return;
730
- }
731
- if (method === 'prompts/get') {
732
- const args = params.arguments || params.args || {};
733
- const topic = args.topic || 'none';
734
- writeMessage({
735
- jsonrpc: '2.0',
736
- id,
737
- result: {
738
- description: 'Prompt result for ' + String(params.name || PROMPT_NAME),
739
- messages: [{
740
- role: 'user',
741
- content: {
742
- type: 'text',
743
- text: 'prompt:' + String(params.name || PROMPT_NAME) + ':' + String(topic),
744
- },
745
- }],
746
- },
747
- });
748
- return;
749
- }
750
-
751
- writeMessage({
752
- jsonrpc: '2.0',
753
- id,
754
- error: {
755
- code: -32601,
756
- message: 'Method not found: ' + String(method),
757
- },
758
- });
759
- }
760
-
761
- function handleFrame(raw) {
762
- let message;
763
- try {
764
- message = JSON.parse(raw);
765
- } catch (error) {
766
- process.stderr.write('bad json: ' + String(error) + '\n');
767
- return;
768
- }
769
- if (message.id !== undefined) {
770
- handleRequest(message);
771
- }
772
- }
773
-
774
- process.stdin.setEncoding('utf8');
775
- process.stdin.on('data', (chunk) => {
776
- buffer += chunk;
777
- while (true) {
778
- const lineEnd = buffer.indexOf('\n');
779
- if (lineEnd < 0) {
780
- return;
781
- }
782
- const line = buffer.slice(0, lineEnd).replace(/\r$/, '').trim();
783
- buffer = buffer.slice(lineEnd + 1);
784
- if (line) {
785
- handleFrame(line);
786
- }
787
- }
788
- });
789
-
790
- process.on('SIGTERM', () => process.exit(0));
791
- process.on('SIGINT', () => process.exit(0));
792
- `;var Ts=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),rh=0,ih=0,Rs=i(e=>{let t=e==="label"?++rh:++ih,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function oh(e,t,n){let r=Rs("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}i(oh,"appendLabel");async function sh(e,t,n){let r=Rs("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}i(sh,"appendArtifact");function ah(e){let t=[],n=new Map,r=[],o=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),o=a;continue}o?o.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}i(ah,"buildLineageTree");var ch=Object.freeze({name:"lineage",entryTypes:Ts,operators:Object.freeze({label:i((async(e,...t)=>{let[n,r]=t;return oh(e,n,r)}),"label"),attachArtifact:i((async(e,...t)=>{let[n,r]=t;return sh(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:i(e=>ah(e),"buildLineageTree")})});var yh=new Set(["skill","ask_user_question","exit_plan_mode","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output","tool_search","get_goal","create_goal","update_goal","todo_create","todo_update","todo_list","todo_get","worktree_create","worktree_remove","undo","mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt","repo_overview","changed_scope","changed_diff","changed_diff_bundle","module_context","symbol_context","process_context","impact_estimate","relationship_scan","cyclic_dependencies","semantic_lookup"]),fr=yh,Zt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
793
-
794
- `;var eD=Zt.trimEnd();var tD=16*1024;var xh={enabled:!1,maxAge:20,protectedTools:Array.from(fr)};import cF from"typescript";var E1=new Intl.Segmenter("en",{granularity:"grapheme"});var VK=4*1024;var YK=64*1024;var pr=".conversation-cache.",dB=`${pr}json`,lB=1024*1024,uB=1024*1024,fB=1024*1024,pB=4*1024*1024,mB=128*1024;var Ie=class extends Error{static{i(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function Ls(e){let t=e.lastIndexOf(pr);if(t<=0)return;let n=e.slice(t+pr.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}i(Ls,"cacheArtifactSessionId");async function Ds(e){let t=mt.dirname(e),n=mt.basename(e,mt.extname(e)),r;try{r=await tn.readdir(t)}catch(o){if(o.code==="ENOENT")return;throw o}await Promise.all(r.filter(o=>Ls(o)===n).map(o=>tn.rm(mt.join(t,o),{force:!0})))}i(Ds,"removeConversationPageCache");async function mr(e){let t;try{t=await tn.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&Ls(n.name)!==void 0).map(n=>tn.rm(mt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}i(mr,"removeConversationPageCachesInDirectory");var Ks=3,Hh=300*1e3,$s=65536,hr=i(e=>P.join(e,".layout.json"),"layoutMarkerPath"),yr=i(e=>P.join(e,".migration-lock"),"lockDirPath"),Bs=i(e=>P.join(yr(e),"owner.json"),"ownerPath"),gr=i(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),wr=i(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function vr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(vr,"isSessionFile");function Us(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}i(Us,"sidecarId");async function zh(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe($s),{bytesRead:r}=await t.read(n,0,$s,0);if(r===0)return null;let o=n.toString("utf8",0,r),s=o.indexOf(`
795
- `),a=(s>=0?o.slice(0,s):o).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}i(zh,"readMeta");async function qh(e){let t=await zh(e);return t?vi({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}i(qh,"destKeyFor");async function Vh(e){let t=[],n=i(async(r,o)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(vr(a.name)||o&&Us(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(wr(e),!0),t}i(Vh,"collectFlatSources");async function Gh(e){let t=await Vh(e),n=t.filter(s=>vr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),o=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await qh(s);o.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let l=P.join(P.dirname(s),`${a}${d}`);js.existsSync(l)&&o.push({from:l,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Us(P.basename(s));a===null||r.has(a)||o.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return o}i(Gh,"planMigration");async function Jh(e){try{let t=JSON.parse(await R.readFile(hr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===Ks}catch{return!1}}i(Jh,"isMigrated");async function Fs(e){await mr(e),await mr(wr(e))}i(Fs,"removeLegacyConversationCaches");async function Yh(e){try{let t=JSON.parse(await R.readFile(Bs(e),"utf8"));if(typeof t.pid=="number"&&t.pid!==process.pid)try{process.kill(t.pid,0)}catch(n){if(n.code==="ESRCH")return!0}return typeof t.heartbeatAt=="number"&&Date.now()-t.heartbeatAt>Hh}catch{return!0}}i(Yh,"lockIsStale");async function Qh(e){let t=yr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Bs(e),JSON.stringify({pid:process.pid,startTime:Date.now(),heartbeatAt:Date.now()})),!0}catch(r){if(r.code!=="EEXIST")return!1;if(n===0&&await Yh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}i(Qh,"acquireLock");async function Zh(e){await R.rm(yr(e),{recursive:!0,force:!0}).catch(()=>{})}i(Zh,"releaseLock");async function eg(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}i(eg,"assertNoActiveSessionWriters");async function tg(e){let t=new Set;try{let n=await R.readFile(gr(e),"utf8");for(let r of n.split(`
796
- `))if(r.trim())try{let o=JSON.parse(r);o.done&&typeof o.from=="string"&&t.add(o.from)}catch{}}catch{}return t}i(tg,"readJournalDone");async function ng(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),js.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}i(ng,"executeMove");async function rg(e){await R.mkdir(e,{recursive:!0});let t=`${hr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:Ks,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
797
- `,"utf8"),await R.rename(t,hr(e))}i(rg,"writeMarker");async function ig(e){let t=wr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}i(ig,"retireSessionsArchive");async function og(e){if(!await Qh(e))return{moved:0,planned:0};try{await eg(e),await Fs(e);let t=await Gh(e),n=await tg(e),r=await R.open(gr(e),"a"),o=0;try{for(let s of t){if(vr(P.basename(s.from)))try{await Ds(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await ng(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
798
- `),o+=1)}}finally{await r.close()}return await ig(e),await Fs(e),await rg(e),await R.rm(gr(e),{force:!0}).catch(()=>{}),{moved:o,planned:t.length}}finally{await Zh(e)}}i(og,"runMigration");async function Xs(e){try{if(await Jh(e))return;await og(e)}catch(t){if(t instanceof Ie)throw t}}i(Xs,"ensureLayoutMigrated");import{jsx as Tt,jsxs as Je}from"react/jsx-runtime";import{useMemo as Zw,useRef as ev,useState as ii}from"react";import{jsx as Ac}from"react/jsx-runtime";import{createContext as Kw,useContext as ei,useEffect as Ge,useMemo as _c,useState as Bw,useCallback as Pc,useRef as kn}from"react";import{Stream as gw}from"node:stream";import{openSync as yw,writeSync as wc}from"node:fs";import{performance as ww}from"node:perf_hooks";import{tmpdir as vw}from"node:os";import{join as bw}from"node:path";import br,{forwardRef as cg,useContext as dg}from"react";import{createContext as sg}from"react";var Be=sg({isScreenReaderEnabled:!1});import{createContext as ag}from"react";var nn=ag(void 0);var Ws=cg(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":o,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=dg(Be),l=n?br.createElement("ink-text",null,n):void 0;if(d&&r)return null;let u=br.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:o,state:s}},d&&l?l:e);return t?br.createElement(nn.Provider,{value:t},u):u});Ws.displayName="Box";var q=Ws;import pg,{useContext as Hs}from"react";import Ue from"chalk";import ge from"chalk";var lg=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,ug=/^ansi256\(\s?(\d+)\s?\)$/;function fg(e){return e in ge}i(fg,"isNamedColor");function G(e,t,n){if(!t)return e;if(fg(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let o=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[o]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=ug.exec(t);if(!r)return e;let o=Number(r[1]);return n==="foreground"?ge.ansi256(o)(e):ge.bgAnsi256(o)(e)}if(t.startsWith("rgb")){let r=lg.exec(t);if(!r)return e;let o=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(o,s,a)(e):ge.bgRgb(o,s,a)(e)}return e}i(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:o=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:l,"aria-label":u,"aria-hidden":f=!1,internal_cursorAnchor:p=!1}){let{isScreenReaderEnabled:m}=Hs(Be),g=Hs(nn),v=m&&u?u:l;if(v==null)return null;let w=i(y=>{let h=y;n&&(h=Ue.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Ue.bold(h)),o&&(h=Ue.italic(h)),s&&(h=Ue.underline(h)),a&&(h=Ue.strikethrough(h)),c&&(h=Ue.inverse(h)),h},"transform");return m&&f?null:pg.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...p?{internal_cursorAnchor:!0}:{}},m&&u?u:l)}i(K,"Text");import XB,{useLayoutEffect as WB,useMemo as HB,useState as zB}from"react";import Pe from"node:process";import hc from"react";import{throttle as Yy}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Qy from"auto-bind";import{onExit as Zy}from"signal-exit";import ew from"patch-console";import{LegacyRoot as tw,ConcurrentRoot as nw}from"react-reconciler/constants.js";import rw from"yoga-layout";import iw from"wrap-ansi";import ow from"terminal-size";import mg from"node:process";var rn=i(()=>mg.env.DEV==="true","isDev");import Ug from"react-reconciler";import{DefaultEventPriority as Xg,NoEventPriority as pa}from"react-reconciler/constants.js";import*as ye from"scheduler";import da from"yoga-layout";import{createContext as Wg}from"react";import _g from"yoga-layout";import hg from"widest-line";var zs=new Map,gg=i(e=>{if(e.length===0)return{width:0,height:0};let t=zs.get(e);if(t)return t;let n=hg(e),r=e.split(`
799
- `).length,o={width:n,height:r};return zs.set(e,o),o},"measureText"),kr=gg;import yg from"wrap-ansi";import wg from"cli-truncate";var qs={},vg=i((e,t,n)=>{let r=e+String(t)+String(n),o=qs[r];if(o)return o;let s=e;if(n==="wrap"&&(s=yg(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=wg(e,t,{position:a})}return qs[r]=s,s},"wrapText"),on=vg;var bg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),kg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),xg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Js=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),Sg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Ys=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Vs=i((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!bg(c))break;n++}let r=e.slice(t,n),o=n;for(;n<e.length;){let c=e[n];if(!kg(c))break;n++}let s=e.slice(o,n),a=e[n];if(!(a===void 0||!xg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Gs=i((e,t,n)=>{for(let r=t;r<e.length;r++){let o=e[r];if(n&&o==="\x07"||o==="\x9C")return r+1;if(o==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),Eg=i((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Js(s))break;n++}let r=e.slice(t,n),o=e[n];if(!(o===void 0||!Sg(o)))return{endIndex:n+1,intermediateString:r,finalCharacter:o}},"readEscapeSequence"),Ig=i(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),Cg=i(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),xr=i(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Ys(t))return!0;return!1},"hasAnsiControlCharacters"),Xe=i((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),Qs=i(e=>{if(!xr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let o=e[r];if(o===void 0)break;if(o==="\x1B"){let a=e[r+1];if(a===void 0)return Xe(t,e,n,r);if(a==="["){let l=Vs(e,r+2);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=Ig(a);if(c!==void 0){let l=Gs(e,r+2,c.allowBellTerminator);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let d=Eg(e,r+1);if(d===void 0){if(Js(a))return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(o==="\x9B"){let a=Vs(e,r+1);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=Cg(o);if(s!==void 0){let a=Gs(e,r+1,s.allowBellTerminator);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(o==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:o}),r++,n=r;continue}if(Ys(o)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:o}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var Tg=/^[\d:;]*$/,Rg=i(e=>{if(!xr(e))return e;let t="";for(let n of Qs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&Tg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Zs=Rg;var ea=i(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=ea(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o,n))),t+=o}return Zs(t)},"squashTextNodes"),ht=ea;var sn=i(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:_g.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(Ag.bind(null,t)),t},"createNode"),an=i((e,t)=>{t.parentNode&&gt(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"appendChildNode"),Sr=i((e,t,n)=>{t.parentNode&&gt(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"insertBeforeNode"),gt=i((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"removeChildNode"),Er=i((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),Ir=i((e,t)=>{e.style=t},"setStyle"),ta=i(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return yt(t,e),t},"createTextNode"),Ag=i(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:ht(e),r=kr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let o=e.style?.textWrap??"wrap",s=on(n,t,o);return kr(s)},"measureTextNode"),na=i(e=>{if(e?.parentNode)return e.yogaNode??na(e.parentNode)},"findClosestYogaNode"),cn=i(e=>{na(e)?.markDirty()},"markNodeAsDirty"),yt=i((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,cn(e)},"setTextNodeValue");import k from"yoga-layout";var Mg=i((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),Og=i((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),Ng=i((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),Lg=i((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),Dg=i((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),$g=i((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Fg=i((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),jg=i((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Kg=i((e,t={})=>{Mg(e,t),Og(e,t),Ng(e,t),Lg(e,t),Dg(e,t),$g(e,t),Fg(e,t),jg(e,t)},"styles"),Cr=Kg;if(rn())try{await Promise.resolve().then(()=>(ca(),Bg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
2
+ var _o=Object.defineProperty;var o=(e,t)=>_o(e,"name",{value:t,configurable:!0});var tt=(e,t)=>()=>(e&&(t=e(e=0)),t);var an,Br,jr=tt(()=>{an=class{static{o(this,"WebSocketStub")}},Br=an});var yt,Hr=tt(()=>{"use strict";jr();yt=global;yt.WebSocket||=Br;yt.window||=global;yt.self||=global;yt.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 $r,cn,Ur=tt(()=>{$r=o(()=>{},"noop"),cn={initialize:$r,connectToDevTools:$r}});var ua={};var zr=tt(()=>{"use strict";Hr();Ur();cn.initialize();cn.connectToDevTools()});import xe from"node:fs/promises";import Tu from"node:os";import U from"node:path";import k from"fs/promises";import Ht from"fs";import T from"path";import Ft from"path";import{createHash as Bo}from"crypto";import{execFile as Po}from"child_process";import Fe from"fs";import P from"path";import{promisify as Fo}from"util";var Lo=Fo(Po);function X(e){if(!(!e||!e.trim()))return P.resolve(e).replace(/\\/g,"/")}o(X,"normalizePath");async function Do(e,t,n=5e3){try{let{stdout:r}=await Lo("git",t,{cwd:e,windowsHide:!0,maxBuffer:1048576,timeout:n}),i=r.trim();return i||void 0}catch{return}}o(Do,"gitStdout");function Qn(e){let t=P.resolve(e);for(;;){let n=P.join(t,".git");try{let i=Fe.statSync(n);if(i.isDirectory()){let s=X(t)??t.replace(/\\/g,"/");return{canonicalRoot:s,workspaceRoot:s}}if(i.isFile()){let s=/^gitdir:\s*(.+)$/im.exec(Fe.readFileSync(n,"utf8"));if(s?.[1]){let a=P.resolve(t,s[1].trim()),c;try{c=P.resolve(a,Fe.readFileSync(P.join(a,"commondir"),"utf8").trim())}catch{}let u=X(t)??t.replace(/\\/g,"/");return{canonicalRoot:tr(c)??u,workspaceRoot:u}}}}catch{}let r=P.dirname(t);if(r===t)return;t=r}}o(Qn,"filesystemWorkspaceIdentity");function Jn(e){let t=P.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o(Jn,"comparablePath");function Zn(e){let t=P.join(P.resolve(e),".git","worktrees"),n;try{n=Fe.readdirSync(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")return[];throw i}let r=Jn(e);return n.flatMap(i=>{if(!i.isDirectory())return[];try{let s=P.join(t,i.name),a=Fe.readFileSync(P.join(s,"gitdir"),"utf8").trim();if(!a)return[];let c=P.isAbsolute(a)?a:P.resolve(s,a),u=P.dirname(c),l=Qn(u);return l!==void 0&&Jn(l.canonicalRoot)===r?[l.workspaceRoot]:[]}catch{return[]}})}o(Zn,"discoverLinkedWorkspaceRoots");function Wo(e){let[t,n]=e?.split(/\r?\n/).map(s=>s.trim())??[],r=X(t);if(!r)return;let i=n?X(P.isAbsolute(n)?n:P.resolve(r,n)):void 0;return{canonicalRoot:tr(i)??r,workspaceRoot:r}}o(Wo,"parseProjectIdentityOutput");async function Pt(e={}){let t=X(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=Qn(t);return n!==void 0?n:Wo(await Do(t,["rev-parse","--path-format=absolute","--show-toplevel","--git-common-dir"],e.timeoutMs??2e3))??{canonicalRoot:t,workspaceRoot:t}}o(Pt,"resolveWorkspaceProjectIdentity");async function er(e={}){return(await Pt(e)).canonicalRoot}o(er,"resolveCanonicalWorkspaceRoot");function tr(e){let t=X(e);if(t)return P.posix.basename(t)===".git"?P.posix.dirname(t):t}o(tr,"deriveCanonicalRepoRoot");function nr(e){let t=X(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=X(e.runtimeInfo?.executionCwd??t),r=X(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(nr,"resolveSessionRuntimeInfo");var Le="_unknown",rr=80;function jo(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}o(jo,"caseFold");function Ho(e){return jo(Ft.resolve(e).replace(/\\/g,"/"))}o(Ho,"normalizeRoot");function ir(e){return Bo("sha256").update(e).digest("hex").slice(0,10)}o(ir,"shortHash");function $o(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>rr?t.slice(t.length-rr):t}o($o,"slugify");function Se(e){if(!e||!e.trim())return{key:Le,canonicalRoot:null,displayName:Le};let t=Ho(e),n=$o(t),r=n?`${n}-${ir(t)}`:ir(t),i=Ft.basename(Ft.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:i}}o(Se,"deriveProjectKeyFromRoot");function nt(e){let t=nr({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Se(n)}o(nt,"deriveProjectKeyFromData");function or(e,t){let n=nt(e).canonicalRoot;return n!==null&&t.some(r=>Se(r).canonicalRoot===n)}o(or,"sessionProjectMatchesAnyRoot");import{randomUUID as Uo}from"node:crypto";import De from"node:fs/promises";import rt from"node:path";function sr(e){let t=rt.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o(sr,"comparableRoot");async function Lt(e){let t;try{t=await De.readFile(e,"utf8")}catch(r){if(r.code==="ENOENT")return;throw r}let n=JSON.parse(t);if(n===null||typeof n!="object"||typeof n.canonicalRoot!="string")throw new Error(`Invalid project identity manifest at ${e}`);return sr(n.canonicalRoot)}o(Lt,"existingCanonicalRoot");async function ar(e){return await Lt(rt.join(e,"project.json"))!==void 0}o(ar,"projectManifestExists");async function it(e,t){if(t.canonicalRoot===null)return;await De.mkdir(e,{recursive:!0});let n=rt.join(e,"project.json"),r=sr(t.canonicalRoot),i=await Lt(n);if(i!==void 0){if(i!==r)throw new Error(`Conflicting project identity at ${n}`);return}let s=rt.join(e,`.project.${process.pid}.${Uo()}.tmp`),a=await De.open(s,"wx");try{await a.writeFile(JSON.stringify({canonicalRoot:t.canonicalRoot,displayName:t.displayName,lastUsed:new Date().toISOString()})+`
3
+ `,"utf8"),await a.sync()}finally{await a.close()}try{await De.link(s,n)}catch(c){if(c.code!=="EEXIST")throw c;if(await Lt(n)!==r)throw new Error(`Conflicting project identity at ${n}`)}finally{await De.rm(s,{force:!0})}}o(it,"publishProjectManifest");import ot from"node:fs/promises";import We from"node:path";var Dt=".conversation-cache.",il=`${Dt}json`,fe=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 cr(e){let t=e.lastIndexOf(Dt);if(t<=0)return;let n=e.slice(t+Dt.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}o(cr,"cacheArtifactSessionId");async function ur(e){let t=We.dirname(e),n=We.basename(e,We.extname(e)),r;try{r=await ot.readdir(t)}catch(i){if(i.code==="ENOENT")return;throw i}await Promise.all(r.filter(i=>cr(i)===n).map(i=>ot.rm(We.join(t,i),{force:!0})))}o(ur,"removeConversationPageCache");async function Wt(e){let t;try{t=await ot.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new fe(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&cr(n.name)!==void 0).map(n=>ot.rm(We.join(e,n.name),{force:!0})))}catch(n){throw new fe(e,n)}}o(Wt,"removeConversationPageCachesInDirectory");var fr=3,zo=300*1e3,Yo=65536,Bt=o(e=>T.join(e,".layout.json"),"layoutMarkerPath"),$t=o(e=>T.join(e,".migration-lock"),"lockDirPath"),dr=o(e=>T.join($t(e),"owner.json"),"ownerPath"),jt=o(e=>T.join(e,".migration-journal.jsonl"),"journalPath"),st=o(e=>T.join(T.dirname(e),"sessions-archive"),"sessionsArchiveDir");function at(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(at,"isSessionFile");function pr(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}o(pr,"sidecarId");async function Ko(e){let t;try{t=await k.open(e,"r");let n=[],r=0,i=0;for(;;){let c=Buffer.allocUnsafe(Yo),{bytesRead:u}=await t.read(c,0,c.length,i);if(u===0)break;let l=c.subarray(0,u),f=l.indexOf(10),d=f>=0?l.subarray(0,f):l;if(n.push(d),r+=d.length,f>=0)break;i+=u}let s=Buffer.concat(n,r).toString("utf8").trim();if(!s)return null;let a=JSON.parse(s);if(a&&typeof a=="object"&&a._type==="meta"){let c=a;return{gitRoot:typeof c.gitRoot=="string"?c.gitRoot:void 0,runtimeInfo:c.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}o(Ko,"readMeta");async function hr(e,t){let n=await Ko(e);if(!n)return nt({});let r=n.runtimeInfo!==null&&typeof n.runtimeInfo=="object"?n.runtimeInfo:void 0,i=n.runtimeInfo,s=typeof r?.workspaceRoot=="string"?r.workspaceRoot:n.gitRoot,a=s??(typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0);if(a&&Ht.existsSync(a)){let c=T.resolve(a),u=t.get(c);u===void 0&&(u=er({cwd:a,timeoutMs:750}),t.set(c,u)),i={...r,canonicalRepoRoot:await u,...s!==void 0?{workspaceRoot:s}:{}}}return nt({gitRoot:n.gitRoot,runtimeInfo:i})}o(hr,"destIdentityFor");async function Go(e){let t=[],n=o(async(r,i)=>{let s=[];try{s=await k.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(at(a.name)||i&&pr(a.name)!==null)&&t.push(T.join(r,a.name))},"pushDir");return await n(e,!0),await n(st(e),!0),t}o(Go,"collectMigrationSources");function Vo(e,t){return T.join(e,t)}o(Vo,"targetDirectory");async function Xo(e){let t=await Go(e),n=t.filter(a=>at(T.basename(a))),r=new Set(n.map(a=>`${T.dirname(a)}\0${T.basename(a,".jsonl")}`)),i=[],s=new Map;for(let a of n){let c=T.basename(a,".jsonl"),u=(await hr(a,s)).key,l=Vo(e,u);i.push({from:a,to:T.join(l,`${c}.jsonl`),reason:`session\u2192${u}`});for(let f of[".archive.jsonl",".islands.jsonl"]){let d=T.join(T.dirname(a),`${c}${f}`);Ht.existsSync(d)&&i.push({from:d,to:T.join(l,`${c}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let a of t){let c=pr(T.basename(a));c===null||r.has(`${T.dirname(a)}\0${c}`)||i.push({from:a,to:T.join(e,Le,"orphan-islands",`${c}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return i}o(Xo,"planMigration");async function qo(e){try{let t=JSON.parse(await k.readFile(Bt(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===fr}catch{return!1}}o(qo,"isMigrated");async function lr(e){await Wt(e),await Wt(st(e))}o(lr,"removeLegacyConversationCaches");async function Jo(e){try{let t=JSON.parse(await k.readFile(dr(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>zo}catch{return!0}}o(Jo,"lockIsStale");async function Qo(e){let t=$t(e);for(let n=0;n<2;n+=1)try{return await k.mkdir(t),await k.writeFile(dr(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 Jo(e)){await k.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}o(Qo,"acquireLock");async function Zo(e){await k.rm($t(e),{recursive:!0,force:!0}).catch(()=>{})}o(Zo,"releaseLock");async function es(e){try{if((await k.readdir(T.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(es,"assertNoActiveSessionWriters");async function ts(e){let t=new Set;try{let n=await k.readFile(jt(e),"utf8");for(let r of n.split(`
4
+ `))if(r.trim())try{let i=JSON.parse(r);i.done&&typeof i.from=="string"&&t.add(i.from)}catch{}}catch{}return t}o(ts,"readJournalDone");async function ns(e,t){if(T.resolve(e.from)===T.resolve(e.to))return!1;if(await k.mkdir(T.dirname(e.to),{recursive:!0}),Ht.existsSync(e.to)){let n=T.dirname(e.from);return n===t||n===st(t)?(await k.unlink(e.from).catch(()=>{}),!0):!1}try{await k.rename(e.from,e.to)}catch(n){let r=n.code;if(r==="EXDEV")await k.copyFile(e.from,e.to),await k.unlink(e.from).catch(()=>{});else if(r!=="ENOENT")throw n}return!0}o(ns,"executeMove");async function rs(e){let t=[],n=o(async r=>{try{for(let i of await k.readdir(r,{withFileTypes:!0}))i.isFile()&&at(i.name)&&t.push(T.join(r,i.name))}catch(i){if(i.code!=="ENOENT")throw i}},"append");return await n(e),await n(T.join(e,"archived")),t}o(rs,"readBucketMainFiles");async function is(e,t){let n=new Map,r=new Set(t.flatMap(i=>i.reason.startsWith("session\u2192")?[T.dirname(i.to)]:[]));for(let i of r){let s=T.basename(i);if(s===Le)continue;let a=await rs(i),c;for(let u of a){let l=await hr(u,n);if(l.canonicalRoot===null||l.key!==s||c!==void 0&&c.canonicalRoot!==l.canonicalRoot)throw new Error(`Cannot certify mixed project identities in ${i}`);c??=l}c!==void 0&&await it(i,c)}}o(is,"publishBucketManifests");async function os(e){await k.mkdir(e,{recursive:!0});let t=`${Bt(e)}.${process.pid}.tmp`,n=JSON.stringify({version:fr,migratedAt:new Date().toISOString(),from:"flat-v1"});await k.writeFile(t,n+`
5
+ `,"utf8"),await k.rename(t,Bt(e))}o(os,"writeMarker");async function ss(e){let t=st(e);try{(await k.readdir(t)).length===0&&await k.rmdir(t).catch(()=>{})}catch{}}o(ss,"retireSessionsArchive");async function as(e){if(!await Qo(e))return{moved:0,planned:0};try{await es(e),await lr(e);let t=await Xo(e),n=await ts(e),r=await k.open(jt(e),"a"),i=0;try{for(let s of t){if(at(T.basename(s.from)))try{await ur(s.to)}catch(c){throw new fe(T.dirname(s.to),c)}if(n.has(s.from))continue;let a=await ns(s,e);await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
6
+ `),a&&(i+=1)}}finally{await r.close()}return await ss(e),await lr(e),await is(e,t),await os(e),await k.rm(jt(e),{force:!0}).catch(()=>{}),{moved:i,planned:t.length}}finally{await Zo(e)}}o(as,"runMigration");async function mr(e){try{if(await qo(e))return;await as(e)}catch(t){if(t instanceof fe)throw t}}o(mr,"ensureLayoutMigrated");import{createHash as Gt,randomUUID as Vt}from"node:crypto";import v from"node:fs/promises";import H from"node:path";var Ee=7,cs=".resume-index",us="complete.json",ls="publish.lock",Cr=".resume",gr=32,fs=2e3,ft=10,Ut=3e4,Re=40,ct=new Map,Ce=new Map;async function se(e,t){let n=[];for(let r=0;r<e.length;r+=gr){let i=e.slice(r,r+gr);n.push(...await Promise.all(i.map((s,a)=>t(s,r+a))))}return n}o(se,"mapBatches");function J(e){return H.join(e,cs)}o(J,"indexDir");function Xt(e){return H.join(J(e),us)}o(Xt,"manifestPath");function qt(e){return`${Gt("sha256").update(e,"utf8").digest("hex")}${Cr}`}o(qt,"markerName");function ds(e,t){return H.join(J(e),qt(t))}o(ds,"markerPath");function wr(e){try{let t=JSON.parse(e);return!be(t)||typeof t.pid!="number"||!Number.isInteger(t.pid)||t.pid<=0||typeof t.token!="string"||t.token.length===0?void 0:{pid:t.pid,token:t.token}}catch{return}}o(wr,"parseIndexPublishLockOwner");async function yr(e){for(let t=0;t<Re;t+=1)try{return await v.rmdir(e),!0}catch(n){let r=n.code;if(r==="ENOENT")return!0;if(!["EPERM","EACCES","EBUSY"].includes(r??""))return!1;t+1<Re&&await new Promise(i=>setTimeout(i,ft))}return!1}o(yr,"removeEmptyIndexLockDirectory");async function ps(e){let t=`${e}.reclaim`;for(let n=0;n<2;n+=1)try{return await v.mkdir(t),async()=>{await yr(t)||process.emitWarning(`Unable to release resume-index reclaim guard ${t}`,{code:"KODAX_RESUME_INDEX"})}}catch(r){if(r.code!=="EEXIST")throw r;if(n>0)return;try{let i=await v.stat(t);if(Date.now()-i.mtimeMs<Ut)return}catch(i){if(i.code==="ENOENT")continue;throw i}if(!await yr(t))return}}o(ps,"acquireIndexLockReclaimGuard");function xr(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}o(xr,"processIsDefinitelyDead");async function ut(e){try{let[t,n]=await Promise.all([v.readFile(e,"utf8"),v.stat(e)]);return{content:t,mtimeMs:n.mtimeMs}}catch(t){if(t.code==="ENOENT")return;throw t}}o(ut,"readIndexPublishLock");async function zt(e,t){for(let n=0;n<Re;n+=1){let r=await ut(e);if(r===void 0)return!0;if(r.content!==t)return!1;try{return await v.rm(e),!0}catch(i){let s=i.code;if(s==="ENOENT")return!0;if(!["EPERM","EACCES","EBUSY"].includes(s??""))return!1;n+1<Re&&await new Promise(a=>setTimeout(a,ft))}}return!1}o(zt,"removeObservedIndexPublishLock");async function hs(e){let t=await ut(e);if(t===void 0)return!0;if(Ce.get(e)===t.content){let i=await zt(e,t.content);return i&&Ce.delete(e),i}let n=wr(t.content);if(n!==void 0){if(!xr(n.pid))return!1}else if(Date.now()-t.mtimeMs<Ut)return!1;let r=await ps(e);if(r===void 0)return!1;try{let i=await ut(e);if(i===void 0)return!0;let s=wr(i.content);return Ce.get(e)===i.content||(s!==void 0?xr(s.pid):Date.now()-i.mtimeMs>=Ut)?zt(e,i.content):!1}finally{await r()}}o(hs,"reclaimAbandonedIndexPublishLock");async function ms(e){let t;for(let r=0;r<Re;r+=1)try{await v.rm(e,{force:!0});return}catch(i){t=i;let s=i.code;if(!["EPERM","EACCES","EBUSY"].includes(s??""))break;r+1<Re&&await new Promise(a=>setTimeout(a,ft))}let n=t instanceof Error?t.message:String(t);process.emitWarning(`Unable to remove resume-index lock temp file ${e}: ${n}`,{code:"KODAX_RESUME_INDEX"})}o(ms,"removeIndexPublishLockTemp");async function gs(e,t){await v.mkdir(H.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.${Vt()}.tmp`;await v.writeFile(n,t,{encoding:"utf8",flag:"wx"});let r=Date.now()+fs;try{for(;;)try{await v.link(n,e);return}catch(i){let s=i.code;if(!["EEXIST","EPERM","EACCES","EBUSY"].includes(s??""))throw i;if(await ut(e)!==void 0&&await hs(e))continue;if(Date.now()>=r)throw new Error(`Resume index publish lock timed out: ${e}`,{cause:i});await new Promise(c=>setTimeout(c,ft))}}finally{await ms(n)}}o(gs,"acquireIndexPublishLock");async function ws(e,t){if(!await zt(e,t))throw Ce.set(e,t),new Error(`Resume index publish lock ownership changed: ${e}`);Ce.get(e)===t&&Ce.delete(e)}o(ws,"releaseIndexPublishLock");async function ys(e,t){let n=H.join(J(e),ls),r=ct.get(n)??Promise.resolve(),i,s=new Promise(c=>{i=c});ct.set(n,s),await r.catch(()=>{});let a=JSON.stringify({pid:process.pid,token:Vt()});try{await gs(n,a);try{return await t()}finally{await ws(n,a)}}finally{i(),ct.get(n)===s&&ct.delete(n)}}o(ys,"withIndexPublishLock");function be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(be,"isRecord");function xs(e){if(!(!be(e)||typeof e.id!="string"||e.id.length===0||H.basename(e.id)!==e.id||typeof e.title!="string"||typeof e.msgCount!="number"||!Number.isInteger(e.msgCount)||e.msgCount<=0||e.createdAt!==void 0&&typeof e.createdAt!="string"||e.surface!==void 0&&typeof e.surface!="string"))return{id:e.id,title:e.title,msgCount:e.msgCount,...e.createdAt!==void 0?{createdAt:e.createdAt}:{},...e.surface!==void 0?{surface:e.surface}:{}}}o(xs,"parseEntry");function Ss(e){if(!be(e))return;let t=Array.isArray(e.markerNames)&&e.markerNames.every(i=>typeof i=="string")?[...e.markerNames].sort():void 0,n=Array.isArray(e.sessionNames)&&e.sessionNames.every(i=>typeof i=="string")?[...e.sessionNames].sort():void 0,r=Array.isArray(e.excludedSources)?e.excludedSources.flatMap(i=>!be(i)||typeof i.name!="string"||typeof i.sourceSize!="number"||!Number.isInteger(i.sourceSize)||i.sourceSize<0||typeof i.sourceMtimeMs!="number"||!Number.isFinite(i.sourceMtimeMs)||typeof i.sourceCtimeMs!="number"||!Number.isFinite(i.sourceCtimeMs)||typeof i.sourceDev!="number"||!Number.isInteger(i.sourceDev)||typeof i.sourceIno!="number"||!Number.isInteger(i.sourceIno)?[]:[{name:i.name,sourceSize:i.sourceSize,sourceMtimeMs:i.sourceMtimeMs,sourceCtimeMs:i.sourceCtimeMs,sourceDev:i.sourceDev,sourceIno:i.sourceIno}]):void 0;if(!(e.version!==Ee||t===void 0||typeof e.markerCount!="number"||!Number.isInteger(e.markerCount)||e.markerCount<0||typeof e.markerDigest!="string"||n===void 0||typeof e.sessionFileCount!="number"||!Number.isInteger(e.sessionFileCount)||e.sessionFileCount<0||typeof e.sessionFileDigest!="string"||r===void 0||typeof e.excludedSourceCount!="number"||!Number.isInteger(e.excludedSourceCount)||e.excludedSourceCount<0||typeof e.excludedSourceDigest!="string"||t.length!==e.markerCount||q(t)!==e.markerDigest||n.length!==e.sessionFileCount||q(n)!==e.sessionFileDigest||r.length!==e.excludedSourceCount||Jt(r)!==e.excludedSourceDigest))return{version:Ee,markerNames:t,markerCount:e.markerCount,markerDigest:e.markerDigest,sessionNames:n,sessionFileCount:e.sessionFileCount,sessionFileDigest:e.sessionFileDigest,excludedSources:r,excludedSourceCount:e.excludedSourceCount,excludedSourceDigest:e.excludedSourceDigest}}o(Ss,"parseManifest");function Cs(e,t){if(!be(e)||e.version!==Ee||e.state!=="pending"&&e.state!=="ready")return;let n=xs(e.entry);if(!n||qt(n.id)!==t)return;let r=be(e.source)&&typeof e.source.size=="number"&&Number.isInteger(e.source.size)&&e.source.size>=0&&typeof e.source.mtimeMs=="number"&&Number.isFinite(e.source.mtimeMs)&&typeof e.source.ctimeMs=="number"&&Number.isFinite(e.source.ctimeMs)&&typeof e.source.dev=="number"&&Number.isInteger(e.source.dev)&&typeof e.source.ino=="number"&&Number.isInteger(e.source.ino)?{size:e.source.size,mtimeMs:e.source.mtimeMs,ctimeMs:e.source.ctimeMs,dev:e.source.dev,ino:e.source.ino}:void 0;if(!(e.state==="ready"&&r===void 0))return{version:Ee,state:e.state,entry:n,...r!==void 0?{source:r}:{}}}o(Cs,"parseMarker");function q(e){let t=Gt("sha256");for(let n of[...e].sort())t.update(n),t.update(`
7
+ `);return t.digest("hex")}o(q,"digestMarkerNames");function Jt(e){let t=Gt("sha256");for(let n of[...e].sort((r,i)=>r.name.localeCompare(i.name)))t.update(JSON.stringify([n.name,n.sourceSize,n.sourceMtimeMs,n.sourceCtimeMs,n.sourceDev,n.sourceIno])),t.update(`
8
+ `);return t.digest("hex")}o(Jt,"digestScannedFiles");async function Yt(e){try{return(await v.readdir(J(e),{withFileTypes:!0})).filter(t=>t.isFile()&&t.name.endsWith(Cr)).map(t=>t.name).sort()}catch(t){if(t.code==="ENOENT")return[];throw t}}o(Yt,"readMarkerNames");async function Kt(e){try{return(await v.readdir(e,{withFileTypes:!0})).filter(t=>t.isFile()&&t.name.endsWith(".jsonl")&&!t.name.endsWith(".archive.jsonl")&&!t.name.endsWith(".islands.jsonl")&&!t.name.startsWith("archived-")&&!t.name.startsWith(".")).map(t=>t.name).sort()}catch(t){if(t.code==="ENOENT")return[];throw t}}o(Kt,"readCanonicalSessionNames");async function lt(e,t){let n;try{n=await v.readFile(H.join(J(e),t),"utf8")}catch(r){if(r.code!=="ENOENT")throw r;return}try{return Cs(JSON.parse(n),t)}catch{return}}o(lt,"readMarker");async function Er(e,t){let n=`${e}.${process.pid}.${Vt()}.tmp`;await v.writeFile(n,t,"utf8");try{await v.rename(n,e)}catch(r){if(!["EEXIST","EPERM"].includes(r.code??""))throw r;await v.rm(e,{force:!0}),await v.rename(n,e)}finally{await v.rm(n,{force:!0})}}o(Er,"replaceDerivedFile");async function Es(e){await v.rm(Xt(e),{force:!0})}o(Es,"invalidateManifest");async function Rs(e,t,n,r,i){let s=J(e),a=ds(e,t.id);if(await v.mkdir(s,{recursive:!0}),!r)try{return await v.access(a),!1}catch(l){if(l.code!=="ENOENT")throw l}let c=r?await lt(e,qt(t.id)):void 0,u={version:Ee,state:n,entry:{...c?.entry,...t},...i!==void 0?{source:i}:{}};return await Er(a,JSON.stringify(u)),!0}o(Rs,"writeMarker");async function Qt(e,t){try{let n=await v.stat(H.join(e,`${t}.jsonl`));return n.isFile()?{size:n.size,mtimeMs:n.mtimeMs,ctimeMs:n.ctimeMs,dev:n.dev,ino:n.ino}:void 0}catch(n){if(n.code==="ENOENT")return;throw n}}o(Qt,"canonicalSource");async function bs(e,t){let n=H.basename(t,".jsonl");if(`${n}.jsonl`!==t)return;let r=await Qt(e,n);return r===void 0?void 0:{name:t,sourceSize:r.size,sourceMtimeMs:r.mtimeMs,sourceCtimeMs:r.ctimeMs,sourceDev:r.dev,sourceIno:r.ino}}o(bs,"currentScannedFile");function Ts(e,t){return e!==void 0&&e.size===t.sourceSize&&e.mtimeMs===t.sourceMtimeMs&&e.ctimeMs===t.sourceCtimeMs&&e.dev===t.sourceDev&&e.ino===t.sourceIno}o(Ts,"sourceMatchesIdentity");async function Sr(e,t){return(await se(t,async r=>{let i=H.basename(r.name,".jsonl");return`${i}.jsonl`!==r.name?!1:Ts(await Qt(e,i),r)})).every(Boolean)}o(Sr,"scannedFilesStillMatch");async function Rr(e,t){if(t.state!=="ready"||t.source===void 0)return!1;let n=await Qt(e,t.entry.id);return n!==void 0&&n.size===t.source.size&&n.mtimeMs===t.source.mtimeMs&&n.ctimeMs===t.source.ctimeMs&&n.dev===t.source.dev&&n.ino===t.source.ino}o(Rr,"markerMatchesCanonical");async function Ms(e,t,n,r){await v.mkdir(J(e),{recursive:!0});let i=[...t].sort(),s=[...n].sort(),a=[...r].sort((u,l)=>u.name.localeCompare(l.name)),c={version:Ee,markerNames:i,markerCount:i.length,markerDigest:q(i),sessionNames:s,sessionFileCount:s.length,sessionFileDigest:q(s),excludedSources:a,excludedSourceCount:a.length,excludedSourceDigest:Jt(a)};await Er(Xt(e),JSON.stringify(c))}o(Ms,"writeManifest");async function br(e){let t;try{t=await v.readFile(Xt(e),"utf8")}catch(f){if(f.code!=="ENOENT")throw f;return}let n;try{n=Ss(JSON.parse(t))}catch{return}if(!n)return;let r=await Yt(e),i=await Kt(e);if(r.length!==n.markerCount||q(r)!==n.markerDigest||i.length!==n.sessionFileCount||q(i)!==n.sessionFileDigest)return;let s=await se(r,f=>lt(e,f));if(s.some(f=>f===void 0||f.state!=="ready")||(await se(s,async f=>f===void 0?!1:Rr(e,f))).some(f=>!f))return;let c=new Set(s.flatMap(f=>f?.state==="ready"?[`${f.entry.id}.jsonl`]:[])),u=i.filter(f=>!c.has(f));if(u.length!==n.excludedSourceCount)return;let l=await se(u,f=>bs(e,f));if(!(l.some(f=>f===void 0)||Jt(l.flatMap(f=>f===void 0?[]:[f]))!==n.excludedSourceDigest))return s.flatMap(f=>f?.state==="ready"?[f.entry]:[])}o(br,"readResumeIndex");async function Tr(e,t,n){await ys(e,()=>Is(e,t,n))}o(Tr,"completeResumeIndex");async function Is(e,t,n){let r=n.map(m=>m.name).sort(),i=q(r),s=await Kt(e);if(s.length!==r.length||q(s)!==i||!await Sr(e,n))return;await Es(e),await v.mkdir(J(e),{recursive:!0});let a=new Set(t.map(m=>m.id)),c=n.filter(m=>!a.has(H.basename(m.name,".jsonl")));for(let m of t)await Rs(e,m,"ready",!0,{size:m.sourceSize,mtimeMs:m.sourceMtimeMs,ctimeMs:m.sourceCtimeMs,dev:m.sourceDev,ino:m.sourceIno});let u=await Yt(e),l=await se(u,m=>lt(e,m));await se(u,async(m,y)=>{let w=l[y];(w===void 0||!a.has(w.entry.id))&&await v.rm(H.join(J(e),m),{force:!0})});let f=await Kt(e);if(f.length!==r.length||q(f)!==i||!await Sr(e,n))return;let d=await Yt(e),g=await se(d,m=>lt(e,m));g.some(m=>m?.state!=="ready")||g.length!==a.size||g.some(m=>m===void 0||!a.has(m.entry.id))||(await se(g,async m=>m===void 0?!1:Rr(e,m))).some(m=>!m)||await Ms(e,d,r,c)}o(Is,"completeResumeIndexWithLock");import{jsx as Je,jsxs as Pe}from"react/jsx-runtime";import{useMemo as yu,useRef as xu,useState as Ln}from"react";import{jsx as po}from"react/jsx-runtime";import{createContext as au,useContext as Pn,useEffect as _e,useMemo as fo,useState as cu,useCallback as ho,useRef as kt}from"react";import{Stream as Wc}from"node:stream";import{openSync as Bc,writeSync as eo}from"node:fs";import{performance as jc}from"node:perf_hooks";import{tmpdir as Hc}from"node:os";import{join as $c}from"node:path";import Zt,{forwardRef as ks,useContext as Os}from"react";import{createContext as vs}from"react";var Te=vs({isScreenReaderEnabled:!1});import{createContext as Ns}from"react";var dt=Ns(void 0);var Mr=ks(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":i,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:u}=Os(Te),l=n?Zt.createElement("ink-text",null,n):void 0;if(u&&r)return null;let f=Zt.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}},u&&l?l:e);return t?Zt.createElement(dt.Provider,{value:t},f):f});Mr.displayName="Box";var $=Mr;import Fs,{useContext as Ir}from"react";import Me from"chalk";import ae from"chalk";var As=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,_s=/^ansi256\(\s?(\d+)\s?\)$/;function Ps(e){return e in ae}o(Ps,"isNamedColor");function z(e,t,n){if(!t)return e;if(Ps(t)){let r=ae;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"?ae.hex(t)(e):ae.bgHex(t)(e);if(t.startsWith("ansi256")){let r=_s.exec(t);if(!r)return e;let i=Number(r[1]);return n==="foreground"?ae.ansi256(i)(e):ae.bgAnsi256(i)(e)}if(t.startsWith("rgb")){let r=As.exec(t);if(!r)return e;let i=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ae.rgb(i,s,a)(e):ae.bgRgb(i,s,a)(e)}return e}o(z,"colorize");function W({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:i=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:u="wrap",children:l,"aria-label":f,"aria-hidden":d=!1,internal_cursorAnchor:g=!1}){let{isScreenReaderEnabled:h}=Ir(Te),m=Ir(dt),y=h&&f?f:l;if(y==null)return null;let w=o(x=>{let p=x;n&&(p=Me.dim(p)),e&&(p=z(p,e,"foreground"));let S=t??m;return S&&(p=z(p,S,"background")),r&&(p=Me.bold(p)),i&&(p=Me.italic(p)),s&&(p=Me.underline(p)),a&&(p=Me.strikethrough(p)),c&&(p=Me.inverse(p)),p},"transform");return h&&d?null:Fs.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:u},internal_transform:w,...g?{internal_cursorAnchor:!0}:{}},h&&f?f:l)}o(W,"Text");import jl,{useLayoutEffect as Hl,useMemo as $l,useState as Ul}from"react";import we from"node:process";import Ji from"react";import xc from"es-toolkit/compat/throttle";import B from"ansi-escapes";import ie from"is-in-ci";import Sc from"auto-bind";import{onExit as Cc}from"signal-exit";import Ec from"patch-console";import{LegacyRoot as Rc,ConcurrentRoot as bc}from"react-reconciler/constants.js";import Tc from"yoga-layout";import Mc from"wrap-ansi";import Ic from"terminal-size";import Ls from"node:process";var pt=o(()=>Ls.env.DEV==="true","isDev");import la from"react-reconciler";import{DefaultEventPriority as fa,NoEventPriority as Xr}from"react-reconciler/constants.js";import*as ce from"scheduler";import Yr from"yoga-layout";import{createContext as da}from"react";import Js from"yoga-layout";import Ds from"widest-line";var vr=new Map,Ws=o(e=>{if(e.length===0)return{width:0,height:0};let t=vr.get(e);if(t)return t;let n=Ds(e),r=e.split(`
9
+ `).length,i={width:n,height:r};return vr.set(e,i),i},"measureText"),en=Ws;import Bs from"wrap-ansi";import js from"cli-truncate";var Nr={},Hs=o((e,t,n)=>{let r=e+String(t)+String(n),i=Nr[r];if(i)return i;let s=e;if(n==="wrap"&&(s=Bs(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=js(e,t,{position:a})}return Nr[r]=s,s},"wrapText"),ht=Hs;var $s=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),Us=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),zs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Ar=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),Ys=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),_r=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),kr=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!$s(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!Us(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!zs(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Or=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"),Ks=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Ar(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!Ys(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),Gs=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"),Vs=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"),tn=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(_r(t))return!0;return!1},"hasAnsiControlCharacters"),Ie=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"),Pr=o(e=>{if(!tn(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 Ie(t,e,n,r);if(a==="["){let l=kr(e,r+2);if(l===void 0)return Ie(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=Gs(a);if(c!==void 0){let l=Or(e,r+2,c.allowBellTerminator);if(l===void 0)return Ie(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let u=Ks(e,r+1);if(u===void 0){if(Ar(a))return Ie(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,u.endIndex),intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}if(i==="\x9B"){let a=kr(e,r+1);if(a===void 0)return Ie(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=Vs(i);if(s!==void 0){let a=Or(e,r+1,s.allowBellTerminator);if(a===void 0)return Ie(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(_r(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 Xs=/^[\d:;]*$/,qs=o(e=>{if(!tn(e))return e;let t="";for(let n of Pr(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&Xs.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Fr=qs;var Lr=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=Lr(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return Fr(t)},"squashTextNodes"),Be=Lr;var mt=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:Js.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(Qs.bind(null,t)),t},"createNode"),gt=o((e,t)=>{t.parentNode&&je(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")&&wt(e)},"appendChildNode"),nn=o((e,t,n)=>{t.parentNode&&je(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")&&wt(e)},"insertBeforeNode"),je=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")&&wt(e)},"removeChildNode"),rn=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),on=o((e,t)=>{e.style=t},"setStyle"),Dr=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return He(t,e),t},"createTextNode"),Qs=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:Be(e),r=en(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=ht(n,t,i);return en(s)},"measureTextNode"),Wr=o(e=>{if(e?.parentNode)return e.yogaNode??Wr(e.parentNode)},"findClosestYogaNode"),wt=o(e=>{Wr(e)?.markDirty()},"markNodeAsDirty"),He=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,wt(e)},"setTextNodeValue");import C from"yoga-layout";var ea=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?C.POSITION_TYPE_ABSOLUTE:C.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(C.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(C.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(C.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(C.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),ta=o((e,t)=>{"margin"in t&&e.setMargin(C.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(C.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(C.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(C.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(C.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(C.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(C.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),na=o((e,t)=>{"padding"in t&&e.setPadding(C.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(C.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(C.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(C.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(C.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(C.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(C.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),ra=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(C.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(C.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(C.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(C.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(C.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(C.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(C.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(C.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(C.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(C.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(C.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(C.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(C.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(C.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(C.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(C.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(C.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(C.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(C.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(C.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(C.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),ia=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"),oa=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?C.DISPLAY_FLEX:C.DISPLAY_NONE)},"applyDisplayStyles"),sa=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(C.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(C.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(C.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(C.EDGE_RIGHT,n)}},"applyBorderStyles"),aa=o((e,t)=>{"gap"in t&&e.setGap(C.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(C.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(C.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),ca=o((e,t={})=>{ea(e,t),ta(e,t),na(e,t),ra(e,t),ia(e,t),oa(e,t),sa(e,t),aa(e,t)},"styles"),sn=ca;if(pt())try{await Promise.resolve().then(()=>(zr(),ua))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
800
10
  The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
801
11
  but this failed as it was not installed. Debugging with React Devtools requires it.
802
12
 
@@ -804,33 +14,32 @@ To install use this command:
804
14
 
805
15
  $ npm install --save-dev react-devtools-core
806
16
  `.trim()+`
807
- `);else throw e}var la=i((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let o of Object.keys(e))(!t||!Object.hasOwn(t,o))&&(n[o]=void 0,r=!0);if(t)for(let o of Object.keys(t))t[o]!==e[o]&&(n[o]=t[o],r=!0);return r?n:void 0},"diff"),ua=i(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),ln=pa,_r,fa={name:void 0,version:void 0},se=Ug({getRootHostContext:i(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:i(()=>null,"prepareForCommit"),preparePortalMount:i(()=>null,"preparePortalMount"),clearContainer:i(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:i(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let o=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=sn(o);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){Ir(s,c),s.yogaNode&&Cr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){_r=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}Er(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return ta(e)},resetTextContent(){},hideTextInstance(e){yt(e,"")},unhideTextInstance(e,t){yt(e,t)},getPublicInstance:i(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_FLEX)},appendInitialChild:an,appendChild:an,insertBefore:Sr,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:i(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:i(()=>null,"getInstanceFromScope"),appendChildToContainer:an,insertInContainerBefore:Sr,removeChildFromContainer(e,t){gt(e,t),ua(t.yogaNode)},commitUpdate(e,t,n,r){_r&&e.internal_static&&(_r.isStaticDirty=!0);let o=la(n,r),s=la(n.style,r.style);if(!(!o&&!s)){if(o)for(let[a,c]of Object.entries(o)){if(a==="style"){Ir(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}Er(e,a,c)}s&&e.yogaNode&&Cr(e.yogaNode,s)}},commitTextUpdate(e,t,n){yt(e,n)},removeChild(e,t){gt(e,t),ua(t.yogaNode)},setCurrentUpdatePriority(e){ln=e},getCurrentUpdatePriority:i(()=>ln,"getCurrentUpdatePriority"),resolveUpdatePriority(){return ln!==pa?ln:Xg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Wg(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:fa.name,rendererVersion:fa.version});import Gg from"widest-line";import Jg from"indent-string";import we from"yoga-layout";import un from"yoga-layout";var Hg=i(e=>e.getComputedWidth()-e.getComputedPadding(un.EDGE_LEFT)-e.getComputedPadding(un.EDGE_RIGHT)-e.getComputedBorder(un.EDGE_LEFT)-e.getComputedBorder(un.EDGE_RIGHT),"getMaxWidth"),ma=Hg;import zg from"cli-boxes";import fn from"chalk";var qg=i((e,t,n,r)=>{if(n.style.borderStyle){let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?zg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,u=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,p=n.style.borderBottomDimColor??n.style.borderDimColor,m=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=o-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=fn.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,l,"foreground")+`
808
- `).repeat(_);m&&(W=fn.dim(W));let H=(G(a.right,u,"foreground")+`
809
- `).repeat(_);g&&(H=fn.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&p&&(A=fn.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+o-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),ha=qg;var Vg=i((e,t,n,r)=>{if(!n.style.backgroundColor)return;let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,u=o-a-c,f=s-d-l;if(!(u>0&&f>0))return;let p=G(" ".repeat(u),n.style.backgroundColor,"background");for(let m=0;m<f;m++)r.write(e+a,t+d+m,p,{transformers:[]})},"renderBackground"),ga=Vg;function ya(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:o,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:l,previousAppliedScrollTop:u,regionTop:f}=e,p=Math.max(0,n-r),m=Math.max(0,Math.min(Math.floor(t),p)),v=s&&n>=o?p:m,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(p,c??p))):v,y=d&&l!==void 0,h=Math.max(0,Math.floor(l??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(u!==void 0&&u!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-u})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}i(ya,"computeScrollState");var Yg=i((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),o=n.getComputedTop();t=`
810
- `.repeat(o)+Jg(t,r)}return t},"applyPaddingToText"),pn=i((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=ht(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
811
- `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>pn(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:o}=e.internal_accessibility;if(o){let a=Object.keys(o).filter(c=>o[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Ar=null,Pr=null;function wa(){Ar=null,Pr=null}i(wa,"resetScrollHint");function va(){return Ar}i(va,"getScrollHint");function ba(){return Pr}i(ba,"getScrollRepaint");var ka=i((e,t,n)=>{let{offsetX:r=0,offsetY:o=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),l=o+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:l});let u=s;if(typeof e.internal_transform=="function"&&(u=[e.internal_transform,...s]),e.nodeName==="ink-text"){let m=ht(e);if(m.length>0){let g=Gg(m),v=ma(c);if(g>v){let w=e.style.textWrap??"wrap";m=on(m,v,w)}m=Yg(e,m),t.write(d,l,m,{transformers:u})}return}let f=!1,p=0;if(e.nodeName==="ink-box"){ga(d,l,e,t),ha(d,l,e,t);let m=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=m==="hidden"||m==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=ya({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:l+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Ar=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Pr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,p=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?l+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?l+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let m of e.childNodes)ka(m,t,{offsetX:d,offsetY:l-p,transformers:u,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),Mr=ka;import Qg from"slice-ansi";import Zg from"string-width";import{styledCharsFromTokens as ey,styledCharsToString as ty,tokenize as ny}from"@alcalzone/ansi-tokenize";var Or=class{static{i(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=ey(ny(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Zg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let o of t.split(`
812
- `))r=Math.max(r,this.getStringWidth(o));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{i(this,"Output")}width;height;operations=[];caches=new Or;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,o){let{transformers:s}=o;r&&this.operations.push({type:"write",x:t,y:n,text:r,transformers:s})}clip(t){this.operations.push({type:"clip",clip:t})}unclip(){this.operations.push({type:"unclip"})}getGrid(){let t=[];for(let r=0;r<this.height;r++){let o=[];for(let s=0;s<this.width;s++)o.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(o)}let n=[];for(let r of this.operations)if(r.type==="clip"&&n.push(r.clip),r.type==="unclip"&&n.pop(),r.type==="write"){let{text:o,transformers:s}=r,{x:a,y:c}=r,d=o.split(`
813
- `),l=n.at(-1);if(l){let f=typeof l?.x1=="number"&&typeof l?.x2=="number",p=typeof l?.y1=="number"&&typeof l?.y2=="number";if(f){let m=this.caches.getWidestLine(o);if(a+m<l.x1||a>l.x2)continue}if(p){let m=d.length;if(c+m<l.y1||c>l.y2)continue}if(f&&(d=d.map(m=>{let g=a<l.x1?l.x1-a:0,v=this.caches.getStringWidth(m),w=a+v>l.x2?l.x2-a:v;return Qg(m,g,w)}),a<l.x1&&(a=l.x1)),p){let m=c<l.y1?l.y1-c:0,g=d.length,v=c+g>l.y2?l.y2-c:g;d=d.slice(m,v),c<l.y1&&(c=l.y1)}}let u=0;for(let[f,p]of d.entries()){let m=t[c+u];if(!m)continue;for(let w of s)p=w(p,f);let g=this.caches.getStyledChars(p),v=a;for(let w of g){m[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)m[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}u++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let o=r.filter(s=>s!==void 0);return ty(o).trimEnd()}).join(`
814
- `),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function xa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}i(xa,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}i(Ce,"cellAt");function Sa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(o,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(o<0||s<0||o>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${o}, ${s}) on ${e}x${t}`);n[s*e+o]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}i(Sa,"createScreenBuilder");function*mn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let o=0;o<r;o++)for(let s=0;s<n;s++){let a=Ce(e,s,o),c=Ce(t,s,o);ry(a,c)||(yield{x:s,y:o,prev:a,next:c})}}i(mn,"diffEach");function Ea(e,t,n,r){if(r===0||e.height===0)return e;let o=Math.max(0,t),s=Math.min(e.height-1,n);if(o>s)return e;let a=e.width,c=e.cells.slice(),d=s-o+1,l=i(u=>{for(let f=0;f<a;f++)c[u*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let u=o;u<=s;u++)l(u);return{...e,cells:c}}if(r>0){for(let u=o;u<=s-r;u++)for(let f=0;f<a;f++)c[u*a+f]=e.cells[(u+r)*a+f]??Q;for(let u=s-r+1;u<=s;u++)l(u)}else{let u=-r;for(let f=s;f>=o+u;f--)for(let p=0;p<a;p++)c[f*a+p]=e.cells[(f-u)*a+p]??Q;for(let f=o;f<=o+u-1;f++)l(f)}return{...e,cells:c}}i(Ea,"shiftRowsRegion");function ry(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}i(ry,"cellsEqual");var Nr="\x1B]8;";function iy(e){return e.endsWith("\x07")?e.slice(0,-1):e}i(iy,"stripOsc8Terminator");function oy(e){if(!e.startsWith(Nr))return;let t=e.slice(Nr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),o=iy(r);return o.length>0?o:void 0}i(oy,"parseOsc8Url");function sy(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Nr)){let o=oy(r.code);o!==void 0&&(n=o)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}i(sy,"styledCharToCell");function Ia(e){let t=e.getGrid(),n=e.width,r=e.height,o=Sa(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let l=0;l<d;l++){let u=c[l];if(!u)continue;let f=sy(u);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||o.setCellAt(l,a,f)}}return o.build()}i(Ia,"outputToScreen");var ay=i((e,t,n)=>{if(e.yogaNode){if(t){let p=pn(e,{skipStaticElements:!0}),m=p===""?0:p.split(`
815
- `).length,g="";return e.staticNode&&(g=pn(e.staticNode,{skipStaticElements:!1})),{output:p,outputHeight:m,staticOutput:g?`${g}
816
- `:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});wa(),Mr(e,r,{skipStaticElements:!0});let o;e.staticNode?.yogaNode&&(o=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),Mr(e.staticNode,o,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=Ia(r),d=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),u=r.cursorPosition,f={screen:c,viewport:{width:d,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:va(),scrollRepaint:ba(),...u?{inputCursor:{x:u.x,y:u.y}}:{}};return{output:s,outputHeight:a,staticOutput:o?`${o.get().output}
817
- `:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Lr=ay;function X(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}i(X,"csi");function Ca(e=1){return e===0?"":X(e,"A")}i(Ca,"cursorUp");function cy(e=1){return e===0?"":X(e,"B")}i(cy,"cursorDown");function dy(e=1){return e===0?"":X(e,"C")}i(dy,"cursorForward");function ly(e=1){return e===0?"":X(e,"D")}i(ly,"cursorBack");function Ta(e){return X(e,"G")}i(Ta,"cursorTo");var uy=X("G"),Ra=X("H");function _a(e,t){let n="";return e<0?n+=ly(-e):e>0&&(n+=dy(e)),t<0?n+=Ca(-t):t>0&&(n+=cy(t)),n}i(_a,"cursorMove");var Dr=X(2,"K");function Aa(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Dr,n<e-1&&(t+=Ca(1));return t+=uy,t}i(Aa,"eraseLines");var Pa=X("r"),Ma="\x1B7",Oa="\x1B8";function Na(e,t){return X(e,t,"r")}i(Na,"setScrollRegion");function La(e=1){return X(e,"S")}i(La,"scrollUp");function Da(e=1){return X(e,"T")}i(Da,"scrollDown");var wt=X(0,"m");function $a(e){return`\x1B]${e.join(";")}\x07`}i($a,"osc");function fy(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}i(fy,"osc8Id");function vt(e,t){if(!e)return He;let n={id:fy(e),...t??{}},r=Object.entries(n).map(([o,s])=>`${o}=${s}`).join(":");return $a(["8",r,e])}i(vt,"link");var He=$a(["8","",""]);function $r(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",o;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==o&&(o!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=vt(d.hyperlink)),o=d.hyperlink),d.style!==r&&(r!==""&&(a+=wt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}o!==void 0&&(a+=He,o=void 0),r!==""&&(a+=wt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
818
- `)}]}i($r,"renderFullFrame");var py=Object.freeze([]),my=Object.freeze([]);function Te(e,t){if(e===t)return{patches:py,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:wt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}i(Te,"transitionStyle");function kt(e,t){let n=Te(e,t),r="";for(let o of n.patches)o.type==="stdout"&&(r+=o.content);return{str:r,current:n.current}}i(kt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:my,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:vt(t)}),{patches:n,current:t}}i(ae,"transitionHyperlink");function Fa(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}i(Fa,"needsWidthCompensation");var Re=class{static{i(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let o of n)this._diffMut.push(o);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},bt={type:"stdout",content:`
819
- `};function xt(e,t,n){let r=t.width===Z.Wide?2:1,o=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<o){let u=t.char.length>2?o:o+1;if(c+2>=u)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let l=r===2&&Fa(t.char);return l&&c+1<o&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),l&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=o?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}i(xt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let o=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:[[{type:"cursorMove",x:o,y:s}],{dx:o,dy:s}]})}i(_e,"moveCursorTo");function St(e,t,n,r,o=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(p=>{let m=new Array(1+f);m[0]=ce;for(let g=0;g<f;g++)m[1+g]=bt;return[m,{dx:-p.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let p=Ce(t.screen,f,c);if(!p||p.width===Z.SpacerTail||p.char===" "&&p.style===""&&p.hyperlink===void 0)continue;_e(e,f,c);let m=ae(a,p.hyperlink);for(let v of m.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=m.current;let g=kt(s,p.style);xt(e,p,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let l=ae(a,void 0);for(let f of l.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=l.current;let u=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||o);e.txn(f=>u?[[ce],{dx:-f.x,dy:0}]:[[ce,bt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let d=ae(a,void 0);for(let l of d.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}i(St,"renderFrameSlice");function Fr(e,t,n,r){let o=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=o;a<=s;a++)hy(e,t,a)}i(Fr,"repaintFrameRows");function hy(e,t,n){let r="",o;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+wt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(o,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);o=c.current;let d=kt(r,a.style);xt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(o,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}i(hy,"repaintFrameRow");function jr(e,t){let n="";for(let r=0;r<e.width;r++){let o=Ce(e,r,t);n+=o?.char??" "}return n.trimEnd()}i(jr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);St(r,e,0,e.screen.height,n);let o=[{type:"clearTerminal",reason:t}];for(let s of r.diff)o.push(s);return o}i(ze,"fullResetSequence_CAUSES_FLICKER");function hn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,o=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:o,prevHadScrollback:s,nextFitsViewport:a}}i(hn,"computeViewportState");function ja(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=hn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of mn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}i(ja,"shouldFullReset");function Ka(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}i(Ka,"shouldSkipDiff");var gn=class{static{i(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return $r(n);let o=r.inlineBottomAnchored??!1,s=Ba(t,o),a=Ba(n,o);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",o);let c=ja(s,a,jr);if(c.reset)return ze(a,c.reason,o);if(a.scrollRepaint&&r.altScreen===!0)return gy(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let l={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},u={...s,screen:Ea(s.screen,d.top,d.bottom,d.delta)};return[l,...Ua(u,a,o)]}return Ua(s,a,o)}reset(){}};function Kr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}i(Kr,"emitPatches");function Br(e,t,n){if(t!==""){let r=Te(t,"");Kr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Kr(e,r.patches)}return{style:"",hyperlink:void 0}}i(Br,"resetStyleAndHyperlink");function gy(e,t,n){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&Fr(o,t,c.top,c.bottom);let d=Wa(o,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Br(o,d.currentStyle,d.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height),Ha(o,t),o.diff)}i(gy,"renderScrollRepaint");function Xa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(o=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-o.x,dy:-r}])}i(Xa,"applyShrink");function Wa(e,t,n,r){let o="",s,a=!1;for(let c of mn(t.screen,n.screen)){let{x:d,y:l,prev:u,next:f}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let p=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!Ka(u,f,p)){if(l<r.viewportY){a=!0;break}if(_e(e,d,l),f){let m=ae(s,f.hyperlink);Kr(e,m.patches),s=m.current;let g=kt(o,f.style);xt(e,f,g.str)&&(o=g.current)}else if(u){let m=Br(e,o,s);o=m.style,s=m.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:o,currentHyperlink:s,needsFullReset:a}}i(Wa,"diffPass");function Ba(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}i(Ba,"clampRestingCursor");function Ha(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=bt;return[s,{dx:-n.x,dy:r}]}let o=t.cursor.y-n.y;return o!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:o}],{dx:t.cursor.x-n.x,dy:o}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}i(Ha,"restoreCursor");function Ua(e,t,n=!1){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,e,t);let s=Wa(o,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Br(o,s.currentStyle,s.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height,n),Ha(o,t),o.diff)}i(Ua,"renderIncremental");var yy="\x1B[?25l",wy="\x1B[?25h",vy=`\x1B[2J${Ra}`,by="\x1B[?2026h",ky="\x1B[?2026l";function xy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return yy;case"cursorShow":return wy;case"cursorMove":return _a(e.x,e.y);case"cursorTo":return Ta(e.col);case"eraseLine":return Dr;case"clear":return Aa(e.count);case"clearTerminal":return vy;case"hyperlink":return vt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),o=e.delta>0?La(r):Da(r);return Ma+Na(t,n)+o+Pa+Oa}}}i(xy,"patchToBytes");function yn(e,t,n=!1){let r="",o=!1;for(let s of t)s.type==="clearTerminal"&&(o=!0),r+=xy(s);if(r.length!==0){if(n&&o){e.write(by+r+ky);return}e.write(r)}}i(yn,"applyDiff");function za(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return yn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}i(za,"applyCellFrame");function Et(e,t){return{screen:xa(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}i(Et,"emptyFrame");import Sy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function le(e){return"isTTY"in e&&e.isTTY===!0&&!Sy}i(le,"shouldSynchronize");var Ey=new WeakMap,qa=Ey;import{EventEmitter as Wy}from"node:events";import Hy from"node:process";import Ae,{useState as Wr,useRef as qe,useCallback as M,useMemo as Ve,useEffect as uc}from"react";import zy from"cli-cursor";var Iy=i(e=>e>=48&&e<=63,"isCsiParameterByte"),Cy=i(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Ga=i(e=>e>=64&&e<=126,"isCsiFinalByte");function Ty(e,t,n){let r=t+n+1,o=r;for(;o<e.length;o+=1){let s=e.codePointAt(o);if(s===void 0)return"pending";if(!(Iy(s)||Cy(s))&&!(s===91&&o===r))return Ga(s)?{sequence:e.slice(t,o+1),nextIndex:o+1}:void 0}return"pending"}i(Ty,"parseCsiSequence");function Ry(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let o=e.codePointAt(r-1);if(!(o===void 0||!Ga(o)))return{sequence:e.slice(t,r),nextIndex:r}}i(Ry,"parseSs3Sequence");function Va(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return Ty(e,t,n);if(r==="O")return Ry(e,t,n)}i(Va,"parseControlSequence");function _y(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,o=t+1+r;return{sequence:e.slice(t,o),nextIndex:o}}i(_y,"parseEscapedCodePoint");function Ay(e){let t=[],n=0,r=i(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;n<e.length;){let o=e.indexOf("\x1B",n);if(o===-1)return t.push(e.slice(n)),{events:t,pending:""};if(o>n&&t.push(e.slice(n,o)),o===e.length-1)return r(o);let s=Va(e,o,1);if(s==="pending")return r(o);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[o+1]==="\x1B"){if(o+2>=e.length)return r(o);let d=Va(e,o,2);if(d==="pending")return r(o);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(o,o+2)),n=o+2;continue}let c=_y(e,o);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}i(Ay,"parseKeypresses");function wn(){let e="";return{push(t){let n=Ay(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}i(wn,"createInputParser");import{createContext as Py}from"react";var Ja=Py({exit(){}});Ja.displayName="InternalAppContext";var Ya=Ja;import{EventEmitter as My}from"node:events";import{createContext as Oy}from"react";var Ny={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Qa=Oy({stdin:Ny,internal_eventEmitter:new My,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Qa.displayName="InternalStdinContext";var Za=Qa;import{createContext as Ly}from"react";var Dy={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},ec=Ly({stdout:Dy,write(){}});ec.displayName="InternalStdoutContext";var tc=ec;import{createContext as $y}from"react";var Fy={isTTY:!1,write(){return!0},on(){},off(){}},nc=$y({stderr:Fy,write(){}});nc.displayName="InternalStderrContext";var rc=nc;import{createContext as jy}from"react";var ic=jy({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});ic.displayName="InternalFocusContext";var oc=ic;import{createContext as Ky}from"react";var sc=Ky({setCursorPosition(){}});sc.displayName="InternalCursorContext";var ac=sc;import Uy,{PureComponent as Xy}from"react";import*as vn from"node:fs";import{cwd as lc}from"node:process";import N from"react";import cc from"stack-utils";import By from"code-excerpt";var Ur=i(e=>e?.replace(`file://${lc()}/`,""),"cleanupPath"),dc=new cc({cwd:lc(),internals:cc.nodeInternals()});function Xr({error:e}){let t=e.stack?e.stack.split(`
820
- `).slice(1):void 0,n=t?dc.parseLine(t[0]):void 0,r=Ur(n?.file),o,s=0;if(r&&n?.line&&vn.existsSync(r)){let a=vn.readFileSync(r,"utf8");if(o=By(a,n.line),o)for(let{line:c}of o)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&o&&N.createElement(q,{marginTop:1,flexDirection:"column"},o.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
821
- `).slice(1).map(a=>{let c=dc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${Ur(c.file)??""} line ${c.line} column ${c.column}`}," ","(",Ur(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}i(Xr,"ErrorOverview");var It=class extends Xy{static{i(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?Uy.createElement(Xr,{error:this.state.error}):this.props.children}};var qy=" ",Vy="\x1B[Z",Gy="\x1B";function fc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:o,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[l,u]=Wr(!0),[f,p]=Wr(void 0),[,m]=Wr([]),g=qe(0),v=qe(0),w=qe(new Wy);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(wn()),b=qe(void 0),I=M(()=>{b.current&&(clearImmediate(b.current),b.current=void 0)},[]),_=t.isTTY,W=M(()=>{y.current&&(t.removeListener("readable",y.current),y.current=void 0)},[t]),H=M(()=>{t.setRawMode(!1),W(),t.unref(),v.current=0,h.current.reset(),I()},[t,W,I]),A=M(x=>{_&&v.current>0&&H(),c(x)},[_,H,c]),Me=M(x=>{if(x===""&&a){A();return}x===Gy&&p(S=>S&&void 0)},[a,A]),Rt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),oi=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Rt(x)})},[I,Rt]),Cn=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Rt(E)}h.current.hasPendingEscape()&&oi()},[t,Rt,I,oi]),si=M(x=>{if(!_)throw t===Hy.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
17
+ `);else throw e}var Kr=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"),Gr=o(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),xt=Xr,un,Vr={name:void 0,version:void 0},Q=la({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=mt(i);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){on(s,c),s.yogaNode&&sn(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"){un=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}rn(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 Dr(e)},resetTextContent(){},hideTextInstance(e){He(e,"")},unhideTextInstance(e,t){He(e,t)},getPublicInstance:o(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(Yr.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(Yr.DISPLAY_FLEX)},appendInitialChild:gt,appendChild:gt,insertBefore:nn,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ce.unstable_scheduleCallback,cancelCallback:ce.unstable_cancelCallback,shouldYield:ce.unstable_shouldYield,now:ce.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:o(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:o(()=>null,"getInstanceFromScope"),appendChildToContainer:gt,insertInContainerBefore:nn,removeChildFromContainer(e,t){je(e,t),Gr(t.yogaNode)},commitUpdate(e,t,n,r){un&&e.internal_static&&(un.isStaticDirty=!0);let i=Kr(n,r),s=Kr(n.style,r.style);if(!(!i&&!s)){if(i)for(let[a,c]of Object.entries(i)){if(a==="style"){on(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}rn(e,a,c)}s&&e.yogaNode&&sn(e.yogaNode,s)}},commitTextUpdate(e,t,n){He(e,n)},removeChild(e,t){je(e,t),Gr(t.yogaNode)},setCurrentUpdatePriority(e){xt=e},getCurrentUpdatePriority:o(()=>xt,"getCurrentUpdatePriority"),resolveUpdatePriority(){return xt!==Xr?xt:fa},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:da(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:Vr.name,rendererVersion:Vr.version});import wa from"widest-line";import ya from"indent-string";import ue from"yoga-layout";import St from"yoga-layout";var pa=o(e=>e.getComputedWidth()-e.getComputedPadding(St.EDGE_LEFT)-e.getComputedPadding(St.EDGE_RIGHT)-e.getComputedBorder(St.EDGE_LEFT)-e.getComputedBorder(St.EDGE_RIGHT),"getMaxWidth"),qr=pa;import ha from"cli-boxes";import Ct from"chalk";var ma=o((e,t,n,r)=>{if(n.style.borderStyle){let i=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?ha[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,u=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,f=n.style.borderRightColor??n.style.borderColor,d=n.style.borderTopDimColor??n.style.borderDimColor,g=n.style.borderBottomDimColor??n.style.borderDimColor,h=n.style.borderLeftDimColor??n.style.borderDimColor,m=n.style.borderRightDimColor??n.style.borderDimColor,y=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,x=n.style.borderLeft!==!1,p=n.style.borderRight!==!1,S=i-(x?1:0)-(p?1:0),M=y?z((x?a.topLeft:"")+a.top.repeat(S)+(p?a.topRight:""),c,"foreground"):void 0;y&&d&&(M=Ct.dim(M));let R=s;y&&(R-=1),w&&(R-=1);let A=(z(a.left,l,"foreground")+`
18
+ `).repeat(R);h&&(A=Ct.dim(A));let D=(z(a.right,f,"foreground")+`
19
+ `).repeat(R);m&&(D=Ct.dim(D));let N=w?z((x?a.bottomLeft:"")+a.bottom.repeat(S)+(p?a.bottomRight:""),u,"foreground"):void 0;w&&g&&(N=Ct.dim(N));let O=y?1:0;M&&r.write(e,t,M,{transformers:[]}),x&&r.write(e,t+O,A,{transformers:[]}),p&&r.write(e+i-1,t+O,D,{transformers:[]}),N&&r.write(e,t+s-1,N,{transformers:[]})}},"renderBorder"),Jr=ma;var ga=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,u=n.style.borderStyle&&n.style.borderTop!==!1?1:0,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,f=i-a-c,d=s-u-l;if(!(f>0&&d>0))return;let g=z(" ".repeat(f),n.style.backgroundColor,"background");for(let h=0;h<d;h++)r.write(e+a,t+u+h,g,{transformers:[]})},"renderBackground"),Qr=ga;function Zr(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:i,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:u,inWindowScrollTop:l,previousAppliedScrollTop:f,regionTop:d}=e,g=Math.max(0,n-r),h=Math.max(0,Math.min(Math.floor(t),g)),y=s&&n>=i?g:h,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(y,Math.min(g,c??g))):y,x=u&&l!==void 0,p=Math.max(0,Math.floor(l??0)),S=u?x?p:0:w,M=x?S:w,R=null;if(f!==void 0&&f!==M&&r>0){let A=d+r-1;A>=d&&(R={top:d,bottom:A,delta:M-f})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:M,scrollTop:w,scrollOffsetY:S,scrollHint:R}}o(Zr,"computeScrollState");var xa=o((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),i=n.getComputedTop();t=`
20
+ `.repeat(i)+ya(t,r)}return t},"applyPaddingToText"),Et=o((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===ue.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=Be(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
21
+ `;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>Et(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"),ln=null,fn=null;function ei(){ln=null,fn=null}o(ei,"resetScrollHint");function ti(){return ln}o(ti,"getScrollHint");function ni(){return fn}o(ni,"getScrollRepaint");var ri=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()===ue.DISPLAY_NONE)return;let u=r+c.getComputedLeft(),l=i+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:u,y:l});let f=s;if(typeof e.internal_transform=="function"&&(f=[e.internal_transform,...s]),e.nodeName==="ink-text"){let h=Be(e);if(h.length>0){let m=wa(h),y=qr(c);if(m>y){let w=e.style.textWrap??"wrap";h=ht(h,y,w)}h=xa(e,h),t.write(u,l,h,{transformers:f})}return}let d=!1,g=0;if(e.nodeName==="ink-box"){Qr(u,l,e,t),Jr(u,l,e,t);let h=e.style.overflowX??e.style.overflow,m=e.style.overflowY??e.style.overflow,y=h==="hidden"||h==="scroll",w=m==="hidden"||m==="scroll";if(m==="scroll"){let x=c.getComputedBorder(ue.EDGE_TOP),p=c.getComputedBorder(ue.EDGE_BOTTOM),S=Math.max(0,c.getComputedHeight()-x-p),M=e.attributes?.virtualScrollWindowed===!0,R=e.childNodes[0],A=Math.max(0,Math.floor(M?e.attributes?.scrollHeight??0:R?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),D=typeof e.scrollHeight=="number"?e.scrollHeight:A,N=Zr({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:A,viewportHeight:S,previousScrollHeight:D,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:M,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:l+x});e.scrollHeight=N.scrollHeight,e.scrollViewportHeight=S,e.scrollViewportTop=N.viewportTop,e.appliedScrollTop=N.appliedScrollTop,N.scrollHint&&(ln=N.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(fn={top:N.scrollHint.top,bottom:N.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=N.scrollTop,g=N.scrollOffsetY}if(y||w){let x=y?u+c.getComputedBorder(ue.EDGE_LEFT):void 0,p=y?u+c.getComputedWidth()-c.getComputedBorder(ue.EDGE_RIGHT):void 0,S=w?l+c.getComputedBorder(ue.EDGE_TOP):void 0,M=w?l+c.getComputedHeight()-c.getComputedBorder(ue.EDGE_BOTTOM):void 0;t.clip({x1:x,x2:p,y1:S,y2:M}),d=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let h of e.childNodes)ri(h,t,{offsetX:u,offsetY:l-g,transformers:f,skipStaticElements:a});d&&t.unclip()}}},"renderNodeToOutput"),dn=ri;import Sa from"slice-ansi";import Ca from"string-width";import{styledCharsFromTokens as Ea,styledCharsToString as Ra,tokenize as ba}from"@alcalzone/ansi-tokenize";var pn=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=Ea(ba(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Ca(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(`
22
+ `))r=Math.max(r,this.getStringWidth(i));n=r,this.blockWidths.set(t,n)}return n}},ve=class{static{o(this,"Output")}width;height;operations=[];caches=new pn;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,u=i.split(`
23
+ `),l=n.at(-1);if(l){let d=typeof l?.x1=="number"&&typeof l?.x2=="number",g=typeof l?.y1=="number"&&typeof l?.y2=="number";if(d){let h=this.caches.getWidestLine(i);if(a+h<l.x1||a>l.x2)continue}if(g){let h=u.length;if(c+h<l.y1||c>l.y2)continue}if(d&&(u=u.map(h=>{let m=a<l.x1?l.x1-a:0,y=this.caches.getStringWidth(h),w=a+y>l.x2?l.x2-a:y;return Sa(h,m,w)}),a<l.x1&&(a=l.x1)),g){let h=c<l.y1?l.y1-c:0,m=u.length,y=c+m>l.y2?l.y2-c:m;u=u.slice(h,y),c<l.y1&&(c=l.y1)}}let f=0;for(let[d,g]of u.entries()){let h=t[c+f];if(!h)continue;for(let w of s)g=w(g,d);let m=this.caches.getStyledChars(g),y=a;for(let w of m){h[y]=w;let x=Math.max(1,this.caches.getStringWidth(w.value));if(x>1)for(let p=1;p<x;p++)h[y+p]={type:"char",value:"",fullWidth:!1,styles:w.styles};y+=x}f++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let i=r.filter(s=>s!==void 0);return Ra(i).trimEnd()}).join(`
24
+ `),height:t.length}}};var K={Single:0,Wide:1,SpacerTail:2},Y={char:" ",width:K.Single,style:"",hyperlink:void 0};function ii(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(Y);return{width:e,height:t,cells:n}}o(ii,"createScreen");function de(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}o(de,"cellAt");function oi(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(Y),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(oi,"createScreenBuilder");function*Rt(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=de(e,s,i),c=de(t,s,i);Ta(a,c)||(yield{x:s,y:i,prev:a,next:c})}}o(Rt,"diffEach");function si(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(),u=s-i+1,l=o(f=>{for(let d=0;d<a;d++)c[f*a+d]=Y},"blankRow");if(Math.abs(r)>=u){for(let f=i;f<=s;f++)l(f);return{...e,cells:c}}if(r>0){for(let f=i;f<=s-r;f++)for(let d=0;d<a;d++)c[f*a+d]=e.cells[(f+r)*a+d]??Y;for(let f=s-r+1;f<=s;f++)l(f)}else{let f=-r;for(let d=s;d>=i+f;d--)for(let g=0;g<a;g++)c[d*a+g]=e.cells[(d-f)*a+g]??Y;for(let d=i;d<=i+f-1;d++)l(d)}return{...e,cells:c}}o(si,"shiftRowsRegion");function Ta(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(Ta,"cellsEqual");var hn="\x1B]8;";function Ma(e){return e.endsWith("\x07")?e.slice(0,-1):e}o(Ma,"stripOsc8Terminator");function Ia(e){if(!e.startsWith(hn))return;let t=e.slice(hn.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),i=Ma(r);return i.length>0?i:void 0}o(Ia,"parseOsc8Url");function va(e){if(e.value==="")return{char:"",width:K.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(hn)){let i=Ia(r.code);i!==void 0&&(n=i)}else t+=r.code;return{char:e.value,width:e.fullWidth?K.Wide:K.Single,style:t,hyperlink:n}}o(va,"styledCharToCell");function ai(e){let t=e.getGrid(),n=e.width,r=e.height,i=oi(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let u=Math.min(c.length,n);for(let l=0;l<u;l++){let f=c[l];if(!f)continue;let d=va(f);d.char===Y.char&&d.width===Y.width&&d.style===Y.style&&d.hyperlink===Y.hyperlink||i.setCellAt(l,a,d)}}return i.build()}o(ai,"outputToScreen");var Na=o((e,t,n)=>{if(e.yogaNode){if(t){let g=Et(e,{skipStaticElements:!0}),h=g===""?0:g.split(`
25
+ `).length,m="";return e.staticNode&&(m=Et(e.staticNode,{skipStaticElements:!1})),{output:g,outputHeight:h,staticOutput:m?`${m}
26
+ `:"",frame:void 0}}let r=new ve({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});ei(),dn(e,r,{skipStaticElements:!0});let i;e.staticNode?.yogaNode&&(i=new ve({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),dn(e.staticNode,i,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=ai(r),u=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),f=r.cursorPosition,d={screen:c,viewport:{width:u,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:ti(),scrollRepaint:ni(),...f?{inputCursor:{x:f.x,y:f.y}}:{}};return{output:s,outputHeight:a,staticOutput:i?`${i.get().output}
27
+ `:"",frame:d}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),mn=Na;function j(...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(j,"csi");function ci(e=1){return e===0?"":j(e,"A")}o(ci,"cursorUp");function ka(e=1){return e===0?"":j(e,"B")}o(ka,"cursorDown");function Oa(e=1){return e===0?"":j(e,"C")}o(Oa,"cursorForward");function Aa(e=1){return e===0?"":j(e,"D")}o(Aa,"cursorBack");function ui(e){return j(e,"G")}o(ui,"cursorTo");var _a=j("G"),li=j("H");function fi(e,t){let n="";return e<0?n+=Aa(-e):e>0&&(n+=Oa(e)),t<0?n+=ci(-t):t>0&&(n+=ka(t)),n}o(fi,"cursorMove");var gn=j(2,"K");function di(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=gn,n<e-1&&(t+=ci(1));return t+=_a,t}o(di,"eraseLines");var pi=j("r"),hi="\x1B7",mi="\x1B8";function gi(e,t){return j(e,t,"r")}o(gi,"setScrollRegion");function wi(e=1){return j(e,"S")}o(wi,"scrollUp");function yi(e=1){return j(e,"T")}o(yi,"scrollDown");var $e=j(0,"m");function xi(e){return`\x1B]${e.join(";")}\x07`}o(xi,"osc");function Pa(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(Pa,"osc8Id");function Ue(e,t){if(!e)return Ne;let n={id:Pa(e),...t??{}},r=Object.entries(n).map(([i,s])=>`${i}=${s}`).join(":");return xi(["8",r,e])}o(Ue,"link");var Ne=xi(["8","",""]);function wn(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 u=de(t,c,s);!u||u.width===K.SpacerTail||(u.hyperlink!==i&&(i!==void 0&&(a+=Ne),u.hyperlink!==void 0&&(a+=Ue(u.hyperlink)),i=u.hyperlink),u.style!==r&&(r!==""&&(a+=$e),u.style!==""&&(a+=u.style),r=u.style),a+=u.char)}i!==void 0&&(a+=Ne,i=void 0),r!==""&&(a+=$e,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
28
+ `)}]}o(wn,"renderFullFrame");var Fa=Object.freeze([]),La=Object.freeze([]);function pe(e,t){if(e===t)return{patches:Fa,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:$e}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}o(pe,"transitionStyle");function Ye(e,t){let n=pe(e,t),r="";for(let i of n.patches)i.type==="stdout"&&(r+=i.content);return{str:r,current:n.current}}o(Ye,"transitionStyleStr");function Z(e,t){if(e===t)return{patches:La,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:Ne}),t!==void 0&&n.push({type:"stdout",content:Ue(t)}),{patches:n,current:t}}o(Z,"transitionHyperlink");function Si(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(Si,"needsWidthCompensation");var he=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}},ee={type:"carriageReturn"},ze={type:"stdout",content:`
29
+ `};function Ke(e,t,n){let r=t.width===K.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let f=t.char.length>2?i:i+1;if(c+2>=f)return[[],{dx:0,dy:0}]}let u=[];n.length>0&&u.push({type:"stdout",content:n});let l=r===2&&Si(t.char);return l&&c+1<i&&(u.push({type:"cursorTo",col:c+2}),u.push({type:"stdout",content:" "}),u.push({type:"cursorTo",col:c+1})),u.push({type:"stdout",content:t.char}),l&&u.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[u,{dx:r-c,dy:1}]:[u,{dx:r,dy:0}]}),s}o(Ke,"writeCellWithStyleStr");function me(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ee,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ee,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(me,"moveCursorTo");function Ge(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let d=c-e.cursor.y;e.txn(g=>{let h=new Array(1+d);h[0]=ee;for(let m=0;m<d;m++)h[1+m]=ze;return[h,{dx:-g.x,dy:d}]})}for(let d=0;d<t.screen.width;d++){let g=de(t.screen,d,c);if(!g||g.width===K.SpacerTail||g.char===" "&&g.style===""&&g.hyperlink===void 0)continue;me(e,d,c);let h=Z(a,g.hyperlink);for(let y of h.patches)e.txn(()=>[[y],{dx:0,dy:0}]);a=h.current;let m=Ye(s,g.style);Ke(e,g,m.str)&&(s=m.current)}let u=pe(s,"");for(let d of u.patches)e.txn(()=>[[d],{dx:0,dy:0}]);s=u.current;let l=Z(a,void 0);for(let d of l.patches)e.txn(()=>[[d],{dx:0,dy:0}]);a=l.current;let f=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(d=>f?[[ee],{dx:-d.x,dy:0}]:[[ee,ze],{dx:-d.x,dy:1}])}if(s!==""||a!==void 0){let c=pe(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let u=Z(a,void 0);for(let l of u.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}o(Ge,"renderFrameSlice");function yn(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++)Da(e,t,a)}o(yn,"repaintFrameRows");function Da(e,t,n){let r="",i;me(e,0,n),e.txn(()=>[[{type:"stdout",content:Ne+$e},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=de(t.screen,s,n);if(!a||a.width===K.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;me(e,s,n);let c=Z(i,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);i=c.current;let u=Ye(r,a.style);Ke(e,a,u.str)&&(r=u.current)}for(let s of pe(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of Z(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(Da,"repaintFrameRow");function xn(e,t){let n="";for(let r=0;r<e.width;r++){let i=de(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(xn,"readLine");function ke(e,t,n=!1){let r=new he({x:0,y:0},e.viewport.width);Ge(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(ke,"fullResetSequence_CAUSES_FLICKER");function bt(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(bt,"computeViewportState");function Ci(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=bt(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 Rt(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(Ci,"shouldFullReset");function Ei(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o(Ei,"shouldSkipDiff");var Tt=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return wn(n);let i=r.inlineBottomAnchored??!1,s=Ri(t,i),a=Ri(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ke(a,"clear",i);let c=Ci(s,a,xn);if(c.reset)return ke(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return Wa(s,a,a.scrollRepaint);let u=a.scrollHint;if(u&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&u.delta!==0&&u.top>=0&&u.bottom<s.screen.height&&u.bottom<a.screen.height&&Math.abs(u.delta)<=u.bottom-u.top){let l={type:"scrollRegion",top:u.top,bottom:u.bottom,delta:u.delta},f={...s,screen:si(s.screen,u.top,u.bottom,u.delta)};return[l,...bi(f,a,i)]}return bi(s,a,i)}reset(){}};function Sn(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Sn,"emitPatches");function Cn(e,t,n){if(t!==""){let r=pe(t,"");Sn(e,r.patches)}if(n!==void 0){let r=Z(n,void 0);Sn(e,r.patches)}return{style:"",hyperlink:void 0}}o(Cn,"resetStyleAndHyperlink");function Wa(e,t,n){let r=bt(e,t),i=new he(e.cursor,t.viewport.width);r.shrinking&&Ti(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&&yn(i,t,c.top,c.bottom);let u=Mi(i,e,t,{...r,skipRows:c});return u.needsFullReset?ke(t,"offscreen"):(Cn(i,u.currentStyle,u.currentHyperlink),r.growing&&Ge(i,t,e.screen.height,t.screen.height),Ii(i,t),i.diff)}o(Wa,"renderScrollRepaint");function Ti(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(Ti,"applyShrink");function Mi(e,t,n,r){let i="",s,a=!1;for(let c of Rt(t.screen,n.screen)){let{x:u,y:l,prev:f,next:d}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let g=!!(d&&d.char===" "&&d.style===""&&d.hyperlink===void 0);if(!Ei(f,d,g)){if(l<r.viewportY){a=!0;break}if(me(e,u,l),d){let h=Z(s,d.hyperlink);Sn(e,h.patches),s=h.current;let m=Ye(i,d.style);Ke(e,d,m.str)&&(i=m.current)}else if(f){let h=Cn(e,i,s);i=h.style,s=h.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(Mi,"diffPass");function Ri(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(Ri,"clampRestingCursor");function Ii(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]=ee;for(let a=0;a<r;a++)s[1+a]=ze;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ee,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):me(e,t.cursor.x,t.cursor.y)}o(Ii,"restoreCursor");function bi(e,t,n=!1){let r=bt(e,t),i=new he(e.cursor,t.viewport.width);r.shrinking&&Ti(i,e,t);let s=Mi(i,e,t,r);return s.needsFullReset?ke(t,"offscreen",n):(Cn(i,s.currentStyle,s.currentHyperlink),r.growing&&Ge(i,t,e.screen.height,t.screen.height,n),Ii(i,t),i.diff)}o(bi,"renderIncremental");var Ba="\x1B[?25l",ja="\x1B[?25h",Ha=`\x1B[2J${li}`,$a="\x1B[?2026h",Ua="\x1B[?2026l";function za(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return Ba;case"cursorShow":return ja;case"cursorMove":return fi(e.x,e.y);case"cursorTo":return ui(e.col);case"eraseLine":return gn;case"clear":return di(e.count);case"clearTerminal":return Ha;case"hyperlink":return Ue(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?wi(r):yi(r);return hi+gi(t,n)+i+pi+mi}}}o(za,"patchToBytes");function Mt(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=za(s);if(r.length!==0){if(n&&i){e.write($a+r+Ua);return}e.write(r)}}o(Mt,"applyDiff");function vi(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return Mt(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(vi,"applyCellFrame");function Ve(e,t){return{screen:ii(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(Ve,"emptyFrame");import Ya from"is-in-ci";var te="\x1B[?2026h",G="\x1B[?2026l";function ne(e){return"isTTY"in e&&e.isTTY===!0&&!Ya}o(ne,"shouldSynchronize");var Ka=new WeakMap,Ni=Ka;import{EventEmitter as dc}from"node:events";import pc from"node:process";import ge,{useState as bn,useRef as Oe,useCallback as _,useMemo as Ae,useEffect as Gi}from"react";import hc from"cli-cursor";var Ga=o(e=>e>=48&&e<=63,"isCsiParameterByte"),Va=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Oi=o(e=>e>=64&&e<=126,"isCsiFinalByte");function Xa(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(!(Ga(s)||Va(s))&&!(s===91&&i===r))return Oi(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(Xa,"parseCsiSequence");function qa(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Oi(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(qa,"parseSs3Sequence");function ki(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return Xa(e,t,n);if(r==="O")return qa(e,t,n)}o(ki,"parseControlSequence");function Ja(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(Ja,"parseEscapedCodePoint");function Qa(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=ki(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 u=ki(e,i,2);if(u==="pending")return r(i);if(u){t.push(u.sequence),n=u.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=Ja(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(Qa,"parseKeypresses");function It(){let e="";return{push(t){let n=Qa(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(It,"createInputParser");import{createContext as Za}from"react";var Ai=Za({exit(){}});Ai.displayName="InternalAppContext";var _i=Ai;import{EventEmitter as ec}from"node:events";import{createContext as tc}from"react";var nc={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Pi=tc({stdin:nc,internal_eventEmitter:new ec,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Pi.displayName="InternalStdinContext";var Fi=Pi;import{createContext as rc}from"react";var ic={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Li=rc({stdout:ic,write(){}});Li.displayName="InternalStdoutContext";var Di=Li;import{createContext as oc}from"react";var sc={isTTY:!1,write(){return!0},on(){},off(){}},Wi=oc({stderr:sc,write(){}});Wi.displayName="InternalStderrContext";var Bi=Wi;import{createContext as ac}from"react";var ji=ac({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});ji.displayName="InternalFocusContext";var Hi=ji;import{createContext as cc}from"react";var $i=cc({setCursorPosition(){}});$i.displayName="InternalCursorContext";var Ui=$i;import lc,{PureComponent as fc}from"react";import*as vt from"node:fs";import{cwd as Ki}from"node:process";import F from"react";import zi from"stack-utils";import uc from"code-excerpt";var En=o(e=>e?.replace(`file://${Ki()}/`,""),"cleanupPath"),Yi=new zi({cwd:Ki(),internals:zi.nodeInternals()});function Rn({error:e}){let t=e.stack?e.stack.split(`
30
+ `).slice(1):void 0,n=t?Yi.parseLine(t[0]):void 0,r=En(n?.file),i,s=0;if(r&&n?.line&&vt.existsSync(r)){let a=vt.readFileSync(r,"utf8");if(i=uc(a,n.line),i)for(let{line:c}of i)s=Math.max(s,String(c).length)}return F.createElement($,{flexDirection:"column",padding:1},F.createElement($,null,F.createElement(W,{backgroundColor:"red",color:"white"}," ","ERROR"," "),F.createElement(W,null," ",e.message)),n&&r&&F.createElement($,{marginTop:1},F.createElement(W,{dimColor:!0},r,":",n.line,":",n.column)),n&&i&&F.createElement($,{marginTop:1,flexDirection:"column"},i.map(({line:a,value:c})=>F.createElement($,{key:a},F.createElement($,{width:s+1},F.createElement(W,{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," "),":")),F.createElement(W,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&F.createElement($,{marginTop:1,flexDirection:"column"},e.stack.split(`
31
+ `).slice(1).map(a=>{let c=Yi.parseLine(a);return c?F.createElement($,{key:a},F.createElement(W,{dimColor:!0},"- "),F.createElement(W,{dimColor:!0,bold:!0},c.function),F.createElement(W,{dimColor:!0,color:"gray","aria-label":`at ${En(c.file)??""} line ${c.line} column ${c.column}`}," ","(",En(c.file)??"",":",c.line,":",c.column,")")):F.createElement($,{key:a},F.createElement(W,{dimColor:!0},"- "),F.createElement(W,{dimColor:!0,bold:!0},a,"\\t"," "))})))}o(Rn,"ErrorOverview");var Xe=class extends fc{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?lc.createElement(Rn,{error:this.state.error}):this.props.children}};var mc=" ",gc="\x1B[Z",wc="\x1B";function Vi({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:i,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:u}){let[l,f]=bn(!0),[d,g]=bn(void 0),[,h]=bn([]),m=Oe(0),y=Oe(0),w=Oe(new dc);w.current.setMaxListeners(1/0);let x=Oe(void 0),p=Oe(It()),S=Oe(void 0),M=_(()=>{S.current&&(clearImmediate(S.current),S.current=void 0)},[]),R=t.isTTY,A=_(()=>{x.current&&(t.removeListener("readable",x.current),x.current=void 0)},[t]),D=_(()=>{t.setRawMode(!1),A(),t.unref(),y.current=0,p.current.reset(),M()},[t,A,M]),N=_(E=>{R&&y.current>0&&D(),c(E)},[R,D,c]),O=_(E=>{if(E===""&&a){N();return}E===wc&&g(b=>b&&void 0)},[a,N]),Qe=_(E=>{O(E),w.current.emit("input",E)},[O]),jn=_(()=>{M(),S.current=setImmediate(()=>{S.current=void 0;let E=p.current.flushPendingEscape();E&&Qe(E)})},[M,Qe]),_t=_(()=>{M();let E;for(;(E=t.read())!==null;){let b=p.current.push(E);for(let I of b)Qe(I)}p.current.hasPendingEscape()&&jn()},[t,Qe,M,jn]),Hn=_(E=>{if(!R)throw t===pc.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
822
32
  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.
823
- Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=Cn,t.addListener("readable",Cn)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,Cn,H]),ai=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E+1;L<x.length;L++){let te=x[L];if(te?.isActive)return te.id}},[]),ci=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E-1;L>=0;L--){let te=x[L];if(te?.isActive)return te.id}},[]),_t=M(()=>{m(x=>(p(S=>{let E=x.find(te=>te.isActive)?.id;return ai(x,S)??E}),x))},[ai]),At=M(()=>{m(x=>(p(S=>{let E=x.findLast(te=>te.isActive)?.id;return ci(x,S)??E}),x))},[ci]);uc(()=>{let x=i(E=>{!l||g.current===0||(E===qy&&_t(),E===Vy&&At())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[l,_t,At]);let di=M(()=>{u(!0)},[]),li=M(()=>{u(!1)},[]),ui=M(x=>{m(S=>(S.some(L=>L?.id===x)&&p(x),S))},[]),fi=M((x,{autoFocus:S})=>{m(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&p(E=>E??x)},[]),pi=M(x=>{p(S=>S===x?void 0:S),m(S=>{let E=S.filter(L=>L.id!==x);return g.current=E.length,E})},[]),mi=M(x=>{m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),hi=M(x=>{p(S=>S===x?void 0:S),m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);uc(()=>()=>{zy.show(n),_&&v.current>0&&H()},[n,_,H]);let Xc=Ve(()=>({exit:A}),[A]),Wc=Ve(()=>({stdin:t,setRawMode:si,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,si,_,a]),Hc=Ve(()=>({stdout:n,write:o}),[n,o]),zc=Ve(()=>({stderr:r,write:s}),[r,s]),qc=Ve(()=>({setCursorPosition:d}),[d]),Vc=Ve(()=>({activeId:f,add:fi,remove:pi,activate:mi,deactivate:hi,enableFocus:di,disableFocus:li,focusNext:_t,focusPrevious:At,focus:ui}),[f,fi,pi,mi,hi,di,li,_t,At,ui]);return Ae.createElement(Ya.Provider,{value:Xc},Ae.createElement(Za.Provider,{value:Wc},Ae.createElement(tc.Provider,{value:Hc},Ae.createElement(rc.Provider,{value:zc},Ae.createElement(oc.Provider,{value:Vc},Ae.createElement(ac.Provider,{value:qc},Ae.createElement(It,{onError:A},e)))))))}i(fc,"App");fc.displayName="InternalApp";var pc=fc;var Jy={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function mc(e){let t=0;for(let n of e)t|=Jy[n];return t}i(mc,"resolveFlags");var ue={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Hr=i((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),zr=i((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return o=>({x:o.x,y:Math.min(Math.max(o.y-n,0),r)})},"toVisibleCursor"),bn=i(()=>{},"noop"),sw=27,aw=91,cw=63,dw=117,lw=48,uw=57,fw=i(e=>e>=lw&&e<=uw,"isDigitByte"),gc=i((e,t)=>{if(e[t]!==sw||e[t+1]!==aw||e[t+2]!==cw)return;let n=t+3,r=n;for(;n<e.length&&fw(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===dw)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),pw=i(e=>{for(let t=0;t<e.length;t++)if(gc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),mw=i(e=>{let t=[],n=0;for(;n<e.length;){let r=gc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),qr=i(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),hw=class{static{i(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Qy(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=sn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,o=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=Yy(this.onRender,o,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new gn({isTTY:!!t.stdout.isTTY}),this.prevFrame=Et(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?nw:tw;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Zy(this.unmount,{alwaysLast:!1}),rn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=i(()=>this.options.stdout.columns?this.options.stdout.columns:ow()?.columns??80,"getTerminalWidth");resized=i(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=i(()=>{},"resolveExitPromise");rejectExitPromise=i(()=>{},"rejectExitPromise");unsubscribeExit=i(()=>{},"unsubscribeExit");handleAppExit=i(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(qr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=i(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let o=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:o,y:s}},"setCursorPosition");resetOutputTracking=i(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=i((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||o!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||o!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,o=n.write,s=i((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=i((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=o)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=i(()=>{if(this.prevFrame.screen.height===0)return;let t=Et(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>yn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=i(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=i(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,rw.DIRECTION_LTR)},"calculateLayout");onRender=i(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:o,staticOutput:s,frame:a}=Lr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
824
- `;if(this.options.debug){c&&(this.fullStaticOutput+=s),this.writeStdout(this.fullStaticOutput+r);return}if(fe){c&&this.writeStdout(s),this.lastOutput=r,this.lastOutputToRender=r+`
825
- `,this.lastOutputHeight=o;return}if(this.isScreenReaderEnabled){let w=le(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=iw(r,y,{trim:!1,hard:!0});if(c)this.writeStdout(h);else{let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+h)}this.lastOutput=r,this.lastOutputToRender=h,this.lastOutputHeight=h===""?0:h.split(`
826
- `).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,u=i(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),f=l?{write:u}:null;u(this.computeReturnToRestSeq());let p=this.altScreenActive,g=this.options.stdout.isTTY&&o>=this.options.stdout.rows&&p?r:r+`
827
- `;if(this.lastOutputHeight>=this.options.stdout.rows&&p){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=le(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o;return}let w=le(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=o,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!l&&le(this.options.stdout);try{if(c?(v&&u(de),u(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&o<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&u(de),u(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=zr(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Hr(h.x-y.x,h.y-y.y);u(b),this.displayCursor=h}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o},"onRender");applyCellFrame=i((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},o=le(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:o,synchronized:n?!1:o,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>za(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=i(()=>{this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=i(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=i(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],o=i(c=>{c&&r.push(c)},"emit"),s={write:o};o(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();o(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:l,frame:u}=Lr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(u,s),u?.inputCursor){let f=zr(u,!this.altScreenActive),p=f(u.cursor),m=f(u.inputCursor),g=Hr(m.x-p.x,m.y-p.y);o(g),this.displayCursor=m}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=le(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=hc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},hc.createElement(pc,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,bn):(se.updateContainerSync(n,this.container,null,bn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=zr(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Hr(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(i(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
828
- `)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,bn):(se.updateContainerSync(null,this.container,null,bn),se.flushSyncWork()),qa.delete(this.options.stdout);let{exitResult:s}=this,a=i(()=>{qr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!qr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=ew((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let o=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||o==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],o=i(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=mw(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=i(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let l of d)r.push(l);pw(r)&&(o(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(o,200);this.cancelKittyDetection=o,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${mc(t)}u`),this.kittyProtocolEnabled=!0}},yc=hw;var Ct=class{static{i(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new yc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=i(t=>{this.engineInstance.render(t)},"render");unmount=i(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=i(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=i(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=i((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=i((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=i(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=i(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=i(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function vc(){if(ve===-1)return null;if(ve!==null)return ve;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return ve=-1,null;let t=e==="1"||e==="true"?bw(vw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=yw(t,"a"),wc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
829
- `),ve}catch{return ve=-1,null}}i(vc,"resolveTraceFd");function kw(e){let t=vc();if(t!==null)try{wc(t,e)}catch{}}i(kw,"traceLine");var Vr=new WeakMap,xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Sw={isTTY:!1,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Ew={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Iw(e={}){return e instanceof gw?{stdout:e}:e}i(Iw,"getOptions");function Cw(e,t,n){let r=Vr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Vr.set(e,r)),r}i(Cw,"getInstance");function Gr(e,t){let n={stdout:xw,stdin:Ew,stderr:Sw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...Iw(t)};if(vc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((p,...m)=>(c+=1,d+=typeof p=="string"?Buffer.byteLength(p,"utf8"):p?.length??0,a(p,...m)));let l=0,u=0,f=n.onRender;n.onRender=p=>{let m=ww.now(),g=l===0?0:m-l,v=s,w=v.columns??0,y=v.rows??0;return kw(`frame=${u} renderTime=${p.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
830
- `),c=0,d=0,l=m,u+=1,f?.(p)}}let o=Cw(n.stdout,()=>new Ct(n),n.concurrent??!1);return o.render(e),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:i(()=>{Vr.delete(n.stdout)},"cleanup"),clear:o.clear}}i(Gr,"render");var bc=q,kc=K;import{Buffer as Rw}from"node:buffer";var _w=/^(?:\x1b)([a-zA-Z0-9])$/,Aw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Sc={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},Ec=[...Object.values(Sc),"backspace"],Pw=i(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),Mw=i(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),Ic=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,Ow=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,Nw={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},Lw={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},xc={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24"},Cc=i(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),Jr=i(e=>Cc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function Tc(e){return e===3?"release":e===2?"repeat":"press"}i(Tc,"resolveEventType");function Rc(e){return{ctrl:!!(e&ue.ctrl),shift:!!(e&ue.shift),meta:!!(e&ue.meta),option:!!(e&ue.alt),super:!!(e&ue.super),hyper:!!(e&ue.hyper),capsLock:!!(e&ue.capsLock),numLock:!!(e&ue.numLock)}}i(Rc,"parseKittyModifiers");function Dw(e){let t=Ic.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,o=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!Cc(n))return null;let a;s&&(a=s.split(":").map(l=>Jr(Number.parseInt(l,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):xc[n]?(c=xc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=Jr(n).toLowerCase(),d=!0),d&&!a&&(a=Jr(n)),{name:c,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}i(Dw,"parseKittyKeypress");function $w(e){let t=Ow.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),o=Number.parseInt(t[3],10),s=t[4],a=s==="~"?Lw[n]:Nw[s];return a?{name:a,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}i($w,"parseKittySpecialKey");var Yr="\x1B[200~",Fw="\x1B[201~";function jw(e){if(!e.startsWith(Yr))return null;let t=e.indexOf(Fw,Yr.length);return t===-1?null:e.slice(Yr.length,t)}i(jw,"extractBracketedPaste");function Qr(e=""){let t=e,n;if(Rw.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=""),typeof t=="string"){let a=jw(t);if(a!==null)return{name:"paste",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isPaste:!0,isPrintable:!1,text:a}}let r=Dw(t);if(r)return r;let o=$w(t);if(o)return o;if(Ic.test(t))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isKittyProtocol:!0,isPrintable:!1};let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(s.sequence=s.sequence||t||s.name,t==="\r"||t==="\x1B\r")s.raw=void 0,s.name="return",s.option=t.length===2;else if(t===`
831
- `)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=_w.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=Aw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=Sc[c]??"",s.shift=Pw(c)||s.shift,s.ctrl=Mw(c)||s.ctrl}return s}i(Qr,"parseKeypress");var Uw=50;function Zr(e){return{columns:e?.columns??80,rows:e?.rows??24}}i(Zr,"resolveTerminalSize");var xn=Kw(null),Xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")};var Mc={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Ww(e){for(let t of e)if(t.rawMode)return!0;return!1}i(Ww,"hasRawModeSubscribers");function Hw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,o,s=!1,a=!1,c=i(f=>{for(let p of r)p.listener(f)},"handleData"),d=i(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=i(()=>{let f=o;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),o=void 0},"detachInput"),u=i(()=>{if(o&&o!==e&&l(),!e||r.size===0){l();return}if(o!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),o=e),!(n&&Ww(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,p={}){let m={listener:f,rawMode:p.rawMode!==!1};return r.add(m),u(),()=>{r.delete(m),u()}},dispose(){r.clear(),l()}}}i(Hw,"createTerminalInputController");var zw=i(({children:e,runtime:t})=>{let[n,r]=Bw(()=>t.terminalSize);Ge(()=>{if(r(Zr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=i(()=>{r(Zr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let o=Pc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=_c(()=>Hw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=_c(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:o,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,o]);return Ac(xn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function qw(e){let t=e?.stdout??Xw,n=e?.stdin??Mc,r=i(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),o;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:i(()=>{o?.()},"exit"),terminalSize:Zr(t),isTTY:t?.isTTY===!0,writeRaw:i(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:i(()=>()=>{},"subscribeInput"),attachExit(s){o=s}}}i(qw,"createRuntimeValue");function Sn(e,t){let n=qw(t),r=Gr(Ac(zw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}i(Sn,"render");var be=bc,V=kc;function Vw(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&Ec.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}i(Vw,"createCompatKeypress");function En(e,t={}){let{isActive:n=!0}=t,r=kn(e),o=kn(null),s=kn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){o.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return o.current=wn(),()=>{o.current?.reset(),o.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Pc(c=>{let{input:d,key:l}=Vw(Qr(c));r.current(d,l)},[]);ni(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=o.current,l=typeof c=="string"?c:c.toString("utf8"),u=d?.push(l)??[l];for(let f of u)a(f);l.length>0&&(s.current=setTimeout(()=>{let f=o.current?.flushPendingEscape();f&&a(f)},Uw))},{isActive:n,rawMode:!0})}i(En,"useInput");function ti(){let e=ei(xn),t=e?.stdin??Mc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}i(ti,"useStdin");function In(){return{exit:ei(xn)?.exit??(()=>{})}}i(In,"useApp");function ni(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,o=ei(xn),{stdin:s,setRawMode:a,isRawModeSupported:c}=ti(),d=kn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(o)return o.subscribeInput(p=>{d.current(p)},{rawMode:r});let l=s,u=l.isRaw;r&&c&&u===!1&&a(!0);let f=i(p=>{d.current(p)},"handleData");return l.on?.("data",f),()=>{if(l.off?.("data",f),r&&c&&u===!1)try{a(!1)}catch{}}},[o,s,n,r,c,a])}i(ni,"useTerminalInput");import{jsx as eH}from"react/jsx-runtime";import{useInsertionEffect as nH,useMemo as rH}from"react";import{jsx as BH,jsxs as UH}from"react/jsx-runtime";import{jsx as yH}from"react/jsx-runtime";import vH,{useEffect as bH,useImperativeHandle as kH,useMemo as xH,useRef as SH,useCallback as EH,useState as IH}from"react";var ri=class{static{i(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Gw=1e3;var PH=new ri(Gw);var tv=40;function nv(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let o=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>o.includes(s))})}i(nv,"filterSessionPickerItems");function rv(e,t,n){let r=Math.max(1,n),o=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(o/r)*r;return{items:e.slice(s,s+r),selectedIndex:o,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}i(rv,"buildSessionPickerPage");function iv(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${o} ${s}:${a}`}i(iv,"formatTimestamp");function ov({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:o=8}){let{exit:s}=In(),[a,c]=ii(""),[d,l]=ii(0),[u,f]=ii(!1),p=ev(!1),m=Zw(()=>nv(e,a),[e,a]),g=rv(m,d,o),v=m[g.selectedIndex];return En((w,y)=>{if(!p.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=m[g.selectedIndex];h&&(p.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,tv));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)l(h=>Math.max(0,h-1));else if(y.downArrow)l(h=>Math.min(Math.max(0,m.length-1),h+1));else if(y.pageUp)l(h=>Math.max(0,h-o));else if(y.pageDown)l(h=>Math.min(Math.max(0,m.length-1),h+o));else if(y.home)l(0);else if(y.end)l(Math.max(0,m.length-1));else if(y.tab){let h=m[g.selectedIndex];h&&(c(h.title),l(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),l(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),l(0))}}),Je(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Tt(V,{bold:!0,color:"cyan",children:"Resume a session"}),Je(V,{children:["Search: ",Tt(V,{color:"yellow",children:a||"type to filter"})]}),Tt(V,{dimColor:!0,children:u?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Je(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Tt(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Je(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",iv(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Je(V,{dimColor:!0,children:[m.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Je(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}i(ov,"SessionPicker");async function Dc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,o=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=Sn(Tt(ov,{sessions:e,pageSize:a,onSelect:i(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:i(d=>{o=!0,s=d},"onSelectionError"),onCancel:i(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(o)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}i(Dc,"runSessionPicker");var $c=65536,Fc=48;function av(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(sv.homedir(),".kodax");return Qe.join(t,"sessions")}i(av,"defaultSessionsDir");function jc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(jc,"isSessionFile");async function cv(e){let t=[],n;try{n=await Ye.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let o=Qe.join(e,r.name);if(r.isFile()&&jc(r.name)&&!r.name.startsWith("archived-")){t.push(o);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Ye.readdir(o,{withFileTypes:!0}))s.isFile()&&jc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(o,s.name))}catch{}}return t}i(cv,"collectActiveSessionFiles");function Kc(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}i(Kc,"normalizeComparableRoot");function dv(e,t){let n=Kc(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>Kc(s)===n)}i(dv,"matchesProjectRoot");async function lv(e){let t;try{t=await Ye.open(e,"r");let n=Buffer.allocUnsafe($c),{bytesRead:r}=await t.read(n,0,$c,0);if(r===0)return;let o=n.toString("utf8",0,r),s=o.indexOf(`
832
- `);if(s>=0)return o.slice(0,s).trim();let a=await Ye.readFile(e,"utf8"),c=a.indexOf(`
833
- `);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}i(lv,"readFirstLine");async function uv(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Ye.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
834
- `).length-1-r)}i(uv,"readMessageCount");function fv(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}i(fv,"runtimeSummary");async function pv(e,t){try{let n=await lv(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let o=r;if(o._type!=="meta"||o.scope==="managed-task-worker"||!dv(o,t))return;let s=await uv(e,o);if(s<=0)return;let a=typeof o.createdAt=="string"?o.createdAt:void 0,c=fv(o);return{id:Qe.basename(e,".jsonl"),title:typeof o.title=="string"?o.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}i(pv,"readResumeCandidate");async function Bc(e){try{let t=e.sessionsDir??av();await Xs(t),await Ye.mkdir(t,{recursive:!0});let n=await cv(t),r=[],o=new Set;for(let s=0;s<n.length;s+=Fc){let a=await Promise.all(n.slice(s,s+Fc).map(c=>pv(c,e.projectRoot)));for(let c of a)c&&!o.has(c.id)&&(o.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}i(Bc,"listCliResumeSessions");async function Uc(e,t={}){return Dc(e,t)}i(Uc,"runCliResumePicker");async function mv(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
33
+ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),E){y.current===0&&(t.ref(),t.setRawMode(!0),x.current=_t,t.addListener("readable",_t)),y.current++;return}y.current!==0&&--y.current===0&&D()},[R,t,_t,D]),$n=_((E,b)=>{let I=E.findIndex(L=>L.id===b);for(let L=I+1;L<E.length;L++){let V=E[L];if(V?.isActive)return V.id}},[]),Un=_((E,b)=>{let I=E.findIndex(L=>L.id===b);for(let L=I-1;L>=0;L--){let V=E[L];if(V?.isActive)return V.id}},[]),Ze=_(()=>{h(E=>(g(b=>{let I=E.find(V=>V.isActive)?.id;return $n(E,b)??I}),E))},[$n]),et=_(()=>{h(E=>(g(b=>{let I=E.findLast(V=>V.isActive)?.id;return Un(E,b)??I}),E))},[Un]);Gi(()=>{let E=o(I=>{!l||m.current===0||(I===mc&&Ze(),I===gc&&et())},"handleTabNavigation");w.current.on("input",E);let b=w.current;return()=>{b.off("input",E)}},[l,Ze,et]);let zn=_(()=>{f(!0)},[]),Yn=_(()=>{f(!1)},[]),Kn=_(E=>{h(b=>(b.some(L=>L?.id===E)&&g(E),b))},[]),Gn=_((E,{autoFocus:b})=>{h(I=>(m.current=I.length+1,[...I,{id:E,isActive:!0}])),b&&g(I=>I??E)},[]),Vn=_(E=>{g(b=>b===E?void 0:b),h(b=>{let I=b.filter(L=>L.id!==E);return m.current=I.length,I})},[]),Xn=_(E=>{h(b=>b.map(I=>I.id!==E?I:{id:E,isActive:!0}))},[]),qn=_(E=>{g(b=>b===E?void 0:b),h(b=>b.map(I=>I.id!==E?I:{id:E,isActive:!1}))},[]);Gi(()=>()=>{hc.show(n),R&&y.current>0&&D()},[n,R,D]);let Io=Ae(()=>({exit:N}),[N]),vo=Ae(()=>({stdin:t,setRawMode:Hn,isRawModeSupported:R,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,Hn,R,a]),No=Ae(()=>({stdout:n,write:i}),[n,i]),ko=Ae(()=>({stderr:r,write:s}),[r,s]),Oo=Ae(()=>({setCursorPosition:u}),[u]),Ao=Ae(()=>({activeId:d,add:Gn,remove:Vn,activate:Xn,deactivate:qn,enableFocus:zn,disableFocus:Yn,focusNext:Ze,focusPrevious:et,focus:Kn}),[d,Gn,Vn,Xn,qn,zn,Yn,Ze,et,Kn]);return ge.createElement(_i.Provider,{value:Io},ge.createElement(Fi.Provider,{value:vo},ge.createElement(Di.Provider,{value:No},ge.createElement(Bi.Provider,{value:ko},ge.createElement(Hi.Provider,{value:Ao},ge.createElement(Ui.Provider,{value:Oo},ge.createElement(Xe,{onError:N},e)))))))}o(Vi,"App");Vi.displayName="InternalApp";var Xi=Vi;var yc={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function qi(e){let t=0;for(let n of e)t|=yc[n];return t}o(qi,"resolveFlags");var re={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Tn=o((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Mn=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"),Nt=o(()=>{},"noop"),vc=27,Nc=91,kc=63,Oc=117,Ac=48,_c=57,Pc=o(e=>e>=Ac&&e<=_c,"isDigitByte"),Qi=o((e,t)=>{if(e[t]!==vc||e[t+1]!==Nc||e[t+2]!==kc)return;let n=t+3,r=n;for(;n<e.length&&Pc(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===Oc)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),Fc=o(e=>{for(let t=0;t<e.length;t++)if(Qi(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),Lc=o(e=>{let t=[],n=0;for(;n<e.length;){let r=Qi(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),In=o(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),Dc=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){Sc(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=mt("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??we.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=xc(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 Tt({isTTY:!!t.stdout.isTTY}),this.prevFrame=Ve(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?bc:Rc;this.container=Q.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Cc(this.unmount,{alwaysLast:!1}),pt()&&Q.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),ie||(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:Ic()?.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=Ve(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(In(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||ie)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,i=n.write,s=o((...c)=>{let u=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),u},"guardedStdoutWrite"),a=o((...c)=>{let u=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),u},"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=Ve(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>Mt(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,Tc.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}=mn(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!ie&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
34
+ `;if(this.options.debug){c&&(this.fullStaticOutput+=s),this.writeStdout(this.fullStaticOutput+r);return}if(ie){c&&this.writeStdout(s),this.lastOutput=r,this.lastOutputToRender=r+`
35
+ `,this.lastOutputHeight=i;return}if(this.isScreenReaderEnabled){let w=ne(this.options.stdout);if(w&&this.writeStdout(te),c){let S=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(S+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(G);return}let x=this.getTerminalWidth(),p=Mc(r,x,{trim:!1,hard:!0});if(c)this.writeStdout(p);else{let S=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(S+p)}this.lastOutput=r,this.lastOutputToRender=p,this.lastOutputHeight=p===""?0:p.split(`
36
+ `).length,w&&this.writeStdout(G);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,f=o(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),d=l?{write:f}:null;f(this.computeReturnToRestSeq());let g=this.altScreenActive,m=this.options.stdout.isTTY&&i>=this.options.stdout.rows&&g?r:r+`
37
+ `;if(this.lastOutputHeight>=this.options.stdout.rows&&g){if(we.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let p=ne(this.options.stdout);p&&this.writeStdout(te),this.applyCellFrame(a),p&&this.writeStdout(G),this.lastOutput=r,this.lastOutputToRender=m,this.lastOutputHeight=i;return}let w=ne(this.options.stdout);w&&this.writeStdout(te);let x=this.fullStaticOutput+m;if(this.altScreenActive){let p=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(p+x)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?x:m,this.lastOutputHeight=i,this.invalidateCellFrame(),w&&this.writeStdout(G);return}let y=!l&&ne(this.options.stdout);try{if(c?(y&&f(te),f(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,d),y&&f(G)):!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?(y&&f(te),f(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,d),y&&f(G)):this.applyCellFrame(a,d),a?.inputCursor){let w=Mn(a,!this.altScreenActive),x=w(a.cursor),p=w(a.inputCursor),S=Tn(p.x-x.x,p.y-x.y);f(S),this.displayCursor=p}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=m,this.lastOutputHeight=i},"onRender");applyCellFrame=o((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},i=ne(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:i,synchronized:n?!1:i,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>vi(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=o(()=>{this.cellLogUpdate.reset(),this.prevFrame=Ve(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:u,outputHeight:l,frame:f}=mn(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(f,s),f?.inputCursor){let d=Mn(f,!this.altScreenActive),g=d(f.cursor),h=d(f.inputCursor),m=Tn(h.x-g.x,h.y-g.y);i(m),this.displayCursor=h}this.lastOutput=u,this.lastOutputToRender=u,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=ne(this.options.stdout);this.writeStdout(r?te+n+G:n)}render(t){let n=Ji.createElement(Te.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},Ji.createElement(Xi,{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?Q.updateContainer(n,this.container,null,Nt):(Q.updateContainerSync(n,this.container,null,Nt),Q.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=Mn(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Tn(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(ie){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=ne(this.options.stdout);n&&this.writeStdout(te),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(G)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(ie){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=ne(this.options.stdout);n&&this.writeStdout(te),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(G)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(we.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(o(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}ie&&this.writeStdout(this.lastOutput+`
38
+ `)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?Q.updateContainer(null,this.container,null,Nt):(Q.updateContainerSync(null,this.container,null,Nt),Q.flushSyncWork()),Ni.delete(this.options.stdout);let{exitResult:s}=this,a=o(()=>{In(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!In(t),u=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&u?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()},we.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!ie&&!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=Ec((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=we.env.TERM??"",s=we.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in we.env||i==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!ie&&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=Lc(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=o(c=>{let u=typeof c=="string"?Buffer.from(c):c;for(let l of u)r.push(l);Fc(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[>${qi(t)}u`),this.kittyProtocolEnabled=!0}},Zi=Dc;var qe=class{static{o(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new Zi(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 le=null;function to(){if(le===-1)return null;if(le!==null)return le;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return le=-1,null;let t=e==="1"||e==="true"?$c(Hc(),`kodax-render-trace-${process.pid}.log`):e;try{return le=Bc(t,"a"),eo(le,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
39
+ `),le}catch{return le=-1,null}}o(to,"resolveTraceFd");function Uc(e){let t=to();if(t!==null)try{eo(t,e)}catch{}}o(Uc,"traceLine");var vn=new WeakMap,zc={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},Yc={isTTY:!1,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")},Kc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function Gc(e={}){return e instanceof Wc?{stdout:e}:e}o(Gc,"getOptions");function Vc(e,t,n){let r=vn.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(),vn.set(e,r)),r}o(Vc,"getInstance");function Nn(e,t){let n={stdout:zc,stdin:Kc,stderr:Yc,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...Gc(t)};if(to()!==null){let s=n.stdout,a=s.write.bind(s),c=0,u=0;s.write=((g,...h)=>(c+=1,u+=typeof g=="string"?Buffer.byteLength(g,"utf8"):g?.length??0,a(g,...h)));let l=0,f=0,d=n.onRender;n.onRender=g=>{let h=jc.now(),m=l===0?0:h-l,y=s,w=y.columns??0,x=y.rows??0;return Uc(`frame=${f} renderTime=${g.renderTime.toFixed(2)}ms interval=${m.toFixed(2)}ms writes=${c} bytes=${u} viewport=${w}x${x}
40
+ `),c=0,u=0,l=h,f+=1,d?.(g)}}let i=Vc(n.stdout,()=>new qe(n),n.concurrent??!1);return i.render(e),{rerender:i.render,unmount(){i.unmount()},waitUntilExit:i.waitUntilExit,cleanup:o(()=>{vn.delete(n.stdout)},"cleanup"),clear:i.clear}}o(Nn,"render");var no=$,ro=W;import{Buffer as Xc}from"node:buffer";var qc=/^(?:\x1b)([a-zA-Z0-9])$/,Jc=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,oo={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"},so=[...Object.values(oo),"backspace"],Qc=o(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),Zc=o(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),ao=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,eu=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,tu={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},nu={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"},io={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"},co=o(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),kn=o(e=>co(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function uo(e){return e===3?"release":e===2?"repeat":"press"}o(uo,"resolveEventType");function lo(e){return{ctrl:!!(e&re.ctrl),shift:!!(e&re.shift),meta:!!(e&re.meta),option:!!(e&re.alt),super:!!(e&re.super),hyper:!!(e&re.hyper),capsLock:!!(e&re.capsLock),numLock:!!(e&re.numLock)}}o(lo,"parseKittyModifiers");function ru(e){let t=ao.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(!co(n))return null;let a;s&&(a=s.split(":").map(l=>kn(Number.parseInt(l,10))).join(""));let c,u;return n===32?(c="space",u=!0):n===13?(c="return",u=!0):io[n]?(c=io[n],u=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),u=!1):(c=kn(n).toLowerCase(),u=!0),u&&!a&&(a=kn(n)),{name:c,...lo(r),eventType:uo(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:u,text:a}}o(ru,"parseKittyKeypress");function iu(e){let t=eu.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==="~"?nu[n]:tu[s];return a?{name:a,...lo(r),eventType:uo(i),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}o(iu,"parseKittySpecialKey");var On="\x1B[200~",ou="\x1B[201~";function su(e){if(!e.startsWith(On))return null;let t=e.indexOf(ou,On.length);return t===-1?null:e.slice(On.length,t)}o(su,"extractBracketedPaste");function An(e=""){let t=e,n;if(Xc.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=su(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=ru(t);if(r)return r;let i=iu(t);if(i)return i;if(ao.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===`
41
+ `)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=qc.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=Jc.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(""),u=Number(n[3]||n[5]||1)-1;s.ctrl=!!(u&4),s.meta=!!(u&10),s.shift=!!(u&1),s.code=c,s.name=oo[c]??"",s.shift=Qc(c)||s.shift,s.ctrl=Zc(c)||s.ctrl}return s}o(An,"parseKeypress");var uu=50;function _n(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(_n,"resolveTerminalSize");var Ot=au(null),lu={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var mo={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function fu(e){for(let t of e)if(t.rawMode)return!0;return!1}o(fu,"hasRawModeSubscribers");function du({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(d=>{for(let g of r)g.listener(d)},"handleData"),u=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=o(()=>{let d=i;d?.off?.("data",c),u(),s&&(d?.unref?.(),s=!1),i=void 0},"detachInput"),f=o(()=>{if(i&&i!==e&&l(),!e||r.size===0){l();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&fu(r))){u();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(d,g={}){let h={listener:d,rawMode:g.rawMode!==!1};return r.add(h),f(),()=>{r.delete(h),f()}},dispose(){r.clear(),l()}}}o(du,"createTerminalInputController");var pu=o(({children:e,runtime:t})=>{let[n,r]=cu(()=>t.terminalSize);_e(()=>{if(r(_n(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(_n(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=ho(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=fo(()=>du({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);_e(()=>()=>{s.dispose()},[s]);let a=fo(()=>({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 po(Ot.Provider,{value:a,children:e})},"TuiRuntimeProvider");function hu(e){let t=e?.stdout??lu,n=e?.stdin??mo,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:_n(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(hu,"createRuntimeValue");function go(e,t){let n=hu(t),r=Nn(po(pu,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(go,"render");var Fn=no,oe=ro;function mu(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&&so.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(mu,"createCompatKeypress");function wo(e,t={}){let{isActive:n=!0}=t,r=kt(e),i=kt(null),s=kt(null);_e(()=>{r.current=e},[e]),_e(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=It(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=ho(c=>{let{input:u,key:l}=mu(An(c));r.current(u,l)},[]);wu(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let u=i.current,l=typeof c=="string"?c:c.toString("utf8"),f=u?.push(l)??[l];for(let d of f)a(d);l.length>0&&(s.current=setTimeout(()=>{let d=i.current?.flushPendingEscape();d&&a(d)},uu))},{isActive:n,rawMode:!0})}o(wo,"useInput");function gu(){let e=Pn(Ot),t=e?.stdin??mo,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(gu,"useStdin");function yo(){return{exit:Pn(Ot)?.exit??(()=>{})}}o(yo,"useApp");function wu(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Pn(Ot),{stdin:s,setRawMode:a,isRawModeSupported:c}=gu(),u=kt(e);_e(()=>{u.current=e},[e]),_e(()=>{if(!n||!s)return;if(i)return i.subscribeInput(g=>{u.current(g)},{rawMode:r});let l=s,f=l.isRaw;r&&c&&f===!1&&a(!0);let d=o(g=>{u.current(g)},"handleData");return l.on?.("data",d),()=>{if(l.off?.("data",d),r&&c&&f===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(wu,"useTerminalInput");var Su=40;function Cu(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(Cu,"filterSessionPickerItems");function Eu(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(Eu,"buildSessionPickerPage");function Ru(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(Ru,"formatTimestamp");function bu({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=yo(),[a,c]=Ln(""),[u,l]=Ln(0),[f,d]=Ln(!1),g=xu(!1),h=yu(()=>Cu(e,a),[e,a]),m=Eu(h,u,i),y=h[m.selectedIndex];return wo((w,x)=>{if(!g.current){if(x.escape||x.ctrl&&w==="c"){r(),s();return}if(x.return){let p=h[m.selectedIndex];p&&(g.current=!0,d(!0),(async()=>{await new Promise(S=>setTimeout(S,Su));try{await t(p)}catch(S){n(S)}finally{s()}})());return}if(x.upArrow)l(p=>Math.max(0,p-1));else if(x.downArrow)l(p=>Math.min(Math.max(0,h.length-1),p+1));else if(x.pageUp)l(p=>Math.max(0,p-i));else if(x.pageDown)l(p=>Math.min(Math.max(0,h.length-1),p+i));else if(x.home)l(0);else if(x.end)l(Math.max(0,h.length-1));else if(x.tab){let p=h[m.selectedIndex];p&&(c(p.title),l(0))}else x.backspace||x.delete?(c(p=>p.slice(0,-1)),l(0)):w&&!x.ctrl&&!x.meta&&!x.super&&(c(p=>p+w),l(0))}}),Pe(Fn,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Je(oe,{bold:!0,color:"cyan",children:"Resume a session"}),Pe(oe,{children:["Search: ",Je(oe,{color:"yellow",children:a||"type to filter"})]}),Je(oe,{dimColor:!0,children:f?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Pe(Fn,{flexDirection:"column",marginTop:1,children:[m.items.length===0?Je(oe,{color:"yellow",children:"No matching sessions."}):null,m.items.map((w,x)=>{let S=m.pageStart+x===m.selectedIndex,M=w.title.trim()||"Untitled session",R=w.surface?` \xB7 ${w.surface}`:"";return Pe(oe,{color:S?"cyan":void 0,bold:S,children:[S?"\u276F":" "," ",M," \xB7 ",w.msgCount," msgs",R," \xB7 ",Ru(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Pe(oe,{dimColor:!0,children:[h.length," matches \xB7 Page ",m.pageIndex+1,"/",m.pageCount]}),Pe(oe,{dimColor:!0,children:["Selected ID: ",y?.id??"none"]})]})}o(bu,"SessionPicker");async function xo(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=go(Je(bu,{sessions:e,pageSize:a,onSelect:o(async u=>{n=u,await t.prepareSelection?.(u)},"onSelect"),onSelectionError:o(u=>{i=!0,s=u},"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(xo,"runSessionPicker");var Ro=65536,At=48;function Mu(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:U.join(Tu.homedir(),".kodax");return U.join(t,"sessions")}o(Mu,"defaultSessionsDir");function bo(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith("archived-")&&!e.startsWith(".")}o(bo,"isSessionFile");async function Bn(e){try{return(await xe.readdir(e,{withFileTypes:!0})).filter(t=>t.isFile()&&bo(t.name)).map(t=>U.join(e,t.name))}catch(t){if(t.code==="ENOENT")return[];throw t}}o(Bn,"readProjectSessionFiles");async function Iu(e){try{return await Bn(e)}catch(t){return Wn(`read ${e}`,t),[]}}o(Iu,"readOptionalProjectSessionFiles");async function vu(e,t,n,r,i){let s=n?[]:await Bn(t),a=(await Promise.all(i.map(u=>Iu(u)))).flat(),c=(await xe.readdir(e,{withFileTypes:!0})).filter(u=>u.isFile()&&bo(u.name)).map(u=>U.join(e,u.name));return[...s.map(u=>({filePath:u,trustedProjectDir:r})),...a.map(u=>({filePath:u,trustedProjectDir:!1})),...c.map(u=>({filePath:u,trustedProjectDir:!1}))]}o(vu,"collectActiveSessionFiles");async function Nu(e,t){try{let n=JSON.parse(await xe.readFile(U.join(e,"project.json"),"utf8"));if(n===null||typeof n!="object")return!1;let r=n.canonicalRoot;return typeof r=="string"&&ye(r)===ye(t)}catch{return!1}}o(Nu,"isTrustedProjectDir");function ku(e){return{...e,...e.createdAt!==void 0?{createdAtMs:Date.parse(e.createdAt)}:{}}}o(ku,"indexedCandidate");function Dn(e,t){let n=t instanceof Error?t.message:String(t);process.emitWarning(`Resume index ${e} failed; using canonical sessions instead: ${n}`,{code:"KODAX_RESUME_INDEX"})}o(Dn,"reportResumeIndexFailure");function Wn(e,t){let n=t instanceof Error?t.message:String(t);process.emitWarning(`Resume compatibility ${e} failed; continuing with the current project: ${n}`,{code:"KODAX_RESUME_COMPATIBILITY"})}o(Wn,"reportResumeCompatibilityFailure");function ye(e){if(!e?.trim())return;let t=U.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o(ye,"normalizeComparableRoot");function Ou(e,t){if(t.length===0)return!0;let n=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return or({...typeof e.gitRoot=="string"?{gitRoot:e.gitRoot}:{},...n===void 0?{}:{runtimeInfo:{...typeof n.canonicalRepoRoot=="string"?{canonicalRepoRoot:n.canonicalRepoRoot}:{},...typeof n.workspaceRoot=="string"?{workspaceRoot:n.workspaceRoot}:{},...typeof n.executionCwd=="string"?{executionCwd:n.executionCwd}:{}}}},t)}o(Ou,"matchesProjectRoot");function Au(e,t){return e.sourceSize===t.size&&e.sourceMtimeMs===t.mtimeMs&&e.sourceCtimeMs===t.ctimeMs&&e.sourceDev===t.dev&&e.sourceIno===t.ino}o(Au,"sameSource");async function _u(e,t){let n=[],r=t,i=!1;for(;r>0;){let s=Math.max(0,r-Ro),a=Buffer.allocUnsafe(r-s),{bytesRead:c}=await e.read(a,0,a.length,s);if(c===0)break;let u=c;if(!i){for(;u>0&&(a[u-1]===10||a[u-1]===13);)u-=1;if(u===0){r=s;continue}i=!0}let l=a.lastIndexOf(10,u-1);if(n.unshift(a.subarray(l+1,u)),l>=0)break;r=s}return Buffer.concat(n).toString("utf8").trim()}o(_u,"readLastNonEmptyLine");async function Pu(e){let t;try{t=await xe.open(e,"r");let n=await t.stat(),r=[],i=0,s=0,a=n.size;for(;;){let d=n.size-s;if(d<=0)break;let g=Buffer.allocUnsafe(Math.min(Ro,d)),{bytesRead:h}=await t.read(g,0,g.length,s);if(h===0)break;let m=g.subarray(0,h),y=m.indexOf(10),w=y>=0?m.subarray(0,y):m;if(r.push(w),i+=w.length,y>=0){a=s+y;break}s+=h}if(i===0)return;let c=Buffer.concat(r,i).toString("utf8").trim(),u=n.size<=a+1?c:await _u(t,n.size),l={sourceSize:n.size,sourceMtimeMs:n.mtimeMs,sourceCtimeMs:n.ctimeMs,sourceDev:n.dev,sourceIno:n.ino},f=await t.stat();return Au(l,f)?{line:c,tailLine:u,...l}:void 0}catch{return}finally{await t?.close()}}o(Pu,"readSessionEnvelope");function So(e,t){return t._type!=="meta_update"?e:{...e,...typeof t.title=="string"?{title:t.title}:{},...typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0?{activeMessageCount:t.activeMessageCount}:{},...typeof t.scope=="string"?{scope:t.scope}:{}}}o(So,"applyMetaUpdate");function Co(e){try{let t=JSON.parse(e);return t!==null&&typeof t=="object"?{valid:!0,value:t}:{valid:!0}}catch{return{valid:!1}}}o(Co,"parseJsonRecord");async function Fu(e,t,n){let r=Co(n);if(r.valid)return r.value===void 0?t:So(t,r.value);let i=(await xe.readFile(e,"utf8")).split(`
42
+ `);for(let s=i.length-1;s>=0;s-=1){let a=i[s]?.trim();if(!a)continue;let c=Co(a);if(c.valid&&c.value?._type==="meta_update")return So(t,c.value)}return t}o(Fu,"applyEffectiveTailMetadata");async function Lu(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await xe.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(`
43
+ `).length-1-r)}o(Lu,"readMessageCount");function Du(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(Du,"runtimeSummary");async function Eo(e,t,n){let r=await Pu(e);if(!r?.line)return{};let i={name:U.basename(e),sourceSize:r.sourceSize,sourceMtimeMs:r.sourceMtimeMs,sourceCtimeMs:r.sourceCtimeMs,sourceDev:r.sourceDev,sourceIno:r.sourceIno};try{let s=JSON.parse(r.line);if(s===null||typeof s!="object")return{source:i};let a=await Fu(e,s,r.tailLine);if(a._type!=="meta")return{source:i,matchesProject:!1};let c=n||Ou(a,t);if(!c||a.scope==="managed-task-worker")return{source:i,matchesProject:c};let u=await Lu(e,a);if(u<=0)return{source:i,matchesProject:c};let l=typeof a.createdAt=="string"?a.createdAt:void 0,f=Du(a);return{source:i,matchesProject:c,candidate:{id:U.basename(e,".jsonl"),title:typeof a.title=="string"?a.title:"",msgCount:u,...l!==void 0?{createdAt:l}:{},...f?.surface!==void 0?{surface:f.surface}:{},...l!==void 0?{createdAtMs:Date.parse(l)}:{},sourceSize:r.sourceSize,sourceMtimeMs:r.sourceMtimeMs,sourceCtimeMs:r.sourceCtimeMs,sourceDev:r.sourceDev,sourceIno:r.sourceIno}}}catch{return{source:i}}}o(Eo,"readResumeCandidate");async function To(e){let t=e.sessionsDir??Mu();await mr(t),await xe.mkdir(t,{recursive:!0});let n=await Pt({cwd:e.projectRoot}),r=n.canonicalRoot,i=U.join(t,Se(r).key),s=[];try{s=Zn(r)}catch(p){Wn("linked-worktree discovery",p)}let a=[n.workspaceRoot,...s].filter((p,S,M)=>{let R=ye(p);return R!==ye(r)&&M.findIndex(A=>ye(A)===R)===S}),c=a.map(p=>U.join(t,Se(p).key)),u=await Nu(i,r),l=!1;if(!u)try{l=!await ar(i)}catch{}let f;if(u)try{f=await br(i)}catch(p){Dn("read",p)}let d=await vu(t,i,f!==void 0,u&&f!==void 0,c),g=f?.map(ku)??[],h=[],m=[],y=!0,w=new Set(g.map(p=>p.id));for(let p=0;p<d.length;p+=At){let S=d.slice(p,p+At),M=await Promise.all(S.map(R=>Eo(R.filePath,[r,...a],R.trustedProjectDir)));for(let R=0;R<M.length;R+=1){let A=M[R],D=S[R],N=D!==void 0&&ye(U.dirname(D.filePath))===ye(i);N&&(A?.source&&m.push(A.source),(A?.source===void 0||A.matchesProject!==!0)&&(y=!1));let O=A?.candidate;f===void 0&&N&&O?.sourceSize!==void 0&&O.sourceMtimeMs!==void 0&&O.sourceCtimeMs!==void 0&&O.sourceDev!==void 0&&O.sourceIno!==void 0&&h.push({...O,sourceSize:O.sourceSize,sourceMtimeMs:O.sourceMtimeMs,sourceCtimeMs:O.sourceCtimeMs,sourceDev:O.sourceDev,sourceIno:O.sourceIno}),O&&!w.has(O.id)&&(w.add(O.id),g.push(O))}}if(l&&y){let p=[];try{p=await Bn(U.join(i,"archived"))}catch(S){y=!1,Wn("legacy archived-session certification",S)}for(let S=0;S<p.length;S+=At)if((await Promise.all(p.slice(S,S+At).map(R=>Eo(R,[r,...a],!1)))).some(R=>R.source===void 0||R.matchesProject!==!0)){y=!1;break}}let x=u;if(l&&y)try{await it(i,Se(r)),x=!0}catch(p){Dn("project identity publication",p)}if(f===void 0&&x)try{await Tr(i,h,m)}catch(p){Dn("rebuild",p)}return g.sort((p,S)=>Number.isFinite(p.createdAtMs)&&Number.isFinite(S.createdAtMs)&&p.createdAtMs!==S.createdAtMs?S.createdAtMs-p.createdAtMs:Number.isFinite(S.createdAtMs)&&!Number.isFinite(p.createdAtMs)?1:Number.isFinite(p.createdAtMs)&&!Number.isFinite(S.createdAtMs)?-1:S.id.localeCompare(p.id)),g.slice(0,e.limit??1e3).map(({createdAtMs:p,sourceSize:S,sourceMtimeMs:M,sourceCtimeMs:R,sourceDev:A,sourceIno:D,...N})=>N)}o(To,"listCliResumeSessions");async function Mo(e,t={}){return xo(e,t)}o(Mo,"runCliResumePicker");async function Wu(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
835
44
  `);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
836
- `)}i(mv,"printResumeNotice");async function Oz(e={}){let t=e.listSessions??Bc,n=e.pickSession??Uc,r=e.notify??mv,o=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(o.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(o,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}i(Oz,"resolveBareResume");export{Oz as resolveBareResume};
45
+ `)}o(Wu,"printResumeNotice");async function cm(e={}){let t=e.listSessions??To,n=e.pickSession??Mo,r=e.notify??Wu,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(cm,"resolveBareResume");export{cm as resolveBareResume};