@kodax-ai/kodax 0.7.53 → 0.7.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +1870 -1838
  2. package/dist/builtin/skill-creator/scripts/utils.js +5 -2
  3. package/dist/chunks/{agent-DZ37KWZI.js → agent-PYSVWY7M.js} +1 -1
  4. package/dist/chunks/argument-completer-CTDNNWV3.js +2 -0
  5. package/dist/chunks/{chunk-LE6STNVN.js → chunk-7C2QUBLE.js} +1 -1
  6. package/dist/chunks/{chunk-D4MGMUDL.js → chunk-FRI7UQSB.js} +1 -1
  7. package/dist/chunks/chunk-HQCLPWRI.js +551 -0
  8. package/dist/chunks/chunk-JCDO2FR4.js +584 -0
  9. package/dist/chunks/{chunk-CLIRXPAJ.js → chunk-MX4G42EV.js} +121 -121
  10. package/dist/chunks/chunk-RGPPZOD5.js +314 -0
  11. package/dist/chunks/{chunk-OQL4ISVD.js → chunk-THAKTCPE.js} +206 -202
  12. package/dist/chunks/{chunk-5YQDGVDB.js → chunk-ZBK3DZ3S.js} +1 -1
  13. package/dist/chunks/{compaction-config-OF2T45MC.js → compaction-config-NAJEEPG5.js} +1 -1
  14. package/dist/chunks/{construction-bootstrap-JIE7LYNN.js → construction-bootstrap-4CIVZMQ5.js} +1 -1
  15. package/dist/chunks/dist-7KTO2PUU.js +2 -0
  16. package/dist/chunks/{dist-Z6U7TWKJ.js → dist-BNKIZRCP.js} +1 -1
  17. package/dist/chunks/{utils-AB4DNRZC.js → utils-2QXBKYPJ.js} +1 -1
  18. package/dist/index.d.ts +7 -4
  19. package/dist/index.js +6 -6
  20. package/dist/kodax_cli.js +1102 -1024
  21. package/dist/provider-capabilities.json +3 -3
  22. package/dist/sdk-agent.d.ts +395 -3
  23. package/dist/sdk-agent.js +1 -1
  24. package/dist/sdk-coding.d.ts +2995 -2974
  25. package/dist/sdk-coding.js +1 -1
  26. package/dist/sdk-llm.js +1 -1
  27. package/dist/sdk-mcp.js +1 -1
  28. package/dist/sdk-repl.d.ts +6 -6
  29. package/dist/sdk-repl.js +1 -1
  30. package/dist/sdk-session.d.ts +3 -3
  31. package/dist/sdk-session.js +1 -1
  32. package/dist/sdk-skills.d.ts +1 -1
  33. package/dist/sdk-skills.js +1 -1
  34. package/dist/types-chunks/{bash-prefix-extractor.d-BpNoRkSD.d.ts → bash-prefix-extractor.d-LUGkQHcd.d.ts} +45 -14
  35. package/dist/types-chunks/{sdk-session-BkaGuIC6.d.ts → sdk-session-SjrnWb4-.d.ts} +2 -2
  36. package/dist/types-chunks/{storage.d-BUIiD4gq.d.ts → storage.d-BAuJ0Ks7.d.ts} +1 -1
  37. package/dist/types-chunks/{utils.d-B3fwJEMd.d.ts → utils.d-C9MUY8n3.d.ts} +4 -2
  38. package/package.json +1 -1
  39. package/dist/chunks/argument-completer-OFPM36IZ.js +0 -2
  40. package/dist/chunks/chunk-67HVIUEO.js +0 -307
  41. package/dist/chunks/chunk-RFE5EC7W.js +0 -492
  42. package/dist/chunks/chunk-XFCAXDSD.js +0 -574
  43. package/dist/chunks/dist-BOHLKKR5.js +0 -2
@@ -48,9 +48,12 @@ export async function loadKodaXSDK() {
48
48
  }
49
49
  errors.push(`relative SDK path not found: ${relSdkPath}`);
50
50
 
51
- // Strategy 2: bare-name canonical (dev monorepo / rare edge-case fallback)
51
+ // Strategy 2: bare-name canonical (dev monorepo / rare edge-case fallback).
52
+ // Keep the specifier computed so Vite does not resolve the root package
53
+ // during test collection before the root dist entry exists.
52
54
  try {
53
- _cachedSdk = await import('@kodax-ai/kodax');
55
+ const packageName = ['@kodax-ai', 'kodax'].join('/');
56
+ _cachedSdk = await import(packageName);
54
57
  return _cachedSdk;
55
58
  } catch (err) {
56
59
  errors.push(`bare-name @kodax-ai/kodax failed: ${err?.code ?? err?.message}`);
@@ -1,2 +1,2 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{Ob as c,Pb as d,Qb as e,Rb as f,dd as i,ic as g,id as j,jc as h}from"./chunk-OQL4ISVD.js";import"./chunk-LE6STNVN.js";import{jb as a,kb as b}from"./chunk-XFCAXDSD.js";import"./chunk-V4WSBIXB.js";export{d as bucketProviderPayloadSize,g as buildAutoRepoIntelligenceContext,e as checkPromiseSignal,b as cleanupIncompleteToolCalls,h as describeTransientProviderRetry,f as emitResilienceDebug,c as estimateProviderPayloadBytes,j as runKodaX,i as saveSessionSnapshot,a as validateAndFixToolHistory};
2
+ import{Pb as c,Qb as d,Rb as e,Sb as f,kc as g,lc as h,pd as i,ud as j}from"./chunk-THAKTCPE.js";import"./chunk-7C2QUBLE.js";import{jb as a,kb as b}from"./chunk-JCDO2FR4.js";import"./chunk-V4WSBIXB.js";export{d as bucketProviderPayloadSize,g as buildAutoRepoIntelligenceContext,e as checkPromiseSignal,b as cleanupIncompleteToolCalls,h as describeTransientProviderRetry,f as emitResilienceDebug,c as estimateProviderPayloadBytes,j as runKodaX,i as saveSessionSnapshot,a as validateAndFixToolHistory};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{wa as a,xa as b}from"./chunk-HQCLPWRI.js";import"./chunk-FRI7UQSB.js";import"./chunk-ZBK3DZ3S.js";import"./chunk-MX4G42EV.js";import"./chunk-THAKTCPE.js";import"./chunk-7C2QUBLE.js";import"./chunk-JCDO2FR4.js";import"./chunk-V4WSBIXB.js";export{a as ArgumentCompleter,b as createArgumentCompleter};
@@ -27,5 +27,5 @@ ${d.join(`
27
27
  [Fatal Error: ${m}]
28
28
  `}}}}),{stopReason:"end_turn"})}},"executePrompt"),b=r(p=>{switch(p.type){case"message":if(p.role==="assistant"&&p.content)return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:p.content}};break;case"tool_use":return{sessionUpdate:"tool_call",title:p.toolName,arguments:p.parameters,status:"running",toolCallId:p.toolId||Dt()};case"tool_result":return{sessionUpdate:"tool_call_update",toolCallId:p.toolId,status:p.status};case"error":return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
29
29
  [Error: ${p.message}]
30
- `}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:n.readable,outputStream:e.writable,abort:r(()=>{l.abort(),e.readable.cancel().catch(()=>{}),n.writable.abort().catch(()=>{})},"abort"),executor:t}}r(Ve,"createPseudoAcpServer");import Sn from"node:fs";import Rn from"node:os";import An from"node:path";var qo="gpt-5.4",Qo="auto-gemini-3",Zo=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],ei=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function On(t){let e=new Set,n=[];for(let o of t){let i=o.trim();if(!i)continue;let s=i.toLowerCase();e.has(s)||(e.add(s),n.push(i))}return n}r(On,"dedupePreserveOrder");function ti(){let t=An.join(Rn.homedir(),".codex","config.toml");try{return Sn.readFileSync(t,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}r(ti,"readCodexConfiguredModel");function ni(){let t=An.join(Rn.homedir(),".gemini","settings.json");try{let e=JSON.parse(Sn.readFileSync(t,"utf8")),n=typeof e.model=="string"?e.model.trim():"";return n||(typeof e.general?.model=="string"?e.general.model.trim():"")||null}catch{return null}}r(ni,"readGeminiConfiguredModel");function pe(){return ti()||qo}r(pe,"getCodexCliDefaultModel");function fe(){return ni()||Qo}r(fe,"getGeminiCliDefaultModel");function Te(){return On([pe(),...Zo])}r(Te,"getCodexCliKnownModels");function Ee(){return On([fe(),...ei])}r(Ee,"getGeminiCliKnownModels");var It=fe(),oi=Ee(),ii={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},Ge=class extends ue{static{r(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:It,models:oi.filter(e=>e!==It).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let e=new ze({model:It});this.acpClientOptions=Ve(e)}getCapabilityProfile(){return X(ii)}serializeImageBlockToPromptToken(e){return/\s/.test(e.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(e.path)}`),null):`@${e.path}`}};var He=class extends de{static{r(this,"CodexCLIExecutor")}model;constructor(e){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...e}),this.model=e?.model??"gpt-5.4"}async checkInstalled(){return Xe("codex")}buildArgs(e){this.model=e.model??this.model;let n=e.model?["-m",e.model]:[];return e.sessionId?["exec","resume",e.sessionId,...n,e.prompt,...this.config.baseArgs.filter(o=>o!=="exec")]:[...this.config.baseArgs,...n,e.prompt]}parseLine(e){if(!e.startsWith("{"))return null;try{let n=JSON.parse(e);return this.convertEvent(n)}catch{return null}}convertEvent(e){let n=Date.now();switch(e.type){case"thread.started":return{type:"session_start",timestamp:n,sessionId:e.thread_id??"",model:this.model,raw:e};case"item.completed":return e.item?.type==="agent_message"?{type:"message",timestamp:n,role:"assistant",content:e.item.text??"",raw:e}:e.item?.type==="command_execution"?{type:"tool_use",timestamp:n,toolId:e.item.id,toolName:"Bash",parameters:{command:e.item.command},raw:e}:null;case"turn.completed":return{type:"complete",timestamp:n,status:"success",usage:e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens}:void 0,raw:e};case"error":case"turn.failed":return{type:"error",timestamp:n,errorType:e.type,message:e.message??"Unknown error",raw:e};default:return null}}};var Nt=pe(),ri=Te(),Je=class extends ue{static{r(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:Nt,models:ri.filter(e=>e!==Nt).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let e=new He({model:Nt});this.acpClientOptions=Ve(e)}};import{existsSync as di,readFileSync as pi}from"node:fs";import me from"node:path";import{fileURLToPath as fi}from"node:url";var Dn=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],In=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Nn=["count-tokens","models-list","minimal-message","unsupported"];function we(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}r(we,"isPlainObject");function qe(t,e){if(typeof t!="string"||t.length===0)throw new Error(`provider-capabilities.json: ${e} must be a non-empty string`);return t}r(qe,"requireString");function Ln(t,e){if(t!==void 0)return qe(t,e)}r(Ln,"optionalString");function ne(t,e){if(t!==void 0){if(typeof t!="number"||!Number.isFinite(t)||t<0)throw new Error(`provider-capabilities.json: ${e} must be a non-negative finite number`);return t}}r(ne,"optionalNumber");function Ye(t,e){if(t!==void 0){if(typeof t!="boolean")throw new Error(`provider-capabilities.json: ${e} must be a boolean`);return t}}r(Ye,"optionalBoolean");function Lt(t,e){if(typeof t!="string"||!Dn.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Dn.join(", ")}, got ${JSON.stringify(t)}`);return t}r(Lt,"requireReasoningCapability");function si(t,e){if(typeof t!="string"||!In.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${In.join(", ")}, got ${JSON.stringify(t)}`);return t}r(si,"requireProfileName");function ai(t,e){if(typeof t!="string"||!Nn.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Nn.join(", ")}, got ${JSON.stringify(t)}`);return t}r(ai,"requireVerifyStrategy");function ci(t,e){if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let n=qe(t.id,`${e}.id`),o=Ln(t.displayName,`${e}.displayName`),i=ne(t.contextWindow,`${e}.contextWindow`),s=ne(t.maxOutputTokens,`${e}.maxOutputTokens`),a=ne(t.thinkingBudgetCap,`${e}.thinkingBudgetCap`),c=Ye(t.replayReasoningContent,`${e}.replayReasoningContent`),d=Ye(t.strictThinkingSignature,`${e}.strictThinkingSignature`),l=ne(t.streamMaxDurationMs,`${e}.streamMaxDurationMs`),u=t.reasoningCapability===void 0?void 0:Lt(t.reasoningCapability,`${e}.reasoningCapability`),f={id:n};return o!==void 0&&(f.displayName=o),i!==void 0&&(f.contextWindow=i),s!==void 0&&(f.maxOutputTokens=s),a!==void 0&&(f.thinkingBudgetCap=a),u!==void 0&&(f.reasoningCapability=u),c!==void 0&&(f.replayReasoningContent=c),d!==void 0&&(f.strictThinkingSignature=d),l!==void 0&&(f.streamMaxDurationMs=l),f}r(ci,"validateModelDescriptor");function li(t,e){if(t===void 0)return;if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let n={};for(let[o,i]of Object.entries(t))n[o]=Lt(i,`${e}.${o}`);return n}r(li,"validateModelReasoningCapabilities");function ui(t,e){if(!we(t))throw new Error(`provider-capabilities.json: providers.${e} must be an object`);let n=Ye(t.cliBridge,`providers.${e}.cliBridge`),o=qe(t.apiKeyEnv,`providers.${e}.apiKeyEnv`),i=Lt(t.reasoningCapability,`providers.${e}.reasoningCapability`),s=si(t.capabilityProfile,`providers.${e}.capabilityProfile`),a=ai(t.verifyStrategy,`providers.${e}.verifyStrategy`);if(n&&a!=="unsupported")throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but verifyStrategy="${a}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let c=ne(t.contextWindow,`providers.${e}.contextWindow`),d=ne(t.maxOutputTokens,`providers.${e}.maxOutputTokens`),l=ne(t.thinkingBudgetCap,`providers.${e}.thinkingBudgetCap`),u=Ye(t.supportsThinking,`providers.${e}.supportsThinking`),f=li(t.modelReasoningCapabilities,`providers.${e}.modelReasoningCapabilities`),y=Ln(t.model,`providers.${e}.model`);if(n&&(y!==void 0||t.models!==void 0))throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&y===void 0)throw new Error(`provider-capabilities.json: providers.${e}.model is required (only cliBridge entries may omit)`);let g;if(t.models!==void 0){if(!Array.isArray(t.models))throw new Error(`provider-capabilities.json: providers.${e}.models must be an array`);g=t.models.map((p,v)=>ci(p,`providers.${e}.models[${v}]`))}let b={apiKeyEnv:o,reasoningCapability:i,capabilityProfile:s,verifyStrategy:a};return y!==void 0&&(b.model=y),g!==void 0&&(b.models=g),c!==void 0&&(b.contextWindow=c),d!==void 0&&(b.maxOutputTokens=d),l!==void 0&&(b.thinkingBudgetCap=l),u!==void 0&&(b.supportsThinking=u),f!==void 0&&(b.modelReasoningCapabilities=f),n&&(b.cliBridge=!0),b}r(ui,"validateProviderEntry");function Bn(t){if(!we(t))throw new Error("provider-capabilities.json: root must be an object");if(t.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(t.version)}`);let e=qe(t.updatedAt,"updatedAt");if(!we(t.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[o,i]of Object.entries(t.providers))n[o]=ui(i,o);return{version:1,updatedAt:e,providers:n}}r(Bn,"validateProviderCapabilitiesJson");var mi=Object.freeze({native:te,"image-input-native":gn,"cli-bridge":be,"image-input-cli-bridge":hn}),Qe=null;function gi(){if(process.env.KODAX_BUNDLED==="true")return me.join(me.dirname(process.execPath),"provider-capabilities.json");let t=me.dirname(fi(import.meta.url)),e=[me.join(t,"provider-capabilities.json"),me.join(me.dirname(t),"provider-capabilities.json")];for(let n of e)if(di(n))return n;return e[0]}r(gi,"resolveJsonPath");function hi(t){if(t.models){for(let e of t.models)Object.freeze(e);Object.freeze(t.models)}return t.modelReasoningCapabilities&&Object.freeze(t.modelReasoningCapabilities),Object.freeze(t)}r(hi,"deepFreezeSnapshot");function yi(t){if(t==="gemini-cli"){let e=fe();return{model:e,models:Ee().filter(n=>n!==e).map(n=>({id:n}))}}if(t==="codex-cli"){let e=pe();return{model:e,models:Te().filter(n=>n!==e).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${t}'`)}r(yi,"resolveCliBridgeModels");function vi(t,e){let n=mi[e.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${e.capabilityProfile}' for provider '${t}'`);if(e.cliBridge){let i=yi(t),s={model:i.model,models:i.models,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:n,verifyStrategy:e.verifyStrategy};return e.supportsThinking!==void 0&&(s.supportsThinking=e.supportsThinking),s}let o={model:e.model,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:n,verifyStrategy:e.verifyStrategy};return e.models!==void 0&&(o.models=e.models),e.modelReasoningCapabilities!==void 0&&(o.modelReasoningCapabilities=e.modelReasoningCapabilities),e.contextWindow!==void 0&&(o.contextWindow=e.contextWindow),e.maxOutputTokens!==void 0&&(o.maxOutputTokens=e.maxOutputTokens),e.thinkingBudgetCap!==void 0&&(o.thinkingBudgetCap=e.thinkingBudgetCap),e.supportsThinking!==void 0&&(o.supportsThinking=e.supportsThinking),o}r(vi,"buildSnapshot");function Fn(){if(Qe)return Qe;let t=gi(),e;try{let i=pi(t,"utf8");e=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${t}: ${s}`)}let n=Bn(e),o={};for(let[i,s]of Object.entries(n.providers))o[i]=hi(vi(i,s));return Qe=Object.freeze(o),Qe}r(Fn,"getProviderSnapshots");import ki from"@anthropic-ai/sdk";var A=Fn();function U(t,e={}){let n=A[t];return{apiKeyEnv:n.apiKeyEnv,model:n.model,reasoningCapability:n.reasoningCapability,models:n.models,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap,supportsThinking:n.supportsThinking??!1,verifyStrategy:n.verifyStrategy,...e}}r(U,"buildProviderConfig");var Bt=class extends I{static{r(this,"AnthropicProvider")}name="anthropic";config=U("anthropic",{strictThinkingSignature:!0});buildClient(){return new ki({apiKey:this.getApiKey()})}},Ft=class extends I{static{r(this,"ZhipuCodingProvider")}name="zhipu-coding";config=U("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},Kt=class extends I{static{r(this,"KimiCodeProvider")}name="kimi-code";config=U("kimi-code",{baseUrl:"https://api.kimi.com/coding/"})},$t=class extends I{static{r(this,"MiniMaxCodingProvider")}name="minimax-coding";config=U("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},Ut=class extends I{static{r(this,"MimoCodingProvider")}name="mimo-coding";config=U("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},jt=class extends I{static{r(this,"MimoProvider")}name="mimo";config=U("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},Wt=class extends I{static{r(this,"ArkCodingProvider")}name="ark-coding";config=U("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},Xt=class extends K{static{r(this,"OpenAIProvider")}name="openai";config=U("openai")},zt=class extends K{static{r(this,"DeepSeekProvider")}name="deepseek";config=U("deepseek",{baseUrl:"https://api.deepseek.com",replayReasoningContent:!0})},Vt=class extends K{static{r(this,"KimiProvider")}name="kimi";config=U("kimi",{baseUrl:"https://api.moonshot.cn/v1",replayReasoningContent:!0})},Gt=class extends K{static{r(this,"QwenProvider")}name="qwen";config=U("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},Ht=class extends K{static{r(this,"ZhipuProvider")}name="zhipu";config=U("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},$={anthropic:r(()=>new Bt,"anthropic"),openai:r(()=>new Xt,"openai"),deepseek:r(()=>new zt,"deepseek"),kimi:r(()=>new Vt,"kimi"),"kimi-code":r(()=>new Kt,"kimi-code"),qwen:r(()=>new Gt,"qwen"),zhipu:r(()=>new Ht,"zhipu"),"zhipu-coding":r(()=>new Ft,"zhipu-coding"),"minimax-coding":r(()=>new $t,"minimax-coding"),"mimo-coding":r(()=>new Ut,"mimo-coding"),mimo:r(()=>new jt,"mimo"),"ark-coding":r(()=>new Wt,"ark-coding"),"gemini-cli":r(()=>new Ge,"gemini-cli"),"codex-cli":r(()=>new Je,"codex-cli")},Jt=process.env.KODAX_PROVIDER??"zhipu-coding",Kn=new Map;function bi(t){if(O(t))return A[t].apiKeyEnv}r(bi,"resolveApiKeyEnvForProvider");function $n(t){let e=t??Jt,n=$[e];if(!n)throw new R(`Unknown provider: ${e}. Available: ${Object.keys($).join(", ")}`,e);let o=bi(e),i=o?process.env[o]:void 0,s=Kn.get(e);if(s&&s.apiKey===i)return s.instance;let a=n();return Kn.set(e,{apiKey:i,instance:a}),a}r($n,"getProvider");function Un(t){return O(t)?!!process.env[A[t].apiKeyEnv]:!1}r(Un,"isProviderConfigured");function jn(t){return O(t)?A[t].model:null}r(jn,"getProviderModel");function Wn(t,e){if(!O(t))return"unknown";let n=A[t],o=e??n.model;return n.modelReasoningCapabilities?.[o]??n.reasoningCapability}r(Wn,"getProviderConfiguredReasoningCapability");function Xn(t){return O(t)?X(A[t].capabilityProfile):null}r(Xn,"getProviderConfiguredCapabilityProfile");function zn(){let t=[];for(let e of Object.keys($)){let n=A[e];t.push({name:e,model:n.model,models:n.models?[n.model,...n.models.map(o=>o.id)]:[n.model],configured:!!process.env[n.apiKeyEnv],reasoningCapability:n.reasoningCapability,capabilityProfile:X(n.capabilityProfile)})}return t}r(zn,"getProviderList");function Vn(t){let e=A[t];return e?e.models?[e.model,...e.models.map(n=>n.id)]:[e.model]:[]}r(Vn,"getProviderModels");function O(t){return t in $}r(O,"isProviderName");function Yt(t){return{id:t.model}}r(Yt,"makeDefaultDescriptor");function Ze(t,e,n){let o=n.id===e.model;return{provider:t,model:n.id,displayName:n.displayName??n.id,supportsThinking:e.supportsThinking??!1,reasoningCapability:n.reasoningCapability??e.reasoningCapability,contextWindow:n.contextWindow??e.contextWindow,maxOutputTokens:n.maxOutputTokens??e.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap??e.thinkingBudgetCap,isDefault:o}}r(Ze,"effectiveCapabilities");function et(t){let e=A[t];return e?[Yt(e),...e.models??[]]:[]}r(et,"getProviderModelDescriptors");function tt(t,e){let n=A[t];if(!n)return;if(e===n.model)return Ze(t,n,Yt(n));let o=n.models?.find(i=>i.id===e);if(o)return Ze(t,n,o)}r(tt,"getModelCapabilities");function nt(){let t=[];for(let e of Object.keys($)){let n=A[e];t.push(Ze(e,n,Yt(n)));for(let o of n.models??[])t.push(Ze(e,n,o))}return t}r(nt,"listBuiltinModelCapabilities");var _i=new Set(["compat","sdk"]),Ci=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function xi(t){return t==="anthropic"?"count-tokens":"models-list"}r(xi,"defaultVerifyStrategyForProtocol");function Me(t){if(!t.name||!t.baseUrl||!t.apiKeyEnv||!t.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:t.name,baseUrl:t.baseUrl,apiKeyEnv:t.apiKeyEnv,model:t.model})}`);if(t.protocol!=="anthropic"&&t.protocol!=="openai")throw new Error(`Unknown protocol "${t.protocol}" for custom provider "${t.name}". Must be "anthropic" or "openai".`);if(t.userAgentMode!==void 0&&!_i.has(t.userAgentMode))throw new Error(`Unknown userAgentMode "${t.userAgentMode}" for custom provider "${t.name}". Must be "compat" or "sdk".`);if(t.verifyStrategy!==void 0){if(!Ci.has(t.verifyStrategy))throw new Error(`Unknown verifyStrategy "${t.verifyStrategy}" for custom provider "${t.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(t.protocol==="openai"&&t.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${t.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}r(Me,"validateCustomProviderConfig");function Ti(t){let e=t.models?.length?t.models.map(n=>typeof n=="string"?{id:n}:n):void 0;return{apiKeyEnv:t.apiKeyEnv,model:t.model,baseUrl:t.baseUrl,models:e,userAgentMode:t.userAgentMode,supportsThinking:t.supportsThinking??!1,reasoningCapability:t.reasoningCapability??"none",capabilityProfile:t.capabilityProfile,contextWindow:t.contextWindow,maxOutputTokens:t.maxOutputTokens,thinkingBudgetCap:t.thinkingBudgetCap,replayReasoningContent:t.replayReasoningContent??!1,strictThinkingSignature:t.strictThinkingSignature??!1,streamMaxDurationMs:t.streamMaxDurationMs,verifyStrategy:t.verifyStrategy??xi(t.protocol)}}r(Ti,"buildProviderConfig");function ot(t){Me(t);let e=Ti(t);return t.protocol==="anthropic"?new qt(t.name,e):new Qt(t.name,e)}r(ot,"createCustomProvider");var qt=class extends I{static{r(this,"DynamicAnthropicProvider")}name;config;constructor(e,n){super(),this.name=e,this.config=n}},Qt=class extends K{static{r(this,"DynamicOpenAIProvider")}name;config;constructor(e,n){super(),this.name=e,this.config=n}};var J=new Map,Zt=new Map;function Gn(t){let e=new Set,n=new Map,o=new Map;for(let i of t){if(Me(i),e.has(i.name))throw new Error(`Duplicate custom provider name: "${i.name}". Each custom provider must have a unique name.`);i.name in $&&console.warn(`[kodax] Custom provider "${i.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),e.add(i.name),n.set(i.name,i),o.set(i.name,()=>ot(i))}J.clear(),Zt.clear();for(let[i,s]of n)J.set(i,s);for(let[i,s]of o)Zt.set(i,s)}r(Gn,"registerCustomProviders");function it(t){let e=Zt.get(t);return e?e():void 0}r(it,"getCustomProvider");function he(t){return J.has(t)}r(he,"isCustomProviderName");function rt(){return[...J.keys()]}r(rt,"getCustomProviderNames");function Hn(){let t=[];for(let[e,n]of J){let o=!!process.env[n.apiKeyEnv],i=(n.models??[]).map(a=>typeof a=="string"?a:a.id),s=n.model&&i.length?[...new Set([n.model,...i])]:[n.model];t.push({name:e,model:n.model,models:s,configured:o,reasoningCapability:n.reasoningCapability??"none",capabilityProfile:X(n.capabilityProfile??te),custom:!0})}return t}r(Hn,"getCustomProviderList");function Jn(t){let e=J.get(t);if(!e)return;let n=(e.models??[]).map(o=>typeof o=="string"?o:o.id);return e.model&&n.length?[...new Set([e.model,...n])]:[e.model]}r(Jn,"getCustomProviderModels");function Yn(t){return typeof t=="string"?{id:t}:t}r(Yn,"customDescriptorToFull");function st(t){let e=J.get(t);if(!e)return;let n={id:e.model},o=(e.models??[]).map(Yn).filter(i=>i.id!==e.model);return[n,...o]}r(st,"getCustomProviderModelDescriptors");function ge(t,e){let n=J.get(t);if(!n)return;let o=e===n.model,i=o?{id:n.model}:(n.models??[]).map(Yn).find(s=>s.id===e);if(i)return{provider:t,model:i.id,displayName:i.displayName??i.id,supportsThinking:n.supportsThinking??!1,reasoningCapability:i.reasoningCapability??n.reasoningCapability??"none",contextWindow:i.contextWindow??n.contextWindow,maxOutputTokens:i.maxOutputTokens??n.maxOutputTokens,thinkingBudgetCap:i.thinkingBudgetCap??n.thinkingBudgetCap,isDefault:o}}r(ge,"getCustomModelCapabilities");function qn(t){let e=J.get(t);if(!e)return;let n=e.verifyStrategy??(e.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:n}}r(qn,"getCustomProviderVerifyMetadata");function at(){let t=[];for(let[e,n]of J){let o=ge(e,n.model);o&&t.push(o);for(let i of n.models??[]){let s=typeof i=="string"?i:i.id;if(s===n.model)continue;let a=ge(e,s);a&&t.push(a)}}return t}r(at,"listCustomProviderModelCapabilities");var Q=new Map,Ei=0;function en(t){let e=Q.get(t);if(!(!e||e.length===0))return e[e.length-1]}r(en,"getActiveRuntimeProviderRegistration");function wi(t){for(let[e,n]of Q){let o=n.filter(i=>i.id!==t);if(o.length!==n.length){o.length===0?Q.delete(e):Q.set(e,o);return}}}r(wi,"removeRuntimeProviderRegistration");function Qn(t,e){let n=t.trim();if(!n)throw new Error("Model provider name cannot be empty.");if(O(n))throw new Error(`Runtime model provider "${n}" conflicts with a built-in provider.`);if(he(n))throw new Error(`Runtime model provider "${n}" conflicts with an existing config-defined custom provider.`);let o={id:`runtime-provider:${++Ei}`,name:n,factory:e},i=Q.get(n)??[];return Q.set(n,[...i,o]),()=>{wi(o.id)}}r(Qn,"registerModelProvider");function ct(t){let e=en(t);return e?e.factory():void 0}r(ct,"getRuntimeModelProvider");function Pe(t){return en(t)!==void 0}r(Pe,"isRuntimeModelProviderName");function lt(){return Array.from(Q.keys()).filter(t=>en(t)!==void 0)}r(lt,"getRuntimeModelProviderNames");function Zn(){Q.clear()}r(Zn,"clearRuntimeModelProviders");function tn(t){if(O(t))return $[t]();let e=ct(t);if(e)return e;let n=it(t);if(n)return n;let o=dt();throw new Error(`Unknown provider: ${t}. Available: ${o.join(", ")}`)}r(tn,"resolveProvider");function ut(t){return O(t)||Pe(t)||he(t)}r(ut,"isKnownProvider");function dt(){let t=Object.keys($),e=lt(),n=rt();return[...new Set([...t,...e,...n])]}r(dt,"getAvailableProviderNames");function nn(t){return O(t)?et(t):st(t)??[]}r(nn,"resolveProviderModelDescriptors");function eo(t,e){return O(t)?tt(t,e):ge(t,e)}r(eo,"resolveModelCapabilities");function to(){return[...nt(),...at()]}r(to,"listAllModelCapabilities");function Mi(t){if(O(t)){let e=A[t];return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:e.verifyStrategy}}if(!Pe(t))return qn(t)}r(Mi,"getProviderVerifyMetadata");async function no(t,e){let n=Mi(t);if(!n&&!ut(t))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${t}". Available: ${dt().join(", ")}`};if(n?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${t}" does not support credential verification (cli-bridge or strategy marked unsupported)`};if(n&&!process.env[n.apiKeyEnv])return{ok:!1,error:"unconfigured",strategy:n.verifyStrategy,durationMs:0,approxTokensSpent:0,message:`Environment variable "${n.apiKeyEnv}" is not set for provider "${t}"`};let o;try{o=tn(t)}catch(i){return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}try{return await o.verifyCredential(e)}catch(i){return{ok:!1,error:"unknown",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}}r(no,"verifyProviderCredential");async function oo(t,e){if(!ut(t))return{ok:!1,source:"failed",error:`Unknown provider: "${t}"`,durationMs:0};let n=nn(t);return n.length===0?{ok:!1,source:"failed",error:`Provider "${t}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:n.map(i=>i.id),durationMs:0}}r(oo,"listProviderModels");var io={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08}},openai:{"gpt-5.4":{inputPer1M:30,outputPer1M:120},"gpt-5.3-codex-spark":{inputPer1M:10,outputPer1M:40}},deepseek:{"deepseek-v4-flash":{inputPer1M:.14,outputPer1M:.28,cachePer1M:.028},"deepseek-v4-pro":{inputPer1M:1.68,outputPer1M:3.36,cachePer1M:.14}},kimi:{"k2.5":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},zhipu:{"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"zhipu-coding":{"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"minimax-coding":{"MiniMax-M3":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7-highspeed":{inputPer1M:.01,outputPer1M:.03}},"mimo-coding":{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},mimo:{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},"ark-coding":{"glm-5.1":{inputPer1M:.005,outputPer1M:.015},"glm-4.7":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M3":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M2.7":{inputPer1M:.005,outputPer1M:.015},"deepseek-v3.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-flash":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-code":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-pro":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-lite":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function on(t,e,n){let o=n?.[t]?.[e];return o||io[t]?.[e]}r(on,"getCostRate");function rn(t,e,n,o=0){let i=e/1e6*t.inputPer1M,s=n/1e6*t.outputPer1M,a=t.cachePer1M?o/1e6*t.cachePer1M:0;return i+s+a}r(rn,"calculateCost");function Pi(){return{records:[],retries:[]}}r(Pi,"createCostTracker");function sn(t,e){let n={timestamp:Date.now(),provider:e.provider,waitMs:e.waitMs,reason:e.reason,source:e.source};return{records:t.records,retries:[...t.retries,n]}}r(sn,"recordRetry");function an(t,e,n){let o=on(e.provider,e.model,n),i=(e.cacheReadTokens??0)+(e.cacheWriteTokens??0),s=o?rn(o,e.inputTokens,e.outputTokens,i):0,a={timestamp:Date.now(),provider:e.provider,model:e.model,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,cost:s,role:e.role};return{records:[...t.records,a],retries:t.retries}}r(an,"recordUsage");function Si(t){let e=0,n=0,o=0,i=0,s=0,a=0,c={},d={};for(let f of t.records){e+=f.cost,n+=f.inputTokens,o+=f.outputTokens,i+=f.cacheReadTokens+f.cacheWriteTokens,s+=f.cacheReadTokens,a+=f.cacheWriteTokens;let y=c[f.provider];c[f.provider]={cost:(y?.cost??0)+f.cost,calls:(y?.calls??0)+1,inputTokens:(y?.inputTokens??0)+f.inputTokens,outputTokens:(y?.outputTokens??0)+f.outputTokens};let g=f.role??"default",b=d[g];d[g]={cost:(b?.cost??0)+f.cost,calls:(b?.calls??0)+1,inputTokens:(b?.inputTokens??0)+f.inputTokens,outputTokens:(b?.outputTokens??0)+f.outputTokens}}let l=0;for(let f of t.retries)l+=f.waitMs;let u=i>0?s/i:0;return{totalCost:e,totalInputTokens:n,totalOutputTokens:o,totalCacheTokens:i,totalCacheReadTokens:s,totalCacheWriteTokens:a,cacheHitRate:u,callCount:t.records.length,retryCount:t.retries.length,retryWaitMs:l,byProvider:c,byRole:d}}r(Si,"getSummary");function pt(t){return t<.01?`$${t.toFixed(4)}`:t<1?`$${t.toFixed(3)}`:`$${t.toFixed(2)}`}r(pt,"formatCost");function Ri(t){let e=[];if(e.push(`Session Cost: ${pt(t.totalCost)} (${t.callCount} calls)`),e.push(`Tokens: ${t.totalInputTokens.toLocaleString()} in / ${t.totalOutputTokens.toLocaleString()} out`),t.totalCacheTokens>0){let i=(t.cacheHitRate*100).toFixed(0);e.push(`Cache: ${t.totalCacheTokens.toLocaleString()} tokens (${t.totalCacheReadTokens.toLocaleString()} read / ${t.totalCacheWriteTokens.toLocaleString()} write, ${i}% hit rate)`)}if(t.retryCount>0){let i=(t.retryWaitMs/1e3).toFixed(1);e.push(`Retries: ${t.retryCount} (${i}s total wait)`)}e.push("");let n=Object.entries(t.byProvider).sort((i,s)=>s[1].cost-i[1].cost);if(n.length>0){e.push("By Provider:");for(let[i,s]of n)e.push(` ${i}: ${pt(s.cost)} (${s.calls} calls, ${s.inputTokens.toLocaleString()} in / ${s.outputTokens.toLocaleString()} out)`);e.push("")}let o=Object.entries(t.byRole).sort((i,s)=>s[1].cost-i[1].cost);if(o.length>1){e.push("By Role:");for(let[i,s]of o)e.push(` ${i}: ${pt(s.cost)} (${s.calls} calls)`)}return e.join(`
30
+ `}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:n.readable,outputStream:e.writable,abort:r(()=>{l.abort(),e.readable.cancel().catch(()=>{}),n.writable.abort().catch(()=>{})},"abort"),executor:t}}r(Ve,"createPseudoAcpServer");import Sn from"node:fs";import Rn from"node:os";import An from"node:path";var qo="gpt-5.4",Qo="auto-gemini-3",Zo=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],ei=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function On(t){let e=new Set,n=[];for(let o of t){let i=o.trim();if(!i)continue;let s=i.toLowerCase();e.has(s)||(e.add(s),n.push(i))}return n}r(On,"dedupePreserveOrder");function ti(){let t=An.join(Rn.homedir(),".codex","config.toml");try{return Sn.readFileSync(t,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}r(ti,"readCodexConfiguredModel");function ni(){let t=An.join(Rn.homedir(),".gemini","settings.json");try{let e=JSON.parse(Sn.readFileSync(t,"utf8")),n=typeof e.model=="string"?e.model.trim():"";return n||(typeof e.general?.model=="string"?e.general.model.trim():"")||null}catch{return null}}r(ni,"readGeminiConfiguredModel");function pe(){return ti()||qo}r(pe,"getCodexCliDefaultModel");function fe(){return ni()||Qo}r(fe,"getGeminiCliDefaultModel");function Te(){return On([pe(),...Zo])}r(Te,"getCodexCliKnownModels");function Ee(){return On([fe(),...ei])}r(Ee,"getGeminiCliKnownModels");var It=fe(),oi=Ee(),ii={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},Ge=class extends ue{static{r(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:It,models:oi.filter(e=>e!==It).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let e=new ze({model:It});this.acpClientOptions=Ve(e)}getCapabilityProfile(){return X(ii)}serializeImageBlockToPromptToken(e){return/\s/.test(e.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(e.path)}`),null):`@${e.path}`}};var He=class extends de{static{r(this,"CodexCLIExecutor")}model;constructor(e){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...e}),this.model=e?.model??"gpt-5.4"}async checkInstalled(){return Xe("codex")}buildArgs(e){this.model=e.model??this.model;let n=e.model?["-m",e.model]:[];return e.sessionId?["exec","resume",e.sessionId,...n,e.prompt,...this.config.baseArgs.filter(o=>o!=="exec")]:[...this.config.baseArgs,...n,e.prompt]}parseLine(e){if(!e.startsWith("{"))return null;try{let n=JSON.parse(e);return this.convertEvent(n)}catch{return null}}convertEvent(e){let n=Date.now();switch(e.type){case"thread.started":return{type:"session_start",timestamp:n,sessionId:e.thread_id??"",model:this.model,raw:e};case"item.completed":return e.item?.type==="agent_message"?{type:"message",timestamp:n,role:"assistant",content:e.item.text??"",raw:e}:e.item?.type==="command_execution"?{type:"tool_use",timestamp:n,toolId:e.item.id,toolName:"Bash",parameters:{command:e.item.command},raw:e}:null;case"turn.completed":return{type:"complete",timestamp:n,status:"success",usage:e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens}:void 0,raw:e};case"error":case"turn.failed":return{type:"error",timestamp:n,errorType:e.type,message:e.message??"Unknown error",raw:e};default:return null}}};var Nt=pe(),ri=Te(),Je=class extends ue{static{r(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:Nt,models:ri.filter(e=>e!==Nt).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let e=new He({model:Nt});this.acpClientOptions=Ve(e)}};import{existsSync as di,readFileSync as pi}from"node:fs";import me from"node:path";import{fileURLToPath as fi}from"node:url";var Dn=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],In=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Nn=["count-tokens","models-list","minimal-message","unsupported"];function we(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}r(we,"isPlainObject");function qe(t,e){if(typeof t!="string"||t.length===0)throw new Error(`provider-capabilities.json: ${e} must be a non-empty string`);return t}r(qe,"requireString");function Ln(t,e){if(t!==void 0)return qe(t,e)}r(Ln,"optionalString");function ne(t,e){if(t!==void 0){if(typeof t!="number"||!Number.isFinite(t)||t<0)throw new Error(`provider-capabilities.json: ${e} must be a non-negative finite number`);return t}}r(ne,"optionalNumber");function Ye(t,e){if(t!==void 0){if(typeof t!="boolean")throw new Error(`provider-capabilities.json: ${e} must be a boolean`);return t}}r(Ye,"optionalBoolean");function Lt(t,e){if(typeof t!="string"||!Dn.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Dn.join(", ")}, got ${JSON.stringify(t)}`);return t}r(Lt,"requireReasoningCapability");function si(t,e){if(typeof t!="string"||!In.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${In.join(", ")}, got ${JSON.stringify(t)}`);return t}r(si,"requireProfileName");function ai(t,e){if(typeof t!="string"||!Nn.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Nn.join(", ")}, got ${JSON.stringify(t)}`);return t}r(ai,"requireVerifyStrategy");function ci(t,e){if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let n=qe(t.id,`${e}.id`),o=Ln(t.displayName,`${e}.displayName`),i=ne(t.contextWindow,`${e}.contextWindow`),s=ne(t.maxOutputTokens,`${e}.maxOutputTokens`),a=ne(t.thinkingBudgetCap,`${e}.thinkingBudgetCap`),c=Ye(t.replayReasoningContent,`${e}.replayReasoningContent`),d=Ye(t.strictThinkingSignature,`${e}.strictThinkingSignature`),l=ne(t.streamMaxDurationMs,`${e}.streamMaxDurationMs`),u=t.reasoningCapability===void 0?void 0:Lt(t.reasoningCapability,`${e}.reasoningCapability`),f={id:n};return o!==void 0&&(f.displayName=o),i!==void 0&&(f.contextWindow=i),s!==void 0&&(f.maxOutputTokens=s),a!==void 0&&(f.thinkingBudgetCap=a),u!==void 0&&(f.reasoningCapability=u),c!==void 0&&(f.replayReasoningContent=c),d!==void 0&&(f.strictThinkingSignature=d),l!==void 0&&(f.streamMaxDurationMs=l),f}r(ci,"validateModelDescriptor");function li(t,e){if(t===void 0)return;if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let n={};for(let[o,i]of Object.entries(t))n[o]=Lt(i,`${e}.${o}`);return n}r(li,"validateModelReasoningCapabilities");function ui(t,e){if(!we(t))throw new Error(`provider-capabilities.json: providers.${e} must be an object`);let n=Ye(t.cliBridge,`providers.${e}.cliBridge`),o=qe(t.apiKeyEnv,`providers.${e}.apiKeyEnv`),i=Lt(t.reasoningCapability,`providers.${e}.reasoningCapability`),s=si(t.capabilityProfile,`providers.${e}.capabilityProfile`),a=ai(t.verifyStrategy,`providers.${e}.verifyStrategy`);if(n&&a!=="unsupported")throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but verifyStrategy="${a}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let c=ne(t.contextWindow,`providers.${e}.contextWindow`),d=ne(t.maxOutputTokens,`providers.${e}.maxOutputTokens`),l=ne(t.thinkingBudgetCap,`providers.${e}.thinkingBudgetCap`),u=Ye(t.supportsThinking,`providers.${e}.supportsThinking`),f=li(t.modelReasoningCapabilities,`providers.${e}.modelReasoningCapabilities`),y=Ln(t.model,`providers.${e}.model`);if(n&&(y!==void 0||t.models!==void 0))throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&y===void 0)throw new Error(`provider-capabilities.json: providers.${e}.model is required (only cliBridge entries may omit)`);let g;if(t.models!==void 0){if(!Array.isArray(t.models))throw new Error(`provider-capabilities.json: providers.${e}.models must be an array`);g=t.models.map((p,v)=>ci(p,`providers.${e}.models[${v}]`))}let b={apiKeyEnv:o,reasoningCapability:i,capabilityProfile:s,verifyStrategy:a};return y!==void 0&&(b.model=y),g!==void 0&&(b.models=g),c!==void 0&&(b.contextWindow=c),d!==void 0&&(b.maxOutputTokens=d),l!==void 0&&(b.thinkingBudgetCap=l),u!==void 0&&(b.supportsThinking=u),f!==void 0&&(b.modelReasoningCapabilities=f),n&&(b.cliBridge=!0),b}r(ui,"validateProviderEntry");function Bn(t){if(!we(t))throw new Error("provider-capabilities.json: root must be an object");if(t.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(t.version)}`);let e=qe(t.updatedAt,"updatedAt");if(!we(t.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[o,i]of Object.entries(t.providers))n[o]=ui(i,o);return{version:1,updatedAt:e,providers:n}}r(Bn,"validateProviderCapabilitiesJson");var mi=Object.freeze({native:te,"image-input-native":gn,"cli-bridge":be,"image-input-cli-bridge":hn}),Qe=null;function gi(){if(process.env.KODAX_BUNDLED==="true")return me.join(me.dirname(process.execPath),"provider-capabilities.json");let t=me.dirname(fi(import.meta.url)),e=[me.join(t,"provider-capabilities.json"),me.join(me.dirname(t),"provider-capabilities.json")];for(let n of e)if(di(n))return n;return e[0]}r(gi,"resolveJsonPath");function hi(t){if(t.models){for(let e of t.models)Object.freeze(e);Object.freeze(t.models)}return t.modelReasoningCapabilities&&Object.freeze(t.modelReasoningCapabilities),Object.freeze(t)}r(hi,"deepFreezeSnapshot");function yi(t){if(t==="gemini-cli"){let e=fe();return{model:e,models:Ee().filter(n=>n!==e).map(n=>({id:n}))}}if(t==="codex-cli"){let e=pe();return{model:e,models:Te().filter(n=>n!==e).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${t}'`)}r(yi,"resolveCliBridgeModels");function vi(t,e){let n=mi[e.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${e.capabilityProfile}' for provider '${t}'`);if(e.cliBridge){let i=yi(t),s={model:i.model,models:i.models,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:n,verifyStrategy:e.verifyStrategy};return e.supportsThinking!==void 0&&(s.supportsThinking=e.supportsThinking),s}let o={model:e.model,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:n,verifyStrategy:e.verifyStrategy};return e.models!==void 0&&(o.models=e.models),e.modelReasoningCapabilities!==void 0&&(o.modelReasoningCapabilities=e.modelReasoningCapabilities),e.contextWindow!==void 0&&(o.contextWindow=e.contextWindow),e.maxOutputTokens!==void 0&&(o.maxOutputTokens=e.maxOutputTokens),e.thinkingBudgetCap!==void 0&&(o.thinkingBudgetCap=e.thinkingBudgetCap),e.supportsThinking!==void 0&&(o.supportsThinking=e.supportsThinking),o}r(vi,"buildSnapshot");function Fn(){if(Qe)return Qe;let t=gi(),e;try{let i=pi(t,"utf8");e=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${t}: ${s}`)}let n=Bn(e),o={};for(let[i,s]of Object.entries(n.providers))o[i]=hi(vi(i,s));return Qe=Object.freeze(o),Qe}r(Fn,"getProviderSnapshots");import ki from"@anthropic-ai/sdk";var A=Fn();function U(t,e={}){let n=A[t];return{apiKeyEnv:n.apiKeyEnv,model:n.model,reasoningCapability:n.reasoningCapability,models:n.models,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap,supportsThinking:n.supportsThinking??!1,verifyStrategy:n.verifyStrategy,...e}}r(U,"buildProviderConfig");var Bt=class extends I{static{r(this,"AnthropicProvider")}name="anthropic";config=U("anthropic",{strictThinkingSignature:!0});buildClient(){return new ki({apiKey:this.getApiKey()})}},Ft=class extends I{static{r(this,"ZhipuCodingProvider")}name="zhipu-coding";config=U("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},Kt=class extends I{static{r(this,"KimiCodeProvider")}name="kimi-code";config=U("kimi-code",{baseUrl:"https://api.kimi.com/coding/"})},$t=class extends I{static{r(this,"MiniMaxCodingProvider")}name="minimax-coding";config=U("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},Ut=class extends I{static{r(this,"MimoCodingProvider")}name="mimo-coding";config=U("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},jt=class extends I{static{r(this,"MimoProvider")}name="mimo";config=U("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},Wt=class extends I{static{r(this,"ArkCodingProvider")}name="ark-coding";config=U("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},Xt=class extends K{static{r(this,"OpenAIProvider")}name="openai";config=U("openai")},zt=class extends K{static{r(this,"DeepSeekProvider")}name="deepseek";config=U("deepseek",{baseUrl:"https://api.deepseek.com",replayReasoningContent:!0})},Vt=class extends K{static{r(this,"KimiProvider")}name="kimi";config=U("kimi",{baseUrl:"https://api.moonshot.cn/v1",replayReasoningContent:!0})},Gt=class extends K{static{r(this,"QwenProvider")}name="qwen";config=U("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},Ht=class extends K{static{r(this,"ZhipuProvider")}name="zhipu";config=U("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},$={anthropic:r(()=>new Bt,"anthropic"),openai:r(()=>new Xt,"openai"),deepseek:r(()=>new zt,"deepseek"),kimi:r(()=>new Vt,"kimi"),"kimi-code":r(()=>new Kt,"kimi-code"),qwen:r(()=>new Gt,"qwen"),zhipu:r(()=>new Ht,"zhipu"),"zhipu-coding":r(()=>new Ft,"zhipu-coding"),"minimax-coding":r(()=>new $t,"minimax-coding"),"mimo-coding":r(()=>new Ut,"mimo-coding"),mimo:r(()=>new jt,"mimo"),"ark-coding":r(()=>new Wt,"ark-coding"),"gemini-cli":r(()=>new Ge,"gemini-cli"),"codex-cli":r(()=>new Je,"codex-cli")},Jt=process.env.KODAX_PROVIDER??"zhipu-coding",Kn=new Map;function bi(t){if(O(t))return A[t].apiKeyEnv}r(bi,"resolveApiKeyEnvForProvider");function $n(t){let e=t??Jt,n=$[e];if(!n)throw new R(`Unknown provider: ${e}. Available: ${Object.keys($).join(", ")}`,e);let o=bi(e),i=o?process.env[o]:void 0,s=Kn.get(e);if(s&&s.apiKey===i)return s.instance;let a=n();return Kn.set(e,{apiKey:i,instance:a}),a}r($n,"getProvider");function Un(t){return O(t)?!!process.env[A[t].apiKeyEnv]:!1}r(Un,"isProviderConfigured");function jn(t){return O(t)?A[t].model:null}r(jn,"getProviderModel");function Wn(t,e){if(!O(t))return"unknown";let n=A[t],o=e??n.model;return n.modelReasoningCapabilities?.[o]??n.reasoningCapability}r(Wn,"getProviderConfiguredReasoningCapability");function Xn(t){return O(t)?X(A[t].capabilityProfile):null}r(Xn,"getProviderConfiguredCapabilityProfile");function zn(){let t=[];for(let e of Object.keys($)){let n=A[e];t.push({name:e,model:n.model,models:n.models?[n.model,...n.models.map(o=>o.id)]:[n.model],configured:!!process.env[n.apiKeyEnv],reasoningCapability:n.reasoningCapability,capabilityProfile:X(n.capabilityProfile)})}return t}r(zn,"getProviderList");function Vn(t){let e=A[t];return e?e.models?[e.model,...e.models.map(n=>n.id)]:[e.model]:[]}r(Vn,"getProviderModels");function O(t){return t in $}r(O,"isProviderName");function Yt(t){return{id:t.model}}r(Yt,"makeDefaultDescriptor");function Ze(t,e,n){let o=n.id===e.model;return{provider:t,model:n.id,displayName:n.displayName??n.id,supportsThinking:e.supportsThinking??!1,reasoningCapability:n.reasoningCapability??e.reasoningCapability,contextWindow:n.contextWindow??e.contextWindow,maxOutputTokens:n.maxOutputTokens??e.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap??e.thinkingBudgetCap,isDefault:o}}r(Ze,"effectiveCapabilities");function et(t){let e=A[t];return e?[Yt(e),...e.models??[]]:[]}r(et,"getProviderModelDescriptors");function tt(t,e){let n=A[t];if(!n)return;if(e===n.model)return Ze(t,n,Yt(n));let o=n.models?.find(i=>i.id===e);if(o)return Ze(t,n,o)}r(tt,"getModelCapabilities");function nt(){let t=[];for(let e of Object.keys($)){let n=A[e];t.push(Ze(e,n,Yt(n)));for(let o of n.models??[])t.push(Ze(e,n,o))}return t}r(nt,"listBuiltinModelCapabilities");var _i=new Set(["compat","sdk"]),Ci=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function xi(t){return t==="anthropic"?"count-tokens":"models-list"}r(xi,"defaultVerifyStrategyForProtocol");function Me(t){if(!t.name||!t.baseUrl||!t.apiKeyEnv||!t.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:t.name,baseUrl:t.baseUrl,apiKeyEnv:t.apiKeyEnv,model:t.model})}`);if(t.protocol!=="anthropic"&&t.protocol!=="openai")throw new Error(`Unknown protocol "${t.protocol}" for custom provider "${t.name}". Must be "anthropic" or "openai".`);if(t.userAgentMode!==void 0&&!_i.has(t.userAgentMode))throw new Error(`Unknown userAgentMode "${t.userAgentMode}" for custom provider "${t.name}". Must be "compat" or "sdk".`);if(t.verifyStrategy!==void 0){if(!Ci.has(t.verifyStrategy))throw new Error(`Unknown verifyStrategy "${t.verifyStrategy}" for custom provider "${t.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(t.protocol==="openai"&&t.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${t.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}r(Me,"validateCustomProviderConfig");function Ti(t){let e=t.models?.length?t.models.map(n=>typeof n=="string"?{id:n}:n):void 0;return{apiKeyEnv:t.apiKeyEnv,model:t.model,baseUrl:t.baseUrl,models:e,userAgentMode:t.userAgentMode,supportsThinking:t.supportsThinking??!1,reasoningCapability:t.reasoningCapability??"none",capabilityProfile:t.capabilityProfile,contextWindow:t.contextWindow,maxOutputTokens:t.maxOutputTokens,thinkingBudgetCap:t.thinkingBudgetCap,replayReasoningContent:t.replayReasoningContent??!1,strictThinkingSignature:t.strictThinkingSignature??!1,streamMaxDurationMs:t.streamMaxDurationMs,verifyStrategy:t.verifyStrategy??xi(t.protocol)}}r(Ti,"buildProviderConfig");function ot(t){Me(t);let e=Ti(t);return t.protocol==="anthropic"?new qt(t.name,e):new Qt(t.name,e)}r(ot,"createCustomProvider");var qt=class extends I{static{r(this,"DynamicAnthropicProvider")}name;config;constructor(e,n){super(),this.name=e,this.config=n}},Qt=class extends K{static{r(this,"DynamicOpenAIProvider")}name;config;constructor(e,n){super(),this.name=e,this.config=n}};var J=new Map,Zt=new Map;function Gn(t){let e=new Set,n=new Map,o=new Map;for(let i of t){if(Me(i),e.has(i.name))throw new Error(`Duplicate custom provider name: "${i.name}". Each custom provider must have a unique name.`);i.name in $&&console.warn(`[kodax] Custom provider "${i.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),e.add(i.name),n.set(i.name,i),o.set(i.name,()=>ot(i))}J.clear(),Zt.clear();for(let[i,s]of n)J.set(i,s);for(let[i,s]of o)Zt.set(i,s)}r(Gn,"registerCustomProviders");function it(t){let e=Zt.get(t);return e?e():void 0}r(it,"getCustomProvider");function he(t){return J.has(t)}r(he,"isCustomProviderName");function rt(){return[...J.keys()]}r(rt,"getCustomProviderNames");function Hn(){let t=[];for(let[e,n]of J){let o=!!process.env[n.apiKeyEnv],i=(n.models??[]).map(a=>typeof a=="string"?a:a.id),s=n.model&&i.length?[...new Set([n.model,...i])]:[n.model];t.push({name:e,model:n.model,models:s,configured:o,reasoningCapability:n.reasoningCapability??"none",capabilityProfile:X(n.capabilityProfile??te),custom:!0})}return t}r(Hn,"getCustomProviderList");function Jn(t){let e=J.get(t);if(!e)return;let n=(e.models??[]).map(o=>typeof o=="string"?o:o.id);return e.model&&n.length?[...new Set([e.model,...n])]:[e.model]}r(Jn,"getCustomProviderModels");function Yn(t){return typeof t=="string"?{id:t}:t}r(Yn,"customDescriptorToFull");function st(t){let e=J.get(t);if(!e)return;let n={id:e.model},o=(e.models??[]).map(Yn).filter(i=>i.id!==e.model);return[n,...o]}r(st,"getCustomProviderModelDescriptors");function ge(t,e){let n=J.get(t);if(!n)return;let o=e===n.model,i=o?{id:n.model}:(n.models??[]).map(Yn).find(s=>s.id===e);if(i)return{provider:t,model:i.id,displayName:i.displayName??i.id,supportsThinking:n.supportsThinking??!1,reasoningCapability:i.reasoningCapability??n.reasoningCapability??"none",contextWindow:i.contextWindow??n.contextWindow,maxOutputTokens:i.maxOutputTokens??n.maxOutputTokens,thinkingBudgetCap:i.thinkingBudgetCap??n.thinkingBudgetCap,isDefault:o}}r(ge,"getCustomModelCapabilities");function qn(t){let e=J.get(t);if(!e)return;let n=e.verifyStrategy??(e.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:n}}r(qn,"getCustomProviderVerifyMetadata");function at(){let t=[];for(let[e,n]of J){let o=ge(e,n.model);o&&t.push(o);for(let i of n.models??[]){let s=typeof i=="string"?i:i.id;if(s===n.model)continue;let a=ge(e,s);a&&t.push(a)}}return t}r(at,"listCustomProviderModelCapabilities");var Q=new Map,Ei=0;function en(t){let e=Q.get(t);if(!(!e||e.length===0))return e[e.length-1]}r(en,"getActiveRuntimeProviderRegistration");function wi(t){for(let[e,n]of Q){let o=n.filter(i=>i.id!==t);if(o.length!==n.length){o.length===0?Q.delete(e):Q.set(e,o);return}}}r(wi,"removeRuntimeProviderRegistration");function Qn(t,e){let n=t.trim();if(!n)throw new Error("Model provider name cannot be empty.");if(O(n))throw new Error(`Runtime model provider "${n}" conflicts with a built-in provider.`);if(he(n))throw new Error(`Runtime model provider "${n}" conflicts with an existing config-defined custom provider.`);let o={id:`runtime-provider:${++Ei}`,name:n,factory:e},i=Q.get(n)??[];return Q.set(n,[...i,o]),()=>{wi(o.id)}}r(Qn,"registerModelProvider");function ct(t){let e=en(t);return e?e.factory():void 0}r(ct,"getRuntimeModelProvider");function Pe(t){return en(t)!==void 0}r(Pe,"isRuntimeModelProviderName");function lt(){return Array.from(Q.keys()).filter(t=>en(t)!==void 0)}r(lt,"getRuntimeModelProviderNames");function Zn(){Q.clear()}r(Zn,"clearRuntimeModelProviders");function tn(t){if(O(t))return $[t]();let e=ct(t);if(e)return e;let n=it(t);if(n)return n;let o=dt();throw new Error(`Unknown provider: ${t}. Available: ${o.join(", ")}`)}r(tn,"resolveProvider");function ut(t){return O(t)||Pe(t)||he(t)}r(ut,"isKnownProvider");function dt(){let t=Object.keys($),e=lt(),n=rt();return[...new Set([...t,...e,...n])]}r(dt,"getAvailableProviderNames");function nn(t){return O(t)?et(t):st(t)??[]}r(nn,"resolveProviderModelDescriptors");function eo(t,e){return O(t)?tt(t,e):ge(t,e)}r(eo,"resolveModelCapabilities");function to(){return[...nt(),...at()]}r(to,"listAllModelCapabilities");function Mi(t){if(O(t)){let e=A[t];return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:e.verifyStrategy}}if(!Pe(t))return qn(t)}r(Mi,"getProviderVerifyMetadata");async function no(t,e){let n=Mi(t);if(!n&&!ut(t))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${t}". Available: ${dt().join(", ")}`};if(n?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${t}" does not support credential verification (cli-bridge or strategy marked unsupported)`};if(n&&!process.env[n.apiKeyEnv])return{ok:!1,error:"unconfigured",strategy:n.verifyStrategy,durationMs:0,approxTokensSpent:0,message:`Environment variable "${n.apiKeyEnv}" is not set for provider "${t}"`};let o;try{o=tn(t)}catch(i){return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}try{return await o.verifyCredential(e)}catch(i){return{ok:!1,error:"unknown",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}}r(no,"verifyProviderCredential");async function oo(t,e){if(!ut(t))return{ok:!1,source:"failed",error:`Unknown provider: "${t}"`,durationMs:0};let n=nn(t);return n.length===0?{ok:!1,source:"failed",error:`Provider "${t}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:n.map(i=>i.id),durationMs:0}}r(oo,"listProviderModels");var io={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08}},openai:{"gpt-5.4":{inputPer1M:30,outputPer1M:120},"gpt-5.3-codex-spark":{inputPer1M:10,outputPer1M:40}},deepseek:{"deepseek-v4-flash":{inputPer1M:.14,outputPer1M:.28,cachePer1M:.028},"deepseek-v4-pro":{inputPer1M:1.68,outputPer1M:3.36,cachePer1M:.14}},kimi:{"k2.5":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},zhipu:{"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"zhipu-coding":{"glm-5.2":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03},"glm-4.7":{inputPer1M:.01,outputPer1M:.03}},"minimax-coding":{"MiniMax-M3":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7-highspeed":{inputPer1M:.01,outputPer1M:.03}},"mimo-coding":{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},mimo:{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},"ark-coding":{"glm-5.1":{inputPer1M:.005,outputPer1M:.015},"glm-4.7":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M3":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M2.7":{inputPer1M:.005,outputPer1M:.015},"deepseek-v3.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-flash":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-code":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-pro":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-lite":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function on(t,e,n){let o=n?.[t]?.[e];return o||io[t]?.[e]}r(on,"getCostRate");function rn(t,e,n,o=0){let i=e/1e6*t.inputPer1M,s=n/1e6*t.outputPer1M,a=t.cachePer1M?o/1e6*t.cachePer1M:0;return i+s+a}r(rn,"calculateCost");function Pi(){return{records:[],retries:[]}}r(Pi,"createCostTracker");function sn(t,e){let n={timestamp:Date.now(),provider:e.provider,waitMs:e.waitMs,reason:e.reason,source:e.source};return{records:t.records,retries:[...t.retries,n]}}r(sn,"recordRetry");function an(t,e,n){let o=on(e.provider,e.model,n),i=(e.cacheReadTokens??0)+(e.cacheWriteTokens??0),s=o?rn(o,e.inputTokens,e.outputTokens,i):0,a={timestamp:Date.now(),provider:e.provider,model:e.model,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,cost:s,role:e.role};return{records:[...t.records,a],retries:t.retries}}r(an,"recordUsage");function Si(t){let e=0,n=0,o=0,i=0,s=0,a=0,c={},d={};for(let f of t.records){e+=f.cost,n+=f.inputTokens,o+=f.outputTokens,i+=f.cacheReadTokens+f.cacheWriteTokens,s+=f.cacheReadTokens,a+=f.cacheWriteTokens;let y=c[f.provider];c[f.provider]={cost:(y?.cost??0)+f.cost,calls:(y?.calls??0)+1,inputTokens:(y?.inputTokens??0)+f.inputTokens,outputTokens:(y?.outputTokens??0)+f.outputTokens};let g=f.role??"default",b=d[g];d[g]={cost:(b?.cost??0)+f.cost,calls:(b?.calls??0)+1,inputTokens:(b?.inputTokens??0)+f.inputTokens,outputTokens:(b?.outputTokens??0)+f.outputTokens}}let l=0;for(let f of t.retries)l+=f.waitMs;let u=i>0?s/i:0;return{totalCost:e,totalInputTokens:n,totalOutputTokens:o,totalCacheTokens:i,totalCacheReadTokens:s,totalCacheWriteTokens:a,cacheHitRate:u,callCount:t.records.length,retryCount:t.retries.length,retryWaitMs:l,byProvider:c,byRole:d}}r(Si,"getSummary");function pt(t){return t<.01?`$${t.toFixed(4)}`:t<1?`$${t.toFixed(3)}`:`$${t.toFixed(2)}`}r(pt,"formatCost");function Ri(t){let e=[];if(e.push(`Session Cost: ${pt(t.totalCost)} (${t.callCount} calls)`),e.push(`Tokens: ${t.totalInputTokens.toLocaleString()} in / ${t.totalOutputTokens.toLocaleString()} out`),t.totalCacheTokens>0){let i=(t.cacheHitRate*100).toFixed(0);e.push(`Cache: ${t.totalCacheTokens.toLocaleString()} tokens (${t.totalCacheReadTokens.toLocaleString()} read / ${t.totalCacheWriteTokens.toLocaleString()} write, ${i}% hit rate)`)}if(t.retryCount>0){let i=(t.retryWaitMs/1e3).toFixed(1);e.push(`Retries: ${t.retryCount} (${i}s total wait)`)}e.push("");let n=Object.entries(t.byProvider).sort((i,s)=>s[1].cost-i[1].cost);if(n.length>0){e.push("By Provider:");for(let[i,s]of n)e.push(` ${i}: ${pt(s.cost)} (${s.calls} calls, ${s.inputTokens.toLocaleString()} in / ${s.outputTokens.toLocaleString()} out)`);e.push("")}let o=Object.entries(t.byRole).sort((i,s)=>s[1].cost-i[1].cost);if(o.length>1){e.push("By Role:");for(let[i,s]of o)e.push(` ${i}: ${pt(s.cost)} (${s.calls} calls)`)}return e.join(`
31
31
  `)}r(Ri,"formatCostReport");var ro={inputTokens:0,outputTokens:0,totalTokens:0},Ai=3e4;async function Oi(t){let e=new AbortController,n=t.timeoutMs??Ai,o=t.costTracker,i,s=r(d=>{i||(i=d),e.abort()},"recordAbort"),a=setTimeout(()=>s("timeout"),n),c=r(()=>s("parent"),"onParentAbort");t.abortSignal&&(t.abortSignal.aborted?s("parent"):t.abortSignal.addEventListener("abort",c,{once:!0}));try{let d=await t.provider.stream([...t.messages],[],t.system,t.reasoning??{mode:"off"},{modelOverride:t.model,onRetryAfter:r(g=>{o&&(o=sn(o,{provider:g.provider,waitMs:g.waitMs,reason:g.reason,source:g.source}))},"onRetryAfter")},e.signal),l=d.usage??ro,u=d.textBlocks??[],f=d.toolBlocks??[],y=u.map(g=>g.text).join("");return f.length>0?{text:y,usage:l,costTracker:o,stopReason:"error",error:new Error(`sideQuery: provider returned ${f.length} tool_use block(s); sideQuery expects text-only output`)}:(o&&(o=an(o,{provider:t.provider.name,model:t.model,inputTokens:l.inputTokens,outputTokens:l.outputTokens,cacheReadTokens:l.cachedReadTokens,cacheWriteTokens:l.cachedWriteTokens,role:t.querySource})),{text:y,usage:l,costTracker:o,stopReason:Di(d.stopReason)})}catch(d){let l=d instanceof Error?d:new Error(String(d)),u="error";return e.signal.aborted&&(u=i==="timeout"?"timeout":"aborted"),{text:"",usage:ro,costTracker:o,stopReason:u,error:l}}finally{clearTimeout(a),t.abortSignal&&t.abortSignal.removeEventListener("abort",c)}}r(Oi,"sideQuery");function Di(t){return t==="max_tokens"?"max_tokens":"end_turn"}r(Di,"mapStopReason");export{Y as a,R as b,ke as c,ft as d,mt as e,gt as f,so as g,ao as h,co as i,lo as j,cn as k,ln as l,ht as m,oe as n,Re as o,un as p,ie as q,re as r,yt as s,_t as t,Ct as u,se as v,Oe as w,Tt as x,ho as y,De as z,Ie as A,Ne as B,G as C,ae as D,ce as E,wt as F,Mt as G,le as H,Pt as I,_e as J,I as K,K as L,pe as M,fe as N,Te as O,Ee as P,A as Q,$ as R,Jt as S,$n as T,Un as U,jn as V,Wn as W,Xn as X,zn as Y,Vn as Z,O as _,et as $,tt as aa,nt as ba,Me as ca,ot as da,Gn as ea,it as fa,he as ga,rt as ha,Hn as ia,Jn as ja,st as ka,ge as la,at as ma,Qn as na,ct as oa,Pe as pa,lt as qa,Zn as ra,tn as sa,ut as ta,dt as ua,nn as va,eo as wa,to as xa,no as ya,oo as za,io as Aa,on as Ba,rn as Ca,Pi as Da,sn as Ea,an as Fa,Si as Ga,pt as Ha,Ri as Ia,Oi as Ja};
@@ -1,2 +1,2 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{ub as k,wb as D}from"./chunk-OQL4ISVD.js";import{U as S,V as w,W as L,X as I,Y as O,Z as h,ea as x,fa as m,ia as b,sa as A}from"./chunk-LE6STNVN.js";import{va as R}from"./chunk-XFCAXDSD.js";import{a as o}from"./chunk-V4WSBIXB.js";import s from"fs";import c from"path";import{exec as H,spawnSync as z}from"child_process";import{promisify as U}from"util";import{fileURLToPath as q}from"url";var E="en";function G(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}o(G,"detectSystemLocale");function T(e){if(!e||e==="auto"){E=G();return}E=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}o(T,"setLocale");var M={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function ve(e,t){let i=M[E][e]??M.en[e]??e;if(t)for(let[r,u]of Object.entries(t))i=i.replace(`{${r}}`,String(u));return i}o(ve,"t");var W=U(H),X=R(),Ie=c.join(X,"sessions"),l=c.join(X,"config.json"),Oe=60,a=null,_=!1,J="dumb";function Q(e){let t=c.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",i=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",i],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",i]:["-lc",i],sentinel:n}}o(Q,"buildShellEnvCommand");function Y(e,t){let n=`${t}\0`,i=e.lastIndexOf(n);if(i===-1)return{};let r=e.slice(i+n.length),u={};for(let p of r.split("\0")){if(!p)continue;let d=p.indexOf("=");d<=0||(u[p.slice(0,d)]=p.slice(d+1))}return u}o(Y,"parseNullDelimitedShellEnv");function Z(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let i=e.shell??t.SHELL;if(!i||!c.isAbsolute(i))return!1;let{args:r,sentinel:u}=Q(i),p=e.run??z,d={...t,TERM:J},f=p(i,r,{encoding:"utf8",env:d,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(f.status!==0||!f.stdout)return!1;let j=typeof f.stdout=="string"?f.stdout:f.stdout.toString("utf8"),B=Y(j,u),C=!1;for(let[y,V]of Object.entries(B))y!=="TERM"&&t[y]===void 0&&(t[y]=V,C=!0);return C}o(Z,"hydrateProcessEnvFromShell");function ee(){if(!_){_=!0;try{Z()}catch{}}}o(ee,"ensureShellEnvironmentHydrated");function xe(){_=!1}o(xe,"resetShellEnvironmentHydrationForTesting");function te(e){x(e.customProviders??[])}o(te,"registerConfiguredCustomProviders");function $(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o($,"normalizeConfiguredExtensions");function ne(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{s.mkdirSync(c.dirname(l),{recursive:!0}),s.writeFileSync(l,JSON.stringify(t,null,2))}catch{}return t}o(ne,"migrateLegacyPermissionModeInConfig");function ie(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=s.readFileSync(l,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&s.writeFileSync(l,n)}catch{}return{...e,permissionMode:"auto"}}o(ie,"migrateAutoInProjectAliasInConfig");function oe(){if(a)return a;let e="0.7.53";if(e)return a=e,a;let t=c.join(c.dirname(q(import.meta.url)),"../../package.json");if(s.existsSync(t))try{return a=JSON.parse(s.readFileSync(t,"utf-8")).version??"0.0.0",a??"0.0.0"}catch{}return a="0.0.0",a}o(oe,"getVersion");var Ae=oe();function Re(e){return w(e)}o(Re,"getProviderModel");function P(e,t){let n=new Set(e.map(r=>r.toLowerCase())),i=[...e];for(let r of t)n.has(r.toLowerCase())||i.push(r);return i}o(P,"mergeModels");function re(e,t){t||(t=v().providerModels);let n=t?.[e];if(n&&n.length>0){try{let i=h(e);if(i.length>0)return P(n,i)}catch{}try{let i=m(e);if(i)return P(n,i.getAvailableModels())}catch{}return n}try{let i=h(e);if(i.length>0)return i}catch{}try{let i=m(e);if(i)return i.getAvailableModels()}catch{}return[]}o(re,"getProviderAvailableModels");function se(e,t){let n=L(e,t);if(n!=="unknown")return n;try{let i=m(e);if(i)return i.getReasoningCapability(t)}catch{}return"unknown"}o(se,"getProviderReasoningCapability");function ae(e){let t=I(e);if(t)return t;try{return b().find(i=>i.name===e)?.capabilityProfile??null}catch{return null}}o(ae,"getProviderCapabilityProfile");function F(e,t){let n=ae(e),i=se(e,t);if(n)return{capabilityProfile:n,reasoningCapability:i};try{let r=A(e);return{capabilityProfile:r.getCapabilityProfile(),reasoningCapability:r.getReasoningCapability(t)}}catch{return null}}o(F,"getProviderCapabilityMetadata");function ke(e,t){let n=F(e,t);return n?k({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(ke,"getProviderCapabilitySnapshot");function ce(e,t,n,i){let r=F(e,t);return r?D({providerName:e,model:t,capabilityProfile:r.capabilityProfile,reasoningCapability:r.reasoningCapability==="unknown"?void 0:r.reasoningCapability,reasoningMode:n,hints:i}):null}o(ce,"getProviderPolicyDecision");function De(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",i=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${i}`}o(De,"describeProviderCapabilitySummary");function Me(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(Me,"formatReasoningCapabilityShort");function le(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(le,"describeReasoningCapabilityControl");function Te(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(Te,"describeReasoningExecution");function Ne(e){let t=[];e||(e=v().providerModels);for(let n of O())t.push({name:n.name,model:n.model,models:re(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=b().map(i=>({...i,models:(()=>{let r=e?.[i.name];return r&&r.length>0?P(r,i.models):i.models})()}));t.push(...n)}catch{}return t}o(Ne,"getProviderList");function Ke(e){if(S(e))return!0;try{return m(e)?.isConfigured()??!1}catch{return!1}}o(Ke,"isProviderConfigured");function v(){try{if(s.existsSync(l)){let e=JSON.parse(s.readFileSync(l,"utf-8")),t=e.reasoningCeiling??e.reasoningMode;return ie(ne({...e,reasoningMode:t,extensions:$(e.extensions)}))}}catch{}return{}}o(v,"loadConfig");function ue(e){e.streamIdleTimeoutMs&&!process.env.KODAX_STREAM_IDLE_TIMEOUT_MS&&(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS=String(e.streamIdleTimeoutMs))}o(ue,"applyResilienceRuntimeEnv");function pe(e){e.repoIntelligenceMode&&!process.env.KODAX_REPO_INTELLIGENCE_MODE&&(process.env.KODAX_REPO_INTELLIGENCE_MODE=e.repoIntelligenceMode),e.repointelEndpoint&&!process.env.KODAX_REPOINTEL_ENDPOINT&&(process.env.KODAX_REPOINTEL_ENDPOINT=e.repointelEndpoint),e.repointelBin&&!process.env.KODAX_REPOINTEL_BIN&&(process.env.KODAX_REPOINTEL_BIN=e.repointelBin),e.repoIntelligenceTrace===!0&&!process.env.KODAX_REPO_INTELLIGENCE_TRACE&&(process.env.KODAX_REPO_INTELLIGENCE_TRACE="1")}o(pe,"applyRepoIntelligenceRuntimeEnv");function de(e){e.verifierLog===!0&&!process.env.KODAX_VERIFIER_LOG&&(process.env.KODAX_VERIFIER_LOG="1")}o(de,"applyVerifierRuntimeEnv");function fe(e){e.stallLog===!0&&!process.env.KODAX_STALL_LOG&&(process.env.KODAX_STALL_LOG="1")}o(fe,"applyStallSidecarRuntimeEnv");function me(e){let t=e.fallbackProviders?.filter(n=>n.trim().length>0)??[];t.length>0&&!process.env.KODAX_FALLBACK_PROVIDERS&&(process.env.KODAX_FALLBACK_PROVIDERS=t.join(","))}o(me,"applyFallbackRuntimeEnv");function Xe(){ee();let e=v();return ue(e),pe(e),de(e),fe(e),me(e),te(e),T(e.locale),e}o(Xe,"prepareRuntimeConfig");function $e(e){let n={...v(),...e},i=$(n.extensions);i!==void 0&&(n.extensions=i);for(let r of Object.keys(e))e[r]===void 0&&delete n[r];s.mkdirSync(c.dirname(l),{recursive:!0}),s.writeFileSync(l,JSON.stringify(n,null,2))}o($e,"saveConfig");async function Fe(e){try{let{stdout:t}=await W("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(Fe,"getGitRoot");function ge(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(ge,"formatProviderSourceKind");function je(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${ge(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${le(e.reasoningCapability)}`]}o(je,"formatProviderCapabilityDetailLines");function Be(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(r=>({label:r.label,decision:ce(e,t,n,r.hints)})).filter(r=>r.decision!==null)}o(Be,"getProviderCommonPolicyScenarios");var N=.5,K=0,g={locked:!1,queue:[]};async function Ve(e){for(;g.locked;)await new Promise(t=>g.queue.push(t));g.locked=!0;try{let t=(Date.now()-K)/1e3;t<N&&await new Promise(i=>setTimeout(i,(N-t)*1e3));let n=await e();return K=Date.now(),n}finally{g.locked=!1;let t=g.queue.shift();t&&t()}}o(Ve,"rateLimitedCall");export{ve as a,X as b,Ie as c,l as d,Oe as e,Z as f,xe as g,te as h,oe as i,Ae as j,Re as k,re as l,se as m,ae as n,ke as o,ce as p,De as q,Me as r,le as s,Te as t,Ne as u,Ke as v,v as w,Xe as x,$e as y,Fe as z,ge as A,je as B,Be as C,Ve as D};
2
+ import{vb as k,xb as D}from"./chunk-THAKTCPE.js";import{U as S,V as w,W as L,X as I,Y as O,Z as h,ea as x,fa as m,ia as b,sa as A}from"./chunk-7C2QUBLE.js";import{va as R}from"./chunk-JCDO2FR4.js";import{a as o}from"./chunk-V4WSBIXB.js";import s from"fs";import c from"path";import{exec as H,spawnSync as z}from"child_process";import{promisify as U}from"util";import{fileURLToPath as q}from"url";var E="en";function G(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}o(G,"detectSystemLocale");function T(e){if(!e||e==="auto"){E=G();return}E=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}o(T,"setLocale");var M={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function ve(e,t){let i=M[E][e]??M.en[e]??e;if(t)for(let[r,u]of Object.entries(t))i=i.replace(`{${r}}`,String(u));return i}o(ve,"t");var W=U(H),X=R(),Ie=c.join(X,"sessions"),l=c.join(X,"config.json"),Oe=60,a=null,_=!1,J="dumb";function Q(e){let t=c.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",i=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",i],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",i]:["-lc",i],sentinel:n}}o(Q,"buildShellEnvCommand");function Y(e,t){let n=`${t}\0`,i=e.lastIndexOf(n);if(i===-1)return{};let r=e.slice(i+n.length),u={};for(let p of r.split("\0")){if(!p)continue;let d=p.indexOf("=");d<=0||(u[p.slice(0,d)]=p.slice(d+1))}return u}o(Y,"parseNullDelimitedShellEnv");function Z(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let i=e.shell??t.SHELL;if(!i||!c.isAbsolute(i))return!1;let{args:r,sentinel:u}=Q(i),p=e.run??z,d={...t,TERM:J},f=p(i,r,{encoding:"utf8",env:d,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(f.status!==0||!f.stdout)return!1;let j=typeof f.stdout=="string"?f.stdout:f.stdout.toString("utf8"),B=Y(j,u),C=!1;for(let[y,V]of Object.entries(B))y!=="TERM"&&t[y]===void 0&&(t[y]=V,C=!0);return C}o(Z,"hydrateProcessEnvFromShell");function ee(){if(!_){_=!0;try{Z()}catch{}}}o(ee,"ensureShellEnvironmentHydrated");function xe(){_=!1}o(xe,"resetShellEnvironmentHydrationForTesting");function te(e){x(e.customProviders??[])}o(te,"registerConfiguredCustomProviders");function $(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o($,"normalizeConfiguredExtensions");function ne(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{s.mkdirSync(c.dirname(l),{recursive:!0}),s.writeFileSync(l,JSON.stringify(t,null,2))}catch{}return t}o(ne,"migrateLegacyPermissionModeInConfig");function ie(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=s.readFileSync(l,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&s.writeFileSync(l,n)}catch{}return{...e,permissionMode:"auto"}}o(ie,"migrateAutoInProjectAliasInConfig");function oe(){if(a)return a;let e="0.7.55";if(e)return a=e,a;let t=c.join(c.dirname(q(import.meta.url)),"../../package.json");if(s.existsSync(t))try{return a=JSON.parse(s.readFileSync(t,"utf-8")).version??"0.0.0",a??"0.0.0"}catch{}return a="0.0.0",a}o(oe,"getVersion");var Ae=oe();function Re(e){return w(e)}o(Re,"getProviderModel");function P(e,t){let n=new Set(e.map(r=>r.toLowerCase())),i=[...e];for(let r of t)n.has(r.toLowerCase())||i.push(r);return i}o(P,"mergeModels");function re(e,t){t||(t=v().providerModels);let n=t?.[e];if(n&&n.length>0){try{let i=h(e);if(i.length>0)return P(n,i)}catch{}try{let i=m(e);if(i)return P(n,i.getAvailableModels())}catch{}return n}try{let i=h(e);if(i.length>0)return i}catch{}try{let i=m(e);if(i)return i.getAvailableModels()}catch{}return[]}o(re,"getProviderAvailableModels");function se(e,t){let n=L(e,t);if(n!=="unknown")return n;try{let i=m(e);if(i)return i.getReasoningCapability(t)}catch{}return"unknown"}o(se,"getProviderReasoningCapability");function ae(e){let t=I(e);if(t)return t;try{return b().find(i=>i.name===e)?.capabilityProfile??null}catch{return null}}o(ae,"getProviderCapabilityProfile");function F(e,t){let n=ae(e),i=se(e,t);if(n)return{capabilityProfile:n,reasoningCapability:i};try{let r=A(e);return{capabilityProfile:r.getCapabilityProfile(),reasoningCapability:r.getReasoningCapability(t)}}catch{return null}}o(F,"getProviderCapabilityMetadata");function ke(e,t){let n=F(e,t);return n?k({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(ke,"getProviderCapabilitySnapshot");function ce(e,t,n,i){let r=F(e,t);return r?D({providerName:e,model:t,capabilityProfile:r.capabilityProfile,reasoningCapability:r.reasoningCapability==="unknown"?void 0:r.reasoningCapability,reasoningMode:n,hints:i}):null}o(ce,"getProviderPolicyDecision");function De(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",i=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${i}`}o(De,"describeProviderCapabilitySummary");function Me(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(Me,"formatReasoningCapabilityShort");function le(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(le,"describeReasoningCapabilityControl");function Te(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(Te,"describeReasoningExecution");function Ne(e){let t=[];e||(e=v().providerModels);for(let n of O())t.push({name:n.name,model:n.model,models:re(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=b().map(i=>({...i,models:(()=>{let r=e?.[i.name];return r&&r.length>0?P(r,i.models):i.models})()}));t.push(...n)}catch{}return t}o(Ne,"getProviderList");function Ke(e){if(S(e))return!0;try{return m(e)?.isConfigured()??!1}catch{return!1}}o(Ke,"isProviderConfigured");function v(){try{if(s.existsSync(l)){let e=JSON.parse(s.readFileSync(l,"utf-8")),t=e.reasoningCeiling??e.reasoningMode;return ie(ne({...e,reasoningMode:t,extensions:$(e.extensions)}))}}catch{}return{}}o(v,"loadConfig");function ue(e){e.streamIdleTimeoutMs&&!process.env.KODAX_STREAM_IDLE_TIMEOUT_MS&&(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS=String(e.streamIdleTimeoutMs))}o(ue,"applyResilienceRuntimeEnv");function pe(e){e.repoIntelligenceMode&&!process.env.KODAX_REPO_INTELLIGENCE_MODE&&(process.env.KODAX_REPO_INTELLIGENCE_MODE=e.repoIntelligenceMode),e.repointelEndpoint&&!process.env.KODAX_REPOINTEL_ENDPOINT&&(process.env.KODAX_REPOINTEL_ENDPOINT=e.repointelEndpoint),e.repointelBin&&!process.env.KODAX_REPOINTEL_BIN&&(process.env.KODAX_REPOINTEL_BIN=e.repointelBin),e.repoIntelligenceTrace===!0&&!process.env.KODAX_REPO_INTELLIGENCE_TRACE&&(process.env.KODAX_REPO_INTELLIGENCE_TRACE="1")}o(pe,"applyRepoIntelligenceRuntimeEnv");function de(e){e.verifierLog===!0&&!process.env.KODAX_VERIFIER_LOG&&(process.env.KODAX_VERIFIER_LOG="1")}o(de,"applyVerifierRuntimeEnv");function fe(e){e.stallLog===!0&&!process.env.KODAX_STALL_LOG&&(process.env.KODAX_STALL_LOG="1")}o(fe,"applyStallSidecarRuntimeEnv");function me(e){let t=e.fallbackProviders?.filter(n=>n.trim().length>0)??[];t.length>0&&!process.env.KODAX_FALLBACK_PROVIDERS&&(process.env.KODAX_FALLBACK_PROVIDERS=t.join(","))}o(me,"applyFallbackRuntimeEnv");function Xe(){ee();let e=v();return ue(e),pe(e),de(e),fe(e),me(e),te(e),T(e.locale),e}o(Xe,"prepareRuntimeConfig");function $e(e){let n={...v(),...e},i=$(n.extensions);i!==void 0&&(n.extensions=i);for(let r of Object.keys(e))e[r]===void 0&&delete n[r];s.mkdirSync(c.dirname(l),{recursive:!0}),s.writeFileSync(l,JSON.stringify(n,null,2))}o($e,"saveConfig");async function Fe(e){try{let{stdout:t}=await W("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(Fe,"getGitRoot");function ge(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(ge,"formatProviderSourceKind");function je(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${ge(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${le(e.reasoningCapability)}`]}o(je,"formatProviderCapabilityDetailLines");function Be(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(r=>({label:r.label,decision:ce(e,t,n,r.hints)})).filter(r=>r.decision!==null)}o(Be,"getProviderCommonPolicyScenarios");var N=.5,K=0,g={locked:!1,queue:[]};async function Ve(e){for(;g.locked;)await new Promise(t=>g.queue.push(t));g.locked=!0;try{let t=(Date.now()-K)/1e3;t<N&&await new Promise(i=>setTimeout(i,(N-t)*1e3));let n=await e();return K=Date.now(),n}finally{g.locked=!1;let t=g.queue.shift();t&&t()}}o(Ve,"rateLimitedCall");export{ve as a,X as b,Ie as c,l as d,Oe as e,Z as f,xe as g,te as h,oe as i,Ae as j,Re as k,re as l,se as m,ae as n,ke as o,ce as p,De as q,Me as r,le as s,Te as t,Ne as u,Ke as v,v as w,Xe as x,$e as y,Fe as z,ge as A,je as B,Be as C,Ve as D};