@kodax-ai/kodax 0.7.51 → 0.7.53
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 +1838 -1800
- package/README.md +6 -0
- package/README_CN.md +4 -0
- package/dist/chunks/{agent-EFA7BSE7.js → agent-DZ37KWZI.js} +1 -1
- package/dist/chunks/argument-completer-OFPM36IZ.js +2 -0
- package/dist/chunks/{chunk-JJTUBNQX.js → chunk-5YQDGVDB.js} +1 -1
- package/dist/chunks/chunk-67HVIUEO.js +307 -0
- package/dist/chunks/chunk-CLIRXPAJ.js +425 -0
- package/dist/chunks/{chunk-CCZMQE3Q.js → chunk-D4MGMUDL.js} +1 -1
- package/dist/chunks/chunk-LE6STNVN.js +31 -0
- package/dist/chunks/{chunk-WQTVG2T5.js → chunk-OQL4ISVD.js} +170 -170
- package/dist/chunks/{chunk-ODVA5VTE.js → chunk-RFE5EC7W.js} +215 -215
- package/dist/chunks/{chunk-HMATTIU6.js → chunk-XFCAXDSD.js} +2 -2
- package/dist/chunks/{compaction-config-UBPCNGC2.js → compaction-config-OF2T45MC.js} +1 -1
- package/dist/chunks/{construction-bootstrap-WY5MDXRX.js → construction-bootstrap-JIE7LYNN.js} +1 -1
- package/dist/chunks/dist-BOHLKKR5.js +2 -0
- package/dist/chunks/{dist-B73FQEAA.js → dist-Z6U7TWKJ.js} +1 -1
- package/dist/chunks/{utils-HVOJRR5C.js → utils-AB4DNRZC.js} +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -1
- package/dist/kodax_cli.js +991 -932
- package/dist/sdk-agent.d.ts +8 -8
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +12 -12
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-llm.d.ts +3 -3
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +47 -12
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-session.d.ts +5 -5
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/types-chunks/{base.d-GZ6jvICS.d.ts → base.d-BBNUF9nz.d.ts} +1 -0
- package/dist/types-chunks/{bash-prefix-extractor.d-DTOiDMlG.d.ts → bash-prefix-extractor.d-BpNoRkSD.d.ts} +57 -4
- package/dist/types-chunks/{capsule.d-CXGdLGAn.d.ts → capsule.d-CNonpwAZ.d.ts} +3 -3
- package/dist/types-chunks/{guardrail.d-D47yu9AO.d.ts → guardrail.d-B18oO1gt.d.ts} +3 -3
- package/dist/types-chunks/{process.d-B8kEBnQD.d.ts → process.d-Bj82oJhD.d.ts} +1 -1
- package/dist/types-chunks/{resolver.d-D75XFRH2.d.ts → resolver.d-CCX9NXWP.d.ts} +2 -1
- package/dist/types-chunks/{sdk-session-BKQJN9oH.d.ts → sdk-session-BkaGuIC6.d.ts} +4 -4
- package/dist/types-chunks/{storage.d-BN1xIn8R.d.ts → storage.d-BUIiD4gq.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DQ_hdN70.d.ts → types.d-D4jL-gAA.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-ZfRDo-kX.d.ts → utils.d-B3fwJEMd.d.ts} +26 -20
- package/package.json +2 -2
- package/dist/chunks/argument-completer-MAJVHSE7.js +0 -2
- package/dist/chunks/chunk-E3HENKTX.js +0 -420
- package/dist/chunks/chunk-FAIGYAEX.js +0 -301
- package/dist/chunks/chunk-PEWH3AAL.js +0 -31
- package/dist/chunks/dist-BTWS2ENP.js +0 -2
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as r}from"./chunk-V4WSBIXB.js";var Y=class extends Error{static{r(this,"KodaXError")}code;constructor(e,o="KODAX_ERROR"){super(e),this.code=o,this.name="KodaXError"}},R=class extends Y{static{r(this,"KodaXProviderError")}provider;constructor(e,o){super(e,"PROVIDER_ERROR"),this.provider=o,this.name="KodaXProviderError"}},ke=class extends Y{static{r(this,"KodaXRateLimitError")}retryAfter;constructor(e,o){super(e,"RATE_LIMIT_ERROR"),this.retryAfter=o,this.name="KodaXRateLimitError"}},pt=class extends Y{static{r(this,"KodaXNetworkError")}isTimeout;constructor(e,o=!1){super(e,"NETWORK_ERROR"),this.isTimeout=o,this.name="KodaXNetworkError"}},ft=class extends Y{static{r(this,"KodaXToolCallIdError")}constructor(e){super(e,"TOOL_CALL_ID_ERROR"),this.name="KodaXToolCallIdError"}};var mt=32768,on=32e3,nn=64e3,rn=.5;var sn=["off","auto","quick","balanced","deep"],ro={low:6e3,medium:1e4,high:2e4},so=4096;function gt(t){return t.reasoningCapability?t.reasoningCapability:t.supportsThinking?"native-toggle":"prompt-only"}r(gt,"getReasoningCapability");function ne(t){return Re(t).enabled}r(ne,"isReasoningEnabled");function Re(t){if(typeof t=="boolean")return{enabled:t,mode:t?"auto":"off",depth:t?"medium":"off",taskType:"unknown",executionMode:"implementation"};let e=t?.mode??"off",o=t?.depth??ao(e),n=t?.enabled??(e!=="off"&&o!=="off");return{enabled:n&&e!=="off"&&o!=="off",mode:e,depth:n?o:"off",taskType:t?.taskType??"unknown",executionMode:t?.executionMode??"implementation"}}r(Re,"normalizeReasoningRequest");function ao(t){switch(t){case"quick":return"low";case"balanced":case"auto":return"medium";case"deep":return"high";default:return"off"}}r(ao,"getDefaultThinkingDepthForMode");function ie(t,e,o="unknown"){if(e==="off")return 0;let n={...ro,...t.defaultThinkingBudgets??{}},s=t.taskBudgetOverrides?.[o]?.[e]??n[e];return t.thinkingBudgetCap?Math.min(s,t.thinkingBudgetCap):s}r(ie,"resolveThinkingBudget");function re(t,e,o=so){let n=Math.max(1024,e-o);return Math.max(1024,Math.min(t,n))}r(re,"clampThinkingBudget");function ht(t){switch(t){case"low":return"low";case"medium":return"medium";case"high":return"high";default:return}}r(ht,"mapDepthToOpenAIReasoningEffort");import Ae from"fs";import an from"os";import kt from"path";var yt=null;function cn(t){return t==="budget"||t==="effort"||t==="toggle"||t==="adaptive"||t==="none"}r(cn,"isReasoningOverride");function ln(t){if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=t.providerReasoningOverrides;return e===void 0?!0:!e||typeof e!="object"||Array.isArray(e)?!1:Object.values(e).every(cn)}r(ln,"isStoredConfig");function un(){return process.env.KODAX_HOME??kt.join(an.homedir(),".kodax")}r(un,"getKodaxDir");function co(){return process.env.KODAX_CONFIG_FILE??kt.join(un(),"config.json")}r(co,"getConfigFilePath");function vt(t,e){return yt={filePath:t,config:e},e}r(vt,"updateStoredConfigCache");function dn(t){let e=JSON.parse(Ae.readFileSync(t,"utf-8"));return ln(e)?e:{}}r(dn,"readStoredConfigFromDisk");function bt(t){switch(t){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";case"none":return"none";default:return}}r(bt,"reasoningCapabilityToOverride");function _t(t){switch(t){case"budget":return"native-budget";case"effort":return"native-effort";case"toggle":return"native-toggle";case"adaptive":return"native-adaptive";default:return"none"}}r(_t,"reasoningOverrideToCapability");function se(t,e,o){return[t,e.baseUrl??"",o??e.model].join("|")}r(se,"buildReasoningOverrideKey");function Ct(){let t=co();if(yt?.filePath===t)return yt.config;try{if(Ae.existsSync(t))return vt(t,dn(t))}catch{}return vt(t,{})}r(Ct,"loadStoredConfig");function lo(t){let e=co();try{Ae.mkdirSync(kt.dirname(e),{recursive:!0}),Ae.writeFileSync(e,JSON.stringify(t,null,2)),vt(e,t)}catch(o){process.env.KODAX_DEBUG_OVERRIDES&&console.error("[ReasoningOverride] Failed to save config:",o)}}r(lo,"saveStoredConfig");function Oe(t,e,o){let n=Ct(),i=se(t,e,o);return n.providerReasoningOverrides?.[i]}r(Oe,"loadReasoningOverride");function xt(t,e,o,n){let i=Ct(),s=se(t,e,n);i.providerReasoningOverrides={...i.providerReasoningOverrides??{},[s]:o},lo(i)}r(xt,"saveReasoningOverride");function pn(t,e,o){let n=Ct(),i=se(t,e,o);if(!n.providerReasoningOverrides?.[i])return;let s={...n.providerReasoningOverrides};delete s[i],n.providerReasoningOverrides=Object.keys(s).length>0?s:void 0,lo(n)}r(pn,"clearReasoningOverride");function uo(t,e){if(!t)return;if(typeof t.get=="function")return t.get(e)??void 0;let o=t,n=e.toLowerCase(),i=o[e]??o[n]??o[n.replace(/\b\w/g,s=>s.toUpperCase())];if(i!==void 0)return Array.isArray(i)?i[0]:i}r(uo,"readHeader");function po(t){if(!t)return;let e=t.trim();if(e.length===0)return;let o=Number(e);if(!(!Number.isFinite(o)||o<=0))return o}r(po,"parsePositiveNumber");function fn(t,e){if(!t)return;let o=t.trim();if(o.length===0)return;let n=Date.parse(o);if(!Number.isFinite(n))return;let i=n-e;return i>0?i:void 0}r(fn,"parseHttpDate");function De(t,e){let o=e.baseBackoffMs??1e3,n=e.maxBackoffMs??3e4,i=e.maxHeaderWaitMs??12e4,s=e.now?e.now():Date.now(),a=po(uo(t,"retry-after-ms"));if(a!==void 0){let v=Math.min(a,i);return{type:"header",waitMs:Math.round(v),source:"retry-after-ms",cappedFromHeader:v!==a}}let c=uo(t,"retry-after");if(c!==void 0&&c.trim().length>0){let v=po(c);if(v!==void 0){let b=v*1e3,p=Math.min(b,i);return{type:"header",waitMs:Math.round(p),source:"retry-after-seconds",cappedFromHeader:p!==b}}let g=fn(c,s);if(g!==void 0){let b=Math.min(g,i);return{type:"header",waitMs:Math.round(b),source:"retry-after-date",cappedFromHeader:b!==g}}}let u=o*Math.pow(2,Math.max(0,e.attempt)),d=Math.min(u,n),f=e.withJitter!==!1?Math.random()*.25*d:0;return{type:"backoff",waitMs:Math.round(d+f),source:"exponential-backoff",attempt:e.attempt}}r(De,"parseRetryAfter");function Ie(t){if(!t||typeof t!="object")return;let e=t;return e.headers??e.response?.headers??e.cause?.headers??e.cause?.response?.headers}r(Ie,"extractHeadersFromError");var te={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},fo={...te,multimodalSupport:"image-input"},be={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},mo={...be,multimodalSupport:"image-input"};function Le(t){return{transport:t.transport,conversationSemantics:t.conversationSemantics,mcpSupport:t.mcpSupport,contextFidelity:t.contextFidelity??"full",toolCallingFidelity:t.toolCallingFidelity??"full",sessionSupport:t.sessionSupport??"full",longRunningSupport:t.longRunningSupport??"full",multimodalSupport:t.multimodalSupport??"none",evidenceSupport:t.evidenceSupport??"full"}}r(Le,"normalizeCapabilityProfile");function W(t){return{...Le(t)}}r(W,"cloneCapabilityProfile");function mn(t){if(!t)return;let e=parseInt(t,10);return Number.isFinite(e)&&e>0?e:void 0}r(mn,"parseEnvInt");function Ne(){return new DOMException("Request aborted","AbortError")}r(Ne,"abortError");function gn(t,e){return t<=0?Promise.resolve():e?.aborted?Promise.reject(Ne()):new Promise((o,n)=>{let i,s=r(()=>{e&&e.removeEventListener("abort",a)},"cleanup"),a=r(()=>{i&&clearTimeout(i),s(),n(Ne())},"onAbort");e&&e.addEventListener("abort",a,{once:!0}),i=setTimeout(()=>{s(),o()},t)})}r(gn,"waitForRetryDelay");var G=class{static{r(this,"KodaXBaseProvider")}maxOutputTokensOverride;setMaxOutputTokensOverride(e){this.maxOutputTokensOverride=e}getEffectiveMaxOutputTokens(e){if(this.maxOutputTokensOverride!==void 0)return this.maxOutputTokensOverride;let o=mn(process.env.KODAX_MAX_OUTPUT_TOKENS);if(o!==void 0)return o;let n=this.getModelDescriptor(e)?.maxOutputTokens;return n!==void 0?n:this.config.maxOutputTokens??32768}getStreamMaxDurationMs(e){let o=this.getModelDescriptor(e)?.streamMaxDurationMs;return o!==void 0?o:this.config.streamMaxDurationMs}getEffectiveReplayReasoningContent(e){let o=this.getModelDescriptor(e)?.replayReasoningContent;return o!==void 0?o:this.config.replayReasoningContent??!1}getEffectiveStrictThinkingSignature(e){let o=this.getModelDescriptor(e)?.strictThinkingSignature;return o!==void 0?o:this.config.strictThinkingSignature??!1}supportsNonStreamingFallback(){return!1}async complete(e,o,n,i,s,a){throw new R(`${this.name} does not support non-streaming fallback`)}isConfigured(){return!!process.env[this.config.apiKeyEnv]}async verifyCredential(e){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(e=>e.id)])]:[this.config.model]}getModelDescriptor(e){let o=e??this.config.model,n=this.config.models?.find(i=>i.id===o);if(n)return n;if(o===this.config.model)return{id:this.config.model}}getBaseUrl(){return this.config.baseUrl}getApiKeyEnv(){return this.config.apiKeyEnv}getCapabilityProfile(){return W(this.config.capabilityProfile??te)}getConfiguredReasoningCapability(e){let o=this.getModelDescriptor(e);return o?.reasoningCapability?o.reasoningCapability:gt(this.config)}getReasoningCapability(e){let o=Oe(this.name,this.config,e);return o?_t(o):this.getConfiguredReasoningCapability(e)}getReasoningOverride(e){return Oe(this.name,this.config,e)}getReasoningOverrideKey(e){return se(this.name,this.config,e)}persistReasoningCapabilityOverride(e,o){let n=bt(e);n&&xt(this.name,this.config,n,o)}shouldFallbackForReasoningError(e,...o){let n=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase(),s=o.map(c=>c.toLowerCase()).some(c=>n.includes(c)),a=n.includes("parameter")||s;return n.includes("unknown parameter")||n.includes("invalid parameter")||n.includes("unsupported")&&a}shouldFallbackForSpecificReasoningError(e,...o){let n=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return o.map(a=>a.toLowerCase()).some(a=>n.includes(a))?n.includes("unknown parameter")||n.includes("invalid parameter")||n.includes("unsupported"):!1}shouldFallbackForForcedToolChoiceError(e){let o=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return o.includes("tool_choice")||o.includes("tool choice")||o.includes("toolchoice")?o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported"):!1}getReasoningFallbackChain(e){switch(e){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(e){let o=this.getModelDescriptor(e)?.contextWindow;return o!==void 0?o:this.config.contextWindow??2e5}getApiKey(){let e=process.env[this.config.apiKeyEnv];if(!e)throw new Error(`${this.config.apiKeyEnv} not set`);return e}shouldLogStreamDiagnostics(){return!!process.env.KODAX_DEBUG_STREAM}logStreamDiagnostic(...e){this.shouldLogStreamDiagnostics()&&console.error(...e)}normalizeReasoning(e){return Re(e)}onStaleConnection(){}isRateLimitError(e){if(!(e instanceof Error))return!1;let o=e.message.toLowerCase();return["rate","limit","\u901F\u7387","\u9891\u7387","1302","429","too many","overload","overwhelmed","503","529","busy"].some(n=>o.includes(n))}classifyRateLimitReason(e){let o=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return o.includes("overload")||o.includes("overwhelmed")||o.includes("503")||o.includes("529")||o.includes("busy")?"overloaded":"rate-limit"}extractRetryAfterMs(e){let o=Ie(e);if(!o)return;let n=De(o,{attempt:0,withJitter:!1});return n.type==="header"?n.waitMs:void 0}parseContextOverflow(e){let o=String(e?.message??""),n=[/(\d[\d,]*)\s*tokens?.*?(\d[\d,]*)\s*(?:maximum|limit|context)/i,/maximum.*?(\d[\d,]*)\s*tokens?.*?requested.*?(\d[\d,]*)/i,/exceeds?\s+.*?(\d[\d,]*)\s*.*?(?:limit|max|上限).*?(\d[\d,]*)/i];for(let i of n){let s=o.match(i);if(s){let a=Number(s[1].replace(/,/g,"")),c=Number(s[2].replace(/,/g,"")),u=Math.min(a,c),d=Math.max(a,c);return Math.max(3e3,d-u-1e3)}}}isContextOverflowError(e){let o=String(e?.message??"").toLowerCase();return o.includes("prompt is too long")||o.includes("prompt too long")||o.includes("context length")||o.includes("context_length_exceeded")||o.includes("context window")||o.includes("\u4E0A\u4E0B\u6587\u957F\u5EA6")}async withRateLimit(e,o,n=3,i,s){for(let a=0;a<n;a++)try{let c=await e();return this.maxOutputTokensOverride=void 0,c}catch(c){if(this.isContextOverflowError(c)&&!this.maxOutputTokensOverride){let u=this.parseContextOverflow(c);if(u){this.maxOutputTokensOverride=u,i?.(a+1,n,0);continue}}if(this.isRateLimitError(c)){if(a===n-1)throw new ke(`API rate limit exceeded after ${n} retries. Please wait and try again later.`,6e4);let u=Ie(c)??{},d=De(u,{attempt:a,baseBackoffMs:500,maxBackoffMs:32e3,withJitter:!0}),l=d.waitMs,f=this.classifyRateLimitReason(c);if(s?.({provider:this.name,waitMs:l,reason:f,source:d.source,attempt:a+1,maxAttempts:n}),i?i(a+1,n,l):s||console.log(`[Rate Limit] Retrying in ${l/1e3}s (${a+1}/${n})...`),o?.aborted||(await gn(l,o),o?.aborted))throw Ne();continue}if(c instanceof Error){if((c.name==="AbortError"||c.name==="APIUserAbortError")&&o?.aborted)throw c.name==="AbortError"?c:new DOMException(c.message||"Request aborted","AbortError");let u=c?.cause?.code??c?.code??"";throw(u==="ECONNRESET"||u==="EPIPE")&&this.onStaleConnection(),new R(`${this.name} API error: ${c.message}`,this.name)}throw c}throw new Y("Unexpected end of withRateLimit")}};import _n from"@anthropic-ai/sdk";import{parse as hn}from"partial-json";function ae(t){if(!t)return{};try{let e=JSON.parse(t);return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch{}try{let e=hn(t);return process.env.KODAX_DEBUG_TOOL_STREAM&&console.warn("[Tool Block Salvaged] partial JSON recovered, rawLength=",t.length),e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch{return{}}}r(ae,"parseToolInputWithSalvage");async function ce(t){if(t.strategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:"Provider does not support credential verification"};let e=t.runners.find(d=>d.strategy===t.strategy);if(!e)return{ok:!1,error:"unsupported",strategy:t.strategy,durationMs:0,approxTokensSpent:0,message:`verifyStrategy="${t.strategy}" is not implemented for this provider's base class`};if(t.signal?.aborted)return{ok:!1,error:"unknown",strategy:t.strategy,durationMs:0,approxTokensSpent:0,message:"caller aborted before verifyCredential started"};let o=new AbortController,n=t.timeoutMs??8e3,i,s=r(d=>{i||(i=d),o.abort()},"recordAbort"),a=setTimeout(()=>s("timeout"),n),c=r(()=>s("parent"),"onParentAbort");t.signal&&t.signal.addEventListener("abort",c,{once:!0});let u=Date.now();try{return await e.run(o.signal),{ok:!0,strategy:t.strategy,durationMs:Date.now()-u,approxTokensSpent:e.approxTokensSpent}}catch(d){return Tt(d,{strategy:t.strategy,durationMs:Date.now()-u,approxTokensSpent:0,abortCause:i,providerName:t.providerName})}finally{clearTimeout(a),t.signal&&t.signal.removeEventListener("abort",c)}}r(ce,"runVerifyCredential");function yn(t){return t.replace(/\bsk-[A-Za-z0-9_-]{6,}/g,"sk-***")}r(yn,"redactKeyMaterial");function Tt(t,e){let o=t,n=o.status??o.statusCode??o.response?.status,i=yn(String(o.message??t)).slice(0,240),s=o.cause?.code??o.code,a=o.constructor?.name??"",c;return e.abortCause==="timeout"?c="timeout":e.abortCause==="parent"?c="unknown":a==="AuthenticationError"||a==="PermissionDeniedError"||n===401||n===403?c="unauthorized":n===429?c="rate_limited":n===400&&e.strategy==="count-tokens"&&e.providerName==="kimi-code"?c="unauthorized":n!==void 0&&n>=500&&n<600?c="server_error":s!==void 0&&/ENOTFOUND|ECONNREFUSED|ECONNRESET|EAI_AGAIN|EPIPE|ETIMEDOUT|ENETUNREACH|ENETDOWN|EHOSTUNREACH/i.test(s)?c="network":/timeout/i.test(i)?c="timeout":c="unknown",{ok:!1,error:c,status:n,message:i,durationMs:e.durationMs,approxTokensSpent:e.approxTokensSpent,strategy:e.strategy}}r(Tt,"classifyVerifyError");function Et(t,e){let o=t[t.length-1];if(o&&le(o)&&o.hint===e)return t;let n=e?{type:"cache-boundary",hint:e}:{type:"cache-boundary"};return[...t,n]}r(Et,"insertCacheBoundary");function le(t){if(typeof t!="object"||t===null||t.type!=="cache-boundary")return!1;let e=Object.keys(t);return e.length<=2&&e.every(o=>o==="type"||o==="hint")}r(le,"isCacheBoundary");function wt(t,e){let o=[];for(let n of t){if(le(n)){if(e==="attach"&&o.length>0){let i=o[o.length-1];o[o.length-1]={...i,cache_control:{type:"ephemeral"}}}continue}o.push(n)}return o}r(wt,"lowerCacheBoundaries");function _e(t){return t.filter(e=>!le(e))}r(_e,"stripCacheBoundaries");import{readFile as vn}from"node:fs/promises";import kn from"node:path";var bn={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"};function Be(t,e){return e??bn[kn.extname(t).toLowerCase()]??"image/png"}r(Be,"resolveImageMediaType");async function Fe(t){return(await vn(t)).toString("base64")}r(Fe,"readImageFileAsBase64");async function go(t,e){let o=Be(t,e),n=await Fe(t);return`data:${o};base64,${n}`}r(go,"buildImageDataUrl");var Cn="KodaX";function xn(t){return t.userAgentMode==="sdk"?void 0:{"User-Agent":Cn}}r(xn,"getAnthropicCompatDefaultHeaders");function Mt(t,e){if(!t)return e;let o=t.input_tokens!==void 0&&t.input_tokens!==null||t.cache_creation_input_tokens!==void 0&&t.cache_creation_input_tokens!==null||t.cache_read_input_tokens!==void 0&&t.cache_read_input_tokens!==null,n=typeof t.input_tokens=="number"?t.input_tokens:o?0:e?.inputTokens??0,i=typeof t.cache_creation_input_tokens=="number"?t.cache_creation_input_tokens:o?0:e?.cachedWriteTokens??0,s=typeof t.cache_read_input_tokens=="number"?t.cache_read_input_tokens:o?0:e?.cachedReadTokens??0,a=typeof t.output_tokens=="number"?t.output_tokens:e?.outputTokens??0,c=o?n+i+s:e?.inputTokens??0;if(![c,a].some(u=>!Number.isFinite(u)||u<0))return{inputTokens:c,outputTokens:a,totalTokens:c+a,cachedReadTokens:s||void 0,cachedWriteTokens:i||void 0}}r(Mt,"normalizeAnthropicUsage");var I=class extends G{static{r(this,"KodaXAnthropicCompatProvider")}supportsThinking=!0;_client;get client(){return this._client??=this.buildClient()}set client(e){this._client=e}buildClient(){let e=xn(this.config);return new _n({apiKey:this.getApiKey(),baseURL:this.config.baseUrl,...e?{defaultHeaders:e}:{}})}onStaleConnection(){this._client=void 0}async verifyCredential(e){let o=this.config.model,n=this.client,i=[{strategy:"count-tokens",approxTokensSpent:0,run:r(async s=>{await n.messages.countTokens({model:o,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")},{strategy:"models-list",approxTokensSpent:0,run:r(async s=>{await n.models.list({},{signal:s})},"run")},{strategy:"minimal-message",approxTokensSpent:7,run:r(async s=>{await n.messages.create({model:o,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")}];return ce({strategy:this.config.verifyStrategy??"count-tokens",runners:i,timeoutMs:e?.timeoutMs,signal:e?.signal,providerName:this.name})}applyCacheControlToSystem(e){if(!e.trim()||process.env.KODAX_DISABLE_PROMPT_CACHE==="1")return e;let o=Et([{type:"text",text:e}],"system");return wt(o,"attach")}applyCacheControlToTools(e){if(e.length===0||process.env.KODAX_DISABLE_PROMPT_CACHE==="1")return e;let o=e.slice(),n=o[o.length-1];return o[o.length-1]={...n,cache_control:{type:"ephemeral"}},o}async stream(e,o,n,i,s,a){return this.withRateLimit(async()=>{let c=this.normalizeReasoning(i),u=s?.modelOverride??this.config.model,d=s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u),l=await this.convertMessages(e,u),f=c.enabled?this.getReasoningCapability(u):"none",v=c.enabled?this.getReasoningFallbackChain(f).filter(h=>h==="native-budget"||h==="native-toggle"||h==="native-adaptive"||h==="none"):["none"],g=!!s?.forcedToolName,b=r(h=>{let M={model:u,max_tokens:d,system:this.applyCacheControlToSystem(this.buildSystemPrompt(n,e)),messages:l,tools:this.applyCacheControlToTools(o),stream:!0};if(s?.forcedToolName&&g&&(M.tool_choice={type:"tool",name:s.forcedToolName}),h==="native-budget"){let S=ie(this.config,c.depth,c.taskType);M.thinking={type:"enabled",budget_tokens:re(S,d)}}else h==="native-toggle"?M.thinking={type:"enabled"}:h==="native-adaptive"&&(M.thinking={type:"adaptive"});return M},"buildRequest");if(a?.aborted)throw new DOMException("Request aborted","AbortError");let p=[],y=[],k=[],x,_=null,m="",T="",P="",N="",L="",j="",B="",q=!1,w,D=Date.now(),V=Date.now(),Z,Se;for(let h of v){for(;!Z;)try{Z=await this.client.messages.create(b(h),a?{signal:a}:{}),h!==f&&this.persistReasoningCapabilityOverride(h,u)}catch(M){if(Se=M,g&&this.shouldFallbackForForcedToolChoiceError(M)){g=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let S=h==="native-budget"?["budget_tokens","thinking"]:h==="native-toggle"?["thinking"]:h==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(M,...S))throw M;break}if(Z)break}if(!Z)throw Se??new R("All reasoning capability attempts failed without a captured error",this.name);let ye=Date.now(),ve=0,E=0,F=3e4;for await(let h of Z){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let M=Date.now(),S=M-ye;if(S>F&&(ve++,E+=S,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(S/1e3)}s gap before ${h.type}`,{stallCount:ve,totalStallMs:E,eventType:h.type})),ye=M,h.type==="content_block_start"||h.type==="content_block_stop"?s?.onHeartbeat?.(!0):s?.onHeartbeat?.(),h.type==="content_block_start"){D=Date.now();let C=h.content_block;_=C.type,process.env.KODAX_DEBUG_TOOL_STREAM&&C.type==="tool_use"&&console.error("[ToolStream] content_block_start:",{type:C.type,id:C.id,name:C.name}),C.type==="thinking"?(T="",P=C.signature??""):C.type==="redacted_thinking"?(_="redacted_thinking",N=C.data??""):C.type==="text"?m="":C.type==="tool_use"&&(L=C.id,j=C.name,B="")}else if(h.type==="content_block_delta"){D=Date.now();let C=h.delta;C.type==="thinking_delta"?(T+=C.thinking??"",s?.onThinkingDelta?.(C.thinking??"")):C.type==="text_delta"?(m+=C.text??"",s?.onTextDelta?.(C.text??"")):C.type==="input_json_delta"&&(B+=C.partial_json??"",s?.onToolInputDelta?.(j,C.partial_json??"",L?{toolId:L}:void 0))}else if(h.type==="content_block_stop")D=Date.now(),_==="thinking"?T&&(k.push({type:"thinking",thinking:T,signature:P}),s?.onThinkingEnd?.(T)):_==="redacted_thinking"?(N&&k.push({type:"redacted_thinking",data:N}),N=""):_==="text"?m&&p.push({type:"text",text:m}):_==="tool_use"&&(!L||!j?console.error("[Tool Block Invalid] Missing tool id or name:",{id:JSON.stringify(L),name:JSON.stringify(j),input:B.slice(0,100)}):y.push({type:"tool_use",id:L,name:j,input:ae(B)})),_=null;else if(h.type==="message_stop"){if(q=!0,D=Date.now(),process.env.KODAX_DEBUG_STREAM){let C=Date.now()-V;this.logStreamDiagnostic(`[Stream] message_stop received after ${C}ms`)}}else if(h.type==="message_delta"){D=Date.now(),x=Mt(h.usage,x);let C=h.delta;C?.stop_reason&&(w=C.stop_reason,process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic(`[Stream] message_delta with stop_reason: ${w}`))}else h.type==="message_start"&&(D=Date.now(),x=Mt(h.message?.usage,x),process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic("[Stream] message_start received"))}if(!q){let h=Date.now()-V,M=Date.now()-D;if(a?.aborted){let C=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:h,lastEventAge:M,reason:C,textBlocks:p.length,toolBlocks:y.length,thinkingBlocks:k.length}),new DOMException(C,"AbortError")}let S=new Error(`Stream incomplete: message_stop event not received. Duration: ${h}ms, Last event: ${M}ms ago. This may indicate a network disconnection or API timeout.`);throw S.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:h,lastEventAge:M,textBlocks:p.length,toolBlocks:y.length,thinkingBlocks:k.length}),S}return{textBlocks:p,toolBlocks:y,thinkingBlocks:k,usage:x,stopReason:w}},a,3,s?.onRateLimit,s?.onRetryAfter)}supportsNonStreamingFallback(){return!0}async complete(e,o,n,i,s,a){return this.withRateLimit(async()=>{let c=this.normalizeReasoning(i),u=s?.modelOverride??this.config.model,d=s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u),l=await this.convertMessages(e,u),f=c.enabled?this.getReasoningCapability(u):"none",v=c.enabled?this.getReasoningFallbackChain(f).filter(m=>m==="native-budget"||m==="native-toggle"||m==="native-adaptive"||m==="none"):["none"],g=!!s?.forcedToolName,b=r(m=>{let T={model:u,max_tokens:d,system:this.applyCacheControlToSystem(this.buildSystemPrompt(n,e)),messages:l,tools:this.applyCacheControlToTools(o)};if(s?.forcedToolName&&g&&(T.tool_choice={type:"tool",name:s.forcedToolName}),m==="native-budget"){let P=ie(this.config,c.depth,c.taskType);T.thinking={type:"enabled",budget_tokens:re(P,d)}}else m==="native-toggle"?T.thinking={type:"enabled"}:m==="native-adaptive"&&(T.thinking={type:"adaptive"});return T},"buildRequest"),p,y;for(let m of v){for(;!p;)try{p=await this.client.messages.create(b(m),a?{signal:a}:{}),m!==f&&this.persistReasoningCapabilityOverride(m,u)}catch(T){if(y=T,g&&this.shouldFallbackForForcedToolChoiceError(T)){g=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let P=m==="native-budget"?["budget_tokens","thinking"]:m==="native-toggle"?["thinking"]:m==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(T,...P))throw T;break}if(p)break}if(!p)throw y??new R("All reasoning capability attempts failed without a captured error",this.name);let k=[],x=[],_=[];for(let m of p.content)m.type==="text"?(k.push({type:"text",text:m.text}),s?.onTextDelta?.(m.text)):m.type==="thinking"?(_.push({type:"thinking",thinking:m.thinking,signature:m.signature??""}),s?.onThinkingDelta?.(m.thinking),s?.onThinkingEnd?.(m.thinking)):m.type==="redacted_thinking"?_.push({type:"redacted_thinking",data:m.data}):m.type==="tool_use"&&x.push({type:"tool_use",id:m.id,name:m.name,input:typeof m.input=="object"&&m.input!==null?m.input:{}});return{textBlocks:k,toolBlocks:x,thinkingBlocks:_,usage:Mt(p.usage),stopReason:p.stop_reason??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter)}serializeSystemMessageContent(e){if(typeof e=="string")return e.trim();for(let o of e)if(le(o))throw new R("cache-boundary marker reached system message serialization unlowered. Provider base class lowering must run before any wire-level serialization.",this.name);return e.filter(o=>o.type==="text").map(o=>o.text.trim()).filter(Boolean).join(`
|
|
3
|
-
`)}buildSystemPrompt(e,o){let n=o.filter(i=>i.role==="system").map(i=>this.serializeSystemMessageContent(i.content)).filter(Boolean);return[e,...n].filter(i=>typeof i=="string"&&i.trim().length>0).join(`
|
|
4
|
-
|
|
5
|
-
`)}async convertMessages(e,o){let n=[],i=this.getEffectiveStrictThinkingSignature(o);for(let s of e.filter(a=>a.role!=="system")){let a=s.role==="user"?"user":"assistant";if(typeof s.content=="string"){n.push({role:a,content:s.content});continue}let c=[],u=[];for(let l of s.content)l.type==="thinking"?!i||typeof l.signature=="string"&&l.signature.length>0?c.push({type:"thinking",thinking:l.thinking,signature:l.signature??""}):l.thinking&&u.push(l.thinking):l.type==="redacted_thinking"&&(i||c.push({type:"redacted_thinking",data:l.data}));u.length>0&&s.role==="assistant"&&c.push({type:"text",text:`<prior_reasoning>
|
|
6
|
-
${u.join(`
|
|
7
|
-
|
|
8
|
-
`)}
|
|
9
|
-
</prior_reasoning>`});for(let l of s.content)if(l.type==="tool_result"&&s.role==="user"){let f;if(typeof l.content=="string")f=l.content;else{let v=[];for(let g of l.content)g.type==="text"?v.push({type:"text",text:g.text}):g.type==="image"&&v.push({type:"image",source:{type:"base64",media_type:Be(g.path,g.mediaType),data:await Fe(g.path)}});f=v}c.push({type:"tool_result",tool_use_id:l.tool_use_id,content:f,...l.is_error===!0?{is_error:!0}:{}})}for(let l of s.content)l.type==="tool_use"&&s.role==="assistant"&&c.push({type:"tool_use",id:l.id,name:l.name,input:l.input});for(let l of s.content)l.type==="text"?c.push({type:"text",text:l.text}):l.type==="image"&&s.role==="user"&&c.push({type:"image",source:{type:"base64",media_type:Be(l.path,l.mediaType),data:await Fe(l.path)}});if(a==="assistant"&&this.config.supportsThinking&&!i){let l=c.some(v=>v.type==="tool_use"),f=c.some(v=>v.type==="thinking"||v.type==="redacted_thinking");l&&!f&&c.unshift({type:"thinking",thinking:"...",signature:""})}let d=c.length===0||a==="assistant"&&c.every(l=>{let f=l;return f.type==="thinking"&&!f.thinking||f.type==="text"&&!f.text});n.push({role:s.role,content:d?[{type:"text",text:"..."}]:c})}return n}};import Tn from"openai";var En="KodaX";function wn(t){return t.userAgentMode==="sdk"?void 0:{"User-Agent":En}}r(wn,"getOpenAICompatDefaultHeaders");function ho(t){if(!t)return;let e=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0,n=typeof t.total_tokens=="number"?t.total_tokens:e+o;if([e,o,n].some(s=>!Number.isFinite(s)||s<0)||n<e||n<o)return;let i=typeof t.prompt_tokens_details?.cached_tokens=="number"&&t.prompt_tokens_details.cached_tokens>=0?t.prompt_tokens_details.cached_tokens:typeof t.prompt_cache_hit_tokens=="number"&&t.prompt_cache_hit_tokens>=0?t.prompt_cache_hit_tokens:void 0;return{inputTokens:e,outputTokens:o,totalTokens:n,...i!==void 0?{cachedReadTokens:i}:{}}}r(ho,"normalizeOpenAIUsage");function Mn(t){return t?t.type==="function"&&"function"in t:!1}r(Mn,"isOpenAIFunctionToolCall");function Pn(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return"";let o=Reflect.get(e,"text");if(typeof o=="string")return o;if(o&&typeof o=="object"){let n=Reflect.get(o,"value");return typeof n=="string"?n:""}return""}).filter(Boolean).join(""):""}r(Pn,"extractOpenAIMessageText");function Sn(t){if(!t||typeof t!="object")return"";let e=Reflect.get(t,"reasoning_content");return typeof e=="string"?e:Array.isArray(e)?e.map(o=>typeof o=="string"?o:o&&typeof o=="object"&&"text"in o&&typeof o.text=="string"?o.text:"").join(""):""}r(Sn,"extractOpenAIMessageReasoning");var K=class extends G{static{r(this,"KodaXOpenAICompatProvider")}supportsThinking=!0;_client;get client(){return this._client??=this.buildClient()}set client(e){this._client=e}buildClient(){let e=wn(this.config);return new Tn({apiKey:this.getApiKey(),baseURL:this.config.baseUrl,...e?{defaultHeaders:e}:{}})}onStaleConnection(){this._client=void 0}async verifyCredential(e){let o=this.config.model,n=this.client,i=[{strategy:"models-list",approxTokensSpent:0,run:r(async s=>{await n.models.list({signal:s})},"run")},{strategy:"minimal-message",approxTokensSpent:6,run:r(async s=>{await n.chat.completions.create({model:o,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:s})},"run")}];return ce({strategy:this.config.verifyStrategy??"models-list",runners:i,timeoutMs:e?.timeoutMs,signal:e?.signal,providerName:this.name})}stripCacheBoundariesFromMessages(e){return e.map(o=>{if(typeof o.content=="string")return o;let n=_e(o.content);return n.length===o.content.length?o:{...o,content:n}})}normalizeSystemForWire(e,o){let n=[];e&&e.trim().length>0&&n.push(e);let i=[];for(let s of o){if(s.role!=="system"){i.push(s);continue}let a=typeof s.content=="string"?s.content:Array.isArray(s.content)?s.content.filter(c=>typeof c=="object"&&c!==null&&c.type==="text"&&typeof c.text=="string").map(c=>c.text).join(`
|
|
10
|
-
`):"";a.trim().length>0&&n.push(a)}return{system:n.join(`
|
|
11
|
-
|
|
12
|
-
`),rest:i}}appendExtraBody(e,o){let n=typeof e.extra_body=="object"&&e.extra_body!==null?e.extra_body:{};e.extra_body={...n,...o}}resetReasoningCapabilityParams(e){delete e.reasoning_effort,delete e.thinking;let o=typeof e.extra_body=="object"&&e.extra_body!==null?{...e.extra_body}:void 0;if(o){if(delete o.enable_thinking,delete o.thinking_budget,delete o.thinking,Object.keys(o).length===0){delete e.extra_body;return}e.extra_body=o}}applyReasoningCapability(e,o,n){let i=e,s=this.getEffectiveMaxOutputTokens(e.model),a=re(ie(this.config,n.depth,n.taskType),s);switch(o){case"native-effort":{let c=ht(n.depth);c&&(i.reasoning_effort=c);break}case"native-budget":{this.name==="qwen"?this.appendExtraBody(i,{enable_thinking:!0,thinking_budget:a}):this.name==="zhipu"&&(i.thinking={type:"enabled",budget_tokens:a});break}case"native-toggle":{this.name==="qwen"?this.appendExtraBody(i,{enable_thinking:!0}):this.name==="zhipu"&&(i.thinking={type:"enabled"});break}default:break}}getFallbackTerms(e){switch(e){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(e,o,n,i,s,a){return this.withRateLimit(async()=>{let c=this.stripCacheBoundariesFromMessages(e),{system:u,rest:d}=this.normalizeSystemForWire(n,c),l=s?.modelOverride??this.config.model,f=[{role:"system",content:u},...await this.convertMessages(d,l)],v=o.map(E=>({type:"function",function:{name:E.name,description:E.description,parameters:E.input_schema}})),g=s?.forcedToolName,b=!!g;if(a?.aborted)throw new DOMException("Request aborted","AbortError");let p=new Map,y="",k="",x,_=!0,m=null,T=Date.now(),P=this.normalizeReasoning(i),N=ne(P)?this.getReasoningCapability(l):"none",L=ne(P)?this.getReasoningFallbackChain(N).filter(E=>E==="native-budget"||E==="native-effort"||E==="native-toggle"||E==="none"):["none"],j={model:l,messages:f,tools:v,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(l),stream:!0};g&&b&&(j.tool_choice={type:"function",function:{name:g}});let B,q;for(let E of L){for(;!B;){let F={...j};_&&(F.stream_options={include_usage:!0}),this.resetReasoningCapabilityParams(F),this.applyReasoningCapability(F,E,P);try{B=await this.client.chat.completions.create(F,a?{signal:a}:{}),E!==N&&this.persistReasoningCapabilityOverride(E,l)}catch(h){if(q=h,b&&this.shouldFallbackForForcedToolChoiceError(h)){b=!1,delete j.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(_&&this.shouldFallbackForSpecificReasoningError(h,"stream_options","include_usage")){_=!1;continue}if(!this.shouldFallbackForReasoningError(h,...this.getFallbackTerms(E)))throw h;break}}if(B)break}if(!B)throw q??new R("All reasoning capability attempts failed without a captured error",this.name);let w=Date.now(),D=0,V=0,Z=3e4;for await(let E of B){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let F=Date.now(),h=F-w;h>Z&&(D++,V+=h,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(h/1e3)}s gap`,{stallCount:D,totalStallMs:V})),w=F,s?.onHeartbeat?.(),x=ho(E.usage)??x;let M=E.choices[0],S=M?.delta;if(M?.finish_reason&&(m=M.finish_reason,process.env.KODAX_DEBUG_STREAM)){let X=Date.now()-T;this.logStreamDiagnostic(`[Stream] finish_reason: ${m} after ${X}ms`)}S?.content&&(y+=S.content,s?.onTextDelta?.(S.content));let C=this.extractReasoningDelta(S);if(C&&(k+=C,s?.onThinkingDelta?.(C)),S?.tool_calls)for(let X of S.tool_calls){let ee=p.get(X.index)??{id:"",name:"",arguments:""};X.id&&(ee.id=X.id),X.function?.name&&(ee.name=X.function.name),X.function?.arguments&&(ee.arguments+=X.function.arguments,s?.onToolInputDelta?.(ee.name,X.function.arguments,ee.id?{toolId:ee.id}:void 0)),p.set(X.index,ee)}}if(!m){let E=Date.now()-T;if(a?.aborted){let h=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:E,reason:h,textContentLength:y.length,toolCallsCount:p.size}),new DOMException(h,"AbortError")}let F=new Error(`Stream incomplete: finish_reason not received. Duration: ${E}ms. This may indicate a network disconnection or API timeout.`);throw F.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:E,textContentLength:y.length,toolCallsCount:p.size}),F}let Se=y?[{type:"text",text:y}]:[],ye=[],ve=[];k&&(ve.push({type:"thinking",thinking:k}),s?.onThinkingEnd?.(k));for(let[,E]of p)E.id&&E.name&&ye.push({type:"tool_use",id:E.id,name:E.name,input:ae(E.arguments)});return{textBlocks:Se,toolBlocks:ye,thinkingBlocks:ve,usage:x,stopReason:m??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter)}supportsNonStreamingFallback(){return!0}async complete(e,o,n,i,s,a){return this.withRateLimit(async()=>{let c=this.stripCacheBoundariesFromMessages(e),{system:u,rest:d}=this.normalizeSystemForWire(n,c),l=s?.modelOverride??this.config.model,f=[{role:"system",content:u},...await this.convertMessages(d,l)],v=o.map(w=>({type:"function",function:{name:w.name,description:w.description,parameters:w.input_schema}})),g=s?.forcedToolName,b=!!g,p=this.normalizeReasoning(i),y=ne(p)?this.getReasoningCapability(l):"none",k=ne(p)?this.getReasoningFallbackChain(y).filter(w=>w==="native-budget"||w==="native-effort"||w==="native-toggle"||w==="none"):["none"],x={model:l,messages:f,tools:v,max_completion_tokens:s?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(l)};g&&b&&(x.tool_choice={type:"function",function:{name:g}});let _,m;for(let w of k){for(;!_;){let D={...x};this.resetReasoningCapabilityParams(D),this.applyReasoningCapability(D,w,p);try{_=await this.client.chat.completions.create(D,a?{signal:a}:{}),w!==y&&this.persistReasoningCapabilityOverride(w,l)}catch(V){if(m=V,b&&this.shouldFallbackForForcedToolChoiceError(V)){b=!1,delete x.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(!this.shouldFallbackForReasoningError(V,...this.getFallbackTerms(w)))throw V;break}}if(_)break}if(!_)throw m??new R("All reasoning capability attempts failed without a captured error",this.name);let T=_.choices[0],P=T?.message,N=Pn(P?.content),L=Sn(P),j=(P?.tool_calls??[]).filter(Mn).map(w=>({type:"tool_use",id:w.id,name:w.function.name,input:ae(w.function.arguments)}));N&&s?.onTextDelta?.(N);let B=N?[{type:"text",text:N}]:[],q=[];return L&&(q.push({type:"thinking",thinking:L}),s?.onThinkingDelta?.(L),s?.onThinkingEnd?.(L)),{textBlocks:B,toolBlocks:j,thinkingBlocks:q,usage:ho(_.usage),stopReason:T?.finish_reason??void 0}},a,3,s?.onRateLimit,s?.onRetryAfter)}extractReasoningDelta(e){let o=e?.reasoning_content;return typeof o=="string"?o:Array.isArray(o)?o.map(n=>typeof n=="string"?n:typeof n=="object"&&n!==null&&"text"in n&&typeof n.text=="string"?n.text:"").join(""):""}serializeAssistantMessage(e,o){let n=e.filter(d=>d.type==="text").map(d=>d.text).join(`
|
|
13
|
-
`),i=e.filter(d=>d.type==="tool_use").map(d=>({id:d.id,type:"function",function:{name:d.name,arguments:JSON.stringify(d.input??{})}})),s=e.filter(d=>d.type==="thinking"||d.type==="redacted_thinking").map(d=>d.type==="thinking"?d.thinking:"").filter(Boolean).join(`
|
|
14
|
-
|
|
15
|
-
`),a=e.some(d=>d.type==="thinking"||d.type==="redacted_thinking");if(!n&&i.length===0&&!a)return[];let c;n?c=n:i.length>0?c=null:c="...";let u={role:"assistant",content:c};return i.length>0&&(u.tool_calls=i),this.getEffectiveReplayReasoningContent(o)&&(u.reasoning_content=s||""),[u]}async serializeUserMessage(e){let o=[],n=e.filter(a=>a.type==="text").map(a=>a.text).join(`
|
|
16
|
-
`),i=e.filter(a=>a.type==="image");for(let a of e)if(a.type==="tool_result"){let c;typeof a.content=="string"?c=a.content:c=a.content.map(u=>u.type==="text"?u.text:`[Image at ${u.path}${u.mediaType?` (${u.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
|
-
`),o.push({role:"tool",tool_call_id:a.tool_use_id,content:c})}if(i.length===0)return n&&o.push({role:"user",content:n}),o;let s=[];n&&s.push({type:"text",text:n});for(let a of i)s.push({type:"image_url",image_url:{url:await go(a.path,a.mediaType)}});return o.push({role:"user",content:s}),o}serializeSystemMessage(e){if(typeof e=="string")return[{role:"system",content:e}];let o=e.filter(n=>n.type==="text").map(n=>n.text).join(`
|
|
18
|
-
`);return o?[{role:"system",content:o}]:[]}async convertMessages(e,o){let n=[];for(let i of e){if(i.role==="system"){n.push(...this.serializeSystemMessage(i.content));continue}if(typeof i.content=="string"){n.push({role:i.role,content:i.content});continue}if(i.role==="assistant"){n.push(...this.serializeAssistantMessage(i.content,o));continue}n.push(...await this.serializeUserMessage(i.content))}return n}};import{spawn as In}from"node:child_process";import{Readable as Ln,Writable as Nn}from"node:stream";import $e from"node:process";import{ClientSideConnection as Bn,PROTOCOL_VERSION as Fn,ndJsonStream as Kn}from"@agentclientprotocol/sdk";import{spawn as Rn,spawnSync as Co}from"node:child_process";var Rt=2e3,z=2e3;function St(t){return t.exitCode!==null||t.signalCode!==null}r(St,"isExited");function Ce(t,e){return St(t)?Promise.resolve(!0):new Promise(o=>{let n=!1,i=r(c=>{n||(n=!0,clearTimeout(a),t.off("exit",s),t.off("error",s),o(c))},"finish"),s=r(()=>i(!0),"onExit"),a=setTimeout(()=>i(!1),e);a.unref?.(),t.once("exit",s),t.once("error",s)})}r(Ce,"waitForExit");function yo(t){return new Promise(e=>{let o=Rn("taskkill",["/pid",String(t),"/t","/f"],{stdio:"ignore",windowsHide:!0}),n=!1,i=r(()=>{n||(n=!0,clearTimeout(s),e())},"finish"),s=setTimeout(()=>{try{o.kill()}catch{}i()},Rt);s.unref?.(),o.once("exit",i),o.once("error",i)})}r(yo,"runTaskkill");function vo(t,e){let o=!1;try{process.kill(-t,e),o=!0}catch{}try{process.kill(t,e),o=!0}catch{}return o}r(vo,"signalPosixPidTree");function H(t){try{return process.kill(t,0),!0}catch(e){return e.code!=="ESRCH"}}r(H,"signalTargetExists");function ko(t){return H(-t)||H(t)}r(ko,"isPosixPidTreeAlive");async function bo(t,e){let o=Date.now()+e;for(;Date.now()<o;){if(!ko(t))return!0;await new Promise(n=>setTimeout(n,50))}return!ko(t)}r(bo,"waitForPosixPidTreeExit");async function An(t,e){let o=Date.now()+e;for(;Date.now()<o;){if(!H(t))return!0;await new Promise(n=>setTimeout(n,50))}return!H(t)}r(An,"waitForWindowsPidExit");async function Pt(t,e){let o=[...new Set(t.filter(i=>Number.isFinite(i)&&i>0))];if(o.length===0)return!0;let n=Date.now()+e;for(;Date.now()<n;){if(o.every(i=>!H(i)))return!0;await new Promise(i=>setTimeout(i,50))}return o.every(i=>!H(i))}r(Pt,"waitForWindowsPidsExit");function _o(t){let e=t.trim();if(!e)return[];try{let o=JSON.parse(e);return(Array.isArray(o)?o:[o]).map(i=>Number(i)).filter(i=>Number.isFinite(i)&&i>0)}catch{return[]}}r(_o,"readWindowsPidListJson");function On(t){let e=Co("wmic",["process","where",`ParentProcessId=${t}`,"get","ProcessId","/format:list"],{encoding:"utf8",timeout:Rt,windowsHide:!0});if(e.error||e.status!==0)return[];let o=[],n=/ProcessId=(\d+)/g,i;for(;(i=n.exec(e.stdout))!==null;){let s=Number(i[1]);Number.isFinite(s)&&s>0&&s!==t&&o.push(s)}return o}r(On,"getWindowsChildPidsViaWmic");function Dn(t){let e=[`$children = Get-CimInstance Win32_Process -Filter "ParentProcessId = ${t}"`,"if ($null -eq $children) { exit 0 }","$children | Select-Object -ExpandProperty ProcessId | ConvertTo-Json -Compress"].join("; "),o=Co("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:Rt,windowsHide:!0});if(!o.error&&o.status===0){let i=_o(o.stdout);if(i.length>0)return i}let n=_o(o.stdout);return n.length>0?n:On(t)}r(Dn,"getWindowsChildPids");function xo(t,e=new Set){let o=[];for(let n of Dn(t))e.has(n)||(e.add(n),o.push(n),o.push(...xo(n,e)));return o}r(xo,"collectWindowsDescendantPids");async function Ke(t,e){try{process.kill(t,e)}catch{return!H(t)}return An(t,z)}r(Ke,"killWindowsPid");async function xe(t){if(process.platform==="win32"&&t.pid!==void 0){let e=xo(t.pid),o=[...e].reverse(),n=[t.pid,...e];St(t)||await yo(t.pid);for(let i of o)H(i)&&await yo(i);if(await Pt(n,z)){await Ce(t,z);return}for(let i of o)H(i)&&await Ke(i,"SIGTERM");if(await Ke(t.pid,"SIGTERM"),await Pt(n,z)){await Ce(t,z);return}for(let i of o)H(i)&&await Ke(i,"SIGKILL");await Ke(t.pid,"SIGKILL"),await Pt(n,z),await Ce(t,z);return}if(t.pid!==void 0&&process.platform!=="win32"){if(!vo(t.pid,"SIGTERM")||await bo(t.pid,z))return;vo(t.pid,"SIGKILL"),await bo(t.pid,z);return}if(!St(t)){try{t.kill("SIGTERM")}catch{return}if(!await Ce(t,z)){try{t.kill("SIGKILL")}catch{}await Ce(t,z)}}}r(xe,"killChildProcessTree");var Ue=class{static{r(this,"AcpClient")}client=null;agentProcess=null;options;constructor(e){this.options=e}async connect(){let e,o;if(this.options.inputStream&&this.options.outputStream)e=this.options.inputStream,o=this.options.outputStream;else if(this.options.command){let s=$e.platform==="win32"&&!this.options.command.endsWith(".cmd")?`${this.options.command}.cmd`:this.options.command;if(this.agentProcess=In(s,this.options.args??[],{cwd:this.options.cwd??$e.cwd(),stdio:["pipe","pipe","inherit"],detached:$e.platform!=="win32"}),!this.agentProcess.stdin||!this.agentProcess.stdout)throw new Error("Failed to create ACP stdio pipes");o=Nn.toWeb(this.agentProcess.stdin),e=Ln.toWeb(this.agentProcess.stdout)}else throw new Error("AcpClient requires either a command or I/O streams");let n=Kn(o,e);this.client=new Bn(()=>({sessionUpdate:r(async i=>{this.options.onSessionUpdate?.(i)},"sessionUpdate"),requestPermission:r(async i=>{let s=i.options??[],a=s.find(c=>c.kind==="allow_once"||c.kind==="allow_always")??s[0];return a?{outcome:{outcome:"selected",optionId:a.optionId}}:{outcome:{outcome:"cancelled"}}},"requestPermission")}),n),await this.client.initialize({protocolVersion:Fn,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??$e.cwd(),mcpServers:[]})).sessionId}async prompt(e,o,n,i){if(!this.client)throw new Error("Client not connected");let s={sessionId:o,prompt:[{type:"text",text:e}]};i?.model&&(s.model=i.model);let a=this.client.prompt(s);if(n){let c=r(()=>{this.client?.cancel({sessionId:o}).catch(()=>{})},"onAbort");n.addEventListener("abort",c),a=a.finally(()=>{n.removeEventListener("abort",c)})}return await a}disconnect(){this.agentProcess&&xe(this.agentProcess),this.options.abort?.();try{this.client?.close?.()}catch{}this.client=null,this.agentProcess=null}};function $n(t){if(!t||typeof t!="object")return;let e=t,o=typeof e.inputTokens=="number"?e.inputTokens:0,n=typeof e.outputTokens=="number"?e.outputTokens:0,i=typeof e.totalTokens=="number"?e.totalTokens:o+n;if(![o,n,i].some(s=>!Number.isFinite(s)||s<0)&&!(i<o||i<n))return{inputTokens:o,outputTokens:n,totalTokens:i,cachedReadTokens:typeof e.cachedReadTokens=="number"?e.cachedReadTokens:void 0,cachedWriteTokens:typeof e.cachedWriteTokens=="number"?e.cachedWriteTokens:void 0,thoughtTokens:typeof e.thoughtTokens=="number"?e.thoughtTokens:void 0}}r($n,"normalizeAcpUsage");var ue=class extends G{static{r(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 W(be)}serializeImageBlockToPromptToken(e){return null}stripCacheBoundariesFromMessages(e){return e.map(o=>{if(typeof o.content=="string")return o;let n=_e(o.content);return n.length===o.content.length?o:{...o,content:n}})}async stream(e,o,n,i,s,a){if(e=this.stripCacheBoundariesFromMessages(e),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 c=[],u=[],d=e[e.length-1],l="";if(d&&typeof d.content=="string")l=d.content;else if(d&&Array.isArray(d.content)){let y=[];for(let k of d.content)if(k.type==="text")y.push(k.text);else if(k.type==="image"){let x=this.serializeImageBlockToPromptToken(k);x&&y.push(x)}l=y.join(`
|
|
19
|
-
`)}let f={...this.acpClientOptions,onSessionUpdate:r(y=>{let k=y.update,x=y.sessionId;if(!("sessionUpdate"in k))return;let _=x?this._activeStreams.get(x):void 0;if(_)switch(k.sessionUpdate){case"agent_message_chunk":if(k.content?.type==="text"){let m=k.content.text;_.output.text+=m,_.streamOptions?.onTextDelta?.(m)}break;case"tool_call":{let m="{}",T=k.arguments??k.parameters;T&&(m=typeof T=="string"?T:JSON.stringify(T)),_.streamOptions?.onToolInputDelta?.(k.title,m);let P=`
|
|
20
|
-
> [Tool Use] ${k.title}: ${m}
|
|
21
|
-
`;_.output.text+=P,_.streamOptions?.onTextDelta?.(P);break}case"tool_call_update":if(k.status){let m=`> [Tool Result] ${k.status}
|
|
22
|
-
|
|
23
|
-
`;_.output.text+=m,_.streamOptions?.onTextDelta?.(m)}break}},"onSessionUpdate")},v=s?.sessionId??"default";this._client||(this._client=new Ue(f),await this._client.connect());let g=this._sessionMap.get(v);g||(g=await this._client.createNewSession(),this._sessionMap.set(v,g));let b={text:""};this._activeStreams.set(g,{streamOptions:s,output:b});let p;try{p=await this._client.prompt(l,g,a,{model:s?.modelOverride})}catch(y){if(!(y instanceof Error&&y.name==="AbortError"))throw y}finally{this._activeStreams.delete(g)}return b.text&&c.push({type:"text",text:b.text}),{textBlocks:c,toolBlocks:u,thinkingBlocks:[],usage:$n(p?.usage)}}disconnect(){this._client&&(this._client.disconnect(),this._client=null),this._activeStreams.clear(),this._sessionMap.clear()}};import{spawn as Un}from"node:child_process";import je from"node:process";var de=class{static{r(this,"CLIExecutor")}config;_installedCache=null;constructor(e){this.config=e}async isInstalled(){return this._installedCache!==null?this._installedCache:(this._installedCache=await this.checkInstalled(),this._installedCache)}async*execute(e){let o=this.buildArgs(e),n={...je.env,...this.config.env},s=je.platform==="win32"&&!this.config.command.endsWith(".cmd")?`${this.config.command}.cmd`:this.config.command,a=Un(s,o,{cwd:this.config.cwd??je.cwd(),env:n,stdio:["ignore","pipe","pipe"],detached:je.platform!=="win32"}),c="";a.stderr?.on("data",l=>{c+=l.toString()});let u=!1,d=r(()=>{u||xe(a)},"abortHandler");e.signal?.addEventListener("abort",d),a.on("exit",()=>{u=!0});try{yield*this.parseOutputStream(a.stdout,e.signal),c.trim()&&console.error(`[CLIExecutor] stderr: ${c.trim()}`)}finally{e.signal?.removeEventListener("abort",d),u||await xe(a)}}async*parseOutputStream(e,o){let n="";for await(let i of e){if(o?.aborted)break;n+=i.toString();let s=n.split(`
|
|
24
|
-
`);n=s.pop()??"";for(let a of s){if(!a.trim())continue;let c=this.parseLine(a.trim());c&&(yield c)}}if(n.trim()&&!o?.aborted){let i=this.parseLine(n.trim());i&&(yield i)}}};import{spawn as jn}from"node:child_process";import Xn from"node:process";async function Xe(t){try{let e=Xn.platform==="win32",o=jn(e?`${t}.cmd`:t,["--version"]);return await new Promise(n=>{o.on("close",i=>n(i===0)),o.on("error",()=>n(!1))})}catch{return!1}}r(Xe,"checkCliCommandInstalled");var We=class extends de{static{r(this,"GeminiCLIExecutor")}model;constructor(e){super({command:"gemini",baseArgs:["--output-format","stream-json","--approval-mode","yolo"],timeout:3e5,...e}),this.model=e?.model??"gemini-2.5-pro"}async checkInstalled(){return Xe("gemini")}buildArgs(e){let o=["-m",e.model??this.model];return e.sessionId?(o.push("-r",e.sessionId),o.push(e.prompt)):o.push("-p",e.prompt),[...o,...this.config.baseArgs]}parseLine(e){if(!e.startsWith("{"))return null;try{let o=JSON.parse(e);return this.convertEvent(o)}catch{return null}}convertEvent(e){let o=e.timestamp?Date.parse(e.timestamp):Date.now();switch(e.type){case"init":return{type:"session_start",timestamp:o,sessionId:e.session_id??"",model:e.model??this.model,raw:e};case"message":return{type:"message",timestamp:o,role:e.role,content:e.content??"",delta:e.delta,raw:e};case"tool_use":return{type:"tool_use",timestamp:o,toolId:e.tool_id??"",toolName:e.tool_name??"",parameters:e.parameters??{},raw:e};case"tool_result":return{type:"tool_result",timestamp:o,toolId:e.tool_id??"",status:e.status==="success"?"success":"error",output:e.output??"",raw:e};case"error":return{type:"error",timestamp:o,errorType:"error",message:e.message??"Unknown error",raw:e};case"result":return{type:"complete",timestamp:o,status:e.status==="success"?"success":"failed",usage:e.stats?{inputTokens:e.stats.input_tokens??0,outputTokens:e.stats.output_tokens??0,totalTokens:e.stats.total_tokens??0}:void 0,raw:e};default:return null}}};import{TransformStream as To}from"node:stream/web";import{randomUUID as At}from"node:crypto";function ze(t){let e=new To,o=new To,n=e.readable.getReader(),i=o.writable.getWriter(),s=new TextDecoder,a=new TextEncoder,c="",u=At(),d=new AbortController,l=new Map;(async()=>{try{for(;;){let{done:p,value:y}=await n.read();if(p)break;c+=s.decode(y,{stream:!0});let k=c.split(`
|
|
25
|
-
`);c=k.pop()??"";for(let x of k)if(x.trim())try{let _=JSON.parse(x);v(_).catch(m=>{console.error("[PseudoAcpServer] Failed to handle request:",m)})}catch{console.error("[PseudoAcpServer] Failed to parse message:",x)}}}catch(p){console.error("[PseudoAcpServer] Stream read error:",p)}})();let f=r(async p=>{let y=JSON.stringify(p)+`
|
|
26
|
-
`;await i.write(a.encode(y))},"sendMsg");async function v(p){if(p.method==="initialize")await f({jsonrpc:"2.0",id:p.id,result:{protocolVersion:p.params.protocolVersion,serverInfo:{name:"pseudo-acp-server",version:"1.0.0"},serverCapabilities:{}}});else if(p.method==="session/new"||p.method==="sessions/new")u=p.params?.sessionId??At(),await f({jsonrpc:"2.0",id:p.id,result:{sessionId:u}});else if(p.method==="session/prompt"||p.method==="chat/prompt"){let y=new AbortController,k=p.params.sessionId;l.set(k,y);let x=r(()=>y.abort(),"onGlobalAbort");d.signal.addEventListener("abort",x);let m=await g(k,p.params.prompt,typeof p.params.model=="string"?p.params.model:void 0,y.signal).finally(()=>{l.delete(k),d.signal.removeEventListener("abort",x)});await f({jsonrpc:"2.0",id:p.id,result:m.usage?{stopReason:m.stopReason,usage:m.usage}:{stopReason:m.stopReason}})}else if(p.method==="session/cancel"||p.method==="chat/cancel"){let y=l.get(p.params.sessionId);y&&y.abort(),p.id!==void 0&&await f({jsonrpc:"2.0",id:p.id,result:{}})}else p.id!==void 0&&await f({jsonrpc:"2.0",id:p.id,result:{}})}r(v,"handleRequest");let g=r(async(p,y,k,x)=>{let _=y.find(m=>m.type==="text")?.text??"";try{let m=t.execute({prompt:_,model:k,sessionId:p==="default"?void 0:p,signal:x});for await(let T of m){let P=b(T);if(P&&await f({jsonrpc:"2.0",method:"session/update",params:{sessionId:p,update:P}}),T.type==="complete")return{stopReason:x.aborted?"cancelled":"end_turn",usage:T.usage}}return{stopReason:x.aborted?"cancelled":"end_turn"}}catch(m){return x.aborted||m instanceof Error&&m.name==="AbortError"?{stopReason:"cancelled"}:(console.error("[PseudoAcpServer] Error executing prompt:",m),await f({jsonrpc:"2.0",method:"session/update",params:{sessionId:p,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
|
|
27
|
-
[Fatal Error: ${m}]
|
|
28
|
-
`}}}}),{stopReason:"end_turn"})}},"executePrompt"),b=r(p=>{switch(p.type){case"message":if(p.role==="assistant"&&p.content)return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:p.content}};break;case"tool_use":return{sessionUpdate:"tool_call",title:p.toolName,arguments:p.parameters,status:"running",toolCallId:p.toolId||At()};case"tool_result":return{sessionUpdate:"tool_call_update",toolCallId:p.toolId,status:p.status};case"error":return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
|
|
29
|
-
[Error: ${p.message}]
|
|
30
|
-
`}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:o.readable,outputStream:e.writable,abort:r(()=>{d.abort(),e.readable.cancel().catch(()=>{}),o.writable.abort().catch(()=>{})},"abort"),executor:t}}r(ze,"createPseudoAcpServer");import Eo from"node:fs";import wo from"node:os";import Mo from"node:path";var Wn="gpt-5.4",zn="auto-gemini-3",Vn=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Gn=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Po(t){let e=new Set,o=[];for(let n of t){let i=n.trim();if(!i)continue;let s=i.toLowerCase();e.has(s)||(e.add(s),o.push(i))}return o}r(Po,"dedupePreserveOrder");function Hn(){let t=Mo.join(wo.homedir(),".codex","config.toml");try{return Eo.readFileSync(t,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}r(Hn,"readCodexConfiguredModel");function Jn(){let t=Mo.join(wo.homedir(),".gemini","settings.json");try{let e=JSON.parse(Eo.readFileSync(t,"utf8")),o=typeof e.model=="string"?e.model.trim():"";return o||(typeof e.general?.model=="string"?e.general.model.trim():"")||null}catch{return null}}r(Jn,"readGeminiConfiguredModel");function pe(){return Hn()||Wn}r(pe,"getCodexCliDefaultModel");function fe(){return Jn()||zn}r(fe,"getGeminiCliDefaultModel");function Te(){return Po([pe(),...Vn])}r(Te,"getCodexCliKnownModels");function Ee(){return Po([fe(),...Gn])}r(Ee,"getGeminiCliKnownModels");var Ot=fe(),Yn=Ee(),qn={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},Ve=class extends ue{static{r(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:Ot,models:Yn.filter(e=>e!==Ot).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let e=new We({model:Ot});this.acpClientOptions=ze(e)}getCapabilityProfile(){return W(qn)}serializeImageBlockToPromptToken(e){return/\s/.test(e.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(e.path)}`),null):`@${e.path}`}};var Ge=class extends de{static{r(this,"CodexCLIExecutor")}model;constructor(e){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...e}),this.model=e?.model??"gpt-5.4"}async checkInstalled(){return Xe("codex")}buildArgs(e){this.model=e.model??this.model;let o=e.model?["-m",e.model]:[];return e.sessionId?["exec","resume",e.sessionId,...o,e.prompt,...this.config.baseArgs.filter(n=>n!=="exec")]:[...this.config.baseArgs,...o,e.prompt]}parseLine(e){if(!e.startsWith("{"))return null;try{let o=JSON.parse(e);return this.convertEvent(o)}catch{return null}}convertEvent(e){let o=Date.now();switch(e.type){case"thread.started":return{type:"session_start",timestamp:o,sessionId:e.thread_id??"",model:this.model,raw:e};case"item.completed":return e.item?.type==="agent_message"?{type:"message",timestamp:o,role:"assistant",content:e.item.text??"",raw:e}:e.item?.type==="command_execution"?{type:"tool_use",timestamp:o,toolId:e.item.id,toolName:"Bash",parameters:{command:e.item.command},raw:e}:null;case"turn.completed":return{type:"complete",timestamp:o,status:"success",usage:e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens}:void 0,raw:e};case"error":case"turn.failed":return{type:"error",timestamp:o,errorType:e.type,message:e.message??"Unknown error",raw:e};default:return null}}};var Dt=pe(),Qn=Te(),He=class extends ue{static{r(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:Dt,models:Qn.filter(e=>e!==Dt).map(e=>({id:e,displayName:e})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let e=new Ge({model:Dt});this.acpClientOptions=ze(e)}};import{existsSync as ii,readFileSync as ri}from"node:fs";import me from"node:path";import{fileURLToPath as si}from"node:url";var So=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Ro=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Ao=["count-tokens","models-list","minimal-message","unsupported"];function we(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}r(we,"isPlainObject");function Ye(t,e){if(typeof t!="string"||t.length===0)throw new Error(`provider-capabilities.json: ${e} must be a non-empty string`);return t}r(Ye,"requireString");function Oo(t,e){if(t!==void 0)return Ye(t,e)}r(Oo,"optionalString");function oe(t,e){if(t!==void 0){if(typeof t!="number"||!Number.isFinite(t)||t<0)throw new Error(`provider-capabilities.json: ${e} must be a non-negative finite number`);return t}}r(oe,"optionalNumber");function Je(t,e){if(t!==void 0){if(typeof t!="boolean")throw new Error(`provider-capabilities.json: ${e} must be a boolean`);return t}}r(Je,"optionalBoolean");function It(t,e){if(typeof t!="string"||!So.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${So.join(", ")}, got ${JSON.stringify(t)}`);return t}r(It,"requireReasoningCapability");function Zn(t,e){if(typeof t!="string"||!Ro.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Ro.join(", ")}, got ${JSON.stringify(t)}`);return t}r(Zn,"requireProfileName");function ei(t,e){if(typeof t!="string"||!Ao.includes(t))throw new Error(`provider-capabilities.json: ${e} must be one of ${Ao.join(", ")}, got ${JSON.stringify(t)}`);return t}r(ei,"requireVerifyStrategy");function ti(t,e){if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let o=Ye(t.id,`${e}.id`),n=Oo(t.displayName,`${e}.displayName`),i=oe(t.contextWindow,`${e}.contextWindow`),s=oe(t.maxOutputTokens,`${e}.maxOutputTokens`),a=oe(t.thinkingBudgetCap,`${e}.thinkingBudgetCap`),c=Je(t.replayReasoningContent,`${e}.replayReasoningContent`),u=Je(t.strictThinkingSignature,`${e}.strictThinkingSignature`),d=oe(t.streamMaxDurationMs,`${e}.streamMaxDurationMs`),l=t.reasoningCapability===void 0?void 0:It(t.reasoningCapability,`${e}.reasoningCapability`),f={id:o};return n!==void 0&&(f.displayName=n),i!==void 0&&(f.contextWindow=i),s!==void 0&&(f.maxOutputTokens=s),a!==void 0&&(f.thinkingBudgetCap=a),l!==void 0&&(f.reasoningCapability=l),c!==void 0&&(f.replayReasoningContent=c),u!==void 0&&(f.strictThinkingSignature=u),d!==void 0&&(f.streamMaxDurationMs=d),f}r(ti,"validateModelDescriptor");function oi(t,e){if(t===void 0)return;if(!we(t))throw new Error(`provider-capabilities.json: ${e} must be an object`);let o={};for(let[n,i]of Object.entries(t))o[n]=It(i,`${e}.${n}`);return o}r(oi,"validateModelReasoningCapabilities");function ni(t,e){if(!we(t))throw new Error(`provider-capabilities.json: providers.${e} must be an object`);let o=Je(t.cliBridge,`providers.${e}.cliBridge`),n=Ye(t.apiKeyEnv,`providers.${e}.apiKeyEnv`),i=It(t.reasoningCapability,`providers.${e}.reasoningCapability`),s=Zn(t.capabilityProfile,`providers.${e}.capabilityProfile`),a=ei(t.verifyStrategy,`providers.${e}.verifyStrategy`);if(o&&a!=="unsupported")throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but verifyStrategy="${a}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let c=oe(t.contextWindow,`providers.${e}.contextWindow`),u=oe(t.maxOutputTokens,`providers.${e}.maxOutputTokens`),d=oe(t.thinkingBudgetCap,`providers.${e}.thinkingBudgetCap`),l=Je(t.supportsThinking,`providers.${e}.supportsThinking`),f=oi(t.modelReasoningCapabilities,`providers.${e}.modelReasoningCapabilities`),v=Oo(t.model,`providers.${e}.model`);if(o&&(v!==void 0||t.models!==void 0))throw new Error(`provider-capabilities.json: providers.${e} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!o&&v===void 0)throw new Error(`provider-capabilities.json: providers.${e}.model is required (only cliBridge entries may omit)`);let g;if(t.models!==void 0){if(!Array.isArray(t.models))throw new Error(`provider-capabilities.json: providers.${e}.models must be an array`);g=t.models.map((p,y)=>ti(p,`providers.${e}.models[${y}]`))}let b={apiKeyEnv:n,reasoningCapability:i,capabilityProfile:s,verifyStrategy:a};return v!==void 0&&(b.model=v),g!==void 0&&(b.models=g),c!==void 0&&(b.contextWindow=c),u!==void 0&&(b.maxOutputTokens=u),d!==void 0&&(b.thinkingBudgetCap=d),l!==void 0&&(b.supportsThinking=l),f!==void 0&&(b.modelReasoningCapabilities=f),o&&(b.cliBridge=!0),b}r(ni,"validateProviderEntry");function Do(t){if(!we(t))throw new Error("provider-capabilities.json: root must be an object");if(t.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(t.version)}`);let e=Ye(t.updatedAt,"updatedAt");if(!we(t.providers))throw new Error("provider-capabilities.json: providers must be an object");let o={};for(let[n,i]of Object.entries(t.providers))o[n]=ni(i,n);return{version:1,updatedAt:e,providers:o}}r(Do,"validateProviderCapabilitiesJson");var ai=Object.freeze({native:te,"image-input-native":fo,"cli-bridge":be,"image-input-cli-bridge":mo}),qe=null;function ci(){if(process.env.KODAX_BUNDLED==="true")return me.join(me.dirname(process.execPath),"provider-capabilities.json");let t=me.dirname(si(import.meta.url)),e=[me.join(t,"provider-capabilities.json"),me.join(me.dirname(t),"provider-capabilities.json")];for(let o of e)if(ii(o))return o;return e[0]}r(ci,"resolveJsonPath");function li(t){if(t.models){for(let e of t.models)Object.freeze(e);Object.freeze(t.models)}return t.modelReasoningCapabilities&&Object.freeze(t.modelReasoningCapabilities),Object.freeze(t)}r(li,"deepFreezeSnapshot");function ui(t){if(t==="gemini-cli"){let e=fe();return{model:e,models:Ee().filter(o=>o!==e).map(o=>({id:o}))}}if(t==="codex-cli"){let e=pe();return{model:e,models:Te().filter(o=>o!==e).map(o=>({id:o}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${t}'`)}r(ui,"resolveCliBridgeModels");function di(t,e){let o=ai[e.capabilityProfile];if(!o)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${e.capabilityProfile}' for provider '${t}'`);if(e.cliBridge){let i=ui(t),s={model:i.model,models:i.models,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:o,verifyStrategy:e.verifyStrategy};return e.supportsThinking!==void 0&&(s.supportsThinking=e.supportsThinking),s}let n={model:e.model,apiKeyEnv:e.apiKeyEnv,reasoningCapability:e.reasoningCapability,capabilityProfile:o,verifyStrategy:e.verifyStrategy};return e.models!==void 0&&(n.models=e.models),e.modelReasoningCapabilities!==void 0&&(n.modelReasoningCapabilities=e.modelReasoningCapabilities),e.contextWindow!==void 0&&(n.contextWindow=e.contextWindow),e.maxOutputTokens!==void 0&&(n.maxOutputTokens=e.maxOutputTokens),e.thinkingBudgetCap!==void 0&&(n.thinkingBudgetCap=e.thinkingBudgetCap),e.supportsThinking!==void 0&&(n.supportsThinking=e.supportsThinking),n}r(di,"buildSnapshot");function Io(){if(qe)return qe;let t=ci(),e;try{let i=ri(t,"utf8");e=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${t}: ${s}`)}let o=Do(e),n={};for(let[i,s]of Object.entries(o.providers))n[i]=li(di(i,s));return qe=Object.freeze(n),qe}r(Io,"getProviderSnapshots");import pi from"@anthropic-ai/sdk";var A=Io();function U(t,e={}){let o=A[t];return{apiKeyEnv:o.apiKeyEnv,model:o.model,reasoningCapability:o.reasoningCapability,models:o.models,contextWindow:o.contextWindow,maxOutputTokens:o.maxOutputTokens,thinkingBudgetCap:o.thinkingBudgetCap,supportsThinking:o.supportsThinking??!1,verifyStrategy:o.verifyStrategy,...e}}r(U,"buildProviderConfig");var Lt=class extends I{static{r(this,"AnthropicProvider")}name="anthropic";config=U("anthropic",{strictThinkingSignature:!0});buildClient(){return new pi({apiKey:this.getApiKey()})}},Nt=class extends I{static{r(this,"ZhipuCodingProvider")}name="zhipu-coding";config=U("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},Bt=class extends I{static{r(this,"KimiCodeProvider")}name="kimi-code";config=U("kimi-code",{baseUrl:"https://api.kimi.com/coding/"})},Ft=class extends I{static{r(this,"MiniMaxCodingProvider")}name="minimax-coding";config=U("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},Kt=class extends I{static{r(this,"MimoCodingProvider")}name="mimo-coding";config=U("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},$t=class extends I{static{r(this,"MimoProvider")}name="mimo";config=U("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},Ut=class extends I{static{r(this,"ArkCodingProvider")}name="ark-coding";config=U("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},jt=class extends K{static{r(this,"OpenAIProvider")}name="openai";config=U("openai")},Xt=class extends K{static{r(this,"DeepSeekProvider")}name="deepseek";config=U("deepseek",{baseUrl:"https://api.deepseek.com",replayReasoningContent:!0})},Wt=class extends K{static{r(this,"KimiProvider")}name="kimi";config=U("kimi",{baseUrl:"https://api.moonshot.cn/v1",replayReasoningContent:!0})},zt=class extends K{static{r(this,"QwenProvider")}name="qwen";config=U("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},Vt=class extends K{static{r(this,"ZhipuProvider")}name="zhipu";config=U("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},$={anthropic:r(()=>new Lt,"anthropic"),openai:r(()=>new jt,"openai"),deepseek:r(()=>new Xt,"deepseek"),kimi:r(()=>new Wt,"kimi"),"kimi-code":r(()=>new Bt,"kimi-code"),qwen:r(()=>new zt,"qwen"),zhipu:r(()=>new Vt,"zhipu"),"zhipu-coding":r(()=>new Nt,"zhipu-coding"),"minimax-coding":r(()=>new Ft,"minimax-coding"),"mimo-coding":r(()=>new Kt,"mimo-coding"),mimo:r(()=>new $t,"mimo"),"ark-coding":r(()=>new Ut,"ark-coding"),"gemini-cli":r(()=>new Ve,"gemini-cli"),"codex-cli":r(()=>new He,"codex-cli")},Gt=process.env.KODAX_PROVIDER??"zhipu-coding",Lo=new Map;function fi(t){if(O(t))return A[t].apiKeyEnv}r(fi,"resolveApiKeyEnvForProvider");function No(t){let e=t??Gt,o=$[e];if(!o)throw new R(`Unknown provider: ${e}. Available: ${Object.keys($).join(", ")}`,e);let n=fi(e),i=n?process.env[n]:void 0,s=Lo.get(e);if(s&&s.apiKey===i)return s.instance;let a=o();return Lo.set(e,{apiKey:i,instance:a}),a}r(No,"getProvider");function Bo(t){return O(t)?!!process.env[A[t].apiKeyEnv]:!1}r(Bo,"isProviderConfigured");function Fo(t){return O(t)?A[t].model:null}r(Fo,"getProviderModel");function Ko(t,e){if(!O(t))return"unknown";let o=A[t],n=e??o.model;return o.modelReasoningCapabilities?.[n]??o.reasoningCapability}r(Ko,"getProviderConfiguredReasoningCapability");function $o(t){return O(t)?W(A[t].capabilityProfile):null}r($o,"getProviderConfiguredCapabilityProfile");function Uo(){let t=[];for(let e of Object.keys($)){let o=A[e];t.push({name:e,model:o.model,models:o.models?[o.model,...o.models.map(n=>n.id)]:[o.model],configured:!!process.env[o.apiKeyEnv],reasoningCapability:o.reasoningCapability,capabilityProfile:W(o.capabilityProfile)})}return t}r(Uo,"getProviderList");function jo(t){let e=A[t];return e?e.models?[e.model,...e.models.map(o=>o.id)]:[e.model]:[]}r(jo,"getProviderModels");function O(t){return t in $}r(O,"isProviderName");function Ht(t){return{id:t.model}}r(Ht,"makeDefaultDescriptor");function Qe(t,e,o){let n=o.id===e.model;return{provider:t,model:o.id,displayName:o.displayName??o.id,supportsThinking:e.supportsThinking??!1,reasoningCapability:o.reasoningCapability??e.reasoningCapability,contextWindow:o.contextWindow??e.contextWindow,maxOutputTokens:o.maxOutputTokens??e.maxOutputTokens,thinkingBudgetCap:o.thinkingBudgetCap??e.thinkingBudgetCap,isDefault:n}}r(Qe,"effectiveCapabilities");function Ze(t){let e=A[t];return e?[Ht(e),...e.models??[]]:[]}r(Ze,"getProviderModelDescriptors");function et(t,e){let o=A[t];if(!o)return;if(e===o.model)return Qe(t,o,Ht(o));let n=o.models?.find(i=>i.id===e);if(n)return Qe(t,o,n)}r(et,"getModelCapabilities");function tt(){let t=[];for(let e of Object.keys($)){let o=A[e];t.push(Qe(e,o,Ht(o)));for(let n of o.models??[])t.push(Qe(e,o,n))}return t}r(tt,"listBuiltinModelCapabilities");var mi=new Set(["compat","sdk"]),gi=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function hi(t){return t==="anthropic"?"count-tokens":"models-list"}r(hi,"defaultVerifyStrategyForProtocol");function Me(t){if(!t.name||!t.baseUrl||!t.apiKeyEnv||!t.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:t.name,baseUrl:t.baseUrl,apiKeyEnv:t.apiKeyEnv,model:t.model})}`);if(t.protocol!=="anthropic"&&t.protocol!=="openai")throw new Error(`Unknown protocol "${t.protocol}" for custom provider "${t.name}". Must be "anthropic" or "openai".`);if(t.userAgentMode!==void 0&&!mi.has(t.userAgentMode))throw new Error(`Unknown userAgentMode "${t.userAgentMode}" for custom provider "${t.name}". Must be "compat" or "sdk".`);if(t.verifyStrategy!==void 0){if(!gi.has(t.verifyStrategy))throw new Error(`Unknown verifyStrategy "${t.verifyStrategy}" for custom provider "${t.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(t.protocol==="openai"&&t.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${t.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}r(Me,"validateCustomProviderConfig");function yi(t){let e=t.models?.length?t.models.map(o=>typeof o=="string"?{id:o}:o):void 0;return{apiKeyEnv:t.apiKeyEnv,model:t.model,baseUrl:t.baseUrl,models:e,userAgentMode:t.userAgentMode,supportsThinking:t.supportsThinking??!1,reasoningCapability:t.reasoningCapability??"none",capabilityProfile:t.capabilityProfile,contextWindow:t.contextWindow,maxOutputTokens:t.maxOutputTokens,thinkingBudgetCap:t.thinkingBudgetCap,replayReasoningContent:t.replayReasoningContent??!1,strictThinkingSignature:t.strictThinkingSignature??!1,streamMaxDurationMs:t.streamMaxDurationMs,verifyStrategy:t.verifyStrategy??hi(t.protocol)}}r(yi,"buildProviderConfig");function ot(t){Me(t);let e=yi(t);return t.protocol==="anthropic"?new Jt(t.name,e):new Yt(t.name,e)}r(ot,"createCustomProvider");var Jt=class extends I{static{r(this,"DynamicAnthropicProvider")}name;config;constructor(e,o){super(),this.name=e,this.config=o}},Yt=class extends K{static{r(this,"DynamicOpenAIProvider")}name;config;constructor(e,o){super(),this.name=e,this.config=o}};var J=new Map,qt=new Map;function Xo(t){let e=new Set,o=new Map,n=new Map;for(let i of t){if(Me(i),e.has(i.name))throw new Error(`Duplicate custom provider name: "${i.name}". Each custom provider must have a unique name.`);i.name in $&&console.warn(`[kodax] Custom provider "${i.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),e.add(i.name),o.set(i.name,i),n.set(i.name,()=>ot(i))}J.clear(),qt.clear();for(let[i,s]of o)J.set(i,s);for(let[i,s]of n)qt.set(i,s)}r(Xo,"registerCustomProviders");function nt(t){let e=qt.get(t);return e?e():void 0}r(nt,"getCustomProvider");function he(t){return J.has(t)}r(he,"isCustomProviderName");function it(){return[...J.keys()]}r(it,"getCustomProviderNames");function Wo(){let t=[];for(let[e,o]of J){let n=!!process.env[o.apiKeyEnv],i=(o.models??[]).map(a=>typeof a=="string"?a:a.id),s=o.model&&i.length?[...new Set([o.model,...i])]:[o.model];t.push({name:e,model:o.model,models:s,configured:n,reasoningCapability:o.reasoningCapability??"none",capabilityProfile:W(o.capabilityProfile??te),custom:!0})}return t}r(Wo,"getCustomProviderList");function zo(t){let e=J.get(t);if(!e)return;let o=(e.models??[]).map(n=>typeof n=="string"?n:n.id);return e.model&&o.length?[...new Set([e.model,...o])]:[e.model]}r(zo,"getCustomProviderModels");function Vo(t){return typeof t=="string"?{id:t}:t}r(Vo,"customDescriptorToFull");function rt(t){let e=J.get(t);if(!e)return;let o={id:e.model},n=(e.models??[]).map(Vo).filter(i=>i.id!==e.model);return[o,...n]}r(rt,"getCustomProviderModelDescriptors");function ge(t,e){let o=J.get(t);if(!o)return;let n=e===o.model,i=n?{id:o.model}:(o.models??[]).map(Vo).find(s=>s.id===e);if(i)return{provider:t,model:i.id,displayName:i.displayName??i.id,supportsThinking:o.supportsThinking??!1,reasoningCapability:i.reasoningCapability??o.reasoningCapability??"none",contextWindow:i.contextWindow??o.contextWindow,maxOutputTokens:i.maxOutputTokens??o.maxOutputTokens,thinkingBudgetCap:i.thinkingBudgetCap??o.thinkingBudgetCap,isDefault:n}}r(ge,"getCustomModelCapabilities");function Go(t){let e=J.get(t);if(!e)return;let o=e.verifyStrategy??(e.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:o}}r(Go,"getCustomProviderVerifyMetadata");function st(){let t=[];for(let[e,o]of J){let n=ge(e,o.model);n&&t.push(n);for(let i of o.models??[]){let s=typeof i=="string"?i:i.id;if(s===o.model)continue;let a=ge(e,s);a&&t.push(a)}}return t}r(st,"listCustomProviderModelCapabilities");var Q=new Map,vi=0;function Qt(t){let e=Q.get(t);if(!(!e||e.length===0))return e[e.length-1]}r(Qt,"getActiveRuntimeProviderRegistration");function ki(t){for(let[e,o]of Q){let n=o.filter(i=>i.id!==t);if(n.length!==o.length){n.length===0?Q.delete(e):Q.set(e,n);return}}}r(ki,"removeRuntimeProviderRegistration");function Ho(t,e){let o=t.trim();if(!o)throw new Error("Model provider name cannot be empty.");if(O(o))throw new Error(`Runtime model provider "${o}" conflicts with a built-in provider.`);if(he(o))throw new Error(`Runtime model provider "${o}" conflicts with an existing config-defined custom provider.`);let n={id:`runtime-provider:${++vi}`,name:o,factory:e},i=Q.get(o)??[];return Q.set(o,[...i,n]),()=>{ki(n.id)}}r(Ho,"registerModelProvider");function at(t){let e=Qt(t);return e?e.factory():void 0}r(at,"getRuntimeModelProvider");function Pe(t){return Qt(t)!==void 0}r(Pe,"isRuntimeModelProviderName");function ct(){return Array.from(Q.keys()).filter(t=>Qt(t)!==void 0)}r(ct,"getRuntimeModelProviderNames");function Jo(){Q.clear()}r(Jo,"clearRuntimeModelProviders");function Zt(t){if(O(t))return $[t]();let e=at(t);if(e)return e;let o=nt(t);if(o)return o;let n=ut();throw new Error(`Unknown provider: ${t}. Available: ${n.join(", ")}`)}r(Zt,"resolveProvider");function lt(t){return O(t)||Pe(t)||he(t)}r(lt,"isKnownProvider");function ut(){let t=Object.keys($),e=ct(),o=it();return[...new Set([...t,...e,...o])]}r(ut,"getAvailableProviderNames");function eo(t){return O(t)?Ze(t):rt(t)??[]}r(eo,"resolveProviderModelDescriptors");function Yo(t,e){return O(t)?et(t,e):ge(t,e)}r(Yo,"resolveModelCapabilities");function qo(){return[...tt(),...st()]}r(qo,"listAllModelCapabilities");function bi(t){if(O(t)){let e=A[t];return{apiKeyEnv:e.apiKeyEnv,verifyStrategy:e.verifyStrategy}}if(!Pe(t))return Go(t)}r(bi,"getProviderVerifyMetadata");async function Qo(t,e){let o=bi(t);if(!o&&!lt(t))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${t}". Available: ${ut().join(", ")}`};if(o?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${t}" does not support credential verification (cli-bridge or strategy marked unsupported)`};if(o&&!process.env[o.apiKeyEnv])return{ok:!1,error:"unconfigured",strategy:o.verifyStrategy,durationMs:0,approxTokensSpent:0,message:`Environment variable "${o.apiKeyEnv}" is not set for provider "${t}"`};let n;try{n=Zt(t)}catch(i){return{ok:!1,error:"unconfigured",strategy:o?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}try{return await n.verifyCredential(e)}catch(i){return{ok:!1,error:"unknown",strategy:o?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}}r(Qo,"verifyProviderCredential");async function Zo(t,e){if(!lt(t))return{ok:!1,source:"failed",error:`Unknown provider: "${t}"`,durationMs:0};let o=eo(t);return o.length===0?{ok:!1,source:"failed",error:`Provider "${t}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:o.map(i=>i.id),durationMs:0}}r(Zo,"listProviderModels");var en={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08}},openai:{"gpt-5.4":{inputPer1M:30,outputPer1M:120},"gpt-5.3-codex-spark":{inputPer1M:10,outputPer1M:40}},deepseek:{"deepseek-v4-flash":{inputPer1M:.14,outputPer1M:.28,cachePer1M:.028},"deepseek-v4-pro":{inputPer1M:1.68,outputPer1M:3.36,cachePer1M:.14}},kimi:{"k2.5":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},zhipu:{"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"zhipu-coding":{"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"minimax-coding":{"MiniMax-M3":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7-highspeed":{inputPer1M:.01,outputPer1M:.03}},"mimo-coding":{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},mimo:{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},"ark-coding":{"glm-5.1":{inputPer1M:.005,outputPer1M:.015},"glm-4.7":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M3":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M2.7":{inputPer1M:.005,outputPer1M:.015},"deepseek-v3.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-flash":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-code":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-pro":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-lite":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function to(t,e,o){let n=o?.[t]?.[e];return n||en[t]?.[e]}r(to,"getCostRate");function oo(t,e,o,n=0){let i=e/1e6*t.inputPer1M,s=o/1e6*t.outputPer1M,a=t.cachePer1M?n/1e6*t.cachePer1M:0;return i+s+a}r(oo,"calculateCost");function _i(){return{records:[],retries:[]}}r(_i,"createCostTracker");function no(t,e){let o={timestamp:Date.now(),provider:e.provider,waitMs:e.waitMs,reason:e.reason,source:e.source};return{records:t.records,retries:[...t.retries,o]}}r(no,"recordRetry");function io(t,e,o){let n=to(e.provider,e.model,o),i=(e.cacheReadTokens??0)+(e.cacheWriteTokens??0),s=n?oo(n,e.inputTokens,e.outputTokens,i):0,a={timestamp:Date.now(),provider:e.provider,model:e.model,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,cost:s,role:e.role};return{records:[...t.records,a],retries:t.retries}}r(io,"recordUsage");function Ci(t){let e=0,o=0,n=0,i=0,s=0,a=0,c={},u={};for(let f of t.records){e+=f.cost,o+=f.inputTokens,n+=f.outputTokens,i+=f.cacheReadTokens+f.cacheWriteTokens,s+=f.cacheReadTokens,a+=f.cacheWriteTokens;let v=c[f.provider];c[f.provider]={cost:(v?.cost??0)+f.cost,calls:(v?.calls??0)+1,inputTokens:(v?.inputTokens??0)+f.inputTokens,outputTokens:(v?.outputTokens??0)+f.outputTokens};let g=f.role??"default",b=u[g];u[g]={cost:(b?.cost??0)+f.cost,calls:(b?.calls??0)+1,inputTokens:(b?.inputTokens??0)+f.inputTokens,outputTokens:(b?.outputTokens??0)+f.outputTokens}}let d=0;for(let f of t.retries)d+=f.waitMs;let l=i>0?s/i:0;return{totalCost:e,totalInputTokens:o,totalOutputTokens:n,totalCacheTokens:i,totalCacheReadTokens:s,totalCacheWriteTokens:a,cacheHitRate:l,callCount:t.records.length,retryCount:t.retries.length,retryWaitMs:d,byProvider:c,byRole:u}}r(Ci,"getSummary");function dt(t){return t<.01?`$${t.toFixed(4)}`:t<1?`$${t.toFixed(3)}`:`$${t.toFixed(2)}`}r(dt,"formatCost");function xi(t){let e=[];if(e.push(`Session Cost: ${dt(t.totalCost)} (${t.callCount} calls)`),e.push(`Tokens: ${t.totalInputTokens.toLocaleString()} in / ${t.totalOutputTokens.toLocaleString()} out`),t.totalCacheTokens>0){let i=(t.cacheHitRate*100).toFixed(0);e.push(`Cache: ${t.totalCacheTokens.toLocaleString()} tokens (${t.totalCacheReadTokens.toLocaleString()} read / ${t.totalCacheWriteTokens.toLocaleString()} write, ${i}% hit rate)`)}if(t.retryCount>0){let i=(t.retryWaitMs/1e3).toFixed(1);e.push(`Retries: ${t.retryCount} (${i}s total wait)`)}e.push("");let o=Object.entries(t.byProvider).sort((i,s)=>s[1].cost-i[1].cost);if(o.length>0){e.push("By Provider:");for(let[i,s]of o)e.push(` ${i}: ${dt(s.cost)} (${s.calls} calls, ${s.inputTokens.toLocaleString()} in / ${s.outputTokens.toLocaleString()} out)`);e.push("")}let n=Object.entries(t.byRole).sort((i,s)=>s[1].cost-i[1].cost);if(n.length>1){e.push("By Role:");for(let[i,s]of n)e.push(` ${i}: ${dt(s.cost)} (${s.calls} calls)`)}return e.join(`
|
|
31
|
-
`)}r(xi,"formatCostReport");var tn={inputTokens:0,outputTokens:0,totalTokens:0},Ti=3e4;async function Ei(t){let e=new AbortController,o=t.timeoutMs??Ti,n=t.costTracker,i,s=r(u=>{i||(i=u),e.abort()},"recordAbort"),a=setTimeout(()=>s("timeout"),o),c=r(()=>s("parent"),"onParentAbort");t.abortSignal&&(t.abortSignal.aborted?s("parent"):t.abortSignal.addEventListener("abort",c,{once:!0}));try{let u=await t.provider.stream([...t.messages],[],t.system,t.reasoning??{mode:"off"},{modelOverride:t.model,onRetryAfter:r(g=>{n&&(n=no(n,{provider:g.provider,waitMs:g.waitMs,reason:g.reason,source:g.source}))},"onRetryAfter")},e.signal),d=u.usage??tn,l=u.textBlocks??[],f=u.toolBlocks??[],v=l.map(g=>g.text).join("");return f.length>0?{text:v,usage:d,costTracker:n,stopReason:"error",error:new Error(`sideQuery: provider returned ${f.length} tool_use block(s); sideQuery expects text-only output`)}:(n&&(n=io(n,{provider:t.provider.name,model:t.model,inputTokens:d.inputTokens,outputTokens:d.outputTokens,cacheReadTokens:d.cachedReadTokens,cacheWriteTokens:d.cachedWriteTokens,role:t.querySource})),{text:v,usage:d,costTracker:n,stopReason:wi(u.stopReason)})}catch(u){let d=u instanceof Error?u:new Error(String(u)),l="error";return e.signal.aborted&&(l=i==="timeout"?"timeout":"aborted"),{text:"",usage:tn,costTracker:n,stopReason:l,error:d}}finally{clearTimeout(a),t.abortSignal&&t.abortSignal.removeEventListener("abort",c)}}r(Ei,"sideQuery");function wi(t){return t==="max_tokens"?"max_tokens":"end_turn"}r(wi,"mapStopReason");export{Y as a,R as b,ke as c,pt as d,ft as e,mt as f,on as g,nn as h,rn as i,sn as j,ro as k,so as l,gt as m,ne as n,Re as o,ao as p,ie as q,re as r,ht as s,bt as t,_t as u,se as v,Oe as w,xt as x,pn as y,De as z,Ie as A,Le as B,G as C,ae as D,ce as E,Tt as F,Et as G,le as H,wt as I,_e as J,I as K,K as L,pe as M,fe as N,Te as O,Ee as P,A as Q,$ as R,Gt as S,No as T,Bo as U,Fo as V,Ko as W,$o as X,Uo as Y,jo as Z,O as _,Ze as $,et as aa,tt as ba,Me as ca,ot as da,Xo as ea,nt as fa,he as ga,it as ha,Wo as ia,zo as ja,rt as ka,ge as la,st as ma,Ho as na,at as oa,Pe as pa,ct as qa,Jo as ra,Zt as sa,lt as ta,ut as ua,eo as va,Yo as wa,qo as xa,Qo as ya,Zo as za,en as Aa,to as Ba,oo as Ca,_i as Da,no as Ea,io as Fa,Ci as Ga,dt as Ha,xi as Ia,Ei as Ja};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$ as Lf,$a as Lg,A as kf,Aa as kg,B as lf,Ba as lg,C as mf,Ca as mg,D as nf,Da as ng,E as of,Ea as og,F as pf,Fa as pg,G as qf,Ga as qg,H as rf,Ha as rg,I as sf,Ia as sg,J as tf,Ja as tg,K as uf,Ka as ug,L as vf,La as vg,M as wf,Ma as wg,N as xf,Na as xg,O as yf,Oa as yg,P as zf,Pa as zg,Q as Af,Qa as Ag,R as Bf,Ra as Bg,S as Cf,Sa as Cg,T as Df,Ta as Dg,U as Ef,Ua as Eg,V as Ff,Va as Fg,W as Gf,Wa as Gg,X as Hf,Xa as Hg,Y as If,Ya as Ig,Z as Jf,Za as Jg,_ as Kf,_a as Kg,a as X,aa as Mf,ab as Mg,b as Y,ba as Nf,bb as Ng,c as Z,ca as Of,cb as Og,d as Oe,da as Pf,db as Pg,e as Pe,ea as Qf,eb as Qg,f as Qe,fa as Rf,fb as Rg,g as Re,ga as Sf,gb as Sg,h as Se,ha as Tf,hb as Tg,i as Te,ia as Uf,ib as Ug,j as Ue,ja as Vf,jb as Vg,k as Ve,ka as Wf,kb as Wg,l as We,la as Xf,lb as Xg,m as Xe,ma as Yf,mb as Yg,n as Ye,na as Zf,nb as Zg,o as Ze,oa as _f,ob as _g,p as _e,pa as $f,pb as $g,q as $e,qa as ag,qb as ah,r as af,ra as bg,rb as bh,s as bf,sa as cg,sb as ch,t as cf,ta as dg,tb as dh,u as df,ua as eg,v as ef,va as fg,w as ff,wa as gg,x as gf,xa as hg,y as hf,ya as ig,z as jf,za as jg}from"./chunk-E3HENKTX.js";import{$ as Yb,$b as md,A as Bb,Aa as vc,Ac as Ld,Ad as ye,B as Cb,Ba as wc,Bc as Md,Bd as ze,C as Db,Cb as Wc,Cc as Nd,Cd as Ae,D as Eb,Db as Xc,Dc as Od,Dd as Be,E as Fb,Ec as Pd,Ed as Ce,F as Gb,Fc as Qd,Fd as De,G as Hb,Gc as Rd,Gd as Ee,H as Ib,Ha as xc,Hb as Yc,Hc as Sd,Hd as Fe,Ia as yc,Ib as Zc,Ic as Td,Id as Ge,Ja as zc,Jb as _c,Jc as Ud,Jd as He,K as Jb,Kb as $c,Kc as Vd,Kd as Ie,L as Kb,Lb as ad,Lc as Wd,Ld as Je,M as Lb,Ma as Ac,Mb as bd,Mc as Xd,Md as Ke,N as Mb,Na as Bc,Nc as Yd,Nd as Le,O as Nb,Oa as Cc,Oc as Zd,Od as Me,P as Ob,Pa as Dc,Pb as cd,Pc as _d,Pd as Ne,Q as Pb,Qa as Ec,Qc as $d,R as Qb,Ra as Fc,Rb as dd,Rc as ae,S as Rb,Sa as Gc,Sb as ed,Sc as be,Ta as Hc,Tb as fd,Tc as ce,Ua as Ic,Ub as gd,Uc as de,V as Sb,Vb as hd,Vc as ee,W as Tb,Wb as id,Wc as fe,X as Ub,Y as Vb,Yb as jd,Yc as ge,Z as Wb,Zb as kd,Zc as he,_ as Xb,_b as ld,a as _,aa as Zb,ab as Jc,ac as nd,ad as ie,b as $,ba as _b,bb as Kc,bc as od,bd as je,cb as Lc,cc as pd,cd as ke,da as $b,db as Mc,dc as qd,e as kb,ea as ac,eb as Nc,ec as rd,f as lb,fa as bc,fb as Oc,fc as sd,ga as cc,gc as td,ha as dc,ia as ec,j as mb,ja as fc,jc as ud,jd as le,k as nb,kb as Pc,kc as vd,kd as me,l as ob,la as gc,lb as Qc,lc as wd,ld as ne,m as pb,ma as hc,mc as xd,md as oe,n as qb,na as ic,nc as yd,nd as pe,o as rb,oa as jc,oc as zd,od as qe,p as sb,pa as kc,pc as Ad,pd as re,q as tb,qa as lc,qb as Rc,qc as Bd,qd as se,r as ub,ra as mc,rb as Sc,rc as Cd,rd as te,s as vb,sa as nc,sc as Dd,sd as ue,t as wb,ta as oc,tb as Tc,tc as Ed,td as ve,u as xb,ua as pc,ub as Uc,uc as Fd,v as yb,va as qc,vb as Vc,vc as Gd,wa as rc,wc as Hd,x as zb,xa as sc,xc as Id,ya as tc,yc as Jd,yd as we,z as Ab,za as uc,zc as Kd,zd as xe}from"./chunk-WQTVG2T5.js";import{$ as y,C as k,K as l,L as m,Q as n,R as o,S as p,T as q,U as r,V as s,W as t,X as u,Y as v,Z as w,_ as x,a,aa as z,b,ba as A,c,ca as B,da as C,ea as D,fa as E,ga as F,ha as G,ia as H,j as d,ja as I,ka as J,la as K,ma as L,na as M,oa as N,pa as O,qa as P,ra as Q,sa as R,t as e,ta as S,u as f,ua as T,v as g,va as U,w as h,wa as V,x as i,xa as W,y as j}from"./chunk-PEWH3AAL.js";import{Ac as Ta,Bc as Ua,Cb as xa,Cc as Va,Db as ya,Dc as Wa,Eb as za,Fb as Aa,Gb as Ba,Hb as Ca,Ib as Da,Jb as Ea,Kb as Fa,Kc as Xa,Lb as Ga,Lc as Ya,Mb as Ha,Mc as Za,Nb as Ia,Nc as _a,Ob as Ja,Oc as $a,Pb as Ka,Pc as ab,Qb as La,Qc as bb,Rb as Ma,Sb as Na,Sc as cb,Tb as Oa,Tc as db,Ub as Pa,Uc as eb,Vb as Qa,Vc as fb,Wb as Ra,Wc as gb,Xc as hb,a as aa,b as ba,c as ca,cd as ib,d as da,dd as jb,e as ea,f as fa,h as ga,i as ha,j as ia,jb as va,k as ja,ka as pa,kb as wa,l as ka,m as la,n as ma,na as qa,o as na,p as oa,ua as ra,va as sa,wa as ta,xa as ua,zc as Sa}from"./chunk-HMATTIU6.js";import"./chunk-V4WSBIXB.js";export{Tf as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,Uf as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,mg as BASH_POLICY_SPEC,hf as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,Zf as BREAKER_ERROR_THRESHOLD,_f as BREAKER_WINDOW_MS,bh as BUILTIN_WORKFLOWS,lb as CANCELLED_TOOL_RESULT_MESSAGE,kb as CANCELLED_TOOL_RESULT_PREFIX,Jf as CODING_AGENT_MARKER,Ue as CODING_INVARIANTS,ge as CODING_SUMMARY_PROMPT,he as CODING_UPDATE_SUMMARY_PROMPT,yd as CapabilityDeniedError,We as Client,zd as ConstructionManifestError,ie as DEFAULT_CODING_AGENT_NAME,yf as DEFAULT_DANGEROUS_PATTERNS,wd as DEFAULT_HANDLER_TIMEOUT_MS,Jc as DEFAULT_RESILIENCE_CONFIG,xf as DEFAULT_SAFE_PATTERNS,Jd as DEFAULT_SELF_MODIFY_BUDGET,ig as DEFAULT_SPECULATIVE_WINDOW_MS,nb as DEFAULT_TOOL_OUTPUT_MAX_BYTES,mb as DEFAULT_TOOL_OUTPUT_MAX_LINES,Qg as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,oa as DefaultSummaryCompaction,Gf as EMIT_VERDICT_TOOL_NAME,_ as ErrorCategory,Cc as GENERATOR_AGENT_NAME,ha as KODAX_API_MIN_INTERVAL,p as KODAX_DEFAULT_PROVIDER,ba as KODAX_DEFAULT_TIMEOUT,ca as KODAX_HARD_TIMEOUT,fa as KODAX_MAX_INCOMPLETE_RETRIES,da as KODAX_MAX_RETRIES,aa as KODAX_MAX_TOKENS,o as KODAX_PROVIDERS,n as KODAX_PROVIDER_SNAPSHOTS,d as KODAX_REASONING_MODE_SEQUENCE,ea as KODAX_RETRY_BASE_DELAY,ga as KODAX_STAGGER_DELAY,we as KODAX_TOOLS,l as KodaXAnthropicCompatProvider,k as KodaXBaseProvider,We as KodaXClient,a as KodaXError,ce as KodaXExtensionRuntime,m as KodaXOpenAICompatProvider,b as KodaXProviderError,c as KodaXRateLimitError,Y as KodaXSessionError,Z as KodaXTerminalError,X as KodaXToolError,Sa as LINEAGE_ENTRY_TYPES,fd as LSP_SERVERS,Ua as LineageCompaction,Ta as LineageExtension,gd as LspService,xb as MANUAL_TOPIC_IDS,Da as McpAuthRequiredError,Pa as McpCapabilityProvider,Ca as McpExpiredSessionError,Qa as McpManager,Oa as McpServerRuntime,Bc as PLANNER_AGENT_NAME,ia as PROMISE_PATTERN,kd as PROMPT_SECTION_REGISTRY,If as PROTOCOL_EMITTER_TOOLS,Oc as ProviderRecoveryCoordinator,ob as READ_DEFAULT_LIMIT,qb as READ_MAX_LINE_CHARS,pb as READ_PREFLIGHT_SIZE_BYTES,Wb as REPOINTEL_DEFAULT_ENDPOINT,qa as Runner,Ac as SCOUT_AGENT_NAME,qd as SELF_KNOWLEDGE_ROUTING_RULE,jd as SYSTEM_PROMPT,vg as SYSTEM_WORKFLOW_LIMITS,Mc as StableBoundaryTracker,Fc as TASK_ENGINE_ROLE_AGENTS,df as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,pg as TRACING_ENV,Dc as WORKER_AGENT_NAME,Pg as WORKFLOW_GENERATION_SYSTEM_PROMPT,Qd as _resetRuntimeForTesting,Td as activate,Nb as analyzeChangedScope,Hd as appendAuditEntry,ab as appendSessionLineageLabel,qe as applyAccountingDelta,$e as applyFanoutBranchTransition,bb as applySessionCompaction,mc as applyToolResultGuardrail,hb as archiveOldIslands,af as assignFanoutBranchWorker,Yf as autoModeDenialShouldFallback,fg as bashSignalCollector,qg as bootstrapTracing,Qe as boundedRevise,bg as breakerShouldFallback,Re as budgetCeiling,$c as buildAmaControllerDecision,wg as buildApprovalSummary,te as buildBlockedGoal,rd as buildCapabilityContextSections,Kf as buildClassifierPrompt,ue as buildCompleteGoal,pe as buildCreatedGoal,Zc as buildFallbackRoutingDecision,Ye as buildFanoutSchedulerPlan,mf as buildGoalRuntimeBinding,Na as buildInitializeCapabilities,Ed as buildLlmReviewPrompt,qf as buildMcpReverseCapabilities,re as buildPausedGoal,Pc as buildPromptMessageContent,ad as buildPromptOverlay,od as buildPromptSnapshot,Tc as buildProviderCapabilitySnapshot,_c as buildProviderPolicyHintsForDecision,Uc as buildProviderPolicyPromptNotes,g as buildReasoningOverrideKey,Mb as buildRepoIntelligenceContext,$b as buildRepoIntelligenceIndex,Jb as buildRepoOverview,se as buildResumedGoal,pd as buildSelfKnowledgeRoutingRule,fb as buildSessionTree,td as buildSystemPrompt,sd as buildSystemPromptSnapshot,Ug as buildWorkflowGenerationSkillContext,Tg as buildWorkflowGenerationUserPrompt,eg as checkAbsoluteDeny,Qc as checkIncompleteToolCalls,cd as checkPromiseSignal,xg as clampWorkflowLimits,Mf as classify,Af as classifyBashCommand,$ as classifyError,Lc as classifyResilienceError,wa as cleanupIncompleteToolCalls,j as clearReasoningOverride,Q as clearRuntimeModelProviders,hg as collectAllSignals,Cf as computeInputSignature,Nf as computeRulesFingerprint,Pd as configureRuntime,qc as convertCapabilityReadResult,pc as convertProviderSearchResults,_e as countActiveFanoutBranches,gb as countActiveLineageMessages,ka as countTokens,la as createAgent,Vf as createAutoModeDenialTracker,lg as createAutoModeToolGuardrail,zf as createBashClassifierConfig,og as createBashPrefixExtractor,Ee as createBuiltinToolDefinition,$f as createCircuitBreaker,sg as createCodingWorkflowBackend,Ad as createCtxProxy,C as createCustomProvider,je as createDefaultCodingAgent,Bf as createDenialTracker,de as createExtensionRuntime,Xe as createFanoutSchedulerInput,ma as createHandoff,na as createInMemorySession,tf as createKodaXTaskRunner,ya as createMcpCapabilityId,Ra as createMcpManager,Ea as createMcpTransport,ld as createPromptSection,bd as createReasoningPlan,ug as createRunGraphWriter,Oe as createSessionControl,Xa as createSessionLineage,ef as createToolResultTruncationGuardrail,Og as createWorkflowLifecycleController,_g as createWorkflowPatternTemplateModule,Lg as createWorkflowRunManager,$g as decideWorkflowInvocation,xa as defaultMcpCacheDir,xd as defaultPolicy,Gg as deleteSavedWorkflow,Od as disableSelfModify,Ia as discoverAuthorizationServerMetadata,ae as discoverMarkdownAgents,Ja as discoverOAuthEndpoints,Ha as discoverProtectedResourceMetadata,Ag as discoverSavedWorkflows,Ic as drainPendingSwaps,Hf as emitVerdict,ja as estimateTokens,Vc as evaluateProviderPolicy,ud as exec,Ne as executeTool,ib as extractArtifactLedger,ng as extractCommandPrefix,Sc as extractComparableUserMessageText,oc as extractHtmlTitle,Ga as extractInsufficientScope,Rc as extractPromptComparableText,Fa as extractResourceMetadataUrl,Wa as extractTitleFromMessages,gg as fileSignalCollector,sc as finalizeRetrievalResult,Zd as findByVersion,cb as findPreviousUserEntryId,eb as forkSessionLineage,zc as formatAgentsForPrompt,vf as formatParallelDispatchResult,rb as formatSize,Va as generateSessionId,Wg as generateWorkflow,Xg as generateWorkflowFromOptions,fe as getActiveExtensionRuntime,sa as getAgentConfigHome,ta as getAgentConfigPath,Ge as getAllRegisteredTools,ua as getAppDataDir,T as getAvailableProviderNames,De as getBuiltinRegisteredToolDefinition,Ce as getBuiltinToolDefinition,ch as getBuiltinWorkflow,K as getCustomModelCapabilities,E as getCustomProvider,H as getCustomProviderList,J as getCustomProviderModelDescriptors,I as getCustomProviderModels,G as getCustomProviderNames,hd as getDefaultLspService,Mg as getDefaultWorkflowRunManager,Ff as getDenialContext,Ze as getFanoutBranch,ec as getImpactEstimate,xc as getKodaxGlobalDir,Ba as getMcpCachePaths,z as getModelCapabilities,bc as getModuleContext,dc as getProcessContext,q as getProvider,u as getProviderConfiguredCapabilityProfile,t as getProviderConfiguredReasoningCapability,v as getProviderList,s as getProviderModel,y as getProviderModelDescriptors,w as getProviderModels,Ae as getRegisteredToolDefinition,ac as getRepoIntelligenceIndex,Kb as getRepoOverview,fc as getRepoRoutingSignals,Ke as getRequiredToolParams,N as getRuntimeModelProvider,P as getRuntimeModelProviderNames,Ya as getSessionLineagePath,Za as getSessionMessagesFromLineage,cc as getSymbolContext,ye as getTool,ze as getToolDefinition,Be as getToolRegistrations,lc as getToolResultPolicy,Zg as getWorkflowPatternTemplate,me as goalTokenDelta,Hc as hasPendingSwap,Yc as inferTaskType,Cb as inspectEditFailure,Zb as inspectRepoIntelligenceRuntime,F as isCustomProviderName,Ef as isDeniedRecently,S as isKnownProvider,uf as isParallelDispatchDirective,r as isProviderConfigured,x as isProviderName,O as isRuntimeModelProviderName,Ie as isToolFileMutation,Je as isToolMutation,He as isToolPlanModeAllowed,ve as isValidTokenBudget,dd as languageIdForPath,_d as listAll,W as listAllModelCapabilities,Wd as listArtifacts,A as listBuiltinModelCapabilities,Fe as listBuiltinToolDefinitions,dh as listBuiltinWorkflows,Yd as listConstructed,L as listCustomProviderModelCapabilities,Me as listToolDefinitions,Le as listTools,Yg as listWorkflowPatternTemplates,yc as loadAgentsFiles,$d as loadAgentsFromMarkdown,Rf as loadAutoRules,Ig as loadGeneratedWorkflowFromRun,Bd as loadHandler,h as loadReasoningOverride,Dg as loadSavedWorkflow,Cg as loadSavedWorkflowCapsule,Ma as loadValidToken,le as makeDisabledGoalToolsContext,cf as markFanoutBranchCancelled,bf as markFanoutBranchCompleted,pf as mcpRootsFromWorkspace,jb as mergeArtifactLedger,Bg as normalizeWorkflowModule,md as orderPromptSections,rg as parallelInvestigation,Qf as parseAutoRules,Lf as parseClassifierOutput,Bb as parseEditToolError,Fd as parseLlmReviewVerdict,za as parseMcpCapabilityId,cg as parseModelSpec,Vg as parseWorkflowGeneration,La as performOAuthLogin,vb as persistToolOutput,Kg as preflightWorkflowCapsule,gc as prewarmRepoIntelligenceCaches,Xd as readArtifact,Id as readAuditEntries,Kd as readBudget,Nd as readDisableState,jg as readSpeculativeWindowFromEnv,Of as readTrustState,e as reasoningCapabilityToOverride,Xc as reasoningModeToDepth,f as reasoningOverrideToCapability,Nc as reconstructMessagesWithToolGuard,Xf as recordAutoModeAllow,Wf as recordAutoModeBlock,ff as recordBlockerAttempt,ag as recordBreakerError,Df as recordDenial,Ve as registerCodingInvariants,of as registerConfiguredMcpCapabilityProvider,D as registerCustomProviders,M as registerModelProvider,Ka as registerOAuthClient,rf as registerOfficialSandboxExtension,pa as registerPresetDispatcher,xe as registerTool,Ud as rehydrateActiveArtifacts,Ld as remainingSelfModifyBudget,Fg as renameSavedWorkflow,Ob as renderChangedScope,Vb as renderImpactEstimate,Sb as renderModuleContext,Ub as renderProcessContext,nd as renderPromptSections,Lb as renderRepoOverview,rc as renderRetrievalResult,Tb as renderSymbolContext,Hg as replaceSavedWorkflow,ed as reportLspDiagnostics,gf as resetBlockerCounter,Md as resetBudget,dg as resolveClassifierModel,Gc as resolveConstructedAgent,yb as resolveKodaXManual,V as resolveModelCapabilities,R as resolveProvider,U as resolveProviderModelDescriptors,Wc as resolveReasoningMode,Yb as resolveRepoIntelligenceMode,Xb as resolveRepoIntelligenceRuntimeConfig,Kc as resolveResilienceConfig,_a as resolveSessionLineageTarget,Se as resolveToolCapability,Rg as resolveWorkflowGenerationTimeoutMs,Ng as resolveWorkflowIdentity,Vd as revoke,db as rewindSessionLineage,be as rollbackSelfModify,Cd as runAstRules,ke as runKodaX,Gd as runLlmReview,nf as runManagedTask,sf as runOrchestration,zg as runWorkflowFromOptions,yg as runWorkflowModule,tg as safeWorkflowArtifactName,Eg as saveGeneratedWorkflow,Jg as saveGeneratedWorkflowFromRun,i as saveReasoningOverride,Aa as searchMcpCatalog,ee as setActiveExtensionRuntime,ra as setAgentConfigHome,$a as setSessionLineageActiveEntry,oe as shouldFlipBudgetLimited,id as shutdownDefaultLspService,kg as speculativeRace,Rd as stage,Pe as startKodaX,Sf as stripAssistantText,nc as stripHtmlToText,Sd as testArtifact,Ib as toolAskUserQuestion,Eb as toolBash,Rb as toolChangedDiff,Qb as toolChangedScope,vc as toolCodeSearch,Ab as toolEdit,Fb as toolGlob,Gb as toolGrep,kc as toolImpactEstimate,Db as toolInsertAfterAnchor,hc as toolModuleContext,Te as toolPermission,jc as toolProcessContext,wb as toolRead,Pb as toolRepoOverview,wc as toolSemanticLookup,ic as toolSymbolContext,Hb as toolUndo,uc as toolWebFetch,tc as toolWebSearch,zb as toolWrite,sb as truncateHead,ub as truncateLine,tb as truncateTail,Pf as trustProjectRules,ne as turnWallTimeDelta,va as validateAndFixToolHistory,B as validateCustomProviderConfig,Sg as validateGeneratedWorkflowSource,wf as validateSubtaskIndependence,Dd as validateToolSchemaForProvider,lf as verifyGoalCompletion,_b as warmRepoIntelligenceRuntime,vd as webhook,jf as withGoalBeforeNextTurn,kf as withGoalStopHook,Ec as workerAgent,ah as workflowStartOutcomeConsumesTurn};
|