@kodax-ai/kodax 0.7.83 → 0.7.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +154 -4
- package/README.md +48 -26
- package/README_CN.md +26 -21
- package/dist/chunks/agent-OQ37XUWF.js +2 -0
- package/dist/chunks/argument-completer-IMRSIF2N.js +2 -0
- package/dist/chunks/chunk-2XJQNFVR.js +379 -0
- package/dist/chunks/chunk-3E4OSFP2.js +1279 -0
- package/dist/chunks/chunk-CDWYKVZC.js +482 -0
- package/dist/chunks/chunk-CZCEFGQG.js +412 -0
- package/dist/chunks/chunk-IA246OAN.js +679 -0
- package/dist/chunks/chunk-IWRNGH4M.js +319 -0
- package/dist/chunks/chunk-MJ4G5ZCW.js +2 -0
- package/dist/chunks/{chunk-RAQGGVIF.js → chunk-ODRLFQQH.js} +1 -1
- package/dist/chunks/chunk-RSOAHVUR.js +5 -0
- package/dist/chunks/chunk-RTFVMEF6.js +415 -0
- package/dist/chunks/{chunk-XB2JNLXH.js → chunk-SR4E5FQK.js} +2 -2
- package/dist/chunks/{chunk-HI6RCW5Y.js → chunk-TBBY2DKE.js} +2 -2
- package/dist/chunks/chunk-UH5WNJXF.js +92 -0
- package/dist/chunks/{chunk-6QILIBOU.js → chunk-ZVOXWLT6.js} +214 -201
- package/dist/chunks/compaction-config-3WLLNN57.js +2 -0
- package/dist/chunks/{construction-bootstrap-E4M3CY3N.js → construction-bootstrap-CZ6NWEWQ.js} +1 -1
- package/dist/chunks/dist-NFLLOZWF.js +2 -0
- package/dist/chunks/host-LWUSSCWH.js +2 -0
- package/dist/chunks/run-manager-PBMOVP7A.js +2 -0
- package/dist/chunks/utils-KFLK3EHJ.js +2 -0
- package/dist/index.d.ts +17 -15
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1975 -1564
- package/dist/kodax_resume.js +269 -90
- package/dist/runtime-worker.js +1824 -1419
- package/dist/sandbox-workspace-session.js +979 -66
- package/dist/sdk-a2a.d.ts +11 -10
- package/dist/sdk-a2a.js +9 -8
- package/dist/sdk-agent.d.ts +39 -299
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +103 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +7 -20
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +14 -13
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +64 -23
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -6
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +251 -64
- package/dist/types-chunks/{bash-prefix-extractor.d-CJM7OY-L.d.ts → bash-prefix-extractor.d-BnZQDirs.d.ts} +130 -13
- package/dist/types-chunks/{capsule.d-B7yoH4dM.d.ts → capsule.d-CN_iMqAS.d.ts} +2 -1
- package/dist/types-chunks/controller.d-A73Kf6tH.d.ts +105 -0
- package/dist/types-chunks/{controller.d-CYNuR2n9.d.ts → controller.d-Dzxz22X-.d.ts} +28 -1020
- package/dist/types-chunks/{guardrail.d-fM3mn4Op.d.ts → guardrail.d-BCkgaWT1.d.ts} +25 -19
- package/dist/types-chunks/{history-retrieval.d-BDI-ZMvY.d.ts → history-retrieval.d-Debbzn1z.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-i10kvYFs.d.ts → public-api.d-N6G6Jw8X.d.ts} +3 -2
- package/dist/types-chunks/{repl.d-Cs3eqGVT.d.ts → repl.d-BkTIOkJD.d.ts} +5 -5
- package/dist/types-chunks/review-inbox.d-DuZqFX-z.d.ts +221 -0
- package/dist/types-chunks/{run-manager.d-CodHf6rw.d.ts → run-manager.d-BS4lJfL3.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-CRXu5xNs.d.ts → sdk-session-DLkZTOc-.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-DfeSUjjM.d.ts → shell-command-sets.d-BrLw-WN9.d.ts} +3 -2
- package/dist/types-chunks/{types-Bf3Y3mW-.d.ts → types-PHjfwebT.d.ts} +62 -190
- package/dist/types-chunks/{types.d-BbtGlKZu.d.ts → types.d-BSPlmJqf.d.ts} +25 -6
- package/dist/types-chunks/{types.d-DIXZFauU.d.ts → types.d-Bo4fyMLu.d.ts} +1 -1
- package/dist/types-chunks/{types.d-DKs4tfSd.d.ts → types.d-Ch3BD97c.d.ts} +2 -2
- package/dist/types-chunks/types.d-DlLBRqZ9.d.ts +1057 -0
- package/dist/types-chunks/{utils.d-CgITiLyc.d.ts → utils.d-BI-kjuev.d.ts} +7 -4
- package/package.json +4 -2
- package/dist/chunks/agent-S7LMMTG7.js +0 -2
- package/dist/chunks/argument-completer-SQHG2LYE.js +0 -2
- package/dist/chunks/chunk-37RT45HT.js +0 -379
- package/dist/chunks/chunk-3DKQC7A2.js +0 -479
- package/dist/chunks/chunk-45E23YJI.js +0 -885
- package/dist/chunks/chunk-6UENDY33.js +0 -89
- package/dist/chunks/chunk-DSFHIUHZ.js +0 -655
- package/dist/chunks/chunk-DZUMH6GJ.js +0 -2
- package/dist/chunks/chunk-E7C4DRD2.js +0 -5
- package/dist/chunks/chunk-EVXIJPZ6.js +0 -218
- package/dist/chunks/chunk-KHEFUT6O.js +0 -5
- package/dist/chunks/chunk-LF2JBTBG.js +0 -319
- package/dist/chunks/chunk-TC2VHPG5.js +0 -348
- package/dist/chunks/chunk-URCS6CVP.js +0 -292
- package/dist/chunks/compaction-config-SSQ5NXUP.js +0 -2
- package/dist/chunks/dist-MIXP4ULB.js +0 -2
- package/dist/chunks/host-ZCPI7SMC.js +0 -2
- package/dist/chunks/run-manager-4RYG7HSP.js +0 -2
- package/dist/chunks/utils-7DKE2EKT.js +0 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +0 -5735
package/dist/kodax_resume.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
var
|
|
2
|
+
var zc=Object.defineProperty;var i=(e,t)=>zc(e,"name",{value:t,configurable:!0});var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er,ea,ta=Pt(()=>{Er=class{static{i(this,"WebSocketStub")}},ea=Er});var an,na=Pt(()=>{"use strict";ta();an=global;an.WebSocket||=ea;an.window||=global;an.self||=global;an.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var ra,Ir,ia=Pt(()=>{ra=i(()=>{},"noop"),Ir={initialize:ra,connectToDevTools:ra}});var Pg={};var oa=Pt(()=>{"use strict";na();ia();Ir.initialize();Ir.connectToDevTools()});import Ye from"node:fs/promises";import Jw from"node:os";import Qe from"node:path";import R from"fs/promises";import Ds from"fs";import P from"path";import Cn from"path";import{createHash as Jc}from"crypto";import{execFile as qc}from"child_process";import Vc from"path";import{promisify as Gc}from"util";var dv=Gc(qc);function In(e){if(!(!e||!e.trim()))return Vc.resolve(e).replace(/\\/g,"/")}i(In,"normalizePath");function pi(e){let t=In(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=In(e.runtimeInfo?.executionCwd??t),r=In(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}i(pi,"resolveSessionRuntimeInfo");var Ze="_unknown",mi=80;function Yc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}i(Yc,"caseFold");function Qc(e){return Yc(Cn.resolve(e).replace(/\\/g,"/"))}i(Qc,"normalizeRoot");function hi(e){return Jc("sha256").update(e).digest("hex").slice(0,10)}i(hi,"shortHash");function Zc(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>mi?t.slice(t.length-mi):t}i(Zc,"slugify");function ed(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=Qc(e),n=Zc(t),r=n?`${n}-${hi(t)}`:hi(t),o=Cn.basename(Cn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:o}}i(ed,"deriveProjectKeyFromRoot");function gi(e){let t=pi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return ed(n)}i(gi,"deriveProjectKeyFromData");import Zt from"node:fs/promises";import mt from"node:path";import{AsyncLocalStorage as td}from"node:async_hooks";var nd=new td;function Mt(e){let t=nd.getStore()?.credential;return t?et(e,t,new WeakMap):e}i(Mt,"redactScopedProviderCredential");function et(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(a,t,n));return s}let o={};n.set(e,o);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=s.split(t).join("[REDACTED_CREDENTIAL]");o[c]=et(a.value,t,n)}return o}i(et,"redactCredentialValue");import{AsyncLocalStorage as rd}from"node:async_hooks";var jv=new rd;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},yi={...tt,multimodalSupport:"image-input"},Ot={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},wi={...Ot,multimodalSupport:"image-input"};import yb from"@anthropic-ai/sdk";import{parse as rb}from"partial-json";import Ob from"openai";import{ClientSideConnection as Qb,PROTOCOL_VERSION as Zb,ndJsonStream as ek}from"@agentclientprotocol/sdk";var Hb=Object.freeze({status:"terminated"}),zb=Object.freeze({status:"already-exited"}),qb=Object.freeze({status:"unknown"}),Vb=String.raw`
|
|
3
3
|
using System;
|
|
4
4
|
using System.Runtime.InteropServices;
|
|
5
5
|
using System.Text;
|
|
@@ -86,8 +86,8 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
86
86
|
CloseHandle(snapshot);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
}`;import Co from"node:fs";import To from"node:os";import Ro from"node:path";var Ed="gpt-5.4",Id="auto-gemini-3",Cd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Td=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function _o(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}o(_o,"dedupePreserveOrder");function Rd(){let e=Ro.join(To.homedir(),".codex","config.toml");try{return Co.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(Rd,"readCodexConfiguredModel");function _d(){let e=Ro.join(To.homedir(),".gemini","settings.json");try{let t=JSON.parse(Co.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}o(_d,"readGeminiConfiguredModel");function Oe(){return Rd()||Ed}o(Oe,"getCodexCliDefaultModel");function Ne(){return _d()||Id}o(Ne,"getGeminiCliDefaultModel");function nt(){return _o([Oe(),...Cd])}o(nt,"getCodexCliKnownModels");function rt(){return _o([Ne(),...Td])}o(rt,"getGeminiCliKnownModels");var _k=Ne(),Ak=rt();var Xk=Oe(),Uk=nt();import{existsSync as Kd,readFileSync as Bd}from"node:fs";import De from"node:path";import{fileURLToPath as Xd}from"node:url";var Ao=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Po=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Oo=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],No=["max_tokens","max_completion_tokens"],$o=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Do=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(ke,"requireString");function $e(e,t){if(e!==void 0)return ke(e,t)}o($e,"optionalString");function jo(e,t){if(e!==void 0){if(typeof e!="string"||!No.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${No.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(jo,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}o(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(D,"optionalBoolean");function Lo(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}o(Lo,"optionalStringArray");function Pd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=ke(i,`${t}.${r}`);return n}o(Pd,"optionalStringMap");function Md(e,t){if(e!==void 0){if(typeof e!="string"||!Oo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Md,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!Ao.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ao.join(", ")}, got ${JSON.stringify(e)}`);return e}o(_n,"requireReasoningCapability");function Od(e,t){if(typeof e!="string"||!Po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Po.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Od,"requireEffortStrategy");function Nd(e,t){if(e!==void 0){if(typeof e!="string"||!Mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Nd,"optionalThinkingStrategy");function Fo(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Od(e.effortStrategy,`${t}.effortStrategy`),r=Md(e.reasoningPreset,`${t}.reasoningPreset`),i=Nd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=$e(e.defaultEffort,`${t}.defaultEffort`),a=Pd(e.effortAliases,`${t}.effortAliases`),c=Lo(e.disabledEfforts,`${t}.disabledEfforts`),d=Lo(e.localRejectEfforts,`${t}.localRejectEfforts`),u=D(e.allowCustomEffort,`${t}.allowCustomEffort`),l=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),i!==void 0&&(y.thinkingStrategy=i),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...$e(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:$e(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return u!==void 0&&(y.allowCustomEffort=u),l!==void 0&&(y.supportsReasoningEffort=l),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}o(Fo,"validateReasoningProfile");function Ko(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Fo(n,`${t}.reasoningProfile`):Fo(r,`${t}.reasoningCapabilityV2`)}o(Ko,"validateReasoningProfileField");function $d(e,t){if(typeof e!="string"||!$o.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$o.join(", ")}, got ${JSON.stringify(e)}`);return e}o($d,"requireProfileName");function Dd(e,t){if(typeof e!="string"||!Do.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Do.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Dd,"requireVerifyStrategy");function Ld(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=$e(e.wireModel,`${t}.wireModel`),i=$e(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=jo(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),u=D(e.replayReasoningContent,`${t}.replayReasoningContent`),l=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=Ko(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),i!==void 0&&(g.displayName=i),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),u!==void 0&&(g.replayReasoningContent=u),l!==void 0&&(g.strictThinkingSignature=l),f!==void 0&&(g.streamMaxDurationMs=f),g}o(Ld,"validateModelDescriptor");function Fd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=_n(i,`${t}.${r}`);return n}o(Fd,"validateModelReasoningCapabilities");function jd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ko(e,`providers.${t}`),a=$d(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Dd(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),u=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),l=jo(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Fd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=$e(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Ld(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),u!==void 0&&(w.maxOutputTokens=u),l!==void 0&&(w.maxOutputTokensField=l),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}o(jd,"validateProviderEntry");function Bo(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=jd(i,r);return{version:1,updatedAt:t,providers:n}}o(Bo,"validateProviderCapabilitiesJson");var Ud=Object.freeze({native:tt,"image-input-native":wo,"cli-bridge":Mt,"image-input-cli-bridge":vo}),Dt=null;function Wd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Xd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Kd(n))return n;return t[0]}o(Wd,"resolveJsonPath");function Hd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Xo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Xo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Hd,"deepFreezeSnapshot");function Xo(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}o(Xo,"freezeReasoningProfile");function zd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(zd,"resolveCliBridgeModels");function qd(e,t){let n=Ud[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=zd(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(qd,"buildSnapshot");function Uo(){if(Dt)return Dt;let e=Wd(),t;try{let i=Bd(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Bo(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Hd(qd(i,s));return Dt=Object.freeze(r),Dt}o(Uo,"getProviderSnapshots");import px from"@anthropic-ai/sdk";var Lt=Uo();var Wo=process.env.KODAX_PROVIDER??"zhipu-coding";var Iu=[];function z(e){let t=Pt(e),n=Iu.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${ai(t)}
|
|
90
|
-
`)}catch{}}
|
|
89
|
+
}`;import Ii from"node:fs";import Ci from"node:os";import Ti from"node:path";var Cd="gpt-5.4",Td="auto-gemini-3",Rd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],_d=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Ri(e){let t=new Set,n=[];for(let r of e){let o=r.trim();if(!o)continue;let s=o.toLowerCase();t.has(s)||(t.add(s),n.push(o))}return n}i(Ri,"dedupePreserveOrder");function Ad(){let e=Ti.join(Ci.homedir(),".codex","config.toml");try{return Ii.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Ad,"readCodexConfiguredModel");function Pd(){let e=Ti.join(Ci.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ii.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}i(Pd,"readGeminiConfiguredModel");function Oe(){return Ad()||Cd}i(Oe,"getCodexCliDefaultModel");function Ne(){return Pd()||Td}i(Ne,"getGeminiCliDefaultModel");function nt(){return Ri([Oe(),...Rd])}i(nt,"getCodexCliKnownModels");function rt(){return Ri([Ne(),..._d])}i(rt,"getGeminiCliKnownModels");var Nk=Ne(),Lk=rt();var qk=Oe(),Vk=nt();import{existsSync as Ud,readFileSync as Xd}from"node:fs";import De from"node:path";import{fileURLToPath as Wd}from"node:url";var _i=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Ai=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Pi=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Mi=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Oi=["max_tokens","max_completion_tokens"],Ni=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Li=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}i(ke,"requireString");function Le(e,t){if(e!==void 0)return ke(e,t)}i(Le,"optionalString");function Fi(e,t){if(e!==void 0){if(typeof e!="string"||!Oi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Fi,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}i(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}i(D,"optionalBoolean");function Di(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}i(Di,"optionalStringArray");function Od(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=ke(o,`${t}.${r}`);return n}i(Od,"optionalStringMap");function Nd(e,t){if(e!==void 0){if(typeof e!="string"||!Mi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Nd,"optionalReasoningPreset");function _n(e,t){if(typeof e!="string"||!_i.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${_i.join(", ")}, got ${JSON.stringify(e)}`);return e}i(_n,"requireReasoningCapability");function Ld(e,t){if(typeof e!="string"||!Ai.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ai.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Ld,"requireEffortStrategy");function Dd(e,t){if(e!==void 0){if(typeof e!="string"||!Pi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Pi.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Dd,"optionalThinkingStrategy");function $i(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Ld(e.effortStrategy,`${t}.effortStrategy`),r=Nd(e.reasoningPreset,`${t}.reasoningPreset`),o=Dd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=Le(e.defaultEffort,`${t}.defaultEffort`),a=Od(e.effortAliases,`${t}.effortAliases`),c=Di(e.disabledEfforts,`${t}.disabledEfforts`),d=Di(e.localRejectEfforts,`${t}.localRejectEfforts`),l=D(e.allowCustomEffort,`${t}.allowCustomEffort`),u=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),o!==void 0&&(y.thinkingStrategy=o),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...Le(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:Le(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return l!==void 0&&(y.allowCustomEffort=l),u!==void 0&&(y.supportsReasoningEffort=u),f!==void 0&&(y.supportsReasoningSummary=f),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),p!==void 0&&(y.supportsAdaptiveThinking=p),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}i($i,"validateReasoningProfile");function ji(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?$i(n,`${t}.reasoningProfile`):$i(r,`${t}.reasoningCapabilityV2`)}i(ji,"validateReasoningProfileField");function $d(e,t){if(typeof e!="string"||!Ni.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ni.join(", ")}, got ${JSON.stringify(e)}`);return e}i($d,"requireProfileName");function Fd(e,t){if(typeof e!="string"||!Li.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Li.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Fd,"requireVerifyStrategy");function jd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=Le(e.wireModel,`${t}.wireModel`),o=Le(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=Fi(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=D(e.replayReasoningContent,`${t}.replayReasoningContent`),u=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),m=e.reasoningCapability===void 0?void 0:_n(e.reasoningCapability,`${t}.reasoningCapability`),p=ji(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),o!==void 0&&(g.displayName=o),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),m!==void 0&&(g.reasoningCapability=m),p!==void 0&&(g.reasoningProfile=p),l!==void 0&&(g.replayReasoningContent=l),u!==void 0&&(g.strictThinkingSignature=u),f!==void 0&&(g.streamMaxDurationMs=f),g}i(jd,"validateModelDescriptor");function Kd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=_n(o,`${t}.${r}`);return n}i(Kd,"validateModelReasoningCapabilities");function Bd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),o=_n(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=ji(e,`providers.${t}`),a=$d(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Fd(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),l=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=Fi(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),m=D(e.supportsThinking,`providers.${t}.supportsThinking`),p=Kd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=Le(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>jd(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:o,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),l!==void 0&&(w.maxOutputTokens=l),u!==void 0&&(w.maxOutputTokensField=u),f!==void 0&&(w.thinkingBudgetCap=f),m!==void 0&&(w.supportsThinking=m),p!==void 0&&(w.modelReasoningCapabilities=p),n&&(w.cliBridge=!0),w}i(Bd,"validateProviderEntry");function Ki(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,o]of Object.entries(e.providers))n[r]=Bd(o,r);return{version:1,updatedAt:t,providers:n}}i(Ki,"validateProviderCapabilitiesJson");var Hd=Object.freeze({native:tt,"image-input-native":yi,"cli-bridge":Ot,"image-input-cli-bridge":wi}),$t=null;function zd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(Wd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Ud(n))return n;return t[0]}i(zd,"resolveJsonPath");function qd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Bi(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Bi(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(qd,"deepFreezeSnapshot");function Bi(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}i(Bi,"freezeReasoningProfile");function Vd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}i(Vd,"resolveCliBridgeModels");function Gd(e,t){let n=Hd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let o=Vd(e),s={model:o.model,models:o.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}i(Gd,"buildSnapshot");function Ui(){if($t)return $t;let e=zd(),t;try{let o=Xd(e,"utf8");t=JSON.parse(o)}catch(o){let s=o instanceof Error?o.message:String(o);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Ki(t),r={};for(let[o,s]of Object.entries(n.providers))r[o]=qd(Gd(o,s));return $t=Object.freeze(r),$t}i(Ui,"getProviderSnapshots");import wx from"@anthropic-ai/sdk";var Ft=Ui();var Xi=process.env.KODAX_PROVIDER??"zhipu-coding";var Tl=[];function z(e){let t=Mt(e),n=Tl.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${so(t)}
|
|
90
|
+
`)}catch{}}i(z,"emitKodaXDiagnostic");function so(e){let t=Mt(e),n=Rl(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}i(so,"formatKodaXDiagnostic");function Rl(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}i(Rl,"formatDiagnosticDetail");var it=class e{static{i(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??_l,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},ao=0;function _l(){ao+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${ao}-${e}`}i(_l,"defaultNextSpanId");var co=0;function Al(){co+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${co}-${e}`}i(Al,"defaultNextTraceId");function Dn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Al)(),r=t(),o=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:o},c=!1,d,l,u=new it({id:`${n}-root`,traceId:n,name:o,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}i(Dn,"createTrace");var $n=[];function Fn(e){for(let t of $n)try{t.onSpanStart(e)}catch{}}i(Fn,"_emitSpanStart");function jn(e){for(let t of $n)try{t.onSpanEnd(e)}catch{}}i(jn,"_emitSpanEnd");function Kn(e){for(let t of $n)try{t.onTraceEnd(e)}catch{}}i(Kn,"_emitTraceEnd");var jt=class{static{i(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Dn({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Fn,onSpanEnd:jn,onTraceEnd:Kn})}},lo=new jt;var Dl=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var oI=new Set(Dl);var JI=String.raw`
|
|
91
91
|
using System;
|
|
92
92
|
using System.Runtime.InteropServices;
|
|
93
93
|
public static class KodaXWindowsJobMembership {
|
|
@@ -154,7 +154,7 @@ public static class KodaXWindowsJobMembership {
|
|
|
154
154
|
CloseHandle(job);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
}`,
|
|
157
|
+
}`,YI=String.raw`
|
|
158
158
|
$ErrorActionPreference = 'Stop'
|
|
159
159
|
$source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
|
|
160
160
|
Add-Type -TypeDefinition $source
|
|
@@ -162,7 +162,7 @@ if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB
|
|
|
162
162
|
[Console]::Out.Write('1')
|
|
163
163
|
} else {
|
|
164
164
|
[Console]::Out.Write('0')
|
|
165
|
-
}`,
|
|
165
|
+
}`,QI=String.raw`
|
|
166
166
|
using System;
|
|
167
167
|
using System.Runtime.InteropServices;
|
|
168
168
|
using System.Text;
|
|
@@ -249,26 +249,205 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
249
249
|
CloseHandle(snapshot);
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
-
}`,
|
|
253
|
-
|
|
254
|
-
|
|
252
|
+
}`,ZI=Object.freeze({status:"terminated"}),eC=Object.freeze({status:"already-exited"}),tC=Object.freeze({status:"unknown"});var go="KODAX_EFFECT_JOB_PAYLOAD";var iu=String.raw`
|
|
253
|
+
using System;
|
|
254
|
+
using System.IO;
|
|
255
|
+
using System.Runtime.InteropServices;
|
|
256
|
+
using System.Threading;
|
|
257
|
+
|
|
258
|
+
public static class KodaXEffectJob {
|
|
259
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
260
|
+
private struct IoCounters {
|
|
261
|
+
public ulong ReadOperationCount;
|
|
262
|
+
public ulong WriteOperationCount;
|
|
263
|
+
public ulong OtherOperationCount;
|
|
264
|
+
public ulong ReadTransferCount;
|
|
265
|
+
public ulong WriteTransferCount;
|
|
266
|
+
public ulong OtherTransferCount;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
270
|
+
private struct BasicLimitInformation {
|
|
271
|
+
public long PerProcessUserTimeLimit;
|
|
272
|
+
public long PerJobUserTimeLimit;
|
|
273
|
+
public uint LimitFlags;
|
|
274
|
+
public UIntPtr MinimumWorkingSetSize;
|
|
275
|
+
public UIntPtr MaximumWorkingSetSize;
|
|
276
|
+
public uint ActiveProcessLimit;
|
|
277
|
+
public UIntPtr Affinity;
|
|
278
|
+
public uint PriorityClass;
|
|
279
|
+
public uint SchedulingClass;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
283
|
+
private struct ExtendedLimitInformation {
|
|
284
|
+
public BasicLimitInformation BasicLimitInformation;
|
|
285
|
+
public IoCounters IoInfo;
|
|
286
|
+
public UIntPtr ProcessMemoryLimit;
|
|
287
|
+
public UIntPtr JobMemoryLimit;
|
|
288
|
+
public UIntPtr PeakProcessMemoryUsed;
|
|
289
|
+
public UIntPtr PeakJobMemoryUsed;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
293
|
+
private struct BasicAccountingInformation {
|
|
294
|
+
public long TotalUserTime;
|
|
295
|
+
public long TotalKernelTime;
|
|
296
|
+
public long ThisPeriodTotalUserTime;
|
|
297
|
+
public long ThisPeriodTotalKernelTime;
|
|
298
|
+
public uint TotalPageFaultCount;
|
|
299
|
+
public uint TotalProcesses;
|
|
300
|
+
public uint ActiveProcesses;
|
|
301
|
+
public uint TotalTerminatedProcesses;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
305
|
+
private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
|
|
306
|
+
|
|
307
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
308
|
+
private static extern bool SetInformationJobObject(
|
|
309
|
+
IntPtr job,
|
|
310
|
+
int infoClass,
|
|
311
|
+
ref ExtendedLimitInformation info,
|
|
312
|
+
uint length);
|
|
313
|
+
|
|
314
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
315
|
+
private static extern bool QueryInformationJobObject(
|
|
316
|
+
IntPtr job,
|
|
317
|
+
int infoClass,
|
|
318
|
+
out BasicAccountingInformation info,
|
|
319
|
+
uint length,
|
|
320
|
+
IntPtr returnLength);
|
|
321
|
+
|
|
322
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
323
|
+
private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
|
|
324
|
+
|
|
325
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
326
|
+
private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
|
|
327
|
+
|
|
328
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
329
|
+
private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
|
|
330
|
+
|
|
331
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
332
|
+
private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
|
|
333
|
+
|
|
334
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
335
|
+
private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
|
|
336
|
+
|
|
337
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
338
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
339
|
+
|
|
340
|
+
private const uint Synchronize = 0x00100000;
|
|
341
|
+
private const uint ProcessTerminate = 0x0001;
|
|
342
|
+
private const uint ProcessSetQuota = 0x0100;
|
|
343
|
+
private const uint ProcessQueryLimitedInformation = 0x1000;
|
|
344
|
+
private const uint JobObjectLimitKillOnJobClose = 0x00002000;
|
|
345
|
+
private const uint WaitObject0 = 0;
|
|
346
|
+
|
|
347
|
+
private static void Require(bool result, string operation) {
|
|
348
|
+
if (!result) throw new InvalidOperationException(
|
|
349
|
+
operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
private static void PublishReady() {
|
|
353
|
+
Console.Out.WriteLine("READY");
|
|
354
|
+
Console.Out.Flush();
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
public static void Run(uint targetPid, uint ownerPid, string jobName) {
|
|
358
|
+
var job = CreateJobObjectW(IntPtr.Zero, jobName);
|
|
359
|
+
if (job == IntPtr.Zero) throw new InvalidOperationException(
|
|
360
|
+
"CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
361
|
+
var processAccess = Synchronize | ProcessTerminate | ProcessSetQuota | ProcessQueryLimitedInformation;
|
|
362
|
+
var target = OpenProcess(processAccess, false, targetPid);
|
|
363
|
+
var owner = OpenProcess(Synchronize, false, ownerPid);
|
|
364
|
+
if (target == IntPtr.Zero || owner == IntPtr.Zero) {
|
|
365
|
+
if (target != IntPtr.Zero) CloseHandle(target);
|
|
366
|
+
if (owner != IntPtr.Zero) CloseHandle(owner);
|
|
367
|
+
CloseHandle(job);
|
|
368
|
+
throw new InvalidOperationException(
|
|
369
|
+
"OpenProcess failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
370
|
+
}
|
|
371
|
+
try {
|
|
372
|
+
var limits = new ExtendedLimitInformation();
|
|
373
|
+
limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
|
|
374
|
+
Require(SetInformationJobObject(
|
|
375
|
+
job,
|
|
376
|
+
9,
|
|
377
|
+
ref limits,
|
|
378
|
+
(uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
|
|
379
|
+
"SetInformationJobObject");
|
|
380
|
+
Require(AssignProcessToJobObject(job, target), "AssignProcessToJobObject");
|
|
381
|
+
PublishReady();
|
|
382
|
+
|
|
383
|
+
uint targetExitCode = 1;
|
|
384
|
+
while (true) {
|
|
385
|
+
if (WaitForSingleObject(owner, 0) == WaitObject0) break;
|
|
386
|
+
if (WaitForSingleObject(target, 0) == WaitObject0) {
|
|
387
|
+
GetExitCodeProcess(target, out targetExitCode);
|
|
388
|
+
break;
|
|
389
|
+
}
|
|
390
|
+
Thread.Sleep(20);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
Require(TerminateJobObject(job, targetExitCode), "TerminateJobObject");
|
|
394
|
+
while (true) {
|
|
395
|
+
BasicAccountingInformation accounting;
|
|
396
|
+
Require(QueryInformationJobObject(
|
|
397
|
+
job,
|
|
398
|
+
1,
|
|
399
|
+
out accounting,
|
|
400
|
+
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
|
|
401
|
+
IntPtr.Zero),
|
|
402
|
+
"QueryInformationJobObject");
|
|
403
|
+
if (accounting.ActiveProcesses == 0) return;
|
|
404
|
+
Thread.Sleep(10);
|
|
405
|
+
}
|
|
406
|
+
} finally {
|
|
407
|
+
CloseHandle(owner);
|
|
408
|
+
CloseHandle(target);
|
|
409
|
+
CloseHandle(job);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}`,ou=String.raw`
|
|
413
|
+
$ErrorActionPreference = 'Stop'
|
|
414
|
+
try {
|
|
415
|
+
$payload = [Text.Encoding]::UTF8.GetString(
|
|
416
|
+
[Convert]::FromBase64String($env:${go})) | ConvertFrom-Json
|
|
417
|
+
Remove-Item Env:${go} -ErrorAction SilentlyContinue
|
|
418
|
+
$source = @'
|
|
419
|
+
${iu}
|
|
420
|
+
'@
|
|
421
|
+
Add-Type -TypeDefinition $source
|
|
422
|
+
[KodaXEffectJob]::Run(
|
|
423
|
+
[uint32]$payload.targetPid,
|
|
424
|
+
[uint32]$payload.ownerPid,
|
|
425
|
+
[string]$payload.jobName)
|
|
426
|
+
exit 0
|
|
427
|
+
} catch {
|
|
428
|
+
[Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
|
|
429
|
+
[Console]::Out.Flush()
|
|
430
|
+
exit 1
|
|
431
|
+
}`,uC=Buffer.from(ou,"utf16le").toString("base64");import{Jimp as OC}from"jimp";var mu=Math.floor(3.75*1024*1024);var gu=1440*60*1e3;import{fileURLToPath as Xu}from"url";import{dirname as Wu}from"path";var Hu=Xu(import.meta.url),FR=Wu(Hu);import{readFile as Ju,readdir as Yu}from"fs/promises";import{join as xe,relative as Qu}from"path";import Co from"yaml";var zu=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function qu(e){let t=e.split(`
|
|
432
|
+
`),n=[];for(let r of t){let o=r.indexOf(":");if(o>0){let s=r.slice(0,o).trim(),a=r.slice(o+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
|
|
433
|
+
`)}i(qu,"sanitizeYaml");function To(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
|
|
255
434
|
`).replace(/\r/g,`
|
|
256
435
|
`).trimStart();if(!n.startsWith(`---
|
|
257
436
|
`)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
|
|
258
437
|
---
|
|
259
438
|
`,4);if(r===-1){let c=n.indexOf(`
|
|
260
|
-
---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let
|
|
261
|
-
`)}
|
|
439
|
+
---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let o=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=Co.parse(o)??{}}catch{a=Co.parse(qu(o))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}i(To,"parseYamlFrontmatter");function Ro(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}i(Ro,"normalizeAllowedToolsString");function Vu(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}i(Vu,"normalizeYamlHookEntry");function Gu(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>Vu(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}i(Gu,"normalizeYamlHookEntryList");function _o(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of zu){let o=Gu(t[r]);o&&(n[r]=o)}return Object.keys(n).length>0?n:void 0}i(_o,"normalizeYamlHookMap");function Ao(e){let[t,n]=To(e,{throwOnMissing:!0});if(!t)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!t.name||typeof t.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!t.description||typeof t.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:t.name,description:t.description,disableModelInvocation:t["disable-model-invocation"]===!0,userInvocable:t["user-invocable"]!==!1,allowedTools:Ro(t["allowed-tools"]),context:t.context==="fork"?"fork":void 0,agent:typeof t.agent=="string"?t.agent:void 0,argumentHint:typeof t["argument-hint"]=="string"?t["argument-hint"]:void 0,model:typeof t.model=="string"?t.model:void 0,hooks:_o(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}i(Ao,"parseSkillMarkdown");async function Kt(e,t){let n=xe(e,"SKILL.md");try{let r=await Ju(n,"utf-8"),{frontmatter:o,body:s}=Ao(r),[a,c,d,l,u]=await Promise.all([$e(xe(e,"scripts")),$e(xe(e,"references")),$e(xe(e,"assets")),$e(xe(e,"templates")),$e(xe(e,"resources"))]);return{...o,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}i(Kt,"loadFullSkill");async function $e(e,t=e){let n=[];try{let r=await Yu(e,{withFileTypes:!0});r.sort((o,s)=>o.name.localeCompare(s.name));for(let o of r){let s=xe(e,o.name);if(o.isDirectory()){n.push(...await $e(s,t));continue}o.isFile()&&n.push({name:o.name,path:s,relativePath:Qu(t,s).replace(/\\/g,"/")})}}catch{}return n}i($e,"loadSkillFiles");var Po=64*1024,Mo=256*1024;var R_=1024*1024;var oA=16*1024;var mA=16*1024;import{execSync as Df}from"child_process";import $f from"path";var Ff=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function qo(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Ff)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let o=t.split(/\s+/);if(o.includes("-f")||o.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let o=t.split(/\s+/).slice(1);if(o.length>0&&!o.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}i(qo,"isSingleSafeDynamicContextCommand");function jf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&$f.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return qo(r[0]);for(let o of r){let s=o?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!qo(s))return!1}return!0}i(jf,"isSafeDynamicContextCommand");function Vo(e){let t=[],n="",r=!1,o="";for(let s=0;s<e.length;s++){let a=e[s];r?a===o?r=!1:n+=a:a==='"'||a==="'"?(r=!0,o=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}i(Vo,"parseArguments");var Wt=class{static{i(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,o=Vo(n);return r=this.resolvePositionalArgs(r,o),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,o)=>{let s=parseInt(o,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,o)=>n[o]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],o;for(;(o=n.exec(t))!==null;)r.push({match:o[0],command:o[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!jf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return Df(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};async function ct(e,t,n){return new Wt(n).resolve(e,t)}i(ct,"resolveSkillContent");function Go(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}i(Go,"escapeXml");var zn=120;function Ht(e){return e.replace(/\\/g,"/")}i(Ht,"formatDisplayPath");function Uf(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))]}i(Uf,"collectSupportFiles");function Xf(e){let t=Uf(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[o,s]of n)s?.length&&r.push(`- ${o}/: ${Ht(`${e.path}/${o}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:o,file:s}of t.slice(0,zn))r.push(`- ${o}/${s.relativePath}: ${Ht(s.path)}`);return t.length>zn&&r.push(`- ... ${t.length-zn} more files under ${Ht(e.path)}`),r}i(Xf,"buildSupportFileContext");function Wf(e,t,n){let r=[];r.push(`<skill name="${Go(e.name)}" location="${Go(e.path)}">`),r.push(""),r.push(`Skill root: ${Ht(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let o=Xf(e);return o.length>0&&(r.push(...o),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
|
|
440
|
+
`)}i(Wf,"buildSkillBlock");async function qn(e,t,n){let r=await ct(e.content,t,n);return{content:Wf(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}i(qn,"expandSkillForLLM");import{writeFile as es}from"node:fs/promises";import he from"node:path";import{existsSync as Hf}from"node:fs";import{mkdir as zf,readFile as Vn,readdir as qf,stat as Yo,writeFile as fP}from"node:fs/promises";import Vf from"node:os";import re from"node:path";import{fileURLToPath as Qo,pathToFileURL as Gf}from"node:url";import Jf from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(Qo(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(Hf(n))return Fe=await import(Gf(n).href),Fe;t.push(`relative SDK path not found: ${n}`);try{return Fe=await import(["@kodax-ai","kodax"].join("/")),Fe}catch(r){t.push(`bare-name @kodax-ai/kodax failed: ${r?.code??r?.message}`)}throw new Error(`Cannot locate KodaX SDK from helper script ${import.meta.url}.
|
|
262
441
|
Attempted:
|
|
263
442
|
- ${t.join(`
|
|
264
|
-
- `)}`)}
|
|
443
|
+
- `)}`)}i(me,"loadKodaXSDK");function Yf(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
|
|
265
444
|
`).replace(/\r/g,`
|
|
266
445
|
`).trimStart();if(!t.startsWith(`---
|
|
267
446
|
`))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
|
|
268
447
|
---
|
|
269
|
-
`,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}
|
|
448
|
+
`,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}i(Yf,"extractFrontmatter");function zt(e){let{yamlText:t,body:n}=Yf(e),r=Jf.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}i(zt,"parseSkillMarkdown");async function lt(e){let t=re.join(e,"SKILL.md");if(!(await Yo(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Vn(t,"utf8"),{frontmatter:o,body:s}=zt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:o}}i(lt,"loadSkill");async function ut(e){try{return await Yo(e),!0}catch{return!1}}i(ut,"pathExists");function qt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,o)=>r+o,0)/e.length,n=e.length>1?e.reduce((r,o)=>r+(o-t)**2,0)/(e.length-1):0;return{mean:dt(t),stddev:dt(Math.sqrt(n)),min:dt(Math.min(...e)),max:dt(Math.max(...e))}}i(qt,"calculateStats");function dt(e,t=4){return Number(e.toFixed(t))}i(dt,"roundNumber");function Vt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}i(Vt,"formatDelta");function Jo(e){try{return JSON.parse(e)}catch{return null}}i(Jo,"safeJsonParse");function je(e){let t=Jo(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Jo(e.slice(n,r+1))}i(je,"extractJsonObject");async function J(e,t=null){try{return JSON.parse(await Vn(e,"utf8"))}catch{return t}}i(J,"readJsonFile");async function Ke(e,t){let n=re.dirname(Qo(e));return Vn(re.resolve(n,t),"utf8")}i(Ke,"loadRelativeText");function $(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
|
|
270
449
|
|
|
271
|
-
[truncated ${r} chars]`}
|
|
450
|
+
[truncated ${r} chars]`}i($,"truncateText");function Zo(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(o=>o?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?dt(n/t):0}}i(Zo,"computePassSummary");async function Gn(e,t=e,n=[]){let r=await qf(t,{withFileTypes:!0}).catch(()=>[]);for(let o of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,o.name);if(o.isDirectory()){await Gn(e,s,n);continue}o.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}i(Gn,"collectFiles");function ft(){return re.join(Vf.homedir(),".kodax","skills")}i(ft,"getDefaultSkillsDir");async function F(e){return await zf(e,{recursive:!0}),e}i(F,"ensureDirectory");function Qf(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}i(Qf,"titleFromSlug");function Zf(e,t){let n=Qf(e);return`---
|
|
272
451
|
name: ${e}
|
|
273
452
|
description: ${t}
|
|
274
453
|
user-invocable: true
|
|
@@ -297,28 +476,28 @@ Describe the task this skill handles, the trigger boundary, and the expected out
|
|
|
297
476
|
- Put deeper guidance in \`references/\`.
|
|
298
477
|
- Put reusable templates or static files in \`assets/\`.
|
|
299
478
|
- Put repeatable helper scripts in \`scripts/\`.
|
|
300
|
-
`}
|
|
301
|
-
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}
|
|
479
|
+
`}i(Zf,"renderSkillTemplate");function ep(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}i(ep,"renderEvalTemplate");async function tp(e){let t=he.resolve(e.baseDir??ft()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await es(he.join(n,"SKILL.md"),Zf(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await es(he.join(n,"evals","evals.json"),`${ep(e.name)}
|
|
480
|
+
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}i(tp,"initSkill");function np(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}i(np,"parseArgs");async function ts(e=process.argv){let t=np(e);t.name||(console.error("Usage: node scripts/init-skill.js <skill-name> [--path <skills-dir>] [--description <text>] [--force] [--no-evals]"),process.exit(1));let n=await tp(t);console.log(`Initialized ${n.skillDir}`)}i(ts,"main");var rp=!1;rp&&ts().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import ns from"node:path";var ip=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function pt(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await lt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:o}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!ip.has(d));s.length>0&&t.errors.push(`Unexpected frontmatter keys: ${s.sort().join(", ")}`);let a=typeof r.name=="string"?r.name.trim():"",c=typeof r.description=="string"?r.description.trim():"";if(!a)t.errors.push("Missing required frontmatter field: name");else{/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a)||t.errors.push(`Invalid skill name "${a}". Use lowercase kebab-case and avoid consecutive hyphens.`),a.length>64&&t.errors.push(`Skill name is too long (${a.length}/64).`);let d=ns.basename(ns.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),o.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(u=>typeof u=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}i(pt,"validateSkillDirectory");async function rs(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await pt(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}i(rs,"main");var op=!1;op&&rs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Jn,writeFile as ie}from"node:fs/promises";import C from"node:path";function sp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}i(sp,"normalizeAssertion");function ap(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}i(ap,"countToolCalls");function cp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}i(cp,"countToolErrors");function dp(e,t){return`${["# Skill Eval Transcript","","## Eval Prompt","",e,"","## Final Response","",t.lastText||"(No final text)","","## Result Flags","",`- success: ${t.success}`,`- signal: ${t.signal??"none"}`,`- interrupted: ${t.interrupted===!0}`,`- limit_reached: ${t.limitReached===!0}`].join(`
|
|
302
481
|
`)}
|
|
303
|
-
`}
|
|
482
|
+
`}i(dp,"renderTranscript");async function lp(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),o=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,l=a;try{d=await Jn(a,"utf8")}catch{d=await Jn(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);o.push(`### ${s}
|
|
304
483
|
\`\`\`
|
|
305
484
|
${d}
|
|
306
485
|
\`\`\`
|
|
307
|
-
(Resolved from ${
|
|
486
|
+
(Resolved from ${l})`)}return o.length===0?"":`## Input Files
|
|
308
487
|
|
|
309
|
-
${
|
|
488
|
+
${o.join(`
|
|
310
489
|
|
|
311
490
|
`)}
|
|
312
491
|
|
|
313
|
-
`}
|
|
314
|
-
`,"utf8"),await
|
|
315
|
-
`,"utf8"),await
|
|
316
|
-
`,"utf8"),await
|
|
317
|
-
`,"utf8"),await
|
|
318
|
-
`,"utf8"),await
|
|
319
|
-
`,"utf8")}
|
|
320
|
-
`,"utf8");let m=await
|
|
321
|
-
`;t.output?(await
|
|
492
|
+
`}i(lp,"readInputFiles");async function up(e,t){let n=String(e.prompt??e.query??"").trim();return`${await lp(e.files,t)}${n}`.trim()}i(up,"buildEvalPrompt");async function fp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),o=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-o}}i(fp,"defaultRunAgent");async function pp(e,t,n,r){return e==="with_skill"?(await qn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}i(pp,"prepareConfigPrompt");async function mp(e,t,n,r,o){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:ap(o.result.messages),errors_encountered:cp(o.result.messages),output_chars:o.result.lastText.length};await ie(C.join(s,"result.md"),`${o.result.lastText}
|
|
493
|
+
`,"utf8"),await ie(C.join(s,"prompt.txt"),`${r}
|
|
494
|
+
`,"utf8"),await ie(C.join(e,"transcript.md"),dp(r,o.result),"utf8"),await ie(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:o.result.sessionId,...a},null,2)}
|
|
495
|
+
`,"utf8"),await ie(C.join(s,"messages.json"),`${JSON.stringify(o.result.messages,null,2)}
|
|
496
|
+
`,"utf8"),await ie(C.join(e,"timing.json"),`${JSON.stringify({total_tokens:o.totalTokens,duration_ms:o.durationMs,total_duration_seconds:Number((o.durationMs/1e3).toFixed(4))},null,2)}
|
|
497
|
+
`,"utf8"),await ie(C.join(e,"result.json"),`${JSON.stringify({success:o.result.success,signal:o.result.signal??null,signal_reason:o.result.signalReason??null,interrupted:o.result.interrupted===!0,limit_reached:o.result.limitReached===!0,session_id:o.result.sessionId,execution_metrics:a},null,2)}
|
|
498
|
+
`,"utf8")}i(mp,"writeRunArtifacts");async function hp(e,t=fp){let n=await Kt(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let o=JSON.parse(await Jn(e.evalsPath,"utf8")),s=Array.isArray(o.evals)?o.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=C.join(r,`eval-${l}`);await F(f),await ie(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(sp).filter(Boolean)},null,2)}
|
|
499
|
+
`,"utf8");let m=await up(u,e),p={};for(let g of a){let v=C.join(f,g);await F(v),p[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await pp(g,n,m,e),b=await t(h,{...e,configName:g,evalItem:u,runIndex:w});await mp(y,g,u,h,b),p[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:u.id??l,prompt:u.prompt??u.query??"",configs:p})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}i(hp,"runEvalWorkspace");function gp(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}i(gp,"parseArgs");async function is(e=process.argv){let t=gp(e);(!t.skillPath||!t.evalsPath||!t.workspaceDir)&&(console.error("Usage: node scripts/run-eval.js --skill-path <dir> --evals <evals.json> --workspace <dir> [--provider anthropic] [--runs 1]"),process.exit(1));let n=await hp(t),r=`${JSON.stringify(n,null,2)}
|
|
500
|
+
`;t.output?(await ie(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}i(is,"main");var yp=!1;yp&&is().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as wp,readFile as Yn,writeFile as ss}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}i(Ee,"normalizeExpectationText");function as(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(o=>typeof o=="string"?Ee(o):o&&typeof o=="object"&&typeof o.text=="string"?Ee(o.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}i(as,"normalizeExpectedRubric");function Qn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Qn,"normalizeStringArray");function os(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}i(os,"normalizeExpectationEntry");function vp(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],o=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){o.push({text:a,passed:!1,evidence:""});continue}s.add(c),o.push(os(r[c],a))}if(t.length===0)for(let a of r){let c=os(a,"");c.text&&o.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:o,user_notes_summary:{uncertainties:Qn(n.user_notes_summary?.uncertainties),needs_review:Qn(n.user_notes_summary?.needs_review),workarounds:Qn(n.user_notes_summary?.workarounds)}}}i(vp,"normalizeParsedGrading");async function Zn(e){return(await wp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(Zn,"listDirectories");async function bp(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),o=T.basename(e),s=T.join(e,"outputs"),a=await J(T.join(n,"eval_metadata.json"),{}),c=await Yn(T.join(s,"result.md"),"utf8").catch(()=>""),d=await Yn(T.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await Yn(T.join(e,"transcript.md"),"utf8").catch(()=>""),u=await J(T.join(s,"metrics.json"),{}),f=await J(T.join(e,"result.json"),{}),m=await J(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:o,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:m}}i(bp,"loadRunContext");function kp(e){let t=as(e.evalMetadata),n=t.length>0?t.map((r,o)=>`${o+1}. ${r}`).join(`
|
|
322
501
|
`):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
|
|
323
502
|
|
|
324
503
|
Return JSON with this shape:
|
|
@@ -345,16 +524,16 @@ Return JSON with this shape:
|
|
|
345
524
|
- run_id: ${e.runId}
|
|
346
525
|
|
|
347
526
|
## Eval Prompt
|
|
348
|
-
${
|
|
527
|
+
${$(e.evalMetadata.prompt??e.promptText,4e3)}
|
|
349
528
|
|
|
350
529
|
## Expected Outcome
|
|
351
|
-
${
|
|
530
|
+
${$(e.evalMetadata.expected_output??"",2e3)}
|
|
352
531
|
|
|
353
532
|
## Assertions
|
|
354
533
|
${n}
|
|
355
534
|
|
|
356
535
|
## Final Output
|
|
357
|
-
${
|
|
536
|
+
${$(e.resultText,12e3)}
|
|
358
537
|
|
|
359
538
|
## Result Flags
|
|
360
539
|
${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)}
|
|
@@ -363,13 +542,13 @@ ${JSON.stringify({success:e.result.success??null,signal:e.result.signal??null,in
|
|
|
363
542
|
${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)}
|
|
364
543
|
|
|
365
544
|
## Transcript Excerpt
|
|
366
|
-
${
|
|
367
|
-
`}
|
|
368
|
-
`,"utf8"),{runDir:r.runDir,grading:
|
|
369
|
-
`,"utf8"),a}
|
|
370
|
-
`)}
|
|
371
|
-
`)}
|
|
372
|
-
`),console.log(`Wrote ${
|
|
545
|
+
${$(e.transcript,5e3)}
|
|
546
|
+
`}i(kp,"buildGradingPrompt");async function cs(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(cs,"defaultRunJudge");async function xp(e,t,n=cs){let r=await bp(T.resolve(e)),o=as(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=kp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=vp(c,o),l={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},u={summary:Zo(d.expectations),expectations:d.expectations,execution_metrics:l,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await ss(T.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
|
|
547
|
+
`,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}i(xp,"gradeRun");async function Sp(e,t=cs){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),o=[],s=[];for(let c of await Zn(n))if(T.basename(c).startsWith("eval-"))for(let d of await Zn(c)){let l=T.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await Zn(d)){if(!T.basename(u).startsWith("run-"))continue;let f=T.join(u,"grading.json");if(await J(f,null)&&e.overwrite!==!0){s.push(T.relative(n,u).replace(/\\/g,"/"));continue}let p=await xp(u,e,t);o.push({run:T.relative(n,u).replace(/\\/g,"/"),summary:p.grading.summary,config:p.grading.meta.config,eval_id:p.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:o.length,skipped:s.length,processed_runs:o,skipped_runs:s};return await ss(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
|
|
548
|
+
`,"utf8"),a}i(Sp,"gradeWorkspace");function Ep(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean))}return t}i(Ep,"parseArgs");async function ds(e=process.argv){let t=Ep(e);t.workspaceDir||(console.error("Usage: node scripts/grade-evals.js <workspace> [--provider anthropic] [--configs with_skill,without_skill] [--overwrite]"),process.exit(1));let n=await Sp(t);process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
549
|
+
`)}i(ds,"main");var Ip=!1;Ip&&ds().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as rr}from"node:fs/promises";import oe from"node:path";import{readFile as Cp,readdir as Tp,stat as Rp,writeFile as ls}from"node:fs/promises";import j from"node:path";async function er(e){return JSON.parse(await Cp(e,"utf8"))}i(er,"readJson");async function _p(e){try{return await Rp(e),!0}catch{return!1}}i(_p,"pathExists");async function tr(e){return(await Tp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(tr,"listDirectories");async function Gt(e){let t=await _p(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await tr(t)).filter(o=>j.basename(o).startsWith("eval-")),r={};for(let o of n){let s=j.join(o,"eval_metadata.json"),c=(await er(s).catch(()=>({}))).eval_id??j.basename(o);for(let d of await tr(o)){let l=j.basename(d),u=(await tr(d)).filter(f=>j.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){let m=await er(j.join(f,"grading.json")).catch(()=>null);if(!m)continue;let p=await er(j.join(f,"timing.json")).catch(()=>({}));r[l].push({eval_id:c,run_id:j.basename(f),pass_rate:m.summary?.pass_rate??0,passed:m.summary?.passed??0,failed:m.summary?.failed??0,total:m.summary?.total??0,time_seconds:p.total_duration_seconds??m.timing?.total_duration_seconds??0,tokens:p.total_tokens??m.execution_metrics?.output_chars??0,tool_calls:m.execution_metrics?.total_tool_calls??0,errors:m.execution_metrics?.errors_encountered??0,expectations:Array.isArray(m.expectations)?m.expectations:[],notes:[...m.user_notes_summary?.uncertainties??[],...m.user_notes_summary?.needs_review??[],...m.user_notes_summary?.workarounds??[]]})}}}}return r}i(Gt,"loadRunResults");function Ap(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:qt(a.map(c=>Number(c.pass_rate??0))),time_seconds:qt(a.map(c=>Number(c.time_seconds??0))),tokens:qt(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},o=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Vt(r.pass_rate.mean-o.pass_rate.mean),time_seconds:Vt(r.time_seconds.mean-o.time_seconds.mean),tokens:Vt(r.tokens.mean-o.tokens.mean)}}}i(Ap,"summarizeConfigs");function nr(e,t,n){let r=Ap(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}i(nr,"buildBenchmarkDocument");function Pp(e){let t=[`# Benchmark: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"","| Config | Pass Rate | Time (s) | Tokens |","| --- | --- | --- | --- |"];for(let[n,r]of Object.entries(e.configs))t.push(`| ${n} | ${r.pass_rate.mean} \xB1 ${r.pass_rate.stddev} | ${r.time_seconds.mean} \xB1 ${r.time_seconds.stddev} | ${r.tokens.mean} \xB1 ${r.tokens.stddev} |`);return t.push(""),t.push("## Delta"),t.push(""),t.push(`- Pass rate: ${e.delta.pass_rate}`),t.push(`- Time (s): ${e.delta.time_seconds}`),t.push(`- Tokens: ${e.delta.tokens}`),t.join(`
|
|
550
|
+
`)}i(Pp,"renderBenchmarkMarkdown");function Mp(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}i(Mp,"parseArgs");async function Op(){let{iterationDir:e,skillName:t}=Mp(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Gt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=nr(e,t,n),o=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await ls(o,JSON.stringify(r,null,2)),await ls(s,`${Pp(r)}
|
|
551
|
+
`),console.log(`Wrote ${o}`),console.log(`Wrote ${s}`)}i(Op,"main");var Np=!1;Np&&Op().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Jt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Jt,"normalizeStringArray");function Lp(e){let t={};for(let[n,r]of Object.entries(e)){let o=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&o.set(d,(o.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(o.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}i(Lp,"summarizeFailureClusters");function Dp(e,t,n){let r=je(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Jt(r.key_findings),variance_hotspots:Jt(r.variance_hotspots),suggested_actions:Jt(r.suggested_actions),watchouts:Jt(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}i(Dp,"normalizeAnalysisResult");function $p(e){return`${e.agentInstructions.trim()}
|
|
373
552
|
|
|
374
553
|
Return JSON with this shape:
|
|
375
554
|
{
|
|
@@ -383,16 +562,16 @@ Return JSON with this shape:
|
|
|
383
562
|
}
|
|
384
563
|
|
|
385
564
|
## Benchmark Summary
|
|
386
|
-
${
|
|
565
|
+
${$(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.configs,delta:e.benchmark.delta},null,2),12e3)}
|
|
387
566
|
|
|
388
567
|
## Failure Clusters
|
|
389
|
-
${
|
|
390
|
-
`}
|
|
568
|
+
${$(JSON.stringify(e.failureClusters,null,2),8e3)}
|
|
569
|
+
`}i($p,"buildAnalysisPrompt");async function Fp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:oe.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(Fp,"defaultRunAnalyst");function jp(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,o]of n){t.push(`## ${o}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
|
|
391
570
|
`)}
|
|
392
|
-
`}
|
|
393
|
-
`,"utf8")}let s=await Gt(n),a=
|
|
394
|
-
`,"utf8"),await rr(m,
|
|
395
|
-
`)}
|
|
571
|
+
`}i(jp,"renderAnalysisMarkdown");async function Kp(e,t=Fp){let n=oe.resolve(e.workspaceDir),r=oe.resolve(e.benchmarkPath??oe.join(n,"benchmark.json")),o=await J(r,null);if(!o){let p=await Gt(n);if(Object.keys(p).length===0)throw new Error(`No benchmark data found in ${n}`);o=nr(n,e.skillName??oe.basename(n),p),await rr(r,`${JSON.stringify(o,null,2)}
|
|
572
|
+
`,"utf8")}let s=await Gt(n),a=Lp(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=$p({agentInstructions:c,benchmark:o,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:o}),u=Dp(l,o,a),f=oe.resolve(e.outputPath??oe.join(n,"analysis.json")),m=oe.resolve(e.markdownPath??oe.join(n,"analysis.md"));return await rr(f,`${JSON.stringify(u,null,2)}
|
|
573
|
+
`,"utf8"),await rr(m,jp(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:m}}i(Kp,"analyzeBenchmark");function Bp(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(Bp,"parseArgs");async function us(e=process.argv){let t=Bp(e);t.workspaceDir||(console.error("Usage: node scripts/analyze-benchmark.js <workspace> [--benchmark benchmark.json] [--output analysis.json] [--markdown analysis.md]"),process.exit(1));let n=await Kp(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
|
|
574
|
+
`)}i(us,"main");var Up=!1;Up&&us().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Xp,readFile as fs,writeFile as ps}from"node:fs/promises";import O from"node:path";async function or(e){return(await Xp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(or,"listDirectories");function ir(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(ir,"normalizeStringArray");function Wp(e){let t=je(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:ir(t.strengths_a),strengths_b:ir(t.strengths_b),risks:ir(t.risks)}}i(Wp,"normalizeComparisonResult");async function Hp(e,t,n,r){let o=(await or(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await or(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=o[r],c=s[r];if(!a||!c)return null;let d=await J(O.join(e,"eval_metadata.json"),{}),l=await fs(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await fs(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:l},runB:{runDir:c,runId:O.basename(c),configName:n,output:u}}}i(Hp,"loadComparisonPair");function zp(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
|
|
396
575
|
|
|
397
576
|
Return JSON with this shape:
|
|
398
577
|
{
|
|
@@ -407,28 +586,28 @@ Return JSON with this shape:
|
|
|
407
586
|
Judge only the visible outputs. Do not mention hidden config names in the rationale.
|
|
408
587
|
|
|
409
588
|
## Eval Prompt
|
|
410
|
-
${
|
|
589
|
+
${$(e.evalMetadata.prompt??"",4e3)}
|
|
411
590
|
|
|
412
591
|
## Expected Outcome
|
|
413
|
-
${
|
|
592
|
+
${$(e.evalMetadata.expected_output??"",2e3)}
|
|
414
593
|
|
|
415
594
|
## Assertions
|
|
416
|
-
${
|
|
595
|
+
${$(JSON.stringify(e.evalMetadata.assertions??[],null,2),4e3)}
|
|
417
596
|
|
|
418
597
|
## Candidate A
|
|
419
|
-
${
|
|
598
|
+
${$(t.A.output,12e3)}
|
|
420
599
|
|
|
421
600
|
## Candidate B
|
|
422
|
-
${
|
|
423
|
-
`}
|
|
601
|
+
${$(t.B.output,12e3)}
|
|
602
|
+
`}i(zp,"buildComparisonPrompt");async function qp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(qp,"defaultRunComparator");function Vp(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}i(Vp,"mapWinnerToConfig");function Gp(e){let t=[`# Blind Comparison: ${e.config_a} vs ${e.config_b}`,"",`Generated: ${e.generated_at}`,"",`- ${e.config_a} wins: ${e.summary.config_a_wins}`,`- ${e.config_b} wins: ${e.summary.config_b_wins}`,`- ties: ${e.summary.ties}`,`- inconclusive: ${e.summary.inconclusive}`,""];for(let n of e.comparisons)t.push(`## Eval ${n.eval_id??n.eval_name??n.index}`),t.push(""),t.push(`- Winner: ${n.winner_config}`),t.push(`- Confidence: ${n.confidence}`),t.push(`- Rationale: ${n.rationale||"n/a"}`),t.push("");return`${t.join(`
|
|
424
603
|
`)}
|
|
425
|
-
`}
|
|
426
|
-
`,"utf8"),await
|
|
427
|
-
`)}
|
|
604
|
+
`}i(Gp,"renderComparisonMarkdown");async function Jp(e,t=qp){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",o=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await or(n))if(O.basename(f).startsWith("eval-"))for(let m=0;m<s;m+=1){let p=await Hp(f,r,o,m);if(!p)break;let g=c.length%2===0,v=zp({agentInstructions:a,evalMetadata:p.evalMetadata,runA:p.runA,runB:p.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:m,configA:r,configB:o}),y=Wp(w),h=Vp(y.winner,g,r,o);c.push({index:c.length+1,eval_id:p.evalMetadata.eval_id??null,eval_name:p.evalMetadata.eval_name??null,run_a:O.relative(n,p.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,p.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:o}:{A:o,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${o} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:o,summary:{total_pairs:c.length,config_a_wins:c.filter(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===o).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=O.resolve(e.outputPath??O.join(n,"comparison.json")),u=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await ps(l,`${JSON.stringify(d,null,2)}
|
|
605
|
+
`,"utf8"),await ps(u,Gp(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}i(Jp,"compareWorkspace");function Yp(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(Yp,"parseArgs");async function ms(e=process.argv){let t=Yp(e);t.workspaceDir||(console.error("Usage: node scripts/compare-runs.js <workspace> [--config-a with_skill] [--config-b without_skill] [--output comparison.json]"),process.exit(1));let n=await Jp(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
|
|
606
|
+
`)}i(ms,"main");var Qp=!1;Qp&&ms().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Zp,writeFile as em}from"node:fs/promises";import{createHash as tm}from"node:crypto";import sr from"node:path";import{zipSync as nm,strToU8 as rm}from"fflate";var im=".kodax-package.json";function om(e){return e instanceof Uint8Array?e:new Uint8Array(e)}i(om,"toUint8Array");function sm(e){return tm("sha256").update(e).digest("hex")}i(sm,"sha256");function am(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}i(am,"createPackageManifest");async function cm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
|
|
428
607
|
- ${n.errors.join(`
|
|
429
|
-
- `)}`);let r=await
|
|
608
|
+
- `)}`);let r=await lt(e),o=await Gn(e),s=[];for(let d of o){if(d.relativePath.endsWith(".skill"))continue;let l=om(await Zp(d.absolutePath));s.push({...d,bytes:l,sha256:sm(l)})}let a=am(r,s,t),c={[im]:rm(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:nm(c,{level:6})}}i(cm,"buildSkillPackage");async function dm(e,t,n={}){let r=await cm(e,n);return await em(t,r.bytes),{...r,outputPath:sr.resolve(t)}}i(dm,"writeSkillPackage");function lm(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}i(lm,"parseArgs");async function hs(e=process.argv){let t=lm(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await lt(t.skillDir),r=t.output??sr.join(sr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),o=await dm(t.skillDir,r);console.log(`Wrote ${o.outputPath}`)}i(hs,"main");var um=!1;um&&hs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as fm,mkdir as ar,readFile as ws,rm as vs,stat as pm,writeFile as mm}from"node:fs/promises";import Y from"node:path";import{strFromU8 as gs,unzipSync as hm}from"fflate";var ys=".kodax-package.json";function gm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}i(gm,"normalizeArchivePath");function ym(e){let t=gm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}i(ym,"assertSafeArchivePath");function wm(e){return/\.(skill|zip)$/i.test(e)}i(wm,"isZipLike");function vm(e){let t=hm(e),n=Object.entries(t).map(([l,u])=>({relativePath:ym(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let o=zt(gs(r.bytes)),s=typeof o.frontmatter.name=="string"?o.frontmatter.name.trim():"",a=typeof o.frontmatter.description=="string"?o.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(l=>l.relativePath===ys),d=c?JSON.parse(gs(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==ys)}}i(vm,"readSkillPackageBuffer");async function bm(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await vs(e,{recursive:!0,force:!0})}await ar(e,{recursive:!0})}i(bm,"ensureInstallTarget");async function km(e,t={}){let n=Y.resolve(t.skillsDir??ft()),r=vm(await ws(e)),o=Y.join(n,r.skillName);await bm(o,t.force===!0);for(let s of r.entries){let a=Y.join(o,s.relativePath);await ar(Y.dirname(a),{recursive:!0}),await mm(a,s.bytes)}return{skillName:r.skillName,installedTo:o,source:Y.resolve(e),manifest:r.manifest}}i(km,"installSkillArchive");async function xm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
|
|
430
609
|
- ${n.errors.join(`
|
|
431
|
-
- `)}`);let r=
|
|
610
|
+
- `)}`);let r=Y.join(e,"SKILL.md"),o=zt(await ws(r,"utf8")),s=Y.resolve(t.skillsDir??ft()),a=Y.join(s,o.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await vs(a,{recursive:!0,force:!0})}return await ar(s,{recursive:!0}),await fm(e,a,{recursive:!0}),{skillName:o.frontmatter.name,installedTo:a,source:Y.resolve(e),manifest:null}}i(xm,"installSkillDirectory");async function Sm(e,t={}){let n=Y.resolve(e),r=await pm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return xm(n,t);if(r.isFile()&&wm(n))return km(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}i(Sm,"installSkill");function Em(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}i(Em,"parseArgs");async function bs(e=process.argv){let t=Em(e);t.input||(console.error("Usage: node scripts/install-skill.js <skill-dir-or-archive> [--dest <skills-dir>] [--force]"),process.exit(1));let n=await Sm(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}i(bs,"main");var Im=!1;Im&&bs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var xM=1440*60*1e3;var _M=5*6e4;var bO=new Intl.Segmenter("zh-CN",{granularity:"word"});var SN=String.raw`const TOOL_NAME = 'echo_tool';
|
|
432
611
|
const RESOURCE_URI = 'memory://guide';
|
|
433
612
|
const PROMPT_NAME = 'draft_prompt';
|
|
434
613
|
let buffer = '';
|
|
@@ -608,14 +787,14 @@ process.stdin.on('data', (chunk) => {
|
|
|
608
787
|
|
|
609
788
|
process.on('SIGTERM', () => process.exit(0));
|
|
610
789
|
process.on('SIGINT', () => process.exit(0));
|
|
611
|
-
`;var
|
|
612
|
-
|
|
613
|
-
`;var
|
|
614
|
-
`),a=(s>=0?
|
|
615
|
-
`))if(r.trim())try{let
|
|
616
|
-
`,"utf8"),await R.rename(t,fr(e))}
|
|
617
|
-
`),
|
|
618
|
-
`).length,i={width:n,height:r};return Bs.set(e,i),i},"measureText"),wr=tg;import ng from"wrap-ansi";import rg from"cli-truncate";var Xs={},og=o((e,t,n)=>{let r=e+String(t)+String(n),i=Xs[r];if(i)return i;let s=e;if(n==="wrap"&&(s=ng(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=rg(e,t,{position:a})}return Xs[r]=s,s},"wrapText"),nn=og;var ig=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),sg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),ag=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Hs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),cg=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),zs=o(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Us=o((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!ig(c))break;n++}let r=e.slice(t,n),i=n;for(;n<e.length;){let c=e[n];if(!sg(c))break;n++}let s=e.slice(i,n),a=e[n];if(!(a===void 0||!ag(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Ws=o((e,t,n)=>{for(let r=t;r<e.length;r++){let i=e[r];if(n&&i==="\x07"||i==="\x9C")return r+1;if(i==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),dg=o((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Hs(s))break;n++}let r=e.slice(t,n),i=e[n];if(!(i===void 0||!cg(i)))return{endIndex:n+1,intermediateString:r,finalCharacter:i}},"readEscapeSequence"),ug=o(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),lg=o(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=o(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(zs(t))return!0;return!1},"hasAnsiControlCharacters"),Ue=o((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),qs=o(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let i=e[r];if(i===void 0)break;if(i==="\x1B"){let a=e[r+1];if(a===void 0)return Ue(t,e,n,r);if(a==="["){let u=Us(e,r+2);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,u.endIndex),parameterString:u.parameterString,intermediateString:u.intermediateString,finalCharacter:u.finalCharacter}),r=u.endIndex,n=r;continue}let c=ug(a);if(c!==void 0){let u=Ws(e,r+2,c.allowBellTerminator);if(u===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,u)}),r=u,n=r;continue}let d=dg(e,r+1);if(d===void 0){if(Hs(a))return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(i==="\x9B"){let a=Us(e,r+1);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=lg(i);if(s!==void 0){let a=Ws(e,r+1,s.allowBellTerminator);if(a===void 0)return Ue(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(i==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:i}),r++,n=r;continue}if(zs(i)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:i}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var fg=/^[\d:;]*$/,pg=o(e=>{if(!vr(e))return e;let t="";for(let n of qs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&fg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Vs=pg;var Gs=o(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let i="";r.nodeName==="#text"?i=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=Gs(r)),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,n))),t+=i}return Vs(t)},"squashTextNodes"),mt=Gs;var rn=o(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:mg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(hg.bind(null,t)),t},"createNode"),on=o((e,t)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=o((e,t,n)=>{t.parentNode&&ht(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),ht=o((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=o((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=o((e,t)=>{e.style=t},"setStyle"),Ys=o(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return gt(t,e),t},"createTextNode"),hg=o(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:mt(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let i=e.style?.textWrap??"wrap",s=nn(n,t,i);return wr(s)},"measureTextNode"),Js=o(e=>{if(e?.parentNode)return e.yogaNode??Js(e.parentNode)},"findClosestYogaNode"),sn=o(e=>{Js(e)?.markDirty()},"markNodeAsDirty"),gt=o((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var yg=o((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),wg=o((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),vg=o((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),bg=o((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),kg=o((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),xg=o((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Sg=o((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),Eg=o((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Ig=o((e,t={})=>{yg(e,t),wg(e,t),vg(e,t),bg(e,t),kg(e,t),xg(e,t),Sg(e,t),Eg(e,t)},"styles"),Sr=Ig;if(tn())try{await Promise.resolve().then(()=>(ra(),Cg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
|
|
790
|
+
`;var Es=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),qm=0,Vm=0,Is=i(e=>{let t=e==="label"?++qm:++Vm,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function Gm(e,t,n){let r=Is("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}i(Gm,"appendLabel");async function Jm(e,t,n){let r=Is("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}i(Jm,"appendArtifact");function Ym(e){let t=[],n=new Map,r=[],o=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),o=a;continue}o?o.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}i(Ym,"buildLineageTree");var Qm=Object.freeze({name:"lineage",entryTypes:Es,operators:Object.freeze({label:i((async(e,...t)=>{let[n,r]=t;return Gm(e,n,r)}),"label"),attachArtifact:i((async(e,...t)=>{let[n,r]=t;return Jm(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:i(e=>Ym(e),"buildLineageTree")})});var ah=new Set(["skill","ask_user_question","exit_plan_mode","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output","tool_search","get_goal","create_goal","update_goal","todo_create","todo_update","todo_list","todo_get","worktree_create","worktree_remove","undo","mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt","repo_overview","changed_scope","changed_diff","changed_diff_bundle","module_context","symbol_context","process_context","impact_estimate","relationship_scan","cyclic_dependencies","semantic_lookup"]),dr=ah,Yt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
|
|
791
|
+
|
|
792
|
+
`;var BL=Yt.trimEnd();var UL=16*1024;var fh={enabled:!1,maxAge:20,protectedTools:Array.from(dr)};import G$ from"typescript";var u1=new Intl.Segmenter("en",{granularity:"grapheme"});var DK=4*1024;var jK=64*1024;var lr=".conversation-cache.",YK=`${lr}json`,QK=1024*1024,ZK=1024*1024,eB=1024*1024,tB=4*1024*1024,nB=128*1024;var Ie=class extends Error{static{i(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function Ms(e){let t=e.lastIndexOf(lr);if(t<=0)return;let n=e.slice(t+lr.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}i(Ms,"cacheArtifactSessionId");async function Os(e){let t=mt.dirname(e),n=mt.basename(e,mt.extname(e)),r;try{r=await Zt.readdir(t)}catch(o){if(o.code==="ENOENT")return;throw o}await Promise.all(r.filter(o=>Ms(o)===n).map(o=>Zt.rm(mt.join(t,o),{force:!0})))}i(Os,"removeConversationPageCache");async function ur(e){let t;try{t=await Zt.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&Ms(n.name)!==void 0).map(n=>Zt.rm(mt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}i(ur,"removeConversationPageCachesInDirectory");var $s=3,Lh=300*1e3,Ns=65536,fr=i(e=>P.join(e,".layout.json"),"layoutMarkerPath"),mr=i(e=>P.join(e,".migration-lock"),"lockDirPath"),Fs=i(e=>P.join(mr(e),"owner.json"),"ownerPath"),pr=i(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),hr=i(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function gr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(gr,"isSessionFile");function js(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}i(js,"sidecarId");async function Dh(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe(Ns),{bytesRead:r}=await t.read(n,0,Ns,0);if(r===0)return null;let o=n.toString("utf8",0,r),s=o.indexOf(`
|
|
793
|
+
`),a=(s>=0?o.slice(0,s):o).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}i(Dh,"readMeta");async function $h(e){let t=await Dh(e);return t?gi({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}i($h,"destKeyFor");async function Fh(e){let t=[],n=i(async(r,o)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(gr(a.name)||o&&js(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(hr(e),!0),t}i(Fh,"collectFlatSources");async function jh(e){let t=await Fh(e),n=t.filter(s=>gr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),o=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await $h(s);o.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let l=P.join(P.dirname(s),`${a}${d}`);Ds.existsSync(l)&&o.push({from:l,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=js(P.basename(s));a===null||r.has(a)||o.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return o}i(jh,"planMigration");async function Kh(e){try{let t=JSON.parse(await R.readFile(fr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===$s}catch{return!1}}i(Kh,"isMigrated");async function Ls(e){await ur(e),await ur(hr(e))}i(Ls,"removeLegacyConversationCaches");async function Bh(e){try{let t=JSON.parse(await R.readFile(Fs(e),"utf8"));if(typeof t.pid=="number"&&t.pid!==process.pid)try{process.kill(t.pid,0)}catch(n){if(n.code==="ESRCH")return!0}return typeof t.heartbeatAt=="number"&&Date.now()-t.heartbeatAt>Lh}catch{return!0}}i(Bh,"lockIsStale");async function Uh(e){let t=mr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Fs(e),JSON.stringify({pid:process.pid,startTime:Date.now(),heartbeatAt:Date.now()})),!0}catch(r){if(r.code!=="EEXIST")return!1;if(n===0&&await Bh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}i(Uh,"acquireLock");async function Xh(e){await R.rm(mr(e),{recursive:!0,force:!0}).catch(()=>{})}i(Xh,"releaseLock");async function Wh(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}i(Wh,"assertNoActiveSessionWriters");async function Hh(e){let t=new Set;try{let n=await R.readFile(pr(e),"utf8");for(let r of n.split(`
|
|
794
|
+
`))if(r.trim())try{let o=JSON.parse(r);o.done&&typeof o.from=="string"&&t.add(o.from)}catch{}}catch{}return t}i(Hh,"readJournalDone");async function zh(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),Ds.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}i(zh,"executeMove");async function qh(e){await R.mkdir(e,{recursive:!0});let t=`${fr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:$s,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
|
|
795
|
+
`,"utf8"),await R.rename(t,fr(e))}i(qh,"writeMarker");async function Vh(e){let t=hr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}i(Vh,"retireSessionsArchive");async function Gh(e){if(!await Uh(e))return{moved:0,planned:0};try{await Wh(e),await Ls(e);let t=await jh(e),n=await Hh(e),r=await R.open(pr(e),"a"),o=0;try{for(let s of t){if(gr(P.basename(s.from)))try{await Os(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await zh(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
|
|
796
|
+
`),o+=1)}}finally{await r.close()}return await Vh(e),await Ls(e),await qh(e),await R.rm(pr(e),{force:!0}).catch(()=>{}),{moved:o,planned:t.length}}finally{await Xh(e)}}i(Gh,"runMigration");async function Ks(e){try{if(await Kh(e))return;await Gh(e)}catch(t){if(t instanceof Ie)throw t}}i(Ks,"ensureLayoutMigrated");import{jsx as Tt,jsxs as Je}from"react/jsx-runtime";import{useMemo as Xw,useRef as Ww,useState as ti}from"react";import{jsx as Tc}from"react/jsx-runtime";import{createContext as Aw,useContext as Yr,useEffect as Ge,useMemo as Cc,useState as Pw,useCallback as Rc,useRef as vn}from"react";import{Stream as sw}from"node:stream";import{openSync as aw,writeSync as hc}from"node:fs";import{performance as cw}from"node:perf_hooks";import{tmpdir as dw}from"node:os";import{join as lw}from"node:path";import yr,{forwardRef as Qh,useContext as Zh}from"react";import{createContext as Jh}from"react";var Be=Jh({isScreenReaderEnabled:!1});import{createContext as Yh}from"react";var en=Yh(void 0);var Bs=Qh(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":o,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=Zh(Be),l=n?yr.createElement("ink-text",null,n):void 0;if(d&&r)return null;let u=yr.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:o,state:s}},d&&l?l:e);return t?yr.createElement(en.Provider,{value:t},u):u});Bs.displayName="Box";var q=Bs;import rg,{useContext as Us}from"react";import Ue from"chalk";import ge from"chalk";var eg=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,tg=/^ansi256\(\s?(\d+)\s?\)$/;function ng(e){return e in ge}i(ng,"isNamedColor");function G(e,t,n){if(!t)return e;if(ng(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let o=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[o]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=tg.exec(t);if(!r)return e;let o=Number(r[1]);return n==="foreground"?ge.ansi256(o)(e):ge.bgAnsi256(o)(e)}if(t.startsWith("rgb")){let r=eg.exec(t);if(!r)return e;let o=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(o,s,a)(e):ge.bgRgb(o,s,a)(e)}return e}i(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:o=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:l,"aria-label":u,"aria-hidden":f=!1,internal_cursorAnchor:m=!1}){let{isScreenReaderEnabled:p}=Us(Be),g=Us(en),v=p&&u?u:l;if(v==null)return null;let w=i(y=>{let h=y;n&&(h=Ue.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Ue.bold(h)),o&&(h=Ue.italic(h)),s&&(h=Ue.underline(h)),a&&(h=Ue.strikethrough(h)),c&&(h=Ue.inverse(h)),h},"transform");return p&&f?null:rg.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...m?{internal_cursorAnchor:!0}:{}},p&&u?u:l)}i(K,"Text");import PB,{useLayoutEffect as MB,useMemo as OB,useState as NB}from"react";import Pe from"node:process";import fc from"react";import{throttle as By}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Uy from"auto-bind";import{onExit as Xy}from"signal-exit";import Wy from"patch-console";import{LegacyRoot as Hy,ConcurrentRoot as zy}from"react-reconciler/constants.js";import qy from"yoga-layout";import Vy from"wrap-ansi";import Gy from"terminal-size";import ig from"node:process";var tn=i(()=>ig.env.DEV==="true","isDev");import Mg from"react-reconciler";import{DefaultEventPriority as Og,NoEventPriority as la}from"react-reconciler/constants.js";import*as ye from"scheduler";import sa from"yoga-layout";import{createContext as Ng}from"react";import vg from"yoga-layout";import og from"widest-line";var Xs=new Map,sg=i(e=>{if(e.length===0)return{width:0,height:0};let t=Xs.get(e);if(t)return t;let n=og(e),r=e.split(`
|
|
797
|
+
`).length,o={width:n,height:r};return Xs.set(e,o),o},"measureText"),wr=sg;import ag from"wrap-ansi";import cg from"cli-truncate";var Ws={},dg=i((e,t,n)=>{let r=e+String(t)+String(n),o=Ws[r];if(o)return o;let s=e;if(n==="wrap"&&(s=ag(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=cg(e,t,{position:a})}return Ws[r]=s,s},"wrapText"),nn=dg;var lg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),ug=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),fg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),qs=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),pg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Vs=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Hs=i((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!lg(c))break;n++}let r=e.slice(t,n),o=n;for(;n<e.length;){let c=e[n];if(!ug(c))break;n++}let s=e.slice(o,n),a=e[n];if(!(a===void 0||!fg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),zs=i((e,t,n)=>{for(let r=t;r<e.length;r++){let o=e[r];if(n&&o==="\x07"||o==="\x9C")return r+1;if(o==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),mg=i((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!qs(s))break;n++}let r=e.slice(t,n),o=e[n];if(!(o===void 0||!pg(o)))return{endIndex:n+1,intermediateString:r,finalCharacter:o}},"readEscapeSequence"),hg=i(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),gg=i(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),vr=i(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Vs(t))return!0;return!1},"hasAnsiControlCharacters"),Xe=i((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),Gs=i(e=>{if(!vr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let o=e[r];if(o===void 0)break;if(o==="\x1B"){let a=e[r+1];if(a===void 0)return Xe(t,e,n,r);if(a==="["){let l=Hs(e,r+2);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=hg(a);if(c!==void 0){let l=zs(e,r+2,c.allowBellTerminator);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let d=mg(e,r+1);if(d===void 0){if(qs(a))return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(o==="\x9B"){let a=Hs(e,r+1);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=gg(o);if(s!==void 0){let a=zs(e,r+1,s.allowBellTerminator);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(o==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:o}),r++,n=r;continue}if(Vs(o)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:o}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var yg=/^[\d:;]*$/,wg=i(e=>{if(!vr(e))return e;let t="";for(let n of Gs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&yg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Js=wg;var Ys=i(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=Ys(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o,n))),t+=o}return Js(t)},"squashTextNodes"),ht=Ys;var rn=i(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:vg.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(bg.bind(null,t)),t},"createNode"),on=i((e,t)=>{t.parentNode&>(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"appendChildNode"),br=i((e,t,n)=>{t.parentNode&>(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"insertBeforeNode"),gt=i((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&sn(e)},"removeChildNode"),kr=i((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),xr=i((e,t)=>{e.style=t},"setStyle"),Qs=i(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return yt(t,e),t},"createTextNode"),bg=i(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:ht(e),r=wr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let o=e.style?.textWrap??"wrap",s=nn(n,t,o);return wr(s)},"measureTextNode"),Zs=i(e=>{if(e?.parentNode)return e.yogaNode??Zs(e.parentNode)},"findClosestYogaNode"),sn=i(e=>{Zs(e)?.markDirty()},"markNodeAsDirty"),yt=i((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,sn(e)},"setTextNodeValue");import k from"yoga-layout";var xg=i((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),Sg=i((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),Eg=i((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),Ig=i((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),Cg=i((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),Tg=i((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Rg=i((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),_g=i((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Ag=i((e,t={})=>{xg(e,t),Sg(e,t),Eg(e,t),Ig(e,t),Cg(e,t),Tg(e,t),Rg(e,t),_g(e,t)},"styles"),Sr=Ag;if(tn())try{await Promise.resolve().then(()=>(oa(),Pg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
|
|
619
798
|
The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
|
|
620
799
|
but this failed as it was not installed. Debugging with React Devtools requires it.
|
|
621
800
|
|
|
@@ -623,33 +802,33 @@ To install use this command:
|
|
|
623
802
|
|
|
624
803
|
$ npm install --save-dev react-devtools-core
|
|
625
804
|
`.trim()+`
|
|
626
|
-
`);else throw e}var
|
|
627
|
-
`).repeat(_);p&&(W=
|
|
628
|
-
`).repeat(_);g&&(H=
|
|
629
|
-
`.repeat(
|
|
630
|
-
`;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>
|
|
631
|
-
`))r=Math.max(r,this.getStringWidth(
|
|
632
|
-
`),
|
|
633
|
-
`),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function
|
|
634
|
-
`).length,g="";return e.staticNode&&(g=
|
|
635
|
-
`:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});
|
|
636
|
-
`:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=
|
|
637
|
-
`)}]}
|
|
638
|
-
`};function kt(e,t,n){let r=t.width===Z.Wide?2:1,i=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<i){let l=t.char.length>2?i:i+1;if(c+2>=l)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let u=r===2&&Oa(t.char);return u&&c+1<i&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),u&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=i?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}o(kt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let i=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:i,dy:s}]:[[{type:"cursorMove",x:i,y:s}],{dx:i,dy:s}]})}o(_e,"moveCursorTo");function xt(e,t,n,r,i=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=vt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=bt(s,m.style);kt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let u=ae(a,void 0);for(let f of u.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=u.current;let l=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||i);e.txn(f=>l?[[ce],{dx:-f.x,dy:0}]:[[ce,vt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);let d=ae(a,void 0);for(let u of d.patches)e.txn(()=>[[u],{dx:0,dy:0}])}}o(xt,"renderFrameSlice");function $r(e,t,n,r){let i=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=i;a<=s;a++)ey(e,t,a)}o($r,"repaintFrameRows");function ey(e,t,n){let r="",i;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+yt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(i,a.hyperlink);for(let u of c.patches)e.txn(()=>[[u],{dx:0,dy:0}]);i=c.current;let d=bt(r,a.style);kt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(i,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}o(ey,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let i=Ce(e,r,t);n+=i?.char??" "}return n.trimEnd()}o(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);xt(r,e,0,e.screen.height,n);let i=[{type:"clearTerminal",reason:t}];for(let s of r.diff)i.push(s);return i}o(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,i=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:i,prevHadScrollback:s,nextFitsViewport:a}}o(pn,"computeViewportState");function Na(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}o(Na,"shouldFullReset");function $a(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}o($a,"shouldSkipDiff");var mn=class{static{o(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let i=r.inlineBottomAnchored??!1,s=Da(t,i),a=Da(n,i);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",i);let c=Na(s,a,Dr);if(c.reset)return ze(a,c.reason,i);if(a.scrollRepaint&&r.altScreen===!0)return ty(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let u={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},l={...s,screen:va(s.screen,d.top,d.bottom,d.delta)};return[u,...La(l,a,i)]}return La(s,a,i)}reset(){}};function Lr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}o(Lr,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");Lr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Lr(e,r.patches)}return{style:"",hyperlink:void 0}}o(Fr,"resetStyleAndHyperlink");function ty(e,t,n){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&$r(i,t,c.top,c.bottom);let d=ja(i,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(i,d.currentStyle,d.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height),Ka(i,t),i.diff)}o(ty,"renderScrollRepaint");function Fa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(i=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-i.x,dy:-r}])}o(Fa,"applyShrink");function ja(e,t,n,r){let i="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:u,prev:l,next:f}=c;if(r.growing&&u>=t.screen.height||r.skipRows&&u>=r.skipRows.top&&u<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!$a(l,f,m)){if(u<r.viewportY){a=!0;break}if(_e(e,d,u),f){let p=ae(s,f.hyperlink);Lr(e,p.patches),s=p.current;let g=bt(i,f.style);kt(e,f,g.str)&&(i=g.current)}else if(l){let p=Fr(e,i,s);i=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:i,currentHyperlink:s,needsFullReset:a}}o(ja,"diffPass");function Da(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}o(Da,"clampRestingCursor");function Ka(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=vt;return[s,{dx:-n.x,dy:r}]}let i=t.cursor.y-n.y;return i!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:i}],{dx:t.cursor.x-n.x,dy:i}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}o(Ka,"restoreCursor");function La(e,t,n=!1){let r=pn(e,t),i=new Re(e.cursor,t.viewport.width);r.shrinking&&Fa(i,e,t);let s=ja(i,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(i,s.currentStyle,s.currentHyperlink),r.growing&&xt(i,t,e.screen.height,t.screen.height,n),Ka(i,t),i.diff)}o(La,"renderIncremental");var ny="\x1B[?25l",ry="\x1B[?25h",oy=`\x1B[2J${Sa}`,iy="\x1B[?2026h",sy="\x1B[?2026l";function ay(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ny;case"cursorShow":return ry;case"cursorMove":return Ea(e.x,e.y);case"cursorTo":return xa(e.col);case"eraseLine":return Or;case"clear":return Ia(e.count);case"clearTerminal":return oy;case"hyperlink":return wt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),i=e.delta>0?Aa(r):Pa(r);return Ta+_a(t,n)+i+Ca+Ra}}}o(ay,"patchToBytes");function hn(e,t,n=!1){let r="",i=!1;for(let s of t)s.type==="clearTerminal"&&(i=!0),r+=ay(s);if(r.length!==0){if(n&&i){e.write(iy+r+sy);return}e.write(r)}}o(hn,"applyDiff");function Ba(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}o(Ba,"applyCellFrame");function St(e,t){return{screen:ya(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}o(St,"emptyFrame");import cy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function ue(e){return"isTTY"in e&&e.isTTY===!0&&!cy}o(ue,"shouldSynchronize");var dy=new WeakMap,Xa=dy;import{EventEmitter as _y}from"node:events";import Ay from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as sc}from"react";import Py from"cli-cursor";var uy=o(e=>e>=48&&e<=63,"isCsiParameterByte"),ly=o(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Wa=o(e=>e>=64&&e<=126,"isCsiFinalByte");function fy(e,t,n){let r=t+n+1,i=r;for(;i<e.length;i+=1){let s=e.codePointAt(i);if(s===void 0)return"pending";if(!(uy(s)||ly(s))&&!(s===91&&i===r))return Wa(s)?{sequence:e.slice(t,i+1),nextIndex:i+1}:void 0}return"pending"}o(fy,"parseCsiSequence");function py(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let i=e.codePointAt(r-1);if(!(i===void 0||!Wa(i)))return{sequence:e.slice(t,r),nextIndex:r}}o(py,"parseSs3Sequence");function Ua(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return fy(e,t,n);if(r==="O")return py(e,t,n)}o(Ua,"parseControlSequence");function my(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,i=t+1+r;return{sequence:e.slice(t,i),nextIndex:i}}o(my,"parseEscapedCodePoint");function hy(e){let t=[],n=0,r=o(i=>({events:t,pending:e.slice(i)}),"pendingFrom");for(;n<e.length;){let i=e.indexOf("\x1B",n);if(i===-1)return t.push(e.slice(n)),{events:t,pending:""};if(i>n&&t.push(e.slice(n,i)),i===e.length-1)return r(i);let s=Ua(e,i,1);if(s==="pending")return r(i);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[i+1]==="\x1B"){if(i+2>=e.length)return r(i);let d=Ua(e,i,2);if(d==="pending")return r(i);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(i,i+2)),n=i+2;continue}let c=my(e,i);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}o(hy,"parseKeypresses");function gn(){let e="";return{push(t){let n=hy(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}o(gn,"createInputParser");import{createContext as gy}from"react";var Ha=gy({exit(){}});Ha.displayName="InternalAppContext";var za=Ha;import{EventEmitter as yy}from"node:events";import{createContext as wy}from"react";var vy={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},qa=wy({stdin:vy,internal_eventEmitter:new yy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});qa.displayName="InternalStdinContext";var Va=qa;import{createContext as by}from"react";var ky={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Ga=by({stdout:ky,write(){}});Ga.displayName="InternalStdoutContext";var Ya=Ga;import{createContext as xy}from"react";var Sy={isTTY:!1,write(){return!0},on(){},off(){}},Ja=xy({stderr:Sy,write(){}});Ja.displayName="InternalStderrContext";var Qa=Ja;import{createContext as Ey}from"react";var Za=Ey({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Za.displayName="InternalFocusContext";var ec=Za;import{createContext as Iy}from"react";var tc=Iy({setCursorPosition(){}});tc.displayName="InternalCursorContext";var nc=tc;import Ty,{PureComponent as Ry}from"react";import*as yn from"node:fs";import{cwd as ic}from"node:process";import N from"react";import rc from"stack-utils";import Cy from"code-excerpt";var jr=o(e=>e?.replace(`file://${ic()}/`,""),"cleanupPath"),oc=new rc({cwd:ic(),internals:rc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
|
|
639
|
-
`).slice(1):void 0,n=t?
|
|
640
|
-
`).slice(1).map(a=>{let c=
|
|
805
|
+
`);else throw e}var aa=i((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let o of Object.keys(e))(!t||!Object.hasOwn(t,o))&&(n[o]=void 0,r=!0);if(t)for(let o of Object.keys(t))t[o]!==e[o]&&(n[o]=t[o],r=!0);return r?n:void 0},"diff"),ca=i(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),cn=la,Cr,da={name:void 0,version:void 0},se=Mg({getRootHostContext:i(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:i(()=>null,"prepareForCommit"),preparePortalMount:i(()=>null,"preparePortalMount"),clearContainer:i(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:i(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let o=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=rn(o);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){xr(s,c),s.yogaNode&&Sr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){Cr=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}kr(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return Qs(e)},resetTextContent(){},hideTextInstance(e){yt(e,"")},unhideTextInstance(e,t){yt(e,t)},getPublicInstance:i(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(sa.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(sa.DISPLAY_FLEX)},appendInitialChild:on,appendChild:on,insertBefore:br,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:i(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:i(()=>null,"getInstanceFromScope"),appendChildToContainer:on,insertInContainerBefore:br,removeChildFromContainer(e,t){gt(e,t),ca(t.yogaNode)},commitUpdate(e,t,n,r){Cr&&e.internal_static&&(Cr.isStaticDirty=!0);let o=aa(n,r),s=aa(n.style,r.style);if(!(!o&&!s)){if(o)for(let[a,c]of Object.entries(o)){if(a==="style"){xr(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}kr(e,a,c)}s&&e.yogaNode&&Sr(e.yogaNode,s)}},commitTextUpdate(e,t,n){yt(e,n)},removeChild(e,t){gt(e,t),ca(t.yogaNode)},setCurrentUpdatePriority(e){cn=e},getCurrentUpdatePriority:i(()=>cn,"getCurrentUpdatePriority"),resolveUpdatePriority(){return cn!==la?cn:Og},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Ng(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:da.name,rendererVersion:da.version});import jg from"widest-line";import Kg from"indent-string";import we from"yoga-layout";import dn from"yoga-layout";var Lg=i(e=>e.getComputedWidth()-e.getComputedPadding(dn.EDGE_LEFT)-e.getComputedPadding(dn.EDGE_RIGHT)-e.getComputedBorder(dn.EDGE_LEFT)-e.getComputedBorder(dn.EDGE_RIGHT),"getMaxWidth"),ua=Lg;import Dg from"cli-boxes";import ln from"chalk";var $g=i((e,t,n,r)=>{if(n.style.borderStyle){let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?Dg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,u=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,m=n.style.borderBottomDimColor??n.style.borderDimColor,p=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=o-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=ln.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,l,"foreground")+`
|
|
806
|
+
`).repeat(_);p&&(W=ln.dim(W));let H=(G(a.right,u,"foreground")+`
|
|
807
|
+
`).repeat(_);g&&(H=ln.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&m&&(A=ln.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+o-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),fa=$g;var Fg=i((e,t,n,r)=>{if(!n.style.backgroundColor)return;let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,u=o-a-c,f=s-d-l;if(!(u>0&&f>0))return;let m=G(" ".repeat(u),n.style.backgroundColor,"background");for(let p=0;p<f;p++)r.write(e+a,t+d+p,m,{transformers:[]})},"renderBackground"),pa=Fg;function ma(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:o,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:l,previousAppliedScrollTop:u,regionTop:f}=e,m=Math.max(0,n-r),p=Math.max(0,Math.min(Math.floor(t),m)),v=s&&n>=o?m:p,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(m,c??m))):v,y=d&&l!==void 0,h=Math.max(0,Math.floor(l??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(u!==void 0&&u!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-u})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}i(ma,"computeScrollState");var Bg=i((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),o=n.getComputedTop();t=`
|
|
808
|
+
`.repeat(o)+Kg(t,r)}return t},"applyPaddingToText"),un=i((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=ht(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
|
|
809
|
+
`;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>un(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:o}=e.internal_accessibility;if(o){let a=Object.keys(o).filter(c=>o[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Tr=null,Rr=null;function ha(){Tr=null,Rr=null}i(ha,"resetScrollHint");function ga(){return Tr}i(ga,"getScrollHint");function ya(){return Rr}i(ya,"getScrollRepaint");var wa=i((e,t,n)=>{let{offsetX:r=0,offsetY:o=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),l=o+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:l});let u=s;if(typeof e.internal_transform=="function"&&(u=[e.internal_transform,...s]),e.nodeName==="ink-text"){let p=ht(e);if(p.length>0){let g=jg(p),v=ua(c);if(g>v){let w=e.style.textWrap??"wrap";p=nn(p,v,w)}p=Bg(e,p),t.write(d,l,p,{transformers:u})}return}let f=!1,m=0;if(e.nodeName==="ink-box"){pa(d,l,e,t),fa(d,l,e,t);let p=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=p==="hidden"||p==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=ma({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:l+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Tr=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Rr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,m=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?l+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?l+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let p of e.childNodes)wa(p,t,{offsetX:d,offsetY:l-m,transformers:u,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),_r=wa;import Ug from"slice-ansi";import Xg from"string-width";import{styledCharsFromTokens as Wg,styledCharsToString as Hg,tokenize as zg}from"@alcalzone/ansi-tokenize";var Ar=class{static{i(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=Wg(zg(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Xg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let o of t.split(`
|
|
810
|
+
`))r=Math.max(r,this.getStringWidth(o));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{i(this,"Output")}width;height;operations=[];caches=new Ar;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,o){let{transformers:s}=o;r&&this.operations.push({type:"write",x:t,y:n,text:r,transformers:s})}clip(t){this.operations.push({type:"clip",clip:t})}unclip(){this.operations.push({type:"unclip"})}getGrid(){let t=[];for(let r=0;r<this.height;r++){let o=[];for(let s=0;s<this.width;s++)o.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(o)}let n=[];for(let r of this.operations)if(r.type==="clip"&&n.push(r.clip),r.type==="unclip"&&n.pop(),r.type==="write"){let{text:o,transformers:s}=r,{x:a,y:c}=r,d=o.split(`
|
|
811
|
+
`),l=n.at(-1);if(l){let f=typeof l?.x1=="number"&&typeof l?.x2=="number",m=typeof l?.y1=="number"&&typeof l?.y2=="number";if(f){let p=this.caches.getWidestLine(o);if(a+p<l.x1||a>l.x2)continue}if(m){let p=d.length;if(c+p<l.y1||c>l.y2)continue}if(f&&(d=d.map(p=>{let g=a<l.x1?l.x1-a:0,v=this.caches.getStringWidth(p),w=a+v>l.x2?l.x2-a:v;return Ug(p,g,w)}),a<l.x1&&(a=l.x1)),m){let p=c<l.y1?l.y1-c:0,g=d.length,v=c+g>l.y2?l.y2-c:g;d=d.slice(p,v),c<l.y1&&(c=l.y1)}}let u=0;for(let[f,m]of d.entries()){let p=t[c+u];if(!p)continue;for(let w of s)m=w(m,f);let g=this.caches.getStyledChars(m),v=a;for(let w of g){p[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)p[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}u++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let o=r.filter(s=>s!==void 0);return Hg(o).trimEnd()}).join(`
|
|
812
|
+
`),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function va(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}i(va,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}i(Ce,"cellAt");function ba(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(o,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(o<0||s<0||o>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${o}, ${s}) on ${e}x${t}`);n[s*e+o]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}i(ba,"createScreenBuilder");function*fn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let o=0;o<r;o++)for(let s=0;s<n;s++){let a=Ce(e,s,o),c=Ce(t,s,o);qg(a,c)||(yield{x:s,y:o,prev:a,next:c})}}i(fn,"diffEach");function ka(e,t,n,r){if(r===0||e.height===0)return e;let o=Math.max(0,t),s=Math.min(e.height-1,n);if(o>s)return e;let a=e.width,c=e.cells.slice(),d=s-o+1,l=i(u=>{for(let f=0;f<a;f++)c[u*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let u=o;u<=s;u++)l(u);return{...e,cells:c}}if(r>0){for(let u=o;u<=s-r;u++)for(let f=0;f<a;f++)c[u*a+f]=e.cells[(u+r)*a+f]??Q;for(let u=s-r+1;u<=s;u++)l(u)}else{let u=-r;for(let f=s;f>=o+u;f--)for(let m=0;m<a;m++)c[f*a+m]=e.cells[(f-u)*a+m]??Q;for(let f=o;f<=o+u-1;f++)l(f)}return{...e,cells:c}}i(ka,"shiftRowsRegion");function qg(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}i(qg,"cellsEqual");var Pr="\x1B]8;";function Vg(e){return e.endsWith("\x07")?e.slice(0,-1):e}i(Vg,"stripOsc8Terminator");function Gg(e){if(!e.startsWith(Pr))return;let t=e.slice(Pr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),o=Vg(r);return o.length>0?o:void 0}i(Gg,"parseOsc8Url");function Jg(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Pr)){let o=Gg(r.code);o!==void 0&&(n=o)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}i(Jg,"styledCharToCell");function xa(e){let t=e.getGrid(),n=e.width,r=e.height,o=ba(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let l=0;l<d;l++){let u=c[l];if(!u)continue;let f=Jg(u);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||o.setCellAt(l,a,f)}}return o.build()}i(xa,"outputToScreen");var Yg=i((e,t,n)=>{if(e.yogaNode){if(t){let m=un(e,{skipStaticElements:!0}),p=m===""?0:m.split(`
|
|
813
|
+
`).length,g="";return e.staticNode&&(g=un(e.staticNode,{skipStaticElements:!1})),{output:m,outputHeight:p,staticOutput:g?`${g}
|
|
814
|
+
`:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});ha(),_r(e,r,{skipStaticElements:!0});let o;e.staticNode?.yogaNode&&(o=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),_r(e.staticNode,o,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=xa(r),d=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),u=r.cursorPosition,f={screen:c,viewport:{width:d,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:ga(),scrollRepaint:ya(),...u?{inputCursor:{x:u.x,y:u.y}}:{}};return{output:s,outputHeight:a,staticOutput:o?`${o.get().output}
|
|
815
|
+
`:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Mr=Yg;function X(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}i(X,"csi");function Sa(e=1){return e===0?"":X(e,"A")}i(Sa,"cursorUp");function Qg(e=1){return e===0?"":X(e,"B")}i(Qg,"cursorDown");function Zg(e=1){return e===0?"":X(e,"C")}i(Zg,"cursorForward");function ey(e=1){return e===0?"":X(e,"D")}i(ey,"cursorBack");function Ea(e){return X(e,"G")}i(Ea,"cursorTo");var ty=X("G"),Ia=X("H");function Ca(e,t){let n="";return e<0?n+=ey(-e):e>0&&(n+=Zg(e)),t<0?n+=Sa(-t):t>0&&(n+=Qg(t)),n}i(Ca,"cursorMove");var Or=X(2,"K");function Ta(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Or,n<e-1&&(t+=Sa(1));return t+=ty,t}i(Ta,"eraseLines");var Ra=X("r"),_a="\x1B7",Aa="\x1B8";function Pa(e,t){return X(e,t,"r")}i(Pa,"setScrollRegion");function Ma(e=1){return X(e,"S")}i(Ma,"scrollUp");function Oa(e=1){return X(e,"T")}i(Oa,"scrollDown");var wt=X(0,"m");function Na(e){return`\x1B]${e.join(";")}\x07`}i(Na,"osc");function ny(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}i(ny,"osc8Id");function vt(e,t){if(!e)return He;let n={id:ny(e),...t??{}},r=Object.entries(n).map(([o,s])=>`${o}=${s}`).join(":");return Na(["8",r,e])}i(vt,"link");var He=Na(["8","",""]);function Nr(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",o;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==o&&(o!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=vt(d.hyperlink)),o=d.hyperlink),d.style!==r&&(r!==""&&(a+=wt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}o!==void 0&&(a+=He,o=void 0),r!==""&&(a+=wt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
|
|
816
|
+
`)}]}i(Nr,"renderFullFrame");var ry=Object.freeze([]),iy=Object.freeze([]);function Te(e,t){if(e===t)return{patches:ry,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:wt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}i(Te,"transitionStyle");function kt(e,t){let n=Te(e,t),r="";for(let o of n.patches)o.type==="stdout"&&(r+=o.content);return{str:r,current:n.current}}i(kt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:iy,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:vt(t)}),{patches:n,current:t}}i(ae,"transitionHyperlink");function La(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}i(La,"needsWidthCompensation");var Re=class{static{i(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let o of n)this._diffMut.push(o);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},bt={type:"stdout",content:`
|
|
817
|
+
`};function xt(e,t,n){let r=t.width===Z.Wide?2:1,o=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<o){let u=t.char.length>2?o:o+1;if(c+2>=u)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let l=r===2&&La(t.char);return l&&c+1<o&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),l&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=o?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}i(xt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let o=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:[[{type:"cursorMove",x:o,y:s}],{dx:o,dy:s}]})}i(_e,"moveCursorTo");function St(e,t,n,r,o=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(m=>{let p=new Array(1+f);p[0]=ce;for(let g=0;g<f;g++)p[1+g]=bt;return[p,{dx:-m.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let m=Ce(t.screen,f,c);if(!m||m.width===Z.SpacerTail||m.char===" "&&m.style===""&&m.hyperlink===void 0)continue;_e(e,f,c);let p=ae(a,m.hyperlink);for(let v of p.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=p.current;let g=kt(s,m.style);xt(e,m,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let l=ae(a,void 0);for(let f of l.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=l.current;let u=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||o);e.txn(f=>u?[[ce],{dx:-f.x,dy:0}]:[[ce,bt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let d=ae(a,void 0);for(let l of d.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}i(St,"renderFrameSlice");function Lr(e,t,n,r){let o=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=o;a<=s;a++)oy(e,t,a)}i(Lr,"repaintFrameRows");function oy(e,t,n){let r="",o;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+wt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(o,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);o=c.current;let d=kt(r,a.style);xt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(o,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}i(oy,"repaintFrameRow");function Dr(e,t){let n="";for(let r=0;r<e.width;r++){let o=Ce(e,r,t);n+=o?.char??" "}return n.trimEnd()}i(Dr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);St(r,e,0,e.screen.height,n);let o=[{type:"clearTerminal",reason:t}];for(let s of r.diff)o.push(s);return o}i(ze,"fullResetSequence_CAUSES_FLICKER");function pn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,o=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:o,prevHadScrollback:s,nextFitsViewport:a}}i(pn,"computeViewportState");function Da(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=pn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of fn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}i(Da,"shouldFullReset");function $a(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}i($a,"shouldSkipDiff");var mn=class{static{i(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return Nr(n);let o=r.inlineBottomAnchored??!1,s=Fa(t,o),a=Fa(n,o);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",o);let c=Da(s,a,Dr);if(c.reset)return ze(a,c.reason,o);if(a.scrollRepaint&&r.altScreen===!0)return sy(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let l={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},u={...s,screen:ka(s.screen,d.top,d.bottom,d.delta)};return[l,...ja(u,a,o)]}return ja(s,a,o)}reset(){}};function $r(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}i($r,"emitPatches");function Fr(e,t,n){if(t!==""){let r=Te(t,"");$r(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);$r(e,r.patches)}return{style:"",hyperlink:void 0}}i(Fr,"resetStyleAndHyperlink");function sy(e,t,n){let r=pn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Ka(o,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&Lr(o,t,c.top,c.bottom);let d=Ba(o,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Fr(o,d.currentStyle,d.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height),Ua(o,t),o.diff)}i(sy,"renderScrollRepaint");function Ka(e,t,n){let r=t.screen.height-n.screen.height;e.txn(o=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-o.x,dy:-r}])}i(Ka,"applyShrink");function Ba(e,t,n,r){let o="",s,a=!1;for(let c of fn(t.screen,n.screen)){let{x:d,y:l,prev:u,next:f}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let m=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!$a(u,f,m)){if(l<r.viewportY){a=!0;break}if(_e(e,d,l),f){let p=ae(s,f.hyperlink);$r(e,p.patches),s=p.current;let g=kt(o,f.style);xt(e,f,g.str)&&(o=g.current)}else if(u){let p=Fr(e,o,s);o=p.style,s=p.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:o,currentHyperlink:s,needsFullReset:a}}i(Ba,"diffPass");function Fa(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}i(Fa,"clampRestingCursor");function Ua(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=bt;return[s,{dx:-n.x,dy:r}]}let o=t.cursor.y-n.y;return o!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:o}],{dx:t.cursor.x-n.x,dy:o}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}i(Ua,"restoreCursor");function ja(e,t,n=!1){let r=pn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Ka(o,e,t);let s=Ba(o,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Fr(o,s.currentStyle,s.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height,n),Ua(o,t),o.diff)}i(ja,"renderIncremental");var ay="\x1B[?25l",cy="\x1B[?25h",dy=`\x1B[2J${Ia}`,ly="\x1B[?2026h",uy="\x1B[?2026l";function fy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return ay;case"cursorShow":return cy;case"cursorMove":return Ca(e.x,e.y);case"cursorTo":return Ea(e.col);case"eraseLine":return Or;case"clear":return Ta(e.count);case"clearTerminal":return dy;case"hyperlink":return vt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),o=e.delta>0?Ma(r):Oa(r);return _a+Pa(t,n)+o+Ra+Aa}}}i(fy,"patchToBytes");function hn(e,t,n=!1){let r="",o=!1;for(let s of t)s.type==="clearTerminal"&&(o=!0),r+=fy(s);if(r.length!==0){if(n&&o){e.write(ly+r+uy);return}e.write(r)}}i(hn,"applyDiff");function Xa(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return hn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}i(Xa,"applyCellFrame");function Et(e,t){return{screen:va(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}i(Et,"emptyFrame");import py from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function le(e){return"isTTY"in e&&e.isTTY===!0&&!py}i(le,"shouldSynchronize");var my=new WeakMap,Wa=my;import{EventEmitter as Ny}from"node:events";import Ly from"node:process";import Ae,{useState as Br,useRef as qe,useCallback as M,useMemo as Ve,useEffect as cc}from"react";import Dy from"cli-cursor";var hy=i(e=>e>=48&&e<=63,"isCsiParameterByte"),gy=i(e=>e>=32&&e<=47,"isCsiIntermediateByte"),za=i(e=>e>=64&&e<=126,"isCsiFinalByte");function yy(e,t,n){let r=t+n+1,o=r;for(;o<e.length;o+=1){let s=e.codePointAt(o);if(s===void 0)return"pending";if(!(hy(s)||gy(s))&&!(s===91&&o===r))return za(s)?{sequence:e.slice(t,o+1),nextIndex:o+1}:void 0}return"pending"}i(yy,"parseCsiSequence");function wy(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let o=e.codePointAt(r-1);if(!(o===void 0||!za(o)))return{sequence:e.slice(t,r),nextIndex:r}}i(wy,"parseSs3Sequence");function Ha(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return yy(e,t,n);if(r==="O")return wy(e,t,n)}i(Ha,"parseControlSequence");function vy(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,o=t+1+r;return{sequence:e.slice(t,o),nextIndex:o}}i(vy,"parseEscapedCodePoint");function by(e){let t=[],n=0,r=i(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;n<e.length;){let o=e.indexOf("\x1B",n);if(o===-1)return t.push(e.slice(n)),{events:t,pending:""};if(o>n&&t.push(e.slice(n,o)),o===e.length-1)return r(o);let s=Ha(e,o,1);if(s==="pending")return r(o);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[o+1]==="\x1B"){if(o+2>=e.length)return r(o);let d=Ha(e,o,2);if(d==="pending")return r(o);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(o,o+2)),n=o+2;continue}let c=vy(e,o);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}i(by,"parseKeypresses");function gn(){let e="";return{push(t){let n=by(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}i(gn,"createInputParser");import{createContext as ky}from"react";var qa=ky({exit(){}});qa.displayName="InternalAppContext";var Va=qa;import{EventEmitter as xy}from"node:events";import{createContext as Sy}from"react";var Ey={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Ga=Sy({stdin:Ey,internal_eventEmitter:new xy,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Ga.displayName="InternalStdinContext";var Ja=Ga;import{createContext as Iy}from"react";var Cy={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},Ya=Iy({stdout:Cy,write(){}});Ya.displayName="InternalStdoutContext";var Qa=Ya;import{createContext as Ty}from"react";var Ry={isTTY:!1,write(){return!0},on(){},off(){}},Za=Ty({stderr:Ry,write(){}});Za.displayName="InternalStderrContext";var ec=Za;import{createContext as _y}from"react";var tc=_y({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});tc.displayName="InternalFocusContext";var nc=tc;import{createContext as Ay}from"react";var rc=Ay({setCursorPosition(){}});rc.displayName="InternalCursorContext";var ic=rc;import My,{PureComponent as Oy}from"react";import*as yn from"node:fs";import{cwd as ac}from"node:process";import N from"react";import oc from"stack-utils";import Py from"code-excerpt";var jr=i(e=>e?.replace(`file://${ac()}/`,""),"cleanupPath"),sc=new oc({cwd:ac(),internals:oc.nodeInternals()});function Kr({error:e}){let t=e.stack?e.stack.split(`
|
|
818
|
+
`).slice(1):void 0,n=t?sc.parseLine(t[0]):void 0,r=jr(n?.file),o,s=0;if(r&&n?.line&&yn.existsSync(r)){let a=yn.readFileSync(r,"utf8");if(o=Py(a,n.line),o)for(let{line:c}of o)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&o&&N.createElement(q,{marginTop:1,flexDirection:"column"},o.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
|
|
819
|
+
`).slice(1).map(a=>{let c=sc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${jr(c.file)??""} line ${c.line} column ${c.column}`}," ","(",jr(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}i(Kr,"ErrorOverview");var It=class extends Oy{static{i(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?My.createElement(Kr,{error:this.state.error}):this.props.children}};var $y=" ",Fy="\x1B[Z",jy="\x1B";function dc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:o,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[l,u]=Br(!0),[f,m]=Br(void 0),[,p]=Br([]),g=qe(0),v=qe(0),w=qe(new Ny);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(gn()),b=qe(void 0),I=M(()=>{b.current&&(clearImmediate(b.current),b.current=void 0)},[]),_=t.isTTY,W=M(()=>{y.current&&(t.removeListener("readable",y.current),y.current=void 0)},[t]),H=M(()=>{t.setRawMode(!1),W(),t.unref(),v.current=0,h.current.reset(),I()},[t,W,I]),A=M(x=>{_&&v.current>0&&H(),c(x)},[_,H,c]),Me=M(x=>{if(x===""&&a){A();return}x===jy&&m(S=>S&&void 0)},[a,A]),Rt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),ni=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Rt(x)})},[I,Rt]),En=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Rt(E)}h.current.hasPendingEscape()&&ni()},[t,Rt,I,ni]),ri=M(x=>{if(!_)throw t===Ly.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
|
|
641
820
|
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.
|
|
642
|
-
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),
|
|
821
|
+
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=En,t.addListener("readable",En)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,En,H]),ii=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E+1;L<x.length;L++){let te=x[L];if(te?.isActive)return te.id}},[]),oi=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E-1;L>=0;L--){let te=x[L];if(te?.isActive)return te.id}},[]),_t=M(()=>{p(x=>(m(S=>{let E=x.find(te=>te.isActive)?.id;return ii(x,S)??E}),x))},[ii]),At=M(()=>{p(x=>(m(S=>{let E=x.findLast(te=>te.isActive)?.id;return oi(x,S)??E}),x))},[oi]);cc(()=>{let x=i(E=>{!l||g.current===0||(E===$y&&_t(),E===Fy&&At())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[l,_t,At]);let si=M(()=>{u(!0)},[]),ai=M(()=>{u(!1)},[]),ci=M(x=>{p(S=>(S.some(L=>L?.id===x)&&m(x),S))},[]),di=M((x,{autoFocus:S})=>{p(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&m(E=>E??x)},[]),li=M(x=>{m(S=>S===x?void 0:S),p(S=>{let E=S.filter(L=>L.id!==x);return g.current=E.length,E})},[]),ui=M(x=>{p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),fi=M(x=>{m(S=>S===x?void 0:S),p(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);cc(()=>()=>{Dy.show(n),_&&v.current>0&&H()},[n,_,H]);let Kc=Ve(()=>({exit:A}),[A]),Bc=Ve(()=>({stdin:t,setRawMode:ri,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,ri,_,a]),Uc=Ve(()=>({stdout:n,write:o}),[n,o]),Xc=Ve(()=>({stderr:r,write:s}),[r,s]),Wc=Ve(()=>({setCursorPosition:d}),[d]),Hc=Ve(()=>({activeId:f,add:di,remove:li,activate:ui,deactivate:fi,enableFocus:si,disableFocus:ai,focusNext:_t,focusPrevious:At,focus:ci}),[f,di,li,ui,fi,si,ai,_t,At,ci]);return Ae.createElement(Va.Provider,{value:Kc},Ae.createElement(Ja.Provider,{value:Bc},Ae.createElement(Qa.Provider,{value:Uc},Ae.createElement(ec.Provider,{value:Xc},Ae.createElement(nc.Provider,{value:Hc},Ae.createElement(ic.Provider,{value:Wc},Ae.createElement(It,{onError:A},e)))))))}i(dc,"App");dc.displayName="InternalApp";var lc=dc;var Ky={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function uc(e){let t=0;for(let n of e)t|=Ky[n];return t}i(uc,"resolveFlags");var ue={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Ur=i((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),Xr=i((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return o=>({x:o.x,y:Math.min(Math.max(o.y-n,0),r)})},"toVisibleCursor"),wn=i(()=>{},"noop"),Jy=27,Yy=91,Qy=63,Zy=117,ew=48,tw=57,nw=i(e=>e>=ew&&e<=tw,"isDigitByte"),pc=i((e,t)=>{if(e[t]!==Jy||e[t+1]!==Yy||e[t+2]!==Qy)return;let n=t+3,r=n;for(;n<e.length&&nw(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===Zy)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),rw=i(e=>{for(let t=0;t<e.length;t++)if(pc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),iw=i(e=>{let t=[],n=0;for(;n<e.length;){let r=pc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),Wr=i(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),ow=class{static{i(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Uy(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=rn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,o=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=By(this.onRender,o,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new mn({isTTY:!!t.stdout.isTTY}),this.prevFrame=Et(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?zy:Hy;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Xy(this.unmount,{alwaysLast:!1}),tn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=i(()=>this.options.stdout.columns?this.options.stdout.columns:Gy()?.columns??80,"getTerminalWidth");resized=i(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=i(()=>{},"resolveExitPromise");rejectExitPromise=i(()=>{},"rejectExitPromise");unsubscribeExit=i(()=>{},"unsubscribeExit");handleAppExit=i(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(Wr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=i(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let o=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:o,y:s}},"setCursorPosition");resetOutputTracking=i(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=i((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||o!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||o!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,o=n.write,s=i((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=i((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=o)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=i(()=>{if(this.prevFrame.screen.height===0)return;let t=Et(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>hn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=i(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=i(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,qy.DIRECTION_LTR)},"calculateLayout");onRender=i(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:o,staticOutput:s,frame:a}=Mr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
|
|
643
822
|
`;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+`
|
|
644
|
-
`,this.lastOutputHeight=
|
|
645
|
-
`).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let
|
|
646
|
-
`;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=
|
|
647
|
-
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),
|
|
648
|
-
`),ve}catch{return ve=-1,null}}
|
|
649
|
-
`),c=0,d=0,
|
|
650
|
-
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=mw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=hw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=wc[c]??"",s.shift=gw(c)||s.shift,s.ctrl=yw(c)||s.ctrl}return s}o(Gr,"parseKeypress");var Tw=50;function Yr(e){return{columns:e?.columns??80,rows:e?.rows??24}}o(Yr,"resolveTerminalSize");var bn=Iw(null),Rw={isTTY:!1,columns:80,rows:24,write:o(()=>!0,"write"),on:o(()=>{},"on"),off:o(()=>{},"off")};var Tc={isTTY:!1,isRaw:!1,on:o(()=>{},"on"),off:o(()=>{},"off"),pause:o(()=>{},"pause"),resume:o(()=>{},"resume"),setRawMode:o(()=>{},"setRawMode")};function _w(e){for(let t of e)if(t.rawMode)return!0;return!1}o(_w,"hasRawModeSubscribers");function Aw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,i,s=!1,a=!1,c=o(f=>{for(let m of r)m.listener(f)},"handleData"),d=o(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),u=o(()=>{let f=i;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),i=void 0},"detachInput"),l=o(()=>{if(i&&i!==e&&u(),!e||r.size===0){u();return}if(i!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),i=e),!(n&&_w(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),l(),()=>{r.delete(p),l()}},dispose(){r.clear(),u()}}}o(Aw,"createTerminalInputController");var Pw=o(({children:e,runtime:t})=>{let[n,r]=Cw(()=>t.terminalSize);Ge(()=>{if(r(Yr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=o(()=>{r(Yr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let i=Cc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Ec(()=>Aw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Ec(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:i,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,i]);return Ic(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function Mw(e){let t=e?.stdout??Rw,n=e?.stdin??Tc,r=o(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),i;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:o(()=>{i?.()},"exit"),terminalSize:Yr(t),isTTY:t?.isTTY===!0,writeRaw:o(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:o(()=>()=>{},"subscribeInput"),attachExit(s){i=s}}}o(Mw,"createRuntimeValue");function kn(e,t){let n=Mw(t),r=zr(Ic(Pw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}o(kn,"render");var be=hc,V=gc;function Ow(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&vc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}o(Ow,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),i=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){i.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return i.current=gn(),()=>{i.current?.reset(),i.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Cc(c=>{let{input:d,key:u}=Ow(Gr(c));r.current(d,u)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=i.current,u=typeof c=="string"?c:c.toString("utf8"),l=d?.push(u)??[u];for(let f of l)a(f);u.length>0&&(s.current=setTimeout(()=>{let f=i.current?.flushPendingEscape();f&&a(f)},Tw))},{isActive:n,rawMode:!0})}o(xn,"useInput");function Qr(){let e=Jr(bn),t=e?.stdin??Tc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}o(Qr,"useStdin");function Sn(){return{exit:Jr(bn)?.exit??(()=>{})}}o(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,i=Jr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(i)return i.subscribeInput(m=>{d.current(m)},{rawMode:r});let u=s,l=u.isRaw;r&&c&&l===!1&&a(!0);let f=o(m=>{d.current(m)},"handleData");return u.on?.("data",f),()=>{if(u.off?.("data",f),r&&c&&l===!1)try{a(!1)}catch{}}},[i,s,n,r,c,a])}o(Zr,"useTerminalInput");import{jsx as wW}from"react/jsx-runtime";import{useInsertionEffect as bW,useMemo as kW}from"react";import{jsx as iH,jsxs as sH}from"react/jsx-runtime";import{jsx as $W}from"react/jsx-runtime";import LW,{useEffect as FW,useImperativeHandle as jW,useMemo as KW,useRef as BW,useCallback as XW,useState as UW}from"react";var eo=class{static{o(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Nw=1e3;var GW=new eo(Nw);var Kw=40;function Bw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let i=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>i.includes(s))})}o(Bw,"filterSessionPickerItems");function Xw(e,t,n){let r=Math.max(1,n),i=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(i/r)*r;return{items:e.slice(s,s+r),selectedIndex:i,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}o(Xw,"buildSessionPickerPage");function Uw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${i} ${s}:${a}`}o(Uw,"formatTimestamp");function Ww({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:i=8}){let{exit:s}=Sn(),[a,c]=to(""),[d,u]=to(0),[l,f]=to(!1),m=jw(!1),p=Fw(()=>Bw(e,a),[e,a]),g=Xw(p,d,i),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,Kw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)u(h=>Math.max(0,h-1));else if(y.downArrow)u(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)u(h=>Math.max(0,h-i));else if(y.pageDown)u(h=>Math.min(Math.max(0,p.length-1),h+i));else if(y.home)u(0);else if(y.end)u(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),u(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),u(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),u(0))}}),Ye(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Ct(V,{bold:!0,color:"cyan",children:"Resume a session"}),Ye(V,{children:["Search: ",Ct(V,{color:"yellow",children:a||"type to filter"})]}),Ct(V,{dimColor:!0,children:l?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Ye(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Ct(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Ye(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Uw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Ye(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Ye(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}o(Ww,"SessionPicker");async function Pc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,i=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Ct(Ww,{sessions:e,pageSize:a,onSelect:o(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:o(d=>{i=!0,s=d},"onSelectionError"),onCancel:o(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(i)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}o(Pc,"runSessionPicker");var Mc=65536,Oc=48;function zw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Hw.homedir(),".kodax");return Qe.join(t,"sessions")}o(zw,"defaultSessionsDir");function Nc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}o(Nc,"isSessionFile");async function qw(e){let t=[],n;try{n=await Je.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let i=Qe.join(e,r.name);if(r.isFile()&&Nc(r.name)&&!r.name.startsWith("archived-")){t.push(i);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Je.readdir(i,{withFileTypes:!0}))s.isFile()&&Nc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(i,s.name))}catch{}}return t}o(qw,"collectActiveSessionFiles");function $c(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}o($c,"normalizeComparableRoot");function Vw(e,t){let n=$c(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>$c(s)===n)}o(Vw,"matchesProjectRoot");async function Gw(e){let t;try{t=await Je.open(e,"r");let n=Buffer.allocUnsafe(Mc),{bytesRead:r}=await t.read(n,0,Mc,0);if(r===0)return;let i=n.toString("utf8",0,r),s=i.indexOf(`
|
|
651
|
-
`);if(s>=0)return
|
|
652
|
-
`);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}
|
|
653
|
-
`).length-1-r)}
|
|
823
|
+
`,this.lastOutputHeight=o;return}if(this.isScreenReaderEnabled){let w=le(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=Vy(r,y,{trim:!1,hard:!0});if(c)this.writeStdout(h);else{let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+h)}this.lastOutput=r,this.lastOutputToRender=h,this.lastOutputHeight=h===""?0:h.split(`
|
|
824
|
+
`).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,u=i(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),f=l?{write:u}:null;u(this.computeReturnToRestSeq());let m=this.altScreenActive,g=this.options.stdout.isTTY&&o>=this.options.stdout.rows&&m?r:r+`
|
|
825
|
+
`;if(this.lastOutputHeight>=this.options.stdout.rows&&m){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=le(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o;return}let w=le(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=o,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!l&&le(this.options.stdout);try{if(c?(v&&u(de),u(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&o<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&u(de),u(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=Xr(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Ur(h.x-y.x,h.y-y.y);u(b),this.displayCursor=h}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o},"onRender");applyCellFrame=i((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},o=le(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:o,synchronized:n?!1:o,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>Xa(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=i(()=>{this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=i(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=i(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],o=i(c=>{c&&r.push(c)},"emit"),s={write:o};o(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();o(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:l,frame:u}=Mr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(u,s),u?.inputCursor){let f=Xr(u,!this.altScreenActive),m=f(u.cursor),p=f(u.inputCursor),g=Ur(p.x-m.x,p.y-m.y);o(g),this.displayCursor=p}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=le(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=fc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},fc.createElement(lc,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,wn):(se.updateContainerSync(n,this.container,null,wn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=Xr(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Ur(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(i(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
|
|
826
|
+
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,wn):(se.updateContainerSync(null,this.container,null,wn),se.flushSyncWork()),Wa.delete(this.options.stdout);let{exitResult:s}=this,a=i(()=>{Wr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!Wr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=Wy((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let o=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||o==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],o=i(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=iw(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=i(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let l of d)r.push(l);rw(r)&&(o(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(o,200);this.cancelKittyDetection=o,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${uc(t)}u`),this.kittyProtocolEnabled=!0}},mc=ow;var Ct=class{static{i(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new mc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=i(t=>{this.engineInstance.render(t)},"render");unmount=i(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=i(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=i(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=i((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=i((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=i(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=i(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=i(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function gc(){if(ve===-1)return null;if(ve!==null)return ve;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return ve=-1,null;let t=e==="1"||e==="true"?lw(dw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=aw(t,"a"),hc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
|
|
827
|
+
`),ve}catch{return ve=-1,null}}i(gc,"resolveTraceFd");function uw(e){let t=gc();if(t!==null)try{hc(t,e)}catch{}}i(uw,"traceLine");var Hr=new WeakMap,fw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},pw={isTTY:!1,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},mw={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function hw(e={}){return e instanceof sw?{stdout:e}:e}i(hw,"getOptions");function gw(e,t,n){let r=Hr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Hr.set(e,r)),r}i(gw,"getInstance");function zr(e,t){let n={stdout:fw,stdin:mw,stderr:pw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...hw(t)};if(gc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((m,...p)=>(c+=1,d+=typeof m=="string"?Buffer.byteLength(m,"utf8"):m?.length??0,a(m,...p)));let l=0,u=0,f=n.onRender;n.onRender=m=>{let p=cw.now(),g=l===0?0:p-l,v=s,w=v.columns??0,y=v.rows??0;return uw(`frame=${u} renderTime=${m.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
|
|
828
|
+
`),c=0,d=0,l=p,u+=1,f?.(m)}}let o=gw(n.stdout,()=>new Ct(n),n.concurrent??!1);return o.render(e),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:i(()=>{Hr.delete(n.stdout)},"cleanup"),clear:o.clear}}i(zr,"render");var yc=q,wc=K;import{Buffer as ww}from"node:buffer";var vw=/^(?:\x1b)([a-zA-Z0-9])$/,bw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,bc={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},kc=[...Object.values(bc),"backspace"],kw=i(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),xw=i(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),xc=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,Sw=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,Ew={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},Iw={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},vc={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24"},Sc=i(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),qr=i(e=>Sc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function Ec(e){return e===3?"release":e===2?"repeat":"press"}i(Ec,"resolveEventType");function Ic(e){return{ctrl:!!(e&ue.ctrl),shift:!!(e&ue.shift),meta:!!(e&ue.meta),option:!!(e&ue.alt),super:!!(e&ue.super),hyper:!!(e&ue.hyper),capsLock:!!(e&ue.capsLock),numLock:!!(e&ue.numLock)}}i(Ic,"parseKittyModifiers");function Cw(e){let t=xc.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,o=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!Sc(n))return null;let a;s&&(a=s.split(":").map(l=>qr(Number.parseInt(l,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):vc[n]?(c=vc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=qr(n).toLowerCase(),d=!0),d&&!a&&(a=qr(n)),{name:c,...Ic(r),eventType:Ec(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}i(Cw,"parseKittyKeypress");function Tw(e){let t=Sw.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),o=Number.parseInt(t[3],10),s=t[4],a=s==="~"?Iw[n]:Ew[s];return a?{name:a,...Ic(r),eventType:Ec(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}i(Tw,"parseKittySpecialKey");var Vr="\x1B[200~",Rw="\x1B[201~";function _w(e){if(!e.startsWith(Vr))return null;let t=e.indexOf(Rw,Vr.length);return t===-1?null:e.slice(Vr.length,t)}i(_w,"extractBracketedPaste");function Gr(e=""){let t=e,n;if(ww.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=""),typeof t=="string"){let a=_w(t);if(a!==null)return{name:"paste",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isPaste:!0,isPrintable:!1,text:a}}let r=Cw(t);if(r)return r;let o=Tw(t);if(o)return o;if(xc.test(t))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isKittyProtocol:!0,isPrintable:!1};let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(s.sequence=s.sequence||t||s.name,t==="\r"||t==="\x1B\r")s.raw=void 0,s.name="return",s.option=t.length===2;else if(t===`
|
|
829
|
+
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=vw.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=bw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=bc[c]??"",s.shift=kw(c)||s.shift,s.ctrl=xw(c)||s.ctrl}return s}i(Gr,"parseKeypress");var Mw=50;function Jr(e){return{columns:e?.columns??80,rows:e?.rows??24}}i(Jr,"resolveTerminalSize");var bn=Aw(null),Ow={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")};var _c={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Nw(e){for(let t of e)if(t.rawMode)return!0;return!1}i(Nw,"hasRawModeSubscribers");function Lw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,o,s=!1,a=!1,c=i(f=>{for(let m of r)m.listener(f)},"handleData"),d=i(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=i(()=>{let f=o;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),o=void 0},"detachInput"),u=i(()=>{if(o&&o!==e&&l(),!e||r.size===0){l();return}if(o!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),o=e),!(n&&Nw(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,m={}){let p={listener:f,rawMode:m.rawMode!==!1};return r.add(p),u(),()=>{r.delete(p),u()}},dispose(){r.clear(),l()}}}i(Lw,"createTerminalInputController");var Dw=i(({children:e,runtime:t})=>{let[n,r]=Pw(()=>t.terminalSize);Ge(()=>{if(r(Jr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=i(()=>{r(Jr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let o=Rc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=Cc(()=>Lw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=Cc(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:o,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,o]);return Tc(bn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function $w(e){let t=e?.stdout??Ow,n=e?.stdin??_c,r=i(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),o;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:i(()=>{o?.()},"exit"),terminalSize:Jr(t),isTTY:t?.isTTY===!0,writeRaw:i(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:i(()=>()=>{},"subscribeInput"),attachExit(s){o=s}}}i($w,"createRuntimeValue");function kn(e,t){let n=$w(t),r=zr(Tc(Dw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}i(kn,"render");var be=yc,V=wc;function Fw(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&kc.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}i(Fw,"createCompatKeypress");function xn(e,t={}){let{isActive:n=!0}=t,r=vn(e),o=vn(null),s=vn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){o.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return o.current=gn(),()=>{o.current?.reset(),o.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Rc(c=>{let{input:d,key:l}=Fw(Gr(c));r.current(d,l)},[]);Zr(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=o.current,l=typeof c=="string"?c:c.toString("utf8"),u=d?.push(l)??[l];for(let f of u)a(f);l.length>0&&(s.current=setTimeout(()=>{let f=o.current?.flushPendingEscape();f&&a(f)},Mw))},{isActive:n,rawMode:!0})}i(xn,"useInput");function Qr(){let e=Yr(bn),t=e?.stdin??_c,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}i(Qr,"useStdin");function Sn(){return{exit:Yr(bn)?.exit??(()=>{})}}i(Sn,"useApp");function Zr(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,o=Yr(bn),{stdin:s,setRawMode:a,isRawModeSupported:c}=Qr(),d=vn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(o)return o.subscribeInput(m=>{d.current(m)},{rawMode:r});let l=s,u=l.isRaw;r&&c&&u===!1&&a(!0);let f=i(m=>{d.current(m)},"handleData");return l.on?.("data",f),()=>{if(l.off?.("data",f),r&&c&&u===!1)try{a(!1)}catch{}}},[o,s,n,r,c,a])}i(Zr,"useTerminalInput");import{jsx as U2}from"react/jsx-runtime";import{useInsertionEffect as W2,useMemo as H2}from"react";import{jsx as _H,jsxs as AH}from"react/jsx-runtime";import{jsx as oH}from"react/jsx-runtime";import aH,{useEffect as cH,useImperativeHandle as dH,useMemo as lH,useRef as uH,useCallback as fH,useState as pH}from"react";var ei=class{static{i(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var jw=1e3;var vH=new ei(jw);var Hw=40;function zw(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let o=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>o.includes(s))})}i(zw,"filterSessionPickerItems");function qw(e,t,n){let r=Math.max(1,n),o=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(o/r)*r;return{items:e.slice(s,s+r),selectedIndex:o,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}i(qw,"buildSessionPickerPage");function Vw(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${o} ${s}:${a}`}i(Vw,"formatTimestamp");function Gw({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:o=8}){let{exit:s}=Sn(),[a,c]=ti(""),[d,l]=ti(0),[u,f]=ti(!1),m=Ww(!1),p=Xw(()=>zw(e,a),[e,a]),g=qw(p,d,o),v=p[g.selectedIndex];return xn((w,y)=>{if(!m.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=p[g.selectedIndex];h&&(m.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,Hw));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)l(h=>Math.max(0,h-1));else if(y.downArrow)l(h=>Math.min(Math.max(0,p.length-1),h+1));else if(y.pageUp)l(h=>Math.max(0,h-o));else if(y.pageDown)l(h=>Math.min(Math.max(0,p.length-1),h+o));else if(y.home)l(0);else if(y.end)l(Math.max(0,p.length-1));else if(y.tab){let h=p[g.selectedIndex];h&&(c(h.title),l(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),l(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),l(0))}}),Je(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Tt(V,{bold:!0,color:"cyan",children:"Resume a session"}),Je(V,{children:["Search: ",Tt(V,{color:"yellow",children:a||"type to filter"})]}),Tt(V,{dimColor:!0,children:u?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Je(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Tt(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Je(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",Vw(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Je(V,{dimColor:!0,children:[p.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Je(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}i(Gw,"SessionPicker");async function Oc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,o=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=kn(Tt(Gw,{sessions:e,pageSize:a,onSelect:i(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:i(d=>{o=!0,s=d},"onSelectionError"),onCancel:i(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(o)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}i(Oc,"runSessionPicker");var Nc=65536,Lc=48;function Yw(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(Jw.homedir(),".kodax");return Qe.join(t,"sessions")}i(Yw,"defaultSessionsDir");function Dc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(Dc,"isSessionFile");async function Qw(e){let t=[],n;try{n=await Ye.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let o=Qe.join(e,r.name);if(r.isFile()&&Dc(r.name)&&!r.name.startsWith("archived-")){t.push(o);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Ye.readdir(o,{withFileTypes:!0}))s.isFile()&&Dc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(o,s.name))}catch{}}return t}i(Qw,"collectActiveSessionFiles");function $c(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}i($c,"normalizeComparableRoot");function Zw(e,t){let n=$c(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>$c(s)===n)}i(Zw,"matchesProjectRoot");async function ev(e){let t;try{t=await Ye.open(e,"r");let n=Buffer.allocUnsafe(Nc),{bytesRead:r}=await t.read(n,0,Nc,0);if(r===0)return;let o=n.toString("utf8",0,r),s=o.indexOf(`
|
|
830
|
+
`);if(s>=0)return o.slice(0,s).trim();let a=await Ye.readFile(e,"utf8"),c=a.indexOf(`
|
|
831
|
+
`);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}i(ev,"readFirstLine");async function tv(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Ye.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
|
|
832
|
+
`).length-1-r)}i(tv,"readMessageCount");function nv(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}i(nv,"runtimeSummary");async function rv(e,t){try{let n=await ev(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let o=r;if(o._type!=="meta"||o.scope==="managed-task-worker"||!Zw(o,t))return;let s=await tv(e,o);if(s<=0)return;let a=typeof o.createdAt=="string"?o.createdAt:void 0,c=nv(o);return{id:Qe.basename(e,".jsonl"),title:typeof o.title=="string"?o.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}i(rv,"readResumeCandidate");async function Fc(e){try{let t=e.sessionsDir??Yw();await Ks(t),await Ye.mkdir(t,{recursive:!0});let n=await Qw(t),r=[],o=new Set;for(let s=0;s<n.length;s+=Lc){let a=await Promise.all(n.slice(s,s+Lc).map(c=>rv(c,e.projectRoot)));for(let c of a)c&&!o.has(c.id)&&(o.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}i(Fc,"listCliResumeSessions");async function jc(e,t={}){return Oc(e,t)}i(jc,"runCliResumePicker");async function iv(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
|
|
654
833
|
`);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
|
|
655
|
-
`)}
|
|
834
|
+
`)}i(iv,"printResumeNotice");async function kz(e={}){let t=e.listSessions??Fc,n=e.pickSession??jc,r=e.notify??iv,o=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(o.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(o,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}i(kz,"resolveBareResume");export{kz as resolveBareResume};
|