@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
|
@@ -1,78 +0,0 @@
|
|
|
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 Ho}from"node:async_hooks";var He=new Ho;function Jo(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(Jo,"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 Yo(e){let t=He.getStore()?.credential;return t?Re(e,t,new WeakMap):e}i(Yo,"redactScopedProviderCredential");function Re(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(Re(e.message,t,n));return n.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=Re(e.stack,t,n)),s}if(Array.isArray(e)){let s=[];n.set(e,s);for(let a of e)s.push(Re(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]=Re(a.value,t,n)}return r}i(Re,"redactCredentialValue");var Q=class extends Error{static{i(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}},M=class extends Q{static{i(this,"KodaXProviderError")}provider;constructor(t,n){super(t,"PROVIDER_ERROR"),this.provider=n,this.name="KodaXProviderError"}},Me=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 M{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,Qo=32e3,Zo=64e3,er=.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 tr(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(tr,"parseTimeoutSecEnvMs");function nr(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(nr,"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 or(e,t,n){return e[qe(t,n)]?.rejected??[]}i(or,"getRejectedEfforts");function rr(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(rr,"addRejectedEffort");function ir(e,t,n){if(!t)return{};let o={...e};return delete o[qe(t,n)],o}i(ir,"removeCacheEntry");function sr(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(sr,"sanitizeCapabilityCache");var ar=["off","auto","quick","balanced","deep"],de=["auto","none","low","medium","high"],An={low:6e3,medium:1e4,high:2e4},Dn=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"}],ur=[{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{...cr(e),...t,reasoningPreset:e}}i(Qe,"createReasoningProfileFromPreset");function cr(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:ur,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(cr,"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 In(e){switch(e){case"off":return"none";case"auto":return"auto";case"quick":return"low";case"balanced":return"medium";case"deep":return"high"}}i(In,"mapLegacyReasoningModeToEffortIntent");function lr(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(lr,"effortToLegacyReasoningMode");function On(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(On,"parseReasoningEffortEnv");function Ne(e){let t=On(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:In(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:dr(n.slice(1),e.capability),source:o.source,isExplicit:o.isExplicit,diagnostics:[]};let r=$n(o.value,e.capability,o.isExplicit);return{configuredEffort:o.value,effectiveEffort:r,source:o.source,isExplicit:o.isExplicit,diagnostics:[]}}i(Ne,"resolveReasoningEffort");function fr(e){let t=e.currentEffort?$e(e.currentEffort):void 0;if(t&&Nn(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(fr,"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 dr(e,t){let n=e.find(o=>o.value!=="auto");return n?$n(n.value,t,n.isExplicit):Ie(t)??Oe(t)}i(dr,"resolveAutoEffectiveEffort");function $n(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(Nn(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($n,"validateReasoningEffort");function Ye(e,t){return t?.effortAliases?.[e]??e}i(Ye,"applyEffortAlias");function Nn(e,t){if(t?.localRejectEfforts?.includes(e))return!1;if(e==="auto"||e==="none"||t?.allowCustomEffort===!0)return!0;let n=pr(t);return n.length===0?de.includes(e):n.includes(e)||n.includes(Ye(e,t))}i(Nn,"isSupportedReasoningEffort");function pr(e){return e?.supportedEfforts?.map(t=>t.value)??[]}i(pr,"getSupportedEffortValues");function Ie(e){return e?.supportedEfforts?.find(t=>t.isDefault)?.value}i(Ie,"getDefaultPresetValue");function Kt(e){let t=e?.supportedEfforts?.filter(gr).map(n=>n.value);if(!(!t||t.length===0))return t[Math.floor((t.length-1)/2)]}i(Kt,"getMiddleVisiblePresetValue");function gr(e){return e.isUserVisible!==!1}i(gr,"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 mr(e){switch(e){case"quick":return"low";case"balanced":case"auto":return"medium";case"deep":return"high";default:return"off"}}i(mr,"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={...An,...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=Dn){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 Ln(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):Ln(t.cause)}i(Ln,"getStatus");function hr(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(hr,"getMessage");var yr=["reasoning_effort","reasoning effort","reasoninglevel","reasoning_level","thinking"],vr=["unsupported","not supported","invalid","does not support","is not one of","not allowed","unknown","unexpected","unrecognized"],kr=["minimal","none","low","medium","high","xhigh","max"];function Er(e,t){for(let n of kr)if(new RegExp(`['"\`]${n}['"\`]`).test(e))return n;return t}i(Er,"extractRejectedEffort");function zt(e,t){let n=Ln(e);if(n!==400&&n!==422)return null;let o=hr(e);if(!o)return null;let r=yr.some(u=>o.includes(u)),s=vr.some(u=>o.includes(u));if(!r||!s)return null;let a=Er(o,t);return a?{rejectedEffort:a}:null}i(zt,"classifyReasoningEffortRejection");function Bn(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(Bn,"readHeader");function jn(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(jn,"parsePositiveNumber");function br(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(br,"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=jn(Bn(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=Bn(e,"retry-after");if(u!==void 0&&u.trim().length>0){let m=jn(u);if(m!==void 0){let T=m*1e3,d=Math.min(T,r);return{type:"header",waitMs:Math.round(d),source:"retry-after-seconds",cappedFromHeader:d!==T}}let g=br(u,s);if(g!==void 0){let T=Math.min(g,r);return{type:"header",waitMs:Math.round(T),source:"retry-after-date",cappedFromHeader:T!==g}}}let l=n*Math.pow(2,Math.max(0,t.attempt)),f=Math.min(l,o),p=t.withJitter!==!1?Math.random()*.25*f:0;return{type:"backoff",waitMs:Math.round(f+p),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 xr}from"node:async_hooks";var Fn=new xr,Kn=8,Un=32;function _r(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}i(_r,"parsePositiveInt");function Cr(){let e=ge()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:_r(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??Kn;return Math.max(1,Math.min(Un,t))}i(Cr,"resolveWorkflowMaxConcurrency");function Tr(e,t){return Fn.run(e,t)}i(Tr,"runWithScopedConfig");function ge(){return Fn.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"},Wn={...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"},zn={...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 Pr(e){if(!e)return;let t=parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}i(Pr,"parseEnvInt");function Sr(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(Sr,"shouldLowerAutoReasoningEffort");function rt(){return new DOMException("Request aborted","AbortError")}i(rt,"abortError");function wr(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(wr,"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 Xn(e){if(!e||typeof e!="object")return;let t=e;return Xt(t.status)??Xt(t.statusCode)??Xt(t.code)??Xn(t.cause)}i(Xn,"extractHttpStatus");function Vn(e){if(!e||typeof e!="object")return"";let t=e;return typeof t.code=="string"?t.code:Vn(t.cause)}i(Vn,"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)??Pr(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 M(`${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=Xn(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 M(`${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 M(`${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 M(`${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 M(`${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(Sr(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 Me(`API rate limit exceeded after ${o} retries. Please wait and try again later.`,6e4);let c=tt(f)??{},p=et(c,{attempt:l,baseBackoffMs:500,maxBackoffMs:32e3,withJitter:!0}),m=p.waitMs,g=this.classifyRateLimitReason(f);if(s?.({provider:this.name,waitMs:m,reason:g,source:p.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 wr(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=Vn(f);throw(c==="ECONNRESET"||c==="EPIPE")&&this.onStaleConnection(),new M(`${this.name} API error: ${f.message}`,this.name)}throw f}throw new Q("Unexpected end of withRateLimit")}};import Nr from"@anthropic-ai/sdk";import{parse as Rr}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=Rr(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 Mr(e){return me(e).value}i(Mr,"parseToolInputWithSalvage");var Ar={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 Gn(e){return e==null?"unknown":Ar[e.trim().toLowerCase()]??"unknown"}i(Gn,"classifyStopReason");function he(e){let t=Gn(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 Dr(e){return e.replace(/\bsk-[A-Za-z0-9_-]{6,}/g,"sk-***")}i(Dr,"redactKeyMaterial");function Vt(e,t){let n=e,o=n.status??n.statusCode??n.response?.status,r=Dr(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 Ir}from"node:fs/promises";import Or from"node:path";var $r={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"};function it(e,t){return t??$r[Or.extname(e).toLowerCase()]??"image/png"}i(it,"resolveImageMediaType");async function st(e){return(await Ir(e)).toString("base64")}i(st,"readImageFileAsBase64");async function Hn(e,t){let n=it(e,t),o=await st(e);return`data:${n};base64,${o}`}i(Hn,"buildImageDataUrl");var Lr="KodaX",Br="effort-2025-11-24";function Jn(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(Jn,"appendAnthropicEphemeralSuffix");function jr(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":Lr}}i(jr,"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 Fr(e){if(!(!e.enabled||e.effort==="auto"||e.effort==="none"))return e.effort}i(Fr,"selectAnthropicOutputEffort");function qn(e,t){let n=Fr(t);if(!n)return;let o=e,r=o.output_config;o.output_config={...qt(r)?r:{},effort:n}}i(qn,"applyAnthropicOutputEffort");function Yn(e,t){if(!t)return;let n=e,o=n.output_config;n.output_config={...qt(o)?o:{},effort:t}}i(Yn,"setAnthropicOutputEffort");function Kr(e){let n=e.output_config;return qt(n)&&typeof n.effort=="string"}i(Kr,"hasAnthropicOutputEffort");var L=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=jr(this.config);return new Nr({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&&Kr(t)?{"anthropic-beta":Br}: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){(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"},Yn(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"},Yn(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),p=Jn(this.applyCacheControlToMessages(await this.convertMessages(t,l)),s?.ephemeralSuffix?.content),m=u.enabled?this.getReasoningCapability(l):"none",g=this.getReasoningProfile(l),T=g?["profile","none"]:u.enabled?this.getReasoningFallbackChain(m).filter(x=>x==="native-budget"||x==="native-toggle"||x==="native-adaptive"||x==="none"):["none"],d=!!s?.forcedToolName,C=i(x=>{let S={model:f,max_tokens:c,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:p,tools:this.applyCacheControlToTools(n),stream:!0};if(s?.forcedToolName&&d&&(S.tool_choice={type:"tool",name:s.forcedToolName}),x!=="none")if(x==="profile"&&g)this.applyReasoningProfile(S,g,u,l,c);else if(x==="native-budget"){let I=ae(this.config,se(u.effort),u.taskType);S.thinking={type:"enabled",budget_tokens:ue(I,c)}}else x==="native-toggle"?S.thinking={type:"enabled"}:x==="native-adaptive"&&(S.thinking={type:"adaptive"},qn(S,u));return S},"buildRequest");if(a?.aborted)throw new DOMException("Request aborted","AbortError");let y=[],E=[],k=[],v,P=null,h="",_="",A="",F="",W="",K="",Y="",te=!1,R,D=Date.now(),V=Date.now(),re,Se;for(let x of T){for(;!re;)try{let S=C(x);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=x==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:x==="native-budget"?["budget_tokens","thinking"]:x==="native-toggle"?["thinking"]:x==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(S,...I))throw S;break}if(re)break}if(!re)throw Se??new M("All reasoning capability attempts failed without a captured error",this.name);let we=Date.now(),Ge=0,w=0,N=3e4;for await(let x of re){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let S=Date.now(),I=S-we;if(I>N&&(Ge++,w+=I,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(I/1e3)}s gap before ${x.type}`,{stallCount:Ge,totalStallMs:w,eventType:x.type})),we=S,x.type==="content_block_start"||x.type==="content_block_stop"?s?.onHeartbeat?.(!0):s?.onHeartbeat?.(),x.type==="content_block_start"){D=Date.now();let b=x.content_block;P=b.type,process.env.KODAX_DEBUG_TOOL_STREAM&&b.type==="tool_use"&&console.error("[ToolStream] content_block_start:",{type:b.type,id:b.id,name:b.name}),b.type==="thinking"?(_="",A=b.signature??""):b.type==="redacted_thinking"?(P="redacted_thinking",F=b.data??""):b.type==="text"?h="":b.type==="tool_use"&&(W=b.id,K=b.name,Y="")}else if(x.type==="content_block_delta"){D=Date.now();let b=x.delta;b.type==="thinking_delta"?(_+=b.thinking??"",s?.onThinkingDelta?.(b.thinking??"")):b.type==="text_delta"?(h+=b.text??"",s?.onTextDelta?.(b.text??"")):b.type==="input_json_delta"&&(Y+=b.partial_json??"",s?.onToolInputDelta?.(K,b.partial_json??"",W?{toolId:W}:void 0))}else if(x.type==="content_block_stop"){if(D=Date.now(),P==="thinking")_&&(k.push({type:"thinking",thinking:_,signature:A}),s?.onThinkingEnd?.(_));else if(P==="redacted_thinking")F&&k.push({type:"redacted_thinking",data:F}),F="";else if(P==="text")h&&y.push({type:"text",text:h});else if(P==="tool_use")if(!W||!K)process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Missing tool id or name:",{id:JSON.stringify(W),name:JSON.stringify(K),input:Y.slice(0,100)});else{let b=me(Y);E.push({type:"tool_use",id:W,name:K,input:b.value,...b.salvaged?{_salvaged:!0,_truncated:!0}:{}})}P=null}else if(x.type==="message_stop"){if(te=!0,D=Date.now(),process.env.KODAX_DEBUG_STREAM){let b=Date.now()-V;this.logStreamDiagnostic(`[Stream] message_stop received after ${b}ms`)}}else if(x.type==="message_delta"){D=Date.now(),v=Jt(x.usage,v);let b=x.delta;b?.stop_reason&&(R=b.stop_reason,process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic(`[Stream] message_delta with stop_reason: ${R}`))}else x.type==="message_start"&&(D=Date.now(),v=Jt(x.message?.usage,v),process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic("[Stream] message_start received"))}if(!te){let x=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:x,lastEventAge:S,reason:I,textBlocks:y.length,toolBlocks:E.length,thinkingBlocks:k.length}),new DOMException(I,"AbortError")}if(!R){let I=new Error(`Stream incomplete: message_stop event not received. Duration: ${x}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:x,lastEventAge:S,textBlocks:y.length,toolBlocks:E.length,thinkingBlocks:k.length}),I}this.logStreamDiagnostic("[Stream] message_stop missing but stop_reason known \u2014 treating as complete:",{duration:x,lastEventAge:S,stopReason:R,textBlocks:y.length,toolBlocks:E.length,thinkingBlocks:k.length})}let O=he(R)?E.map(({_truncated:x,...S})=>S):E;return{textBlocks:y,toolBlocks:O,thinkingBlocks:k,usage:v,stopReason:R}},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),p=Jn(this.applyCacheControlToMessages(await this.convertMessages(t,l)),s?.ephemeralSuffix?.content),m=u.enabled?this.getReasoningCapability(l):"none",g=this.getReasoningProfile(l),T=g?["profile","none"]:u.enabled?this.getReasoningFallbackChain(m).filter(h=>h==="native-budget"||h==="native-toggle"||h==="native-adaptive"||h==="none"):["none"],d=!!s?.forcedToolName,C=i(h=>{let _={model:f,max_tokens:c,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:p,tools:this.applyCacheControlToTools(n)};if(s?.forcedToolName&&d&&(_.tool_choice={type:"tool",name:s.forcedToolName}),h!=="none")if(h==="profile"&&g)this.applyReasoningProfile(_,g,u,l,c);else if(h==="native-budget"){let A=ae(this.config,se(u.effort),u.taskType);_.thinking={type:"enabled",budget_tokens:ue(A,c)}}else h==="native-toggle"?_.thinking={type:"enabled"}:h==="native-adaptive"&&(_.thinking={type:"adaptive"},qn(_,u));return _},"buildRequest"),y,E;for(let h of T){for(;!y;)try{let _=C(h);y=await this.client.messages.create(_,this.buildMessageCreateOptions(_,l,a))}catch(_){if(E=_,d&&this.shouldFallbackForForcedToolChoiceError(_)){d=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let A=h==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:h==="native-budget"?["budget_tokens","thinking"]:h==="native-toggle"?["thinking"]:h==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(_,...A))throw _;break}if(y)break}if(!y)throw E??new M("All reasoning capability attempts failed without a captured error",this.name);let k=[],v=[],P=[];for(let h of y.content)h.type==="text"?(k.push({type:"text",text:h.text}),s?.onTextDelta?.(h.text)):h.type==="thinking"?(P.push({type:"thinking",thinking:h.thinking,signature:h.signature??""}),s?.onThinkingDelta?.(h.thinking),s?.onThinkingEnd?.(h.thinking)):h.type==="redacted_thinking"?P.push({type:"redacted_thinking",data:h.data}):h.type==="tool_use"&&v.push({type:"tool_use",id:h.id,name:h.name,input:typeof h.input=="object"&&h.input!==null?h.input:{}});return{textBlocks:k,toolBlocks:v,thinkingBlocks:P,usage:Jt(y.usage),stopReason:y.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 M("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 p;if(typeof c.content=="string")p=c.content;else{let m=[];for(let g of c.content)g.type==="text"?m.push({type:"text",text:g.text}):g.type==="image"&&m.push({type:"image",source:{type:"base64",media_type:it(g.path,g.mediaType),data:await st(g.path)}});p=m}u.push({type:"tool_result",tool_use_id:c.tool_use_id,content:p,...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"),p=u.some(m=>m.type==="thinking"||m.type==="redacted_thinking");c&&!p&&u.unshift({type:"thinking",thinking:"...",signature:""})}let f=u.length===0||(a==="assistant"||a==="user")&&u.every(c=>{let p=c;return p.type==="thinking"&&!p.thinking||p.type==="text"&&!p.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 Ur from"openai";var Wr="KodaX";function Qn(e){return e==="native-budget"||e==="native-effort"||e==="native-toggle"||e==="none"}i(Qn,"isOpenAIReasoningAttempt");function zr(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":Wr}}i(zr,"getOpenAICompatDefaultHeaders");function Xr(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(Xr,"selectOpenAIReasoningEffort");function Zn(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(Zn,"normalizeOpenAIUsage");function Vr(e){return e?e.type==="function"&&"function"in e:!1}i(Vr,"isOpenAIFunctionToolCall");function Gr(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(Gr,"extractOpenAIMessageText");function Hr(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(Hr,"extractOpenAIMessageReasoning");function at(e){let t=e.role;return typeof t=="string"?t:void 0}i(at,"getWireRole");function Jr(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(Jr,"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 Yr(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(Yr,"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=zr(this.config);return new Ur({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=Xr(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,p=[{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}})),g=s?.forcedToolName,T=!!g;if(a?.aborted)throw new DOMException("Request aborted","AbortError");let d=new Map,C="",y="",E,k=!0,v=null,P=Date.now(),h=this.normalizeReasoning(r);this.validateExplicitReasoningEffort(h,c);let _=this.getReasoningProfile(c),A=pe(h)?this.getReasoningCapability(c):"none",F=_?["profile","none"]:pe(h)?this.getReasoningFallbackChain(A).filter(Qn):["none"],W={model:c,messages:p,tools:m,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(c),stream:!0};g&&T&&(W.tool_choice={type:"function",function:{name:g}});let K,Y;for(let w of F){for(;!K;){let N={...W};k&&(N.stream_options={include_usage:!0}),this.resetReasoningCapabilityParams(N),this.applyReasoningCapability(N,w,h);try{K=await this.client.chat.completions.create(N,a?{signal:a}:{})}catch(O){if(Y=O,T&&this.shouldFallbackForForcedToolChoiceError(O)){T=!1,delete W.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(k&&this.shouldFallbackForSpecificReasoningError(O,"stream_options","include_usage")){k=!1;continue}if(!this.shouldFallbackForReasoningError(O,...this.getFallbackTerms(w)))throw O;break}}if(K)break}if(!K)throw Y??new M("All reasoning capability attempts failed without a captured error",this.name);let te=Date.now(),R=0,D=0,V=3e4;for await(let w of K){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let N=Date.now(),O=N-te;O>V&&(R++,D+=O,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(O/1e3)}s gap`,{stallCount:R,totalStallMs:D})),te=N,s?.onHeartbeat?.(),E=Zn(w.usage)??E;let x=w.choices[0],S=x?.delta;if(x?.finish_reason&&(v=x.finish_reason,process.env.KODAX_DEBUG_STREAM)){let b=Date.now()-P;this.logStreamDiagnostic(`[Stream] finish_reason: ${v} after ${b}ms`)}S?.content&&(C+=S.content,s?.onTextDelta?.(S.content));let I=this.extractReasoningDelta(S);if(I&&(y+=I,s?.onThinkingDelta?.(I)),S?.tool_calls)for(let b of S.tool_calls){let ie=d.get(b.index)??{id:"",name:"",arguments:""};b.id&&(ie.id=b.id),b.function?.name&&(ie.name=b.function.name),b.function?.arguments&&(ie.arguments+=b.function.arguments,s?.onToolInputDelta?.(ie.name,b.function.arguments,ie.id?{toolId:ie.id}:void 0)),d.set(b.index,ie)}}if(!v){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:C.length,toolCallsCount:d.size}),new DOMException(O,"AbortError")}let N=new Error(`Stream incomplete: finish_reason not received. Duration: ${w}ms. This may indicate a network disconnection or API timeout.`);throw N.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:w,textContentLength:C.length,toolCallsCount:d.size}),N}let re=C?[{type:"text",text:C}]:[],Se=[],we=[];y&&(we.push({type:"thinking",thinking:y}),s?.onThinkingEnd?.(y));let Ge=he(v??void 0);for(let[,w]of d)if(w.id&&w.name){let N=me(w.arguments),O=N.salvaged?Ge?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};Se.push({type:"tool_use",id:w.id,name:w.name,input:N.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:E,stopReason:v??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,p=[{role:"system",content:l},...await this.convertMessages(f,c),...s?.ephemeralSuffix?.content?[{role:"user",content:s.ephemeralSuffix.content}]:[]],m=n.map(R=>({type:"function",function:{name:R.name,description:R.description,parameters:R.input_schema}})),g=s?.forcedToolName,T=!!g,d=this.normalizeReasoning(r);this.validateExplicitReasoningEffort(d,c);let C=this.getReasoningProfile(c),y=pe(d)?this.getReasoningCapability(c):"none",E=C?["profile","none"]:pe(d)?this.getReasoningFallbackChain(y).filter(Qn):["none"],k={model:c,messages:p,tools:m,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(c)};g&&T&&(k.tool_choice={type:"function",function:{name:g}});let v,P;for(let R of E){for(;!v;){let D={...k};this.resetReasoningCapabilityParams(D),this.applyReasoningCapability(D,R,d);try{v=await this.client.chat.completions.create(D,a?{signal:a}:{})}catch(V){if(P=V,T&&this.shouldFallbackForForcedToolChoiceError(V)){T=!1,delete k.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(!this.shouldFallbackForReasoningError(V,...this.getFallbackTerms(R)))throw V;break}}if(v)break}if(!v)throw P??new M("All reasoning capability attempts failed without a captured error",this.name);let h=v.choices[0],_=h?.message,A=Gr(_?.content),F=Hr(_),W=he(h?.finish_reason??void 0),K=(_?.tool_calls??[]).filter(Vr).map(R=>{let D=me(R.function.arguments),V=D.salvaged?W?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};return{type:"tool_use",id:R.id,name:R.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:K,thinkingBlocks:te,usage:Zn(v.usage),stopReason:h?.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 Hn(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=Jr(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],g=qr(m);g!==void 0&&a.has(g)&&!u.has(g)&&(u.add(g),l.push(m)),f+=1}let c=s.filter(m=>u.has(m.id)),p=c.length===s.length&&s.length>0?r:Yr(r,c);n.push(p),c.length>0&&n.push(...l),o=f}return n}};import{spawn as ai}from"node:child_process";import{Readable as ui,Writable as ci}from"node:stream";import ct from"node:process";import{ClientSideConnection as li,PROTOCOL_VERSION as fi,ndJsonStream as di}from"@agentclientprotocol/sdk";import{spawn as Qr,spawnSync as Zt}from"node:child_process";var en=2e3,H=2e3,Zr=5e3,ei=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 ti(e){return new Promise(t=>{let n=Qr("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(ti,"runTaskkill");function eo(e,t){let n=!1;try{process.kill(-e,t),n=!0}catch{}try{process.kill(e,t),n=!0}catch{}return n}i(eo,"signalPosixPidTree");function Z(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}i(Z,"signalTargetExists");function to(e){return Z(-e)||Z(e)}i(to,"isPosixPidTreeAlive");async function no(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!to(e))return!0;await new Promise(o=>setTimeout(o,50))}return!to(e)}i(no,"waitForPosixPidTreeExit");async function ni(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(ni,"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 oo(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(oo,"readWindowsPidListJson");function oi(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(oi,"getWindowsChildPidsViaWmic");function ri(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=oo(n.stdout);if(r.length>0)return r}let o=oo(n.stdout);return o.length>0?o:oi(e)}i(ri,"getWindowsChildPids");function ii(e){let t=["$source = @'",ei,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
|
|
63
|
-
`),n=Zt("powershell.exe",["-NoProfile","-NonInteractive","-Command",t],{encoding:"utf8",timeout:Zr,windowsHide:!0});return n.error||n.status!==0?[]:si(n.stdout,e)}i(ii,"collectWindowsDescendantPidsNative");function si(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(si,"collectDescendantsFromProcessRows");function ro(e,t=new Set){let n=[];for(let o of ri(e))t.has(o)||(t.add(o),n.push(o),n.push(...ro(o,t)));return n}i(ro,"collectWindowsDescendantPids");async function ut(e,t){try{process.kill(e,t)}catch{return!Z(e)}return ni(e,H)}i(ut,"killWindowsPid");async function Fe(e){if(process.platform==="win32"&&e.pid!==void 0){if(!Qt(e)&&await ti(e.pid)&&await Yt([e.pid],H)){await je(e,H);return}let n=ii(e.pid);n.length===0&&(n=ro(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(!eo(e.pid,"SIGTERM")||await no(e.pid,H))return;eo(e.pid,"SIGKILL"),await no(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=ai(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=ci.toWeb(this.agentProcess.stdin),t=ui.toWeb(this.agentProcess.stdout)}else throw new Error("AcpClient requires either a command or I/O streams");let o=di(n,t);this.client=new li(()=>({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:fi,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 pi(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(pi,"normalizeAcpUsage");function gi(e){if(e.effort==="none")return"none";if(!(!e.enabled||e.effort==="auto"))return e.effort}i(gi,"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=gi(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=[],p=t[t.length-1],m="";if(p&&typeof p.content=="string")m=p.content;else if(p&&Array.isArray(p.content)){let k=[];for(let v of p.content)if(v.type==="text")k.push(v.text);else if(v.type==="image"){let P=this.serializeImageBlockToPromptToken(v);P&&k.push(P)}m=k.join(`
|
|
64
|
-
`)}let g=s?.ephemeralSuffix?.content;g&&(m=m.length>0?`${m}
|
|
65
|
-
|
|
66
|
-
${g}`:g);let T={...this.acpClientOptions,onSessionUpdate:i(k=>{let v=k.update,P=k.sessionId;if(!("sessionUpdate"in v))return;let h=P?this._activeStreams.get(P):void 0;if(h)switch(v.sessionUpdate){case"agent_message_chunk":if(v.content?.type==="text"){let _=v.content.text;h.output.text+=_,h.streamOptions?.onTextDelta?.(_)}break;case"tool_call":{let _="{}",A=v.arguments??v.parameters;A&&(_=typeof A=="string"?A:JSON.stringify(A)),h.streamOptions?.onToolInputDelta?.(v.title,_);let F=`
|
|
67
|
-
> [Tool Use] ${v.title}: ${_}
|
|
68
|
-
`;h.output.text+=F,h.streamOptions?.onTextDelta?.(F);break}case"tool_call_update":if(v.status){let _=`> [Tool Result] ${v.status}
|
|
69
|
-
|
|
70
|
-
`;h.output.text+=_,h.streamOptions?.onTextDelta?.(_)}break}},"onSessionUpdate")},d=s?.sessionId??"default";this._client||(this._client=new lt(T),await this._client.connect());let C=this._sessionMap.get(d);C||(C=await this._client.createNewSession(),this._sessionMap.set(d,C));let y={text:""};this._activeStreams.set(C,{streamOptions:s,output:y});let E;try{E=await this._client.prompt(m,C,a,{model:s?.modelOverride,reasoningEffort:l})}catch(k){if(!(k instanceof Error&&k.name==="AbortError"))throw k}finally{this._activeStreams.delete(C)}return y.text&&f.push({type:"text",text:y.text}),{textBlocks:f,toolBlocks:c,thinkingBlocks:[],usage:pi(E?.usage)}}disconnect(){this._client&&(this._client.disconnect(),this._client=null),this._activeStreams.clear(),this._sessionMap.clear()}};import{spawn as mi}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=mi(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 hi}from"node:child_process";import yi from"node:process";async function dt(e){try{let t=yi.platform==="win32",n=hi(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 io}from"node:stream/web";import{randomUUID as tn}from"node:crypto";function gt(e){let t=new io,n=new io,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:C}=await o.read();if(d)break;u+=s.decode(C,{stream:!0});let y=u.split(`
|
|
72
|
-
`);u=y.pop()??"";for(let E of y)if(E.trim())try{let k=JSON.parse(E);m(k).catch(v=>{console.error("[PseudoAcpServer] Failed to handle request:",v)})}catch{console.error("[PseudoAcpServer] Failed to parse message:",E)}}}catch(d){console.error("[PseudoAcpServer] Stream read error:",d)}})();let p=i(async d=>{let C=JSON.stringify(d)+`
|
|
73
|
-
`;await r.write(a.encode(C))},"sendMsg");async function m(d){if(d.method==="initialize")await p({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 p({jsonrpc:"2.0",id:d.id,result:{sessionId:l}});else if(d.method==="session/prompt"||d.method==="chat/prompt"){let C=new AbortController,y=d.params.sessionId;c.set(y,C);let E=i(()=>C.abort(),"onGlobalAbort");f.signal.addEventListener("abort",E);let v=await g(y,d.params.prompt,typeof d.params.model=="string"?d.params.model:void 0,typeof d.params.effort=="string"?d.params.effort:void 0,C.signal).finally(()=>{c.delete(y),f.signal.removeEventListener("abort",E)});await p({jsonrpc:"2.0",id:d.id,result:v.usage?{stopReason:v.stopReason,usage:v.usage}:{stopReason:v.stopReason}})}else if(d.method==="session/cancel"||d.method==="chat/cancel"){let C=c.get(d.params.sessionId);C&&C.abort(),d.id!==void 0&&await p({jsonrpc:"2.0",id:d.id,result:{}})}else d.id!==void 0&&await p({jsonrpc:"2.0",id:d.id,result:{}})}i(m,"handleRequest");let g=i(async(d,C,y,E,k)=>{let v=C.find(P=>P.type==="text")?.text??"";try{let P=e.execute({prompt:v,model:y,reasoningEffort:E,sessionId:d==="default"?void 0:d,signal:k});for await(let h of P){let _=T(h);if(_&&await p({jsonrpc:"2.0",method:"session/update",params:{sessionId:d,update:_}}),h.type==="complete")return{stopReason:k.aborted?"cancelled":"end_turn",usage:h.usage}}return{stopReason:k.aborted?"cancelled":"end_turn"}}catch(P){return k.aborted||P instanceof Error&&P.name==="AbortError"?{stopReason:"cancelled"}:(console.error("[PseudoAcpServer] Error executing prompt:",P),await p({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"),T=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 so from"node:fs";import ao from"node:os";import uo from"node:path";var vi="gpt-5.4",ki="auto-gemini-3",Ei=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],bi=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function co(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(co,"dedupePreserveOrder");function xi(){let e=uo.join(ao.homedir(),".codex","config.toml");try{return so.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}i(xi,"readCodexConfiguredModel");function _i(){let e=uo.join(ao.homedir(),".gemini","settings.json");try{let t=JSON.parse(so.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(_i,"readGeminiConfiguredModel");function be(){return xi()||vi}i(be,"getCodexCliDefaultModel");function xe(){return _i()||ki}i(xe,"getGeminiCliDefaultModel");function Ke(){return co([be(),...Ei])}i(Ke,"getCodexCliKnownModels");function Ue(){return co([xe(),...bi])}i(Ue,"getGeminiCliKnownModels");var nn=xe(),Ci=Ue(),Ti={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:Ci.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(Ti)}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 Pi(e){return!e||e==="auto"?[]:["--config",`model_reasoning_effort=${JSON.stringify(e)}`]}i(Pi,"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=Pi(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(),Si=Ke(),yt=class extends ke{static{i(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:on,models:Si.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 Li,readFileSync as Bi}from"node:fs";import Ce from"node:path";import{fileURLToPath as ji}from"node:url";var lo=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],fo=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","provider-budget","provider-toggle","prompt-only","none"],po=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],go=["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"],mo=["native","image-input-native","cli-bridge","image-input-cli-bridge"],ho=["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 $(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}i($,"optionalBoolean");function yo(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(yo,"optionalStringArray");function wi(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(wi,"optionalStringMap");function Ri(e,t){if(e!==void 0){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(Ri,"optionalReasoningPreset");function rn(e,t){if(typeof e!="string"||!lo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${lo.join(", ")}, got ${JSON.stringify(e)}`);return e}i(rn,"requireReasoningCapability");function Mi(e,t){if(typeof e!="string"||!fo.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${fo.join(", ")}, got ${JSON.stringify(e)}`);return e}i(Mi,"requireEffortStrategy");function Ai(e,t){if(e!==void 0){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(Ai,"optionalThinkingStrategy");function vo(e,t){if(e===void 0)return;if(!ee(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Mi(e.effortStrategy,`${t}.effortStrategy`),o=Ri(e.reasoningPreset,`${t}.reasoningPreset`),r=Ai(e.thinkingStrategy,`${t}.thinkingStrategy`),s=_e(e.defaultEffort,`${t}.defaultEffort`),a=wi(e.effortAliases,`${t}.effortAliases`),u=yo(e.disabledEfforts,`${t}.disabledEfforts`),l=yo(e.localRejectEfforts,`${t}.localRejectEfforts`),f=$(e.allowCustomEffort,`${t}.allowCustomEffort`),c=$(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),p=$(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),m=$(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),g=$(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),T=$(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),d=$(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),C=$(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(o!==void 0&&(y.reasoningPreset=o),r!==void 0&&(y.thinkingStrategy=r),s!==void 0&&(y.defaultEffort=s),a!==void 0&&(y.effortAliases=a),u!==void 0&&(y.disabledEfforts=u),l!==void 0&&(y.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((E,k)=>{if(!ee(E))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${k}] must be an object`);return{value:le(E.value,`${t}.supportedEfforts[${k}].value`),..._e(E.description,`${t}.supportedEfforts[${k}].description`)!==void 0?{description:_e(E.description,`${t}.supportedEfforts[${k}].description`)}:{},...$(E.isDefault,`${t}.supportedEfforts[${k}].isDefault`)!==void 0?{isDefault:$(E.isDefault,`${t}.supportedEfforts[${k}].isDefault`)}:{},...$(E.isUserVisible,`${t}.supportedEfforts[${k}].isUserVisible`)!==void 0?{isUserVisible:$(E.isUserVisible,`${t}.supportedEfforts[${k}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ee(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let E={};for(let[k,v]of Object.entries(e.budgetByEffort))E[k]=ne(v,`${t}.budgetByEffort.${k}`)??0;y.budgetByEffort=E}return f!==void 0&&(y.allowCustomEffort=f),c!==void 0&&(y.supportsReasoningEffort=c),p!==void 0&&(y.supportsReasoningSummary=p),m!==void 0&&(y.supportsEncryptedReasoningReplay=m),g!==void 0&&(y.supportsAdaptiveThinking=g),T!==void 0&&(y.supportsManualThinkingBudget=T),d!==void 0&&(y.supportsDisabledThinking=d),C!==void 0&&(y.requiresEffortBetaHeader=C),y}i(vo,"validateReasoningProfile");function ko(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?vo(n,`${t}.reasoningProfile`):vo(o,`${t}.reasoningCapabilityV2`)}i(ko,"validateReasoningProfileField");function Di(e,t){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(Di,"requireProfileName");function Ii(e,t){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(Ii,"requireVerifyStrategy");function Oi(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=$(e.replayReasoningContent,`${t}.replayReasoningContent`),f=$(e.strictThinkingSignature,`${t}.strictThinkingSignature`),c=ne(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),p=e.reasoningCapability===void 0?void 0:rn(e.reasoningCapability,`${t}.reasoningCapability`),m=ko(e,t),g={id:n};return o!==void 0&&(g.wireModel=o),r!==void 0&&(g.displayName=r),s!==void 0&&(g.contextWindow=s),a!==void 0&&(g.maxOutputTokens=a),u!==void 0&&(g.thinkingBudgetCap=u),p!==void 0&&(g.reasoningCapability=p),m!==void 0&&(g.reasoningProfile=m),l!==void 0&&(g.replayReasoningContent=l),f!==void 0&&(g.strictThinkingSignature=f),c!==void 0&&(g.streamMaxDurationMs=c),g}i(Oi,"validateModelDescriptor");function $i(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($i,"validateModelReasoningCapabilities");function Ni(e,t){if(!ee(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=$(e.cliBridge,`providers.${t}.cliBridge`),o=le(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),r=rn(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=ko(e,`providers.${t}`),a=Di(e.capabilityProfile,`providers.${t}.capabilityProfile`),u=Ii(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`),p=$(e.supportsThinking,`providers.${t}.supportsThinking`),m=$i(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),g=_e(e.model,`providers.${t}.model`);if(n&&(g!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&g===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let T;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);T=e.models.map((y,E)=>Oi(y,`providers.${t}.models[${E}]`));let C=new Set([...g===void 0?[]:[g],...T.map(y=>y.id)]);for(let[y,E]of T.entries())if(E.wireModel!==void 0&&!C.has(E.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${y}].wireModel must reference a declared model, got ${JSON.stringify(E.wireModel)}`)}let d={apiKeyEnv:o,reasoningCapability:r,capabilityProfile:a,verifyStrategy:u};return s!==void 0&&(d.reasoningProfile=s),g!==void 0&&(d.model=g),T!==void 0&&(d.models=T),l!==void 0&&(d.contextWindow=l),f!==void 0&&(d.maxOutputTokens=f),c!==void 0&&(d.thinkingBudgetCap=c),p!==void 0&&(d.supportsThinking=p),m!==void 0&&(d.modelReasoningCapabilities=m),n&&(d.cliBridge=!0),d}i(Ni,"validateProviderEntry");function Eo(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]=Ni(r,o);return{version:1,updatedAt:t,providers:n}}i(Eo,"validateProviderCapabilitiesJson");var Fi=Object.freeze({native:ce,"image-input-native":Wn,"cli-bridge":Le,"image-input-cli-bridge":zn}),vt=null;function Ki(){if(process.env.KODAX_BUNDLED==="true")return Ce.join(Ce.dirname(process.execPath),"provider-capabilities.json");let e=Ce.dirname(ji(import.meta.url)),t=[Ce.join(e,"provider-capabilities.json"),Ce.join(Ce.dirname(e),"provider-capabilities.json")];for(let n of t)if(Li(n))return n;return t[0]}i(Ki,"resolveJsonPath");function Ui(e){if(e.models){for(let t of e.models)t.reasoningProfile&&bo(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&bo(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}i(Ui,"deepFreezeSnapshot");function bo(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(bo,"freezeReasoningProfile");function Wi(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(Wi,"resolveCliBridgeModels");function zi(e,t){let n=Fi[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let r=Wi(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(zi,"buildSnapshot");function xo(){if(vt)return vt;let e=Ki(),t;try{let r=Bi(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=Eo(t),o={};for(let[r,s]of Object.entries(n.providers))o[r]=Ui(zi(r,s));return vt=Object.freeze(o),vt}i(xo,"getProviderSnapshots");import Xi from"@anthropic-ai/sdk";var B=xo();function U(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(U,"buildProviderConfig");var sn=class extends L{static{i(this,"AnthropicProvider")}name="anthropic";config=U("anthropic",{strictThinkingSignature:!0});buildClient(){return new Xi({apiKey:this.getApiKey()})}},an=class extends L{static{i(this,"ZhipuCodingProvider")}name="zhipu-coding";config=U("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},un=class extends L{static{i(this,"ZaiCodingProvider")}name="zai-coding";config=U("zai-coding",{baseUrl:"https://api.z.ai/api/anthropic",streamMaxDurationMs:3e5})},cn=class extends L{static{i(this,"KimiCodeProvider")}name="kimi-code";config=U("kimi-code",{baseUrl:"https://api.kimi.com/coding/"})},ln=class extends L{static{i(this,"MiniMaxCodingProvider")}name="minimax-coding";config=U("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},fn=class extends L{static{i(this,"MimoCodingProvider")}name="mimo-coding";config=U("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},dn=class extends L{static{i(this,"MimoProvider")}name="mimo";config=U("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},pn=class extends L{static{i(this,"ArkCodingProvider")}name="ark-coding";config=U("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},gn=class extends z{static{i(this,"OpenAIProvider")}name="openai";config=U("openai")},mn=class extends z{static{i(this,"DeepSeekProvider")}name="deepseek";config=U("deepseek",{baseUrl:"https://api.deepseek.com",replayReasoningContent:!0})},hn=class extends z{static{i(this,"KimiProvider")}name="kimi";config=U("kimi",{baseUrl:"https://api.moonshot.cn/v1",replayReasoningContent:!0})},yn=class extends z{static{i(this,"QwenProvider")}name="qwen";config=U("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},vn=class extends z{static{i(this,"ZhipuProvider")}name="zhipu";config=U("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"),zhipu:i(()=>new vn,"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")},kn=process.env.KODAX_PROVIDER??"zhipu-coding",_o=new Map;function Vi(e){if(j(e))return B[e].apiKeyEnv}i(Vi,"resolveApiKeyEnvForProvider");function Co(e){let t=e??kn,n=X[t];if(!n)throw new M(`Unknown provider: ${t}. Available: ${Object.keys(X).join(", ")}`,t);let o=Vi(t),r=fe(t,o?process.env[o]:void 0),s=_o.get(t);if(s&&s.apiKey===r)return s.instance;let a=n();return _o.set(t,{apiKey:r,instance:a}),a}i(Co,"getProvider");function To(e){return j(e)?fe(e,process.env[B[e].apiKeyEnv])!==void 0:!1}i(To,"isProviderConfigured");function Po(e){return j(e)?B[e].model:null}i(Po,"getProviderModel");function So(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(So,"getProviderConfiguredReasoningCapability");function wo(e){return j(e)?G(B[e].capabilityProfile):null}i(wo,"getProviderConfiguredCapabilityProfile");function Ro(){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(Ro,"getProviderList");function Mo(e){let t=B[e];return t?t.models?[t.model,...t.models.map(n=>n.id)]:[t.model]:[]}i(Mo,"getProviderModels");function j(e){return e in X}i(j,"isProviderName");function En(e){return{id:e.model}}i(En,"makeDefaultDescriptor");function Ao(e,t){if(!t.wireModel)return t;let n=e.models?.find(o=>o.id===t.wireModel);return n?{...n,...t}:t}i(Ao,"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??En(t),...r].map(s=>Ao(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,Ao(n,o)):t===n.model?We(e,n,En(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,En(n)));for(let o of n.models??[])e.push(We(t,n,o))}return e}i(bt,"listBuiltinModelCapabilities");var Gi=new Set(["compat","sdk"]),Hi=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function Io(e){return e.reasoningProfile??e.reasoningCapabilityV2}i(Io,"getConfiguredReasoningProfile");function Ji(e){return e==="anthropic"?"count-tokens":"models-list"}i(Ji,"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 Do(e){return e==="none"||typeof e=="object"&&e!==null&&Array.isArray(e.efforts)}i(Do,"isSimpleReasoning");function Yi(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(Yi,"buildReasoningProfileFromSimple");function Oo(e,t,n,o){let r=Do(n)?n:void 0,s=n!==void 0&&!Do(n)?n:void 0;if(o?.supportsThinking===!1)return Qe("none");if(e)return{...e,...s??{}};if(r!==void 0)return Yi(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(Oo,"resolveCustomReasoningProfile");function _t(e){return Oo(Io(e),e.reasoningPreset,e.reasoning,{protocol:e.protocol,reasoningCapability:e.reasoningCapability,supportsThinking:e.supportsThinking})}i(_t,"resolveCustomProviderReasoningProfile");function _n(e,t,n){return Oo(Io(e),e.reasoningPreset,e.reasoning,{protocol:t,reasoningCapability:e.reasoningCapability,supportsThinking:n})}i(_n,"resolveCustomModelReasoningProfile");function Qi(e,t,n){if(typeof e=="string")return{id:e};let o=_n(e,t,n),r=n===!1&&e.reasoningCapability!==void 0?{...e,reasoningCapability:"none"}:e;return o?{...r,reasoningProfile:o}:r}i(Qi,"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&&!Gi.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(!Hi.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 Zi(e){let t=e.models?.length?e.models.map(s=>Qi(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??Ji(e.protocol)}}i(Zi,"buildProviderConfig");function Ct(e){ze(e);let t=Zi(e);return e.protocol==="anthropic"?new bn(e.name,t):new xn(e.name,t)}i(Ct,"createCustomProvider");var bn=class extends L{static{i(this,"DynamicAnthropicProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}},xn=class extends z{static{i(this,"DynamicOpenAIProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}};var q=new Map,Cn=new Map,es=new Set(["native-toggle","native-budget","native-effort","native-adaptive"]);function $o(e){return e.reasoningCapability!==void 0&&es.has(e.reasoningCapability)||e.reasoningProfile!==void 0||e.reasoningPreset!==void 0&&e.reasoningPreset!=="none"||e.reasoning!==void 0&&e.reasoning!=="none"}i($o,"hasThinkingReasoningConfig");function ts(e){if(e.supportsThinking!==!1)return;let t=$o(e),n=(e.models??[]).some(o=>typeof o!="string"&&$o(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(ts,"warnOnIgnoredReasoningCapability");function No(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.`),ts(r),t.add(r.name),n.set(r.name,r),o.set(r.name,()=>Ct(r))}q.clear(),Cn.clear();for(let[r,s]of n)q.set(r,s);for(let[r,s]of o)Cn.set(r,s)}i(No,"registerCustomProviders");function Tt(e){let t=Cn.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 Lo(){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(Lo,"getCustomProviderList");function Bo(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(Bo,"getCustomProviderModels");function jo(e,t,n){if(typeof e=="string")return{id:e};let o=_n(e,t,n),r=n===!1&&e.reasoningCapability!==void 0?{...e,reasoningCapability:"none"}:e;return o?{...r,reasoningProfile:o}:r}i(jo,"customDescriptorToFull");function St(e){let t=q.get(e);if(!t)return;let n=(t.models??[]).map(s=>jo(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=>jo(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 Fo(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(Fo,"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,ns=0;function Tn(e){let t=oe.get(e);if(!(!t||t.length===0))return t[t.length-1]}i(Tn,"getActiveRuntimeProviderRegistration");function os(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(os,"removeRuntimeProviderRegistration");function Ko(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:${++ns}`,name:n,factory:t},r=oe.get(n)??[];return oe.set(n,[...r,o]),()=>{os(o.id)}}i(Ko,"registerModelProvider");function Rt(e){let t=Tn(e);return t?t.factory():void 0}i(Rt,"getRuntimeModelProvider");function Xe(e){return Tn(e)!==void 0}i(Xe,"isRuntimeModelProviderName");function Mt(){return Array.from(oe.keys()).filter(e=>Tn(e)!==void 0)}i(Mt,"getRuntimeModelProviderNames");function Uo(){oe.clear()}i(Uo,"clearRuntimeModelProviders");function Pn(e){if(j(e))return X[e]();let t=Rt(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(Pn,"resolveProvider");function At(e){return j(e)||Xe(e)||Pe(e)}i(At,"isKnownProvider");function Dt(){let e=Object.keys(X),t=Mt(),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 Wo(){return[...bt(),...wt()]}i(Wo,"listAllModelCapabilities");function rs(e){if(j(e)){let t=B[e];return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:t.verifyStrategy}}if(!Xe(e))return Fo(e)}i(rs,"getProviderVerifyMetadata");async function zo(e,t){let n=rs(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=Pn(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(zo,"verifyProviderCredential");async function Xo(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(Xo,"listProviderModels");function is(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(is,"resolveWireEffort");var Vo={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}},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 Sn(e,t,n){let o=n?.[e]?.[t];return o||Vo[e]?.[t]}i(Sn,"getCostRate");function wn(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,p=r/1e6*u;return l+f+c+p}i(wn,"calculateCost");function ss(){return{records:[],retries:[]}}i(ss,"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 Mn(e,t,n){let o=Sn(t.provider,t.model,n),r=o?wn(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(Mn,"recordUsage");function as(e){let t=0,n=0,o=0,r=0,s=0,a=0,u={},l={};for(let p of e.records){t+=p.cost,n+=p.inputTokens,o+=p.outputTokens,r+=p.cacheReadTokens+p.cacheWriteTokens,s+=p.cacheReadTokens,a+=p.cacheWriteTokens;let m=u[p.provider];u[p.provider]={cost:(m?.cost??0)+p.cost,calls:(m?.calls??0)+1,inputTokens:(m?.inputTokens??0)+p.inputTokens,outputTokens:(m?.outputTokens??0)+p.outputTokens};let g=p.role??"default",T=l[g];l[g]={cost:(T?.cost??0)+p.cost,calls:(T?.calls??0)+1,inputTokens:(T?.inputTokens??0)+p.inputTokens,outputTokens:(T?.outputTokens??0)+p.outputTokens}}let f=0;for(let p of e.retries)f+=p.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(as,"getSummary");function Ot(e){return e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}i(Ot,"formatCost");function us(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(us,"formatCostReport");var Go={inputTokens:0,outputTokens:0,totalTokens:0},cs=3e4;async function ls(e){let t=new AbortController,n=e.timeoutMs??cs,o=e.costTracker,r,s=i(l=>{r||(r=l),t.abort()},"recordAbort"),a=setTimeout(()=>s("timeout"),n),u=i(()=>s("parent"),"onParentAbort");e.abortSignal&&(e.abortSignal.aborted?s("parent"):e.abortSignal.addEventListener("abort",u,{once:!0}));try{let l=await e.provider.stream([...e.messages],[],e.system,e.reasoning??{effort:"none"},{modelOverride:e.model,onRetryAfter:i(g=>{o&&(o=Rn(o,{provider:g.provider,waitMs:g.waitMs,reason:g.reason,source:g.source}))},"onRetryAfter")},t.signal),f=l.usage??Go,c=l.textBlocks??[],p=l.toolBlocks??[],m=c.map(g=>g.text).join("");return p.length>0?{text:m,usage:f,costTracker:o,stopReason:"error",error:new Error(`sideQuery: provider returned ${p.length} tool_use block(s); sideQuery expects text-only output`)}:(o&&(o=Mn(o,{provider:e.provider.name,model:e.model,inputTokens:f.inputTokens,outputTokens:f.outputTokens,cacheReadTokens:f.cachedReadTokens,cacheWriteTokens:f.cachedWriteTokens,role:e.querySource})),{text:m,usage:f,costTracker:o,stopReason:fs(l.stopReason)})}catch(l){let f=l instanceof Error?l:new Error(String(l)),c="error";return t.signal.aborted&&(c=r==="timeout"?"timeout":"aborted"),{text:"",usage:Go,costTracker:o,stopReason:c,error:f}}finally{clearTimeout(a),e.abortSignal&&e.abortSignal.removeEventListener("abort",u)}}i(ls,"sideQuery");function fs(e){return e==="max_tokens"?"max_tokens":"end_turn"}i(fs,"mapStopReason");export{Jo as a,qo as b,Yo as c,Q as d,M as e,Me as f,$t as g,Nt as h,Lt as i,Qo as j,Zo as k,er as l,Ae as m,tr as n,nr as o,qe as p,Bt as q,or as r,rr as s,ir as t,sr as u,ar as v,de as w,An as x,Dn as y,Ut as z,pe as A,Ze as B,$e as C,In as D,lr as E,On as F,Ne as G,fr as H,mr as I,ae as J,ue as K,Wt as L,et as M,tt as N,Kn as O,Un as P,Cr as Q,Tr as R,ge as S,nt as T,J as U,Mr as V,Gn as W,he as X,ye as Y,Vt as Z,Gt as _,ve as $,Ht as aa,Be as ba,L as ca,z as da,be as ea,xe as fa,Ke as ga,Ue as ha,B as ia,X as ja,kn as ka,Co as la,To as ma,Po as na,So as oa,wo as pa,Ro as qa,Mo as ra,j as sa,kt as ta,Et as ua,bt as va,ze as wa,Ct as xa,No as ya,Tt as za,Pe as Aa,Pt as Ba,Lo as Ca,Bo as Da,St as Ea,Te as Fa,wt as Ga,Ko as Ha,Rt as Ia,Xe as Ja,Mt as Ka,Uo as La,Pn as Ma,At as Na,Dt as Oa,Ve as Pa,It as Qa,Wo as Ra,zo as Sa,Xo as Ta,is as Ua,Vo as Va,Sn as Wa,wn as Xa,ss as Ya,Rn as Za,Mn as _a,as as $a,Ot as ab,us as bb,ls as cb};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a}from"./chunk-2RI252RN.js";import"./chunk-JSDLBXME.js";import"./chunk-E27LHEIP.js";import"./chunk-EDZ5KJFT.js";import"./chunk-23X6REO4.js";import"./chunk-ONUPGMER.js";export{a as loadCompactionConfig};
|
|
@@ -1,2 +0,0 @@
|
|
|
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,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-VVE3UM4F.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-IR5KIK7E.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-MVARIMQV.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-VDGCGOQH.js";import"./chunk-SQODXBLX.js";import{a as $f}from"./chunk-44QXPEEE.js";import{$ as qc,$a as ld,$b as ge,$c as Ye,A as bc,Aa as Oc,Ab as Hd,B as cc,Bb as Id,C as dc,Ca as Pc,Cb as Jd,Cc as Ce,D as ec,Da as Qc,Db as Kd,Dc as De,Ea as Rc,Eb as Ld,Ec as Ee,Ed as Yf,Fa as Sc,Fb as Md,Fc as Fe,Fd as Zf,Ga as Tc,Gb as Nd,Gc as Ge,Gd as _f,Ha as Uc,Hb as Od,Hc as He,Ia as Vc,Ib as Pd,Ic as Ie,Ja as Wc,Jb as Qd,Jc as Je,K as fc,Ka as Xc,Kb as Rd,Kc as Ke,L as gc,La as Yc,Lb as Sd,Lc as Le,M as hc,Ma as Zc,Mb as Td,Mc as Me,N as ic,Na as _c,Nb as Ud,Nc as Ne,O as jc,Oa as $c,Ob as Vd,Oc as Oe,Pa as ad,Pb as Wd,Pc as Pe,Qa as bd,Qb as Xd,Qc as Qe,Ra as cd,Rb as Yd,Rc as Re,Sa as dd,Sb as Zd,Sc as Se,T as kc,Ta as ed,Tb as _d,Tc as Te,Ua as fd,Ub as $d,V as lc,Va as gd,Vb as ae,Wa as hd,Wb as be,X as mc,Xa as id,Xb as ce,Xc as Ue,Y as nc,Yb as de,Yc as Ve,Z as oc,Za as jd,Zb as ee,Zc as We,_ as pc,_a as kd,_b as fe,_c as Xe,ab as md,ac as he,ad as Ze,ba as rc,bb as nd,bc as ie,bd as _e,ca as sc,cb as od,cc as je,cd as $e,d as Nb,da as tc,db as pd,dc as ke,dd as gf,e as Ob,ea as uc,eb as qd,ec as le,ed as hf,fa as vc,fb as rd,fc as me,fd as jf,ga as wc,gb as sd,gc as ne,ha as xc,hb as td,hc as oe,i as Pb,ia as yc,ib as ud,ic as pe,j as Qb,ja as zc,jb as vd,jc as qe,k as Rb,ka as Ac,kb as wd,kc as re,l as Sb,la as Bc,lb as xd,lc as se,m as Tb,ma as Cc,mc as te,n as Ub,na as Dc,nc as ue,o as Vb,oa as Ec,ob as yd,oc as ve,p as Wb,pa as Fc,pc as we,q as Xb,qa as Gc,qc as xe,r as Yb,ra as Hc,rc as ye,s as Zb,sb as zd,sc as ze,sd as Sf,t as _b,tb as Ad,tc as Ae,td as Tf,ua as Ic,ub as Bd,uc as Be,ud as Uf,va as Jc,vb as Cd,vd as Vf,wa as Kc,wb as Dd,wd as Wf,xa as Lc,xb as Ed,xd as Xf,y as $b,ya as Mc,yb as Fd,z as ac,za as Nc,zb as Gd}from"./chunk-GIK4SGAT.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-ZJIMT5I3.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-JSDLBXME.js";import{d as Ta,e as Ua,f as Va,i as Wa}from"./chunk-E27LHEIP.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-EDZ5KJFT.js";import"./chunk-23X6REO4.js";import"./chunk-ONUPGMER.js";export{vf as ALWAYS_RESIDENT_TOOL_NAMES,Zh as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,_h as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,si as BASH_POLICY_SPEC,lh as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,di as BREAKER_ERROR_THRESHOLD,ei 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,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,oi 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,Ci 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,vi 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,Ei as authorWorkflowViaWorker,ci as autoModeDenialShouldFallback,li as bashSignalCollector,wi as bootstrapTracing,$g as boundedRevise,hi 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,Di 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,ki as checkAbsoluteDeny,pf as checkIncompleteToolCalls,Rf as checkPromiseSignal,$e as clampToolResultPolicyToBudget,Ng as clampWorkflowLimits,Sh 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,ni as collectAllSignals,ye as combineExtensionRuntimes,Gh as computeInputSignature,Th as computeRulesFingerprint,de as configureRuntime,zf as consumeCompactionCooldown,Xc as convertCapabilityReadResult,Wc as convertProviderSearchResults,Jb as countActiveLineageMessages,Ma as countTokens,Na as createAgent,$h as createAutoModeDenialTracker,ri as createAutoModeToolGuardrail,Dh as createBashClassifierConfig,ui as createBashPrefixExtractor,Ke as createBuiltinToolDefinition,fi 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,yi as createWorkflowLifecycleController,Bi 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,ti as extractCommandPrefix,sf as extractComparableUserMessageText,Vc as extractHtmlTitle,hb as extractInsufficientScope,rf as extractPromptComparableText,gb as extractResourceMetadataUrl,xb as extractTitleFromMessages,mi 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,Ai 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,zi as listWorkflowPatternTemplates,hf as loadAgentsFiles,pe as loadAgentsFromMarkdown,Xh 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,Wh as parseAutoRules,Rh as parseClassifierOutput,hc as parseEditToolError,Vd as parseLlmReviewVerdict,ab as parseMcpCapabilityId,ii 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,pi as readSpeculativeWindowFromEnv,Uh as readTrustState,Mf as reasoningModeToDepth,Gf as reconstructMessagesWithToolGuard,bi as recordAutoModeAllow,ai as recordAutoModeBlock,jh as recordBlockerAttempt,gi 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,ji 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,xi 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,qi as speculativeRace,fe as stage,_g as startKodaX,Tg as startManagedWorkflow,Yh 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,Vh 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,Fi as writeReviewPackets};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{j as a}from"./chunk-IR5KIK7E.js";import"./chunk-MVARIMQV.js";import"./chunk-44QXPEEE.js";import"./chunk-GIK4SGAT.js";import"./chunk-ZJIMT5I3.js";import"./chunk-JSDLBXME.js";import"./chunk-E27LHEIP.js";import"./chunk-EDZ5KJFT.js";import"./chunk-23X6REO4.js";import"./chunk-ONUPGMER.js";export{a as startManagedWorkflow};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{I as a,J as b}from"./chunk-MVARIMQV.js";import"./chunk-GIK4SGAT.js";import"./chunk-ZJIMT5I3.js";import"./chunk-JSDLBXME.js";import"./chunk-E27LHEIP.js";import"./chunk-EDZ5KJFT.js";import"./chunk-23X6REO4.js";import"./chunk-ONUPGMER.js";export{a as createWorkflowRunManager,b as getDefaultWorkflowRunManager};
|