@kodax-ai/kodax 0.7.72 → 0.7.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -0
- package/README.md +48 -14
- package/README_CN.md +33 -10
- package/dist/chunks/{agent-YKGU4USA.js → agent-T6PGT6AU.js} +1 -1
- package/dist/chunks/argument-completer-QGMWA2C3.js +2 -0
- package/dist/chunks/{chunk-SQODXBLX.js → chunk-64M5HOCA.js} +1 -1
- package/dist/chunks/{chunk-PKQOEDHJ.js → chunk-6JTWXGVU.js} +217 -223
- package/dist/chunks/{chunk-IR5KIK7E.js → chunk-6RI2RBTF.js} +1 -1
- package/dist/chunks/chunk-AGDDM5AW.js +329 -0
- package/dist/chunks/chunk-BUPJGG3C.js +5 -0
- package/dist/chunks/chunk-EAD4SF3Z.js +413 -0
- package/dist/chunks/chunk-F7AIEHSS.js +46 -0
- package/dist/chunks/{chunk-E27LHEIP.js → chunk-GAFFYJU3.js} +1 -1
- package/dist/chunks/chunk-HVCNAZ52.js +365 -0
- package/dist/chunks/{chunk-MVARIMQV.js → chunk-M7FXNPWV.js} +2 -2
- package/dist/chunks/{chunk-44QXPEEE.js → chunk-MBAPT2R5.js} +1 -1
- package/dist/chunks/{chunk-WIBLZK4G.js → chunk-MLEAQTCD.js} +2 -2
- package/dist/chunks/{chunk-JSDLBXME.js → chunk-OG6DRNKV.js} +63 -63
- package/dist/chunks/{chunk-2RI252RN.js → chunk-PFH53O4M.js} +1 -1
- package/dist/chunks/chunk-V4F6IYNK.js +73 -0
- package/dist/chunks/chunk-WQ6PWGK5.js +320 -0
- package/dist/chunks/chunk-XXQLPTAN.js +78 -0
- package/dist/chunks/compaction-config-IHJBP4GO.js +2 -0
- package/dist/chunks/{construction-bootstrap-ZJPXUPXQ.js → construction-bootstrap-EGRUHKLP.js} +1 -1
- package/dist/chunks/dist-5N3I2RTW.js +2 -0
- package/dist/chunks/{dist-GOUP4YVE.js → dist-EVEJAII2.js} +1 -1
- package/dist/chunks/host-MECITNE3.js +2 -0
- package/dist/chunks/run-manager-AY7RQOWM.js +2 -0
- package/dist/chunks/{utils-OTT5CG5J.js → utils-2GAE4XIM.js} +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +5 -5
- package/dist/kodax_cli.js +1341 -1320
- package/dist/provider-capabilities.json +184 -5
- package/dist/runtime-worker.js +1227 -1216
- package/dist/sdk-a2a.d.ts +10 -10
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +13 -13
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +96 -30
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +8 -49
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +138 -16
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +99 -17
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +6 -6
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +10 -10
- package/dist/types-chunks/{base.d-Cz_rwpOi.d.ts → base.d-ChvpaKjZ.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-CHJO5y94.d.ts → bash-prefix-extractor.d-bApf5nGw.d.ts} +3 -3
- package/dist/types-chunks/{capability-learning.d-_lR0J4iR.d.ts → capability-learning.d-DPrYxRjF.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-DxtdE-GD.d.ts → capsule.d-CGWltwno.d.ts} +2 -2
- package/dist/types-chunks/{commands.d-DZxHzH5-.d.ts → commands.d-CEHGwRok.d.ts} +62 -6
- package/dist/types-chunks/{guardrail.d-DlpMnd-Y.d.ts → guardrail.d-CC4vAQl7.d.ts} +2 -1
- package/dist/types-chunks/{guardrail.d-auV61_h5.d.ts → guardrail.d-CXIPlWP3.d.ts} +10 -10
- package/dist/types-chunks/{public-api.d--IDNJsu1.d.ts → public-api.d-FBmX0kxo.d.ts} +4 -3
- package/dist/types-chunks/{run-manager.d-Bh50OdVl.d.ts → run-manager.d-DUNnJcpE.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-Cfw6NFu-.d.ts → sdk-session-XqacVOs8.d.ts} +3 -3
- package/dist/types-chunks/{resolver.d-ssgNSlrh.d.ts → side-query.d-DWTMsndP.d.ts} +68 -5
- package/dist/types-chunks/{types.d-DH1mvdcl.d.ts → types.d-BnPhGmar.d.ts} +3 -1
- package/dist/types-chunks/{types.d-Cqaw71Ax.d.ts → types.d-CSmF0t0n.d.ts} +6 -5
- package/dist/types-chunks/{types.d-EqQmHztg.d.ts → types.d-DKr6TCXL.d.ts} +16 -9
- package/dist/types-chunks/{types.d-CNZgY52F.d.ts → types.d-DgciGHoG.d.ts} +2 -2
- package/dist/types-chunks/{utils.d-gmn3c5U4.d.ts → utils.d-BPYX7-KN.d.ts} +94 -10
- package/docs/SDK_EMBEDDER_GUIDE.md +128 -21
- package/package.json +2 -2
- package/dist/chunks/argument-completer-QZETLNAB.js +0 -2
- package/dist/chunks/chunk-23X6REO4.js +0 -46
- package/dist/chunks/chunk-CLFP6UGU.js +0 -71
- package/dist/chunks/chunk-EDZ5KJFT.js +0 -5
- package/dist/chunks/chunk-GIK4SGAT.js +0 -364
- package/dist/chunks/chunk-GVWPHE23.js +0 -310
- package/dist/chunks/chunk-VDGCGOQH.js +0 -328
- package/dist/chunks/chunk-VVE3UM4F.js +0 -410
- package/dist/chunks/chunk-ZJIMT5I3.js +0 -78
- package/dist/chunks/compaction-config-TWCDFLX6.js +0 -2
- package/dist/chunks/dist-JT4ATXVM.js +0 -2
- package/dist/chunks/host-SVEDZUC5.js +0 -2
- package/dist/chunks/run-manager-RX42UNEM.js +0 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{a as i}from"./chunk-ONUPGMER.js";import{AsyncLocalStorage as qo}from"node:async_hooks";var He=new qo;function Yo(e,t,n){if(!e||!t)throw new Error("Provider credential scope requires non-empty values.");return He.run({provider:e,credential:t},n)}i(Yo,"runWithProviderCredential");function Qo(e){let t=He.getStore();return t?.provider===e?t.credential:void 0}i(Qo,"getScopedProviderCredential");function fe(e,t){let n=He.getStore();return n?n.provider===e?n.credential:void 0:t}i(fe,"resolveProviderCredential");function Zo(e){let t=He.getStore()?.credential;return t?Me(e,t,new WeakMap):e}i(Zo,"redactScopedProviderCredential");function Me(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let o=n.get(e);if(o!==void 0)return o;if(e instanceof Error){let s=new Error(Me(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=Me(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(Me(a,t,n));return s}let r={};n.set(e,r);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let u=s.split(t).join("[REDACTED_CREDENTIAL]");r[u]=Me(a.value,t,n)}return r}i(Me,"redactCredentialValue");var Q=class extends Error{static{i(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}},R=class extends Q{static{i(this,"KodaXProviderError")}provider;constructor(t,n){super(t,"PROVIDER_ERROR"),this.provider=n,this.name="KodaXProviderError"}},Re=class extends Q{static{i(this,"KodaXRateLimitError")}retryAfter;constructor(t,n){super(t,"RATE_LIMIT_ERROR"),this.retryAfter=n,this.name="KodaXRateLimitError"}},$t=class extends Q{static{i(this,"KodaXNetworkError")}isTimeout;constructor(t,n=!1){super(t,"NETWORK_ERROR"),this.isTimeout=n,this.name="KodaXNetworkError"}},Je=class extends R{static{i(this,"KodaXReasoningEffortRejectedError")}rejectedEffort;model;constructor(t,n,o,r){super(t,n),this.rejectedEffort=o,this.model=r,this.name="KodaXReasoningEffortRejectedError"}},Nt=class extends Q{static{i(this,"KodaXToolCallIdError")}constructor(t){super(t,"TOOL_CALL_ID_ERROR"),this.name="KodaXToolCallIdError"}};var Lt=32768,er=32e3,tr=64e3,nr=.5;function Ae(e,t,n={}){if(e===void 0)return;let o=n.allowZero===!0;if(!Number.isFinite(e)||(o?e<0:e<=0)){let r=o?"a non-negative finite number":"a positive finite number";throw new Error(`${t} must be ${r}`)}return e===0?0:Math.max(1,Math.floor(e*1e3))}i(Ae,"timeoutSecToMs");function or(e){if(e===void 0||e.trim().length===0)return;let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.max(1,Math.floor(t*1e3))}i(or,"parseTimeoutSecEnvMs");function rr(e){if(!e)return;let t={requestTimeoutMs:Ae(e.requestTimeoutSec,"timeouts.llm.requestTimeoutSec"),streamIdleTimeoutMs:Ae(e.streamIdleTimeoutSec,"timeouts.llm.streamIdleTimeoutSec",{allowZero:!0}),chunkTimeoutMs:Ae(e.chunkTimeoutSec,"timeouts.llm.chunkTimeoutSec"),maxRetryDelayMs:Ae(e.maxRetryDelaySec,"timeouts.llm.maxRetryDelaySec")};return Object.values(t).some(o=>o!==void 0)?t:void 0}i(rr,"resolveLlmTimeoutConfig");function qe(e,t){return`${e}/${t??""}`}i(qe,"capabilityCacheKey");function Bt(e,t){if(t.length===0)return e;let n=new Set(t),o=e.defaultEffort!==void 0&&n.has(e.defaultEffort);return{...e,...o?{defaultEffort:void 0}:{},supportedEfforts:e.supportedEfforts?.filter(r=>!n.has(r.value)),localRejectEfforts:Array.from(new Set([...e.localRejectEfforts??[],...t]))}}i(Bt,"narrowReasoningProfile");function ir(e,t,n){return e[qe(t,n)]?.rejected??[]}i(ir,"getRejectedEfforts");function sr(e,t,n,o,r,s){let a=qe(t,n),u=e[a],l=u?.rejected.includes(o)?u.rejected:[...u?.rejected??[],o];return{...e,[a]:{rejected:l,source:r,updatedAt:s}}}i(sr,"addRejectedEffort");function ar(e,t,n){if(!t)return{};let o={...e};return delete o[qe(t,n)],o}i(ar,"removeCacheEntry");function ur(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(!o||typeof o!="object")continue;let r=o,s=Array.isArray(r.rejected)?r.rejected.filter(l=>typeof l=="string"):[],a=r.source==="probed"?"probed":"observed",u=typeof r.updatedAt=="string"?r.updatedAt:"";t[n]={rejected:s,source:a,updatedAt:u}}return t}i(ur,"sanitizeCapabilityCache");var cr=["off","auto","quick","balanced","deep"],de=["auto","none","low","medium","high"],In={low:6e3,medium:1e4,high:2e4},On=4096,jt=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Enable thinking"},{value:"medium",description:"Enable thinking",isDefault:!0},{value:"high",description:"Enable thinking"},{value:"xhigh",description:"Enable thinking"},{value:"max",description:"Enable thinking"}],Ft=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Alias to high"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning",isDefault:!0},{value:"xhigh",description:"Alias to max"},{value:"max",description:"Maximum reasoning"}],lr=[{value:"low",description:"Thinking is always on"},{value:"medium",description:"Thinking is always on"},{value:"high",description:"Thinking is always on",isDefault:!0},{value:"xhigh",description:"Thinking is always on"},{value:"max",description:"Thinking is always on"}];function Qe(e,t={}){return{...fr(e),...t,reasoningPreset:e}}i(Qe,"createReasoningProfileFromPreset");function fr(e){switch(e){case"zai-glm-5.2":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:Ft,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-openai":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ft,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-anthropic":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ft,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"zai-glm-toggle":case"deepseek-toggle":case"kimi-hybrid-toggle":case"mimo-v2.5-toggle":case"generic-thinking-toggle":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",supportedEfforts:jt,disabledEfforts:["none","minimal"],supportsDisabledThinking:!0};case"kimi-k3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:[{value:"none"},{value:"low",isUserVisible:!1},{value:"high",isUserVisible:!1},{value:"max",isDefault:!0}],effortAliases:{minimal:"low",minimum:"low",light:"low",medium:"high",xhigh:"max",ultra:"max"},disabledEfforts:["none"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"kimi-k2.7-code":case"minimax-m2-always":return{reasoningPreset:e,effortStrategy:"prompt-only",defaultEffort:"high",supportedEfforts:lr,localRejectEfforts:["none","minimal"]};case"minimax-m3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"anthropic-adaptive",supportedEfforts:jt,disabledEfforts:["none","minimal"],supportsAdaptiveThinking:!0,supportsDisabledThinking:!0};case"qwen-hybrid-thinking":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"provider-budget",defaultEffort:"medium",supportedEfforts:jt,budgetByEffort:{low:6e3,medium:1e4,high:16e3,xhigh:24e3,max:32e3},disabledEfforts:["none","minimal"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"claude-adaptive-xhigh":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"xhigh"},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"claude-adaptive-max":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"anthropic-budget":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"anthropic-budget",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"}],budgetByEffort:{low:6e3,medium:1e4,high:16e3},disabledEfforts:["none"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"openai-chat-reasoning":case"openai-responses-reasoning":return{reasoningPreset:e,effortStrategy:e==="openai-chat-reasoning"?"openai-chat-effort":"openai-responses-effort",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],disabledEfforts:["none"],supportsReasoningEffort:!0,supportsReasoningSummary:!0,supportsEncryptedReasoningReplay:!0};case"codex-cli-effort":return{reasoningPreset:e,effortStrategy:"codex-cli-config",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],allowCustomEffort:!0,supportsReasoningEffort:!0};case"none":return{reasoningPreset:e,effortStrategy:"none",thinkingStrategy:"none"}}}i(fr,"createBaseReasoningProfileFromPreset");function Ut(e){return e.reasoningCapability?e.reasoningCapability:e.supportsThinking?"native-toggle":"prompt-only"}i(Ut,"getReasoningCapability");function pe(e){return Ze(e).enabled}i(pe,"isReasoningEnabled");function Ze(e){if(typeof e=="boolean")return{enabled:e,effort:e?"auto":"none",effortSource:"legacy",taskType:"unknown",executionMode:"implementation"};let t=e?.effort?$e(e.effort):void 0,n=t??(e?.enabled===!0?"auto":"none");return{enabled:n!=="none",effort:n,effortSource:t!==void 0?"explicit":e===void 0?"omitted":"legacy",taskType:e?.taskType??"unknown",executionMode:e?.executionMode??"implementation"}}i(Ze,"normalizeReasoningRequest");function $e(e){let t=e.trim().toLowerCase();if(!t)throw new Error("Reasoning effort cannot be empty.");if(/\s/.test(t))throw new Error(`Reasoning effort cannot contain whitespace: "${e}".`);return t==="off"?"none":t}i($e,"normalizeReasoningEffortValue");function $n(e){switch(e){case"off":return"none";case"auto":return"auto";case"quick":return"low";case"balanced":return"medium";case"deep":return"high"}}i($n,"mapLegacyReasoningModeToEffortIntent");function dr(e){switch(e){case"none":return"off";case"auto":return"auto";case"low":return"quick";case"medium":return"balanced";case"high":return"deep";default:return}}i(dr,"effortToLegacyReasoningMode");function Nn(e){let t=e?.trim();if(!t)return{kind:"unset"};let n=$e(t);return n==="auto"||n==="unset"?{kind:"clear"}:{kind:"value",value:n}}i(Nn,"parseReasoningEffortEnv");function Ne(e){let t=Nn(e.envEffort),n=[];De(n,e.explicitEffort,"explicit",!0),t.kind==="value"&&n.push({value:t.value,source:"env",isExplicit:!0}),De(n,e.sessionEffort,"session",!1),e.legacyReasoningMode?n.push({value:$n(e.legacyReasoningMode),source:"legacy",isExplicit:!1}):e.thinking!==void 0&&n.push({value:e.thinking?"auto":"none",source:"legacy",isExplicit:!1}),De(n,e.modelDefaultEffort??e.capability?.defaultEffort??Ie(e.capability),"model-default",!1),De(n,e.providerDefaultEffort,"provider-default",!1),De(n,e.fallbackEffort??Oe(e.capability),"fallback",!1);let o=n[0]??{value:"none",source:"fallback",isExplicit:!1};if(o.value==="auto")return{configuredEffort:"auto",effectiveEffort:gr(n.slice(1),e.capability),source:o.source,isExplicit:o.isExplicit,diagnostics:[]};let r=Ln(o.value,e.capability,o.isExplicit);return{configuredEffort:o.value,effectiveEffort:r,source:o.source,isExplicit:o.isExplicit,diagnostics:[]}}i(Ne,"resolveReasoningEffort");function pr(e){let t=e.currentEffort?$e(e.currentEffort):void 0;if(t&&Bn(t,e.capability))return{effectiveEffort:Ye(t,e.capability),preserved:!0};let n=e.capability?.defaultEffort??Ie(e.capability)??Kt(e.capability)??Oe(e.capability),o=n&&Ye(n,e.capability);return t?{effectiveEffort:o,preserved:!1,diagnostic:o?`Effort ${t} is not supported by the selected model; using ${o}.`:`Effort ${t} is not supported by the selected model; clearing effort.`}:{effectiveEffort:o,preserved:!1}}i(pr,"resolveReasoningEffortForModelSwitch");function De(e,t,n,o){if(t===void 0)return;let r=$e(t);e.push({value:r,source:n,isExplicit:o})}i(De,"pushEffortCandidate");function gr(e,t){let n=e.find(o=>o.value!=="auto");return n?Ln(n.value,t,n.isExplicit):Ie(t)??Oe(t)}i(gr,"resolveAutoEffectiveEffort");function Ln(e,t,n){if(t?.localRejectEfforts?.includes(e)){if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return Ie(t)??Kt(t)??Oe(t)??e}if(e==="none")return e;if(Bn(e,t))return Ye(e,t);if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return Ie(t)??Kt(t)??Oe(t)??e}i(Ln,"validateReasoningEffort");function Ye(e,t){return t?.effortAliases?.[e]??e}i(Ye,"applyEffortAlias");function Bn(e,t){if(t?.localRejectEfforts?.includes(e))return!1;if(e==="auto"||e==="none"||t?.allowCustomEffort===!0)return!0;let n=mr(t);return n.length===0?de.includes(e):n.includes(e)||n.includes(Ye(e,t))}i(Bn,"isSupportedReasoningEffort");function mr(e){return e?.supportedEfforts?.map(t=>t.value)??[]}i(mr,"getSupportedEffortValues");function Ie(e){return e?.supportedEfforts?.find(t=>t.isDefault)?.value}i(Ie,"getDefaultPresetValue");function Kt(e){let t=e?.supportedEfforts?.filter(hr).map(n=>n.value);if(!(!t||t.length===0))return t[Math.floor((t.length-1)/2)]}i(Kt,"getMiddleVisiblePresetValue");function hr(e){return e.isUserVisible!==!1}i(hr,"isUserVisiblePreset");function Oe(e){if(!e||e.effortStrategy==="none"||e.effortStrategy==="prompt-only")return"none";if(!(e.effortStrategy==="anthropic-output-effort"&&e.thinkingStrategy==="anthropic-adaptive"))return"medium"}i(Oe,"getFallbackEffortForCapability");function yr(e){switch(e){case"quick":return"low";case"balanced":case"auto":return"medium";case"deep":return"high";default:return"off"}}i(yr,"getDefaultThinkingDepthForMode");function se(e){switch(e){case"none":return"off";case"low":return"low";case void 0:case"medium":case"auto":return"medium";default:return"high"}}i(se,"effortToThinkingDepth");function ae(e,t,n="unknown"){if(t==="off")return 0;let o={...In,...e.defaultThinkingBudgets??{}},s=e.taskBudgetOverrides?.[n]?.[t]??o[t];return e.thinkingBudgetCap?Math.min(s,e.thinkingBudgetCap):s}i(ae,"resolveThinkingBudget");function ue(e,t,n=On){let o=Math.max(1024,t-n);return Math.max(1024,Math.min(e,o))}i(ue,"clampThinkingBudget");function Wt(e){switch(e){case"low":return"low";case"medium":return"medium";case"high":return"high";default:return}}i(Wt,"mapDepthToOpenAIReasoningEffort");function jn(e){if(!e||typeof e!="object")return;let t=e,n=t.status??t.statusCode??t.code;return typeof n=="number"&&Number.isInteger(n)?n:typeof n=="string"&&/^\d{3}$/.test(n)?Number(n):jn(t.cause)}i(jn,"getStatus");function vr(e){if(e instanceof Error)return e.message.toLowerCase();if(typeof e=="string")return e.toLowerCase();if(e&&typeof e=="object"){let t=e;return[t.message,t.error,t.detail,t.body].filter(o=>typeof o=="string").join(" ").toLowerCase()}return""}i(vr,"getMessage");var kr=["reasoning_effort","reasoning effort","reasoninglevel","reasoning_level","thinking"],Er=["unsupported","not supported","invalid","does not support","is not one of","not allowed","unknown","unexpected","unrecognized"],br=["minimal","none","low","medium","high","xhigh","max"];function xr(e,t){for(let n of br)if(new RegExp(`['"\`]${n}['"\`]`).test(e))return n;return t}i(xr,"extractRejectedEffort");function zt(e,t){let n=jn(e);if(n!==400&&n!==422)return null;let o=vr(e);if(!o)return null;let r=kr.some(u=>o.includes(u)),s=Er.some(u=>o.includes(u));if(!r||!s)return null;let a=xr(o,t);return a?{rejectedEffort:a}:null}i(zt,"classifyReasoningEffortRejection");function Fn(e,t){if(!e)return;if(typeof e.get=="function")return e.get(t)??void 0;let n=e,o=t.toLowerCase(),r=n[t]??n[o]??n[o.replace(/\b\w/g,s=>s.toUpperCase())];if(r!==void 0)return Array.isArray(r)?r[0]:r}i(Fn,"readHeader");function Kn(e){if(!e)return;let t=e.trim();if(t.length===0)return;let n=Number(t);if(!(!Number.isFinite(n)||n<=0))return n}i(Kn,"parsePositiveNumber");function _r(e,t){if(!e)return;let n=e.trim();if(n.length===0)return;let o=Date.parse(n);if(!Number.isFinite(o))return;let r=o-t;return r>0?r:void 0}i(_r,"parseHttpDate");function et(e,t){let n=t.baseBackoffMs??1e3,o=t.maxBackoffMs??3e4,r=t.maxHeaderWaitMs??12e4,s=t.now?t.now():Date.now(),a=Kn(Fn(e,"retry-after-ms"));if(a!==void 0){let m=Math.min(a,r);return{type:"header",waitMs:Math.round(m),source:"retry-after-ms",cappedFromHeader:m!==a}}let u=Fn(e,"retry-after");if(u!==void 0&&u.trim().length>0){let m=Kn(u);if(m!==void 0){let b=m*1e3,d=Math.min(b,r);return{type:"header",waitMs:Math.round(d),source:"retry-after-seconds",cappedFromHeader:d!==b}}let p=_r(u,s);if(p!==void 0){let b=Math.min(p,r);return{type:"header",waitMs:Math.round(b),source:"retry-after-date",cappedFromHeader:b!==p}}}let l=n*Math.pow(2,Math.max(0,t.attempt)),f=Math.min(l,o),g=t.withJitter!==!1?Math.random()*.25*f:0;return{type:"backoff",waitMs:Math.round(f+g),source:"exponential-backoff",attempt:t.attempt}}i(et,"parseRetryAfter");function tt(e){if(!e||typeof e!="object")return;let t=e;return t.headers??t.response?.headers??t.cause?.headers??t.cause?.response?.headers}i(tt,"extractHeadersFromError");import{AsyncLocalStorage as Cr}from"node:async_hooks";var Un=new Cr,Wn=8,zn=32;function Tr(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}i(Tr,"parsePositiveInt");function Pr(){let e=ge()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:Tr(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??Wn;return Math.max(1,Math.min(zn,t))}i(Pr,"resolveWorkflowMaxConcurrency");function Sr(e,t){return Un.run(e,t)}i(Sr,"runWithScopedConfig");function ge(){return Un.getStore()}i(ge,"getRunScopedConfig");var ce={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},Xn={...ce,multimodalSupport:"image-input"},Le={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},Vn={...Le,multimodalSupport:"image-input"};function nt(e){return{transport:e.transport,conversationSemantics:e.conversationSemantics,mcpSupport:e.mcpSupport,contextFidelity:e.contextFidelity??"full",toolCallingFidelity:e.toolCallingFidelity??"full",sessionSupport:e.sessionSupport??"full",longRunningSupport:e.longRunningSupport??"full",multimodalSupport:e.multimodalSupport??"none",evidenceSupport:e.evidenceSupport??"full"}}i(nt,"normalizeCapabilityProfile");function G(e){return{...nt(e)}}i(G,"cloneCapabilityProfile");function wr(e){if(!e)return;let t=parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}i(wr,"parseEnvInt");function Mr(e){switch(e.reasoningPreset){case"zai-glm-5.2":case"deepseek-v4-openai":case"deepseek-v4-anthropic":case"qwen-hybrid-thinking":return!0;default:break}return e.effortStrategy==="provider-budget"}i(Mr,"shouldLowerAutoReasoningEffort");function rt(){return new DOMException("Request aborted","AbortError")}i(rt,"abortError");function Rr(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(rt()):new Promise((n,o)=>{let r,s=i(()=>{t&&t.removeEventListener("abort",a)},"cleanup"),a=i(()=>{r&&clearTimeout(r),s(),o(rt())},"onAbort");t&&t.addEventListener("abort",a,{once:!0}),r=setTimeout(()=>{s(),n()},e)})}i(Rr,"waitForRetryDelay");function Xt(e){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="string"&&/^\d{3}$/.test(e))return Number(e)}i(Xt,"normalizeHttpStatus");function Gn(e){if(!e||typeof e!="object")return;let t=e;return Xt(t.status)??Xt(t.statusCode)??Xt(t.code)??Gn(t.cause)}i(Gn,"extractHttpStatus");function Hn(e){if(!e||typeof e!="object")return"";let t=e;return typeof t.code=="string"?t.code:Hn(t.cause)}i(Hn,"extractErrorCode");function ot(e){if(e instanceof Error)return e.message.toLowerCase();if(e&&typeof e=="object"){let t=e.message;if(typeof t=="string")return t.toLowerCase()}return String(e).toLowerCase()}i(ot,"getErrorMessage");var J=class{static{i(this,"KodaXBaseProvider")}maxOutputTokensOverride;suppressReasoningEffort=!1;setMaxOutputTokensOverride(t){this.maxOutputTokensOverride=t}getEffectiveMaxOutputTokens(t){if(this.maxOutputTokensOverride!==void 0)return this.maxOutputTokensOverride;let n=ge()?.maxOutputTokens,o=(typeof n=="number"&&Number.isFinite(n)&&n>0?n:void 0)??wr(process.env.KODAX_MAX_OUTPUT_TOKENS);if(o!==void 0)return o;let r=this.getModelDescriptor(t)?.maxOutputTokens;return r!==void 0?r:this.config.maxOutputTokens??32768}getStreamMaxDurationMs(t){let n=this.getModelDescriptor(t)?.streamMaxDurationMs;return n!==void 0?n:this.config.streamMaxDurationMs}getEffectiveReplayReasoningContent(t){let n=this.getModelDescriptor(t)?.replayReasoningContent;return n!==void 0?n:this.config.replayReasoningContent??!1}getEffectiveStrictThinkingSignature(t){let n=this.getModelDescriptor(t)?.strictThinkingSignature;return n!==void 0?n:this.config.strictThinkingSignature??!1}getEffectiveThinkingBudgetCap(t){return this.getModelDescriptor(t)?.thinkingBudgetCap??this.config.thinkingBudgetCap}supportsNonStreamingFallback(){return!1}async complete(t,n,o,r,s,a){throw new R(`${this.name} does not support non-streaming fallback`)}isConfigured(){return fe(this.name,process.env[this.config.apiKeyEnv])!==void 0}async verifyCredential(t){return{ok:!1,error:"unsupported",strategy:this.config.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider class "${this.name}" does not implement verifyCredential()`}}getModel(){return this.config.model}getAvailableModels(){return this.config.models?.length?[...new Set([this.config.model,...this.config.models.map(t=>t.id)])]:[this.config.model]}getModelDescriptor(t){let n=t??this.config.model,o=this.config.models?.find(r=>r.id===n);if(o){let r=o.wireModel?this.config.models?.find(s=>s.id===o.wireModel):void 0;return r?{...r,...o}:o}if(n===this.config.model)return{id:this.config.model}}getWireModelId(t){let n=t??this.config.model;return this.getModelDescriptor(n)?.wireModel??n}getBaseUrl(){return this.config.baseUrl}getApiKeyEnv(){return this.config.apiKeyEnv}getCapabilityProfile(){return G(this.config.capabilityProfile??ce)}getConfiguredReasoningCapability(t){let n=this.getModelDescriptor(t);return n?.reasoningCapability?n.reasoningCapability:Ut(this.config)}getReasoningCapability(t){return this.getConfiguredReasoningCapability(t)}getReasoningProfile(t){return this.getModelDescriptor(t)?.reasoningProfile??this.config.reasoningProfile}shouldFallbackForReasoningError(t,...n){let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase(),s=n.map(u=>u.toLowerCase()).some(u=>o.includes(u)),a=o.includes("parameter")||s;return o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported")&&a}shouldFallbackForSpecificReasoningError(t,...n){let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.map(a=>a.toLowerCase()).some(a=>o.includes(a))?o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported"):!1}shouldFallbackForForcedToolChoiceError(t){let n=ot(t);return(n.includes("tool_choice")||n.includes("tool choice")||n.includes("toolchoice"))&&(n.includes("unknown parameter")||n.includes("invalid parameter")||n.includes("unsupported")||n.includes("incompatible"))?!0:this.isServerError(t)}isServerError(t){let n=Gn(t);if(n!==void 0&&n>=500&&n<=599)return!0;let o=ot(t);return o.includes("internal server error")||o.includes("server error")}getReasoningFallbackChain(t){switch(t){case"native-budget":return["native-budget","native-toggle","none"];case"native-effort":return["native-effort","none"];case"native-adaptive":return["native-adaptive","none"];case"native-toggle":return["native-toggle","none"];default:return["none"]}}getContextWindow(){return this.getEffectiveContextWindow()}getEffectiveContextWindow(t){let n=this.getModelDescriptor(t)?.contextWindow;return n!==void 0?n:this.config.contextWindow??2e5}getApiKey(){let t=fe(this.name,process.env[this.config.apiKeyEnv]);if(!t)throw new Error(`${this.config.apiKeyEnv} not set`);return t}shouldLogStreamDiagnostics(){return!!process.env.KODAX_DEBUG_STREAM}logStreamDiagnostic(...t){this.shouldLogStreamDiagnostics()&&console.error(...t)}normalizeReasoning(t){return Ze(t)}validateExplicitReasoningEffort(t,n){if(t.effortSource!=="explicit")return;let o=t.effort;if(!o||o==="auto")return;let r=de.includes(o),s=this.getReasoningProfile(n);if(!s){if(o==="none"||r)return;let c=n?`/${n}`:"";throw new R(`${this.name}${c} does not advertise provider-specific reasoning effort "${o}". Supported stable efforts: ${de.join(", ")}.`,this.name)}if(s.localRejectEfforts?.includes(o)){let c=n?`/${n}`:"";throw new R(`${this.name}${c} does not support reasoning effort "${o}".`,this.name)}if(o==="none"||s.disabledEfforts?.includes(o)||s.allowCustomEffort)return;let a=s.supportedEfforts?.map(c=>c.value)??[],u=s.effortAliases?.[o]??o;if(a.includes(o)||a.includes(u)||a.length===0&&r)return;let l=n?`/${n}`:"",f=a.length>0?a.join(", "):de.join(", ");throw new R(`${this.name}${l} does not support reasoning effort "${o}". Supported efforts: ${f}.`,this.name)}resolveReasoningProfileIntent(t,n,o){let r=t.effort;if(r&&n.localRejectEfforts?.includes(r)){if(t.effortSource==="explicit"){let s=o?`/${o}`:"";throw new R(`${this.name}${s} does not support reasoning effort "${r}".`,this.name)}if(n.defaultEffort)return{disabled:!1,effort:n.defaultEffort,requestedEffort:r}}if(!t.enabled||r==="none"||r!==void 0&&n.disabledEfforts?.includes(r))return{disabled:!0,requestedEffort:r};if(!r||r==="auto"){if(Mr(n)){let s=Ne({capability:n,explicitEffort:r??"auto"}).effectiveEffort;return s==="none"||s!==void 0&&n.disabledEfforts?.includes(s)?{disabled:!0,effort:s,requestedEffort:r}:{disabled:!1,effort:s,requestedEffort:r}}return{disabled:!1,requestedEffort:r}}return{disabled:!1,effort:n.effortAliases?.[r]??r,requestedEffort:r}}onStaleConnection(){}isRateLimitError(t){if(!(t instanceof Error))return!1;let n=t.message.toLowerCase();return["rate","limit","\u901F\u7387","\u9891\u7387","1302","429","too many","overload","overwhelmed","503","529","busy"].some(o=>n.includes(o))}classifyRateLimitReason(t){let n=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.includes("overload")||n.includes("overwhelmed")||n.includes("503")||n.includes("529")||n.includes("busy")?"overloaded":"rate-limit"}extractRetryAfterMs(t){let n=tt(t);if(!n)return;let o=et(n,{attempt:0,withJitter:!1});return o.type==="header"?o.waitMs:void 0}parseContextOverflow(t){let n=ot(t),o=[{regex:/(\d[\d,]*)\s*tokens?.*?(\d[\d,]*)\s*(?:maximum|limit|context)/i,inputGroup:1,limitGroup:2},{regex:/maximum.*?(\d[\d,]*)\s*tokens?.*?requested.*?(\d[\d,]*)/i,inputGroup:2,limitGroup:1},{regex:/exceeds?\s+.*?(\d[\d,]*)\s*.*?(?:limit|max|context|上限).*?(\d[\d,]*)/i,inputGroup:1,limitGroup:2}];for(let r of o){let s=n.match(r.regex);if(s){let a=Number(s[r.inputGroup].replace(/,/g,"")),u=Number(s[r.limitGroup].replace(/,/g,""));return Math.max(3e3,u-a-1e3)}}}isContextOverflowError(t){let n=ot(t);return n.includes("prompt is too long")||n.includes("prompt too long")||n.includes("context length")||n.includes("context_length_exceeded")||n.includes("context window")||n.includes("context limit")||n.includes("\u4E0A\u4E0B\u6587\u957F\u5EA6")}async withRateLimit(t,n,o=3,r,s,a){let u=!1;this.suppressReasoningEffort=!1;for(let l=0;l<o;l++)try{let f=await t();return this.maxOutputTokensOverride=void 0,this.suppressReasoningEffort=!1,f}catch(f){if(this.isContextOverflowError(f)&&!this.maxOutputTokensOverride){let c=this.parseContextOverflow(f);if(c){this.maxOutputTokensOverride=c,r?.(l+1,o,0);continue}}if(this.isRateLimitError(f)){if(l===o-1)throw new Re(`API rate limit exceeded after ${o} retries. Please wait and try again later.`,6e4);let c=tt(f)??{},g=et(c,{attempt:l,baseBackoffMs:500,maxBackoffMs:32e3,withJitter:!0}),m=g.waitMs,p=this.classifyRateLimitReason(f);if(s?.({provider:this.name,waitMs:m,reason:p,source:g.source,attempt:l+1,maxAttempts:o}),r?r(l+1,o,m):s||console.log(`[Rate Limit] Retrying in ${m/1e3}s (${l+1}/${o})...`),n?.aborted||(await Rr(m,n),n?.aborted))throw rt();continue}if(a&&!u){let c=zt(f,a.effort);if(c){a.onRejected?.({provider:this.name,model:a.model,effort:c.rejectedEffort}),this.suppressReasoningEffort=!0,u=!0;continue}}if(a&&u){let c=zt(f,a.effort);if(c)throw this.suppressReasoningEffort=!1,new Je(`${this.name} rejected reasoning effort "${c.rejectedEffort}" even after dropping it.`,this.name,c.rejectedEffort,a.model)}if(f instanceof Error){if((f.name==="AbortError"||f.name==="APIUserAbortError")&&n?.aborted)throw f.name==="AbortError"?f:new DOMException(f.message||"Request aborted","AbortError");let c=Hn(f);throw(c==="ECONNRESET"||c==="EPIPE")&&this.onStaleConnection(),new R(`${this.name} API error: ${f.message}`,this.name)}throw f}throw new Q("Unexpected end of withRateLimit")}};import Br from"@anthropic-ai/sdk";import{parse as Ar}from"partial-json";function me(e){if(!e)return{value:{},salvaged:!1};try{let t=JSON.parse(e);return{value:t&&typeof t=="object"&&!Array.isArray(t)?t:{},salvaged:!1}}catch{}try{let t=Ar(e);return process.env.KODAX_DEBUG_TOOL_STREAM&&console.warn("[Tool Block Salvaged] partial JSON recovered, rawLength=",e.length),{value:t&&typeof t=="object"&&!Array.isArray(t)?t:{},salvaged:!0}}catch{return{value:{},salvaged:!0}}}i(me,"parseToolInputWithSalvageTracked");function Dr(e){return me(e).value}i(Dr,"parseToolInputWithSalvage");var Ir={max_tokens:"truncated",length:"truncated",model_context_window_exceeded:"truncated",end_turn:"end",stop:"end",stop_sequence:"end",tool_use:"tool",tool_calls:"tool",function_call:"tool",pause_turn:"paused",refusal:"refused",content_filter:"refused"};function Jn(e){return e==null?"unknown":Ir[e.trim().toLowerCase()]??"unknown"}i(Jn,"classifyStopReason");function he(e){let t=Jn(e);return t==="end"||t==="tool"||t==="paused"}i(he,"isCleanStop");async function ye(e){if(e.strategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:"Provider does not support credential verification"};let t=e.runners.find(f=>f.strategy===e.strategy);if(!t)return{ok:!1,error:"unsupported",strategy:e.strategy,durationMs:0,approxTokensSpent:0,message:`verifyStrategy="${e.strategy}" is not implemented for this provider's base class`};if(e.signal?.aborted)return{ok:!1,error:"unknown",strategy:e.strategy,durationMs:0,approxTokensSpent:0,message:"caller aborted before verifyCredential started"};let n=new AbortController,o=e.timeoutMs??8e3,r,s=i(f=>{r||(r=f),n.abort()},"recordAbort"),a=setTimeout(()=>s("timeout"),o),u=i(()=>s("parent"),"onParentAbort");e.signal&&e.signal.addEventListener("abort",u,{once:!0});let l=Date.now();try{return await t.run(n.signal),{ok:!0,strategy:e.strategy,durationMs:Date.now()-l,approxTokensSpent:t.approxTokensSpent}}catch(f){return Vt(f,{strategy:e.strategy,durationMs:Date.now()-l,approxTokensSpent:0,abortCause:r,providerName:e.providerName})}finally{clearTimeout(a),e.signal&&e.signal.removeEventListener("abort",u)}}i(ye,"runVerifyCredential");function Or(e){return e.replace(/\bsk-[A-Za-z0-9_-]{6,}/g,"sk-***")}i(Or,"redactKeyMaterial");function Vt(e,t){let n=e,o=n.status??n.statusCode??n.response?.status,r=Or(String(n.message??e)).slice(0,240),s=n.cause?.code??n.code,a=n.constructor?.name??"",u;return t.abortCause==="timeout"?u="timeout":t.abortCause==="parent"?u="unknown":a==="AuthenticationError"||a==="PermissionDeniedError"||o===401||o===403?u="unauthorized":o===429?u="rate_limited":o===400&&t.strategy==="count-tokens"&&t.providerName==="kimi-code"?u="unauthorized":o!==void 0&&o>=500&&o<600?u="server_error":s!==void 0&&/ENOTFOUND|ECONNREFUSED|ECONNRESET|EAI_AGAIN|EPIPE|ETIMEDOUT|ENETUNREACH|ENETDOWN|EHOSTUNREACH/i.test(s)?u="network":/timeout/i.test(r)?u="timeout":u="unknown",{ok:!1,error:u,status:o,message:r,durationMs:t.durationMs,approxTokensSpent:t.approxTokensSpent,strategy:t.strategy}}i(Vt,"classifyVerifyError");function Gt(e,t){let n=e[e.length-1];if(n&&ve(n)&&n.hint===t)return e;let o=t?{type:"cache-boundary",hint:t}:{type:"cache-boundary"};return[...e,o]}i(Gt,"insertCacheBoundary");function ve(e){if(typeof e!="object"||e===null||e.type!=="cache-boundary")return!1;let t=Object.keys(e);return t.length<=2&&t.every(n=>n==="type"||n==="hint")}i(ve,"isCacheBoundary");function Ht(e,t){let n=[];for(let o of e){if(ve(o)){if(t==="attach"&&n.length>0){let r=n[n.length-1];n[n.length-1]={...r,cache_control:{type:"ephemeral"}}}continue}n.push(o)}return n}i(Ht,"lowerCacheBoundaries");function Be(e){return e.filter(t=>!ve(t))}i(Be,"stripCacheBoundaries");import{readFile as $r}from"node:fs/promises";import Nr from"node:path";var Lr={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"};function it(e,t){return t??Lr[Nr.extname(e).toLowerCase()]??"image/png"}i(it,"resolveImageMediaType");async function st(e){return(await $r(e)).toString("base64")}i(st,"readImageFileAsBase64");async function qn(e,t){let n=it(e,t),o=await st(e);return`data:${n};base64,${o}`}i(qn,"buildImageDataUrl");var jr="KodaX",Fr="effort-2025-11-24";function Yn(e,t){if(t===void 0||t.length===0)return e;let n={type:"text",text:t},o=e.at(-1);if(o?.role!=="user")return[...e,{role:"user",content:[n]}];let r=typeof o.content=="string"?[{type:"text",text:o.content},n]:[...o.content,n];return[...e.slice(0,-1),{...o,content:r}]}i(Yn,"appendAnthropicEphemeralSuffix");function Kr(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":jr}}i(Kr,"getAnthropicCompatDefaultHeaders");function Jt(e,t){if(!e)return t;let n=e.input_tokens!==void 0&&e.input_tokens!==null||e.cache_creation_input_tokens!==void 0&&e.cache_creation_input_tokens!==null||e.cache_read_input_tokens!==void 0&&e.cache_read_input_tokens!==null,o=typeof e.input_tokens=="number"?e.input_tokens:n?0:t?.inputTokens??0,r=typeof e.cache_creation_input_tokens=="number"?e.cache_creation_input_tokens:n?0:t?.cachedWriteTokens??0,s=typeof e.cache_read_input_tokens=="number"?e.cache_read_input_tokens:n?0:t?.cachedReadTokens??0,a=typeof e.output_tokens=="number"?e.output_tokens:t?.outputTokens??0,u=n?o+r+s:t?.inputTokens??0;if(![u,a].some(l=>!Number.isFinite(l)||l<0))return{inputTokens:u,outputTokens:a,totalTokens:u+a,cachedReadTokens:s||void 0,cachedWriteTokens:r||void 0}}i(Jt,"normalizeAnthropicUsage");function qt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(qt,"isRecord");function Ur(e){if(!(!e.enabled||e.effort==="auto"||e.effort==="none"))return e.effort}i(Ur,"selectAnthropicOutputEffort");function Qn(e,t){let n=Ur(t);if(!n)return;let o=e,r=o.output_config;o.output_config={...qt(r)?r:{},effort:n}}i(Qn,"applyAnthropicOutputEffort");function Zn(e,t){if(!t)return;let n=e,o=n.output_config;n.output_config={...qt(o)?o:{},effort:t}}i(Zn,"setAnthropicOutputEffort");function Wr(e){let n=e.output_config;return qt(n)&&typeof n.effort=="string"}i(Wr,"hasAnthropicOutputEffort");var $=class extends J{static{i(this,"KodaXAnthropicCompatProvider")}supportsThinking=!0;_client;get client(){return this._client??=this.buildClient()}set client(t){this._client=t}buildClient(){let t=Kr(this.config);return new Br({apiKey:this.getApiKey(),baseURL:this.config.baseUrl,...t?{defaultHeaders:t}:{}})}onStaleConnection(){this._client=void 0}buildMessageCreateOptions(t,n,o){let s=this.getReasoningProfile(n)?.requiresEffortBetaHeader&&Wr(t)?{"anthropic-beta":Fr}:void 0;return{...o?{signal:o}:{},...s?{headers:s}:{}}}applyReasoningProfile(t,n,o,r,s){if(this.suppressReasoningEffort)return;this.validateExplicitReasoningEffort(o,r);let a=this.resolveReasoningProfileIntent(o,n,r),u=n.reasoningPreset,l=t;if(u==="kimi-k2.7-code"||u==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(u==="kimi-k3"){let f=o.effortSource==="omitted"&&o.effort==="none";if(a.disabled&&!f){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:f?n.defaultEffort??"max":a.effort??n.defaultEffort??"max"};return}if(!(u==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(a.disabled){(n.supportsDisabledThinking===!0||u==="zai-glm-5.2"||u==="zai-glm-toggle"||u==="deepseek-v4-anthropic"||u==="deepseek-toggle"||u==="kimi-hybrid-toggle"||u==="minimax-m3"||u==="mimo-v2.5-toggle"||n.thinkingStrategy==="provider-toggle")&&(t.thinking={type:"disabled"});return}if(u==="zai-glm-5.2"){t.thinking={type:"enabled"},a.effort&&(l.reasoning_effort=a.effort);return}if(u==="deepseek-v4-anthropic"){t.thinking={type:"enabled"},Zn(t,a.effort);return}if(u==="minimax-m3"){t.thinking={type:"adaptive"};return}if(u==="zai-glm-toggle"||u==="deepseek-toggle"||u==="kimi-hybrid-toggle"||u==="mimo-v2.5-toggle"||n.effortStrategy==="provider-toggle"){t.thinking={type:"enabled"};return}if(n.effortStrategy==="anthropic-reasoning-effort"){t.thinking={type:"enabled"},a.effort&&(l.reasoning_effort=a.effort);return}if(n.effortStrategy==="anthropic-output-effort"||n.thinkingStrategy==="anthropic-adaptive"){t.thinking={type:"adaptive"},Zn(t,a.effort);return}if(n.effortStrategy==="provider-budget"||n.thinkingStrategy==="anthropic-budget"){let f=this.resolveReasoningProfileBudget(n,a.effort,o,r,s);t.thinking={type:"enabled",budget_tokens:f}}}}resolveReasoningProfileBudget(t,n,o,r,s){let u=(n?t.budgetByEffort?.[n]:void 0)??ae(this.config,se(o.effort),o.taskType),l=this.getEffectiveThinkingBudgetCap(r),f=l!==void 0?Math.min(u,l):u;return ue(f,s)}async verifyCredential(t){let n=this.config.model,o=this.client,r=[{strategy:"count-tokens",approxTokensSpent:0,run:i(async s=>{await o.messages.countTokens({model:n,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")},{strategy:"models-list",approxTokensSpent:0,run:i(async s=>{await o.models.list({},{signal:s})},"run")},{strategy:"minimal-message",approxTokensSpent:7,run:i(async s=>{await o.messages.create({model:n,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")}];return ye({strategy:this.config.verifyStrategy??"count-tokens",runners:r,timeoutMs:t?.timeoutMs,signal:t?.signal,providerName:this.name})}isPromptCacheDisabled(){let t=ge()?.disablePromptCache;return t===!0?!0:t===!1?!1:process.env.KODAX_DISABLE_PROMPT_CACHE==="1"}applyCacheControlToSystem(t){if(!t.trim()||this.isPromptCacheDisabled())return t;let n=Gt([{type:"text",text:t}],"system");return Ht(n,"attach")}applyCacheControlToTools(t){if(t.length===0||this.isPromptCacheDisabled())return t;let n=t.slice(),o=n[n.length-1];return n[n.length-1]={...o,cache_control:{type:"ephemeral"}},n}applyCacheControlToMessages(t){if(t.length===0||this.isPromptCacheDisabled())return t;let n=0,o=-1;for(let c=t.length-1;c>=0;c--)if(t[c].role==="user"&&(n+=1,n===2)){o=c;break}if(o===-1)return t;let r=t[o];if(typeof r.content=="string"||r.content.length===0)return t;let s=r.content,u={...s[s.length-1],cache_control:{type:"ephemeral"}},l=[...s.slice(0,-1),u],f=t.slice();return f[o]={...r,content:l},f}async stream(t,n,o,r,s,a){return this.withRateLimit(async()=>{let u=this.normalizeReasoning(r),l=s?.modelOverride??this.config.model,f=this.getWireModelId(l);this.validateExplicitReasoningEffort(u,l);let c=s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(l),g=Yn(this.applyCacheControlToMessages(await this.convertMessages(t,l)),s?.ephemeralSuffix?.content),m=u.enabled?this.getReasoningCapability(l):"none",p=this.getReasoningProfile(l),b=p?["profile","none"]:u.enabled?this.getReasoningFallbackChain(m).filter(_=>_==="native-budget"||_==="native-toggle"||_==="native-adaptive"||_==="none"):["none"],d=!!s?.forcedToolName,T=i(_=>{let S={model:f,max_tokens:c,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:g,tools:this.applyCacheControlToTools(n),stream:!0};if(s?.forcedToolName&&d&&(S.tool_choice={type:"tool",name:s.forcedToolName}),_!=="none")if(_==="profile"&&p)this.applyReasoningProfile(S,p,u,l,c);else if(_==="native-budget"){let I=ae(this.config,se(u.effort),u.taskType);S.thinking={type:"enabled",budget_tokens:ue(I,c)}}else _==="native-toggle"?S.thinking={type:"enabled"}:_==="native-adaptive"&&(S.thinking={type:"adaptive"},Qn(S,u));return S},"buildRequest");if(a?.aborted)throw new DOMException("Request aborted","AbortError");let h=[],v=[],E=[],k,P=null,y="",C="",A="",F="",W="",U="",Y="",te=!1,M,D=Date.now(),V=Date.now(),re,Se;for(let _ of b){for(;!re;)try{let S=T(_);re=await this.client.messages.create(S,this.buildMessageCreateOptions(S,l,a))}catch(S){if(Se=S,d&&this.shouldFallbackForForcedToolChoiceError(S)){d=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let I=_==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:_==="native-budget"?["budget_tokens","thinking"]:_==="native-toggle"?["thinking"]:_==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(S,...I))throw S;break}if(re)break}if(!re)throw Se??new R("All reasoning capability attempts failed without a captured error",this.name);let we=Date.now(),Ge=0,w=0,L=3e4;for await(let _ of re){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let S=Date.now(),I=S-we;if(I>L&&(Ge++,w+=I,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(I/1e3)}s gap before ${_.type}`,{stallCount:Ge,totalStallMs:w,eventType:_.type})),we=S,_.type==="content_block_start"||_.type==="content_block_stop"?s?.onHeartbeat?.(!0):s?.onHeartbeat?.(),_.type==="content_block_start"){D=Date.now();let x=_.content_block;P=x.type,process.env.KODAX_DEBUG_TOOL_STREAM&&x.type==="tool_use"&&console.error("[ToolStream] content_block_start:",{type:x.type,id:x.id,name:x.name}),x.type==="thinking"?(C="",A=x.signature??""):x.type==="redacted_thinking"?(P="redacted_thinking",F=x.data??""):x.type==="text"?y="":x.type==="tool_use"&&(W=x.id,U=x.name,Y="")}else if(_.type==="content_block_delta"){D=Date.now();let x=_.delta;x.type==="thinking_delta"?(C+=x.thinking??"",s?.onThinkingDelta?.(x.thinking??"")):x.type==="text_delta"?(y+=x.text??"",s?.onTextDelta?.(x.text??"")):x.type==="input_json_delta"&&(Y+=x.partial_json??"",s?.onToolInputDelta?.(U,x.partial_json??"",W?{toolId:W}:void 0))}else if(_.type==="content_block_stop"){if(D=Date.now(),P==="thinking")C&&(E.push({type:"thinking",thinking:C,signature:A}),s?.onThinkingEnd?.(C));else if(P==="redacted_thinking")F&&E.push({type:"redacted_thinking",data:F}),F="";else if(P==="text")y&&h.push({type:"text",text:y});else if(P==="tool_use")if(!W||!U)process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Missing tool id or name:",{id:JSON.stringify(W),name:JSON.stringify(U),input:Y.slice(0,100)});else{let x=me(Y);v.push({type:"tool_use",id:W,name:U,input:x.value,...x.salvaged?{_salvaged:!0,_truncated:!0}:{}})}P=null}else if(_.type==="message_stop"){if(te=!0,D=Date.now(),process.env.KODAX_DEBUG_STREAM){let x=Date.now()-V;this.logStreamDiagnostic(`[Stream] message_stop received after ${x}ms`)}}else if(_.type==="message_delta"){D=Date.now(),k=Jt(_.usage,k);let x=_.delta;x?.stop_reason&&(M=x.stop_reason,process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic(`[Stream] message_delta with stop_reason: ${M}`))}else _.type==="message_start"&&(D=Date.now(),k=Jt(_.message?.usage,k),process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic("[Stream] message_start received"))}if(!te){let _=Date.now()-V,S=Date.now()-D;if(a?.aborted){let I=a.reason instanceof Error?a.reason.message:typeof a.reason=="string"?a.reason:"Request aborted";throw this.logStreamDiagnostic("[Stream] Stream ended after abort before message_stop:",{duration:_,lastEventAge:S,reason:I,textBlocks:h.length,toolBlocks:v.length,thinkingBlocks:E.length}),new DOMException(I,"AbortError")}if(!M){let I=new Error(`Stream incomplete: message_stop event not received. Duration: ${_}ms, Last event: ${S}ms ago. This may indicate a network disconnection or API timeout.`);throw I.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:_,lastEventAge:S,textBlocks:h.length,toolBlocks:v.length,thinkingBlocks:E.length}),I}this.logStreamDiagnostic("[Stream] message_stop missing but stop_reason known \u2014 treating as complete:",{duration:_,lastEventAge:S,stopReason:M,textBlocks:h.length,toolBlocks:v.length,thinkingBlocks:E.length})}let O=he(M)?v.map(({_truncated:_,...S})=>S):v;return{textBlocks:h,toolBlocks:O,thinkingBlocks:E,usage:k,stopReason:M}},a,3,s?.onRateLimit,s?.onRetryAfter,{model:s?.modelOverride??this.config.model,onRejected:s?.onReasoningEffortRejected})}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,s,a){return this.withRateLimit(async()=>{let u=this.normalizeReasoning(r),l=s?.modelOverride??this.config.model,f=this.getWireModelId(l);this.validateExplicitReasoningEffort(u,l);let c=s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(l),g=Yn(this.applyCacheControlToMessages(await this.convertMessages(t,l)),s?.ephemeralSuffix?.content),m=u.enabled?this.getReasoningCapability(l):"none",p=this.getReasoningProfile(l),b=p?["profile","none"]:u.enabled?this.getReasoningFallbackChain(m).filter(y=>y==="native-budget"||y==="native-toggle"||y==="native-adaptive"||y==="none"):["none"],d=!!s?.forcedToolName,T=i(y=>{let C={model:f,max_tokens:c,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:g,tools:this.applyCacheControlToTools(n)};if(s?.forcedToolName&&d&&(C.tool_choice={type:"tool",name:s.forcedToolName}),y!=="none")if(y==="profile"&&p)this.applyReasoningProfile(C,p,u,l,c);else if(y==="native-budget"){let A=ae(this.config,se(u.effort),u.taskType);C.thinking={type:"enabled",budget_tokens:ue(A,c)}}else y==="native-toggle"?C.thinking={type:"enabled"}:y==="native-adaptive"&&(C.thinking={type:"adaptive"},Qn(C,u));return C},"buildRequest"),h,v;for(let y of b){for(;!h;)try{let C=T(y);h=await this.client.messages.create(C,this.buildMessageCreateOptions(C,l,a))}catch(C){if(v=C,d&&this.shouldFallbackForForcedToolChoiceError(C)){d=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let A=y==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:y==="native-budget"?["budget_tokens","thinking"]:y==="native-toggle"?["thinking"]:y==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(C,...A))throw C;break}if(h)break}if(!h)throw v??new R("All reasoning capability attempts failed without a captured error",this.name);let E=[],k=[],P=[];for(let y of h.content)y.type==="text"?(E.push({type:"text",text:y.text}),s?.onTextDelta?.(y.text)):y.type==="thinking"?(P.push({type:"thinking",thinking:y.thinking,signature:y.signature??""}),s?.onThinkingDelta?.(y.thinking),s?.onThinkingEnd?.(y.thinking)):y.type==="redacted_thinking"?P.push({type:"redacted_thinking",data:y.data}):y.type==="tool_use"&&k.push({type:"tool_use",id:y.id,name:y.name,input:typeof y.input=="object"&&y.input!==null?y.input:{}});return{textBlocks:E,toolBlocks:k,thinkingBlocks:P,usage:Jt(h.usage),stopReason:h.stop_reason??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter,{model:s?.modelOverride??this.config.model,onRejected:s?.onReasoningEffortRejected})}serializeSystemMessageContent(t){if(typeof t=="string")return t.trim();for(let n of t)if(ve(n))throw new R("cache-boundary marker reached system message serialization unlowered. Provider base class lowering must run before any wire-level serialization.",this.name);return t.filter(n=>n.type==="text").map(n=>n.text.trim()).filter(Boolean).join(`
|
|
3
|
+
`)}buildSystemPrompt(t,n){let o=n.filter(r=>r.role==="system").map(r=>this.serializeSystemMessageContent(r.content)).filter(Boolean);return[t,...o].filter(r=>typeof r=="string"&&r.trim().length>0).join(`
|
|
4
|
+
|
|
5
|
+
`)}async convertMessages(t,n){let o=[],r=this.getEffectiveStrictThinkingSignature(n);for(let s of t.filter(a=>a.role!=="system")){let a=s.role==="user"?"user":"assistant";if(typeof s.content=="string"){o.push({role:a,content:s.content});continue}let u=[],l=[];for(let c of s.content)c.type==="thinking"?!r||typeof c.signature=="string"&&c.signature.length>0?u.push({type:"thinking",thinking:c.thinking,signature:c.signature??""}):c.thinking&&l.push(c.thinking):c.type==="redacted_thinking"&&(r||u.push({type:"redacted_thinking",data:c.data}));l.length>0&&s.role==="assistant"&&u.push({type:"text",text:`<prior_reasoning>
|
|
6
|
+
${l.join(`
|
|
7
|
+
|
|
8
|
+
`)}
|
|
9
|
+
</prior_reasoning>`});for(let c of s.content)if(c.type==="tool_result"&&s.role==="user"){let g;if(typeof c.content=="string")g=c.content;else{let m=[];for(let p of c.content)p.type==="text"?m.push({type:"text",text:p.text}):p.type==="image"&&m.push({type:"image",source:{type:"base64",media_type:it(p.path,p.mediaType),data:await st(p.path)}});g=m}u.push({type:"tool_result",tool_use_id:c.tool_use_id,content:g,...c.is_error===!0?{is_error:!0}:{}})}for(let c of s.content)c.type==="tool_use"&&s.role==="assistant"&&u.push({type:"tool_use",id:c.id,name:c.name,input:c.input});for(let c of s.content)c.type==="text"?u.push({type:"text",text:c.text}):c.type==="image"&&s.role==="user"&&u.push({type:"image",source:{type:"base64",media_type:it(c.path,c.mediaType),data:await st(c.path)}});if(a==="assistant"&&this.config.supportsThinking&&!r){let c=u.some(m=>m.type==="tool_use"),g=u.some(m=>m.type==="thinking"||m.type==="redacted_thinking");c&&!g&&u.unshift({type:"thinking",thinking:"...",signature:""})}let f=u.length===0||(a==="assistant"||a==="user")&&u.every(c=>{let g=c;return g.type==="thinking"&&!g.thinking||g.type==="text"&&!g.text});o.push({role:s.role,content:f?[{type:"text",text:"..."}]:u})}return this.repairToolCallHistory(o)}repairToolCallHistory(t){let n=i((o,r)=>{let s=new Set;if(!o||typeof o.content=="string"||!Array.isArray(o.content))return s;for(let a of o.content){let u=a;r==="tool_use"&&u.type==="tool_use"&&u.id&&s.add(u.id),r==="tool_result"&&u.type==="tool_result"&&u.tool_use_id&&s.add(u.tool_use_id)}return s},"collectIds");return t.map((o,r)=>{if(typeof o.content=="string"||!Array.isArray(o.content))return o;let s=o.content;if(o.role==="assistant"){let a=n(t[r+1],"tool_result");s=s.filter(u=>{let l=u;return l.type!=="tool_use"||!!l.id&&a.has(l.id)})}else if(o.role==="user"){let a=n(t[r-1],"tool_use");s=s.filter(u=>{let l=u;return l.type!=="tool_result"||!!l.tool_use_id&&a.has(l.tool_use_id)})}return s.length===o.content.length?o:s.length===0?{...o,content:[{type:"text",text:"..."}]}:{...o,content:s}})}};import zr from"openai";var Xr="KodaX";function eo(e){return e==="native-budget"||e==="native-effort"||e==="native-toggle"||e==="none"}i(eo,"isOpenAIReasoningAttempt");function Vr(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":Xr}}i(Vr,"getOpenAICompatDefaultHeaders");function Gr(e){if(e.effort!=="none"){if(e.effort&&e.effort!=="auto")return e.effort;if(!(e.effort==="auto"&&e.effortSource==="explicit"))return Wt(se(e.effort))}}i(Gr,"selectOpenAIReasoningEffort");function to(e){if(!e)return;let t=typeof e.prompt_tokens=="number"?e.prompt_tokens:0,n=typeof e.completion_tokens=="number"?e.completion_tokens:0,o=typeof e.total_tokens=="number"?e.total_tokens:t+n;if([t,n,o].some(s=>!Number.isFinite(s)||s<0)||o<t||o<n)return;let r=typeof e.prompt_tokens_details?.cached_tokens=="number"&&e.prompt_tokens_details.cached_tokens>=0?e.prompt_tokens_details.cached_tokens:typeof e.prompt_cache_hit_tokens=="number"&&e.prompt_cache_hit_tokens>=0?e.prompt_cache_hit_tokens:void 0;return{inputTokens:t,outputTokens:n,totalTokens:o,...r!==void 0?{cachedReadTokens:r}:{}}}i(to,"normalizeOpenAIUsage");function Hr(e){return e?e.type==="function"&&"function"in e:!1}i(Hr,"isOpenAIFunctionToolCall");function Jr(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object")return"";let n=Reflect.get(t,"text");if(typeof n=="string")return n;if(n&&typeof n=="object"){let o=Reflect.get(n,"value");return typeof o=="string"?o:""}return""}).filter(Boolean).join(""):""}i(Jr,"extractOpenAIMessageText");function qr(e){if(!e||typeof e!="object")return"";let t=Reflect.get(e,"reasoning_content");return typeof t=="string"?t:Array.isArray(t)?t.map(n=>typeof n=="string"?n:n&&typeof n=="object"&&"text"in n&&typeof n.text=="string"?n.text:"").join(""):""}i(qr,"extractOpenAIMessageReasoning");function at(e){let t=e.role;return typeof t=="string"?t:void 0}i(at,"getWireRole");function Yr(e){if(at(e)!=="assistant")return;let t=e.tool_calls;if(Array.isArray(t))return t.flatMap(n=>{if(!n||typeof n!="object")return[];let o=n.id;return typeof o=="string"&&o.trim().length>0?[{id:o,value:n}]:[]})}i(Yr,"getAssistantWireToolCalls");function Qr(e){if(at(e)!=="tool")return;let t=e.tool_call_id;return typeof t=="string"&&t.trim().length>0?t:void 0}i(Qr,"getToolWireCallId");function Zr(e,t){let n={...e};return t.length>0?(n.tool_calls=t.map(o=>o.value),n):(delete n.tool_calls,(n.content==null||n.content==="")&&(n.content="..."),n)}i(Zr,"rewriteAssistantWireToolCalls");var z=class extends J{static{i(this,"KodaXOpenAICompatProvider")}supportsThinking=!0;_client;get client(){return this._client??=this.buildClient()}set client(t){this._client=t}buildClient(){let t=Vr(this.config);return new zr({apiKey:this.getApiKey(),baseURL:this.config.baseUrl,...t?{defaultHeaders:t}:{}})}onStaleConnection(){this._client=void 0}async verifyCredential(t){let n=this.config.model,o=this.client,r=[{strategy:"models-list",approxTokensSpent:0,run:i(async s=>{await o.models.list({signal:s})},"run")},{strategy:"minimal-message",approxTokensSpent:6,run:i(async s=>{await o.chat.completions.create({model:n,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")}];return ye({strategy:this.config.verifyStrategy??"models-list",runners:r,timeoutMs:t?.timeoutMs,signal:t?.signal,providerName:this.name})}stripCacheBoundariesFromMessages(t){return t.map(n=>{if(typeof n.content=="string")return n;let o=Be(n.content);return o.length===n.content.length?n:{...n,content:o}})}normalizeSystemForWire(t,n){let o=[];t&&t.trim().length>0&&o.push(t);let r=[];for(let s of n){if(s.role!=="system"){r.push(s);continue}let a=typeof s.content=="string"?s.content:Array.isArray(s.content)?s.content.filter(u=>typeof u=="object"&&u!==null&&u.type==="text"&&typeof u.text=="string").map(u=>u.text).join(`
|
|
10
|
+
`):"";a.trim().length>0&&o.push(a)}return{system:o.join(`
|
|
11
|
+
|
|
12
|
+
`),rest:r}}appendExtraBody(t,n){let o=typeof t.extra_body=="object"&&t.extra_body!==null?t.extra_body:{};t.extra_body={...o,...n}}resetReasoningCapabilityParams(t){delete t.reasoning_effort,delete t.thinking;let n=typeof t.extra_body=="object"&&t.extra_body!==null?{...t.extra_body}:void 0;if(n){if(delete n.enable_thinking,delete n.thinking_budget,delete n.thinking,Object.keys(n).length===0){delete t.extra_body;return}t.extra_body=n}}applyReasoningCapability(t,n,o){if(this.suppressReasoningEffort||n==="none")return;let r=t,s=this.getEffectiveMaxOutputTokens(t.model),a=ue(ae(this.config,se(o.effort),o.taskType),s),u=this.getReasoningProfile(t.model);if(u){this.applyReasoningProfile(r,u,o,t.model,a);return}switch(n){case"native-effort":{this.validateExplicitReasoningEffort(o,t.model);let l=Gr(o);l&&(r.reasoning_effort=l);break}case"native-budget":{this.name==="qwen"?this.appendExtraBody(r,{enable_thinking:!0,thinking_budget:a}):this.name==="zhipu"&&(r.thinking={type:"enabled",budget_tokens:a});break}case"native-toggle":{this.name==="qwen"?this.appendExtraBody(r,{enable_thinking:!0}):this.name==="zhipu"&&(r.thinking={type:"enabled"});break}default:break}}applyReasoningProfile(t,n,o,r,s){this.validateExplicitReasoningEffort(o,r);let a=this.resolveReasoningProfileIntent(o,n,r),u=n.reasoningPreset;if(u==="kimi-k2.7-code"||u==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(u==="kimi-k3"){let l=o.effortSource==="omitted"&&o.effort==="none";if(a.disabled&&!l){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:l?n.defaultEffort??"max":a.effort??n.defaultEffort??"max"};return}if(!(u==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(u==="qwen-hybrid-thinking"){if(a.disabled){this.appendExtraBody(t,{enable_thinking:!1});return}let l=this.resolveReasoningProfileBudget(n,a.effort,r,s);this.appendExtraBody(t,{enable_thinking:!0,...l!==void 0?{thinking_budget:l}:{}});return}if(u==="deepseek-v4-openai"||u==="zai-glm-5.2"){t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&(t.reasoning_effort=a.effort);return}if(u==="zai-glm-toggle"||u==="deepseek-toggle"||u==="kimi-hybrid-toggle"||n.thinkingStrategy==="provider-toggle"){t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&n.effortStrategy==="openai-chat-effort"&&(t.reasoning_effort=a.effort);return}if(n.effortStrategy==="openai-chat-effort"){if(a.disabled){n.supportedEfforts?.some(l=>l.value==="none")&&(t.reasoning_effort="none");return}a.effort&&(t.reasoning_effort=a.effort);return}if(n.effortStrategy==="provider-budget"){if(a.disabled){t.thinking={type:"disabled"};return}let l=this.resolveReasoningProfileBudget(n,a.effort,r,s);t.thinking={type:"enabled",...l!==void 0?{budget_tokens:l}:{}};return}n.effortStrategy==="provider-toggle"&&(t.thinking={type:a.disabled?"disabled":"enabled"})}}resolveReasoningProfileBudget(t,n,o,r){if(!t.supportsManualThinkingBudget&&t.effortStrategy!=="provider-budget")return;let s=n&&t.budgetByEffort?.[n]!==void 0?t.budgetByEffort[n]:r,a=this.getEffectiveThinkingBudgetCap(o);return a!==void 0?Math.min(s,a):s}getFallbackTerms(t){switch(t){case"profile":return["thinking","reasoning_effort","enable_thinking","thinking_budget","budget_tokens"];case"native-budget":return["thinking_budget","budget_tokens","thinking"];case"native-effort":return["reasoning_effort"];case"native-toggle":return["enable_thinking","thinking"];default:return[]}}async stream(t,n,o,r,s,a){return this.withRateLimit(async()=>{let u=this.stripCacheBoundariesFromMessages(t),{system:l,rest:f}=this.normalizeSystemForWire(o,u),c=s?.modelOverride??this.config.model,g=[{role:"system",content:l},...await this.convertMessages(f,c),...s?.ephemeralSuffix?.content?[{role:"user",content:s.ephemeralSuffix.content}]:[]],m=n.map(w=>({type:"function",function:{name:w.name,description:w.description,parameters:w.input_schema}})),p=s?.forcedToolName,b=!!p;if(a?.aborted)throw new DOMException("Request aborted","AbortError");let d=new Map,T="",h="",v,E=!0,k=null,P=Date.now(),y=this.normalizeReasoning(r);this.validateExplicitReasoningEffort(y,c);let C=this.getReasoningProfile(c),A=pe(y)?this.getReasoningCapability(c):"none",F=C?["profile","none"]:pe(y)?this.getReasoningFallbackChain(A).filter(eo):["none"],W={model:c,messages:g,tools:m,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(c),stream:!0};p&&b&&(W.tool_choice={type:"function",function:{name:p}});let U,Y;for(let w of F){for(;!U;){let L={...W};E&&(L.stream_options={include_usage:!0}),this.resetReasoningCapabilityParams(L),this.applyReasoningCapability(L,w,y);try{U=await this.client.chat.completions.create(L,a?{signal:a}:{})}catch(O){if(Y=O,b&&this.shouldFallbackForForcedToolChoiceError(O)){b=!1,delete W.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(E&&this.shouldFallbackForSpecificReasoningError(O,"stream_options","include_usage")){E=!1;continue}if(!this.shouldFallbackForReasoningError(O,...this.getFallbackTerms(w)))throw O;break}}if(U)break}if(!U)throw Y??new R("All reasoning capability attempts failed without a captured error",this.name);let te=Date.now(),M=0,D=0,V=3e4;for await(let w of U){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let L=Date.now(),O=L-te;O>V&&(M++,D+=O,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(O/1e3)}s gap`,{stallCount:M,totalStallMs:D})),te=L,s?.onHeartbeat?.(),v=to(w.usage)??v;let _=w.choices[0],S=_?.delta;if(_?.finish_reason&&(k=_.finish_reason,process.env.KODAX_DEBUG_STREAM)){let x=Date.now()-P;this.logStreamDiagnostic(`[Stream] finish_reason: ${k} after ${x}ms`)}S?.content&&(T+=S.content,s?.onTextDelta?.(S.content));let I=this.extractReasoningDelta(S);if(I&&(h+=I,s?.onThinkingDelta?.(I)),S?.tool_calls)for(let x of S.tool_calls){let ie=d.get(x.index)??{id:"",name:"",arguments:""};x.id&&(ie.id=x.id),x.function?.name&&(ie.name=x.function.name),x.function?.arguments&&(ie.arguments+=x.function.arguments,s?.onToolInputDelta?.(ie.name,x.function.arguments,ie.id?{toolId:ie.id}:void 0)),d.set(x.index,ie)}}if(!k){let w=Date.now()-P;if(a?.aborted){let O=a.reason instanceof Error?a.reason.message:typeof a.reason=="string"?a.reason:"Request aborted";throw this.logStreamDiagnostic("[Stream] Stream ended after abort before finish_reason:",{duration:w,reason:O,textContentLength:T.length,toolCallsCount:d.size}),new DOMException(O,"AbortError")}let L=new Error(`Stream incomplete: finish_reason not received. Duration: ${w}ms. This may indicate a network disconnection or API timeout.`);throw L.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:w,textContentLength:T.length,toolCallsCount:d.size}),L}let re=T?[{type:"text",text:T}]:[],Se=[],we=[];h&&(we.push({type:"thinking",thinking:h}),s?.onThinkingEnd?.(h));let Ge=he(k??void 0);for(let[,w]of d)if(w.id&&w.name){let L=me(w.arguments),O=L.salvaged?Ge?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};Se.push({type:"tool_use",id:w.id,name:w.name,input:L.value,...O})}else process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Dropped tool_call missing id or name:",{id:JSON.stringify(w.id),name:JSON.stringify(w.name),argsLength:w.arguments?.length??0});return{textBlocks:re,toolBlocks:Se,thinkingBlocks:we,usage:v,stopReason:k??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter,{model:s?.modelOverride??this.config.model,onRejected:s?.onReasoningEffortRejected})}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,s,a){return this.withRateLimit(async()=>{let u=this.stripCacheBoundariesFromMessages(t),{system:l,rest:f}=this.normalizeSystemForWire(o,u),c=s?.modelOverride??this.config.model,g=[{role:"system",content:l},...await this.convertMessages(f,c),...s?.ephemeralSuffix?.content?[{role:"user",content:s.ephemeralSuffix.content}]:[]],m=n.map(M=>({type:"function",function:{name:M.name,description:M.description,parameters:M.input_schema}})),p=s?.forcedToolName,b=!!p,d=this.normalizeReasoning(r);this.validateExplicitReasoningEffort(d,c);let T=this.getReasoningProfile(c),h=pe(d)?this.getReasoningCapability(c):"none",v=T?["profile","none"]:pe(d)?this.getReasoningFallbackChain(h).filter(eo):["none"],E={model:c,messages:g,tools:m,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(c)};p&&b&&(E.tool_choice={type:"function",function:{name:p}});let k,P;for(let M of v){for(;!k;){let D={...E};this.resetReasoningCapabilityParams(D),this.applyReasoningCapability(D,M,d);try{k=await this.client.chat.completions.create(D,a?{signal:a}:{})}catch(V){if(P=V,b&&this.shouldFallbackForForcedToolChoiceError(V)){b=!1,delete E.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(!this.shouldFallbackForReasoningError(V,...this.getFallbackTerms(M)))throw V;break}}if(k)break}if(!k)throw P??new R("All reasoning capability attempts failed without a captured error",this.name);let y=k.choices[0],C=y?.message,A=Jr(C?.content),F=qr(C),W=he(y?.finish_reason??void 0),U=(C?.tool_calls??[]).filter(Hr).map(M=>{let D=me(M.function.arguments),V=D.salvaged?W?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};return{type:"tool_use",id:M.id,name:M.function.name,input:D.value,...V}});A&&s?.onTextDelta?.(A);let Y=A?[{type:"text",text:A}]:[],te=[];return F&&(te.push({type:"thinking",thinking:F}),s?.onThinkingDelta?.(F),s?.onThinkingEnd?.(F)),{textBlocks:Y,toolBlocks:U,thinkingBlocks:te,usage:to(k.usage),stopReason:y?.finish_reason??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter,{model:s?.modelOverride??this.config.model,onRejected:s?.onReasoningEffortRejected})}extractReasoningDelta(t){let n=t?.reasoning_content;return typeof n=="string"?n:Array.isArray(n)?n.map(o=>typeof o=="string"?o:typeof o=="object"&&o!==null&&"text"in o&&typeof o.text=="string"?o.text:"").join(""):""}serializeAssistantMessage(t,n){let o=t.filter(c=>c.type==="text").map(c=>c.text).join(`
|
|
13
|
+
`),r=t.filter(c=>c.type==="tool_use").map(c=>({id:c.id,type:"function",function:{name:c.name,arguments:JSON.stringify(c.input??{})}})),s=t.filter(c=>c.type==="thinking"||c.type==="redacted_thinking").map(c=>c.type==="thinking"?c.thinking:"").filter(Boolean).join(`
|
|
14
|
+
|
|
15
|
+
`),a=t.some(c=>c.type==="thinking"||c.type==="redacted_thinking"),u=t.some(c=>c.type==="text");if(!o&&r.length===0&&!a&&!u)return[];let l;o?l=o:r.length>0?l=null:l="...";let f={role:"assistant",content:l};return r.length>0&&(f.tool_calls=r),this.getEffectiveReplayReasoningContent(n)&&(f.reasoning_content=s||""),[f]}async serializeUserMessage(t){let n=[],o=t.filter(a=>a.type==="text").map(a=>a.text).join(`
|
|
16
|
+
`),r=t.filter(a=>a.type==="image");for(let a of t)if(a.type==="tool_result"){let u;typeof a.content=="string"?u=a.content:u=a.content.map(l=>l.type==="text"?l.text:`[Image at ${l.path}${l.mediaType?` (${l.mediaType})`:""}] (provider does not support image content in tool_result; if the image was previously visible to you in the conversation, refer to it directly via native vision)`).join(`
|
|
17
|
+
`),n.push({role:"tool",tool_call_id:a.tool_use_id,content:u})}if(r.length===0)return o&&n.push({role:"user",content:o}),n;let s=[];o&&s.push({type:"text",text:o});for(let a of r)s.push({type:"image_url",image_url:{url:await qn(a.path,a.mediaType)}});return n.push({role:"user",content:s}),n}serializeSystemMessage(t){if(typeof t=="string")return[{role:"system",content:t}];let n=t.filter(o=>o.type==="text").map(o=>o.text).join(`
|
|
18
|
+
`);return n?[{role:"system",content:n}]:[]}async convertMessages(t,n){let o=[];for(let r of t){if(r.role==="system"){o.push(...this.serializeSystemMessage(r.content));continue}if(typeof r.content=="string"){o.push({role:r.role,content:r.content});continue}if(r.role==="assistant"){o.push(...this.serializeAssistantMessage(r.content,n));continue}o.push(...await this.serializeUserMessage(r.content))}return this.repairToolCallHistory(o)}repairToolCallHistory(t){let n=[],o=0;for(;o<t.length;){let r=t[o],s=Yr(r);if(s===void 0){at(r)!=="tool"&&n.push(r),o+=1;continue}let a=new Set(s.map(m=>m.id)),u=new Set,l=[],f=o+1;for(;f<t.length&&at(t[f])==="tool";){let m=t[f],p=Qr(m);p!==void 0&&a.has(p)&&!u.has(p)&&(u.add(p),l.push(m)),f+=1}let c=s.filter(m=>u.has(m.id)),g=c.length===s.length&&s.length>0?r:Zr(r,c);n.push(g),c.length>0&&n.push(...l),o=f}return n}};import{spawn as ci}from"node:child_process";import{Readable as li,Writable as fi}from"node:stream";import ct from"node:process";import{ClientSideConnection as di,PROTOCOL_VERSION as pi,ndJsonStream as gi}from"@agentclientprotocol/sdk";import{spawn as ei,spawnSync as Zt}from"node:child_process";var en=2e3,H=2e3,ti=5e3,ni=String.raw`
|
|
19
|
+
using System;
|
|
20
|
+
using System.Runtime.InteropServices;
|
|
21
|
+
using System.Text;
|
|
22
|
+
public static class KodaXNativeProcessSnapshot {
|
|
23
|
+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
|
24
|
+
private struct ProcessEntry32 {
|
|
25
|
+
public uint dwSize;
|
|
26
|
+
public uint cntUsage;
|
|
27
|
+
public uint th32ProcessID;
|
|
28
|
+
public IntPtr th32DefaultHeapID;
|
|
29
|
+
public uint th32ModuleID;
|
|
30
|
+
public uint cntThreads;
|
|
31
|
+
public uint th32ParentProcessID;
|
|
32
|
+
public int pcPriClassBase;
|
|
33
|
+
public uint dwFlags;
|
|
34
|
+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
|
|
35
|
+
public string szExeFile;
|
|
36
|
+
}
|
|
37
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
38
|
+
private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId);
|
|
39
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
40
|
+
private static extern bool Process32First(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
41
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
42
|
+
private static extern bool Process32Next(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
43
|
+
[DllImport("kernel32.dll")]
|
|
44
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
45
|
+
public static string ReadRows() {
|
|
46
|
+
var snapshot = CreateToolhelp32Snapshot(2, 0);
|
|
47
|
+
if (snapshot == new IntPtr(-1)) return string.Empty;
|
|
48
|
+
var rows = new StringBuilder();
|
|
49
|
+
var entry = new ProcessEntry32();
|
|
50
|
+
entry.dwSize = (uint)Marshal.SizeOf(entry);
|
|
51
|
+
try {
|
|
52
|
+
if (!Process32First(snapshot, ref entry)) return string.Empty;
|
|
53
|
+
do {
|
|
54
|
+
rows.Append(entry.th32ProcessID).Append(',').Append(entry.th32ParentProcessID).Append('\n');
|
|
55
|
+
entry.dwSize = (uint)Marshal.SizeOf(entry);
|
|
56
|
+
} while (Process32Next(snapshot, ref entry));
|
|
57
|
+
return rows.ToString();
|
|
58
|
+
} finally {
|
|
59
|
+
CloseHandle(snapshot);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}`;function Qt(e){return e.exitCode!==null||e.signalCode!==null}i(Qt,"isExited");function je(e,t){return Qt(e)?Promise.resolve(!0):new Promise(n=>{let o=!1,r=i(u=>{o||(o=!0,clearTimeout(a),e.off("exit",s),e.off("error",s),n(u))},"finish"),s=i(()=>r(!0),"onExit"),a=setTimeout(()=>r(!1),t);a.unref?.(),e.once("exit",s),e.once("error",s)})}i(je,"waitForExit");function oi(e){return new Promise(t=>{let n=ei("taskkill",["/pid",String(e),"/t","/f"],{stdio:"ignore",windowsHide:!0}),o=!1,r=i(a=>{o||(o=!0,clearTimeout(s),t(a))},"finish"),s=setTimeout(()=>{try{n.kill()}catch{}r(!1)},en);s.unref?.(),n.once("exit",a=>r(a===0)),n.once("error",()=>r(!1))})}i(oi,"runTaskkill");function no(e,t){let n=!1;try{process.kill(-e,t),n=!0}catch{}try{process.kill(e,t),n=!0}catch{}return n}i(no,"signalPosixPidTree");function Z(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}i(Z,"signalTargetExists");function oo(e){return Z(-e)||Z(e)}i(oo,"isPosixPidTreeAlive");async function ro(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!oo(e))return!0;await new Promise(o=>setTimeout(o,50))}return!oo(e)}i(ro,"waitForPosixPidTreeExit");async function ri(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Z(e))return!0;await new Promise(o=>setTimeout(o,50))}return!Z(e)}i(ri,"waitForWindowsPidExit");async function Yt(e,t){let n=[...new Set(e.filter(r=>Number.isFinite(r)&&r>0))];if(n.length===0)return!0;let o=Date.now()+t;for(;Date.now()<o;){if(n.every(r=>!Z(r)))return!0;await new Promise(r=>setTimeout(r,50))}return n.every(r=>!Z(r))}i(Yt,"waitForWindowsPidsExit");function io(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).map(r=>Number(r)).filter(r=>Number.isFinite(r)&&r>0)}catch{return[]}}i(io,"readWindowsPidListJson");function ii(e){let t=Zt("wmic",["process","where",`ParentProcessId=${e}`,"get","ProcessId","/format:list"],{encoding:"utf8",timeout:en,windowsHide:!0});if(t.error||t.status!==0)return[];let n=[],o=/ProcessId=(\d+)/g,r;for(;(r=o.exec(t.stdout))!==null;){let s=Number(r[1]);Number.isFinite(s)&&s>0&&s!==e&&n.push(s)}return n}i(ii,"getWindowsChildPidsViaWmic");function si(e){let t=[`$children = Get-CimInstance Win32_Process -Filter "ParentProcessId = ${e}"`,"if ($null -eq $children) { exit 0 }","$children | Select-Object -ExpandProperty ProcessId | ConvertTo-Json -Compress"].join("; "),n=Zt("powershell.exe",["-NoProfile","-NonInteractive","-Command",t],{encoding:"utf8",timeout:en,windowsHide:!0});if(!n.error&&n.status===0){let r=io(n.stdout);if(r.length>0)return r}let o=io(n.stdout);return o.length>0?o:ii(e)}i(si,"getWindowsChildPids");function ai(e){let t=["$source = @'",ni,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
|
|
63
|
+
`),n=Zt("powershell.exe",["-NoProfile","-NonInteractive","-Command",t],{encoding:"utf8",timeout:ti,windowsHide:!0});return n.error||n.status!==0?[]:ui(n.stdout,e)}i(ai,"collectWindowsDescendantPidsNative");function ui(e,t){let n=new Map;for(let a of e.split(/\r?\n/)){let[u,l]=a.split(",",2),f=Number(u),c=Number(l);!Number.isFinite(f)||f<=0||!Number.isFinite(c)||n.set(c,[...n.get(c)??[],f])}let o=[],r=[t],s=new Set([t]);for(;r.length>0;){let a=r.shift();if(a===void 0)break;for(let u of n.get(a)??[])s.has(u)||(s.add(u),o.push(u),r.push(u))}return o}i(ui,"collectDescendantsFromProcessRows");function so(e,t=new Set){let n=[];for(let o of si(e))t.has(o)||(t.add(o),n.push(o),n.push(...so(o,t)));return n}i(so,"collectWindowsDescendantPids");async function ut(e,t){try{process.kill(e,t)}catch{return!Z(e)}return ri(e,H)}i(ut,"killWindowsPid");async function Fe(e){if(process.platform==="win32"&&e.pid!==void 0){if(!Qt(e)&&await oi(e.pid)&&await Yt([e.pid],H)){await je(e,H);return}let n=ai(e.pid);n.length===0&&(n=so(e.pid));let o=[...n].reverse(),r=[e.pid,...n];for(let s of o)Z(s)&&await ut(s,"SIGTERM");if(await ut(e.pid,"SIGTERM"),await Yt(r,H)){await je(e,H);return}for(let s of o)Z(s)&&await ut(s,"SIGKILL");await ut(e.pid,"SIGKILL"),await Yt(r,H),await je(e,H);return}if(e.pid!==void 0&&process.platform!=="win32"){if(!no(e.pid,"SIGTERM")||await ro(e.pid,H))return;no(e.pid,"SIGKILL"),await ro(e.pid,H);return}if(!Qt(e)){try{e.kill("SIGTERM")}catch{return}if(!await je(e,H)){try{e.kill("SIGKILL")}catch{}await je(e,H)}}}i(Fe,"killChildProcessTree");var lt=class{static{i(this,"AcpClient")}client=null;agentProcess=null;options;constructor(t){this.options=t}async connect(){let t,n;if(this.options.inputStream&&this.options.outputStream)t=this.options.inputStream,n=this.options.outputStream;else if(this.options.command){let s=ct.platform==="win32"&&!this.options.command.endsWith(".cmd")?`${this.options.command}.cmd`:this.options.command;if(this.agentProcess=ci(s,this.options.args??[],{cwd:this.options.cwd??ct.cwd(),stdio:["pipe","pipe","inherit"],detached:ct.platform!=="win32"}),!this.agentProcess.stdin||!this.agentProcess.stdout)throw new Error("Failed to create ACP stdio pipes");n=fi.toWeb(this.agentProcess.stdin),t=li.toWeb(this.agentProcess.stdout)}else throw new Error("AcpClient requires either a command or I/O streams");let o=gi(n,t);this.client=new di(()=>({sessionUpdate:i(async r=>{this.options.onSessionUpdate?.(r)},"sessionUpdate"),requestPermission:i(async r=>{let s=r.options??[],a=s.find(u=>u.kind==="allow_once"||u.kind==="allow_always")??s[0];return a?{outcome:{outcome:"selected",optionId:a.optionId}}:{outcome:{outcome:"cancelled"}}},"requestPermission")}),o),await this.client.initialize({protocolVersion:pi,clientCapabilities:{},clientInfo:{name:"kodax-ai-acp-client",version:"1.0.0"}})}async createNewSession(){if(!this.client)throw new Error("Client not connected");return(await this.client.newSession({cwd:this.options.cwd??ct.cwd(),mcpServers:[]})).sessionId}async prompt(t,n,o,r){if(!this.client)throw new Error("Client not connected");let s={sessionId:n,prompt:[{type:"text",text:t}]};r?.model&&(s.model=r.model),r?.reasoningEffort&&(s.effort=r.reasoningEffort);let a=this.client.prompt(s);if(o){let u=i(()=>{this.client?.cancel({sessionId:n}).catch(()=>{})},"onAbort");o.addEventListener("abort",u),a=a.finally(()=>{o.removeEventListener("abort",u)})}return await a}disconnect(){this.agentProcess&&Fe(this.agentProcess),this.options.abort?.();try{this.client?.close?.()}catch{}this.client=null,this.agentProcess=null}};function mi(e){if(!e||typeof e!="object")return;let t=e,n=typeof t.inputTokens=="number"?t.inputTokens:0,o=typeof t.outputTokens=="number"?t.outputTokens:0,r=typeof t.totalTokens=="number"?t.totalTokens:n+o;if(![n,o,r].some(s=>!Number.isFinite(s)||s<0)&&!(r<n||r<o))return{inputTokens:n,outputTokens:o,totalTokens:r,cachedReadTokens:typeof t.cachedReadTokens=="number"?t.cachedReadTokens:void 0,cachedWriteTokens:typeof t.cachedWriteTokens=="number"?t.cachedWriteTokens:void 0,thoughtTokens:typeof t.thoughtTokens=="number"?t.thoughtTokens:void 0}}i(mi,"normalizeAcpUsage");function hi(e){if(e.effort==="none")return"none";if(!(!e.enabled||e.effort==="auto"))return e.effort}i(hi,"selectAcpReasoningEffort");var ke=class extends J{static{i(this,"KodaXAcpProvider")}_client=null;_sessionMap=new Map;_activeStreams=new Map;isConfigured(){return!0}async verifyCredential(){return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`CLI-bridge provider "${this.name}" manages credentials in its CLI binary's token store; not verifiable from the KodaX SDK`}}getCapabilityProfile(){return G(Le)}serializeImageBlockToPromptToken(t){return null}stripCacheBoundariesFromMessages(t){return t.map(n=>{if(typeof n.content=="string")return n;let o=Be(n.content);return o.length===n.content.length?n:{...n,content:o}})}async stream(t,n,o,r,s,a){let u=this.normalizeReasoning(r),l=hi(u);if(t=this.stripCacheBoundariesFromMessages(t),this.acpClientOptions.executor&&typeof this.acpClientOptions.executor.isInstalled=="function"&&!await this.acpClientOptions.executor.isInstalled())throw new Error(`${this.name} requires a local CLI environment, but the CLI was not found or is not configured correctly.`);let f=[],c=[],g=t[t.length-1],m="";if(g&&typeof g.content=="string")m=g.content;else if(g&&Array.isArray(g.content)){let E=[];for(let k of g.content)if(k.type==="text")E.push(k.text);else if(k.type==="image"){let P=this.serializeImageBlockToPromptToken(k);P&&E.push(P)}m=E.join(`
|
|
64
|
+
`)}let p=s?.ephemeralSuffix?.content;p&&(m=m.length>0?`${m}
|
|
65
|
+
|
|
66
|
+
${p}`:p);let b={...this.acpClientOptions,onSessionUpdate:i(E=>{let k=E.update,P=E.sessionId;if(!("sessionUpdate"in k))return;let y=P?this._activeStreams.get(P):void 0;if(y)switch(k.sessionUpdate){case"agent_message_chunk":if(k.content?.type==="text"){let C=k.content.text;y.output.text+=C,y.streamOptions?.onTextDelta?.(C)}break;case"tool_call":{let C="{}",A=k.arguments??k.parameters;A&&(C=typeof A=="string"?A:JSON.stringify(A)),y.streamOptions?.onToolInputDelta?.(k.title,C);let F=`
|
|
67
|
+
> [Tool Use] ${k.title}: ${C}
|
|
68
|
+
`;y.output.text+=F,y.streamOptions?.onTextDelta?.(F);break}case"tool_call_update":if(k.status){let C=`> [Tool Result] ${k.status}
|
|
69
|
+
|
|
70
|
+
`;y.output.text+=C,y.streamOptions?.onTextDelta?.(C)}break}},"onSessionUpdate")},d=s?.sessionId??"default";this._client||(this._client=new lt(b),await this._client.connect());let T=this._sessionMap.get(d);T||(T=await this._client.createNewSession(),this._sessionMap.set(d,T));let h={text:""};this._activeStreams.set(T,{streamOptions:s,output:h});let v;try{v=await this._client.prompt(m,T,a,{model:s?.modelOverride,reasoningEffort:l})}catch(E){if(!(E instanceof Error&&E.name==="AbortError"))throw E}finally{this._activeStreams.delete(T)}return h.text&&f.push({type:"text",text:h.text}),{textBlocks:f,toolBlocks:c,thinkingBlocks:[],usage:mi(v?.usage)}}disconnect(){this._client&&(this._client.disconnect(),this._client=null),this._activeStreams.clear(),this._sessionMap.clear()}};import{spawn as yi}from"node:child_process";import ft from"node:process";var Ee=class{static{i(this,"CLIExecutor")}config;_installedCache=null;constructor(t){this.config=t}async isInstalled(){return this._installedCache!==null?this._installedCache:(this._installedCache=await this.checkInstalled(),this._installedCache)}async*execute(t){let n=this.buildArgs(t),o={...ft.env,...this.config.env},s=ft.platform==="win32"&&!this.config.command.endsWith(".cmd")?`${this.config.command}.cmd`:this.config.command,a=yi(s,n,{cwd:this.config.cwd??ft.cwd(),env:o,stdio:["ignore","pipe","pipe"],detached:ft.platform!=="win32"}),u="";a.stderr?.on("data",c=>{u+=c.toString()});let l=!1,f=i(()=>{l||Fe(a)},"abortHandler");t.signal?.addEventListener("abort",f),a.on("exit",()=>{l=!0});try{yield*this.parseOutputStream(a.stdout,t.signal),u.trim()&&console.error(`[CLIExecutor] stderr: ${u.trim()}`)}finally{t.signal?.removeEventListener("abort",f),l||await Fe(a)}}async*parseOutputStream(t,n){let o="";for await(let r of t){if(n?.aborted)break;o+=r.toString();let s=o.split(`
|
|
71
|
+
`);o=s.pop()??"";for(let a of s){if(!a.trim())continue;let u=this.parseLine(a.trim());u&&(yield u)}}if(o.trim()&&!n?.aborted){let r=this.parseLine(o.trim());r&&(yield r)}}};import{spawn as vi}from"node:child_process";import ki from"node:process";async function dt(e){try{let t=ki.platform==="win32",n=vi(t?`${e}.cmd`:e,["--version"]);return await new Promise(o=>{n.on("close",r=>o(r===0)),n.on("error",()=>o(!1))})}catch{return!1}}i(dt,"checkCliCommandInstalled");var pt=class extends Ee{static{i(this,"GeminiCLIExecutor")}model;constructor(t){super({command:"gemini",baseArgs:["--output-format","stream-json","--approval-mode","yolo"],timeout:3e5,...t}),this.model=t?.model??"gemini-2.5-pro"}async checkInstalled(){return dt("gemini")}buildArgs(t){let n=["-m",t.model??this.model];return t.sessionId?(n.push("-r",t.sessionId),n.push(t.prompt)):n.push("-p",t.prompt),[...n,...this.config.baseArgs]}parseLine(t){if(!t.startsWith("{"))return null;try{let n=JSON.parse(t);return this.convertEvent(n)}catch{return null}}convertEvent(t){let n=t.timestamp?Date.parse(t.timestamp):Date.now();switch(t.type){case"init":return{type:"session_start",timestamp:n,sessionId:t.session_id??"",model:t.model??this.model,raw:t};case"message":return{type:"message",timestamp:n,role:t.role,content:t.content??"",delta:t.delta,raw:t};case"tool_use":return{type:"tool_use",timestamp:n,toolId:t.tool_id??"",toolName:t.tool_name??"",parameters:t.parameters??{},raw:t};case"tool_result":return{type:"tool_result",timestamp:n,toolId:t.tool_id??"",status:t.status==="success"?"success":"error",output:t.output??"",raw:t};case"error":return{type:"error",timestamp:n,errorType:"error",message:t.message??"Unknown error",raw:t};case"result":return{type:"complete",timestamp:n,status:t.status==="success"?"success":"failed",usage:t.stats?{inputTokens:t.stats.input_tokens??0,outputTokens:t.stats.output_tokens??0,totalTokens:t.stats.total_tokens??0}:void 0,raw:t};default:return null}}};import{TransformStream as ao}from"node:stream/web";import{randomUUID as tn}from"node:crypto";function gt(e){let t=new ao,n=new ao,o=t.readable.getReader(),r=n.writable.getWriter(),s=new TextDecoder,a=new TextEncoder,u="",l=tn(),f=new AbortController,c=new Map;(async()=>{try{for(;;){let{done:d,value:T}=await o.read();if(d)break;u+=s.decode(T,{stream:!0});let h=u.split(`
|
|
72
|
+
`);u=h.pop()??"";for(let v of h)if(v.trim())try{let E=JSON.parse(v);m(E).catch(k=>{console.error("[PseudoAcpServer] Failed to handle request:",k)})}catch{console.error("[PseudoAcpServer] Failed to parse message:",v)}}}catch(d){console.error("[PseudoAcpServer] Stream read error:",d)}})();let g=i(async d=>{let T=JSON.stringify(d)+`
|
|
73
|
+
`;await r.write(a.encode(T))},"sendMsg");async function m(d){if(d.method==="initialize")await g({jsonrpc:"2.0",id:d.id,result:{protocolVersion:d.params.protocolVersion,serverInfo:{name:"pseudo-acp-server",version:"1.0.0"},serverCapabilities:{}}});else if(d.method==="session/new"||d.method==="sessions/new")l=d.params?.sessionId??tn(),await g({jsonrpc:"2.0",id:d.id,result:{sessionId:l}});else if(d.method==="session/prompt"||d.method==="chat/prompt"){let T=new AbortController,h=d.params.sessionId;c.set(h,T);let v=i(()=>T.abort(),"onGlobalAbort");f.signal.addEventListener("abort",v);let k=await p(h,d.params.prompt,typeof d.params.model=="string"?d.params.model:void 0,typeof d.params.effort=="string"?d.params.effort:void 0,T.signal).finally(()=>{c.delete(h),f.signal.removeEventListener("abort",v)});await g({jsonrpc:"2.0",id:d.id,result:k.usage?{stopReason:k.stopReason,usage:k.usage}:{stopReason:k.stopReason}})}else if(d.method==="session/cancel"||d.method==="chat/cancel"){let T=c.get(d.params.sessionId);T&&T.abort(),d.id!==void 0&&await g({jsonrpc:"2.0",id:d.id,result:{}})}else d.id!==void 0&&await g({jsonrpc:"2.0",id:d.id,result:{}})}i(m,"handleRequest");let p=i(async(d,T,h,v,E)=>{let k=T.find(P=>P.type==="text")?.text??"";try{let P=e.execute({prompt:k,model:h,reasoningEffort:v,sessionId:d==="default"?void 0:d,signal:E});for await(let y of P){let C=b(y);if(C&&await g({jsonrpc:"2.0",method:"session/update",params:{sessionId:d,update:C}}),y.type==="complete")return{stopReason:E.aborted?"cancelled":"end_turn",usage:y.usage}}return{stopReason:E.aborted?"cancelled":"end_turn"}}catch(P){return E.aborted||P instanceof Error&&P.name==="AbortError"?{stopReason:"cancelled"}:(console.error("[PseudoAcpServer] Error executing prompt:",P),await g({jsonrpc:"2.0",method:"session/update",params:{sessionId:d,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
|
|
74
|
+
[Fatal Error: ${P}]
|
|
75
|
+
`}}}}),{stopReason:"end_turn"})}},"executePrompt"),b=i(d=>{switch(d.type){case"message":if(d.role==="assistant"&&d.content)return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:d.content}};break;case"tool_use":return{sessionUpdate:"tool_call",title:d.toolName,arguments:d.parameters,status:"running",toolCallId:d.toolId||tn()};case"tool_result":return{sessionUpdate:"tool_call_update",toolCallId:d.toolId,status:d.status};case"error":return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
|
|
76
|
+
[Error: ${d.message}]
|
|
77
|
+
`}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:n.readable,outputStream:t.writable,abort:i(()=>{f.abort(),t.readable.cancel().catch(()=>{}),n.writable.abort().catch(()=>{})},"abort"),executor:e}}i(gt,"createPseudoAcpServer");import uo from"node:fs";import co from"node:os";import lo from"node:path";var Ei="gpt-5.4",bi="auto-gemini-3",xi=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],_i=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function fo(e){let t=new Set,n=[];for(let o of e){let r=o.trim();if(!r)continue;let s=r.toLowerCase();t.has(s)||(t.add(s),n.push(r))}return n}i(fo,"dedupePreserveOrder");function Ci(){let e=lo.join(co.homedir(),".codex","config.toml");try{return uo.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(Ci,"readCodexConfiguredModel");function Ti(){let e=lo.join(co.homedir(),".gemini","settings.json");try{let t=JSON.parse(uo.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}i(Ti,"readGeminiConfiguredModel");function be(){return Ci()||Ei}i(be,"getCodexCliDefaultModel");function xe(){return Ti()||bi}i(xe,"getGeminiCliDefaultModel");function Ke(){return fo([be(),...xi])}i(Ke,"getCodexCliKnownModels");function Ue(){return fo([xe(),..._i])}i(Ue,"getGeminiCliKnownModels");var nn=xe(),Pi=Ue(),Si={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},mt=class extends ke{static{i(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:nn,models:Pi.filter(t=>t!==nn).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let t=new pt({model:nn});this.acpClientOptions=gt(t)}getCapabilityProfile(){return G(Si)}serializeImageBlockToPromptToken(t){return/\s/.test(t.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(t.path)}`),null):`@${t.path}`}};function wi(e){return!e||e==="auto"?[]:["--config",`model_reasoning_effort=${JSON.stringify(e)}`]}i(wi,"buildReasoningEffortArgs");var ht=class extends Ee{static{i(this,"CodexCLIExecutor")}model;constructor(t){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...t}),this.model=t?.model??"gpt-5.4"}async checkInstalled(){return dt("codex")}buildArgs(t){this.model=t.model??this.model;let n=t.model?["-m",t.model]:[],o=wi(t.reasoningEffort);return t.sessionId?["exec","resume",t.sessionId,...n,...o,t.prompt,...this.config.baseArgs.filter(r=>r!=="exec")]:[...this.config.baseArgs,...n,...o,t.prompt]}parseLine(t){if(!t.startsWith("{"))return null;try{let n=JSON.parse(t);return this.convertEvent(n)}catch{return null}}convertEvent(t){let n=Date.now();switch(t.type){case"thread.started":return{type:"session_start",timestamp:n,sessionId:t.thread_id??"",model:this.model,raw:t};case"item.completed":return t.item?.type==="agent_message"?{type:"message",timestamp:n,role:"assistant",content:t.item.text??"",raw:t}:t.item?.type==="command_execution"?{type:"tool_use",timestamp:n,toolId:t.item.id,toolName:"Bash",parameters:{command:t.item.command},raw:t}:null;case"turn.completed":return{type:"complete",timestamp:n,status:"success",usage:t.usage?{inputTokens:t.usage.input_tokens,outputTokens:t.usage.output_tokens,totalTokens:t.usage.input_tokens+t.usage.output_tokens}:void 0,raw:t};case"error":case"turn.failed":return{type:"error",timestamp:n,errorType:t.type,message:t.message??"Unknown error",raw:t};default:return null}}};var on=be(),Mi=Ke(),yt=class extends ke{static{i(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:on,models:Mi.filter(t=>t!==on).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let t=new ht({model:on});this.acpClientOptions=gt(t)}};import{existsSync as ji,readFileSync as Fi}from"node:fs";import Ce from"node:path";import{fileURLToPath as Ki}from"node:url";var po=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],go=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],mo=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],ho=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],yo=["native","image-input-native","cli-bridge","image-input-cli-bridge"],vo=["count-tokens","models-list","minimal-message","unsupported"];function ee(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(ee,"isPlainObject");function le(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}i(le,"requireString");function _e(e,t){if(e!==void 0)return le(e,t)}i(_e,"optionalString");function ne(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}i(ne,"optionalNumber");function N(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}i(N,"optionalBoolean");function ko(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,o)=>le(n,`${t}[${o}]`))}}i(ko,"optionalStringArray");function Ri(e,t){if(e===void 0)return;if(!ee(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=le(r,`${t}.${o}`);return n}i(Ri,"optionalStringMap");function Ai(e,t){if(e!==void 0){if(typeof e!="string"||!ho.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${ho.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Ai,"optionalReasoningPreset");function rn(e,t){if(typeof e!="string"||!po.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${po.join(", ")}, got ${JSON.stringify(e)}`);return e}i(rn,"requireReasoningCapability");function Di(e,t){if(typeof e!="string"||!go.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${go.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Di,"requireEffortStrategy");function Ii(e,t){if(e!==void 0){if(typeof e!="string"||!mo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${mo.join(", ")}, got ${JSON.stringify(e)}`);return e}}i(Ii,"optionalThinkingStrategy");function Eo(e,t){if(e===void 0)return;if(!ee(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Di(e.effortStrategy,`${t}.effortStrategy`),o=Ai(e.reasoningPreset,`${t}.reasoningPreset`),r=Ii(e.thinkingStrategy,`${t}.thinkingStrategy`),s=_e(e.defaultEffort,`${t}.defaultEffort`),a=Ri(e.effortAliases,`${t}.effortAliases`),u=ko(e.disabledEfforts,`${t}.disabledEfforts`),l=ko(e.localRejectEfforts,`${t}.localRejectEfforts`),f=N(e.allowCustomEffort,`${t}.allowCustomEffort`),c=N(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),g=N(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=N(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),p=N(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),b=N(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),d=N(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),T=N(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),h={effortStrategy:n};if(o!==void 0&&(h.reasoningPreset=o),r!==void 0&&(h.thinkingStrategy=r),s!==void 0&&(h.defaultEffort=s),a!==void 0&&(h.effortAliases=a),u!==void 0&&(h.disabledEfforts=u),l!==void 0&&(h.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);h.supportedEfforts=e.supportedEfforts.map((v,E)=>{if(!ee(v))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${E}] must be an object`);return{value:le(v.value,`${t}.supportedEfforts[${E}].value`),..._e(v.description,`${t}.supportedEfforts[${E}].description`)!==void 0?{description:_e(v.description,`${t}.supportedEfforts[${E}].description`)}:{},...N(v.isDefault,`${t}.supportedEfforts[${E}].isDefault`)!==void 0?{isDefault:N(v.isDefault,`${t}.supportedEfforts[${E}].isDefault`)}:{},...N(v.isUserVisible,`${t}.supportedEfforts[${E}].isUserVisible`)!==void 0?{isUserVisible:N(v.isUserVisible,`${t}.supportedEfforts[${E}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ee(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let v={};for(let[E,k]of Object.entries(e.budgetByEffort))v[E]=ne(k,`${t}.budgetByEffort.${E}`)??0;h.budgetByEffort=v}return f!==void 0&&(h.allowCustomEffort=f),c!==void 0&&(h.supportsReasoningEffort=c),g!==void 0&&(h.supportsReasoningSummary=g),m!==void 0&&(h.supportsEncryptedReasoningReplay=m),p!==void 0&&(h.supportsAdaptiveThinking=p),b!==void 0&&(h.supportsManualThinkingBudget=b),d!==void 0&&(h.supportsDisabledThinking=d),T!==void 0&&(h.requiresEffortBetaHeader=T),h}i(Eo,"validateReasoningProfile");function bo(e,t){let n=e.reasoningProfile,o=e.reasoningCapabilityV2;if(n!==void 0&&o!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Eo(n,`${t}.reasoningProfile`):Eo(o,`${t}.reasoningCapabilityV2`)}i(bo,"validateReasoningProfileField");function Oi(e,t){if(typeof e!="string"||!yo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${yo.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Oi,"requireProfileName");function $i(e,t){if(typeof e!="string"||!vo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${vo.join(", ")}, got ${JSON.stringify(e)}`);return e}i($i,"requireVerifyStrategy");function Ni(e,t){if(!ee(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=le(e.id,`${t}.id`),o=_e(e.wireModel,`${t}.wireModel`),r=_e(e.displayName,`${t}.displayName`),s=ne(e.contextWindow,`${t}.contextWindow`),a=ne(e.maxOutputTokens,`${t}.maxOutputTokens`),u=ne(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),l=N(e.replayReasoningContent,`${t}.replayReasoningContent`),f=N(e.strictThinkingSignature,`${t}.strictThinkingSignature`),c=ne(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),g=e.reasoningCapability===void 0?void 0:rn(e.reasoningCapability,`${t}.reasoningCapability`),m=bo(e,t),p={id:n};return o!==void 0&&(p.wireModel=o),r!==void 0&&(p.displayName=r),s!==void 0&&(p.contextWindow=s),a!==void 0&&(p.maxOutputTokens=a),u!==void 0&&(p.thinkingBudgetCap=u),g!==void 0&&(p.reasoningCapability=g),m!==void 0&&(p.reasoningProfile=m),l!==void 0&&(p.replayReasoningContent=l),f!==void 0&&(p.strictThinkingSignature=f),c!==void 0&&(p.streamMaxDurationMs=c),p}i(Ni,"validateModelDescriptor");function Li(e,t){if(e===void 0)return;if(!ee(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=rn(r,`${t}.${o}`);return n}i(Li,"validateModelReasoningCapabilities");function Bi(e,t){if(!ee(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=N(e.cliBridge,`providers.${t}.cliBridge`),o=le(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),r=rn(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=bo(e,`providers.${t}`),a=Oi(e.capabilityProfile,`providers.${t}.capabilityProfile`),u=$i(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&u!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${u}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let l=ne(e.contextWindow,`providers.${t}.contextWindow`),f=ne(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),c=ne(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),g=N(e.supportsThinking,`providers.${t}.supportsThinking`),m=Li(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),p=_e(e.model,`providers.${t}.model`);if(n&&(p!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&p===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let b;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);b=e.models.map((h,v)=>Ni(h,`providers.${t}.models[${v}]`));let T=new Set([...p===void 0?[]:[p],...b.map(h=>h.id)]);for(let[h,v]of b.entries())if(v.wireModel!==void 0&&!T.has(v.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${h}].wireModel must reference a declared model, got ${JSON.stringify(v.wireModel)}`)}let d={apiKeyEnv:o,reasoningCapability:r,capabilityProfile:a,verifyStrategy:u};return s!==void 0&&(d.reasoningProfile=s),p!==void 0&&(d.model=p),b!==void 0&&(d.models=b),l!==void 0&&(d.contextWindow=l),f!==void 0&&(d.maxOutputTokens=f),c!==void 0&&(d.thinkingBudgetCap=c),g!==void 0&&(d.supportsThinking=g),m!==void 0&&(d.modelReasoningCapabilities=m),n&&(d.cliBridge=!0),d}i(Bi,"validateProviderEntry");function xo(e){if(!ee(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=le(e.updatedAt,"updatedAt");if(!ee(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[o,r]of Object.entries(e.providers))n[o]=Bi(r,o);return{version:1,updatedAt:t,providers:n}}i(xo,"validateProviderCapabilitiesJson");var Ui=Object.freeze({native:ce,"image-input-native":Xn,"cli-bridge":Le,"image-input-cli-bridge":Vn}),vt=null;function Wi(){if(process.env.KODAX_BUNDLED==="true")return Ce.join(Ce.dirname(process.execPath),"provider-capabilities.json");let e=Ce.dirname(Ki(import.meta.url)),t=[Ce.join(e,"provider-capabilities.json"),Ce.join(Ce.dirname(e),"provider-capabilities.json")];for(let n of t)if(ji(n))return n;return t[0]}i(Wi,"resolveJsonPath");function zi(e){if(e.models){for(let t of e.models)t.reasoningProfile&&_o(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&_o(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(zi,"deepFreezeSnapshot");function _o(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}i(_o,"freezeReasoningProfile");function Xi(e){if(e==="gemini-cli"){let t=xe();return{model:t,models:Ue().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=be();return{model:t,models:Ke().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}i(Xi,"resolveCliBridgeModels");function Vi(e,t){let n=Ui[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let r=Xi(e),s={model:r.model,models:r.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let o={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(o.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(o.models=t.models),t.modelReasoningCapabilities!==void 0&&(o.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(o.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(o.maxOutputTokens=t.maxOutputTokens),t.thinkingBudgetCap!==void 0&&(o.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(o.supportsThinking=t.supportsThinking),o}i(Vi,"buildSnapshot");function Co(){if(vt)return vt;let e=Wi(),t;try{let r=Fi(e,"utf8");t=JSON.parse(r)}catch(r){let s=r instanceof Error?r.message:String(r);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=xo(t),o={};for(let[r,s]of Object.entries(n.providers))o[r]=zi(Vi(r,s));return vt=Object.freeze(o),vt}i(Co,"getProviderSnapshots");import Gi from"@anthropic-ai/sdk";var B=Co();function K(e,t={}){let n=B[e];return{apiKeyEnv:n.apiKeyEnv,model:n.model,reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,models:n.models,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap,supportsThinking:n.supportsThinking??!1,verifyStrategy:n.verifyStrategy,...t}}i(K,"buildProviderConfig");var sn=class extends ${static{i(this,"AnthropicProvider")}name="anthropic";config=K("anthropic",{strictThinkingSignature:!0});buildClient(){return new Gi({apiKey:this.getApiKey()})}},an=class extends ${static{i(this,"ZhipuCodingProvider")}name="zhipu-coding";config=K("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},un=class extends ${static{i(this,"ZaiCodingProvider")}name="zai-coding";config=K("zai-coding",{baseUrl:"https://api.z.ai/api/anthropic",streamMaxDurationMs:3e5})},cn=class extends ${static{i(this,"KimiCodeProvider")}name="kimi-code";config=K("kimi-code",{baseUrl:"https://api.kimi.com/coding/"})},ln=class extends ${static{i(this,"MiniMaxCodingProvider")}name="minimax-coding";config=K("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},fn=class extends ${static{i(this,"MimoCodingProvider")}name="mimo-coding";config=K("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},dn=class extends ${static{i(this,"MimoProvider")}name="mimo";config=K("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},pn=class extends ${static{i(this,"ArkCodingProvider")}name="ark-coding";config=K("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},gn=class extends z{static{i(this,"OpenAIProvider")}name="openai";config=K("openai")},mn=class extends z{static{i(this,"DeepSeekProvider")}name="deepseek";config=K("deepseek",{baseUrl:"https://api.deepseek.com",replayReasoningContent:!0})},hn=class extends z{static{i(this,"KimiProvider")}name="kimi";config=K("kimi",{baseUrl:"https://api.moonshot.cn/v1",replayReasoningContent:!0})},yn=class extends z{static{i(this,"QwenProvider")}name="qwen";config=K("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},vn=class extends ${static{i(this,"QwenTokenPlanProvider")}name="qwen-token-plan";config=K("qwen-token-plan",{baseUrl:"https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic"})},kn=class extends z{static{i(this,"ZhipuProvider")}name="zhipu";config=K("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},X={anthropic:i(()=>new sn,"anthropic"),openai:i(()=>new gn,"openai"),deepseek:i(()=>new mn,"deepseek"),kimi:i(()=>new hn,"kimi"),"kimi-code":i(()=>new cn,"kimi-code"),qwen:i(()=>new yn,"qwen"),"qwen-token-plan":i(()=>new vn,"qwen-token-plan"),zhipu:i(()=>new kn,"zhipu"),"zhipu-coding":i(()=>new an,"zhipu-coding"),"zai-coding":i(()=>new un,"zai-coding"),"minimax-coding":i(()=>new ln,"minimax-coding"),"mimo-coding":i(()=>new fn,"mimo-coding"),mimo:i(()=>new dn,"mimo"),"ark-coding":i(()=>new pn,"ark-coding"),"gemini-cli":i(()=>new mt,"gemini-cli"),"codex-cli":i(()=>new yt,"codex-cli")},En=process.env.KODAX_PROVIDER??"zhipu-coding",To=new Map;function Hi(e){if(j(e))return B[e].apiKeyEnv}i(Hi,"resolveApiKeyEnvForProvider");function Po(e){let t=e??En,n=X[t];if(!n)throw new R(`Unknown provider: ${t}. Available: ${Object.keys(X).join(", ")}`,t);let o=Hi(t),r=fe(t,o?process.env[o]:void 0),s=To.get(t);if(s&&s.apiKey===r)return s.instance;let a=n();return To.set(t,{apiKey:r,instance:a}),a}i(Po,"getProvider");function So(e){return j(e)?fe(e,process.env[B[e].apiKeyEnv])!==void 0:!1}i(So,"isProviderConfigured");function wo(e){return j(e)?B[e].model:null}i(wo,"getProviderModel");function Mo(e,t){if(!j(e))return"unknown";let n=B[e],o=t??n.model;return n.models?.find(s=>s.id===o)?.reasoningCapability??n.modelReasoningCapabilities?.[o]??n.reasoningCapability}i(Mo,"getProviderConfiguredReasoningCapability");function Ro(e){return j(e)?G(B[e].capabilityProfile):null}i(Ro,"getProviderConfiguredCapabilityProfile");function Ao(){let e=[];for(let t of Object.keys(X)){let n=B[t];e.push({name:t,model:n.model,models:n.models?[n.model,...n.models.map(o=>o.id)]:[n.model],configured:!!process.env[n.apiKeyEnv],reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,capabilityProfile:G(n.capabilityProfile)})}return e}i(Ao,"getProviderList");function Do(e){let t=B[e];return t?t.models?[t.model,...t.models.map(n=>n.id)]:[t.model]:[]}i(Do,"getProviderModels");function j(e){return e in X}i(j,"isProviderName");function bn(e){return{id:e.model}}i(bn,"makeDefaultDescriptor");function Io(e,t){if(!t.wireModel)return t;let n=e.models?.find(o=>o.id===t.wireModel);return n?{...n,...t}:t}i(Io,"resolveWireModelDescriptor");function We(e,t,n){let o=n.id===t.model;return{provider:e,model:n.id,displayName:n.displayName??n.id,supportsThinking:t.supportsThinking??!1,reasoningCapability:n.reasoningCapability??t.reasoningCapability,reasoningProfile:n.reasoningProfile??t.reasoningProfile,contextWindow:n.contextWindow??t.contextWindow,maxOutputTokens:n.maxOutputTokens??t.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap??t.thinkingBudgetCap,isDefault:o}}i(We,"effectiveCapabilities");function kt(e){let t=B[e];if(!t)return[];let n=t.models??[],o=n.find(s=>s.id===t.model),r=n.filter(s=>s.id!==t.model);return[o??bn(t),...r].map(s=>Io(t,s))}i(kt,"getProviderModelDescriptors");function Et(e,t){let n=B[e];if(!n)return;let o=n.models?.find(r=>r.id===t);return o?We(e,n,Io(n,o)):t===n.model?We(e,n,bn(n)):We(e,n,{id:t})}i(Et,"getModelCapabilities");function bt(){let e=[];for(let t of Object.keys(X)){let n=B[t];e.push(We(t,n,bn(n)));for(let o of n.models??[])e.push(We(t,n,o))}return e}i(bt,"listBuiltinModelCapabilities");var Ji=new Set(["compat","sdk"]),qi=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function $o(e){return e.reasoningProfile??e.reasoningCapabilityV2}i($o,"getConfiguredReasoningProfile");function Yi(e){return e==="anthropic"?"count-tokens":"models-list"}i(Yi,"defaultVerifyStrategyForProtocol");function xt(e){if(e)return e.effortStrategy==="none"?"none":e.effortStrategy==="prompt-only"?"prompt-only":e.thinkingStrategy==="anthropic-adaptive"?"native-adaptive":e.effortStrategy==="provider-budget"?"native-budget":e.effortStrategy==="provider-toggle"?"native-toggle":"native-effort"}i(xt,"legacyCapabilityFromReasoningProfile");function Qi(e,t,n){if(n===!1)return"none";switch(t){case"none":case"prompt-only":return"none";case"native-toggle":return e==="anthropic"?"generic-thinking-toggle":void 0;case"native-budget":return e==="anthropic"?"anthropic-budget":"qwen-hybrid-thinking";case"native-effort":return e==="anthropic"?"claude-adaptive-max":"openai-chat-reasoning";case"native-adaptive":return e==="anthropic"?"claude-adaptive-max":void 0;default:return n!==!0?void 0:e==="anthropic"?"generic-thinking-toggle":void 0}}i(Qi,"legacyReasoningPresetForProtocol");function Oo(e){return e==="none"||typeof e=="object"&&e!==null&&Array.isArray(e.efforts)}i(Oo,"isSimpleReasoning");function Zi(e,t){if(e==="none")return Qe("none");let n=i(u=>u==="off"?"none":u,"toWire"),o=e.efforts.map(n),r=e.default?n(e.default):void 0,s=o.includes("none"),a=o.map(u=>u===r?{value:u,isDefault:!0}:{value:u});return{effortStrategy:t==="anthropic"?"anthropic-reasoning-effort":"openai-chat-effort",thinkingStrategy:"provider-toggle",...r!==void 0?{defaultEffort:r}:{},supportedEfforts:a,...s?{disabledEfforts:["none"],supportsDisabledThinking:!0}:{},supportsReasoningEffort:!0}}i(Zi,"buildReasoningProfileFromSimple");function No(e,t,n,o){let r=Oo(n)?n:void 0,s=n!==void 0&&!Oo(n)?n:void 0;if(o?.supportsThinking===!1)return Qe("none");if(e)return{...e,...s??{}};if(r!==void 0)return Zi(r,o?.protocol??"openai");let a=t??(o?Qi(o.protocol,o.reasoningCapability,o.supportsThinking):void 0);return a?Qe(a,s):void 0}i(No,"resolveCustomReasoningProfile");function _t(e){return No($o(e),e.reasoningPreset,e.reasoning,{protocol:e.protocol,reasoningCapability:e.reasoningCapability,supportsThinking:e.supportsThinking})}i(_t,"resolveCustomProviderReasoningProfile");function Cn(e,t,n){return No($o(e),e.reasoningPreset,e.reasoning,{protocol:t,reasoningCapability:e.reasoningCapability,supportsThinking:n})}i(Cn,"resolveCustomModelReasoningProfile");function es(e,t,n){if(typeof e=="string")return{id:e};let o=Cn(e,t,n),r=n===!1&&e.reasoningCapability!==void 0?{...e,reasoningCapability:"none"}:e;return o?{...r,reasoningProfile:o}:r}i(es,"customModelDescriptorToFull");function ze(e){if(!e.name||!e.baseUrl||!e.apiKeyEnv||!e.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:e.name,baseUrl:e.baseUrl,apiKeyEnv:e.apiKeyEnv,model:e.model})}`);if(e.protocol!=="anthropic"&&e.protocol!=="openai")throw new Error(`Unknown protocol "${e.protocol}" for custom provider "${e.name}". Must be "anthropic" or "openai".`);if(e.userAgentMode!==void 0&&!Ji.has(e.userAgentMode))throw new Error(`Unknown userAgentMode "${e.userAgentMode}" for custom provider "${e.name}". Must be "compat" or "sdk".`);if(e.verifyStrategy!==void 0){if(!qi.has(e.verifyStrategy))throw new Error(`Unknown verifyStrategy "${e.verifyStrategy}" for custom provider "${e.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(e.protocol==="openai"&&e.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${e.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}i(ze,"validateCustomProviderConfig");function ts(e){let t=e.models?.length?e.models.map(s=>es(s,e.protocol,e.supportsThinking)):void 0,n=_t(e),o=e.supportsThinking===!1?"none":e.reasoningCapability??xt(n)??"none",r=e.supportsThinking??(o!=="none"&&o!=="prompt-only");return{apiKeyEnv:e.apiKeyEnv,model:e.model,baseUrl:e.baseUrl,models:t,userAgentMode:e.userAgentMode,supportsThinking:r,reasoningCapability:o,reasoningProfile:n,capabilityProfile:e.capabilityProfile,contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,thinkingBudgetCap:e.thinkingBudgetCap,replayReasoningContent:e.replayReasoningContent??!1,strictThinkingSignature:e.strictThinkingSignature??!1,streamMaxDurationMs:e.streamMaxDurationMs,verifyStrategy:e.verifyStrategy??Yi(e.protocol)}}i(ts,"buildProviderConfig");function Ct(e){ze(e);let t=ts(e);return e.protocol==="anthropic"?new xn(e.name,t):new _n(e.name,t)}i(Ct,"createCustomProvider");var xn=class extends ${static{i(this,"DynamicAnthropicProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}},_n=class extends z{static{i(this,"DynamicOpenAIProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}};var q=new Map,Tn=new Map,ns=new Set(["native-toggle","native-budget","native-effort","native-adaptive"]);function Lo(e){return e.reasoningCapability!==void 0&&ns.has(e.reasoningCapability)||e.reasoningProfile!==void 0||e.reasoningPreset!==void 0&&e.reasoningPreset!=="none"||e.reasoning!==void 0&&e.reasoning!=="none"}i(Lo,"hasThinkingReasoningConfig");function os(e){if(e.supportsThinking!==!1)return;let t=Lo(e),n=(e.models??[]).some(o=>typeof o!="string"&&Lo(o));(t||n)&&console.warn(`[kodax] Custom provider "${e.name}": its reasoning config (provider- or per-model reasoningCapability / reasoningProfile / reasoning / reasoningPreset) is ignored because supportsThinking is false (thinking stays off). Set supportsThinking: true to enable thinking, or remove the reasoning config.`)}i(os,"warnOnIgnoredReasoningCapability");function Bo(e){let t=new Set,n=new Map,o=new Map;for(let r of e){if(ze(r),t.has(r.name))throw new Error(`Duplicate custom provider name: "${r.name}". Each custom provider must have a unique name.`);r.name in X&&console.warn(`[kodax] Custom provider "${r.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),os(r),t.add(r.name),n.set(r.name,r),o.set(r.name,()=>Ct(r))}q.clear(),Tn.clear();for(let[r,s]of n)q.set(r,s);for(let[r,s]of o)Tn.set(r,s)}i(Bo,"registerCustomProviders");function Tt(e){let t=Tn.get(e);return t?t():void 0}i(Tt,"getCustomProvider");function Pe(e){return q.has(e)}i(Pe,"isCustomProviderName");function Pt(){return[...q.keys()]}i(Pt,"getCustomProviderNames");function jo(){let e=[];for(let[t,n]of q){let o=!!process.env[n.apiKeyEnv],r=_t(n),s=(n.models??[]).map(u=>typeof u=="string"?u:u.id),a=n.model&&s.length?[...new Set([n.model,...s])]:[n.model];e.push({name:t,model:n.model,models:a,configured:o,reasoningCapability:n.supportsThinking===!1?"none":n.reasoningCapability??xt(r)??"none",capabilityProfile:G(n.capabilityProfile??ce),custom:!0})}return e}i(jo,"getCustomProviderList");function Fo(e){let t=q.get(e);if(!t)return;let n=(t.models??[]).map(o=>typeof o=="string"?o:o.id);return t.model&&n.length?[...new Set([t.model,...n])]:[t.model]}i(Fo,"getCustomProviderModels");function Ko(e,t,n){if(typeof e=="string")return{id:e};let o=Cn(e,t,n),r=n===!1&&e.reasoningCapability!==void 0?{...e,reasoningCapability:"none"}:e;return o?{...r,reasoningProfile:o}:r}i(Ko,"customDescriptorToFull");function St(e){let t=q.get(e);if(!t)return;let n=(t.models??[]).map(s=>Ko(s,t.protocol,t.supportsThinking)),o=n.find(s=>s.id===t.model)??{id:t.model},r=n.filter(s=>s.id!==t.model);return[o,...r]}i(St,"getCustomProviderModelDescriptors");function Te(e,t){let n=q.get(e);if(!n)return;let o=t===n.model,r=_t(n),a=(n.models??[]).map(f=>Ko(f,n.protocol,n.supportsThinking)).find(f=>f.id===t)??(o?{id:n.model}:void 0);if(!a)return;let u=n.supportsThinking===!1?r:a.reasoningProfile??r,l=n.supportsThinking===!1?"none":a.reasoningCapability??xt(u)??n.reasoningCapability??"none";return{provider:e,model:a.id,displayName:a.displayName??a.id,supportsThinking:n.supportsThinking??(l!=="none"&&l!=="prompt-only"),reasoningCapability:l,reasoningProfile:u,contextWindow:a.contextWindow??n.contextWindow,maxOutputTokens:a.maxOutputTokens??n.maxOutputTokens,thinkingBudgetCap:a.thinkingBudgetCap??n.thinkingBudgetCap,isDefault:o}}i(Te,"getCustomModelCapabilities");function Uo(e){let t=q.get(e);if(!t)return;let n=t.verifyStrategy??(t.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:n}}i(Uo,"getCustomProviderVerifyMetadata");function wt(){let e=[];for(let[t,n]of q){let o=Te(t,n.model);o&&e.push(o);for(let r of n.models??[]){let s=typeof r=="string"?r:r.id;if(s===n.model)continue;let a=Te(t,s);a&&e.push(a)}}return e}i(wt,"listCustomProviderModelCapabilities");var oe=new Map,rs=0;function Pn(e){let t=oe.get(e);if(!(!t||t.length===0))return t[t.length-1]}i(Pn,"getActiveRuntimeProviderRegistration");function is(e){for(let[t,n]of oe){let o=n.filter(r=>r.id!==e);if(o.length!==n.length){o.length===0?oe.delete(t):oe.set(t,o);return}}}i(is,"removeRuntimeProviderRegistration");function Wo(e,t){let n=e.trim();if(!n)throw new Error("Model provider name cannot be empty.");if(j(n))throw new Error(`Runtime model provider "${n}" conflicts with a built-in provider.`);if(Pe(n))throw new Error(`Runtime model provider "${n}" conflicts with an existing config-defined custom provider.`);let o={id:`runtime-provider:${++rs}`,name:n,factory:t},r=oe.get(n)??[];return oe.set(n,[...r,o]),()=>{is(o.id)}}i(Wo,"registerModelProvider");function Mt(e){let t=Pn(e);return t?t.factory():void 0}i(Mt,"getRuntimeModelProvider");function Xe(e){return Pn(e)!==void 0}i(Xe,"isRuntimeModelProviderName");function Rt(){return Array.from(oe.keys()).filter(e=>Pn(e)!==void 0)}i(Rt,"getRuntimeModelProviderNames");function zo(){oe.clear()}i(zo,"clearRuntimeModelProviders");function Sn(e){if(j(e))return X[e]();let t=Mt(e);if(t)return t;let n=Tt(e);if(n)return n;let o=Dt();throw new Error(`Unknown provider: ${e}. Available: ${o.join(", ")}`)}i(Sn,"resolveProvider");function At(e){return j(e)||Xe(e)||Pe(e)}i(At,"isKnownProvider");function Dt(){let e=Object.keys(X),t=Rt(),n=Pt();return[...new Set([...e,...t,...n])]}i(Dt,"getAvailableProviderNames");function Ve(e){return j(e)?kt(e):St(e)??[]}i(Ve,"resolveProviderModelDescriptors");function It(e,t){return j(e)?Et(e,t):Te(e,t)}i(It,"resolveModelCapabilities");function Xo(){return[...bt(),...wt()]}i(Xo,"listAllModelCapabilities");function ss(e){if(j(e)){let t=B[e];return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:t.verifyStrategy}}if(!Xe(e))return Uo(e)}i(ss,"getProviderVerifyMetadata");async function Vo(e,t){let n=ss(e);if(!n&&!At(e))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${e}". Available: ${Dt().join(", ")}`};if(n?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${e}" 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 "${e}"`};let o;try{o=Sn(e)}catch(r){return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(r?.message??r).slice(0,240)}}try{return await o.verifyCredential(t)}catch(r){return{ok:!1,error:"unknown",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(r?.message??r).slice(0,240)}}}i(Vo,"verifyProviderCredential");async function Go(e,t){if(!At(e))return{ok:!1,source:"failed",error:`Unknown provider: "${e}"`,durationMs:0};let n=Ve(e);return n.length===0?{ok:!1,source:"failed",error:`Provider "${e}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:n.map(r=>r.id),durationMs:0}}i(Go,"listProviderModels");function as(e){let t=e.model??Ve(e.provider)[0]?.id,n=t?It(e.provider,t)?.reasoningProfile:void 0;if(!n)return{effort:void 0,configuredEffort:void 0,adjusted:!1};let o=e.rejectedEfforts&&e.rejectedEfforts.length>0?Bt(n,e.rejectedEfforts):n,r=Ne({capability:o,sessionEffort:e.desiredEffort}),s=r.effectiveEffort;return s!==void 0&&e.rejectedEfforts?.includes(s)&&(s=void 0),{effort:s,configuredEffort:r.configuredEffort,adjusted:s!==r.configuredEffort}}i(as,"resolveWireEffort");var Ho={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375,cacheReadPer1M:.375,cacheWritePer1M:3.75},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08,cacheReadPer1M:.08,cacheWritePer1M:1}},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:{"kimi-k2.7-code":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.182},"kimi-k2.7-code-highspeed":{inputPer1M:1.82,outputPer1M:7.56,cachePer1M:.364},"kimi-k2.6":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.154},"kimi-k2.5":{inputPer1M:.56,outputPer1M:2.94,cachePer1M:.098}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015},k3:{inputPer1M:.005,outputPer1M:.015},"k3-256k":{inputPer1M:.005,outputPer1M:.015},"kimi-for-coding-highspeed":{inputPer1M:.015,outputPer1M:.045}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},"qwen-token-plan":{"qwen3.8-max-preview":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-max":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-plus":{inputPer1M:.005,outputPer1M:.015},"qwen3.6-flash":{inputPer1M:.005,outputPer1M:.015},"glm-5.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015}},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}},"zai-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.2":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.7-code":{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-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},"doubao-seed-code":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function wn(e,t,n){let o=n?.[e]?.[t];return o||Ho[e]?.[t]}i(wn,"getCostRate");function Mn(e,t,n,o=0,r=0){let s=Math.max(0,t-o-r),a=e.cacheReadPer1M??e.cachePer1M??e.inputPer1M,u=e.cacheWritePer1M??e.cachePer1M??e.inputPer1M,l=s/1e6*e.inputPer1M,f=n/1e6*e.outputPer1M,c=o/1e6*a,g=r/1e6*u;return l+f+c+g}i(Mn,"calculateCost");function us(){return{records:[],retries:[]}}i(us,"createCostTracker");function Rn(e,t){let n={timestamp:Date.now(),provider:t.provider,waitMs:t.waitMs,reason:t.reason,source:t.source};return{records:e.records,retries:[...e.retries,n]}}i(Rn,"recordRetry");function An(e,t,n){let o=wn(t.provider,t.model,n),r=o?Mn(o,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens):0,s={timestamp:Date.now(),provider:t.provider,model:t.model,inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheReadTokens:t.cacheReadTokens??0,cacheWriteTokens:t.cacheWriteTokens??0,cost:r,role:t.role};return{records:[...e.records,s],retries:e.retries}}i(An,"recordUsage");function cs(e){let t=0,n=0,o=0,r=0,s=0,a=0,u={},l={};for(let g of e.records){t+=g.cost,n+=g.inputTokens,o+=g.outputTokens,r+=g.cacheReadTokens+g.cacheWriteTokens,s+=g.cacheReadTokens,a+=g.cacheWriteTokens;let m=u[g.provider];u[g.provider]={cost:(m?.cost??0)+g.cost,calls:(m?.calls??0)+1,inputTokens:(m?.inputTokens??0)+g.inputTokens,outputTokens:(m?.outputTokens??0)+g.outputTokens};let p=g.role??"default",b=l[p];l[p]={cost:(b?.cost??0)+g.cost,calls:(b?.calls??0)+1,inputTokens:(b?.inputTokens??0)+g.inputTokens,outputTokens:(b?.outputTokens??0)+g.outputTokens}}let f=0;for(let g of e.retries)f+=g.waitMs;let c=r>0?s/r:0;return{totalCost:t,totalInputTokens:n,totalOutputTokens:o,totalCacheTokens:r,totalCacheReadTokens:s,totalCacheWriteTokens:a,cacheHitRate:c,callCount:e.records.length,retryCount:e.retries.length,retryWaitMs:f,byProvider:u,byRole:l}}i(cs,"getSummary");function Ot(e){return e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}i(Ot,"formatCost");function ls(e){let t=[];if(t.push(`Session Cost: ${Ot(e.totalCost)} (${e.callCount} calls)`),t.push(`Tokens: ${e.totalInputTokens.toLocaleString()} in / ${e.totalOutputTokens.toLocaleString()} out`),e.totalCacheTokens>0){let r=(e.cacheHitRate*100).toFixed(0);t.push(`Cache: ${e.totalCacheTokens.toLocaleString()} tokens (${e.totalCacheReadTokens.toLocaleString()} read / ${e.totalCacheWriteTokens.toLocaleString()} write, ${r}% hit rate)`)}if(e.retryCount>0){let r=(e.retryWaitMs/1e3).toFixed(1);t.push(`Retries: ${e.retryCount} (${r}s total wait)`)}t.push("");let n=Object.entries(e.byProvider).sort((r,s)=>s[1].cost-r[1].cost);if(n.length>0){t.push("By Provider:");for(let[r,s]of n)t.push(` ${r}: ${Ot(s.cost)} (${s.calls} calls, ${s.inputTokens.toLocaleString()} in / ${s.outputTokens.toLocaleString()} out)`);t.push("")}let o=Object.entries(e.byRole).sort((r,s)=>s[1].cost-r[1].cost);if(o.length>1){t.push("By Role:");for(let[r,s]of o)t.push(` ${r}: ${Ot(s.cost)} (${s.calls} calls)`)}return t.join(`
|
|
78
|
+
`)}i(ls,"formatCostReport");import{performance as Dn}from"node:perf_hooks";var Jo={inputTokens:0,outputTokens:0,totalTokens:0},fs=3e4;function ds(e){if(!e)return{effort:"none"};let t=new Set(e.localRejectEfforts??[]),n=e.supportedEfforts?.filter(r=>r.isUserVisible!==!1).map(r=>r.value).filter(r=>!t.has(r));if(!t.has("none")&&(e.supportsDisabledThinking===!0||n?.includes("none")))return{effort:"none"};let o=n?.find(r=>r!=="none");return o===void 0?void 0:{effort:o}}i(ds,"resolveDefaultSideQueryReasoning");async function ps(e){let t=new AbortController,n=e.timeoutMs??fs,o=e.costTracker,r=Dn.now(),s,a=0,u=0,l=i(p=>{let b=Math.max(0,Math.round(Dn.now()-r));return{provider:e.provider.name,model:e.model,timeoutMs:n,elapsedMs:b,retryCount:a,retryWaitMs:u,...s!==void 0?{firstOutputMs:s,streamMs:Math.max(0,b-s)}:{},terminalPhase:p}},"diagnostics"),f,c=i(p=>{f||(f=p),t.abort()},"recordAbort"),g=setTimeout(()=>c("timeout"),n),m=i(()=>c("parent"),"onParentAbort");e.abortSignal&&(e.abortSignal.aborted?c("parent"):e.abortSignal.addEventListener("abort",m,{once:!0}));try{let p=await e.provider.stream([...e.messages],[],e.system,e.reasoning??ds(e.provider.getReasoningProfile(e.model)),{modelOverride:e.model,...gs(e.maxOutputTokens)?{maxOutputTokensOverride:e.maxOutputTokens}:{},onTextDelta:i(v=>{v.length>0&&s===void 0&&(s=Math.max(0,Math.round(Dn.now()-r)))},"onTextDelta"),onRetryAfter:i(v=>{a+=1,u+=Math.max(0,v.waitMs),o&&(o=Rn(o,{provider:v.provider,waitMs:v.waitMs,reason:v.reason,source:v.source}))},"onRetryAfter")},t.signal),b=p.usage??Jo,d=p.textBlocks??[],T=p.toolBlocks??[],h=d.map(v=>v.text).join("");return T.length>0?{text:h,usage:b,costTracker:o,stopReason:"error",diagnostics:l("contract_error"),error:new Error(`sideQuery: provider returned ${T.length} tool_use block(s); sideQuery expects text-only output`)}:(o&&(o=An(o,{provider:e.provider.name,model:e.model,inputTokens:b.inputTokens,outputTokens:b.outputTokens,cacheReadTokens:b.cachedReadTokens,cacheWriteTokens:b.cachedWriteTokens,role:e.querySource})),{text:h,usage:b,costTracker:o,stopReason:ms(p.stopReason),diagnostics:l("completed")})}catch(p){let b=p instanceof Error?p:new Error(String(p)),d="error";return t.signal.aborted&&(d=f==="timeout"?"timeout":"aborted"),{text:"",usage:Jo,costTracker:o,stopReason:d,diagnostics:l(s===void 0?"pre_output":"streaming"),error:b}}finally{clearTimeout(g),e.abortSignal&&e.abortSignal.removeEventListener("abort",m)}}i(ps,"sideQuery");function gs(e){return e!==void 0&&Number.isInteger(e)&&e>0}i(gs,"isPositiveInteger");function ms(e){return e==="max_tokens"?"max_tokens":"end_turn"}i(ms,"mapStopReason");export{Yo as a,Qo as b,Zo as c,Q as d,R as e,Re as f,$t as g,Nt as h,Lt as i,er as j,tr as k,nr as l,Ae as m,or as n,rr as o,qe as p,Bt as q,ir as r,sr as s,ar as t,ur as u,cr as v,de as w,In as x,On as y,Ut as z,pe as A,Ze as B,$e as C,$n as D,dr as E,Nn as F,Ne as G,pr as H,yr as I,ae as J,ue as K,Wt as L,et as M,tt as N,Wn as O,zn as P,Pr as Q,Sr as R,ge as S,nt as T,J as U,Dr as V,Jn as W,he as X,ye as Y,Vt as Z,Gt as _,ve as $,Ht as aa,Be as ba,$ as ca,z as da,be as ea,xe as fa,Ke as ga,Ue as ha,B as ia,X as ja,En as ka,Po as la,So as ma,wo as na,Mo as oa,Ro as pa,Ao as qa,Do as ra,j as sa,kt as ta,Et as ua,bt as va,ze as wa,Ct as xa,Bo as ya,Tt as za,Pe as Aa,Pt as Ba,jo as Ca,Fo as Da,St as Ea,Te as Fa,wt as Ga,Wo as Ha,Mt as Ia,Xe as Ja,Rt as Ka,zo as La,Sn as Ma,At as Na,Dt as Oa,Ve as Pa,It as Qa,Xo as Ra,Vo as Sa,Go as Ta,as as Ua,Ho as Va,wn as Wa,Mn as Xa,us as Ya,Rn as Za,An as _a,cs as $a,Ot as ab,ls as bb,ps as cb};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{a}from"./chunk-PFH53O4M.js";import"./chunk-OG6DRNKV.js";import"./chunk-GAFFYJU3.js";import"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{a as loadCompactionConfig};
|
package/dist/chunks/{construction-bootstrap-ZJPXUPXQ.js → construction-bootstrap-EGRUHKLP.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import"./chunk-
|
|
2
|
+
import"./chunk-EAD4SF3Z.js";import"./chunk-6RI2RBTF.js";import"./chunk-M7FXNPWV.js";import"./chunk-AGDDM5AW.js";import"./chunk-64M5HOCA.js";import"./chunk-MBAPT2R5.js";import{$b as a,ec as i,lc as l,qc as c}from"./chunk-HVCNAZ52.js";import"./chunk-XXQLPTAN.js";import"./chunk-OG6DRNKV.js";import"./chunk-GAFFYJU3.js";import"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import{a as n}from"./chunk-ONUPGMER.js";var r=null;function y(e){r=e}n(y,"bindAskUserForConstruction");function p(e){return e.content?.capabilities?.tools??[]}n(p,"readDeclaredTools");var m=n(async e=>{if(!r)return"reject";let t=p(e),o=t.length>0?t.join(", "):"<none>";return await r({question:`Activate constructed tool ${e.name}@${e.version}?
|
|
3
3
|
It declares capabilities.tools = [${o}].`,allowCustomInput:!1,options:[{label:"Approve \u2014 register and make callable",description:"The tool will be added to the active tool registry and the LLM can invoke it on the next turn.",value:"approve"},{label:"Reject \u2014 do not register",description:"The artifact stays staged on disk; rerun activate_tool to retry.",value:"reject"}]})==="approve"?"approve":"reject"},"replConstructionPolicy"),v=n(async e=>{if(!r)return"reject";let t=e.llmSummary.flaggedConcerns.length>0?e.llmSummary.flaggedConcerns.map(u=>` \u2022 ${u}`).join(`
|
|
4
4
|
`):" \u2022 <none>",o=e.prevContent.instructions??"<no instructions>",s=e.nextContent.instructions??"<no instructions>",d=[`Self-modify activation: ${e.agentName}@${e.fromVersion} \u2192 ${e.toVersion}`,"",`LLM diff summary (severity=${e.llmSummary.severity}):`,` ${e.llmSummary.summary}`,"","Flagged concerns:",t,"",`Budget remaining (after approve): ${e.budgetRemaining-1}/${e.budgetLimit}`,"","\u2500\u2500 Previous instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",o,"\u2500\u2500 Proposed instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",s,"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500","","The LLM summary is advisory \u2014 read the proposed instructions above before approving."].join(`
|
|
5
5
|
`);return await r({question:d,allowCustomInput:!1,options:[{label:"Approve \u2014 activate the new version on the next run",description:"Resolver swap is deferred to the next Runner.run boundary so the in-flight conversation keeps the prior reference.",value:"approve"},{label:"Reject \u2014 stay on the previous version",description:"Budget is not consumed on rejection; the staged version is left on disk for diff inspection.",value:"reject"}]})==="approve"?"approve":"reject"},"replSelfModifyAskUser");async function h(e){a({cwd:e,policy:m,selfModifyAskUser:v});let t=await i();await c();let o=await l({cwd:e});return{loaded:t.loaded,failed:t.failed,tampered:t.tampered,markdownLoaded:o.loaded,markdownFailures:o.failed}}n(h,"bootstrapConstructionRuntime");export{y as bindAskUserForConstruction,h as bootstrapConstructionRuntime};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{$ as Vh,A as uh,Aa as ui,B as vh,Ba as vi,C as wh,Ca as wi,D as xh,Da as xi,E as yh,Ea as yi,F as zh,Fa as zi,G as Ah,Ga as Ai,H as Bh,Ha as Bi,I as Ch,Ia as Ci,J as Dh,Ja as Di,K as Eh,Ka as Ei,L as Fh,La as Fi,M as Gh,Ma as Gi,N as Hh,O as Ih,P as Jh,Q as Kh,R as Lh,S as Mh,T as Nh,U as Oh,V as Ph,W as Qh,X as Rh,Y as Sh,Z as Th,_ as Uh,a as aa,aa as Wh,b as ba,ba as Xh,c as ca,ca as Yh,d as Zg,da as Zh,e as _g,ea as _h,f as $g,fa as $h,g as ah,ga as ai,h as bh,ha as bi,i as ch,ia as ci,j as dh,ja as di,k as eh,ka as ei,l as fh,la as fi,m as gh,ma as gi,n as hh,na as hi,o as ih,oa as ii,p as jh,pa as ji,q as kh,qa as ki,r as lh,ra as li,s as mh,sa as mi,t as nh,ta as ni,u as oh,ua as oi,v as ph,va as pi,w as qh,wa as qi,x as rh,xa as ri,y as sh,ya as si,z as th,za as ti}from"./chunk-EAD4SF3Z.js";import{a as ag,b as bg,c as cg,d as dg,e as eg,f as fg,g as gg,h as hg,i as ig,j as Tg}from"./chunk-6RI2RBTF.js";import{A as Jg,B as Kg,C as Lg,D as Mg,E as Ng,F as Og,G as Pg,H as Qg,I as Rg,J as Sg,a as jg,b as kg,c as lg,d as mg,e as ng,f as og,g as pg,h as qg,i as rg,j as sg,k as tg,l as ug,m as vg,n as wg,o as xg,p as yg,q as zg,r as Ag,s as Bg,t as Cg,u as Dg,v as Eg,w as Fg,x as Gg,y as Hg,z as Ig}from"./chunk-M7FXNPWV.js";import{$ as Nf,A as vf,B as wf,Ba as Ug,C as xf,Ca as Vg,D as yf,E as zf,F as Af,I as Bf,J as Cf,Ja as Wg,K as Df,Ka as Xg,L as Ef,M as Ff,Ma as Yg,N as Gf,O as Hf,T as If,U as Jf,V as Kf,W as Lf,X as Mf,a as $,aa as Of,b as Aa,ba as Pf,c as Ba,ca as Qf,d as af,e as bf,f as cf,fa as Rf,g as df,h as ef,i as ff,k as kf,l as lf,m as mf,n as nf,o as of,p as pf,q as qf,v as rf,w as sf,y as tf,z as uf}from"./chunk-AGDDM5AW.js";import"./chunk-64M5HOCA.js";import{a as $f}from"./chunk-MBAPT2R5.js";import{$ as nc,$b as de,$c as Ve,Aa as Lc,Ab as Ed,Ad as Xf,B as $b,Ba as Mc,Bb as Fd,C as ac,Ca as Nc,Cb as Gd,D as bc,Da as Oc,Db as Hd,E as cc,Eb as Id,F as dc,Fa as Pc,Fb as Jd,Fc as Ce,G as ec,Ga as Qc,Gb as Kd,Gc as De,Ha as Rc,Hb as Ld,Hc as Ee,Hd as Yf,Ia as Sc,Ib as Md,Ic as Fe,Id as Zf,Ja as Tc,Jb as Nd,Jc as Ge,Jd as _f,Ka as Uc,Kb as Od,Kc as He,La as Vc,Lb as Pd,Lc as Ie,Ma as Wc,Mb as Qd,Mc as Je,N as fc,Na as Xc,Nb as Rd,Nc as Ke,O as gc,Oa as Yc,Ob as Sd,Oc as Le,P as hc,Pa as Zc,Pb as Td,Pc as Me,Q as ic,Qa as _c,Qb as Ud,Qc as Ne,R as jc,Ra as $c,Rb as Vd,Rc as Oe,Sa as ad,Sb as Wd,Sc as Pe,Ta as bd,Tb as Xd,Tc as Qe,Ua as cd,Ub as Yd,Uc as Re,Va as dd,Vb as Zd,Vc as Se,W as kc,Wa as ed,Wb as _d,Wc as Te,Xa as fd,Xb as $d,Y as lc,Ya as gd,Yb as ae,Za as hd,Zb as be,_ as mc,_a as id,_b as ce,_c as Ue,aa as oc,ab as jd,ac as ee,ad as We,ba as pc,bb as kd,bc as fe,bd as Xe,ca as qc,cb as ld,cc as ge,cd as Ye,d as Nb,db as md,dc as he,dd as Ze,e as Ob,ea as rc,eb as nd,ec as ie,ed as _e,fa as sc,fb as od,fc as je,fd as $e,ga as tc,gb as pd,gc as ke,gd as gf,ha as uc,hb as qd,hc as le,hd as hf,ia as vc,ib as rd,ic as me,id as jf,ja as wc,jb as sd,jc as ne,ka as xc,kb as td,kc as oe,l as Pb,la as yc,lb as ud,lc as pe,m as Qb,ma as zc,mb as vd,mc as qe,n as Rb,na as Ac,nb as wd,nc as re,o as Sb,oa as Bc,ob as xd,oc as se,p as Tb,pa as Cc,pc as te,q as Ub,qa as Dc,qc as ue,r as Vb,ra as Ec,rb as yd,rc as ve,s as Wb,sa as Fc,sc as we,t as Xb,ta as Gc,tc as xe,u as Yb,ua as Hc,uc as ye,v as Zb,vb as zd,vc as ze,vd as Sf,w as _b,wb as Ad,wc as Ae,wd as Tf,xa as Ic,xb as Bd,xc as Be,xd as Uf,ya as Jc,yb as Cd,yd as Vf,za as Kc,zb as Dd,zd as Wf}from"./chunk-HVCNAZ52.js";import{Aa as I,Ba as J,C as h,Ca as K,D as i,Da as L,E as j,Ea as M,F as k,Fa as N,G as l,Ga as O,H as m,Ha as P,Ia as Q,Ja as R,Ka as S,La as T,Ma as U,Na as V,Oa as W,Pa as X,Qa as Y,Ra as Z,U as n,Ua as _,ca as o,d as a,da as p,e as b,f as c,ia as q,ja as r,ka as s,la as t,m as d,ma as u,n as e,na as v,oa as w,pa as x,qa as y,ra as z,sa as A,ta as B,ua as C,v as f,va as D,w as g,wa as E,xa as F,ya as G,za as H}from"./chunk-XXQLPTAN.js";import{Ac as vb,Ec as wb,Fc as xb,Mc as yb,Nc as zb,Oc as Ab,Pc as Bb,Qc as Cb,Rc as Db,Sc as Eb,Uc as Fb,Vc as Gb,Wc as Hb,Xc as Ib,Yc as Jb,Zc as Kb,a as Ca,b as Da,bc as Za,c as Ea,cc as _a,d as Fa,dc as $a,e as Ga,ec as ab,ed as Lb,f as Ha,fc as bb,fd as Mb,gc as cb,h as Ia,hc as db,i as Ja,ic as eb,j as Ka,jc as fb,k as La,kc as gb,l as Ma,lc as hb,mc as ib,nc as jb,oc as kb,pc as lb,qc as mb,rc as nb,s as Na,sa as Ra,sb as Xa,sc as ob,t as Oa,tb as Ya,tc as pb,u as Pa,uc as qb,v as Qa,va as Sa,vc as rb,wc as sb,yc as tb,zc as ub}from"./chunk-OG6DRNKV.js";import{d as Ta,e as Ua,f as Va,i as Wa}from"./chunk-GAFFYJU3.js";import{F as za,a as da,b as ea,c as fa,d as ga,e as ha,f as ia,g as ja,h as ka,i as la,j as ma,k as na,l as oa,m as pa,n as qa,o as ra,p as sa,q as ta,r as ua,s as va,t as wa,u as xa,y as ya}from"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{vf as ALWAYS_RESIDENT_TOOL_NAMES,_h as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,$h as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,ti as BASH_POLICY_SPEC,lh as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,ei as BREAKER_ERROR_THRESHOLD,fi as BREAKER_WINDOW_MS,ug as BUILTIN_WORKFLOWS,Ob as CANCELLED_TOOL_RESULT_MESSAGE,Nb as CANCELLED_TOOL_RESULT_PREFIX,Nh as CODING_AGENT_MARKER,dh as CODING_INVARIANTS,Ug as CODING_SUMMARY_PROMPT,Vg as CODING_UPDATE_SUMMARY_PROMPT,Od as CapabilityDeniedError,fh as Client,Yf as CodingActorSession,xe as CombinedExtensionRuntime,Pd as ConstructionManifestError,Th as DEFAULT_CLASSIFIER_TIMEOUT_MS,Wg as DEFAULT_CODING_AGENT_NAME,Ch as DEFAULT_DANGEROUS_PATTERNS,Md as DEFAULT_HANDLER_TIMEOUT_MS,Bf as DEFAULT_RESILIENCE_CONFIG,Bh as DEFAULT_SAFE_PATTERNS,Zd as DEFAULT_SELF_MODIFY_BUDGET,pi as DEFAULT_SPECULATIVE_WINDOW_MS,Qb as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Pb as DEFAULT_TOOL_OUTPUT_MAX_LINES,bg as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,Qa as DefaultSummaryCompaction,Kh as EMIT_VERDICT_TOOL_NAME,Aa as ErrorCategory,mg as FINDING_VERIFICATION_OUTPUT_SCHEMA,ed as GENERATOR_AGENT_NAME,ea as ImageResizeError,Ja as KODAX_API_MIN_INTERVAL,s as KODAX_DEFAULT_PROVIDER,Da as KODAX_DEFAULT_TIMEOUT,va as KODAX_FILE_MEDIA_TYPES,Ea as KODAX_HARD_TIMEOUT,ta as KODAX_IMAGE_MEDIA_TYPES,Ha as KODAX_MAX_INCOMPLETE_RETRIES,Fa as KODAX_MAX_RETRIES,Ca as KODAX_MAX_TOKENS,r as KODAX_PROVIDERS,q as KODAX_PROVIDER_SNAPSHOTS,f as KODAX_REASONING_MODE_SEQUENCE,Ga as KODAX_RETRY_BASE_DELAY,g as KODAX_STABLE_EFFORT_INTENTS,Ia as KODAX_STAGGER_DELAY,Ce as KODAX_TOOLS,ac as KODAX_UNDERLYING_CAPABILITY_TOPICS,ua as KODAX_VIDEO_MEDIA_TYPES,o as KodaXAnthropicCompatProvider,n as KodaXBaseProvider,fh as KodaXClient,a as KodaXError,we as KodaXExtensionRuntime,da as KodaXMediaError,p as KodaXOpenAICompatProvider,b as KodaXProviderError,c as KodaXRateLimitError,ba as KodaXSessionError,ca as KodaXTerminalError,aa as KodaXToolError,tb as LINEAGE_ENTRY_TYPES,Uf as LSP_SERVERS,vb as LineageCompaction,ub as LineageExtension,Vf as LspService,bc as MANUAL_REGISTRY,$b as MANUAL_TOPIC_IDS,ka as MAX_DIMENSION,eb as McpAuthRequiredError,qb as McpCapabilityProvider,db as McpExpiredSessionError,rb as McpManager,pb as McpServerRuntime,pa as PASTE_TMP_DIR_ENV,qa as PASTE_TMP_TTL_MS,dd as PLANNER_AGENT_NAME,Ka as PROMISE_PATTERN,bf as PROMPT_SECTION_REGISTRY,Mh as PROTOCOL_EMITTER_TOOLS,Hf as ProviderRecoveryCoordinator,Rb as READ_DEFAULT_LIMIT,Tb as READ_MAX_LINE_CHARS,Sb as READ_PREFLIGHT_SIZE_BYTES,se as REPO_EXPLORER_AGENT_NAME,te as REPO_EXPLORER_TOOL_NAMES,Sa as Runner,lg as SCOPED_REVIEW_OUTPUT_SCHEMA,cd as SCOUT_AGENT_NAME,Di as SCOUT_THEN_AUTHOR_PROMPT_LINES,lf as SELF_KNOWLEDGE_ROUTING_RULE,af as SYSTEM_PROMPT,Lg as SYSTEM_WORKFLOW_LIMITS,Ff as StableBoundaryTracker,la as TARGET_RAW_SIZE_BYTES,hd as TASK_ENGINE_ROLE_AGENTS,Oh as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,wi as TRACING_ENV,fd as WORKER_AGENT_NAME,ag as WORKFLOW_GENERATION_SYSTEM_PROMPT,ee as _resetRuntimeForTesting,he as activate,ya as actorQueueId,wc as analyzeChangedScope,Xd as appendAuditEntry,Db as appendSessionLineageLabel,sd as applyAccountingDelta,pg as applyFindingVerification,Eb as applySessionCompaction,lc as applyToolResultGuardrail,Kb as archiveOldIslands,Fi as authorWorkflowViaWorker,di as autoModeDenialShouldFallback,mi as bashSignalCollector,xi as bootstrapTracing,$g as boundedRevise,ii as breakerShouldFallback,ah as budgetCeiling,Mg as buildApprovalSummary,vd as buildBlockedGoal,mf as buildCapabilityContextSections,Qh as buildClassifierPrompt,wd as buildCompleteGoal,rd as buildCreatedGoal,Of as buildFallbackRoutingDecision,ph as buildGoalRuntimeBinding,ob as buildInitializeCapabilities,Ud as buildLlmReviewPrompt,dc as buildManualToolDescription,uh as buildMcpReverseCapabilities,td as buildPausedGoal,qf as buildPromptMessageContent,ff as buildPromptSnapshot,If as buildProviderCapabilitySnapshot,Pf as buildProviderPolicyHintsForDecision,Jf as buildProviderPolicyPromptNotes,vc as buildRepoIntelligenceContext,Ic as buildRepoIntelligenceIndex,sc as buildRepoOverview,ud as buildResumedGoal,sg as buildScopedReviewFinalPrompt,qg as buildScopedReviewPrimaryPrompt,rg as buildScopedReviewVerificationPrompt,Ei as buildScoutThenAuthorPrompt,kf as buildSelfKnowledgeRoutingRule,Ib as buildSessionTree,of as buildSystemPrompt,nf as buildSystemPromptSnapshot,Ze as buildToolResultBudget,_e as buildToolResultBudgetFromUsage,zd as buildToolSearchIndex,Ig as buildWorkflowCostReport,fg as buildWorkflowGenerationSkillContext,eg as buildWorkflowGenerationUserPrompt,li as checkAbsoluteDeny,pf as checkIncompleteToolCalls,Rf as checkPromiseSignal,$e as clampToolResultPolicyToBudget,Ng as clampWorkflowLimits,Uh as classify,Eh as classifyBashCommand,Ba as classifyError,rc as classifyFileCategory,Df as classifyResilienceError,Ve as cleanupExpiredToolOutputs,Ya as cleanupIncompleteToolCalls,We as cleanupUnreferencedToolOutputs,T as clearRuntimeModelProviders,oi as collectAllSignals,ye as combineExtensionRuntimes,Gh as computeInputSignature,Vh as computeRulesFingerprint,de as configureRuntime,zf as consumeCompactionCooldown,Xc as convertCapabilityReadResult,Wc as convertProviderSearchResults,Jb as countActiveLineageMessages,Ma as countTokens,Na as createAgent,ai as createAutoModeDenialTracker,si as createAutoModeToolGuardrail,Dh as createBashClassifierConfig,vi as createBashPrefixExtractor,Ke as createBuiltinToolDefinition,gi as createCircuitBreaker,jg as createCodingWorkflowBackend,xf as createCompactionAntiThrashState,Qd as createCtxProxy,F as createCustomProvider,Xg as createDefaultCodingAgent,Fh as createDenialTracker,ze as createExtensionRuntime,_f as createExternalActorTurnExecutor,ia as createFileArtifactFromPath,Oa as createHandoff,ha as createImageArtifactFromPath,Pa as createInMemorySession,xh as createKodaXTaskRunner,Zf as createLocalCodingActorControl,_a as createMcpCapabilityId,sb as createMcpManager,fb as createMcpTransport,cf as createPromptSection,Qf as createReasoningPlan,Kg as createRunGraphWriter,uf as createRuntimeContextBudgetSnapshot,Zg as createSessionControl,yb as createSessionLineage,Ph as createToolResultTruncationGuardrail,ja as createVideoArtifactFromPath,zi as createWorkflowLifecycleController,Ci as createWorkflowPatternTemplateModule,Rg as createWorkflowRunManager,hh as decideWorkflowInvocation,Hd as dedupeExtensionPathsByEntrypoint,Za as defaultMcpCacheDir,Nd as defaultPolicy,Dg as deleteSavedWorkflow,ce as disableSelfModify,jb as discoverAuthorizationServerMetadata,Ld as discoverDefaultExtensions,Kd as discoverExtensionsInDirectory,Jd as discoverExtensionsInDirectoryDetailed,re as discoverMarkdownAgents,kb as discoverOAuthEndpoints,ib as discoverProtectedResourceMetadata,xg as discoverSavedWorkflows,kd as drainPendingSwaps,j as effortToLegacyReasoningMode,Lh as emitVerdict,Pg as emitWorkflowAgentDigest,za as enqueueWithArtifacts,ue as ensureBuiltinRepoExplorerAgent,La as estimateTokens,tf as estimateToolSchemaTokens,Kf as evaluateProviderPolicy,Id as excludeExtensionPathsByEntrypoint,Cd as exec,Ue as executeTool,Lb as extractArtifactLedger,ui as extractCommandPrefix,sf as extractComparableUserMessageText,Vc as extractHtmlTitle,hb as extractInsufficientScope,rf as extractPromptComparableText,gb as extractResourceMetadataUrl,xb as extractTitleFromMessages,ni as fileSignalCollector,Zc as finalizeRetrievalResult,ne as findByVersion,Fb as findPreviousUserEntryId,Hb as forkSessionLineage,jf as formatAgentsForPrompt,zh as formatParallelDispatchResult,Ub as formatSize,wb as generateSessionId,hg as generateWorkflow,ig as generateWorkflowFromOptions,Be as getActiveExtensionRuntime,Ua as getAgentConfigHome,Va as getAgentConfigPath,Me as getAllRegisteredTools,Wa as getAppDataDir,W as getAvailableProviderNames,Je as getBuiltinRegisteredToolDefinition,Ie as getBuiltinToolDefinition,vg as getBuiltinWorkflow,N as getCustomModelCapabilities,H as getCustomProvider,K as getCustomProviderList,M as getCustomProviderModelDescriptors,L as getCustomProviderModels,J as getCustomProviderNames,Fd as getDefaultExtensionDirectory,Wf as getDefaultLspService,Sg as getDefaultWorkflowRunManager,Jh as getDenialContext,Nc as getImpactEstimate,gf as getKodaxGlobalDir,cb as getMcpCachePaths,C as getModelCapabilities,wa as getModelInputCapabilities,Kc as getModuleContext,Mc as getProcessContext,t as getProvider,x as getProviderConfiguredCapabilityProfile,w as getProviderConfiguredReasoningCapability,y as getProviderList,v as getProviderModel,B as getProviderModelDescriptors,z as getProviderModels,Ge as getRegisteredToolDefinition,Jc as getRepoIntelligenceIndex,tc as getRepoOverview,Oc as getRepoRoutingSignals,Re as getRequiredToolParams,Q as getRuntimeModelProvider,S as getRuntimeModelProviderNames,zb as getSessionLineagePath,Ab as getSessionMessagesFromLineage,Lc as getSymbolContext,Ee as getTool,Fe as getToolDefinition,He as getToolRegistrations,kc as getToolResultPolicy,Bi as getWorkflowPatternTemplate,od as goalTokenDelta,gh as hasExplicitNaturalLanguageWorkflowIntent,jd as hasPendingSwap,fa as inferImageMediaType,Nf as inferTaskType,ga as inferVideoMediaType,ic as inspectEditFailure,Hc as inspectRepoIntelligenceRuntime,I as isCustomProviderName,Ih as isDeniedRecently,V as isKnownProvider,yh as isParallelDispatchDirective,u as isProviderConfigured,A as isProviderName,R as isRuntimeModelProviderName,Ef as isSessionRecoveryCandidateError,Ed as isSupportedExtensionModulePath,Oe as isToolFileMutation,Qe as isToolMutation,Pe as isToolNetworkRead,Ne as isToolPlanModeAllowed,xd as isValidTokenBudget,Sf as languageIdForPath,oe as listAll,Z as listAllModelCapabilities,ke as listArtifacts,D as listBuiltinModelCapabilities,Le as listBuiltinToolDefinitions,wg as listBuiltinWorkflows,ld as listCodingDispatchableAgents,me as listConstructed,O as listCustomProviderModelCapabilities,Te as listToolDefinitions,Se as listTools,Ai as listWorkflowPatternTemplates,hf as loadAgentsFiles,pe as loadAgentsFromMarkdown,Zh as loadAutoRules,Fg as loadGeneratedWorkflowFromRun,Rd as loadHandler,qe as loadMarkdownAgentScope,Ag as loadSavedWorkflow,zg as loadSavedWorkflowCapsule,nb as loadValidToken,nd as makeDisabledGoalToolsContext,i as mapLegacyReasoningModeToEffortIntent,Ye as maybeRunReferenceAwareToolOutputGc,Xe as maybeRunToolOutputGc,th as mcpRootsFromWorkspace,Mb as mergeArtifactLedger,og as mergeScopedReviewResults,$ as normalizeKodaXAgentMode,$a as normalizeMcpCapabilityId,ma as normalizePastedImage,h as normalizeReasoningEffortValue,ng as normalizeScopedReviewResult,yg as normalizeWorkflowModule,df as orderPromptSections,kg as parallelInvestigation,Yh as parseAutoRules,Rh as parseClassifierOutput,hc as parseEditToolError,Vd as parseLlmReviewVerdict,ab as parseMcpCapabilityId,ji as parseModelSpec,k as parseReasoningEffortEnv,e as parseTimeoutSecEnvMs,Bd as parseToolSearchQuery,gg as parseWorkflowGeneration,mb as performOAuthLogin,ra as persistImageAsBlock,Zb as persistToolOutput,wf as planToolExposure,Hg as preflightWorkflowCapsule,Pc as prewarmRepoIntelligenceCaches,$f as providerResilienceConfigFromTimeouts,sa as prunePasteTmpDir,oa as readAndNormalizeClipboardImage,le as readArtifact,Yd as readAuditEntries,_d as readBudget,na as readClipboardImage,be as readDisableState,qi as readSpeculativeWindowFromEnv,Wh as readTrustState,Mf as reasoningModeToDepth,Gf as reconstructMessagesWithToolGuard,ci as recordAutoModeAllow,bi as recordAutoModeBlock,jh as recordBlockerAttempt,hi as recordBreakerError,Af as recordCompactionSavings,Hh as recordDenial,eh as registerCodingInvariants,rh as registerConfiguredMcpCapabilityProvider,G as registerCustomProviders,P as registerModelProvider,lb as registerOAuthClient,vh as registerOfficialSandboxExtension,Ra as registerPresetDispatcher,De as registerTool,ie as rehydrateActiveArtifacts,$d as remainingSelfModifyBudget,Cg as renameSavedWorkflow,xc as renderChangedScope,Ec as renderImpactEstimate,Bc as renderModuleContext,Dc as renderProcessContext,ef as renderPromptSections,uc as renderRepoOverview,Yc as renderRetrievalResult,Cc as renderSymbolContext,sh as replaceConfiguredMcpCapabilityProvider,Eg as replaceSavedWorkflow,Tf as reportLspDiagnostics,kh as resetBlockerCounter,ae as resetBudget,ki as resolveClassifierModel,md as resolveCodingDispatchableAgent,id as resolveConstructedAgent,Gd as resolveExtensionEntrypoint,cc as resolveKodaXManual,Y as resolveModelCapabilities,U as resolveProvider,X as resolveProviderModelDescriptors,l as resolveReasoningEffort,m as resolveReasoningEffortForModelSwitch,Lf as resolveReasoningMode,Gc as resolveRepoIntelligenceMode,Fc as resolveRepoIntelligenceRuntimeConfig,Cf as resolveResilienceConfig,Bb as resolveSessionLineageTarget,yd as resolveToolBridgeTarget,bh as resolveToolCapability,Yb as resolveToolOutputDir,_ as resolveWireEffort,cg as resolveWorkflowGenerationTimeoutMs,yi as resolveWorkflowIdentity,je as revoke,Gb as rewindSessionLineage,ve as rollbackSelfModify,Sd as runAstRules,Yg as runKodaX,Wd as runLlmReview,qh as runManagedTask,wh as runOrchestration,Qg as runWorkflowFromOptions,Og as runWorkflowModule,Jg as safeWorkflowArtifactName,Bg as saveGeneratedWorkflow,Gg as saveGeneratedWorkflowFromRun,tg as scopedReview,bb as searchMcpCatalog,Ad as searchToolIndex,Ae as setActiveExtensionRuntime,Ta as setAgentConfigHome,Cb as setSessionLineageActiveEntry,qd as shouldFlipBudgetLimited,yf as shouldSkipLlmCompaction,Xf as shutdownDefaultLspService,ri as speculativeRace,fe as stage,_g as startKodaX,Tg as startManagedWorkflow,Sh as stripAssistantText,Uc as stripHtmlToText,ge as testArtifact,d as timeoutSecToMs,qc as toolAskUserQuestion,mc as toolBash,Ac as toolChangedDiff,zc as toolChangedScope,ad as toolCodeSearch,gc as toolEdit,nc as toolGlob,oc as toolGrep,Tc as toolImpactEstimate,jc as toolInsertAfterAnchor,Qc as toolModuleContext,ch as toolPermission,Sc as toolProcessContext,_b as toolRead,yc as toolRepoOverview,bd as toolSemanticLookup,Rc as toolSymbolContext,pc as toolUndo,$c as toolWebFetch,_c as toolWebSearch,fc as toolWrite,Vb as truncateHead,Xb as truncateLine,Wb as truncateTail,Xh as trustProjectRules,pd as turnWallTimeDelta,Xa as validateAndFixToolHistory,E as validateCustomProviderConfig,dg as validateGeneratedWorkflowSource,xa as validateInputArtifactsForModel,Ah as validateSubtaskIndependence,Td as validateToolSchemaForProvider,oh as verifyGoalCompletion,Dd as webhook,mh as withGoalBeforeNextTurn,nh as withGoalStopHook,ec as withManualToolBranding,gd as workerAgent,ih as workflowStartOutcomeConsumesTurn,Gi as writeReviewPackets};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$,$a,A,Aa,B,Ba,C,Ca,D,Da,E,Ea,F,Fa,G,Ga,H,Ha,I,Ia,J,Ja,K,Ka,L,La,M,Ma,N,Na,O,Oa,P,Pa,Q,Qa,R,Ra,S,Sa,T,Ta,U,Ua,V,Va,W,Wa,X,Xa,Y,Ya,Z,Za,_,_a,a,aa,ab,b,ba,bb,c,ca,cb,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,ma,n,na,o,oa,p,pa,q,qa,r,ra,s,sa,t,ta,u,ua,v,va,w,wa,x,xa,y,ya,z,za}from"./chunk-
|
|
2
|
+
import{$,$a,A,Aa,B,Ba,C,Ca,D,Da,E,Ea,F,Fa,G,Ga,H,Ha,I,Ia,J,Ja,K,Ka,L,La,M,Ma,N,Na,O,Oa,P,Pa,Q,Qa,R,Ra,S,Sa,T,Ta,U,Ua,V,Va,W,Wa,X,Xa,Y,Ya,Z,Za,_,_a,a,aa,ab,b,ba,bb,c,ca,cb,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,ma,n,na,o,oa,p,pa,q,qa,r,ra,s,sa,t,ta,u,ua,v,va,w,wa,x,xa,y,ya,z,za}from"./chunk-XXQLPTAN.js";import"./chunk-ONUPGMER.js";export{Va as DEFAULT_COST_RATES,l as KODAX_API_MIN_INTERVAL,j as KODAX_CAPPED_MAX_OUTPUT_TOKENS,ka as KODAX_DEFAULT_PROVIDER,x as KODAX_DEFAULT_THINKING_BUDGETS,k as KODAX_ESCALATED_MAX_OUTPUT_TOKENS,i as KODAX_MAX_TOKENS,ja as KODAX_PROVIDERS,ia as KODAX_PROVIDER_SNAPSHOTS,v as KODAX_REASONING_MODE_SEQUENCE,y as KODAX_REASONING_SAFETY_RESERVE,w as KODAX_STABLE_EFFORT_INTENTS,ca as KodaXAnthropicCompatProvider,U as KodaXBaseProvider,d as KodaXError,g as KodaXNetworkError,da as KodaXOpenAICompatProvider,e as KodaXProviderError,f as KodaXRateLimitError,h as KodaXToolCallIdError,P as WORKFLOW_MAX_CONCURRENCY_ABSOLUTE,O as WORKFLOW_MAX_CONCURRENCY_DEFAULT,s as addRejectedEffort,Xa as calculateCost,p as capabilityCacheKey,K as clampThinkingBudget,W as classifyStopReason,Z as classifyVerifyError,La as clearRuntimeModelProviders,Ya as createCostTracker,xa as createCustomProvider,E as effortToLegacyReasoningMode,N as extractHeadersFromError,ab as formatCost,bb as formatCostReport,Oa as getAvailableProviderNames,ea as getCodexCliDefaultModel,ga as getCodexCliKnownModels,Wa as getCostRate,Fa as getCustomModelCapabilities,za as getCustomProvider,Ca as getCustomProviderList,Ea as getCustomProviderModelDescriptors,Da as getCustomProviderModels,Ba as getCustomProviderNames,I as getDefaultThinkingDepthForMode,fa as getGeminiCliDefaultModel,ha as getGeminiCliKnownModels,ua as getModelCapabilities,la as getProvider,pa as getProviderConfiguredCapabilityProfile,oa as getProviderConfiguredReasoningCapability,qa as getProviderList,na as getProviderModel,ta as getProviderModelDescriptors,ra as getProviderModels,z as getReasoningCapability,r as getRejectedEfforts,S as getRunScopedConfig,Ia as getRuntimeModelProvider,Ka as getRuntimeModelProviderNames,b as getScopedProviderCredential,$a as getSummary,_ as insertCacheBoundary,$ as isCacheBoundary,X as isCleanStop,Aa as isCustomProviderName,Na as isKnownProvider,ma as isProviderConfigured,sa as isProviderName,A as isReasoningEnabled,Ja as isRuntimeModelProviderName,Ra as listAllModelCapabilities,va as listBuiltinModelCapabilities,Ga as listCustomProviderModelCapabilities,Ta as listProviderModels,aa as lowerCacheBoundaries,L as mapDepthToOpenAIReasoningEffort,D as mapLegacyReasoningModeToEffortIntent,q as narrowReasoningProfile,T as normalizeCapabilityProfile,C as normalizeReasoningEffortValue,B as normalizeReasoningRequest,F as parseReasoningEffortEnv,M as parseRetryAfter,n as parseTimeoutSecEnvMs,V as parseToolInputWithSalvage,Za as recordRetry,_a as recordUsage,c as redactScopedProviderCredential,ya as registerCustomProviders,Ha as registerModelProvider,t as removeCacheEntry,o as resolveLlmTimeoutConfig,Qa as resolveModelCapabilities,Ma as resolveProvider,Pa as resolveProviderModelDescriptors,G as resolveReasoningEffort,H as resolveReasoningEffortForModelSwitch,J as resolveThinkingBudget,Ua as resolveWireEffort,Q as resolveWorkflowMaxConcurrency,Y as runVerifyCredential,a as runWithProviderCredential,R as runWithScopedConfig,u as sanitizeCapabilityCache,cb as sideQuery,ba as stripCacheBoundaries,m as timeoutSecToMs,wa as validateCustomProviderConfig,Sa as verifyProviderCredential};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{j as a}from"./chunk-6RI2RBTF.js";import"./chunk-M7FXNPWV.js";import"./chunk-MBAPT2R5.js";import"./chunk-HVCNAZ52.js";import"./chunk-XXQLPTAN.js";import"./chunk-OG6DRNKV.js";import"./chunk-GAFFYJU3.js";import"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{a as startManagedWorkflow};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{I as a,J as b}from"./chunk-M7FXNPWV.js";import"./chunk-HVCNAZ52.js";import"./chunk-XXQLPTAN.js";import"./chunk-OG6DRNKV.js";import"./chunk-GAFFYJU3.js";import"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{a as createWorkflowRunManager,b as getDefaultWorkflowRunManager};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-
|
|
2
|
+
import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-MLEAQTCD.js";import"./chunk-EAD4SF3Z.js";import"./chunk-6RI2RBTF.js";import"./chunk-M7FXNPWV.js";import"./chunk-AGDDM5AW.js";import"./chunk-64M5HOCA.js";import"./chunk-MBAPT2R5.js";import"./chunk-HVCNAZ52.js";import"./chunk-XXQLPTAN.js";import"./chunk-OG6DRNKV.js";import"./chunk-GAFFYJU3.js";import"./chunk-BUPJGG3C.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{a as CONFIG_TEMPLATES,H as KODAX_CONFIG_ENV_BINDINGS,e as KODAX_CONFIG_FILE,c as KODAX_DIR,D as KODAX_EXAMPLE_CONFIG_FILE,E as KODAX_INTEGRATION_EXAMPLE_FILES,d as KODAX_SESSIONS_DIR,k as KODAX_VERSION,f as PREVIEW_MAX_LENGTH,I as applyConfigEnvironment,r as describeProviderCapabilitySummary,y as describeReasoningCapabilityControl,z as describeReasoningExecution,G as ensureExampleConfigFile,F as ensureExampleConfigFiles,S as formatProviderCapabilityDetailLines,R as formatProviderSourceKind,s as formatReasoningCapabilityShort,t as formatReasoningEffortForDisplay,w as formatReasoningEffortStatusLabel,b as getConfigTemplate,Q as getGitRoot,m as getProviderAvailableModels,o as getProviderCapabilityProfile,p as getProviderCapabilitySnapshot,T as getProviderCommonPolicyScenarios,A as getProviderList,l as getProviderModel,q as getProviderPolicyDecision,n as getProviderReasoningCapability,v as getProviderReasoningEffortCycle,u as getProviderReasoningEffortOptions,j as getVersion,g as hydrateProcessEnvFromShell,B as isProviderConfigured,C as loadConfig,J as prepareRuntimeConfig,U as rateLimitedCall,i as registerConfiguredCustomProviders,h as resetShellEnvironmentHydrationForTesting,L as resolveInitialEffortOverride,P as resolvePermissionModeEffort,x as resolveProviderReasoningRuntimeEffort,O as resolveRuntimeEffortSelection,N as resolveRuntimeModelSelection,M as resolveRuntimeProviderSelection,K as saveConfig};
|