@kodax-ai/kodax 0.7.84 → 0.7.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +218 -5
- package/README.md +1888 -1850
- package/README_CN.md +1146 -1137
- package/dist/chunks/agent-IO6TXNCV.js +2 -0
- package/dist/chunks/argument-completer-JMICSGL6.js +2 -0
- package/dist/chunks/chunk-2RAXDUC7.js +379 -0
- package/dist/chunks/chunk-A5VQGXH2.js +2 -0
- package/dist/chunks/{chunk-OHZFGQEH.js → chunk-AAFFS6RU.js} +2 -2
- package/dist/chunks/chunk-B36G256E.js +679 -0
- package/dist/chunks/chunk-G5FGIRDJ.js +1278 -0
- package/dist/chunks/chunk-GVGLYVG4.js +5 -0
- package/dist/chunks/chunk-MFCPQZ7E.js +519 -0
- package/dist/chunks/chunk-Q6UAGROD.js +415 -0
- package/dist/chunks/chunk-R4EHASEN.js +319 -0
- package/dist/chunks/chunk-U6HNMLNN.js +410 -0
- package/dist/chunks/chunk-UH5WNJXF.js +92 -0
- package/dist/chunks/{chunk-WTYAZOWO.js → chunk-UKCDCVMD.js} +1 -1
- package/dist/chunks/chunk-XA4ENCAH.js +412 -0
- package/dist/chunks/{chunk-ZVPTDYDI.js → chunk-XUKLF26Q.js} +2 -2
- package/dist/chunks/compaction-config-5RMG22CY.js +2 -0
- package/dist/chunks/{construction-bootstrap-EVQ6VWSX.js → construction-bootstrap-4DGAYOWH.js} +1 -1
- package/dist/chunks/dist-DFW7MXT7.js +2 -0
- package/dist/chunks/host-6MMHYTI5.js +2 -0
- package/dist/chunks/run-manager-ISQSWCAM.js +2 -0
- package/dist/chunks/utils-LV7FHKYN.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 +2074 -1615
- package/dist/kodax_resume.js +271 -90
- package/dist/runtime-worker.js +1812 -1359
- package/dist/sandbox-workspace-session.js +1069 -112
- 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 -15
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +73 -24
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +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 +250 -64
- package/dist/types-chunks/{bash-prefix-extractor.d-CkdGL4rM.d.ts → bash-prefix-extractor.d-QqKtuLZm.d.ts} +137 -14
- package/dist/types-chunks/{capsule.d-7wQ_kM1C.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-CesRxFL5.d.ts → controller.d-Dzxz22X-.d.ts} +26 -1020
- package/dist/types-chunks/{guardrail.d-KaIeVree.d.ts → guardrail.d-Y_AIh8-I.d.ts} +21 -21
- package/dist/types-chunks/{history-retrieval.d-CbCls7r0.d.ts → history-retrieval.d-Debbzn1z.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-DpRj8b7d.d.ts → public-api.d-Cg-4GTbK.d.ts} +3 -2
- package/dist/types-chunks/{repl.d-DWeC3PLW.d.ts → repl.d-Bhrbueab.d.ts} +5 -5
- package/dist/types-chunks/review-inbox.d-DuZqFX-z.d.ts +221 -0
- package/dist/types-chunks/{run-manager.d-BXBkLT0A.d.ts → run-manager.d-BS4lJfL3.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-DEtS6u20.d.ts → sdk-session-fQ_KENev.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-P2h4_KKL.d.ts → shell-command-sets.d-DRGjd_7Q.d.ts} +3 -2
- package/dist/types-chunks/{types-Bf3Y3mW-.d.ts → types-PHjfwebT.d.ts} +62 -190
- package/dist/types-chunks/{types.d-0m3PS7Ng.d.ts → types.d-BRrJU4pb.d.ts} +2 -2
- package/dist/types-chunks/{types.d-BbtGlKZu.d.ts → types.d-BSPlmJqf.d.ts} +25 -6
- package/dist/types-chunks/{types.d-CUtMr2IG.d.ts → types.d-Bo4fyMLu.d.ts} +1 -1
- package/dist/types-chunks/types.d-DlLBRqZ9.d.ts +1057 -0
- package/dist/types-chunks/{utils.d-C-eSIZ9n.d.ts → utils.d-BIhh_BqE.d.ts} +7 -4
- package/package.json +4 -2
- package/dist/chunks/agent-VMXNVYRK.js +0 -2
- package/dist/chunks/argument-completer-QCS6GUAE.js +0 -2
- package/dist/chunks/chunk-4ZI2CPUQ.js +0 -885
- package/dist/chunks/chunk-6UENDY33.js +0 -89
- package/dist/chunks/chunk-726WJGGY.js +0 -2
- package/dist/chunks/chunk-A7L7XTUH.js +0 -292
- package/dist/chunks/chunk-BBBS644N.js +0 -319
- package/dist/chunks/chunk-E7C4DRD2.js +0 -5
- package/dist/chunks/chunk-ET2BMEQQ.js +0 -655
- package/dist/chunks/chunk-EVXIJPZ6.js +0 -218
- package/dist/chunks/chunk-F44YYR6Z.js +0 -479
- package/dist/chunks/chunk-GRLC3N46.js +0 -385
- package/dist/chunks/chunk-KHEFUT6O.js +0 -5
- package/dist/chunks/chunk-TDJS5SFS.js +0 -348
- package/dist/chunks/chunk-WXHHZZRJ.js +0 -379
- package/dist/chunks/compaction-config-QTMFP7AF.js +0 -2
- package/dist/chunks/dist-XRH6CRLL.js +0 -2
- package/dist/chunks/host-F4TPD6WY.js +0 -2
- package/dist/chunks/run-manager-PYD46OGY.js +0 -2
- package/dist/chunks/utils-TOTTXU2I.js +0 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +0 -5752
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 Gc=Object.defineProperty;var i=(e,t)=>Gc(e,"name",{value:t,configurable:!0});var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Tr,ra,ia=Pt(()=>{Tr=class{static{i(this,"WebSocketStub")}},ra=Tr});var dn,oa=Pt(()=>{"use strict";ia();dn=global;dn.WebSocket||=ra;dn.window||=global;dn.self||=global;dn.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var sa,Rr,aa=Pt(()=>{sa=i(()=>{},"noop"),Rr={initialize:sa,connectToDevTools:sa}});var Bg={};var ca=Pt(()=>{"use strict";oa();aa();Rr.initialize();Rr.connectToDevTools()});import Ye from"node:fs/promises";import sv from"node:os";import Qe from"node:path";import R from"fs/promises";import js from"fs";import P from"path";import Rn from"path";import{createHash as Zc}from"crypto";import{execFile as Jc}from"child_process";import Yc from"path";import{promisify as Qc}from"util";var vv=Qc(Jc);function Tn(e){if(!(!e||!e.trim()))return Yc.resolve(e).replace(/\\/g,"/")}i(Tn,"normalizePath");function gi(e){let t=Tn(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=Tn(e.runtimeInfo?.executionCwd??t),r=Tn(e.runtimeInfo?.canonicalRepoRoot??t);if(!(!t&&!n&&!r))return{canonicalRepoRoot:r,workspaceRoot:t,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}i(gi,"resolveSessionRuntimeInfo");var Ze="_unknown",yi=80;function ed(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}i(ed,"caseFold");function td(e){return ed(Rn.resolve(e).replace(/\\/g,"/"))}i(td,"normalizeRoot");function wi(e){return Zc("sha256").update(e).digest("hex").slice(0,10)}i(wi,"shortHash");function nd(e){let t=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return t.length>yi?t.slice(t.length-yi):t}i(nd,"slugify");function rd(e){if(!e||!e.trim())return{key:Ze,canonicalRoot:null,displayName:Ze};let t=td(e),n=nd(t),r=n?`${n}-${wi(t)}`:wi(t),o=Rn.basename(Rn.resolve(e).replace(/\\/g,"/"))||e;return{key:r,canonicalRoot:t,displayName:o}}i(rd,"deriveProjectKeyFromRoot");function vi(e){let t=gi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=t?.canonicalRepoRoot??t?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return rd(n)}i(vi,"deriveProjectKeyFromData");import tn from"node:fs/promises";import mt from"node:path";import{AsyncLocalStorage as id}from"node:async_hooks";var od=new id;function Mt(e){let t=od.getStore()?.credential;return t?et(e,t,new WeakMap):e}i(Mt,"redactScopedProviderCredential");function et(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=n.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(et(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=et(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(et(a,t,n));return s}let o={};n.set(e,o);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let c=s.split(t).join("[REDACTED_CREDENTIAL]");o[c]=et(a.value,t,n)}return o}i(et,"redactCredentialValue");import{AsyncLocalStorage as sd}from"node:async_hooks";var Gv=new sd;var tt={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},bi={...tt,multimodalSupport:"image-input"},Ot={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},ki={...Ot,multimodalSupport:"image-input"};import Tb from"@anthropic-ai/sdk";import{parse as pb}from"partial-json";import Xb from"openai";import{ClientSideConnection as ck,PROTOCOL_VERSION as dk,ndJsonStream as lk}from"@agentclientprotocol/sdk";var tk=Object.freeze({status:"terminated"}),nk=Object.freeze({status:"already-exited"}),rk=Object.freeze({status:"unknown"}),ik=String.raw`
|
|
3
3
|
using System;
|
|
4
4
|
using System.Runtime.InteropServices;
|
|
5
5
|
using System.Text;
|
|
@@ -86,8 +86,8 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
86
86
|
CloseHandle(snapshot);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
}`;import 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 Ri from"node:fs";import _i from"node:os";import Ai from"node:path";var _d="gpt-5.4",Ad="auto-gemini-3",Pd=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Md=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Pi(e){let t=new Set,n=[];for(let r of e){let o=r.trim();if(!o)continue;let s=o.toLowerCase();t.has(s)||(t.add(s),n.push(o))}return n}i(Pi,"dedupePreserveOrder");function Od(){let e=Ai.join(_i.homedir(),".codex","config.toml");try{return Ri.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Od,"readCodexConfiguredModel");function Nd(){let e=Ai.join(_i.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ri.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}i(Nd,"readGeminiConfiguredModel");function Oe(){return Od()||_d}i(Oe,"getCodexCliDefaultModel");function Ne(){return Nd()||Ad}i(Ne,"getGeminiCliDefaultModel");function nt(){return Pi([Oe(),...Pd])}i(nt,"getCodexCliKnownModels");function rt(){return Pi([Ne(),...Md])}i(rt,"getGeminiCliKnownModels");var Wk=Ne(),Hk=rt();var rx=Oe(),ix=nt();import{existsSync as Hd,readFileSync as zd}from"node:fs";import De from"node:path";import{fileURLToPath as qd}from"node:url";var Mi=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Oi=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Ni=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Li=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Di=["max_tokens","max_completion_tokens"],$i=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Fi=["count-tokens","models-list","minimal-message","unsupported"];function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(ne,"isPlainObject");function ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}i(ke,"requireString");function Le(e,t){if(e!==void 0)return ke(e,t)}i(Le,"optionalString");function Bi(e,t){if(e!==void 0){if(typeof e!="string"||!Di.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Di.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Bi,"optionalMaxOutputTokensField");function pe(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}i(pe,"optionalNumber");function D(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}i(D,"optionalBoolean");function ji(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>ke(n,`${t}[${r}]`))}}i(ji,"optionalStringArray");function Dd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=ke(o,`${t}.${r}`);return n}i(Dd,"optionalStringMap");function $d(e,t){if(e!==void 0){if(typeof e!="string"||!Li.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Li.join(", ")}, got ${JSON.stringify(e)}`);return e}}i($d,"optionalReasoningPreset");function Pn(e,t){if(typeof e!="string"||!Mi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Mi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Pn,"requireReasoningCapability");function Fd(e,t){if(typeof e!="string"||!Oi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Oi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Fd,"requireEffortStrategy");function jd(e,t){if(e!==void 0){if(typeof e!="string"||!Ni.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ni.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(jd,"optionalThinkingStrategy");function Ki(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Fd(e.effortStrategy,`${t}.effortStrategy`),r=$d(e.reasoningPreset,`${t}.reasoningPreset`),o=jd(e.thinkingStrategy,`${t}.thinkingStrategy`),s=Le(e.defaultEffort,`${t}.defaultEffort`),a=Dd(e.effortAliases,`${t}.effortAliases`),c=ji(e.disabledEfforts,`${t}.disabledEfforts`),d=ji(e.localRejectEfforts,`${t}.localRejectEfforts`),l=D(e.allowCustomEffort,`${t}.allowCustomEffort`),u=D(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),f=D(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=D(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),m=D(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),g=D(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),v=D(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),w=D(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(r!==void 0&&(y.reasoningPreset=r),o!==void 0&&(y.thinkingStrategy=o),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),c!==void 0&&(y.disabledEfforts=c),d!==void 0&&(y.localRejectEfforts=d),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((h,b)=>{if(!ne(h))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${b}] must be an object`);return{value:ke(h.value,`${t}.supportedEfforts[${b}].value`),...Le(h.description,`${t}.supportedEfforts[${b}].description`)!==void 0?{description:Le(h.description,`${t}.supportedEfforts[${b}].description`)}:{},...D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)!==void 0?{isDefault:D(h.isDefault,`${t}.supportedEfforts[${b}].isDefault`)}:{},...D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)!==void 0?{isUserVisible:D(h.isUserVisible,`${t}.supportedEfforts[${b}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ne(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let h={};for(let[b,I]of Object.entries(e.budgetByEffort))h[b]=pe(I,`${t}.budgetByEffort.${b}`)??0;y.budgetByEffort=h}return l!==void 0&&(y.allowCustomEffort=l),u!==void 0&&(y.supportsReasoningEffort=u),f!==void 0&&(y.supportsReasoningSummary=f),p!==void 0&&(y.supportsEncryptedReasoningReplay=p),m!==void 0&&(y.supportsAdaptiveThinking=m),g!==void 0&&(y.supportsManualThinkingBudget=g),v!==void 0&&(y.supportsDisabledThinking=v),w!==void 0&&(y.requiresEffortBetaHeader=w),y}i(Ki,"validateReasoningProfile");function Ui(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Ki(n,`${t}.reasoningProfile`):Ki(r,`${t}.reasoningCapabilityV2`)}i(Ui,"validateReasoningProfileField");function Kd(e,t){if(typeof e!="string"||!$i.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$i.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Kd,"requireProfileName");function Bd(e,t){if(typeof e!="string"||!Fi.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Fi.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Bd,"requireVerifyStrategy");function Ud(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=ke(e.id,`${t}.id`),r=Le(e.wireModel,`${t}.wireModel`),o=Le(e.displayName,`${t}.displayName`),s=pe(e.contextWindow,`${t}.contextWindow`),a=pe(e.maxOutputTokens,`${t}.maxOutputTokens`),c=Bi(e.maxOutputTokensField,`${t}.maxOutputTokensField`),d=pe(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=D(e.replayReasoningContent,`${t}.replayReasoningContent`),u=D(e.strictThinkingSignature,`${t}.strictThinkingSignature`),f=pe(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:Pn(e.reasoningCapability,`${t}.reasoningCapability`),m=Ui(e,t),g={id:n};return r!==void 0&&(g.wireModel=r),o!==void 0&&(g.displayName=o),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),c!==void 0&&(g.maxOutputTokensField=c),d!==void 0&&(g.thinkingBudgetCap=d),p!==void 0&&(g.reasoningCapability=p),m!==void 0&&(g.reasoningProfile=m),l!==void 0&&(g.replayReasoningContent=l),u!==void 0&&(g.strictThinkingSignature=u),f!==void 0&&(g.streamMaxDurationMs=f),g}i(Ud,"validateModelDescriptor");function Xd(e,t){if(e===void 0)return;if(!ne(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,o]of Object.entries(e))n[r]=Pn(o,`${t}.${r}`);return n}i(Xd,"validateModelReasoningCapabilities");function Wd(e,t){if(!ne(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=D(e.cliBridge,`providers.${t}.cliBridge`),r=ke(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),o=Pn(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=Ui(e,`providers.${t}`),a=Kd(e.capabilityProfile,`providers.${t}.capabilityProfile`),c=Bd(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&c!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${c}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let d=pe(e.contextWindow,`providers.${t}.contextWindow`),l=pe(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=Bi(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),f=pe(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),p=D(e.supportsThinking,`providers.${t}.supportsThinking`),m=Xd(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=Le(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let v;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);v=e.models.map((h,b)=>Ud(h,`providers.${t}.models[${b}]`));let y=new Set([...g===void 0?[]:[g],...v.map(h=>h.id)]);for(let[h,b]of v.entries())if(b.wireModel!==void 0&&!y.has(b.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(b.wireModel)}`)}let w={apiKeyEnv:r,reasoningCapability:o,capabilityProfile:a,verifyStrategy:c};return s!==void 0&&(w.reasoningProfile=s),g!==void 0&&(w.model=g),v!==void 0&&(w.models=v),d!==void 0&&(w.contextWindow=d),l!==void 0&&(w.maxOutputTokens=l),u!==void 0&&(w.maxOutputTokensField=u),f!==void 0&&(w.thinkingBudgetCap=f),p!==void 0&&(w.supportsThinking=p),m!==void 0&&(w.modelReasoningCapabilities=m),n&&(w.cliBridge=!0),w}i(Wd,"validateProviderEntry");function Xi(e){if(!ne(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=ke(e.updatedAt,"updatedAt");if(!ne(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,o]of Object.entries(e.providers))n[r]=Wd(o,r);return{version:1,updatedAt:t,providers:n}}i(Xi,"validateProviderCapabilitiesJson");var Vd=Object.freeze({native:tt,"image-input-native":bi,"cli-bridge":Ot,"image-input-cli-bridge":ki}),$t=null;function Gd(){if(process.env.KODAX_BUNDLED==="true")return De.join(De.dirname(process.execPath),"provider-capabilities.json");let e=De.dirname(qd(import.meta.url)),t=[De.join(e,"provider-capabilities.json"),De.join(De.dirname(e),"provider-capabilities.json")];for(let n of t)if(Hd(n))return n;return t[0]}i(Gd,"resolveJsonPath");function Jd(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Wi(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Wi(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(Jd,"deepFreezeSnapshot");function Wi(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}i(Wi,"freezeReasoningProfile");function Yd(e){if(e==="gemini-cli"){let t=Ne();return{model:t,models:rt().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Oe();return{model:t,models:nt().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}i(Yd,"resolveCliBridgeModels");function Qd(e,t){let n=Vd[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let o=Yd(e),s={model:o.model,models:o.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}i(Qd,"buildSnapshot");function Hi(){if($t)return $t;let e=Gd(),t;try{let o=zd(e,"utf8");t=JSON.parse(o)}catch(o){let s=o instanceof Error?o.message:String(o);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Xi(t),r={};for(let[o,s]of Object.entries(n.providers))r[o]=Jd(Qd(o,s));return $t=Object.freeze(r),$t}i(Hi,"getProviderSnapshots");import Rx from"@anthropic-ai/sdk";var Ft=Hi();var zi=process.env.KODAX_PROVIDER??"zhipu-coding";var Al=[];function z(e){let t=Mt(e),n=Al.at(-1)?.sink;if(n){try{n(t)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${lo(t)}
|
|
90
|
+
`)}catch{}}i(z,"emitKodaXDiagnostic");function lo(e){let t=Mt(e),n=Pl(t.detail);return`[${t.source}] ${t.level}: ${t.message}${n?` ${n}`:""}`}i(lo,"formatKodaXDiagnostic");function Pl(e){if(e===void 0)return"";if(e instanceof Error)return e.stack??e.message;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}i(Pl,"formatDiagnosticDetail");var it=class e{static{i(this,"SpanImpl")}id;traceId;parentId;name;data;startedAt;_endedAt;_error;_children=[];now;nextSpanId;onChildCreated;onSpanEnd;_ended=!1;constructor(t){this.id=t.id,this.traceId=t.traceId,this.parentId=t.parentId,this.name=t.name,this.data=t.data,this.now=t.now??(()=>Date.now()),this.startedAt=t.startedAt??this.now(),this.nextSpanId=t.nextSpanId??Ml,this.onChildCreated=t.onChildCreated,this.onSpanEnd=t.onSpanEnd}get endedAt(){return this._endedAt}get error(){return this._error}get children(){return this._children}addChild(t,n){let r=new e({id:this.nextSpanId(),traceId:this.traceId,parentId:this.id,name:t,data:n,now:this.now,nextSpanId:this.nextSpanId,onChildCreated:this.onChildCreated,onSpanEnd:this.onSpanEnd});return this._children.push(r),this.onChildCreated&&this.onChildCreated(r),r}setError(t){t instanceof Error?this._error={message:t.message,stack:t.stack}:this._error=t}end(){this._ended||(this._ended=!0,this._endedAt=this.now(),this.onSpanEnd&&this.onSpanEnd(this))}},uo=0;function Ml(){uo+=1;let e=Math.random().toString(36).slice(2,8);return`span-${Date.now()}-${uo}-${e}`}i(Ml,"defaultNextSpanId");var fo=0;function Ol(){fo+=1;let e=Math.random().toString(36).slice(2,8);return`trace-${Date.now()}-${fo}-${e}`}i(Ol,"defaultNextTraceId");function Fn(e={}){let t=e.now??(()=>Date.now()),n=e.id??(e.nextTraceId??Ol)(),r=t(),o=e.name??"trace",s=e.metadata??new Map,a=e.rootSpanData??{kind:"agent",agentName:o},c=!1,d,l,u=new it({id:`${n}-root`,traceId:n,name:o,data:a,startedAt:r,now:t,nextSpanId:e.nextSpanId,onChildCreated:e.onSpanStart,onSpanEnd:e.onSpanEnd});e.onSpanStart&&e.onSpanStart(u);let f={id:n,startedAt:r,rootSpan:u,metadata:s,get endedAt(){return d},get error(){return l??u.error},end(){c||(c=!0,d=t(),u.end(),e.onTraceEnd&&e.onTraceEnd(f))}};return f}i(Fn,"createTrace");var jn=[];function Kn(e){for(let t of jn)try{t.onSpanStart(e)}catch{}}i(Kn,"_emitSpanStart");function Bn(e){for(let t of jn)try{t.onSpanEnd(e)}catch{}}i(Bn,"_emitSpanEnd");function Un(e){for(let t of jn)try{t.onTraceEnd(e)}catch{}}i(Un,"_emitTraceEnd");var jt=class{static{i(this,"Tracer")}options;constructor(t={}){this.options=t}startTrace(t={}){return Fn({id:t.id,name:t.name,rootSpanData:t.rootSpanData,metadata:t.metadata,now:this.options.now,nextSpanId:this.options.nextSpanId,nextTraceId:this.options.nextTraceId,onSpanStart:Kn,onSpanEnd:Bn,onTraceEnd:Un})}},po=new jt;var jl=["read","edit","bash:test","bash:read-only","bash:mutating","bash:network","subagent"];var hI=new Set(jl);import{spawnSync as Kt}from"node:child_process";import{readFileSync as su}from"node:fs";var Bt=5e3,cC=String.raw`
|
|
91
91
|
using System;
|
|
92
92
|
using System.Runtime.InteropServices;
|
|
93
93
|
public static class KodaXWindowsJobMembership {
|
|
@@ -154,7 +154,7 @@ public static class KodaXWindowsJobMembership {
|
|
|
154
154
|
CloseHandle(job);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
}`,
|
|
157
|
+
}`,dC=String.raw`
|
|
158
158
|
$ErrorActionPreference = 'Stop'
|
|
159
159
|
$source = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:KODAX_INTERNAL_JOB_QUERY_SOURCE))
|
|
160
160
|
Add-Type -TypeDefinition $source
|
|
@@ -162,7 +162,7 @@ if ([KodaXWindowsJobMembership]::IsCurrentProcessContained($env:KODAX_DAEMON_JOB
|
|
|
162
162
|
[Console]::Out.Write('1')
|
|
163
163
|
} else {
|
|
164
164
|
[Console]::Out.Write('0')
|
|
165
|
-
}`,
|
|
165
|
+
}`,au=String.raw`
|
|
166
166
|
using System;
|
|
167
167
|
using System.Runtime.InteropServices;
|
|
168
168
|
using System.Text;
|
|
@@ -249,26 +249,207 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
249
249
|
CloseHandle(snapshot);
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
-
}`,
|
|
253
|
-
`),
|
|
254
|
-
`)}o(
|
|
252
|
+
}`,lC=Object.freeze({status:"terminated"}),uC=Object.freeze({status:"already-exited"}),fC=Object.freeze({status:"unknown"});function cu(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).flatMap(o=>{if(typeof o!="object"||o===null)return[];let s=o,a=Number(s.pid),c=Number(s.parentPid),d=typeof s.creationTime=="string"?s.creationTime:String(s.creationTime??"0");return!Number.isFinite(a)||a<=0||!Number.isFinite(c)?[]:[{pid:a,parentPid:c,creationTime:/^\d+$/.test(d)?d:"0"}]})}catch{return[]}}i(cu,"parseWindowsProcessSnapshotJson");function du(e){let t=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-])(\d{3})$/.exec(e);if(!t)return;let[,n,r,o,s,a,c,d,l,u]=t,f=Date.UTC(Number(n),Number(r)-1,Number(o),Number(s),Number(a),Number(c),Number(d.slice(0,3))),p=Number(u)*6e4*(l==="+"?1:-1),m=f-p;if(Number.isFinite(m))return{identity:(BigInt(m)+11644473600000n).toString(),unixMs:m}}i(du,"parseWmicCreationTime");function lu(){let e=["$cutoff = [DateTime]::UtcNow","$items = try { @(Get-CimInstance Win32_Process -ErrorAction Stop) } catch { @(Get-WmiObject Win32_Process -ErrorAction Stop) }","$rows = @($items | ForEach-Object {"," $creationTime = '0'"," try {"," $created = $_.CreationDate"," if ($created -isnot [DateTime]) { $created = [System.Management.ManagementDateTimeConverter]::ToDateTime([string]$created) }"," $created = $created.ToUniversalTime()"," if ($created -le $cutoff) { $creationTime = ([long][Math]::Floor($created.ToFileTimeUtc() / 10000)).ToString() }"," } catch {}"," [PSCustomObject]@{ pid = [int]$_.ProcessId; parentPid = [int]$_.ParentProcessId; creationTime = $creationTime }","})","$rows | ConvertTo-Json -Compress"].join(`
|
|
253
|
+
`),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(!t.error&&t.status===0){let s=cu(t.stdout);if(s.length>0)return s}let n=Date.now(),r=Kt("wmic",["process","get","CreationDate,ParentProcessId,ProcessId","/format:list"],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(r.error||r.status!==0)return;let o=r.stdout.split(/\r?\n\s*\r?\n/).flatMap(s=>{let a=new Map(s.split(/\r?\n/).flatMap(f=>{let p=f.indexOf("=");return p<0?[]:[[f.slice(0,p),f.slice(p+1)]]})),c=Number(a.get("ProcessId")),d=Number(a.get("ParentProcessId")),l=a.get("CreationDate"),u=l===void 0?void 0:du(l);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)||u===void 0||u.unixMs>n?[]:[{pid:c,parentPid:d,creationTime:u.identity}]});return o.length>0?o:void 0}i(lu,"readWindowsProcessSnapshotFallback");function uu(){let e=["$source = @'",au,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
|
|
254
|
+
`),t=Kt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Bt,windowsHide:!0});if(t.error||t.status!==0)return;let n=t.stdout.split(/\r?\n/).flatMap(r=>{let[o,s,a="0"]=r.split(",",3),c=Number(o),d=Number(s);return!Number.isFinite(c)||c<=0||!Number.isFinite(d)?[]:[{pid:c,parentPid:d,creationTime:a}]});return n.length>0?n:void 0}i(uu,"readWindowsProcessSnapshotNative");function fu(){return uu()??lu()}i(fu,"readWindowsProcessSnapshot");function Xn(e){if(!Number.isInteger(e)||e<=0)return;if(process.platform==="win32"){let r=fu()?.find(o=>o.pid===e);return r?.creationTime==="0"?void 0:r?.creationTime}if(process.platform==="linux")try{let r=su(`/proc/${e}/stat`,"utf8"),o=r.slice(r.lastIndexOf(")")+2).trim().split(/\s+/);return o[19]===void 0?void 0:`linux:${o[19]}`}catch{return}let t=Kt("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:Bt,windowsHide:!0}),n=t.status===0?t.stdout.trim():"";return n===""?void 0:`${process.platform}:${n}`}i(Xn,"readProcessStartIdentity");var vo="KODAX_EFFECT_JOB_PAYLOAD";var mu=String.raw`
|
|
255
|
+
using System;
|
|
256
|
+
using System.IO;
|
|
257
|
+
using System.Runtime.InteropServices;
|
|
258
|
+
using System.Threading;
|
|
259
|
+
|
|
260
|
+
public static class KodaXEffectJob {
|
|
261
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
262
|
+
private struct IoCounters {
|
|
263
|
+
public ulong ReadOperationCount;
|
|
264
|
+
public ulong WriteOperationCount;
|
|
265
|
+
public ulong OtherOperationCount;
|
|
266
|
+
public ulong ReadTransferCount;
|
|
267
|
+
public ulong WriteTransferCount;
|
|
268
|
+
public ulong OtherTransferCount;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
272
|
+
private struct BasicLimitInformation {
|
|
273
|
+
public long PerProcessUserTimeLimit;
|
|
274
|
+
public long PerJobUserTimeLimit;
|
|
275
|
+
public uint LimitFlags;
|
|
276
|
+
public UIntPtr MinimumWorkingSetSize;
|
|
277
|
+
public UIntPtr MaximumWorkingSetSize;
|
|
278
|
+
public uint ActiveProcessLimit;
|
|
279
|
+
public UIntPtr Affinity;
|
|
280
|
+
public uint PriorityClass;
|
|
281
|
+
public uint SchedulingClass;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
285
|
+
private struct ExtendedLimitInformation {
|
|
286
|
+
public BasicLimitInformation BasicLimitInformation;
|
|
287
|
+
public IoCounters IoInfo;
|
|
288
|
+
public UIntPtr ProcessMemoryLimit;
|
|
289
|
+
public UIntPtr JobMemoryLimit;
|
|
290
|
+
public UIntPtr PeakProcessMemoryUsed;
|
|
291
|
+
public UIntPtr PeakJobMemoryUsed;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
295
|
+
private struct BasicAccountingInformation {
|
|
296
|
+
public long TotalUserTime;
|
|
297
|
+
public long TotalKernelTime;
|
|
298
|
+
public long ThisPeriodTotalUserTime;
|
|
299
|
+
public long ThisPeriodTotalKernelTime;
|
|
300
|
+
public uint TotalPageFaultCount;
|
|
301
|
+
public uint TotalProcesses;
|
|
302
|
+
public uint ActiveProcesses;
|
|
303
|
+
public uint TotalTerminatedProcesses;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
307
|
+
private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
|
|
308
|
+
|
|
309
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
310
|
+
private static extern bool SetInformationJobObject(
|
|
311
|
+
IntPtr job,
|
|
312
|
+
int infoClass,
|
|
313
|
+
ref ExtendedLimitInformation info,
|
|
314
|
+
uint length);
|
|
315
|
+
|
|
316
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
317
|
+
private static extern bool QueryInformationJobObject(
|
|
318
|
+
IntPtr job,
|
|
319
|
+
int infoClass,
|
|
320
|
+
out BasicAccountingInformation info,
|
|
321
|
+
uint length,
|
|
322
|
+
IntPtr returnLength);
|
|
323
|
+
|
|
324
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
325
|
+
private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
|
|
326
|
+
|
|
327
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
328
|
+
private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
|
|
329
|
+
|
|
330
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
331
|
+
private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
|
|
332
|
+
|
|
333
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
334
|
+
private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
|
|
335
|
+
|
|
336
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
337
|
+
private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
|
|
338
|
+
|
|
339
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
340
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
341
|
+
|
|
342
|
+
private const uint Synchronize = 0x00100000;
|
|
343
|
+
private const uint ProcessTerminate = 0x0001;
|
|
344
|
+
private const uint ProcessSetQuota = 0x0100;
|
|
345
|
+
private const uint ProcessQueryLimitedInformation = 0x1000;
|
|
346
|
+
private const uint JobObjectLimitKillOnJobClose = 0x00002000;
|
|
347
|
+
private const uint WaitObject0 = 0;
|
|
348
|
+
|
|
349
|
+
private static void Require(bool result, string operation) {
|
|
350
|
+
if (!result) throw new InvalidOperationException(
|
|
351
|
+
operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
private static void PublishReady() {
|
|
355
|
+
Console.Out.WriteLine("READY");
|
|
356
|
+
Console.Out.Flush();
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
public static void Run(uint targetPid, uint ownerPid, string jobName) {
|
|
360
|
+
var job = CreateJobObjectW(IntPtr.Zero, jobName);
|
|
361
|
+
if (job == IntPtr.Zero) throw new InvalidOperationException(
|
|
362
|
+
"CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
363
|
+
var processAccess = Synchronize | ProcessTerminate | ProcessSetQuota | ProcessQueryLimitedInformation;
|
|
364
|
+
var target = OpenProcess(processAccess, false, targetPid);
|
|
365
|
+
var owner = OpenProcess(Synchronize, false, ownerPid);
|
|
366
|
+
if (target == IntPtr.Zero || owner == IntPtr.Zero) {
|
|
367
|
+
if (target != IntPtr.Zero) CloseHandle(target);
|
|
368
|
+
if (owner != IntPtr.Zero) CloseHandle(owner);
|
|
369
|
+
CloseHandle(job);
|
|
370
|
+
throw new InvalidOperationException(
|
|
371
|
+
"OpenProcess failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
var limits = new ExtendedLimitInformation();
|
|
375
|
+
limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
|
|
376
|
+
Require(SetInformationJobObject(
|
|
377
|
+
job,
|
|
378
|
+
9,
|
|
379
|
+
ref limits,
|
|
380
|
+
(uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
|
|
381
|
+
"SetInformationJobObject");
|
|
382
|
+
Require(AssignProcessToJobObject(job, target), "AssignProcessToJobObject");
|
|
383
|
+
PublishReady();
|
|
384
|
+
|
|
385
|
+
uint targetExitCode = 1;
|
|
386
|
+
while (true) {
|
|
387
|
+
if (WaitForSingleObject(owner, 0) == WaitObject0) break;
|
|
388
|
+
if (WaitForSingleObject(target, 0) == WaitObject0) {
|
|
389
|
+
GetExitCodeProcess(target, out targetExitCode);
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
Thread.Sleep(20);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
Require(TerminateJobObject(job, targetExitCode), "TerminateJobObject");
|
|
396
|
+
while (true) {
|
|
397
|
+
BasicAccountingInformation accounting;
|
|
398
|
+
Require(QueryInformationJobObject(
|
|
399
|
+
job,
|
|
400
|
+
1,
|
|
401
|
+
out accounting,
|
|
402
|
+
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
|
|
403
|
+
IntPtr.Zero),
|
|
404
|
+
"QueryInformationJobObject");
|
|
405
|
+
if (accounting.ActiveProcesses == 0) return;
|
|
406
|
+
Thread.Sleep(10);
|
|
407
|
+
}
|
|
408
|
+
} finally {
|
|
409
|
+
CloseHandle(owner);
|
|
410
|
+
CloseHandle(target);
|
|
411
|
+
CloseHandle(job);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}`,hu=String.raw`
|
|
415
|
+
$ErrorActionPreference = 'Stop'
|
|
416
|
+
try {
|
|
417
|
+
$payload = [Text.Encoding]::UTF8.GetString(
|
|
418
|
+
[Convert]::FromBase64String($env:${vo})) | ConvertFrom-Json
|
|
419
|
+
Remove-Item Env:${vo} -ErrorAction SilentlyContinue
|
|
420
|
+
$source = @'
|
|
421
|
+
${mu}
|
|
422
|
+
'@
|
|
423
|
+
Add-Type -TypeDefinition $source
|
|
424
|
+
[KodaXEffectJob]::Run(
|
|
425
|
+
[uint32]$payload.targetPid,
|
|
426
|
+
[uint32]$payload.ownerPid,
|
|
427
|
+
[string]$payload.jobName)
|
|
428
|
+
exit 0
|
|
429
|
+
} catch {
|
|
430
|
+
[Console]::Out.WriteLine('ERROR:' + $_.Exception.Message)
|
|
431
|
+
[Console]::Out.Flush()
|
|
432
|
+
exit 1
|
|
433
|
+
}`,xC=Buffer.from(hu,"utf16le").toString("base64");import{Jimp as WC}from"jimp";var Eu=Math.floor(3.75*1024*1024);var Cu=1440*60*1e3;import{fileURLToPath as Zu}from"url";import{dirname as ef}from"path";var tf=Zu(import.meta.url),GR=ef(tf);import{readFile as af,readdir as cf}from"fs/promises";import{join as xe,relative as df}from"path";import _o from"yaml";var nf=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function rf(e){let t=e.split(`
|
|
434
|
+
`),n=[];for(let r of t){let o=r.indexOf(":");if(o>0){let s=r.slice(0,o).trim(),a=r.slice(o+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
|
|
435
|
+
`)}i(rf,"sanitizeYaml");function Ao(e,t={}){let n=e.replace(/^/,"").replace(/\r\n/g,`
|
|
255
436
|
`).replace(/\r/g,`
|
|
256
437
|
`).trimStart();if(!n.startsWith(`---
|
|
257
438
|
`)){if(t.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,e]}let r=n.indexOf(`
|
|
258
439
|
---
|
|
259
440
|
`,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
|
-
`)}
|
|
441
|
+
---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(t.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,e]}let o=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=_o.parse(o)??{}}catch{a=_o.parse(rf(o))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(t.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}i(Ao,"parseYamlFrontmatter");function Po(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.map(n=>String(n).trim()).filter(n=>n.length>0);return t.length>0?t.join(", "):void 0}}i(Po,"normalizeAllowedToolsString");function of(e){if(typeof e=="string"){let t=e.trim();return t?{command:t}:void 0}if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e,n=typeof t.command=="string"?t.command.trim():"";if(!n)return;let r=typeof t.matcher=="string"&&t.matcher.trim()?t.matcher.trim():void 0;return{command:n,matcher:r}}}i(of,"normalizeYamlHookEntry");function sf(e){if(e==null)return;let n=(Array.isArray(e)?e:[e]).map(r=>of(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}i(sf,"normalizeYamlHookEntryList");function Mo(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n={};for(let r of nf){let o=sf(t[r]);o&&(n[r]=o)}return Object.keys(n).length>0?n:void 0}i(Mo,"normalizeYamlHookMap");function Oo(e){let[t,n]=Ao(e,{throwOnMissing:!0});if(!t)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!t.name||typeof t.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!t.description||typeof t.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:t.name,description:t.description,disableModelInvocation:t["disable-model-invocation"]===!0,userInvocable:t["user-invocable"]!==!1,allowedTools:Po(t["allowed-tools"]),context:t.context==="fork"?"fork":void 0,agent:typeof t.agent=="string"?t.agent:void 0,argumentHint:typeof t["argument-hint"]=="string"?t["argument-hint"]:void 0,model:typeof t.model=="string"?t.model:void 0,hooks:Mo(t.hooks),license:typeof t.license=="string"?t.license:void 0,compatibility:typeof t.compatibility=="string"?t.compatibility:void 0,metadata:t.metadata&&typeof t.metadata=="object"&&!Array.isArray(t.metadata)?t.metadata:void 0},body:n}}i(Oo,"parseSkillMarkdown");async function Ut(e,t){let n=xe(e,"SKILL.md");try{let r=await af(n,"utf-8"),{frontmatter:o,body:s}=Oo(r),[a,c,d,l,u]=await Promise.all([$e(xe(e,"scripts")),$e(xe(e,"references")),$e(xe(e,"assets")),$e(xe(e,"templates")),$e(xe(e,"resources"))]);return{...o,path:e,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:t,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...l.length>0&&{templates:l},...u.length>0&&{resources:u}}}catch(r){return z({source:"agent:skills",level:"error",message:`Failed to load skill from ${e}.`,detail:r}),null}}i(Ut,"loadFullSkill");async function $e(e,t=e){let n=[];try{let r=await cf(e,{withFileTypes:!0});r.sort((o,s)=>o.name.localeCompare(s.name));for(let o of r){let s=xe(e,o.name);if(o.isDirectory()){n.push(...await $e(s,t));continue}o.isFile()&&n.push({name:o.name,path:s,relativePath:df(t,s).replace(/\\/g,"/")})}}catch{}return n}i($e,"loadSkillFiles");var No=64*1024,Lo=256*1024;var h_=Xn(process.pid);var B_=1024*1024;var wA=16*1024;var TA=16*1024;import{execSync as zf}from"child_process";import qf from"path";var Vf=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function Jo(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Vf)if(t===n||t.startsWith(`${n} `)){if(n==="sed"&&t.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let o=t.split(/\s+/);if(o.includes("-f")||o.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let o=t.split(/\s+/).slice(1);if(o.length>0&&!o.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}i(Jo,"isSingleSafeDynamicContextCommand");function Gf(e){if(!e||!e.trim())return!1;let t=e.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(t)||t.includes("\\")&&qf.sep!=="\\"&&t.replace(/\\ /g,"").includes("\\"))return!1;let r=t.split(/\s*&&\s*/);if(r.length===1)return Jo(r[0]);for(let o of r){let s=o?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Jo(s))return!1}return!0}i(Gf,"isSafeDynamicContextCommand");function Yo(e){let t=[],n="",r=!1,o="";for(let s=0;s<e.length;s++){let a=e[s];r?a===o?r=!1:n+=a:a==='"'||a==="'"?(r=!0,o=a):a===" "?n&&(t.push(n),n=""):n+=a}return n&&t.push(n),t}i(Yo,"parseArguments");var zt=class{static{i(this,"VariableResolver")}context;constructor(t){this.context=t}async resolve(t,n){let r=t,o=Yo(n);return r=this.resolvePositionalArgs(r,o),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(t,n){return t.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,o)=>{let s=parseInt(o,10);return n[s]??""})}resolveArguments(t,n){return t.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(t){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return t.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,o)=>n[o]??r)}async resolveDynamicContext(t){let n=/!`([^`]+)`/g,r=[],o;for(;(o=n.exec(t))!==null;)r.push({match:o[0],command:o[1]});if(r.length===0)return t;let s=t;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let l=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${l}]`)}return s}async executeDynamicCommand(t){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(t,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!Gf(t))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return zf(t,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};async function ct(e,t,n){return new zt(n).resolve(e,t)}i(ct,"resolveSkillContent");function Qo(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}i(Qo,"escapeXml");var Gn=120;function qt(e){return e.replace(/\\/g,"/")}i(qt,"formatDisplayPath");function Qf(e){return[...(e.references??[]).map(t=>({folder:"references",file:t})),...(e.scripts??[]).map(t=>({folder:"scripts",file:t})),...(e.assets??[]).map(t=>({folder:"assets",file:t})),...(e.templates??[]).map(t=>({folder:"templates",file:t})),...(e.resources??[]).map(t=>({folder:"resources",file:t}))]}i(Qf,"collectSupportFiles");function Zf(e){let t=Qf(e);if(t.length===0)return[];let n=[["references",e.references],["scripts",e.scripts],["assets",e.assets],["templates",e.templates],["resources",e.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[o,s]of n)s?.length&&r.push(`- ${o}/: ${qt(`${e.path}/${o}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:o,file:s}of t.slice(0,Gn))r.push(`- ${o}/${s.relativePath}: ${qt(s.path)}`);return t.length>Gn&&r.push(`- ... ${t.length-Gn} more files under ${qt(e.path)}`),r}i(Zf,"buildSupportFileContext");function ep(e,t,n){let r=[];r.push(`<skill name="${Qo(e.name)}" location="${Qo(e.path)}">`),r.push(""),r.push(`Skill root: ${qt(e.path)}`),e.source==="builtin"?r.push("This is a built-in KodaX skill."):e.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):e.source==="user"&&r.push("This is a user-defined skill."),r.push("");let o=Zf(e);return o.length>0&&(r.push(...o),r.push("")),r.push(t),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
|
|
442
|
+
`)}i(ep,"buildSkillBlock");async function Jn(e,t,n){let r=await ct(e.content,t,n);return{content:ep(e,r,t),disableModelInvocation:e.disableModelInvocation??!1,skill:e}}i(Jn,"expandSkillForLLM");import{writeFile as rs}from"node:fs/promises";import he from"node:path";import{existsSync as tp}from"node:fs";import{mkdir as np,readFile as Yn,readdir as rp,stat as es,writeFile as IP}from"node:fs/promises";import ip from"node:os";import re from"node:path";import{fileURLToPath as ts,pathToFileURL as op}from"node:url";import sp from"yaml";var Fe=null;async function me(){if(Fe)return Fe;let e=re.dirname(ts(import.meta.url)),t=[],n=re.resolve(e,"../../../index.js");if(tp(n))return Fe=await import(op(n).href),Fe;t.push(`relative SDK path not found: ${n}`);try{return Fe=await import(["@kodax-ai","kodax"].join("/")),Fe}catch(r){t.push(`bare-name @kodax-ai/kodax failed: ${r?.code??r?.message}`)}throw new Error(`Cannot locate KodaX SDK from helper script ${import.meta.url}.
|
|
262
443
|
Attempted:
|
|
263
444
|
- ${t.join(`
|
|
264
|
-
- `)}`)}
|
|
445
|
+
- `)}`)}i(me,"loadKodaXSDK");function ap(e){let t=e.replace(/^\uFEFF/,"").replace(/\r\n/g,`
|
|
265
446
|
`).replace(/\r/g,`
|
|
266
447
|
`).trimStart();if(!t.startsWith(`---
|
|
267
448
|
`))throw new Error("SKILL.md missing YAML frontmatter");let n=t.indexOf(`
|
|
268
449
|
---
|
|
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()}}
|
|
450
|
+
`,4);if(n===-1)throw new Error("SKILL.md has unclosed YAML frontmatter");return{yamlText:t.slice(4,n),body:t.slice(n+5).trim()}}i(ap,"extractFrontmatter");function Vt(e){let{yamlText:t,body:n}=ap(e),r=sp.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Frontmatter must be a YAML object");return{frontmatter:r,body:n}}i(Vt,"parseSkillMarkdown");async function lt(e){let t=re.join(e,"SKILL.md");if(!(await es(t).catch(()=>null))?.isFile())throw new Error(`SKILL.md not found in ${e}`);let r=await Yn(t,"utf8"),{frontmatter:o,body:s}=Vt(r);return{skillDir:re.resolve(e),skillMdPath:t,rawContent:r,body:s,frontmatter:o}}i(lt,"loadSkill");async function ut(e){try{return await es(e),!0}catch{return!1}}i(ut,"pathExists");function Gt(e){if(!e.length)return{mean:0,stddev:0,min:0,max:0};let t=e.reduce((r,o)=>r+o,0)/e.length,n=e.length>1?e.reduce((r,o)=>r+(o-t)**2,0)/(e.length-1):0;return{mean:dt(t),stddev:dt(Math.sqrt(n)),min:dt(Math.min(...e)),max:dt(Math.max(...e))}}i(Gt,"calculateStats");function dt(e,t=4){return Number(e.toFixed(t))}i(dt,"roundNumber");function Jt(e){return e>=0?`+${e.toFixed(4)}`:e.toFixed(4)}i(Jt,"formatDelta");function Zo(e){try{return JSON.parse(e)}catch{return null}}i(Zo,"safeJsonParse");function je(e){let t=Zo(e.trim());if(t&&typeof t=="object")return t;let n=e.indexOf("{"),r=e.lastIndexOf("}");return n===-1||r===-1||r<=n?null:Zo(e.slice(n,r+1))}i(je,"extractJsonObject");async function J(e,t=null){try{return JSON.parse(await Yn(e,"utf8"))}catch{return t}}i(J,"readJsonFile");async function Ke(e,t){let n=re.dirname(ts(e));return Yn(re.resolve(n,t),"utf8")}i(Ke,"loadRelativeText");function $(e,t=12e3){let n=typeof e=="string"?e:String(e??"");if(n.length<=t)return n;let r=n.length-t;return`${n.slice(0,t)}
|
|
270
451
|
|
|
271
|
-
[truncated ${r} chars]`}
|
|
452
|
+
[truncated ${r} chars]`}i($,"truncateText");function ns(e){let t=Array.isArray(e)?e.length:0,n=Array.isArray(e)?e.filter(o=>o?.passed===!0).length:0,r=Math.max(t-n,0);return{passed:n,failed:r,total:t,pass_rate:t>0?dt(n/t):0}}i(ns,"computePassSummary");async function Qn(e,t=e,n=[]){let r=await rp(t,{withFileTypes:!0}).catch(()=>[]);for(let o of r.sort((s,a)=>s.name.localeCompare(a.name))){let s=re.join(t,o.name);if(o.isDirectory()){await Qn(e,s,n);continue}o.isFile()&&n.push({absolutePath:s,relativePath:re.relative(e,s).replace(/\\/g,"/")})}return n}i(Qn,"collectFiles");function ft(){return re.join(ip.homedir(),".kodax","skills")}i(ft,"getDefaultSkillsDir");async function F(e){return await np(e,{recursive:!0}),e}i(F,"ensureDirectory");function cp(e){return e.split("-").filter(Boolean).map(t=>t[0]?.toUpperCase()+t.slice(1)).join(" ")}i(cp,"titleFromSlug");function dp(e,t){let n=cp(e);return`---
|
|
272
453
|
name: ${e}
|
|
273
454
|
description: ${t}
|
|
274
455
|
user-invocable: true
|
|
@@ -297,28 +478,28 @@ Describe the task this skill handles, the trigger boundary, and the expected out
|
|
|
297
478
|
- Put deeper guidance in \`references/\`.
|
|
298
479
|
- Put reusable templates or static files in \`assets/\`.
|
|
299
480
|
- Put repeatable helper scripts in \`scripts/\`.
|
|
300
|
-
`}
|
|
301
|
-
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}
|
|
481
|
+
`}i(dp,"renderSkillTemplate");function lp(e){return JSON.stringify({skill_name:e,evals:[{id:1,prompt:"TODO: Add a realistic user request to evaluate this skill.",expected_output:"Describe what a successful result should accomplish.",files:[],assertions:[]}]},null,2)}i(lp,"renderEvalTemplate");async function up(e){let t=he.resolve(e.baseDir??ft()),n=he.join(t,e.name),r=e.description??`Describe what ${e.name} does and when it should be used.`;if(await ut(n)&&!e.force)throw new Error(`Skill directory already exists: ${n}`);return await F(n),await F(he.join(n,"references")),await F(he.join(n,"assets")),await F(he.join(n,"scripts")),await rs(he.join(n,"SKILL.md"),dp(e.name,r),"utf8"),e.includeEvals!==!1&&(await F(he.join(n,"evals")),await rs(he.join(n,"evals","evals.json"),`${lp(e.name)}
|
|
482
|
+
`,"utf8")),{skillDir:n,created:["SKILL.md",...e.includeEvals!==!1?["evals/evals.json"]:[],"references/","assets/","scripts/"]}}i(up,"initSkill");function fp(e){let t={name:e[2],baseDir:void 0,description:void 0,force:!1,includeEvals:!0};for(let n=3;n<e.length;n+=1){let r=e[n];(r==="--path"||r==="--dest")&&e[n+1]?t.baseDir=e[++n]:r==="--description"&&e[n+1]?t.description=e[++n]:r==="--force"?t.force=!0:r==="--no-evals"&&(t.includeEvals=!1)}return t}i(fp,"parseArgs");async function is(e=process.argv){let t=fp(e);t.name||(console.error("Usage: node scripts/init-skill.js <skill-name> [--path <skills-dir>] [--description <text>] [--force] [--no-evals]"),process.exit(1));let n=await up(t);console.log(`Initialized ${n.skillDir}`)}i(is,"main");var pp=!1;pp&&is().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import os from"node:path";var mp=new Set(["name","description","license","compatibility","metadata","allowed-tools","disable-model-invocation","user-invocable","argument-hint","context","agent","model","hooks"]);async function pt(e){let t={valid:!1,errors:[],warnings:[],frontmatter:null},n;try{n=await lt(e)}catch(d){return t.errors.push(d instanceof Error?d.message:String(d)),t}let{frontmatter:r,body:o}=n;t.frontmatter=r;let s=Object.keys(r).filter(d=>!mp.has(d));s.length>0&&t.errors.push(`Unexpected frontmatter keys: ${s.sort().join(", ")}`);let a=typeof r.name=="string"?r.name.trim():"",c=typeof r.description=="string"?r.description.trim():"";if(!a)t.errors.push("Missing required frontmatter field: name");else{/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a)||t.errors.push(`Invalid skill name "${a}". Use lowercase kebab-case and avoid consecutive hyphens.`),a.length>64&&t.errors.push(`Skill name is too long (${a.length}/64).`);let d=os.basename(os.resolve(e));d!==a&&t.warnings.push(`Skill directory name "${d}" does not match frontmatter name "${a}".`)}if(c?(c.length>1024&&t.errors.push(`Description is too long (${c.length}/1024).`),/[<>]/.test(c)&&t.errors.push("Description cannot contain angle brackets."),/[。.!?]/.test(c)||t.warnings.push("Description may be too terse; consider making the trigger conditions clearer.")):t.errors.push("Missing required frontmatter field: description"),o.trim()||t.errors.push("SKILL.md body is empty."),r.compatibility!=null&&(typeof r.compatibility!="string"?t.errors.push("compatibility must be a string if provided."):r.compatibility.length>500&&t.errors.push(`compatibility is too long (${r.compatibility.length}/500).`)),r["allowed-tools"]!=null){let d=r["allowed-tools"];typeof d=="string"||Array.isArray(d)&&d.every(u=>typeof u=="string")||t.errors.push("allowed-tools must be a string or string array.")}return r["disable-model-invocation"]!=null&&typeof r["disable-model-invocation"]!="boolean"&&t.errors.push("disable-model-invocation must be a boolean."),r["user-invocable"]!=null&&typeof r["user-invocable"]!="boolean"&&t.errors.push("user-invocable must be a boolean."),r.context!=null&&r.context!=="fork"&&t.errors.push('context must be "fork" when provided.'),r.hooks!=null&&(typeof r.hooks!="object"||Array.isArray(r.hooks))&&t.errors.push("hooks must be an object when provided."),t.valid=t.errors.length===0,t}i(pt,"validateSkillDirectory");async function ss(e=process.argv){let t=e[2];t||(console.error("Usage: node scripts/quick-validate.js <skill-directory>"),process.exit(1));let n=await pt(t);if(n.errors.length===0)console.log("Skill is valid.");else{console.error("Skill validation failed:");for(let r of n.errors)console.error(`- ${r}`)}if(n.warnings.length>0){console.log("Warnings:");for(let r of n.warnings)console.log(`- ${r}`)}process.exit(n.valid?0:1)}i(ss,"main");var hp=!1;hp&&ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as Zn,writeFile as ie}from"node:fs/promises";import C from"node:path";function gp(e){return typeof e=="string"?{text:e}:e&&typeof e=="object"&&typeof e.text=="string"?{text:e.text}:null}i(gp,"normalizeAssertion");function yp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_use").length:t,0)}i(yp,"countToolCalls");function wp(e){return e.reduce((t,n)=>Array.isArray(n.content)?t+n.content.filter(r=>r?.type==="tool_result"&&r.is_error===!0).length:t,0)}i(wp,"countToolErrors");function vp(e,t){return`${["# Skill Eval Transcript","","## Eval Prompt","",e,"","## Final Response","",t.lastText||"(No final text)","","## Result Flags","",`- success: ${t.success}`,`- signal: ${t.signal??"none"}`,`- interrupted: ${t.interrupted===!0}`,`- limit_reached: ${t.limitReached===!0}`].join(`
|
|
302
483
|
`)}
|
|
303
|
-
`}
|
|
484
|
+
`}i(vp,"renderTranscript");async function bp(e,t){let n=C.dirname(C.resolve(t.evalsPath)),r=C.resolve(t.cwd??process.cwd()),o=[];for(let s of e??[]){let a=C.isAbsolute(s)?s:C.resolve(n,s),c=C.resolve(r,s),d=null,l=a;try{d=await Zn(a,"utf8")}catch{d=await Zn(c,"utf8").catch(()=>null),l=c}if(d==null)throw new Error(`Input file not found for eval: ${s}`);o.push(`### ${s}
|
|
304
485
|
\`\`\`
|
|
305
486
|
${d}
|
|
306
487
|
\`\`\`
|
|
307
|
-
(Resolved from ${
|
|
488
|
+
(Resolved from ${l})`)}return o.length===0?"":`## Input Files
|
|
308
489
|
|
|
309
|
-
${
|
|
490
|
+
${o.join(`
|
|
310
491
|
|
|
311
492
|
`)}
|
|
312
493
|
|
|
313
|
-
`}
|
|
314
|
-
`,"utf8"),await
|
|
315
|
-
`,"utf8"),await
|
|
316
|
-
`,"utf8"),await
|
|
317
|
-
`,"utf8"),await
|
|
318
|
-
`,"utf8"),await
|
|
319
|
-
`,"utf8")}
|
|
320
|
-
`,"utf8");let
|
|
321
|
-
`;t.output?(await
|
|
494
|
+
`}i(bp,"readInputFiles");async function kp(e,t){let n=String(e.prompt??e.query??"").trim();return`${await bp(e.files,t)}${n}`.trim()}i(kp,"buildEvalPrompt");async function xp(e,t){let{runKodaX:n,estimateTokens:r}=await me(),o=Date.now(),s=await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??30,reasoningMode:t.reasoningMode??"off",thinking:t.reasoningMode?t.reasoningMode!=="off":!1,context:{gitRoot:C.resolve(t.cwd??process.cwd())}},e);return{result:s,totalTokens:r(s.messages),durationMs:Date.now()-o}}i(xp,"defaultRunAgent");async function Sp(e,t,n,r){return e==="with_skill"?(await Jn(t,n,{workingDirectory:C.resolve(r.cwd??process.cwd()),projectRoot:C.resolve(r.cwd??process.cwd()),sessionId:"skill-eval",environment:{}})).content:n}i(Sp,"prepareConfigPrompt");async function Ep(e,t,n,r,o){let s=C.join(e,"outputs");await F(s);let a={total_tool_calls:yp(o.result.messages),errors_encountered:wp(o.result.messages),output_chars:o.result.lastText.length};await ie(C.join(s,"result.md"),`${o.result.lastText}
|
|
495
|
+
`,"utf8"),await ie(C.join(s,"prompt.txt"),`${r}
|
|
496
|
+
`,"utf8"),await ie(C.join(e,"transcript.md"),vp(r,o.result),"utf8"),await ie(C.join(s,"metrics.json"),`${JSON.stringify({config:t,eval_id:n.id??null,session_id:o.result.sessionId,...a},null,2)}
|
|
497
|
+
`,"utf8"),await ie(C.join(s,"messages.json"),`${JSON.stringify(o.result.messages,null,2)}
|
|
498
|
+
`,"utf8"),await ie(C.join(e,"timing.json"),`${JSON.stringify({total_tokens:o.totalTokens,duration_ms:o.durationMs,total_duration_seconds:Number((o.durationMs/1e3).toFixed(4))},null,2)}
|
|
499
|
+
`,"utf8"),await ie(C.join(e,"result.json"),`${JSON.stringify({success:o.result.success,signal:o.result.signal??null,signal_reason:o.result.signalReason??null,interrupted:o.result.interrupted===!0,limit_reached:o.result.limitReached===!0,session_id:o.result.sessionId,execution_metrics:a},null,2)}
|
|
500
|
+
`,"utf8")}i(Ep,"writeRunArtifacts");async function Ip(e,t=xp){let n=await Ut(C.resolve(e.skillPath),"user");if(!n)throw new Error(`Failed to load skill from ${e.skillPath}`);let r=C.resolve(e.workspaceDir);await F(r);let o=JSON.parse(await Zn(e.evalsPath,"utf8")),s=Array.isArray(o.evals)?o.evals:[],a=e.configs?.length?e.configs:["with_skill","without_skill"],c=Number.isFinite(e.runsPerConfig)&&e.runsPerConfig>0?Math.floor(e.runsPerConfig):1,d=[];for(let l=0;l<s.length;l+=1){let u=s[l],f=C.join(r,`eval-${l}`);await F(f),await ie(C.join(f,"eval_metadata.json"),`${JSON.stringify({eval_id:u.id??l,eval_name:u.name??`eval-${l}`,prompt:u.prompt??u.query??"",expected_output:u.expected_output??"",assertions:(Array.isArray(u.assertions)?u.assertions:[]).map(gp).filter(Boolean)},null,2)}
|
|
501
|
+
`,"utf8");let p=await kp(u,e),m={};for(let g of a){let v=C.join(f,g);await F(v),m[g]=[];for(let w=1;w<=c;w+=1){let y=C.join(v,`run-${w}`);await F(y);let h=await Sp(g,n,p,e),b=await t(h,{...e,configName:g,evalItem:u,runIndex:w});await Ep(y,g,u,h,b),m[g].push({run_id:`run-${w}`,session_id:b.result.sessionId,success:b.result.success,total_tokens:b.totalTokens,duration_ms:b.durationMs,output_chars:b.result.lastText.length})}}d.push({eval_id:u.id??l,prompt:u.prompt??u.query??"",configs:m})}return{workspace:r,skill_name:n.name,eval_count:s.length,configs:a,runs_per_config:c,reports:d}}i(Ip,"runEvalWorkspace");function Cp(e){let t={skillPath:"",evalsPath:"",workspaceDir:"",provider:"anthropic",model:void 0,runsPerConfig:1,maxIter:30,reasoningMode:"off",cwd:process.cwd(),configs:["with_skill","without_skill"],output:void 0};for(let n=2;n<e.length;n+=1){let r=e[n];r==="--skill-path"&&e[n+1]?t.skillPath=e[++n]:r==="--evals"&&e[n+1]?t.evalsPath=e[++n]:r==="--workspace"&&e[n+1]?t.workspaceDir=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--runs"&&e[n+1]?t.runsPerConfig=Number(e[++n]):r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--configs"&&e[n+1]?t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean):r==="--output"&&e[n+1]&&(t.output=e[++n])}return t}i(Cp,"parseArgs");async function as(e=process.argv){let t=Cp(e);(!t.skillPath||!t.evalsPath||!t.workspaceDir)&&(console.error("Usage: node scripts/run-eval.js --skill-path <dir> --evals <evals.json> --workspace <dir> [--provider anthropic] [--runs 1]"),process.exit(1));let n=await Ip(t),r=`${JSON.stringify(n,null,2)}
|
|
502
|
+
`;t.output?(await ie(t.output,r,"utf8"),console.log(`Wrote ${C.resolve(t.output)}`)):process.stdout.write(r)}i(as,"main");var Tp=!1;Tp&&as().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Rp,readFile as er,writeFile as ds}from"node:fs/promises";import T from"node:path";function Ee(e){return String(e??"").trim()}i(Ee,"normalizeExpectationText");function ls(e){let n=(Array.isArray(e?.assertions)?e.assertions:[]).map(o=>typeof o=="string"?Ee(o):o&&typeof o=="object"&&typeof o.text=="string"?Ee(o.text):"").filter(Boolean);if(n.length>0)return n;let r=Ee(e?.expected_output);return r?[r]:[]}i(ls,"normalizeExpectedRubric");function tr(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(tr,"normalizeStringArray");function cs(e,t){return{text:Ee(e?.text??t),passed:e?.passed===!0,evidence:Ee(e?.evidence)}}i(cs,"normalizeExpectationEntry");function _p(e,t){let n=je(e)??{},r=Array.isArray(n.expectations)?n.expectations:[],o=[],s=new Set;for(let a of t){let c=r.findIndex((d,l)=>s.has(l)?!1:Ee(d?.text).toLowerCase()===a.toLowerCase());if(c===-1){o.push({text:a,passed:!1,evidence:""});continue}s.add(c),o.push(cs(r[c],a))}if(t.length===0)for(let a of r){let c=cs(a,"");c.text&&o.push(c)}return{overall_summary:Ee(n.overall_summary),expectations:o,user_notes_summary:{uncertainties:tr(n.user_notes_summary?.uncertainties),needs_review:tr(n.user_notes_summary?.needs_review),workarounds:tr(n.user_notes_summary?.workarounds)}}}i(_p,"normalizeParsedGrading");async function nr(e){return(await Rp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>T.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(nr,"listDirectories");async function Ap(e){let t=T.dirname(e),n=T.dirname(t),r=T.basename(t),o=T.basename(e),s=T.join(e,"outputs"),a=await J(T.join(n,"eval_metadata.json"),{}),c=await er(T.join(s,"result.md"),"utf8").catch(()=>""),d=await er(T.join(s,"prompt.txt"),"utf8").catch(()=>""),l=await er(T.join(e,"transcript.md"),"utf8").catch(()=>""),u=await J(T.join(s,"metrics.json"),{}),f=await J(T.join(e,"result.json"),{}),p=await J(T.join(e,"timing.json"),{});return{evalDir:n,runDir:e,runId:o,configName:r,evalMetadata:a,outputsDir:s,resultText:c,promptText:d,transcript:l,metrics:u,result:f,timing:p}}i(Ap,"loadRunContext");function Pp(e){let t=ls(e.evalMetadata),n=t.length>0?t.map((r,o)=>`${o+1}. ${r}`).join(`
|
|
322
503
|
`):"(No explicit assertions; infer one expectation from expected_output if present.)";return`${e.agentInstructions.trim()}
|
|
323
504
|
|
|
324
505
|
Return JSON with this shape:
|
|
@@ -345,16 +526,16 @@ Return JSON with this shape:
|
|
|
345
526
|
- run_id: ${e.runId}
|
|
346
527
|
|
|
347
528
|
## Eval Prompt
|
|
348
|
-
${
|
|
529
|
+
${$(e.evalMetadata.prompt??e.promptText,4e3)}
|
|
349
530
|
|
|
350
531
|
## Expected Outcome
|
|
351
|
-
${
|
|
532
|
+
${$(e.evalMetadata.expected_output??"",2e3)}
|
|
352
533
|
|
|
353
534
|
## Assertions
|
|
354
535
|
${n}
|
|
355
536
|
|
|
356
537
|
## Final Output
|
|
357
|
-
${
|
|
538
|
+
${$(e.resultText,12e3)}
|
|
358
539
|
|
|
359
540
|
## Result Flags
|
|
360
541
|
${JSON.stringify({success:e.result.success??null,signal:e.result.signal??null,interrupted:e.result.interrupted??!1,limit_reached:e.result.limit_reached??e.result.limitReached??!1},null,2)}
|
|
@@ -363,13 +544,13 @@ ${JSON.stringify({success:e.result.success??null,signal:e.result.signal??null,in
|
|
|
363
544
|
${JSON.stringify({total_tool_calls:e.metrics.total_tool_calls??e.result.execution_metrics?.total_tool_calls??0,errors_encountered:e.metrics.errors_encountered??e.result.execution_metrics?.errors_encountered??0,output_chars:e.metrics.output_chars??e.result.execution_metrics?.output_chars??e.resultText.length,total_tokens:e.timing.total_tokens??0,total_duration_seconds:e.timing.total_duration_seconds??0},null,2)}
|
|
364
545
|
|
|
365
546
|
## Transcript Excerpt
|
|
366
|
-
${
|
|
367
|
-
`}
|
|
368
|
-
`,"utf8"),{runDir:r.runDir,grading:
|
|
369
|
-
`,"utf8"),a}
|
|
370
|
-
`)}
|
|
371
|
-
`)}
|
|
372
|
-
`),console.log(`Wrote ${
|
|
547
|
+
${$(e.transcript,5e3)}
|
|
548
|
+
`}i(Pp,"buildGradingPrompt");async function us(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:T.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(us,"defaultRunJudge");async function Mp(e,t,n=us){let r=await Ap(T.resolve(e)),o=ls(r.evalMetadata),s=await Ke(import.meta.url,"../agents/grader.md"),a=Pp({...r,agentInstructions:s}),c=await n(a,{...t,runDir:r.runDir,configName:r.configName,evalMetadata:r.evalMetadata,runId:r.runId}),d=_p(c,o),l={total_tool_calls:r.metrics.total_tool_calls??r.result.execution_metrics?.total_tool_calls??0,errors_encountered:r.metrics.errors_encountered??r.result.execution_metrics?.errors_encountered??0,output_chars:r.metrics.output_chars??r.result.execution_metrics?.output_chars??r.resultText.length},u={summary:ns(d.expectations),expectations:d.expectations,execution_metrics:l,user_notes_summary:d.user_notes_summary,overall_summary:d.overall_summary,timing:{total_tokens:r.timing.total_tokens??0,total_duration_seconds:r.timing.total_duration_seconds??0},meta:{generated_at:new Date().toISOString(),eval_id:r.evalMetadata.eval_id??null,eval_name:r.evalMetadata.eval_name??null,config:r.configName,run_id:r.runId}};return await ds(T.join(r.runDir,"grading.json"),`${JSON.stringify(u,null,2)}
|
|
549
|
+
`,"utf8"),{runDir:r.runDir,grading:u,prompt:a,rawResponse:c}}i(Mp,"gradeRun");async function Op(e,t=us){let n=T.resolve(e.workspaceDir);await F(n);let r=new Set((e.configs??[]).map(c=>String(c).trim()).filter(Boolean)),o=[],s=[];for(let c of await nr(n))if(T.basename(c).startsWith("eval-"))for(let d of await nr(c)){let l=T.basename(d);if(!(r.size>0&&!r.has(l)))for(let u of await nr(d)){if(!T.basename(u).startsWith("run-"))continue;let f=T.join(u,"grading.json");if(await J(f,null)&&e.overwrite!==!0){s.push(T.relative(n,u).replace(/\\/g,"/"));continue}let m=await Mp(u,e,t);o.push({run:T.relative(n,u).replace(/\\/g,"/"),summary:m.grading.summary,config:m.grading.meta.config,eval_id:m.grading.meta.eval_id})}}let a={workspace:n,generated_at:new Date().toISOString(),processed:o.length,skipped:s.length,processed_runs:o,skipped_runs:s};return await ds(T.join(n,"grading-summary.json"),`${JSON.stringify(a,null,2)}
|
|
550
|
+
`,"utf8"),a}i(Op,"gradeWorkspace");function Np(e){let t={workspaceDir:e[2]??"",provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd(),overwrite:!1,configs:[]};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]?t.cwd=e[++n]:r==="--overwrite"?t.overwrite=!0:r==="--configs"&&e[n+1]&&(t.configs=e[++n].split(",").map(o=>o.trim()).filter(Boolean))}return t}i(Np,"parseArgs");async function fs(e=process.argv){let t=Np(e);t.workspaceDir||(console.error("Usage: node scripts/grade-evals.js <workspace> [--provider anthropic] [--configs with_skill,without_skill] [--overwrite]"),process.exit(1));let n=await Op(t);process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
551
|
+
`)}i(fs,"main");var Lp=!1;Lp&&fs().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{writeFile as sr}from"node:fs/promises";import oe from"node:path";import{readFile as Dp,readdir as $p,stat as Fp,writeFile as ps}from"node:fs/promises";import j from"node:path";async function rr(e){return JSON.parse(await Dp(e,"utf8"))}i(rr,"readJson");async function jp(e){try{return await Fp(e),!0}catch{return!1}}i(jp,"pathExists");async function ir(e){return(await $p(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>j.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(ir,"listDirectories");async function Yt(e){let t=await jp(j.join(e,"runs"))?j.join(e,"runs"):e,n=(await ir(t)).filter(o=>j.basename(o).startsWith("eval-")),r={};for(let o of n){let s=j.join(o,"eval_metadata.json"),c=(await rr(s).catch(()=>({}))).eval_id??j.basename(o);for(let d of await ir(o)){let l=j.basename(d),u=(await ir(d)).filter(f=>j.basename(f).startsWith("run-"));if(u.length!==0){r[l]??=[];for(let f of u){let p=await rr(j.join(f,"grading.json")).catch(()=>null);if(!p)continue;let m=await rr(j.join(f,"timing.json")).catch(()=>({}));r[l].push({eval_id:c,run_id:j.basename(f),pass_rate:p.summary?.pass_rate??0,passed:p.summary?.passed??0,failed:p.summary?.failed??0,total:p.summary?.total??0,time_seconds:m.total_duration_seconds??p.timing?.total_duration_seconds??0,tokens:m.total_tokens??p.execution_metrics?.output_chars??0,tool_calls:p.execution_metrics?.total_tool_calls??0,errors:p.execution_metrics?.errors_encountered??0,expectations:Array.isArray(p.expectations)?p.expectations:[],notes:[...p.user_notes_summary?.uncertainties??[],...p.user_notes_summary?.needs_review??[],...p.user_notes_summary?.workarounds??[]]})}}}}return r}i(Yt,"loadRunResults");function Kp(e){let t={};for(let[s,a]of Object.entries(e))t[s]={pass_rate:Gt(a.map(c=>Number(c.pass_rate??0))),time_seconds:Gt(a.map(c=>Number(c.time_seconds??0))),tokens:Gt(a.map(c=>Number(c.tokens??0)))};let n=Object.keys(t),r=t[n[0]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}},o=t[n[1]]??{pass_rate:{mean:0},time_seconds:{mean:0},tokens:{mean:0}};return{configs:t,delta:{pass_rate:Jt(r.pass_rate.mean-o.pass_rate.mean),time_seconds:Jt(r.time_seconds.mean-o.time_seconds.mean),tokens:Jt(r.tokens.mean-o.tokens.mean)}}}i(Kp,"summarizeConfigs");function or(e,t,n){let r=Kp(n);return{skill_name:t,generated_at:new Date().toISOString(),workspace:j.resolve(e),configs:r.configs,delta:r.delta,runs:n}}i(or,"buildBenchmarkDocument");function Bp(e){let t=[`# Benchmark: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"","| Config | Pass Rate | Time (s) | Tokens |","| --- | --- | --- | --- |"];for(let[n,r]of Object.entries(e.configs))t.push(`| ${n} | ${r.pass_rate.mean} \xB1 ${r.pass_rate.stddev} | ${r.time_seconds.mean} \xB1 ${r.time_seconds.stddev} | ${r.tokens.mean} \xB1 ${r.tokens.stddev} |`);return t.push(""),t.push("## Delta"),t.push(""),t.push(`- Pass rate: ${e.delta.pass_rate}`),t.push(`- Time (s): ${e.delta.time_seconds}`),t.push(`- Tokens: ${e.delta.tokens}`),t.join(`
|
|
552
|
+
`)}i(Bp,"renderBenchmarkMarkdown");function Up(e){let t={iterationDir:e[2],skillName:"unknown-skill"};for(let n=3;n<e.length;n+=1)e[n]==="--skill-name"&&e[n+1]&&(t.skillName=e[n+1],n+=1);return t}i(Up,"parseArgs");async function Xp(){let{iterationDir:e,skillName:t}=Up(process.argv);e||(console.error("Usage: node scripts/aggregate-benchmark.js <iteration-dir> --skill-name <name>"),process.exit(1));let n=await Yt(e);Object.keys(n).length===0&&(console.error(`No benchmark runs found in ${e}`),process.exit(1));let r=or(e,t,n),o=j.join(e,"benchmark.json"),s=j.join(e,"benchmark.md");await ps(o,JSON.stringify(r,null,2)),await ps(s,`${Bp(r)}
|
|
553
|
+
`),console.log(`Wrote ${o}`),console.log(`Wrote ${s}`)}i(Xp,"main");var Wp=!1;Wp&&Xp().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});function Qt(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(Qt,"normalizeStringArray");function Hp(e){let t={};for(let[n,r]of Object.entries(e)){let o=new Map,s=[];for(let a of r){for(let c of a.expectations??[]){if(c?.passed===!0)continue;let d=String(c?.text??"").trim();d&&o.set(d,(o.get(d)??0)+1)}for(let c of a.notes??[]){let d=String(c??"").trim();d&&s.push(d)}}t[n]={repeated_failures:Array.from(o.entries()).sort((a,c)=>c[1]-a[1]).slice(0,10).map(([a,c])=>({text:a,count:c})),notes:s.slice(0,10)}}return t}i(Hp,"summarizeFailureClusters");function zp(e,t,n){let r=je(e)??{};return{skill_name:t.skill_name,generated_at:new Date().toISOString(),workspace:t.workspace,verdict:["improves","regresses","mixed","inconclusive"].includes(r.verdict)?r.verdict:"inconclusive",release_readiness:["ready","needs_iteration","needs_manual_review"].includes(r.release_readiness)?r.release_readiness:"needs_manual_review",recommendation:String(r.recommendation??"").trim(),key_findings:Qt(r.key_findings),variance_hotspots:Qt(r.variance_hotspots),suggested_actions:Qt(r.suggested_actions),watchouts:Qt(r.watchouts),supporting_metrics:{pass_rate_delta:t.delta?.pass_rate??"n/a",time_seconds_delta:t.delta?.time_seconds??"n/a",tokens_delta:t.delta?.tokens??"n/a"},failure_clusters:n}}i(zp,"normalizeAnalysisResult");function qp(e){return`${e.agentInstructions.trim()}
|
|
373
554
|
|
|
374
555
|
Return JSON with this shape:
|
|
375
556
|
{
|
|
@@ -383,16 +564,16 @@ Return JSON with this shape:
|
|
|
383
564
|
}
|
|
384
565
|
|
|
385
566
|
## Benchmark Summary
|
|
386
|
-
${
|
|
567
|
+
${$(JSON.stringify({skill_name:e.benchmark.skill_name,configs:e.benchmark.configs,delta:e.benchmark.delta},null,2),12e3)}
|
|
387
568
|
|
|
388
569
|
## Failure Clusters
|
|
389
|
-
${
|
|
390
|
-
`}
|
|
570
|
+
${$(JSON.stringify(e.failureClusters,null,2),8e3)}
|
|
571
|
+
`}i(qp,"buildAnalysisPrompt");async function Vp(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:oe.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(Vp,"defaultRunAnalyst");function Gp(e){let t=[`# Benchmark Analysis: ${e.skill_name}`,"",`Generated: ${e.generated_at}`,"",`- Verdict: ${e.verdict}`,`- Release readiness: ${e.release_readiness}`,`- Recommendation: ${e.recommendation||"n/a"}`,""],n=[["key_findings","Key Findings"],["variance_hotspots","Variance Hotspots"],["suggested_actions","Suggested Actions"],["watchouts","Watchouts"]];for(let[r,o]of n){t.push(`## ${o}`),t.push("");let s=Array.isArray(e[r])?e[r]:[];if(s.length===0)t.push("- None");else for(let a of s)t.push(`- ${a}`);t.push("")}return t.push("## Supporting Metrics"),t.push(""),t.push(`- Pass rate delta: ${e.supporting_metrics.pass_rate_delta}`),t.push(`- Time delta: ${e.supporting_metrics.time_seconds_delta}`),t.push(`- Tokens delta: ${e.supporting_metrics.tokens_delta}`),`${t.join(`
|
|
391
572
|
`)}
|
|
392
|
-
`}
|
|
393
|
-
`,"utf8")}let s=await
|
|
394
|
-
`,"utf8"),await
|
|
395
|
-
`)}
|
|
573
|
+
`}i(Gp,"renderAnalysisMarkdown");async function Jp(e,t=Vp){let n=oe.resolve(e.workspaceDir),r=oe.resolve(e.benchmarkPath??oe.join(n,"benchmark.json")),o=await J(r,null);if(!o){let m=await Yt(n);if(Object.keys(m).length===0)throw new Error(`No benchmark data found in ${n}`);o=or(n,e.skillName??oe.basename(n),m),await sr(r,`${JSON.stringify(o,null,2)}
|
|
574
|
+
`,"utf8")}let s=await Yt(n),a=Hp(s),c=await Ke(import.meta.url,"../agents/analyzer.md"),d=qp({agentInstructions:c,benchmark:o,failureClusters:a}),l=await t(d,{...e,workspaceDir:n,benchmarkPath:r,benchmark:o}),u=zp(l,o,a),f=oe.resolve(e.outputPath??oe.join(n,"analysis.json")),p=oe.resolve(e.markdownPath??oe.join(n,"analysis.md"));return await sr(f,`${JSON.stringify(u,null,2)}
|
|
575
|
+
`,"utf8"),await sr(p,Gp(u),"utf8"),{analysis:u,prompt:d,rawResponse:l,analysisJsonPath:f,analysisMdPath:p}}i(Jp,"analyzeBenchmark");function Yp(e){let t={workspaceDir:e[2]??"",benchmarkPath:void 0,outputPath:void 0,markdownPath:void 0,skillName:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--benchmark"&&e[n+1]?t.benchmarkPath=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--skill-name"&&e[n+1]?t.skillName=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(Yp,"parseArgs");async function ms(e=process.argv){let t=Yp(e);t.workspaceDir||(console.error("Usage: node scripts/analyze-benchmark.js <workspace> [--benchmark benchmark.json] [--output analysis.json] [--markdown analysis.md]"),process.exit(1));let n=await Jp(t);process.stdout.write(`${JSON.stringify({analysis:n.analysis,analysis_json:n.analysisJsonPath,analysis_md:n.analysisMdPath},null,2)}
|
|
576
|
+
`)}i(ms,"main");var Qp=!1;Qp&&ms().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readdir as Zp,readFile as hs,writeFile as gs}from"node:fs/promises";import O from"node:path";async function cr(e){return(await Zp(e,{withFileTypes:!0}).catch(()=>[])).filter(n=>n.isDirectory()).map(n=>O.join(e,n.name)).sort((n,r)=>n.localeCompare(r))}i(cr,"listDirectories");function ar(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}i(ar,"normalizeStringArray");function em(e){let t=je(e)??{},n=["A","B","tie","inconclusive"].includes(t.winner)?t.winner:"inconclusive",r=Number(t.confidence);return{winner:n,confidence:Number.isFinite(r)?Math.max(0,Math.min(1,Number(r.toFixed(4)))):0,rationale:String(t.rationale??"").trim(),strengths_a:ar(t.strengths_a),strengths_b:ar(t.strengths_b),risks:ar(t.risks)}}i(em,"normalizeComparisonResult");async function tm(e,t,n,r){let o=(await cr(O.join(e,t))).filter(f=>O.basename(f).startsWith("run-")),s=(await cr(O.join(e,n))).filter(f=>O.basename(f).startsWith("run-")),a=o[r],c=s[r];if(!a||!c)return null;let d=await J(O.join(e,"eval_metadata.json"),{}),l=await hs(O.join(a,"outputs","result.md"),"utf8").catch(()=>""),u=await hs(O.join(c,"outputs","result.md"),"utf8").catch(()=>"");return{evalDir:e,evalMetadata:d,runA:{runDir:a,runId:O.basename(a),configName:t,output:l},runB:{runDir:c,runId:O.basename(c),configName:n,output:u}}}i(tm,"loadComparisonPair");function nm(e){let t=e.presentPrimaryFirst?{A:e.runA,B:e.runB}:{A:e.runB,B:e.runA};return`${e.agentInstructions.trim()}
|
|
396
577
|
|
|
397
578
|
Return JSON with this shape:
|
|
398
579
|
{
|
|
@@ -407,28 +588,28 @@ Return JSON with this shape:
|
|
|
407
588
|
Judge only the visible outputs. Do not mention hidden config names in the rationale.
|
|
408
589
|
|
|
409
590
|
## Eval Prompt
|
|
410
|
-
${
|
|
591
|
+
${$(e.evalMetadata.prompt??"",4e3)}
|
|
411
592
|
|
|
412
593
|
## Expected Outcome
|
|
413
|
-
${
|
|
594
|
+
${$(e.evalMetadata.expected_output??"",2e3)}
|
|
414
595
|
|
|
415
596
|
## Assertions
|
|
416
|
-
${
|
|
597
|
+
${$(JSON.stringify(e.evalMetadata.assertions??[],null,2),4e3)}
|
|
417
598
|
|
|
418
599
|
## Candidate A
|
|
419
|
-
${
|
|
600
|
+
${$(t.A.output,12e3)}
|
|
420
601
|
|
|
421
602
|
## Candidate B
|
|
422
|
-
${
|
|
423
|
-
`}
|
|
603
|
+
${$(t.B.output,12e3)}
|
|
604
|
+
`}i(nm,"buildComparisonPrompt");async function rm(e,t){let{runKodaX:n}=await me();return(await n({provider:t.provider??"anthropic",model:t.model,maxIter:t.maxIter??20,reasoningMode:t.reasoningMode??"balanced",thinking:t.reasoningMode?t.reasoningMode!=="off":!0,context:{gitRoot:O.resolve(t.cwd??t.workspaceDir??process.cwd())}},e)).lastText}i(rm,"defaultRunComparator");function im(e,t,n,r){return e==="A"?t?n:r:e==="B"?t?r:n:e}i(im,"mapWinnerToConfig");function om(e){let t=[`# Blind Comparison: ${e.config_a} vs ${e.config_b}`,"",`Generated: ${e.generated_at}`,"",`- ${e.config_a} wins: ${e.summary.config_a_wins}`,`- ${e.config_b} wins: ${e.summary.config_b_wins}`,`- ties: ${e.summary.ties}`,`- inconclusive: ${e.summary.inconclusive}`,""];for(let n of e.comparisons)t.push(`## Eval ${n.eval_id??n.eval_name??n.index}`),t.push(""),t.push(`- Winner: ${n.winner_config}`),t.push(`- Confidence: ${n.confidence}`),t.push(`- Rationale: ${n.rationale||"n/a"}`),t.push("");return`${t.join(`
|
|
424
605
|
`)}
|
|
425
|
-
`}
|
|
426
|
-
`,"utf8"),await
|
|
427
|
-
`)}
|
|
606
|
+
`}i(om,"renderComparisonMarkdown");async function sm(e,t=rm){let n=O.resolve(e.workspaceDir),r=e.configA??"with_skill",o=e.configB??"without_skill",s=Number.isFinite(e.maxPairs)&&e.maxPairs>0?Math.floor(e.maxPairs):Number.POSITIVE_INFINITY,a=await Ke(import.meta.url,"../agents/comparator.md"),c=[];for(let f of await cr(n))if(O.basename(f).startsWith("eval-"))for(let p=0;p<s;p+=1){let m=await tm(f,r,o,p);if(!m)break;let g=c.length%2===0,v=nm({agentInstructions:a,evalMetadata:m.evalMetadata,runA:m.runA,runB:m.runB,presentPrimaryFirst:g}),w=await t(v,{...e,workspaceDir:n,evalDir:f,pairIndex:p,configA:r,configB:o}),y=em(w),h=im(y.winner,g,r,o);c.push({index:c.length+1,eval_id:m.evalMetadata.eval_id??null,eval_name:m.evalMetadata.eval_name??null,run_a:O.relative(n,m.runA.runDir).replace(/\\/g,"/"),run_b:O.relative(n,m.runB.runDir).replace(/\\/g,"/"),presented_as:g?{A:r,B:o}:{A:o,B:r},winner_label:y.winner,winner_config:h,confidence:y.confidence,rationale:y.rationale,strengths_a:y.strengths_a,strengths_b:y.strengths_b,risks:y.risks})}if(c.length===0)throw new Error(`No comparable run pairs found for ${r} vs ${o} in ${n}`);let d={workspace:n,generated_at:new Date().toISOString(),config_a:r,config_b:o,summary:{total_pairs:c.length,config_a_wins:c.filter(f=>f.winner_config===r).length,config_b_wins:c.filter(f=>f.winner_config===o).length,ties:c.filter(f=>f.winner_config==="tie").length,inconclusive:c.filter(f=>f.winner_config==="inconclusive").length},comparisons:c},l=O.resolve(e.outputPath??O.join(n,"comparison.json")),u=O.resolve(e.markdownPath??O.join(n,"comparison.md"));return await gs(l,`${JSON.stringify(d,null,2)}
|
|
607
|
+
`,"utf8"),await gs(u,om(d),"utf8"),{document:d,outputPath:l,markdownPath:u}}i(sm,"compareWorkspace");function am(e){let t={workspaceDir:e[2]??"",configA:"with_skill",configB:"without_skill",outputPath:void 0,markdownPath:void 0,provider:"anthropic",model:void 0,reasoningMode:"balanced",maxIter:20,maxPairs:void 0,cwd:process.cwd()};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--config-a"&&e[n+1]?t.configA=e[++n]:r==="--config-b"&&e[n+1]?t.configB=e[++n]:r==="--output"&&e[n+1]?t.outputPath=e[++n]:r==="--markdown"&&e[n+1]?t.markdownPath=e[++n]:r==="--provider"&&e[n+1]?t.provider=e[++n]:r==="--model"&&e[n+1]?t.model=e[++n]:r==="--reasoning"&&e[n+1]?t.reasoningMode=e[++n]:r==="--max-iter"&&e[n+1]?t.maxIter=Number(e[++n]):r==="--max-pairs"&&e[n+1]?t.maxPairs=Number(e[++n]):r==="--cwd"&&e[n+1]&&(t.cwd=e[++n])}return t}i(am,"parseArgs");async function ys(e=process.argv){let t=am(e);t.workspaceDir||(console.error("Usage: node scripts/compare-runs.js <workspace> [--config-a with_skill] [--config-b without_skill] [--output comparison.json]"),process.exit(1));let n=await sm(t);process.stdout.write(`${JSON.stringify({comparison:n.document.summary,output:n.outputPath,markdown:n.markdownPath},null,2)}
|
|
608
|
+
`)}i(ys,"main");var cm=!1;cm&&ys().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{readFile as dm,writeFile as lm}from"node:fs/promises";import{createHash as um}from"node:crypto";import dr from"node:path";import{zipSync as fm,strToU8 as pm}from"fflate";var mm=".kodax-package.json";function hm(e){return e instanceof Uint8Array?e:new Uint8Array(e)}i(hm,"toUint8Array");function gm(e){return um("sha256").update(e).digest("hex")}i(gm,"sha256");function ym(e,t,n={}){return{format:"kodax-skill-package",version:1,created_at:n.createdAt??new Date().toISOString(),entrypoint:"SKILL.md",skill:{name:e.frontmatter.name,description:e.frontmatter.description,compatibility:e.frontmatter.compatibility??null,user_invocable:e.frontmatter["user-invocable"]??!0,disable_model_invocation:e.frontmatter["disable-model-invocation"]??!1},files:t.map(r=>({path:r.relativePath,size:r.bytes.length,sha256:r.sha256})),note:"This archive is a zip file with a .skill extension. Compatible agents can extract and install the included skill directory."}}i(ym,"createPackageManifest");async function wm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot package invalid skill:
|
|
428
609
|
- ${n.errors.join(`
|
|
429
|
-
- `)}`);let r=await
|
|
610
|
+
- `)}`);let r=await lt(e),o=await Qn(e),s=[];for(let d of o){if(d.relativePath.endsWith(".skill"))continue;let l=hm(await dm(d.absolutePath));s.push({...d,bytes:l,sha256:gm(l)})}let a=ym(r,s,t),c={[mm]:pm(JSON.stringify(a,null,2))};for(let d of s)c[d.relativePath]=d.bytes;return{manifest:a,bytes:fm(c,{level:6})}}i(wm,"buildSkillPackage");async function vm(e,t,n={}){let r=await wm(e,n);return await lm(t,r.bytes),{...r,outputPath:dr.resolve(t)}}i(vm,"writeSkillPackage");function bm(e){let t={skillDir:e[2],output:void 0};for(let n=3;n<e.length;n+=1)e[n]==="--output"&&e[n+1]&&(t.output=e[++n]);return t}i(bm,"parseArgs");async function ws(e=process.argv){let t=bm(e);t.skillDir||(console.error("Usage: node scripts/package-skill.js <skill-dir> [--output <file.skill>]"),process.exit(1));let n=await lt(t.skillDir),r=t.output??dr.join(dr.dirname(t.skillDir),`${n.frontmatter.name}.skill`),o=await vm(t.skillDir,r);console.log(`Wrote ${o.outputPath}`)}i(ws,"main");var km=!1;km&&ws().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});import{cp as xm,mkdir as lr,readFile as ks,rm as xs,stat as Sm,writeFile as Em}from"node:fs/promises";import Y from"node:path";import{strFromU8 as vs,unzipSync as Im}from"fflate";var bs=".kodax-package.json";function Cm(e){return e.replace(/\\/g,"/").replace(/^\.?\//,"")}i(Cm,"normalizeArchivePath");function Tm(e){let t=Cm(e);if(!t||t.startsWith("/")||t.includes("../"))throw new Error(`Unsafe archive entry path: ${e}`);return t}i(Tm,"assertSafeArchivePath");function Rm(e){return/\.(skill|zip)$/i.test(e)}i(Rm,"isZipLike");function _m(e){let t=Im(e),n=Object.entries(t).map(([l,u])=>({relativePath:Tm(l),bytes:u})),r=n.find(l=>l.relativePath==="SKILL.md");if(!r)throw new Error("Archive is missing SKILL.md");let o=Vt(vs(r.bytes)),s=typeof o.frontmatter.name=="string"?o.frontmatter.name.trim():"",a=typeof o.frontmatter.description=="string"?o.frontmatter.description.trim():"";if(!s||!a)throw new Error("Archive SKILL.md is missing required frontmatter fields.");let c=n.find(l=>l.relativePath===bs),d=c?JSON.parse(vs(c.bytes)):null;return{skillName:s,manifest:d,entries:n.filter(l=>l.relativePath!==bs)}}i(_m,"readSkillPackageBuffer");async function Am(e,t){if(await ut(e)){if(!t)throw new Error(`Target skill already exists: ${e}`);await xs(e,{recursive:!0,force:!0})}await lr(e,{recursive:!0})}i(Am,"ensureInstallTarget");async function Pm(e,t={}){let n=Y.resolve(t.skillsDir??ft()),r=_m(await ks(e)),o=Y.join(n,r.skillName);await Am(o,t.force===!0);for(let s of r.entries){let a=Y.join(o,s.relativePath);await lr(Y.dirname(a),{recursive:!0}),await Em(a,s.bytes)}return{skillName:r.skillName,installedTo:o,source:Y.resolve(e),manifest:r.manifest}}i(Pm,"installSkillArchive");async function Mm(e,t={}){let n=await pt(e);if(!n.valid)throw new Error(`Cannot install invalid skill:
|
|
430
611
|
- ${n.errors.join(`
|
|
431
|
-
- `)}`);let r=
|
|
612
|
+
- `)}`);let r=Y.join(e,"SKILL.md"),o=Vt(await ks(r,"utf8")),s=Y.resolve(t.skillsDir??ft()),a=Y.join(s,o.frontmatter.name);if(await ut(a)){if(!t.force)throw new Error(`Target skill already exists: ${a}`);await xs(a,{recursive:!0,force:!0})}return await lr(s,{recursive:!0}),await xm(e,a,{recursive:!0}),{skillName:o.frontmatter.name,installedTo:a,source:Y.resolve(e),manifest:null}}i(Mm,"installSkillDirectory");async function Om(e,t={}){let n=Y.resolve(e),r=await Sm(n).catch(()=>null);if(!r)throw new Error(`Input not found: ${n}`);if(r.isDirectory())return Mm(n,t);if(r.isFile()&&Rm(n))return Pm(n,t);throw new Error("Input must be a skill directory or a .skill/.zip archive.")}i(Om,"installSkill");function Nm(e){let t={input:e[2],skillsDir:void 0,force:!1};for(let n=3;n<e.length;n+=1){let r=e[n];r==="--dest"&&e[n+1]?t.skillsDir=e[++n]:r==="--force"&&(t.force=!0)}return t}i(Nm,"parseArgs");async function Ss(e=process.argv){let t=Nm(e);t.input||(console.error("Usage: node scripts/install-skill.js <skill-dir-or-archive> [--dest <skills-dir>] [--force]"),process.exit(1));let n=await Om(t.input,t);console.log(`Installed ${n.skillName} to ${n.installedTo}`)}i(Ss,"main");var Lm=!1;Lm&&Ss().catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});var LM=1440*60*1e3;var UM=5*6e4;var OO=new Intl.Segmenter("zh-CN",{granularity:"word"});var DN=String.raw`const TOOL_NAME = 'echo_tool';
|
|
432
613
|
const RESOURCE_URI = 'memory://guide';
|
|
433
614
|
const PROMPT_NAME = 'draft_prompt';
|
|
434
615
|
let buffer = '';
|
|
@@ -608,14 +789,14 @@ process.stdin.on('data', (chunk) => {
|
|
|
608
789
|
|
|
609
790
|
process.on('SIGTERM', () => process.exit(0));
|
|
610
791
|
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,
|
|
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(`
|
|
792
|
+
`;var Ts=Object.freeze(["message","label","compaction","branch_summary","archive_marker","rewind_marker","artifact_ledger","memory_outcome_digest","memory_review_receipt"]),rh=0,ih=0,Rs=i(e=>{let t=e==="label"?++rh:++ih,n=Math.random().toString(36).slice(2,8);return`${e}-${Date.now()}-${t}-${n}`},"nextId");async function oh(e,t,n){let r=Rs("label");return await e.append({id:r,ts:Date.now(),type:"label",payload:{targetId:t,label:n}}),r}i(oh,"appendLabel");async function sh(e,t,n){let r=Rs("artifact");return await e.append({id:r,ts:Date.now(),type:"artifact_ledger",payload:{ref:t,summary:n}}),r}i(sh,"appendArtifact");function ah(e){let t=[],n=new Map,r=[],o=null;for(let s of e){if(s.type==="label"){let c=s.payload;c?.targetId&&r.push({targetId:c.targetId,label:c.label});continue}let a={entry:s,children:[]};if(s.type==="message"){t.push(a),n.set(s.id,a),o=a;continue}o?o.children.push(a):t.push(a)}for(let{targetId:s,label:a}of r){let c=n.get(s);c&&a!==void 0&&(c.label=a)}return t}i(ah,"buildLineageTree");var ch=Object.freeze({name:"lineage",entryTypes:Ts,operators:Object.freeze({label:i((async(e,...t)=>{let[n,r]=t;return oh(e,n,r)}),"label"),attachArtifact:i((async(e,...t)=>{let[n,r]=t;return sh(e,n,r)}),"attachArtifact")}),reducers:Object.freeze({buildLineageTree:i(e=>ah(e),"buildLineageTree")})});var yh=new Set(["skill","ask_user_question","exit_plan_mode","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output","tool_search","get_goal","create_goal","update_goal","todo_create","todo_update","todo_list","todo_get","worktree_create","worktree_remove","undo","mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt","repo_overview","changed_scope","changed_diff","changed_diff_bundle","module_context","symbol_context","process_context","impact_estimate","relationship_scan","cyclic_dependencies","semantic_lookup"]),fr=yh,Zt=`[\u5BF9\u8BDD\u5386\u53F2\u6458\u8981]
|
|
793
|
+
|
|
794
|
+
`;var eD=Zt.trimEnd();var tD=16*1024;var xh={enabled:!1,maxAge:20,protectedTools:Array.from(fr)};import cF from"typescript";var E1=new Intl.Segmenter("en",{granularity:"grapheme"});var VK=4*1024;var YK=64*1024;var pr=".conversation-cache.",dB=`${pr}json`,lB=1024*1024,uB=1024*1024,fB=1024*1024,pB=4*1024*1024,mB=128*1024;var Ie=class extends Error{static{i(this,"ConversationPageCacheCleanupError")}directory;cleanupCause;constructor(t,n){super(`Unable to remove recoverable Conversation page caches from ${t}`),this.directory=t,this.cleanupCause=n,this.name="ConversationPageCacheCleanupError"}};function Ls(e){let t=e.lastIndexOf(pr);if(t<=0)return;let n=e.slice(t+pr.length);if(!(n!=="json"&&!(n.startsWith("json.")&&n.endsWith(".tmp"))&&!n.endsWith(".data")&&!n.endsWith(".index")))return e.slice(0,t)}i(Ls,"cacheArtifactSessionId");async function Ds(e){let t=mt.dirname(e),n=mt.basename(e,mt.extname(e)),r;try{r=await tn.readdir(t)}catch(o){if(o.code==="ENOENT")return;throw o}await Promise.all(r.filter(o=>Ls(o)===n).map(o=>tn.rm(mt.join(t,o),{force:!0})))}i(Ds,"removeConversationPageCache");async function mr(e){let t;try{t=await tn.readdir(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;throw new Ie(e,n)}try{await Promise.all(t.filter(n=>!n.isDirectory()&&Ls(n.name)!==void 0).map(n=>tn.rm(mt.join(e,n.name),{force:!0})))}catch(n){throw new Ie(e,n)}}i(mr,"removeConversationPageCachesInDirectory");var Ks=3,Hh=300*1e3,$s=65536,hr=i(e=>P.join(e,".layout.json"),"layoutMarkerPath"),yr=i(e=>P.join(e,".migration-lock"),"lockDirPath"),Bs=i(e=>P.join(yr(e),"owner.json"),"ownerPath"),gr=i(e=>P.join(e,".migration-journal.jsonl"),"journalPath"),wr=i(e=>P.join(P.dirname(e),"sessions-archive"),"sessionsArchiveDir");function vr(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(vr,"isSessionFile");function Us(e){return e.endsWith(".archive.jsonl")||e.endsWith(".islands.jsonl")?e.slice(0,-14):null}i(Us,"sidecarId");async function zh(e){let t;try{t=await R.open(e,"r");let n=Buffer.allocUnsafe($s),{bytesRead:r}=await t.read(n,0,$s,0);if(r===0)return null;let o=n.toString("utf8",0,r),s=o.indexOf(`
|
|
795
|
+
`),a=(s>=0?o.slice(0,s):o).trim();if(!a)return null;let c=JSON.parse(a);if(c&&typeof c=="object"&&c._type==="meta"){let d=c;return{gitRoot:typeof d.gitRoot=="string"?d.gitRoot:void 0,runtimeInfo:d.runtimeInfo}}return null}catch{return null}finally{await t?.close()}}i(zh,"readMeta");async function qh(e){let t=await zh(e);return t?vi({gitRoot:t.gitRoot,runtimeInfo:t.runtimeInfo}).key:Ze}i(qh,"destKeyFor");async function Vh(e){let t=[],n=i(async(r,o)=>{let s=[];try{s=await R.readdir(r,{withFileTypes:!0})}catch{return}for(let a of s)!a.isFile()||a.name.startsWith(".")||(vr(a.name)||o&&Us(a.name)!==null)&&t.push(P.join(r,a.name))},"pushDir");return await n(e,!0),await n(wr(e),!0),t}i(Vh,"collectFlatSources");async function Gh(e){let t=await Vh(e),n=t.filter(s=>vr(P.basename(s))),r=new Set(n.map(s=>P.basename(s,".jsonl"))),o=[];for(let s of n){let a=P.basename(s,".jsonl"),c=await qh(s);o.push({from:s,to:P.join(e,c,`${a}.jsonl`),reason:`session\u2192${c}`});for(let d of[".archive.jsonl",".islands.jsonl"]){let l=P.join(P.dirname(s),`${a}${d}`);js.existsSync(l)&&o.push({from:l,to:P.join(e,c,`${a}.islands.jsonl`),reason:"sidecar\u2192islands"})}}for(let s of t){let a=Us(P.basename(s));a===null||r.has(a)||o.push({from:s,to:P.join(e,Ze,"orphan-islands",`${a}.islands.jsonl`),reason:"orphan-sidecar\u2192_unknown"})}return o}i(Gh,"planMigration");async function Jh(e){try{let t=JSON.parse(await R.readFile(hr(e),"utf8"));return t!==null&&typeof t=="object"&&t.version===Ks}catch{return!1}}i(Jh,"isMigrated");async function Fs(e){await mr(e),await mr(wr(e))}i(Fs,"removeLegacyConversationCaches");async function Yh(e){try{let t=JSON.parse(await R.readFile(Bs(e),"utf8"));if(typeof t.pid=="number"&&t.pid!==process.pid)try{process.kill(t.pid,0)}catch(n){if(n.code==="ESRCH")return!0}return typeof t.heartbeatAt=="number"&&Date.now()-t.heartbeatAt>Hh}catch{return!0}}i(Yh,"lockIsStale");async function Qh(e){let t=yr(e);for(let n=0;n<2;n+=1)try{return await R.mkdir(t),await R.writeFile(Bs(e),JSON.stringify({pid:process.pid,startTime:Date.now(),heartbeatAt:Date.now()})),!0}catch(r){if(r.code!=="EEXIST")return!1;if(n===0&&await Yh(e)){await R.rm(t,{recursive:!0,force:!0}).catch(()=>{});continue}return!1}return!1}i(Qh,"acquireLock");async function Zh(e){await R.rm(yr(e),{recursive:!0,force:!0}).catch(()=>{})}i(Zh,"releaseLock");async function eg(e){try{if((await R.readdir(P.join(e,".write-locks"),{withFileTypes:!0})).some(n=>n.isFile()&&/^[0-9a-f]{64}\.lock$/.test(n.name)))throw new Error("Session layout migration deferred while a Session writer is active")}catch(t){if(t.code==="ENOENT")return;throw t}}i(eg,"assertNoActiveSessionWriters");async function tg(e){let t=new Set;try{let n=await R.readFile(gr(e),"utf8");for(let r of n.split(`
|
|
796
|
+
`))if(r.trim())try{let o=JSON.parse(r);o.done&&typeof o.from=="string"&&t.add(o.from)}catch{}}catch{}return t}i(tg,"readJournalDone");async function ng(e){if(await R.mkdir(P.dirname(e.to),{recursive:!0}),js.existsSync(e.to)){await R.unlink(e.from).catch(()=>{});return}try{await R.rename(e.from,e.to)}catch(t){let n=t.code;if(n==="EXDEV")await R.copyFile(e.from,e.to),await R.unlink(e.from).catch(()=>{});else if(n!=="ENOENT")throw t}}i(ng,"executeMove");async function rg(e){await R.mkdir(e,{recursive:!0});let t=`${hr(e)}.${process.pid}.tmp`,n=JSON.stringify({version:Ks,migratedAt:new Date().toISOString(),from:"flat-v1"});await R.writeFile(t,n+`
|
|
797
|
+
`,"utf8"),await R.rename(t,hr(e))}i(rg,"writeMarker");async function ig(e){let t=wr(e);try{(await R.readdir(t)).length===0&&await R.rmdir(t).catch(()=>{})}catch{}}i(ig,"retireSessionsArchive");async function og(e){if(!await Qh(e))return{moved:0,planned:0};try{await eg(e),await Fs(e);let t=await Gh(e),n=await tg(e),r=await R.open(gr(e),"a"),o=0;try{for(let s of t){if(vr(P.basename(s.from)))try{await Ds(s.to)}catch(a){throw new Ie(P.dirname(s.to),a)}n.has(s.from)||(await ng(s),await r.write(JSON.stringify({from:s.from,to:s.to,done:!0})+`
|
|
798
|
+
`),o+=1)}}finally{await r.close()}return await ig(e),await Fs(e),await rg(e),await R.rm(gr(e),{force:!0}).catch(()=>{}),{moved:o,planned:t.length}}finally{await Zh(e)}}i(og,"runMigration");async function Xs(e){try{if(await Jh(e))return;await og(e)}catch(t){if(t instanceof Ie)throw t}}i(Xs,"ensureLayoutMigrated");import{jsx as Tt,jsxs as Je}from"react/jsx-runtime";import{useMemo as Zw,useRef as ev,useState as ii}from"react";import{jsx as Ac}from"react/jsx-runtime";import{createContext as Kw,useContext as ei,useEffect as Ge,useMemo as _c,useState as Bw,useCallback as Pc,useRef as kn}from"react";import{Stream as gw}from"node:stream";import{openSync as yw,writeSync as wc}from"node:fs";import{performance as ww}from"node:perf_hooks";import{tmpdir as vw}from"node:os";import{join as bw}from"node:path";import br,{forwardRef as cg,useContext as dg}from"react";import{createContext as sg}from"react";var Be=sg({isScreenReaderEnabled:!1});import{createContext as ag}from"react";var nn=ag(void 0);var Ws=cg(({children:e,backgroundColor:t,"aria-label":n,"aria-hidden":r,"aria-role":o,"aria-state":s,...a},c)=>{let{isScreenReaderEnabled:d}=dg(Be),l=n?br.createElement("ink-text",null,n):void 0;if(d&&r)return null;let u=br.createElement("ink-box",{ref:c,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...a,backgroundColor:t,overflowX:a.overflowX??a.overflow??"visible",overflowY:a.overflowY??a.overflow??"visible"},internal_accessibility:{role:o,state:s}},d&&l?l:e);return t?br.createElement(nn.Provider,{value:t},u):u});Ws.displayName="Box";var q=Ws;import pg,{useContext as Hs}from"react";import Ue from"chalk";import ge from"chalk";var lg=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,ug=/^ansi256\(\s?(\d+)\s?\)$/;function fg(e){return e in ge}i(fg,"isNamedColor");function G(e,t,n){if(!t)return e;if(fg(t)){let r=ge;if(n==="foreground")return r[t]?.(e)??e;let o=`bg${t[0].toUpperCase()+t.slice(1)}`;return r[o]?.(e)??e}if(t.startsWith("#"))return n==="foreground"?ge.hex(t)(e):ge.bgHex(t)(e);if(t.startsWith("ansi256")){let r=ug.exec(t);if(!r)return e;let o=Number(r[1]);return n==="foreground"?ge.ansi256(o)(e):ge.bgAnsi256(o)(e)}if(t.startsWith("rgb")){let r=lg.exec(t);if(!r)return e;let o=Number(r[1]),s=Number(r[2]),a=Number(r[3]);return n==="foreground"?ge.rgb(o,s,a)(e):ge.bgRgb(o,s,a)(e)}return e}i(G,"colorize");function K({color:e,backgroundColor:t,dimColor:n=!1,bold:r=!1,italic:o=!1,underline:s=!1,strikethrough:a=!1,inverse:c=!1,wrap:d="wrap",children:l,"aria-label":u,"aria-hidden":f=!1,internal_cursorAnchor:p=!1}){let{isScreenReaderEnabled:m}=Hs(Be),g=Hs(nn),v=m&&u?u:l;if(v==null)return null;let w=i(y=>{let h=y;n&&(h=Ue.dim(h)),e&&(h=G(h,e,"foreground"));let b=t??g;return b&&(h=G(h,b,"background")),r&&(h=Ue.bold(h)),o&&(h=Ue.italic(h)),s&&(h=Ue.underline(h)),a&&(h=Ue.strikethrough(h)),c&&(h=Ue.inverse(h)),h},"transform");return m&&f?null:pg.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:d},internal_transform:w,...p?{internal_cursorAnchor:!0}:{}},m&&u?u:l)}i(K,"Text");import XB,{useLayoutEffect as WB,useMemo as HB,useState as zB}from"react";import Pe from"node:process";import hc from"react";import{throttle as Yy}from"es-toolkit/compat";import B from"ansi-escapes";import fe from"is-in-ci";import Qy from"auto-bind";import{onExit as Zy}from"signal-exit";import ew from"patch-console";import{LegacyRoot as tw,ConcurrentRoot as nw}from"react-reconciler/constants.js";import rw from"yoga-layout";import iw from"wrap-ansi";import ow from"terminal-size";import mg from"node:process";var rn=i(()=>mg.env.DEV==="true","isDev");import Ug from"react-reconciler";import{DefaultEventPriority as Xg,NoEventPriority as pa}from"react-reconciler/constants.js";import*as ye from"scheduler";import da from"yoga-layout";import{createContext as Wg}from"react";import _g from"yoga-layout";import hg from"widest-line";var zs=new Map,gg=i(e=>{if(e.length===0)return{width:0,height:0};let t=zs.get(e);if(t)return t;let n=hg(e),r=e.split(`
|
|
799
|
+
`).length,o={width:n,height:r};return zs.set(e,o),o},"measureText"),kr=gg;import yg from"wrap-ansi";import wg from"cli-truncate";var qs={},vg=i((e,t,n)=>{let r=e+String(t)+String(n),o=qs[r];if(o)return o;let s=e;if(n==="wrap"&&(s=yg(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let a="end";n==="truncate-middle"&&(a="middle"),n==="truncate-start"&&(a="start"),s=wg(e,t,{position:a})}return qs[r]=s,s},"wrapText"),on=vg;var bg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=63},"isCsiParameterCharacter"),kg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isCsiIntermediateCharacter"),xg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=64&&t<=126},"isCsiFinalCharacter"),Js=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=32&&t<=47},"isEscapeIntermediateCharacter"),Sg=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=48&&t<=126},"isEscapeFinalCharacter"),Ys=i(e=>{let t=e.codePointAt(0);return t!==void 0&&t>=128&&t<=159},"isC1ControlCharacter"),Vs=i((e,t)=>{let n=t;for(;n<e.length;){let c=e[n];if(!bg(c))break;n++}let r=e.slice(t,n),o=n;for(;n<e.length;){let c=e[n];if(!kg(c))break;n++}let s=e.slice(o,n),a=e[n];if(!(a===void 0||!xg(a)))return{endIndex:n+1,parameterString:r,intermediateString:s,finalCharacter:a}},"readCsiSequence"),Gs=i((e,t,n)=>{for(let r=t;r<e.length;r++){let o=e[r];if(n&&o==="\x07"||o==="\x9C")return r+1;if(o==="\x1B"){let s=e[r+1];if(s==="\x1B"){r++;continue}if(s==="\\")return r+2}}},"findControlStringTerminatorIndex"),Eg=i((e,t)=>{let n=t;for(;n<e.length;){let s=e[n];if(!Js(s))break;n++}let r=e.slice(t,n),o=e[n];if(!(o===void 0||!Sg(o)))return{endIndex:n+1,intermediateString:r,finalCharacter:o}},"readEscapeSequence"),Ig=i(e=>{switch(e){case"]":return{type:"osc",allowBellTerminator:!0};case"P":return{type:"dcs",allowBellTerminator:!1};case"^":return{type:"pm",allowBellTerminator:!1};case"_":return{type:"apc",allowBellTerminator:!1};case"X":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromEscapeIntroducer"),Cg=i(e=>{switch(e){case"\x9D":return{type:"osc",allowBellTerminator:!0};case"\x90":return{type:"dcs",allowBellTerminator:!1};case"\x9E":return{type:"pm",allowBellTerminator:!1};case"\x9F":return{type:"apc",allowBellTerminator:!1};case"\x98":return{type:"sos",allowBellTerminator:!1};default:return}},"getControlStringFromC1Introducer"),xr=i(e=>{if(e.includes("\x1B"))return!0;for(let t of e)if(Ys(t))return!0;return!1},"hasAnsiControlCharacters"),Xe=i((e,t,n,r)=>(r>n&&e.push({type:"text",value:t.slice(n,r)}),e.push({type:"invalid",value:t.slice(r)}),e),"malformedFromIndex"),Qs=i(e=>{if(!xr(e))return[{type:"text",value:e}];let t=[],n=0;for(let r=0;r<e.length;){let o=e[r];if(o===void 0)break;if(o==="\x1B"){let a=e[r+1];if(a===void 0)return Xe(t,e,n,r);if(a==="["){let l=Vs(e,r+2);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,l.endIndex),parameterString:l.parameterString,intermediateString:l.intermediateString,finalCharacter:l.finalCharacter}),r=l.endIndex,n=r;continue}let c=Ig(a);if(c!==void 0){let l=Gs(e,r+2,c.allowBellTerminator);if(l===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:c.type,value:e.slice(r,l)}),r=l,n=r;continue}let d=Eg(e,r+1);if(d===void 0){if(Js(a))return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),r++,n=r;continue}r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"esc",value:e.slice(r,d.endIndex),intermediateString:d.intermediateString,finalCharacter:d.finalCharacter}),r=d.endIndex,n=r;continue}if(o==="\x9B"){let a=Vs(e,r+1);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"csi",value:e.slice(r,a.endIndex),parameterString:a.parameterString,intermediateString:a.intermediateString,finalCharacter:a.finalCharacter}),r=a.endIndex,n=r;continue}let s=Cg(o);if(s!==void 0){let a=Gs(e,r+1,s.allowBellTerminator);if(a===void 0)return Xe(t,e,n,r);r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:s.type,value:e.slice(r,a)}),r=a,n=r;continue}if(o==="\x9C"){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"st",value:o}),r++,n=r;continue}if(Ys(o)){r>n&&t.push({type:"text",value:e.slice(n,r)}),t.push({type:"c1",value:o}),r++,n=r;continue}r++}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t},"tokenizeAnsi");var Tg=/^[\d:;]*$/,Rg=i(e=>{if(!xr(e))return e;let t="";for(let n of Qs(e)){if(n.type==="text"||n.type==="osc"){t+=n.value;continue}n.type==="csi"&&n.finalCharacter==="m"&&n.intermediateString===""&&Tg.test(n.parameterString)&&(t+=n.value)}return t},"sanitizeAnsi"),Zs=Rg;var ea=i(e=>{let t="";for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r===void 0)continue;let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=ea(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o,n))),t+=o}return Zs(t)},"squashTextNodes"),ht=ea;var sn=i(e=>{let t={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:void 0,yogaNode:e==="ink-virtual-text"?void 0:_g.Node.create(),internal_accessibility:{}};return e==="ink-text"&&t.yogaNode?.setMeasureFunc(Ag.bind(null,t)),t},"createNode"),an=i((e,t)=>{t.parentNode&>(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount()),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"appendChildNode"),Sr=i((e,t,n)=>{t.parentNode&>(t.parentNode,t),t.parentNode=e;let r=e.childNodes.indexOf(n);r>=0?(e.childNodes.splice(r,0,t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,r)):(e.childNodes.push(t),t.yogaNode&&e.yogaNode?.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"insertBeforeNode"),gt=i((e,t)=>{t.yogaNode&&t.parentNode?.yogaNode?.removeChild(t.yogaNode),t.parentNode=void 0;let n=e.childNodes.indexOf(t);n>=0&&e.childNodes.splice(n,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&cn(e)},"removeChildNode"),Er=i((e,t,n)=>{if(t==="internal_accessibility"){e.internal_accessibility=n;return}e.attributes[t]=n},"setAttribute"),Ir=i((e,t)=>{e.style=t},"setStyle"),ta=i(e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:void 0,style:{}};return yt(t,e),t},"createTextNode"),Ag=i(function(e,t){let n=e.nodeName==="#text"?e.nodeValue:ht(e),r=kr(n);if(r.width<=t||r.width>=1&&t>0&&t<1)return r;let o=e.style?.textWrap??"wrap",s=on(n,t,o);return kr(s)},"measureTextNode"),na=i(e=>{if(e?.parentNode)return e.yogaNode??na(e.parentNode)},"findClosestYogaNode"),cn=i(e=>{na(e)?.markDirty()},"markNodeAsDirty"),yt=i((e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,cn(e)},"setTextNodeValue");import k from"yoga-layout";var Mg=i((e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?k.POSITION_TYPE_ABSOLUTE:k.POSITION_TYPE_RELATIVE),"top"in t&&e.setPosition(k.EDGE_TOP,t.top??0),"bottom"in t&&e.setPosition(k.EDGE_BOTTOM,t.bottom??0),"left"in t&&e.setPosition(k.EDGE_LEFT,t.left??0),"right"in t&&e.setPosition(k.EDGE_RIGHT,t.right??0)},"applyPositionStyles"),Og=i((e,t)=>{"margin"in t&&e.setMargin(k.EDGE_ALL,t.margin??0),"marginX"in t&&e.setMargin(k.EDGE_HORIZONTAL,t.marginX??0),"marginY"in t&&e.setMargin(k.EDGE_VERTICAL,t.marginY??0),"marginLeft"in t&&e.setMargin(k.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(k.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(k.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(k.EDGE_BOTTOM,t.marginBottom||0)},"applyMarginStyles"),Ng=i((e,t)=>{"padding"in t&&e.setPadding(k.EDGE_ALL,t.padding??0),"paddingX"in t&&e.setPadding(k.EDGE_HORIZONTAL,t.paddingX??0),"paddingY"in t&&e.setPadding(k.EDGE_VERTICAL,t.paddingY??0),"paddingLeft"in t&&e.setPadding(k.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(k.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(k.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(k.EDGE_BOTTOM,t.paddingBottom||0)},"applyPaddingStyles"),Lg=i((e,t)=>{"flexGrow"in t&&e.setFlexGrow(t.flexGrow??0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexWrap"in t&&(t.flexWrap==="nowrap"&&e.setFlexWrap(k.WRAP_NO_WRAP),t.flexWrap==="wrap"&&e.setFlexWrap(k.WRAP_WRAP),t.flexWrap==="wrap-reverse"&&e.setFlexWrap(k.WRAP_WRAP_REVERSE)),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(k.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(Number.NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(k.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(k.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(k.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(k.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(k.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(k.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(k.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(k.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(k.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(k.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(k.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(k.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(k.JUSTIFY_SPACE_AROUND),t.justifyContent==="space-evenly"&&e.setJustifyContent(k.JUSTIFY_SPACE_EVENLY))},"applyFlexStyles"),Dg=i((e,t)=>{"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(t.minWidth??0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(t.minHeight??0))},"applyDimensionStyles"),$g=i((e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?k.DISPLAY_FLEX:k.DISPLAY_NONE)},"applyDisplayStyles"),Fg=i((e,t)=>{if("borderStyle"in t){let n=t.borderStyle?1:0;t.borderTop!==!1&&e.setBorder(k.EDGE_TOP,n),t.borderBottom!==!1&&e.setBorder(k.EDGE_BOTTOM,n),t.borderLeft!==!1&&e.setBorder(k.EDGE_LEFT,n),t.borderRight!==!1&&e.setBorder(k.EDGE_RIGHT,n)}},"applyBorderStyles"),jg=i((e,t)=>{"gap"in t&&e.setGap(k.GUTTER_ALL,t.gap??0),"columnGap"in t&&e.setGap(k.GUTTER_COLUMN,t.columnGap??0),"rowGap"in t&&e.setGap(k.GUTTER_ROW,t.rowGap??0)},"applyGapStyles"),Kg=i((e,t={})=>{Mg(e,t),Og(e,t),Ng(e,t),Lg(e,t),Dg(e,t),$g(e,t),Fg(e,t),jg(e,t)},"styles"),Cr=Kg;if(rn())try{await Promise.resolve().then(()=>(ca(),Bg))}catch(e){if(e.code==="ERR_MODULE_NOT_FOUND")console.warn(`
|
|
619
800
|
The environment variable DEV is set to true, so Ink tried to import \`react-devtools-core\`,
|
|
620
801
|
but this failed as it was not installed. Debugging with React Devtools requires it.
|
|
621
802
|
|
|
@@ -623,33 +804,33 @@ To install use this command:
|
|
|
623
804
|
|
|
624
805
|
$ npm install --save-dev react-devtools-core
|
|
625
806
|
`.trim()+`
|
|
626
|
-
`);else throw e}var
|
|
627
|
-
`).repeat(_);
|
|
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"),
|
|
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=
|
|
807
|
+
`);else throw e}var la=i((e,t)=>{if(e===t)return;if(!e)return t;let n={},r=!1;for(let o of Object.keys(e))(!t||!Object.hasOwn(t,o))&&(n[o]=void 0,r=!0);if(t)for(let o of Object.keys(t))t[o]!==e[o]&&(n[o]=t[o],r=!0);return r?n:void 0},"diff"),ua=i(e=>{e?.unsetMeasureFunc(),e?.freeRecursive()},"cleanupYogaNode"),ln=pa,_r,fa={name:void 0,version:void 0},se=Ug({getRootHostContext:i(()=>({isInsideText:!1}),"getRootHostContext"),prepareForCommit:i(()=>null,"prepareForCommit"),preparePortalMount:i(()=>null,"preparePortalMount"),clearContainer:i(()=>!1,"clearContainer"),resetAfterCommit(e){if(typeof e.onComputeLayout=="function"&&e.onComputeLayout(),e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext(e,t){let n=e.isInsideText,r=t==="ink-text"||t==="ink-virtual-text";return n===r?e:{isInsideText:r}},shouldSetTextContent:i(()=>!1,"shouldSetTextContent"),createInstance(e,t,n,r){if(r.isInsideText&&e==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let o=e==="ink-text"&&r.isInsideText?"ink-virtual-text":e,s=sn(o);for(let[a,c]of Object.entries(t))if(a!=="children"){if(a==="style"){Ir(s,c),s.yogaNode&&Cr(s.yogaNode,c);continue}if(a==="internal_transform"){s.internal_transform=c;continue}if(a==="internal_cursorAnchor"){s.internal_cursorAnchor=c;continue}if(a==="internal_static"){_r=n,s.internal_static=!0,n.isStaticDirty=!0,n.staticNode=s;continue}Er(s,a,c)}return s},createTextInstance(e,t,n){if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside <Text> component`);return ta(e)},resetTextContent(){},hideTextInstance(e){yt(e,"")},unhideTextInstance(e,t){yt(e,t)},getPublicInstance:i(e=>e,"getPublicInstance"),hideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_NONE)},unhideInstance(e){e.yogaNode?.setDisplay(da.DISPLAY_FLEX)},appendInitialChild:an,appendChild:an,insertBefore:Sr,finalizeInitialChildren(){return!1},isPrimaryRenderer:!0,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,scheduleCallback:ye.unstable_scheduleCallback,cancelCallback:ye.unstable_cancelCallback,shouldYield:ye.unstable_shouldYield,now:ye.unstable_now,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},getInstanceFromNode:i(()=>null,"getInstanceFromNode"),prepareScopeUpdate(){},getInstanceFromScope:i(()=>null,"getInstanceFromScope"),appendChildToContainer:an,insertInContainerBefore:Sr,removeChildFromContainer(e,t){gt(e,t),ua(t.yogaNode)},commitUpdate(e,t,n,r){_r&&e.internal_static&&(_r.isStaticDirty=!0);let o=la(n,r),s=la(n.style,r.style);if(!(!o&&!s)){if(o)for(let[a,c]of Object.entries(o)){if(a==="style"){Ir(e,c);continue}if(a==="internal_transform"){e.internal_transform=c;continue}if(a==="internal_cursorAnchor"){e.internal_cursorAnchor=c;continue}if(a==="internal_static"){e.internal_static=!0;continue}Er(e,a,c)}s&&e.yogaNode&&Cr(e.yogaNode,s)}},commitTextUpdate(e,t,n){yt(e,n)},removeChild(e,t){gt(e,t),ua(t.yogaNode)},setCurrentUpdatePriority(e){ln=e},getCurrentUpdatePriority:i(()=>ln,"getCurrentUpdatePriority"),resolveUpdatePriority(){return ln!==pa?ln:Xg},maySuspendCommit(){return!0},NotPendingTransition:void 0,HostTransitionContext:Wg(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},rendererPackageName:fa.name,rendererVersion:fa.version});import Gg from"widest-line";import Jg from"indent-string";import we from"yoga-layout";import un from"yoga-layout";var Hg=i(e=>e.getComputedWidth()-e.getComputedPadding(un.EDGE_LEFT)-e.getComputedPadding(un.EDGE_RIGHT)-e.getComputedBorder(un.EDGE_LEFT)-e.getComputedBorder(un.EDGE_RIGHT),"getMaxWidth"),ma=Hg;import zg from"cli-boxes";import fn from"chalk";var qg=i((e,t,n,r)=>{if(n.style.borderStyle){let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=typeof n.style.borderStyle=="string"?zg[n.style.borderStyle]:n.style.borderStyle,c=n.style.borderTopColor??n.style.borderColor,d=n.style.borderBottomColor??n.style.borderColor,l=n.style.borderLeftColor??n.style.borderColor,u=n.style.borderRightColor??n.style.borderColor,f=n.style.borderTopDimColor??n.style.borderDimColor,p=n.style.borderBottomDimColor??n.style.borderDimColor,m=n.style.borderLeftDimColor??n.style.borderDimColor,g=n.style.borderRightDimColor??n.style.borderDimColor,v=n.style.borderTop!==!1,w=n.style.borderBottom!==!1,y=n.style.borderLeft!==!1,h=n.style.borderRight!==!1,b=o-(y?1:0)-(h?1:0),I=v?G((y?a.topLeft:"")+a.top.repeat(b)+(h?a.topRight:""),c,"foreground"):void 0;v&&f&&(I=fn.dim(I));let _=s;v&&(_-=1),w&&(_-=1);let W=(G(a.left,l,"foreground")+`
|
|
808
|
+
`).repeat(_);m&&(W=fn.dim(W));let H=(G(a.right,u,"foreground")+`
|
|
809
|
+
`).repeat(_);g&&(H=fn.dim(H));let A=w?G((y?a.bottomLeft:"")+a.bottom.repeat(b)+(h?a.bottomRight:""),d,"foreground"):void 0;w&&p&&(A=fn.dim(A));let Me=v?1:0;I&&r.write(e,t,I,{transformers:[]}),y&&r.write(e,t+Me,W,{transformers:[]}),h&&r.write(e+o-1,t+Me,H,{transformers:[]}),A&&r.write(e,t+s-1,A,{transformers:[]})}},"renderBorder"),ha=qg;var Vg=i((e,t,n,r)=>{if(!n.style.backgroundColor)return;let o=n.yogaNode.getComputedWidth(),s=n.yogaNode.getComputedHeight(),a=n.style.borderStyle&&n.style.borderLeft!==!1?1:0,c=n.style.borderStyle&&n.style.borderRight!==!1?1:0,d=n.style.borderStyle&&n.style.borderTop!==!1?1:0,l=n.style.borderStyle&&n.style.borderBottom!==!1?1:0,u=o-a-c,f=s-d-l;if(!(u>0&&f>0))return;let p=G(" ".repeat(u),n.style.backgroundColor,"background");for(let m=0;m<f;m++)r.write(e+a,t+d+m,p,{transformers:[]})},"renderBackground"),ga=Vg;function ya(e){let{rawScrollTop:t,contentHeight:n,viewportHeight:r,previousScrollHeight:o,stickyScroll:s,clampMin:a,clampMax:c,virtualScrollWindowed:d,inWindowScrollTop:l,previousAppliedScrollTop:u,regionTop:f}=e,p=Math.max(0,n-r),m=Math.max(0,Math.min(Math.floor(t),p)),v=s&&n>=o?p:m,w=a!==void 0||c!==void 0?Math.max(a??0,Math.min(v,Math.min(p,c??p))):v,y=d&&l!==void 0,h=Math.max(0,Math.floor(l??0)),b=d?y?h:0:w,I=y?b:w,_=null;if(u!==void 0&&u!==I&&r>0){let W=f+r-1;W>=f&&(_={top:f,bottom:W,delta:I-u})}return{scrollHeight:n,viewportTop:w,appliedScrollTop:I,scrollTop:w,scrollOffsetY:b,scrollHint:_}}i(ya,"computeScrollState");var Yg=i((e,t)=>{let n=e.childNodes[0]?.yogaNode;if(n){let r=n.getComputedLeft(),o=n.getComputedTop();t=`
|
|
810
|
+
`.repeat(o)+Jg(t,r)}return t},"applyPaddingToText"),pn=i((e,t={})=>{if(t.skipStaticElements&&e.internal_static||e.yogaNode?.getDisplay()===we.DISPLAY_NONE)return"";let n="";if(e.nodeName==="ink-text")n=ht(e);else if(e.nodeName==="ink-box"||e.nodeName==="ink-root"){let r=e.style.flexDirection==="row"||e.style.flexDirection==="row-reverse"?" ":`
|
|
811
|
+
`;n=(e.style.flexDirection==="row-reverse"||e.style.flexDirection==="column-reverse"?[...e.childNodes].reverse():[...e.childNodes]).map(s=>pn(s,{parentRole:e.internal_accessibility?.role,skipStaticElements:t.skipStaticElements})).filter(Boolean).join(r)}if(e.internal_accessibility){let{role:r,state:o}=e.internal_accessibility;if(o){let a=Object.keys(o).filter(c=>o[c]).join(", ");a&&(n=`(${a}) ${n}`)}r&&r!==t.parentRole&&(n=`${r}: ${n}`)}return n},"renderNodeToScreenReaderOutput"),Ar=null,Pr=null;function wa(){Ar=null,Pr=null}i(wa,"resetScrollHint");function va(){return Ar}i(va,"getScrollHint");function ba(){return Pr}i(ba,"getScrollRepaint");var ka=i((e,t,n)=>{let{offsetX:r=0,offsetY:o=0,transformers:s=[],skipStaticElements:a}=n;if(a&&e.internal_static)return;let{yogaNode:c}=e;if(c){if(c.getDisplay()===we.DISPLAY_NONE)return;let d=r+c.getComputedLeft(),l=o+c.getComputedTop();e.internal_cursorAnchor&&(t.cursorPosition={x:d,y:l});let u=s;if(typeof e.internal_transform=="function"&&(u=[e.internal_transform,...s]),e.nodeName==="ink-text"){let m=ht(e);if(m.length>0){let g=Gg(m),v=ma(c);if(g>v){let w=e.style.textWrap??"wrap";m=on(m,v,w)}m=Yg(e,m),t.write(d,l,m,{transformers:u})}return}let f=!1,p=0;if(e.nodeName==="ink-box"){ga(d,l,e,t),ha(d,l,e,t);let m=e.style.overflowX??e.style.overflow,g=e.style.overflowY??e.style.overflow,v=m==="hidden"||m==="scroll",w=g==="hidden"||g==="scroll";if(g==="scroll"){let y=c.getComputedBorder(we.EDGE_TOP),h=c.getComputedBorder(we.EDGE_BOTTOM),b=Math.max(0,c.getComputedHeight()-y-h),I=e.attributes?.virtualScrollWindowed===!0,_=e.childNodes[0],W=Math.max(0,Math.floor(I?e.attributes?.scrollHeight??0:_?.yogaNode?.getComputedHeight()??e.attributes?.scrollHeight??0)),H=typeof e.scrollHeight=="number"?e.scrollHeight:W,A=ya({rawScrollTop:e.scrollTop??e.attributes?.scrollTop??0,contentHeight:W,viewportHeight:b,previousScrollHeight:H,stickyScroll:e.stickyScroll??!!e.attributes?.stickyScroll,clampMin:e.attributes?.scrollClampMin,clampMax:e.attributes?.scrollClampMax,virtualScrollWindowed:I,inWindowScrollTop:e.attributes?.inWindowScrollTop,previousAppliedScrollTop:e.appliedScrollTop,regionTop:l+y});e.scrollHeight=A.scrollHeight,e.scrollViewportHeight=b,e.scrollViewportTop=A.viewportTop,e.appliedScrollTop=A.appliedScrollTop,A.scrollHint&&(Ar=A.scrollHint,Math.trunc(Number(e.attributes?.pendingScrollDelta??0))!==0&&(Pr={top:A.scrollHint.top,bottom:A.scrollHint.bottom})),e.attributes&&e.attributes.pendingScrollDelta&&(e.attributes.pendingScrollDelta=0),e.scrollTop=A.scrollTop,p=A.scrollOffsetY}if(v||w){let y=v?d+c.getComputedBorder(we.EDGE_LEFT):void 0,h=v?d+c.getComputedWidth()-c.getComputedBorder(we.EDGE_RIGHT):void 0,b=w?l+c.getComputedBorder(we.EDGE_TOP):void 0,I=w?l+c.getComputedHeight()-c.getComputedBorder(we.EDGE_BOTTOM):void 0;t.clip({x1:y,x2:h,y1:b,y2:I}),f=!0}}if(e.nodeName==="ink-root"||e.nodeName==="ink-box"){for(let m of e.childNodes)ka(m,t,{offsetX:d,offsetY:l-p,transformers:u,skipStaticElements:a});f&&t.unclip()}}},"renderNodeToOutput"),Mr=ka;import Qg from"slice-ansi";import Zg from"string-width";import{styledCharsFromTokens as ey,styledCharsToString as ty,tokenize as ny}from"@alcalzone/ansi-tokenize";var Or=class{static{i(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledChars=new Map;getStyledChars(t){let n=this.styledChars.get(t);return n===void 0&&(n=ey(ny(t)),this.styledChars.set(t,n)),n}getStringWidth(t){let n=this.widths.get(t);return n===void 0&&(n=Zg(t),this.widths.set(t,n)),n}getWidestLine(t){let n=this.blockWidths.get(t);if(n===void 0){let r=0;for(let o of t.split(`
|
|
812
|
+
`))r=Math.max(r,this.getStringWidth(o));n=r,this.blockWidths.set(t,n)}return n}},We=class{static{i(this,"Output")}width;height;operations=[];caches=new Or;constructor(t){let{width:n,height:r}=t;this.width=n,this.height=r}write(t,n,r,o){let{transformers:s}=o;r&&this.operations.push({type:"write",x:t,y:n,text:r,transformers:s})}clip(t){this.operations.push({type:"clip",clip:t})}unclip(){this.operations.push({type:"unclip"})}getGrid(){let t=[];for(let r=0;r<this.height;r++){let o=[];for(let s=0;s<this.width;s++)o.push({type:"char",value:" ",fullWidth:!1,styles:[]});t.push(o)}let n=[];for(let r of this.operations)if(r.type==="clip"&&n.push(r.clip),r.type==="unclip"&&n.pop(),r.type==="write"){let{text:o,transformers:s}=r,{x:a,y:c}=r,d=o.split(`
|
|
813
|
+
`),l=n.at(-1);if(l){let f=typeof l?.x1=="number"&&typeof l?.x2=="number",p=typeof l?.y1=="number"&&typeof l?.y2=="number";if(f){let m=this.caches.getWidestLine(o);if(a+m<l.x1||a>l.x2)continue}if(p){let m=d.length;if(c+m<l.y1||c>l.y2)continue}if(f&&(d=d.map(m=>{let g=a<l.x1?l.x1-a:0,v=this.caches.getStringWidth(m),w=a+v>l.x2?l.x2-a:v;return Qg(m,g,w)}),a<l.x1&&(a=l.x1)),p){let m=c<l.y1?l.y1-c:0,g=d.length,v=c+g>l.y2?l.y2-c:g;d=d.slice(m,v),c<l.y1&&(c=l.y1)}}let u=0;for(let[f,p]of d.entries()){let m=t[c+u];if(!m)continue;for(let w of s)p=w(p,f);let g=this.caches.getStyledChars(p),v=a;for(let w of g){m[v]=w;let y=Math.max(1,this.caches.getStringWidth(w.value));if(y>1)for(let h=1;h<y;h++)m[v+h]={type:"char",value:"",fullWidth:!1,styles:w.styles};v+=y}u++}}return t}get(){let t=this.getGrid();return{output:t.map(r=>{let o=r.filter(s=>s!==void 0);return ty(o).trimEnd()}).join(`
|
|
814
|
+
`),height:t.length}}};var Z={Single:0,Wide:1,SpacerTail:2},Q={char:" ",width:Z.Single,style:"",hyperlink:void 0};function xa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q);return{width:e,height:t,cells:n}}i(xa,"createScreen");function Ce(e,t,n){if(!(t<0||n<0||t>=e.width||n>=e.height))return e.cells[n*e.width+t]}i(Ce,"cellAt");function Sa(e,t){if(e<0||t<0)throw new RangeError(`Screen dimensions must be non-negative (got width=${e}, height=${t})`);let n=new Array(e*t).fill(Q),r=!1;return{width:e,height:t,setCellAt(o,s,a){if(r)throw new Error("ScreenBuilder.setCellAt called after build()");if(o<0||s<0||o>=e||s>=t)throw new RangeError(`ScreenBuilder.setCellAt out of bounds: (${o}, ${s}) on ${e}x${t}`);n[s*e+o]=a},build(){if(r)throw new Error("ScreenBuilder.build called twice");return r=!0,{width:e,height:t,cells:n}}}}i(Sa,"createScreenBuilder");function*mn(e,t){let n=Math.max(e.width,t.width),r=Math.max(e.height,t.height);for(let o=0;o<r;o++)for(let s=0;s<n;s++){let a=Ce(e,s,o),c=Ce(t,s,o);ry(a,c)||(yield{x:s,y:o,prev:a,next:c})}}i(mn,"diffEach");function Ea(e,t,n,r){if(r===0||e.height===0)return e;let o=Math.max(0,t),s=Math.min(e.height-1,n);if(o>s)return e;let a=e.width,c=e.cells.slice(),d=s-o+1,l=i(u=>{for(let f=0;f<a;f++)c[u*a+f]=Q},"blankRow");if(Math.abs(r)>=d){for(let u=o;u<=s;u++)l(u);return{...e,cells:c}}if(r>0){for(let u=o;u<=s-r;u++)for(let f=0;f<a;f++)c[u*a+f]=e.cells[(u+r)*a+f]??Q;for(let u=s-r+1;u<=s;u++)l(u)}else{let u=-r;for(let f=s;f>=o+u;f--)for(let p=0;p<a;p++)c[f*a+p]=e.cells[(f-u)*a+p]??Q;for(let f=o;f<=o+u-1;f++)l(f)}return{...e,cells:c}}i(Ea,"shiftRowsRegion");function ry(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.char===t.char&&e.width===t.width&&e.style===t.style&&e.hyperlink===t.hyperlink}i(ry,"cellsEqual");var Nr="\x1B]8;";function iy(e){return e.endsWith("\x07")?e.slice(0,-1):e}i(iy,"stripOsc8Terminator");function oy(e){if(!e.startsWith(Nr))return;let t=e.slice(Nr.length),n=t.indexOf(";");if(n<0)return;let r=t.slice(n+1),o=iy(r);return o.length>0?o:void 0}i(oy,"parseOsc8Url");function sy(e){if(e.value==="")return{char:"",width:Z.SpacerTail,style:"",hyperlink:void 0};let t="",n;for(let r of e.styles)if(r.code.startsWith(Nr)){let o=oy(r.code);o!==void 0&&(n=o)}else t+=r.code;return{char:e.value,width:e.fullWidth?Z.Wide:Z.Single,style:t,hyperlink:n}}i(sy,"styledCharToCell");function Ia(e){let t=e.getGrid(),n=e.width,r=e.height,o=Sa(n,r),s=Math.min(t.length,r);for(let a=0;a<s;a++){let c=t[a];if(!c)continue;let d=Math.min(c.length,n);for(let l=0;l<d;l++){let u=c[l];if(!u)continue;let f=sy(u);f.char===Q.char&&f.width===Q.width&&f.style===Q.style&&f.hyperlink===Q.hyperlink||o.setCellAt(l,a,f)}}return o.build()}i(Ia,"outputToScreen");var ay=i((e,t,n)=>{if(e.yogaNode){if(t){let p=pn(e,{skipStaticElements:!0}),m=p===""?0:p.split(`
|
|
815
|
+
`).length,g="";return e.staticNode&&(g=pn(e.staticNode,{skipStaticElements:!1})),{output:p,outputHeight:m,staticOutput:g?`${g}
|
|
816
|
+
`:"",frame:void 0}}let r=new We({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});wa(),Mr(e,r,{skipStaticElements:!0});let o;e.staticNode?.yogaNode&&(o=new We({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),Mr(e.staticNode,o,{skipStaticElements:!1}));let{output:s,height:a}=r.get(),c=Ia(r),d=n?.columns??e.yogaNode.getComputedWidth(),l=n?.rows??e.yogaNode.getComputedHeight(),u=r.cursorPosition,f={screen:c,viewport:{width:d,height:l},cursor:{x:0,y:c.height,visible:!1},scrollHint:va(),scrollRepaint:ba(),...u?{inputCursor:{x:u.x,y:u.y}}:{}};return{output:s,outputHeight:a,staticOutput:o?`${o.get().output}
|
|
817
|
+
`:"",frame:f}}return{output:"",outputHeight:0,staticOutput:"",frame:void 0}},"renderer"),Lr=ay;function X(...e){if(e.length===0)return"\x1B[";if(e.length===1)return`\x1B[${e[0]}`;let t=e.slice(0,-1),n=e[e.length-1];return`\x1B[${t.join(";")}${n}`}i(X,"csi");function Ca(e=1){return e===0?"":X(e,"A")}i(Ca,"cursorUp");function cy(e=1){return e===0?"":X(e,"B")}i(cy,"cursorDown");function dy(e=1){return e===0?"":X(e,"C")}i(dy,"cursorForward");function ly(e=1){return e===0?"":X(e,"D")}i(ly,"cursorBack");function Ta(e){return X(e,"G")}i(Ta,"cursorTo");var uy=X("G"),Ra=X("H");function _a(e,t){let n="";return e<0?n+=ly(-e):e>0&&(n+=dy(e)),t<0?n+=Ca(-t):t>0&&(n+=cy(t)),n}i(_a,"cursorMove");var Dr=X(2,"K");function Aa(e){if(e<=0)return"";let t="";for(let n=0;n<e;n++)t+=Dr,n<e-1&&(t+=Ca(1));return t+=uy,t}i(Aa,"eraseLines");var Pa=X("r"),Ma="\x1B7",Oa="\x1B8";function Na(e,t){return X(e,t,"r")}i(Na,"setScrollRegion");function La(e=1){return X(e,"S")}i(La,"scrollUp");function Da(e=1){return X(e,"T")}i(Da,"scrollDown");var wt=X(0,"m");function $a(e){return`\x1B]${e.join(";")}\x07`}i($a,"osc");function fy(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return(t>>>0).toString(36)}i(fy,"osc8Id");function vt(e,t){if(!e)return He;let n={id:fy(e),...t??{}},r=Object.entries(n).map(([o,s])=>`${o}=${s}`).join(":");return $a(["8",r,e])}i(vt,"link");var He=$a(["8","",""]);function $r(e){let{screen:t}=e;if(t.width===0||t.height===0)return[];let n=[],r="",o;for(let s=0;s<t.height;s++){let a="";for(let c=0;c<t.width;c++){let d=Ce(t,c,s);!d||d.width===Z.SpacerTail||(d.hyperlink!==o&&(o!==void 0&&(a+=He),d.hyperlink!==void 0&&(a+=vt(d.hyperlink)),o=d.hyperlink),d.style!==r&&(r!==""&&(a+=wt),d.style!==""&&(a+=d.style),r=d.style),a+=d.char)}o!==void 0&&(a+=He,o=void 0),r!==""&&(a+=wt,r=""),n.push(a.trimEnd())}return[{type:"stdout",content:n.join(`
|
|
818
|
+
`)}]}i($r,"renderFullFrame");var py=Object.freeze([]),my=Object.freeze([]);function Te(e,t){if(e===t)return{patches:py,current:e};let n=[];return e!==""&&n.push({type:"stdout",content:wt}),t!==""&&n.push({type:"stdout",content:t}),{patches:n,current:t}}i(Te,"transitionStyle");function kt(e,t){let n=Te(e,t),r="";for(let o of n.patches)o.type==="stdout"&&(r+=o.content);return{str:r,current:n.current}}i(kt,"transitionStyleStr");function ae(e,t){if(e===t)return{patches:my,current:e};let n=[];return e!==void 0&&n.push({type:"stdout",content:He}),t!==void 0&&n.push({type:"stdout",content:vt(t)}),{patches:n,current:t}}i(ae,"transitionHyperlink");function Fa(e){let t=e.codePointAt(0);if(t===void 0)return!1;if(t>=129648&&t<=129791||t>=129792&&t<=130047)return!0;if(e.length>=2){for(let n=0;n<e.length;n++)if(e.charCodeAt(n)===65039)return!0}return!1}i(Fa,"needsWidthCompensation");var Re=class{static{i(this,"VirtualScreen")}viewportWidth;cursor;diff;_cursorMut;_diffMut=[];constructor(t,n){this.viewportWidth=n,this._cursorMut={x:t.x,y:t.y},this.cursor=this._cursorMut,this.diff=this._diffMut}txn(t){let[n,r]=t(this.cursor);for(let o of n)this._diffMut.push(o);this._cursorMut.x+=r.dx,this._cursorMut.y+=r.dy}},ce={type:"carriageReturn"},bt={type:"stdout",content:`
|
|
819
|
+
`};function xt(e,t,n){let r=t.width===Z.Wide?2:1,o=e.viewportWidth,s=!1;return e.txn(a=>{let c=a.x;if(r===2&&c<o){let u=t.char.length>2?o:o+1;if(c+2>=u)return[[],{dx:0,dy:0}]}let d=[];n.length>0&&d.push({type:"stdout",content:n});let l=r===2&&Fa(t.char);return l&&c+1<o&&(d.push({type:"cursorTo",col:c+2}),d.push({type:"stdout",content:" "}),d.push({type:"cursorTo",col:c+1})),d.push({type:"stdout",content:t.char}),l&&d.push({type:"cursorTo",col:c+r+1}),s=!0,c>=o?[d,{dx:r-c,dy:1}]:[d,{dx:r,dy:0}]}),s}i(xt,"writeCellWithStyleStr");function _e(e,t,n){e.txn(r=>{let o=t-r.x,s=n-r.y;return r.x>=e.viewportWidth?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:s!==0?[[ce,{type:"cursorMove",x:t,y:s}],{dx:o,dy:s}]:[[{type:"cursorMove",x:o,y:s}],{dx:o,dy:s}]})}i(_e,"moveCursorTo");function St(e,t,n,r,o=!1){let s="",a;for(let c=n;c<r;c++){if(e.cursor.y<c){let f=c-e.cursor.y;e.txn(p=>{let m=new Array(1+f);m[0]=ce;for(let g=0;g<f;g++)m[1+g]=bt;return[m,{dx:-p.x,dy:f}]})}for(let f=0;f<t.screen.width;f++){let p=Ce(t.screen,f,c);if(!p||p.width===Z.SpacerTail||p.char===" "&&p.style===""&&p.hyperlink===void 0)continue;_e(e,f,c);let m=ae(a,p.hyperlink);for(let v of m.patches)e.txn(()=>[[v],{dx:0,dy:0}]);a=m.current;let g=kt(s,p.style);xt(e,p,g.str)&&(s=g.current)}let d=Te(s,"");for(let f of d.patches)e.txn(()=>[[f],{dx:0,dy:0}]);s=d.current;let l=ae(a,void 0);for(let f of l.patches)e.txn(()=>[[f],{dx:0,dy:0}]);a=l.current;let u=c===r-1&&t.screen.height<=t.viewport.height&&(c+1>=t.viewport.height||o);e.txn(f=>u?[[ce],{dx:-f.x,dy:0}]:[[ce,bt],{dx:-f.x,dy:1}])}if(s!==""||a!==void 0){let c=Te(s,"");for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);let d=ae(a,void 0);for(let l of d.patches)e.txn(()=>[[l],{dx:0,dy:0}])}}i(St,"renderFrameSlice");function Fr(e,t,n,r){let o=Math.max(0,Math.floor(n)),s=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(r));for(let a=o;a<=s;a++)hy(e,t,a)}i(Fr,"repaintFrameRows");function hy(e,t,n){let r="",o;_e(e,0,n),e.txn(()=>[[{type:"stdout",content:He+wt},{type:"eraseLine"}],{dx:0,dy:0}]);for(let s=0;s<t.screen.width;s++){let a=Ce(t.screen,s,n);if(!a||a.width===Z.SpacerTail||a.char===" "&&a.style===""&&a.hyperlink===void 0)continue;_e(e,s,n);let c=ae(o,a.hyperlink);for(let l of c.patches)e.txn(()=>[[l],{dx:0,dy:0}]);o=c.current;let d=kt(r,a.style);xt(e,a,d.str)&&(r=d.current)}for(let s of Te(r,"").patches)e.txn(()=>[[s],{dx:0,dy:0}]);for(let s of ae(o,void 0).patches)e.txn(()=>[[s],{dx:0,dy:0}])}i(hy,"repaintFrameRow");function jr(e,t){let n="";for(let r=0;r<e.width;r++){let o=Ce(e,r,t);n+=o?.char??" "}return n.trimEnd()}i(jr,"readLine");function ze(e,t,n=!1){let r=new Re({x:0,y:0},e.viewport.width);St(r,e,0,e.screen.height,n);let o=[{type:"clearTerminal",reason:t}];for(let s of r.diff)o.push(s);return o}i(ze,"fullResetSequence_CAUSES_FLICKER");function hn(e,t){let n=e.cursor.y>=e.screen.height,r=t.screen.height>e.screen.height,o=t.screen.height<e.screen.height,s=n&&e.screen.height>=e.viewport.height,a=t.screen.height<=e.viewport.height,c=s?1:0;return{viewportY:r?Math.max(0,e.screen.height-e.viewport.height+c):Math.max(e.screen.height,t.screen.height)-t.viewport.height+c,cursorAtBottom:n,growing:r,shrinking:o,prevHadScrollback:s,nextFitsViewport:a}}i(hn,"computeViewportState");function ja(e,t,n){if(t.viewport.height<e.viewport.height||e.viewport.width!==0&&t.viewport.width!==e.viewport.width)return{reset:!0,reason:"resize"};let r=hn(e,t);if(r.prevHadScrollback&&r.nextFitsViewport&&r.shrinking)return{reset:!0,reason:"offscreen"};if(e.screen.height>=e.viewport.height&&e.screen.height>0&&r.cursorAtBottom&&!r.growing){let s=e.screen.height-e.viewport.height+1;for(let a of mn(e.screen,t.screen))if(a.y<s)return{reset:!0,reason:"offscreen",trigger:{y:a.y,prevLine:n(e.screen,a.y),nextLine:n(t.screen,a.y)}}}return r.shrinking&&e.screen.height-t.screen.height>e.viewport.height?{reset:!0,reason:"offscreen"}:{reset:!1}}i(ja,"shouldFullReset");function Ka(e,t,n){return!!(t&&t.width===2||e&&e.width===2&&!t||t&&n&&!e)}i(Ka,"shouldSkipDiff");var gn=class{static{i(this,"LogUpdate")}options;constructor(t){this.options=t}render(t,n,r={}){if(!this.options.isTTY)return $r(n);let o=r.inlineBottomAnchored??!1,s=Ba(t,o),a=Ba(n,o);if(r.altScreen===!0&&t.screen.height===0&&a.screen.height>0)return ze(a,"clear",o);let c=ja(s,a,jr);if(c.reset)return ze(a,c.reason,o);if(a.scrollRepaint&&r.altScreen===!0)return gy(s,a,a.scrollRepaint);let d=a.scrollHint;if(d&&r.altScreen&&r.decstbmSafe&&process.env.KODAX_SCROLL_DECSTBM==="1"&&d.delta!==0&&d.top>=0&&d.bottom<s.screen.height&&d.bottom<a.screen.height&&Math.abs(d.delta)<=d.bottom-d.top){let l={type:"scrollRegion",top:d.top,bottom:d.bottom,delta:d.delta},u={...s,screen:Ea(s.screen,d.top,d.bottom,d.delta)};return[l,...Ua(u,a,o)]}return Ua(s,a,o)}reset(){}};function Kr(e,t){for(let n of t)e.txn(()=>[[n],{dx:0,dy:0}])}i(Kr,"emitPatches");function Br(e,t,n){if(t!==""){let r=Te(t,"");Kr(e,r.patches)}if(n!==void 0){let r=ae(n,void 0);Kr(e,r.patches)}return{style:"",hyperlink:void 0}}i(Br,"resetStyleAndHyperlink");function gy(e,t,n){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,e,t);let s=Math.max(0,Math.floor(n.top)),a=Math.min(t.screen.height-1,t.viewport.height-1,Math.floor(n.bottom)),c=a>=s?{top:s,bottom:a}:void 0;c&&Fr(o,t,c.top,c.bottom);let d=Wa(o,e,t,{...r,skipRows:c});return d.needsFullReset?ze(t,"offscreen"):(Br(o,d.currentStyle,d.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height),Ha(o,t),o.diff)}i(gy,"renderScrollRepaint");function Xa(e,t,n){let r=t.screen.height-n.screen.height;e.txn(o=>[[{type:"clear",count:r},{type:"cursorMove",x:0,y:-1}],{dx:-o.x,dy:-r}])}i(Xa,"applyShrink");function Wa(e,t,n,r){let o="",s,a=!1;for(let c of mn(t.screen,n.screen)){let{x:d,y:l,prev:u,next:f}=c;if(r.growing&&l>=t.screen.height||r.skipRows&&l>=r.skipRows.top&&l<=r.skipRows.bottom)continue;let p=!!(f&&f.char===" "&&f.style===""&&f.hyperlink===void 0);if(!Ka(u,f,p)){if(l<r.viewportY){a=!0;break}if(_e(e,d,l),f){let m=ae(s,f.hyperlink);Kr(e,m.patches),s=m.current;let g=kt(o,f.style);xt(e,f,g.str)&&(o=g.current)}else if(u){let m=Br(e,o,s);o=m.style,s=m.hyperlink,e.txn(()=>[[{type:"stdout",content:" "}],{dx:1,dy:0}])}}}return{currentStyle:o,currentHyperlink:s,needsFullReset:a}}i(Wa,"diffPass");function Ba(e,t){let n=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return e.cursor.y<=n?e:{...e,cursor:{...e.cursor,y:n}}}i(Ba,"clampRestingCursor");function Ha(e,t){t.cursor.y>=t.screen.height?e.txn(n=>{let r=t.cursor.y-n.y;if(r>0){let s=new Array(1+r);s[0]=ce;for(let a=0;a<r;a++)s[1+a]=bt;return[s,{dx:-n.x,dy:r}]}let o=t.cursor.y-n.y;return o!==0||n.x!==t.cursor.x?[[ce,{type:"cursorMove",x:t.cursor.x,y:o}],{dx:t.cursor.x-n.x,dy:o}]:[[],{dx:0,dy:0}]}):_e(e,t.cursor.x,t.cursor.y)}i(Ha,"restoreCursor");function Ua(e,t,n=!1){let r=hn(e,t),o=new Re(e.cursor,t.viewport.width);r.shrinking&&Xa(o,e,t);let s=Wa(o,e,t,r);return s.needsFullReset?ze(t,"offscreen",n):(Br(o,s.currentStyle,s.currentHyperlink),r.growing&&St(o,t,e.screen.height,t.screen.height,n),Ha(o,t),o.diff)}i(Ua,"renderIncremental");var yy="\x1B[?25l",wy="\x1B[?25h",vy=`\x1B[2J${Ra}`,by="\x1B[?2026h",ky="\x1B[?2026l";function xy(e){switch(e.type){case"stdout":return e.content;case"carriageReturn":return"\r";case"cursorHide":return yy;case"cursorShow":return wy;case"cursorMove":return _a(e.x,e.y);case"cursorTo":return Ta(e.col);case"eraseLine":return Dr;case"clear":return Aa(e.count);case"clearTerminal":return vy;case"hyperlink":return vt(e.uri);case"scrollRegion":{let t=e.top+1,n=e.bottom+1,r=Math.abs(e.delta),o=e.delta>0?La(r):Da(r);return Ma+Na(t,n)+o+Pa+Oa}}}i(xy,"patchToBytes");function yn(e,t,n=!1){let r="",o=!1;for(let s of t)s.type==="clearTerminal"&&(o=!0),r+=xy(s);if(r.length!==0){if(n&&o){e.write(by+r+ky);return}e.write(r)}}i(yn,"applyDiff");function za(e,t,n={}){if(t===void 0)return!1;let r=e.cellLogUpdate.render(e.prevFrame,t,n);return yn(e.stdout,r,n.synchronized??!1),e.prevFrame=t,!0}i(za,"applyCellFrame");function Et(e,t){return{screen:xa(0,0),viewport:{width:t,height:e},cursor:{x:0,y:0,visible:!0}}}i(Et,"emptyFrame");import Sy from"is-in-ci";var de="\x1B[?2026h",ee="\x1B[?2026l";function le(e){return"isTTY"in e&&e.isTTY===!0&&!Sy}i(le,"shouldSynchronize");var Ey=new WeakMap,qa=Ey;import{EventEmitter as Wy}from"node:events";import Hy from"node:process";import Ae,{useState as Wr,useRef as qe,useCallback as M,useMemo as Ve,useEffect as uc}from"react";import zy from"cli-cursor";var Iy=i(e=>e>=48&&e<=63,"isCsiParameterByte"),Cy=i(e=>e>=32&&e<=47,"isCsiIntermediateByte"),Ga=i(e=>e>=64&&e<=126,"isCsiFinalByte");function Ty(e,t,n){let r=t+n+1,o=r;for(;o<e.length;o+=1){let s=e.codePointAt(o);if(s===void 0)return"pending";if(!(Iy(s)||Cy(s))&&!(s===91&&o===r))return Ga(s)?{sequence:e.slice(t,o+1),nextIndex:o+1}:void 0}return"pending"}i(Ty,"parseCsiSequence");function Ry(e,t,n){let r=t+n+2;if(r>e.length)return"pending";let o=e.codePointAt(r-1);if(!(o===void 0||!Ga(o)))return{sequence:e.slice(t,r),nextIndex:r}}i(Ry,"parseSs3Sequence");function Va(e,t,n){let r=e[t+n];if(r===void 0)return"pending";if(r==="[")return Ty(e,t,n);if(r==="O")return Ry(e,t,n)}i(Va,"parseControlSequence");function _y(e,t){let n=e.codePointAt(t+1),r=n!==void 0&&n>65535?2:1,o=t+1+r;return{sequence:e.slice(t,o),nextIndex:o}}i(_y,"parseEscapedCodePoint");function Ay(e){let t=[],n=0,r=i(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;n<e.length;){let o=e.indexOf("\x1B",n);if(o===-1)return t.push(e.slice(n)),{events:t,pending:""};if(o>n&&t.push(e.slice(n,o)),o===e.length-1)return r(o);let s=Va(e,o,1);if(s==="pending")return r(o);if(s){t.push(s.sequence),n=s.nextIndex;continue}if(e[o+1]==="\x1B"){if(o+2>=e.length)return r(o);let d=Va(e,o,2);if(d==="pending")return r(o);if(d){t.push(d.sequence),n=d.nextIndex;continue}t.push(e.slice(o,o+2)),n=o+2;continue}let c=_y(e,o);t.push(c.sequence),n=c.nextIndex}return{events:t,pending:""}}i(Ay,"parseKeypresses");function wn(){let e="";return{push(t){let n=Ay(e+t);return e=n.pending,n.events},hasPendingEscape(){return e.startsWith("\x1B")},flushPendingEscape(){if(!e.startsWith("\x1B"))return;let t=e;return e="",t},reset(){e=""}}}i(wn,"createInputParser");import{createContext as Py}from"react";var Ja=Py({exit(){}});Ja.displayName="InternalAppContext";var Ya=Ja;import{EventEmitter as My}from"node:events";import{createContext as Oy}from"react";var Ny={isTTY:!1,isRaw:!1,on(){},off(){},pause(){},resume(){},setRawMode(){}},Qa=Oy({stdin:Ny,internal_eventEmitter:new My,setRawMode(){},isRawModeSupported:!1,internal_exitOnCtrlC:!0});Qa.displayName="InternalStdinContext";var Za=Qa;import{createContext as Ly}from"react";var Dy={isTTY:!1,columns:80,rows:24,write(){return!0},on(){},off(){}},ec=Ly({stdout:Dy,write(){}});ec.displayName="InternalStdoutContext";var tc=ec;import{createContext as $y}from"react";var Fy={isTTY:!1,write(){return!0},on(){},off(){}},nc=$y({stderr:Fy,write(){}});nc.displayName="InternalStderrContext";var rc=nc;import{createContext as jy}from"react";var ic=jy({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});ic.displayName="InternalFocusContext";var oc=ic;import{createContext as Ky}from"react";var sc=Ky({setCursorPosition(){}});sc.displayName="InternalCursorContext";var ac=sc;import Uy,{PureComponent as Xy}from"react";import*as vn from"node:fs";import{cwd as lc}from"node:process";import N from"react";import cc from"stack-utils";import By from"code-excerpt";var Ur=i(e=>e?.replace(`file://${lc()}/`,""),"cleanupPath"),dc=new cc({cwd:lc(),internals:cc.nodeInternals()});function Xr({error:e}){let t=e.stack?e.stack.split(`
|
|
820
|
+
`).slice(1):void 0,n=t?dc.parseLine(t[0]):void 0,r=Ur(n?.file),o,s=0;if(r&&n?.line&&vn.existsSync(r)){let a=vn.readFileSync(r,"utf8");if(o=By(a,n.line),o)for(let{line:c}of o)s=Math.max(s,String(c).length)}return N.createElement(q,{flexDirection:"column",padding:1},N.createElement(q,null,N.createElement(K,{backgroundColor:"red",color:"white"}," ","ERROR"," "),N.createElement(K,null," ",e.message)),n&&r&&N.createElement(q,{marginTop:1},N.createElement(K,{dimColor:!0},r,":",n.line,":",n.column)),n&&o&&N.createElement(q,{marginTop:1,flexDirection:"column"},o.map(({line:a,value:c})=>N.createElement(q,{key:a},N.createElement(q,{width:s+1},N.createElement(K,{dimColor:a!==n.line,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0,"aria-label":a===n.line?`Line ${a}, error`:`Line ${a}`},String(a).padStart(s," "),":")),N.createElement(K,{key:a,backgroundColor:a===n.line?"red":void 0,color:a===n.line?"white":void 0}," "+c)))),e.stack&&N.createElement(q,{marginTop:1,flexDirection:"column"},e.stack.split(`
|
|
821
|
+
`).slice(1).map(a=>{let c=dc.parseLine(a);return c?N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},c.function),N.createElement(K,{dimColor:!0,color:"gray","aria-label":`at ${Ur(c.file)??""} line ${c.line} column ${c.column}`}," ","(",Ur(c.file)??"",":",c.line,":",c.column,")")):N.createElement(q,{key:a},N.createElement(K,{dimColor:!0},"- "),N.createElement(K,{dimColor:!0,bold:!0},a,"\\t"," "))})))}i(Xr,"ErrorOverview");var It=class extends Xy{static{i(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?Uy.createElement(Xr,{error:this.state.error}):this.props.children}};var qy=" ",Vy="\x1B[Z",Gy="\x1B";function fc({children:e,stdin:t,stdout:n,stderr:r,writeToStdout:o,writeToStderr:s,exitOnCtrlC:a,onExit:c,setCursorPosition:d}){let[l,u]=Wr(!0),[f,p]=Wr(void 0),[,m]=Wr([]),g=qe(0),v=qe(0),w=qe(new Wy);w.current.setMaxListeners(1/0);let y=qe(void 0),h=qe(wn()),b=qe(void 0),I=M(()=>{b.current&&(clearImmediate(b.current),b.current=void 0)},[]),_=t.isTTY,W=M(()=>{y.current&&(t.removeListener("readable",y.current),y.current=void 0)},[t]),H=M(()=>{t.setRawMode(!1),W(),t.unref(),v.current=0,h.current.reset(),I()},[t,W,I]),A=M(x=>{_&&v.current>0&&H(),c(x)},[_,H,c]),Me=M(x=>{if(x===""&&a){A();return}x===Gy&&p(S=>S&&void 0)},[a,A]),Rt=M(x=>{Me(x),w.current.emit("input",x)},[Me]),oi=M(()=>{I(),b.current=setImmediate(()=>{b.current=void 0;let x=h.current.flushPendingEscape();x&&Rt(x)})},[I,Rt]),Cn=M(()=>{I();let x;for(;(x=t.read())!==null;){let S=h.current.push(x);for(let E of S)Rt(E)}h.current.hasPendingEscape()&&oi()},[t,Rt,I,oi]),si=M(x=>{if(!_)throw t===Hy.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
|
|
641
822
|
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.
|
|
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=
|
|
823
|
+
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(t.setEncoding("utf8"),x){v.current===0&&(t.ref(),t.setRawMode(!0),y.current=Cn,t.addListener("readable",Cn)),v.current++;return}v.current!==0&&--v.current===0&&H()},[_,t,Cn,H]),ai=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E+1;L<x.length;L++){let te=x[L];if(te?.isActive)return te.id}},[]),ci=M((x,S)=>{let E=x.findIndex(L=>L.id===S);for(let L=E-1;L>=0;L--){let te=x[L];if(te?.isActive)return te.id}},[]),_t=M(()=>{m(x=>(p(S=>{let E=x.find(te=>te.isActive)?.id;return ai(x,S)??E}),x))},[ai]),At=M(()=>{m(x=>(p(S=>{let E=x.findLast(te=>te.isActive)?.id;return ci(x,S)??E}),x))},[ci]);uc(()=>{let x=i(E=>{!l||g.current===0||(E===qy&&_t(),E===Vy&&At())},"handleTabNavigation");w.current.on("input",x);let S=w.current;return()=>{S.off("input",x)}},[l,_t,At]);let di=M(()=>{u(!0)},[]),li=M(()=>{u(!1)},[]),ui=M(x=>{m(S=>(S.some(L=>L?.id===x)&&p(x),S))},[]),fi=M((x,{autoFocus:S})=>{m(E=>(g.current=E.length+1,[...E,{id:x,isActive:!0}])),S&&p(E=>E??x)},[]),pi=M(x=>{p(S=>S===x?void 0:S),m(S=>{let E=S.filter(L=>L.id!==x);return g.current=E.length,E})},[]),mi=M(x=>{m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!0}))},[]),hi=M(x=>{p(S=>S===x?void 0:S),m(S=>S.map(E=>E.id!==x?E:{id:x,isActive:!1}))},[]);uc(()=>()=>{zy.show(n),_&&v.current>0&&H()},[n,_,H]);let Xc=Ve(()=>({exit:A}),[A]),Wc=Ve(()=>({stdin:t,setRawMode:si,isRawModeSupported:_,internal_exitOnCtrlC:a,internal_eventEmitter:w.current}),[t,si,_,a]),Hc=Ve(()=>({stdout:n,write:o}),[n,o]),zc=Ve(()=>({stderr:r,write:s}),[r,s]),qc=Ve(()=>({setCursorPosition:d}),[d]),Vc=Ve(()=>({activeId:f,add:fi,remove:pi,activate:mi,deactivate:hi,enableFocus:di,disableFocus:li,focusNext:_t,focusPrevious:At,focus:ui}),[f,fi,pi,mi,hi,di,li,_t,At,ui]);return Ae.createElement(Ya.Provider,{value:Xc},Ae.createElement(Za.Provider,{value:Wc},Ae.createElement(tc.Provider,{value:Hc},Ae.createElement(rc.Provider,{value:zc},Ae.createElement(oc.Provider,{value:Vc},Ae.createElement(ac.Provider,{value:qc},Ae.createElement(It,{onError:A},e)))))))}i(fc,"App");fc.displayName="InternalApp";var pc=fc;var Jy={disambiguateEscapeCodes:1,reportEventTypes:2,reportAlternateKeys:4,reportAllKeysAsEscapeCodes:8,reportAssociatedText:16};function mc(e){let t=0;for(let n of e)t|=Jy[n];return t}i(mc,"resolveFlags");var ue={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};var Hr=i((e,t)=>(t<0?B.cursorUp(-t):t>0?B.cursorDown(t):"")+(e<0?B.cursorBackward(-e):e>0?B.cursorForward(e):""),"cursorMoveSeq"),zr=i((e,t=!1)=>{let n=Math.max(0,e.screen.height-e.viewport.height),r=t?Math.max(0,Math.min(e.viewport.height-1,e.screen.height-1)):Math.max(0,e.viewport.height-1);return o=>({x:o.x,y:Math.min(Math.max(o.y-n,0),r)})},"toVisibleCursor"),bn=i(()=>{},"noop"),sw=27,aw=91,cw=63,dw=117,lw=48,uw=57,fw=i(e=>e>=lw&&e<=uw,"isDigitByte"),gc=i((e,t)=>{if(e[t]!==sw||e[t+1]!==aw||e[t+2]!==cw)return;let n=t+3,r=n;for(;n<e.length&&fw(e[n]);)n++;if(n!==r){if(n===e.length)return{state:"partial"};if(e[n]===dw)return{state:"complete",endIndex:n}}},"matchKittyQueryResponse"),pw=i(e=>{for(let t=0;t<e.length;t++)if(gc(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),mw=i(e=>{let t=[],n=0;for(;n<e.length;){let r=gc(e,n);if(r?.state==="complete"){n=r.endIndex+1;continue}if(r?.state==="partial")break;t.push(e[n]),n++}return t},"stripKittyQueryResponsesAndTrailingPartial"),qr=i(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),hw=class{static{i(this,"Ink")}isConcurrent;options;cursorPosition;isScreenReaderEnabled;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;container;rootNode;fullStaticOutput;exitPromise;exitResult;beforeExitHandler;restoreConsole;restoreStreamWriteGuard;rawStdoutWrite;rawStderrWrite;internalStreamWriteDepth=0;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;altScreenActive=!1;shellMode;mouseTrackingActive=!1;shellTransitionPhase=void 0;cursorHidden=!1;constructor(t){Qy(this),this.options=t,this.rawStdoutWrite=t.stdout.write.bind(t.stdout),this.rawStderrWrite=t.stderr.write.bind(t.stderr),this.rootNode=sn("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??Pe.env.INK_SCREEN_READER==="true";let n=t.debug||this.isScreenReaderEnabled,r=t.maxFps??30,o=r>0?Math.max(1,Math.ceil(1e3/r)):0;if(n)this.rootNode.onRender=this.onRender,this.throttledOnRender=void 0;else{let a=Yy(this.onRender,o,{leading:!0,trailing:!0});this.rootNode.onRender=()=>{this.hasPendingThrottledRender=!0,a()},this.throttledOnRender=a}this.rootNode.onImmediateRender=this.onRender,this.cellLogUpdate=new gn({isTTY:!!t.stdout.isTTY}),this.prevFrame=Et(t.stdout.rows??24,t.stdout.columns??80),this.cursorPosition=void 0,this.isUnmounted=!1,this.isUnmounting=!1,this.installExternalStreamWriteGuard(),this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=this.getTerminalWidth(),this.fullStaticOutput="",this.shellMode=t.shellMode??"virtual";let s=t.concurrent?nw:tw;this.container=se.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Zy(this.unmount,{alwaysLast:!1}),rn()&&se.injectIntoDevTools(),t.patchConsole&&this.patchConsole(),fe||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initKittyKeyboard()}getTerminalWidth=i(()=>this.options.stdout.columns?this.options.stdout.columns:ow()?.columns??80,"getTerminalWidth");resized=i(()=>{let t=this.getTerminalWidth();if(t<this.lastTerminalWidth){this.returnCursorToRest();let n=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();n.length>0&&this.writeStdout(n),this.lastOutput="",this.lastOutputToRender="",this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,t)}this.calculateLayout(),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=i(()=>{},"resolveExitPromise");rejectExitPromise=i(()=>{},"rejectExitPromise");unsubscribeExit=i(()=>{},"unsubscribeExit");handleAppExit=i(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(qr(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");setCursorPosition=i(t=>{if(t===void 0){this.cursorPosition=void 0;return}let n=this.getTerminalWidth(),r=this.options.stdout.rows??24;if(n<=0||r<=0){this.cursorPosition=void 0;return}let o=Math.max(0,Math.min(t.x|0,n-1)),s=Math.max(0,Math.min(t.y|0,r-1));this.cursorPosition={x:o,y:s}},"setCursorPosition");resetOutputTracking=i(()=>{this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.cursorPosition=void 0,this.invalidateCellFrame()},"resetOutputTracking");usesVirtualShellOwnership=i((t={})=>t.altScreenActive??this.altScreenActive,"usesVirtualShellOwnership");beginShellTransition(t){this.shellTransitionPhase=t}setShellMode(t,n){let r=this.shellMode,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.shellMode=t,this.mouseTrackingActive=a;let c=this.usesVirtualShellOwnership();(r!==t&&(s||c)||o!==a&&c)&&this.resetOutputTracking()}setAltScreenActive(t,n){let r=this.altScreenActive,o=this.mouseTrackingActive,s=this.usesVirtualShellOwnership(),a=n??!1;this.altScreenActive=t,this.mouseTrackingActive=a,this.shellTransitionPhase=void 0;let c=this.usesVirtualShellOwnership();(r!==t||o!==a&&(s||c))&&this.resetOutputTracking()}clearTextSelection(){}installExternalStreamWriteGuard(){if(this.options.debug||fe)return;let t=this.options.stdout,n=this.options.stderr,r=t.write,o=n.write,s=i((...c)=>{let d=this.rawStdoutWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStdoutWrite"),a=i((...c)=>{let d=this.rawStderrWrite(...c);return this.internalStreamWriteDepth===0&&this.handleExternalStreamWrite(),d},"guardedStderrWrite");t.write=s,n.write=a,this.restoreStreamWriteGuard=()=>{t.write===s&&(t.write=r),n.write===a&&(n.write=o)}}handleExternalStreamWrite(){this.isUnmounted||this.invalidateCellFrame()}withInternalStreamWrite(t){this.internalStreamWriteDepth+=1;try{return t()}finally{this.internalStreamWriteDepth-=1}}writeStdout(t,...n){return this.withInternalStreamWrite(()=>this.rawStdoutWrite(t,...n))}writeStderr(t,...n){return this.withInternalStreamWrite(()=>this.rawStderrWrite(t,...n))}restoreLastOutput=i(()=>{if(this.prevFrame.screen.height===0)return;let t=Et(this.options.stdout.rows??24,this.getTerminalWidth()),n=this.cellLogUpdate.render(t,this.prevFrame);this.withInternalStreamWrite(()=>yn(this.options.stdout,n))},"restoreLastOutput");shouldRestoreManagedShellAfterExternalWrite=i(()=>this.altScreenActive,"shouldRestoreManagedShellAfterExternalWrite");calculateLayout=i(()=>{let t=this.getTerminalWidth();this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,rw.DIRECTION_LTR)},"calculateLayout");onRender=i(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;let t=performance.now(),n={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:r,outputHeight:o,staticOutput:s,frame:a}=Lr(this.rootNode,this.isScreenReaderEnabled,n);this.options.onRender?.({renderTime:performance.now()-t}),!fe&&!this.options.debug&&!this.isScreenReaderEnabled&&!this.cursorHidden&&(this.writeStdout(B.cursorHide),this.cursorHidden=!0);let c=s&&s!==`
|
|
643
824
|
`;if(this.options.debug){c&&(this.fullStaticOutput+=s),this.writeStdout(this.fullStaticOutput+r);return}if(fe){c&&this.writeStdout(s),this.lastOutput=r,this.lastOutputToRender=r+`
|
|
644
|
-
`,this.lastOutputHeight=
|
|
645
|
-
`).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let
|
|
646
|
-
`;if(this.lastOutputHeight>=this.options.stdout.rows&&
|
|
647
|
-
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,
|
|
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)}
|
|
825
|
+
`,this.lastOutputHeight=o;return}if(this.isScreenReaderEnabled){let w=le(this.options.stdout);if(w&&this.writeStdout(de),c){let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+s),this.lastOutputHeight=0}if(r===this.lastOutput&&!c){w&&this.writeStdout(ee);return}let y=this.getTerminalWidth(),h=iw(r,y,{trim:!1,hard:!0});if(c)this.writeStdout(h);else{let b=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(b+h)}this.lastOutput=r,this.lastOutputToRender=h,this.lastOutputHeight=h===""?0:h.split(`
|
|
826
|
+
`).length,w&&this.writeStdout(ee);return}c&&(this.fullStaticOutput+=s);let l=!this.altScreenActive&&!!(a&&a.inputCursor)?[]:null,u=i(w=>{w&&(l?l.push(w):this.writeStdout(w))},"emit"),f=l?{write:u}:null;u(this.computeReturnToRestSeq());let p=this.altScreenActive,g=this.options.stdout.isTTY&&o>=this.options.stdout.rows&&p?r:r+`
|
|
827
|
+
`;if(this.lastOutputHeight>=this.options.stdout.rows&&p){if(Pe.env.KODAX_FULLSCREEN_CELLDIFF!=="0"&&this.altScreenActive&&this.fullStaticOutput===""){let h=le(this.options.stdout);h&&this.writeStdout(de),this.applyCellFrame(a),h&&this.writeStdout(ee),this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o;return}let w=le(this.options.stdout);w&&this.writeStdout(de);let y=this.fullStaticOutput+g;if(this.altScreenActive){let h=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(h+y)}else this.writeStdout(B.clearTerminal+this.fullStaticOutput+r);this.lastOutput=r,this.lastOutputToRender=this.altScreenActive?y:g,this.lastOutputHeight=o,this.invalidateCellFrame(),w&&this.writeStdout(ee);return}let v=!l&&le(this.options.stdout);try{if(c?(v&&u(de),u(this.eraseInlineLiveBlock()+s),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):!this.altScreenActive&&this.prevFrame&&this.prevFrame.screen.height!==a.screen.height&&this.lastOutputHeight>0&&o<=this.options.stdout.rows&&this.lastOutputHeight<this.options.stdout.rows?(v&&u(de),u(this.eraseInlineLiveBlock()),this.invalidateCellFrame(),this.applyCellFrame(a,f),v&&u(ee)):this.applyCellFrame(a,f),a?.inputCursor){let w=zr(a,!this.altScreenActive),y=w(a.cursor),h=w(a.inputCursor),b=Hr(h.x-y.x,h.y-y.y);u(b),this.displayCursor=h}}finally{l&&this.flushCursorTxn(l)}this.lastOutput=r,this.lastOutputToRender=g,this.lastOutputHeight=o},"onRender");applyCellFrame=i((t,n=null)=>{let r={cellLogUpdate:this.cellLogUpdate,prevFrame:this.prevFrame,stdout:n??this.options.stdout},o=le(this.options.stdout),s={altScreen:this.altScreenActive,decstbmSafe:o,synchronized:n?!1:o,inlineBottomAnchored:!this.altScreenActive},a=this.withInternalStreamWrite(()=>za(r,t,s));return this.prevFrame=r.prevFrame,a},"applyCellFrame");invalidateCellFrame=i(()=>{this.cellLogUpdate.reset(),this.prevFrame=Et(this.options.stdout.rows??24,this.getTerminalWidth())},"invalidateCellFrame");eraseInlineLiveBlock=i(()=>this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"","eraseInlineLiveBlock");commitInlineScrollback=i(({mode:t,text:n})=>{if(this.altScreenActive||this.isUnmounted)return;let r=[],o=i(c=>{c&&r.push(c)},"emit"),s={write:o};o(this.computeReturnToRestSeq());let a=t==="rebuild"?"\x1B[2J\x1B[3J\x1B[H":this.eraseInlineLiveBlock();o(a+(n??"")),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.invalidateCellFrame();try{this.calculateLayout();let c={rows:this.options.stdout.rows??24,columns:this.getTerminalWidth()},{output:d,outputHeight:l,frame:u}=Lr(this.rootNode,this.isScreenReaderEnabled,c);if(this.applyCellFrame(u,s),u?.inputCursor){let f=zr(u,!this.altScreenActive),p=f(u.cursor),m=f(u.inputCursor),g=Hr(m.x-p.x,m.y-p.y);o(g),this.displayCursor=m}this.lastOutput=d,this.lastOutputToRender=d,this.lastOutputHeight=l}finally{this.flushCursorTxn(r)}},"commitInlineScrollback");flushCursorTxn(t){let n=t.join("");if(!n)return;let r=le(this.options.stdout);this.writeStdout(r?de+n+ee:n)}render(t){let n=hc.createElement(Be.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},hc.createElement(pc,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,exitOnCtrlC:this.options.exitOnCtrlC,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,setCursorPosition:this.setCursorPosition,onExit:this.handleAppExit},t));this.options.concurrent?se.updateContainer(n,this.container,null,bn):(se.updateContainerSync(n,this.container,null,bn),se.flushSyncWork())}computeReturnToRestSeq(){if(this.displayCursor&&this.prevFrame){let t=zr(this.prevFrame,!this.altScreenActive)(this.prevFrame.cursor),n=Hr(t.x-this.displayCursor.x,t.y-this.displayCursor.y);return this.displayCursor=null,n}return""}returnCursorToRest(){let t=this.computeReturnToRestSeq();t&&this.writeStdout(t)}writeToStdout(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStdout(t+this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStdout(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStdout(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";this.writeStdout(r+t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}writeToStderr(t){if(this.isUnmounted)return;if(this.options.debug){this.writeStderr(t),this.writeStdout(this.fullStaticOutput+this.lastOutput);return}if(fe){this.writeStderr(t);return}if(!this.shouldRestoreManagedShellAfterExternalWrite()){this.returnCursorToRest(),this.writeStderr(t),this.invalidateCellFrame();return}let n=le(this.options.stdout);n&&this.writeStdout(de),this.returnCursorToRest();let r=this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"";r.length>0&&this.writeStdout(r),this.writeStderr(t),this.restoreLastOutput(),this.invalidateCellFrame(),n&&this.writeStdout(ee)}unmount(t){if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(Pe.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);let n=this.options.stdout,r=!n.destroyed&&!n.writableEnded&&(n.writable??!0);if(i(l=>{typeof l.flush=="function"&&(r?l.flush():typeof l.cancel=="function"&&l.cancel())},"settleThrottle")(this.throttledOnRender??{}),r&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.restoreStreamWriteGuard=="function"&&(this.restoreStreamWriteGuard(),this.restoreStreamWriteGuard=void 0),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),r){if(this.kittyProtocolEnabled)try{this.writeStdout("\x1B[<u")}catch{}fe&&this.writeStdout(this.lastOutput+`
|
|
828
|
+
`)}this.kittyProtocolEnabled=!1,this.shellTransitionPhase=void 0,this.options.concurrent?se.updateContainer(null,this.container,null,bn):(se.updateContainerSync(null,this.container,null,bn),se.flushSyncWork()),qa.delete(this.options.stdout);let{exitResult:s}=this,a=i(()=>{qr(t)?this.rejectExitPromise(t):this.resolveExitPromise(s)},"resolveOrReject"),c=t!==void 0&&!qr(t),d=n._writableState!==void 0||n.writableLength!==void 0;c?a():r&&d?this.writeStdout("",a):setImmediate(a)}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},Pe.once("beforeExit",this.beforeExitHandler)),this.exitPromise}clear(){if(!fe&&!this.options.debug){this.returnCursorToRest();let t=this.altScreenActive?this.lastOutputHeight>0?B.eraseLines(this.lastOutputHeight):"":this.eraseInlineLiveBlock();t.length>0&&this.writeStdout(t),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.invalidateCellFrame()}}patchConsole(){this.options.debug||(this.restoreConsole=ew((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}initKittyKeyboard(){if(!this.options.kittyKeyboard)return;let t=this.options.kittyKeyboard,n=t.mode??"auto";if(n==="disabled"||!this.options.stdin.isTTY||!this.options.stdout.isTTY)return;let r=t.flags??["disambiguateEscapeCodes"];if(n==="enabled"){this.enableKittyProtocol(r);return}let o=Pe.env.TERM??"",s=Pe.env.TERM_PROGRAM??"",a="KITTY_WINDOW_ID"in Pe.env||o==="xterm-kitty"||s==="WezTerm"||s==="ghostty";!fe&&a&&this.confirmKittySupport(r)}confirmKittySupport(t){let{stdin:n}=this.options,r=[],o=i(()=>{this.cancelKittyDetection=void 0,clearTimeout(a),n.removeListener("data",s);let c=mw(r);r=[],c.length>0&&n.unshift(Buffer.from(c))},"cleanup"),s=i(c=>{let d=typeof c=="string"?Buffer.from(c):c;for(let l of d)r.push(l);pw(r)&&(o(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");n.on("data",s);let a=setTimeout(o,200);this.cancelKittyDetection=o,this.writeStdout("\x1B[?u")}enableKittyProtocol(t){this.writeStdout(`\x1B[>${mc(t)}u`),this.kittyProtocolEnabled=!0}},yc=hw;var Ct=class{static{i(this,"KodaXRenderer")}engineInstance;isConcurrent;constructor(t){this.engineInstance=new yc(t),this.isConcurrent=this.engineInstance.isConcurrent}render=i(t=>{this.engineInstance.render(t)},"render");unmount=i(t=>{this.engineInstance.unmount(t)},"unmount");waitUntilExit=i(()=>this.engineInstance.waitUntilExit(),"waitUntilExit");clear=i(()=>{this.engineInstance.clear()},"clear");setAltScreenActive=i((t,n)=>{this.engineInstance.setAltScreenActive?.(t,n)},"setAltScreenActive");setShellMode=i((t,n)=>{this.engineInstance.setShellMode?.(t,n)},"setShellMode");beginShellTransition=i(t=>{this.engineInstance.beginShellTransition?.(t)},"beginShellTransition");clearTextSelection=i(()=>{this.engineInstance.clearTextSelection?.()},"clearTextSelection");commitInlineScrollback=i(t=>{this.engineInstance.commitInlineScrollback?.(t)},"commitInlineScrollback")};var ve=null;function vc(){if(ve===-1)return null;if(ve!==null)return ve;let e=process.env.KODAX_RENDER_TRACE;if(!e||e==="0"||e==="false")return ve=-1,null;let t=e==="1"||e==="true"?bw(vw(),`kodax-render-trace-${process.pid}.log`):e;try{return ve=yw(t,"a"),wc(ve,`=== KODAX render trace pid=${process.pid} ${new Date().toISOString()} platform=${process.platform} node=${process.version} ===
|
|
829
|
+
`),ve}catch{return ve=-1,null}}i(vc,"resolveTraceFd");function kw(e){let t=vc();if(t!==null)try{wc(t,e)}catch{}}i(kw,"traceLine");var Vr=new WeakMap,xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Sw={isTTY:!1,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")},Ew={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Iw(e={}){return e instanceof gw?{stdout:e}:e}i(Iw,"getOptions");function Cw(e,t,n){let r=Vr.get(e);return r?r.isConcurrent!==n&&console.warn(`Warning: render() was called with concurrent: ${n}, but the existing renderer for this stdout uses concurrent: ${r.isConcurrent}. The concurrent option only takes effect on the first render. Call unmount() first if you need to change the rendering mode.`):(r=t(),Vr.set(e,r)),r}i(Cw,"getInstance");function Gr(e,t){let n={stdout:xw,stdin:Ew,stderr:Sw,debug:!1,exitOnCtrlC:!0,patchConsole:!1,maxFps:30,concurrent:!1,...Iw(t)};if(vc()!==null){let s=n.stdout,a=s.write.bind(s),c=0,d=0;s.write=((p,...m)=>(c+=1,d+=typeof p=="string"?Buffer.byteLength(p,"utf8"):p?.length??0,a(p,...m)));let l=0,u=0,f=n.onRender;n.onRender=p=>{let m=ww.now(),g=l===0?0:m-l,v=s,w=v.columns??0,y=v.rows??0;return kw(`frame=${u} renderTime=${p.renderTime.toFixed(2)}ms interval=${g.toFixed(2)}ms writes=${c} bytes=${d} viewport=${w}x${y}
|
|
830
|
+
`),c=0,d=0,l=m,u+=1,f?.(p)}}let o=Cw(n.stdout,()=>new Ct(n),n.concurrent??!1);return o.render(e),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:i(()=>{Vr.delete(n.stdout)},"cleanup"),clear:o.clear}}i(Gr,"render");var bc=q,kc=K;import{Buffer as Rw}from"node:buffer";var _w=/^(?:\x1b)([a-zA-Z0-9])$/,Aw=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Sc={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},Ec=[...Object.values(Sc),"backspace"],Pw=i(e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),"isShiftKey"),Mw=i(e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),"isCtrlKey"),Ic=/^\x1b\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,Ow=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,Nw={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},Lw={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"},xc={27:"escape",9:"tab",127:"delete",8:"backspace",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24"},Cc=i(e=>e>=0&&e<=1114111&&!(e>=55296&&e<=57343),"isValidCodepoint"),Jr=i(e=>Cc(e)?String.fromCodePoint(e):"?","safeFromCodePoint");function Tc(e){return e===3?"release":e===2?"repeat":"press"}i(Tc,"resolveEventType");function Rc(e){return{ctrl:!!(e&ue.ctrl),shift:!!(e&ue.shift),meta:!!(e&ue.meta),option:!!(e&ue.alt),super:!!(e&ue.super),hyper:!!(e&ue.hyper),capsLock:!!(e&ue.capsLock),numLock:!!(e&ue.numLock)}}i(Rc,"parseKittyModifiers");function Dw(e){let t=Ic.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=t[2]?Math.max(0,Number.parseInt(t[2],10)-1):0,o=t[3]?Number.parseInt(t[3],10):1,s=t[4];if(!Cc(n))return null;let a;s&&(a=s.split(":").map(l=>Jr(Number.parseInt(l,10))).join(""));let c,d;return n===32?(c="space",d=!0):n===13?(c="return",d=!0):xc[n]?(c=xc[n],d=!1):n>=1&&n<=26?(c=String.fromCodePoint(n+96),d=!1):(c=Jr(n).toLowerCase(),d=!0),d&&!a&&(a=Jr(n)),{name:c,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:d,text:a}}i(Dw,"parseKittyKeypress");function $w(e){let t=Ow.exec(e);if(!t)return null;let n=Number.parseInt(t[1],10),r=Math.max(0,Number.parseInt(t[2],10)-1),o=Number.parseInt(t[3],10),s=t[4],a=s==="~"?Lw[n]:Nw[s];return a?{name:a,...Rc(r),eventType:Tc(o),sequence:e,raw:e,isKittyProtocol:!0,isPrintable:!1}:null}i($w,"parseKittySpecialKey");var Yr="\x1B[200~",Fw="\x1B[201~";function jw(e){if(!e.startsWith(Yr))return null;let t=e.indexOf(Fw,Yr.length);return t===-1?null:e.slice(Yr.length,t)}i(jw,"extractBracketedPaste");function Qr(e=""){let t=e,n;if(Rw.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=""),typeof t=="string"){let a=jw(t);if(a!==null)return{name:"paste",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isPaste:!0,isPrintable:!1,text:a}}let r=Dw(t);if(r)return r;let o=$w(t);if(o)return o;if(Ic.test(t))return{name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,isKittyProtocol:!0,isPrintable:!1};let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(s.sequence=s.sequence||t||s.name,t==="\r"||t==="\x1B\r")s.raw=void 0,s.name="return",s.option=t.length===2;else if(t===`
|
|
831
|
+
`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")s.name="delete",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t.length===1&&t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(n=_w.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]??"");else if(n=Aw.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let c=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),d=Number(n[3]||n[5]||1)-1;s.ctrl=!!(d&4),s.meta=!!(d&10),s.shift=!!(d&1),s.code=c,s.name=Sc[c]??"",s.shift=Pw(c)||s.shift,s.ctrl=Mw(c)||s.ctrl}return s}i(Qr,"parseKeypress");var Uw=50;function Zr(e){return{columns:e?.columns??80,rows:e?.rows??24}}i(Zr,"resolveTerminalSize");var xn=Kw(null),Xw={isTTY:!1,columns:80,rows:24,write:i(()=>!0,"write"),on:i(()=>{},"on"),off:i(()=>{},"off")};var Mc={isTTY:!1,isRaw:!1,on:i(()=>{},"on"),off:i(()=>{},"off"),pause:i(()=>{},"pause"),resume:i(()=>{},"resume"),setRawMode:i(()=>{},"setRawMode")};function Ww(e){for(let t of e)if(t.rawMode)return!0;return!1}i(Ww,"hasRawModeSubscribers");function Hw({stdin:e,setRawMode:t,isRawModeSupported:n}){let r=new Set,o,s=!1,a=!1,c=i(f=>{for(let p of r)p.listener(f)},"handleData"),d=i(()=>{if(a){try{t(!1)}catch{}a=!1}},"disableRawModeIfOwned"),l=i(()=>{let f=o;f?.off?.("data",c),d(),s&&(f?.unref?.(),s=!1),o=void 0},"detachInput"),u=i(()=>{if(o&&o!==e&&l(),!e||r.size===0){l();return}if(o!==e&&(e.hasRef?.()!==!0&&typeof e.ref=="function"&&(e.ref(),s=!0),e.on?.("data",c),e.resume?.(),o=e),!(n&&Ww(r))){d();return}if(e.isRaw===!1&&!a)try{t(!0),a=!0}catch{a=!1}},"syncInputOwnership");return{subscribe(f,p={}){let m={listener:f,rawMode:p.rawMode!==!1};return r.add(m),u(),()=>{r.delete(m),u()}},dispose(){r.clear(),l()}}}i(Hw,"createTerminalInputController");var zw=i(({children:e,runtime:t})=>{let[n,r]=Bw(()=>t.terminalSize);Ge(()=>{if(r(Zr(t.stdout)),typeof t.stdout?.on!="function"||typeof t.stdout?.off!="function")return;let c=i(()=>{r(Zr(t.stdout))},"handleResize");return t.stdout.on("resize",c),()=>{t.stdout.off?.("resize",c)}},[t.stdout]);let o=Pc(c=>typeof t.stdout?.write!="function"?!1:(t.stdout.write(c),!0),[t.stdout]),s=_c(()=>Hw({stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported}),[t.stdin,t.isRawModeSupported,t.setRawMode]);Ge(()=>()=>{s.dispose()},[s]);let a=_c(()=>({stdout:t.stdout,stdin:t.stdin,setRawMode:t.setRawMode,isRawModeSupported:t.isRawModeSupported,exit:t.exit,terminalSize:n,isTTY:t.stdout?.isTTY===!0,writeRaw:o,subscribeInput:s.subscribe}),[s.subscribe,t.exit,t.isRawModeSupported,t.setRawMode,t.stdin,t.stdout,s.subscribe,n,o]);return Ac(xn.Provider,{value:a,children:e})},"TuiRuntimeProvider");function qw(e){let t=e?.stdout??Xw,n=e?.stdin??Mc,r=i(s=>{typeof n?.setRawMode=="function"&&n.setRawMode(s)},"setRawMode"),o;return{stdout:t,stdin:n,setRawMode:r,isRawModeSupported:typeof n?.setRawMode=="function",exit:i(()=>{o?.()},"exit"),terminalSize:Zr(t),isTTY:t?.isTTY===!0,writeRaw:i(s=>typeof t?.write!="function"?!1:(t.write(s),!0),"writeRaw"),subscribeInput:i(()=>()=>{},"subscribeInput"),attachExit(s){o=s}}}i(qw,"createRuntimeValue");function Sn(e,t){let n=qw(t),r=Gr(Ac(zw,{runtime:n,children:e}),t);return n.attachExit(r.unmount),r}i(Sn,"render");var be=bc,V=kc;function Vw(e){let t={upArrow:e.name==="up",downArrow:e.name==="down",leftArrow:e.name==="left",rightArrow:e.name==="right",pageDown:e.name==="pagedown",pageUp:e.name==="pageup",home:e.name==="home",end:e.name==="end",return:e.name==="return",escape:e.name==="escape",ctrl:e.ctrl,shift:e.shift,tab:e.name==="tab",backspace:e.name==="backspace",delete:e.name==="delete",meta:e.meta||e.name==="escape"||e.option===!0,super:e.super??!1,hyper:e.hyper??!1,capsLock:e.capsLock??!1,numLock:e.numLock??!1,eventType:e.eventType},n="";return e.isKittyProtocol?e.isPrintable?n=e.text??e.name:e.ctrl&&e.name.length===1&&(n=e.name):e.ctrl?n=e.name:n=e.sequence,!e.isKittyProtocol&&Ec.includes(e.name)&&(n=""),n.startsWith("\x1B")&&(n=n.slice(1)),n.length===1&&typeof n[0]=="string"&&/[A-Z]/.test(n[0])&&(t.shift=!0),{input:n,key:t}}i(Vw,"createCompatKeypress");function En(e,t={}){let{isActive:n=!0}=t,r=kn(e),o=kn(null),s=kn(null);Ge(()=>{r.current=e},[e]),Ge(()=>{if(!n){o.current=null,s.current&&(clearTimeout(s.current),s.current=null);return}return o.current=wn(),()=>{o.current?.reset(),o.current=null,s.current&&(clearTimeout(s.current),s.current=null)}},[n]);let a=Pc(c=>{let{input:d,key:l}=Vw(Qr(c));r.current(d,l)},[]);ni(c=>{if(!n)return;s.current&&(clearTimeout(s.current),s.current=null);let d=o.current,l=typeof c=="string"?c:c.toString("utf8"),u=d?.push(l)??[l];for(let f of u)a(f);l.length>0&&(s.current=setTimeout(()=>{let f=o.current?.flushPendingEscape();f&&a(f)},Uw))},{isActive:n,rawMode:!0})}i(En,"useInput");function ti(){let e=ei(xn),t=e?.stdin??Mc,n=e?.setRawMode??(r=>{typeof t?.setRawMode=="function"&&t.setRawMode(r)});return{stdin:t,setRawMode:n,isRawModeSupported:e?.isRawModeSupported??typeof t?.setRawMode=="function"}}i(ti,"useStdin");function In(){return{exit:ei(xn)?.exit??(()=>{})}}i(In,"useApp");function ni(e,t={}){let{isActive:n=!0,rawMode:r=!0}=t,o=ei(xn),{stdin:s,setRawMode:a,isRawModeSupported:c}=ti(),d=kn(e);Ge(()=>{d.current=e},[e]),Ge(()=>{if(!n||!s)return;if(o)return o.subscribeInput(p=>{d.current(p)},{rawMode:r});let l=s,u=l.isRaw;r&&c&&u===!1&&a(!0);let f=i(p=>{d.current(p)},"handleData");return l.on?.("data",f),()=>{if(l.off?.("data",f),r&&c&&u===!1)try{a(!1)}catch{}}},[o,s,n,r,c,a])}i(ni,"useTerminalInput");import{jsx as eH}from"react/jsx-runtime";import{useInsertionEffect as nH,useMemo as rH}from"react";import{jsx as BH,jsxs as UH}from"react/jsx-runtime";import{jsx as yH}from"react/jsx-runtime";import vH,{useEffect as bH,useImperativeHandle as kH,useMemo as xH,useRef as SH,useCallback as EH,useState as IH}from"react";var ri=class{static{i(this,"LRUCache")}capacity;cache;constructor(t){this.capacity=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.capacity){let r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}this.cache.set(t,n)}has(t){return this.cache.has(t)}delete(t){return this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};var Gw=1e3;var PH=new ri(Gw);var tv=40;function nv(e,t){let n=t.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(r=>{let o=[r.title,r.id,r.surface??"",r.createdAt??"",String(r.msgCount)].join(" ").toLocaleLowerCase();return n.every(s=>o.includes(s))})}i(nv,"filterSessionPickerItems");function rv(e,t,n){let r=Math.max(1,n),o=e.length===0?0:Math.max(0,Math.min(t,e.length-1)),s=Math.floor(o/r)*r;return{items:e.slice(s,s+r),selectedIndex:o,pageStart:s,pageIndex:Math.floor(s/r),pageCount:Math.max(1,Math.ceil(e.length/r))}}i(rv,"buildSessionPickerPage");function iv(e){if(!e)return"unknown time";let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${o} ${s}:${a}`}i(iv,"formatTimestamp");function ov({sessions:e,onSelect:t,onSelectionError:n,onCancel:r,pageSize:o=8}){let{exit:s}=In(),[a,c]=ii(""),[d,l]=ii(0),[u,f]=ii(!1),p=ev(!1),m=Zw(()=>nv(e,a),[e,a]),g=rv(m,d,o),v=m[g.selectedIndex];return En((w,y)=>{if(!p.current){if(y.escape||y.ctrl&&w==="c"){r(),s();return}if(y.return){let h=m[g.selectedIndex];h&&(p.current=!0,f(!0),(async()=>{await new Promise(b=>setTimeout(b,tv));try{await t(h)}catch(b){n(b)}finally{s()}})());return}if(y.upArrow)l(h=>Math.max(0,h-1));else if(y.downArrow)l(h=>Math.min(Math.max(0,m.length-1),h+1));else if(y.pageUp)l(h=>Math.max(0,h-o));else if(y.pageDown)l(h=>Math.min(Math.max(0,m.length-1),h+o));else if(y.home)l(0);else if(y.end)l(Math.max(0,m.length-1));else if(y.tab){let h=m[g.selectedIndex];h&&(c(h.title),l(0))}else y.backspace||y.delete?(c(h=>h.slice(0,-1)),l(0)):w&&!y.ctrl&&!y.meta&&!y.super&&(c(h=>h+w),l(0))}}),Je(be,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[Tt(V,{bold:!0,color:"cyan",children:"Resume a session"}),Je(V,{children:["Search: ",Tt(V,{color:"yellow",children:a||"type to filter"})]}),Tt(V,{dimColor:!0,children:u?"Loading selected session...":"\u2191/\u2193 select \xB7 PgUp/PgDn page \xB7 Tab complete \xB7 Enter resume \xB7 Esc cancel"}),Je(be,{flexDirection:"column",marginTop:1,children:[g.items.length===0?Tt(V,{color:"yellow",children:"No matching sessions."}):null,g.items.map((w,y)=>{let b=g.pageStart+y===g.selectedIndex,I=w.title.trim()||"Untitled session",_=w.surface?` \xB7 ${w.surface}`:"";return Je(V,{color:b?"cyan":void 0,bold:b,children:[b?"\u276F":" "," ",I," \xB7 ",w.msgCount," msgs",_," \xB7 ",iv(w.createdAt)," \xB7 ",w.id.slice(0,8)]},w.id)})]}),Je(V,{dimColor:!0,children:[m.length," matches \xB7 Page ",g.pageIndex+1,"/",g.pageCount]}),Je(V,{dimColor:!0,children:["Selected ID: ",v?.id??"none"]})]})}i(ov,"SessionPicker");async function Dc(e,t={}){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw new Error("Searchable session resume requires an interactive terminal. Pass an exact session ID or title to -r/--resume instead.");let n,r=!1,o=!1,s,a=Math.max(4,Math.min(12,(process.stdout.rows??24)-8)),c=Sn(Tt(ov,{sessions:e,pageSize:a,onSelect:i(async d=>{n=d,await t.prepareSelection?.(d)},"onSelect"),onSelectionError:i(d=>{o=!0,s=d},"onSelectionError"),onCancel:i(()=>{r=!0},"onCancel")}),{stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1,patchConsole:!1});try{await c.waitUntilExit()}finally{c.unmount(),c.cleanup()}if(o)throw s;if(!n&&!r)throw new Error("Session picker exited unexpectedly before selection or cancellation.");return n}i(Dc,"runSessionPicker");var $c=65536,Fc=48;function av(){let e=process.env.KODAX_HOME,t=e&&e.length>0?e:Qe.join(sv.homedir(),".kodax");return Qe.join(t,"sessions")}i(av,"defaultSessionsDir");function jc(e){return e.endsWith(".jsonl")&&!e.endsWith(".archive.jsonl")&&!e.endsWith(".islands.jsonl")&&!e.startsWith(".")}i(jc,"isSessionFile");async function cv(e){let t=[],n;try{n=await Ye.readdir(e,{withFileTypes:!0})}catch{return t}for(let r of n){let o=Qe.join(e,r.name);if(r.isFile()&&jc(r.name)&&!r.name.startsWith("archived-")){t.push(o);continue}if(!(!r.isDirectory()||r.name.startsWith(".")||r.name==="archived"))try{for(let s of await Ye.readdir(o,{withFileTypes:!0}))s.isFile()&&jc(s.name)&&!s.name.startsWith("archived-")&&t.push(Qe.join(o,s.name))}catch{}}return t}i(cv,"collectActiveSessionFiles");function Kc(e){if(!e?.trim())return;let t=Qe.resolve(e).replace(/\\/g,"/");return process.platform==="win32"||process.platform==="darwin"?t.toLowerCase():t}i(Kc,"normalizeComparableRoot");function dv(e,t){let n=Kc(t);if(!n)return!0;let r=e.runtimeInfo!==null&&typeof e.runtimeInfo=="object"?e.runtimeInfo:void 0;return[typeof r?.canonicalRepoRoot=="string"?r.canonicalRepoRoot:void 0,typeof r?.workspaceRoot=="string"?r.workspaceRoot:void 0,typeof e.gitRoot=="string"?e.gitRoot:void 0].some(s=>Kc(s)===n)}i(dv,"matchesProjectRoot");async function lv(e){let t;try{t=await Ye.open(e,"r");let n=Buffer.allocUnsafe($c),{bytesRead:r}=await t.read(n,0,$c,0);if(r===0)return;let o=n.toString("utf8",0,r),s=o.indexOf(`
|
|
832
|
+
`);if(s>=0)return o.slice(0,s).trim();let a=await Ye.readFile(e,"utf8"),c=a.indexOf(`
|
|
833
|
+
`);return(c>=0?a.slice(0,c):a).trim()}catch{return}finally{await t?.close()}}i(lv,"readFirstLine");async function uv(e,t){if(typeof t.activeMessageCount=="number"&&t.activeMessageCount>=0)return t.activeMessageCount;let n=(await Ye.readFile(e,"utf8")).trim();if(!n)return 0;let r=typeof t.extensionRecordCount=="number"&&t.extensionRecordCount>0?t.extensionRecordCount:0;return Math.max(0,n.split(`
|
|
834
|
+
`).length-1-r)}i(uv,"readMessageCount");function fv(e){if(e.runtimeInfo===null||typeof e.runtimeInfo!="object")return;let t=e.runtimeInfo;return{...typeof t.canonicalRepoRoot=="string"?{canonicalRepoRoot:t.canonicalRepoRoot}:{},...typeof t.workspaceRoot=="string"?{workspaceRoot:t.workspaceRoot}:{},...typeof t.surface=="string"?{surface:t.surface}:{}}}i(fv,"runtimeSummary");async function pv(e,t){try{let n=await lv(e);if(!n)return;let r=JSON.parse(n);if(r===null||typeof r!="object")return;let o=r;if(o._type!=="meta"||o.scope==="managed-task-worker"||!dv(o,t))return;let s=await uv(e,o);if(s<=0)return;let a=typeof o.createdAt=="string"?o.createdAt:void 0,c=fv(o);return{id:Qe.basename(e,".jsonl"),title:typeof o.title=="string"?o.title:"",msgCount:s,...a!==void 0?{createdAt:a}:{},...c?.surface!==void 0?{surface:c.surface}:{},...a!==void 0?{createdAtMs:Date.parse(a)}:{}}}catch{return}}i(pv,"readResumeCandidate");async function Bc(e){try{let t=e.sessionsDir??av();await Xs(t),await Ye.mkdir(t,{recursive:!0});let n=await cv(t),r=[],o=new Set;for(let s=0;s<n.length;s+=Fc){let a=await Promise.all(n.slice(s,s+Fc).map(c=>pv(c,e.projectRoot)));for(let c of a)c&&!o.has(c.id)&&(o.add(c.id),r.push(c))}return r.sort((s,a)=>Number.isFinite(s.createdAtMs)&&Number.isFinite(a.createdAtMs)&&s.createdAtMs!==a.createdAtMs?a.createdAtMs-s.createdAtMs:Number.isFinite(a.createdAtMs)&&!Number.isFinite(s.createdAtMs)?1:Number.isFinite(s.createdAtMs)&&!Number.isFinite(a.createdAtMs)?-1:a.id.localeCompare(s.id)),r.slice(0,e.limit??1e3).map(({createdAtMs:s,...a})=>a)}catch{return[]}}i(Bc,"listCliResumeSessions");async function Uc(e,t={}){return Dc(e,t)}i(Uc,"runCliResumePicker");async function mv(e){let{default:t}=await import("chalk");if(e==="empty"){process.stdout.write(`${t.yellow("No resumable sessions found. Starting a new session...")}
|
|
654
835
|
`);return}process.stdout.write(`${t.dim("Session resume cancelled.")}
|
|
655
|
-
`)}
|
|
836
|
+
`)}i(mv,"printResumeNotice");async function Oz(e={}){let t=e.listSessions??Bc,n=e.pickSession??Uc,r=e.notify??mv,o=await t({projectRoot:e.cwd??process.cwd(),limit:1e3});if(o.length===0)return await r("empty"),{kind:"continue",argv:[]};let s=await n(o,{prepareSelection:e.beforeSelect});return s?{kind:"continue",argv:["-r",s.id]}:(await r("cancelled"),{kind:"exit"})}i(Oz,"resolveBareResume");export{Oz as resolveBareResume};
|