@kodax-ai/kodax 0.7.97-alpha.2 → 0.7.97-alpha.4
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 +100 -0
- package/README.md +45 -28
- package/README_CN.md +27 -19
- package/config-templates/config.example.jsonc +0 -1
- package/dist/builtin/visual-review/SKILL.md +80 -0
- package/dist/chunks/agent-QPYNXWUF.js +2 -0
- package/dist/chunks/argument-completer-LLTQJ3AO.js +2 -0
- package/dist/chunks/{chunk-7V2QBZ73.js → chunk-2AM3FRQ7.js} +17 -17
- package/dist/chunks/{chunk-QGWHJIO4.js → chunk-2E3TJ7KO.js} +1 -1
- package/dist/chunks/{chunk-5DSUVP46.js → chunk-3XIY3OYT.js} +1 -1
- package/dist/chunks/{chunk-OT5WHAX4.js → chunk-4BYTAJU4.js} +1 -1
- package/dist/chunks/chunk-4HSDJRRJ.js +22 -0
- package/dist/chunks/chunk-4VCYZ2PV.js +431 -0
- package/dist/chunks/chunk-62IOXGHA.js +350 -0
- package/dist/chunks/chunk-62V3CQH4.js +1478 -0
- package/dist/chunks/{chunk-F7DHZH6T.js → chunk-6ERRCDWZ.js} +1 -1
- package/dist/chunks/chunk-7VOTRMUH.js +69 -0
- package/dist/chunks/{chunk-3PS3YEDS.js → chunk-BBF5A5BT.js} +1 -1
- package/dist/chunks/{chunk-VEZ4WHPN.js → chunk-D2WGP3VS.js} +325 -331
- package/dist/chunks/chunk-DN4GBWSU.js +351 -0
- package/dist/chunks/{chunk-ZTYZYXGV.js → chunk-JNSL7ADK.js} +1 -1
- package/dist/chunks/{chunk-QOFFAY5C.js → chunk-JRHESXS5.js} +3 -4
- package/dist/chunks/{chunk-5P7RTSZT.js → chunk-KXRII4QU.js} +1 -1
- package/dist/chunks/chunk-NGFXDSP2.js +394 -0
- package/dist/chunks/chunk-SLOIHXD6.js +2 -0
- package/dist/chunks/{chunk-HSRYDDPF.js → chunk-TDDCFRPG.js} +1 -1
- package/dist/chunks/chunk-TOHJOSAB.js +497 -0
- package/dist/chunks/chunk-ULYEFYIV.js +12 -0
- package/dist/chunks/{chunk-ZZQ4GDVU.js → chunk-V26LAWJY.js} +1 -1
- package/dist/chunks/{chunk-6ZAQKFIM.js → chunk-XZ7CX74A.js} +1 -1
- package/dist/chunks/{chunk-ZPPAT25E.js → chunk-YVBBU6K5.js} +1 -1
- package/dist/chunks/{chunk-QVDTORL3.js → chunk-ZGLYGBM2.js} +1 -1
- package/dist/chunks/{client-MXOJ5XUN.js → client-YND6BJUV.js} +1 -1
- package/dist/chunks/{compaction-config-5VZSGKBQ.js → compaction-config-6VJ7HZOV.js} +1 -1
- package/dist/chunks/{construction-bootstrap-U2ZU2WAT.js → construction-bootstrap-VTZJZTQ3.js} +1 -1
- package/dist/chunks/dist-HFRRCJ5U.js +2 -0
- package/dist/chunks/dist-ZLR4OTDD.js +2 -0
- package/dist/chunks/host-Z66YR63P.js +2 -0
- package/dist/chunks/readline-helpers-4CJH55V7.js +2 -0
- package/dist/chunks/run-manager-FCHIWXXU.js +2 -0
- package/dist/chunks/tool-dispatch-I4H2QSL4.js +2 -0
- package/dist/chunks/utils-I5Z4U76H.js +2 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +2 -2
- package/dist/kodax_cli.js +1607 -1629
- package/dist/kodax_resume.js +27 -27
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/sandbox-network-broker.js +38 -38
- package/dist/sdk-a2a.d.ts +14 -14
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +12 -12
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-client.d.ts +10 -8
- package/dist/sdk-client.js +1 -1
- package/dist/sdk-coding.d.ts +38 -421
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +2 -2
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +1 -1
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +18 -18
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +21 -19
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +8 -8
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +45 -45
- package/dist/types-chunks/{bash-prefix-extractor.d-DvswAXKS.d.ts → bash-prefix-extractor.d-CLq7XgO7.d.ts} +19 -186
- package/dist/types-chunks/{capsule.d-B4atvlxE.d.ts → capsule.d-CuGifYAb.d.ts} +4 -4
- package/dist/types-chunks/{client-contract-A1jdk6xz.d.ts → client-contract-cQ9frDMg.d.ts} +13 -36
- package/dist/types-chunks/{controller.d-yyKajPTi.d.ts → controller.d-0iRe3htV.d.ts} +2 -2
- package/dist/types-chunks/{controller.d-BkUJ_3sl.d.ts → controller.d-35RtCNle.d.ts} +1 -1
- package/dist/types-chunks/{history-retrieval.d-JdFfkeF3.d.ts → history-retrieval.d-DSM17KRG.d.ts} +1 -1
- package/dist/types-chunks/{manager.d-C_20XqCV.d.ts → manager.d-nZ57Ps91.d.ts} +1 -0
- package/dist/types-chunks/{manifest.d-Bw2i-zQi.d.ts → manifest.d-OTRwPHVt.d.ts} +1 -1
- package/dist/types-chunks/{provider-request-observation.d-jL8T6wVO.d.ts → provider-request-observation.d-C_bEqr4m.d.ts} +3 -1
- package/dist/types-chunks/{public-api.d-Cq8ILMte.d.ts → public-api.d-TxoZttfO.d.ts} +4 -11
- package/dist/types-chunks/{review-inbox.d-BeaLRNHx.d.ts → review-inbox.d-CyVNw-vt.d.ts} +2 -0
- package/dist/types-chunks/{review-packet.d-D4bbTbq3.d.ts → review-packet.d-WJNbgTeP.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-C7Q71rin.d.ts → run-manager.d-CoLEnzEm.d.ts} +5 -5
- package/dist/types-chunks/{runtime-client-info-CxnlZlW5.d.ts → runtime-client-info-gOaOHxcX.d.ts} +11 -3
- package/dist/types-chunks/{sdk-session-BDFjCpDn.d.ts → sdk-session-03IR_W0n.d.ts} +2 -10
- package/dist/types-chunks/{trusted-repl-entry-vbUM8R6P.d.ts → trusted-repl-entry-ByD3cHZk.d.ts} +11 -7
- package/dist/types-chunks/{types.d-BJTN-RZr.d.ts → types.d-CGVqYNNH.d.ts} +2 -26
- package/dist/types-chunks/{types.d-o7t9dds4.d.ts → types.d-gmpRHyNp.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-CWiMhFfu.d.ts → utils.d-CuYGalHn.d.ts} +6 -17
- package/docs/CLIENT_CONTRACT.md +13 -3
- package/docs/SDK_MIGRATION.md +16 -1
- package/docs/SPACE_SDK_SEAMS.md +41 -3
- package/package.json +2 -2
- package/public_docs/getting-started/overview.md +1 -1
- package/public_docs/sdk/embedder-guide.md +51 -43
- package/dist/chunks/agent-J7SHFM5N.js +0 -2
- package/dist/chunks/argument-completer-ZJQOWTIS.js +0 -2
- package/dist/chunks/chunk-2GV6MQ4T.js +0 -22
- package/dist/chunks/chunk-4VJMQDTH.js +0 -417
- package/dist/chunks/chunk-K3DQGSQU.js +0 -372
- package/dist/chunks/chunk-NO23K2CB.js +0 -2
- package/dist/chunks/chunk-QZ4B4AWG.js +0 -473
- package/dist/chunks/chunk-RXDS6CNA.js +0 -355
- package/dist/chunks/chunk-VDGPJQL7.js +0 -1478
- package/dist/chunks/chunk-ZS2GUADU.js +0 -498
- package/dist/chunks/dist-CSLNWLOE.js +0 -2
- package/dist/chunks/dist-XXMJMJDU.js +0 -2
- package/dist/chunks/host-RUXYZFYN.js +0 -2
- package/dist/chunks/readline-helpers-JCVULR4C.js +0 -2
- package/dist/chunks/run-manager-DRIM5VNE.js +0 -2
- package/dist/chunks/utils-MQEBGKIX.js +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as s}from"./chunk-ONUPGMER.js";import{AsyncLocalStorage as Oe}from"node:async_hooks";import{randomUUID as wn}from"node:crypto";var me=new Oe,Ot=new Oe,No=new Oe,Pn=new Oe,jo=new Oe;function Ri(e,t){return jo.run(e,t)}s(Ri,"runWithProviderRequestAttribution");function Fo(){return jo.getStore()}s(Fo,"currentProviderRequestAttribution");var Tn=new Oe;function Mi(e,t){return Tn.run(e,t)}s(Mi,"runWithProviderRequestRoute");function Ai(e,t){return Pn.run(e,t)}s(Ai,"runWithProviderRequestAbortSignal");function Bo(){return Pn.getStore()}s(Bo,"currentProviderRequestAbortSignal");function Ii(e,t){return me.run(e,t)}s(Ii,"runWithProviderRequestObserver");async function Ko(e,t,n,o=!1){let r=me.getStore();if(!r)return n();let i=Ot.getStore();i?.operationFact&&i.attempts===0&&o&&(i.operationFact={...i.operationFact,model:t,wireObservation:"pending"},r(i.operationFact));let a={provider:e,model:t};try{let u=await No.run(a,n);return ke(a,u),u}catch(u){throw ke(a,void 0,u),u}}s(Ko,"observeProviderAttempt");function Uo(e){let t=e!==null&&typeof e=="object"&&"usage"in e?e.usage:void 0;return t!==null&&typeof t=="object"&&"inputTokens"in t&&"outputTokens"in t?t:void 0}s(Uo,"usageFrom");function ke(e,t,n){if(!e.current||e.current.state!=="started")return;let o=Ot.getStore()?.signal?.aborted||Pn.getStore()?.aborted||n instanceof Error&&n.name==="AbortError";e.current={...e.current,state:n===void 0?"succeeded":o?"cancelled":"failed",endedAt:new Date().toISOString(),usage:Uo(t)},me.getStore()?.(e.current)}s(ke,"finishWire");function Dt(e){return async(t,n)=>{let o=me.getStore(),r=Ot.getStore();if(!o||!r)return e(t,n);let i=No.getStore()??(r.wire??={provider:r.provider});i.current?.state==="started"&&ke(i,void 0,new Error("Provider request replaced.")),r.attempts+=1,i.current={requestId:r.attempts===1&&r.operationFact?r.operationFact.requestId:`physical_${wn()}`,logicalRequestId:r.logicalRequestId,provider:i.provider,model:i.model,purpose:r.purpose,attribution:r.attribution,route:Tn.getStore(),attempt:r.attempts,boundary:"physical_attempt",wireObservation:"observed",dispatch:"dispatched",state:"started",startedAt:new Date().toISOString()},o(i.current);try{let a=await e(t,n);return a.ok||ke(i,void 0,new Error("Provider HTTP request failed.")),a}catch(a){throw ke(i,void 0,a),a}}}s(Dt,"observeProviderFetch");async function Wo(e,t,n,o,r,i){if(!me.getStore())return o();let a={provider:e,purpose:t,attribution:n,logicalRequestId:r??`logical_${wn()}`,attempts:0,signal:i};return Ot.run(a,async()=>{let u=new Date().toISOString();a.operationFact={requestId:`request_${wn()}`,logicalRequestId:a.logicalRequestId,provider:e,purpose:t,attribution:n,route:Tn.getStore(),attempt:1,boundary:"provider_operation",wireObservation:"unavailable",dispatch:"unknown",state:"started",startedAt:u},me.getStore()(a.operationFact);try{let c=await o();return a.wire&&ke(a.wire,c),a.attempts===0&&me.getStore()({...a.operationFact,state:"succeeded",endedAt:new Date().toISOString(),usage:Uo(c)}),c}catch(c){throw a.wire&&ke(a.wire,void 0,c),a.attempts===0&&me.getStore()({...a.operationFact,state:i?.aborted?"cancelled":"failed",endedAt:new Date().toISOString()}),c}})}s(Wo,"observeProviderOperation");import{createHash as Oi}from"node:crypto";var ot=new WeakMap,Di=s(e=>ot.get(e),"getRejectedImageHash");function rt(e,t){let n=ot.get(e);return n&&ot.set(t,n),t}s(rt,"inheritRejectedImage");function zo(e,t=0){if(!e||typeof e!="object"||t>3)return"";let n=e;return[n.message,n.param].filter(o=>typeof o=="string").join(" ").slice(0,8192)+zo(n.error,t+1)}s(zo,"details");function Li(e){if(!e||typeof e!="object")return;let t=e,n=t.source,o=t.image_url,r=t.type==="image"&&n?.type==="base64"?n.data:t.type==="image_url"?o?.url?.match(/^data:image\/[^;]+;base64,(.*)$/)?.[1]:void 0;if(typeof r=="string")return Oi("sha256").update(Buffer.from(r,"base64")).digest("hex")}s(Li,"imageHash");function De(e,t){if(!e||typeof e!="object")return;ot.delete(e);let n=zo(e);if(!/image|图片/i.test(n)||!/decod|invalid|unsupported|format|解析|格式|尺寸/i.test(n))return;let o=n.match(/messages(?:\[\d+\]|\.\d+)(?:\.(?:content|source|image_url|url|data)(?:\[\d+\]|\.\d+)*)+/g)??[],r=new Set;for(let i of o){let a=t,u;for(let c of i.replace(/\[(\d+)\]/g,".$1").split(".")){if(!a||typeof a!="object"||!Object.hasOwn(a,c)){u=void 0;break}a=a[c],u=Li(a)??u}if(!u)return;r.add(u)}r.size===1&&ot.set(e,[...r][0])}s(De,"recordRejectedImage");import{AsyncLocalStorage as $i}from"node:async_hooks";var J=new $i,_n=new WeakMap;function Ni(e,t,n){if(!e||!t)throw new Error("Provider credential scope requires non-empty values.");let o=!0,r={kind:"exact",provider:e,credential:t,isActive:s(()=>o,"isActive")};try{let i=J.run(r,n);return Hi(i)?Promise.resolve(i).finally(()=>{o=!1}):(o=!1,i)}catch(i){throw o=!1,i}}s(Ni,"runWithProviderCredential");function ji(e){let t=Xo(e.allowedProviders),n={kind:"lease",allowedProviders:new Set(t),access:e,controller:new AbortController},o={allowedProviders:t,close(r="credential operation completed"){n.controller.signal.aborted||n.controller.abort(new Error(r))}};return _n.set(o,n),o}s(ji,"createProviderCredentialLeaseScope");function Fi(e,t){let n=_n.get(e);if(!n)throw new Error("Unknown provider credential lease scope.");return J.run(n,t)}s(Fi,"runWithProviderCredentialLeaseScope");function Bi(e){return J.run({kind:"deny"},e)}s(Bi,"runWithoutProviderCredentialScope");function Ki(e,t){let n=J.getStore(),o=n?.kind==="lease"?n:n?.kind==="exact"?n.parentLease:void 0;if(!o)return;Lt(o);let r=Xo(e,!0);for(let u of r)if(!o.allowedProviders.has(u))throw new Error(`Parent credential scope does not allow provider ${u}.`);let i={kind:"lease",allowedProviders:new Set(r),access:o.access,controller:new AbortController,parent:o,...t===void 0?{}:{attribution:t}},a={allowedProviders:r,close(u="derived credential operation completed"){i.controller.signal.aborted||i.controller.abort(new Error(u))}};return _n.set(a,i),a}s(Ki,"deriveCurrentProviderCredentialLeaseScope");function Ui(){let e=J.getStore(),t=e?.kind==="lease"?e:e?.kind==="exact"?e.parentLease:void 0;if(t)return Lt(t),Object.freeze([...t.allowedProviders])}s(Ui,"currentProviderCredentialLeaseProviders");async function ie(e,t,n,o,r){let i=Bo();i&&(n=n===void 0?i:AbortSignal.any([n,i])),n?.throwIfAborted();let a=J.getStore(),u=a?.kind==="lease"?a:a?.kind==="exact"?a.parentLease:void 0;return Wo(e,t,Fo()??u?.attribution,()=>Wi(e,t,n,o),r,n)}s(ie,"withProviderRequestCredential");async function Wi(e,t,n,o){let r=J.getStore();if(!r)return o(n);if(r.kind==="deny")throw new Error(`Provider credential scope does not allow provider ${e}.`);if(r.kind==="exact"&&r.provider===e){if(!r.isActive())throw Ho();return o(n)}let i=r.kind==="lease"?r:r.parentLease;if(!i)throw new Error(`Provider credential scope does not allow provider ${e}.`);if(Lt(i),!i.allowedProviders.has(e))throw new Error(`Provider credential scope does not allow provider ${e}.`);let a=new AbortController,u=Xi([n,a.signal,i.controller.signal,i.access.signal]),c=await i.access.acquire(e,t,u,i.attribution);if(Lt(i),!c)throw new Error("Provider credential broker returned no credential.");let d={kind:"exact",provider:e,credential:c,parentLease:i,isActive:s(()=>!a.signal.aborted&&it(i),"isActive")};try{return await J.run(d,async()=>{try{return await o(u)}catch(f){throw st(f,c,new WeakMap)}})}finally{a.abort(new Error("provider request completed"))}}s(Wi,"withProviderRequestCredentialInternal");function zi(e){let t=J.getStore();return t?.kind==="exact"&&t.provider===e&&t.isActive()?t.credential:void 0}s(zi,"getScopedProviderCredential");function xe(e){let t=J.getStore();if(t)return t.kind==="deny"?!1:t.kind==="exact"?t.provider===e?t.isActive():t.parentLease===void 0?!1:it(t.parentLease)&&t.parentLease.allowedProviders.has(e):it(t)&&t.allowedProviders.has(e)}s(xe,"hasScopedProviderCredentialAuthority");function we(){return J.getStore()!==void 0}s(we,"hasProviderCredentialContext");function Le(e,t){let n=J.getStore();if(!n)return t;if(!(n.kind!=="exact"||!n.isActive()))return n.provider===e?n.credential:void 0}s(Le,"resolveProviderCredential");function Cn(e){let t=J.getStore(),n=t?.kind==="exact"&&t.isActive()?t.credential:void 0;return n?st(e,n,new WeakMap):e}s(Cn,"redactScopedProviderCredential");function Xo(e,t=!1){let n=e.map(o=>o.trim());if(!t&&n.length===0||n.some(o=>o.length===0)||new Set(n).size!==n.length)throw new Error("Provider credential lease scope requires non-empty, unique Providers.");return Object.freeze(n)}s(Xo,"normalizeAllowedProviders");function it(e){return!e.controller.signal.aborted&&e.access.signal?.aborted!==!0&&(e.access.isActive?.()??!0)&&(e.parent===void 0||it(e.parent))}s(it,"isLeaseActive");function Lt(e){if(!it(e))throw Ho()}s(Lt,"assertLeaseActive");function Ho(){return new Error("Provider credential lease scope is no longer active.")}s(Ho,"inactiveCredentialScopeError");function Xi(e){let t=e.filter(n=>n!==void 0);return t.length===1?t[0]:AbortSignal.any(t)}s(Xi,"combineAbortSignals");function Hi(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}s(Hi,"isPromiseLike");function Vi(e,t,n){let o=e instanceof DOMException?new DOMException(e.message.split(t).join("[REDACTED_CREDENTIAL]"),e.name.split(t).join("[REDACTED_CREDENTIAL]")):new Error;Object.setPrototypeOf(o,Object.getPrototypeOf(e));let r=Object.getOwnPropertyDescriptor(o,"stack")?.get;delete o.stack,n.set(e,o);for(let i of Reflect.ownKeys(e)){let a=Object.getOwnPropertyDescriptor(e,i);if(i==="stack"&&a?.get&&a.get===r&&(a={configurable:a.configurable,enumerable:a.enumerable,writable:!0,value:e.stack}),a===void 0||!("value"in a))continue;let u=typeof i=="string"?i.split(t).join("[REDACTED_CREDENTIAL]"):i;Object.prototype.hasOwnProperty.call(o,u)||Object.defineProperty(o,u,{...a,value:st(a.value,t,n)})}return rt(e,o)}s(Vi,"redactCredentialError");function st(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let o=n.get(e);if(o!==void 0)return o;if(e instanceof Error)return Vi(e,t,n);if(Array.isArray(e)){let i=[];n.set(e,i);for(let a of e)i.push(st(a,t,n));return i}let r={};n.set(e,r);for(let[i,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let u=i.split(t).join("[REDACTED_CREDENTIAL]");r[u]=st(a.value,t,n)}return r}s(st,"redactCredentialValue");var le=class extends Error{static{s(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}},I=class extends le{static{s(this,"KodaXProviderError")}provider;metadata;constructor(t,n,o){super(t,"PROVIDER_ERROR"),this.provider=n,this.metadata=o,this.name="KodaXProviderError"}},$e=class extends I{static{s(this,"KodaXContextOverflowError")}capacity;requestInputReliefTokens=0;constructor(t,n,o){super("Provider request exceeded its context capacity.",n,o),this.capacity=t,this.name="KodaXContextOverflowError"}},at=class extends le{static{s(this,"KodaXRateLimitError")}retryAfter;metadata;constructor(t,n,o){super(t,"RATE_LIMIT_ERROR"),this.retryAfter=n,this.metadata=o,this.name="KodaXRateLimitError"}},ut=class extends le{static{s(this,"KodaXNetworkError")}isTimeout;constructor(t,n=!1){super(t,"NETWORK_ERROR"),this.isTimeout=n,this.name="KodaXNetworkError"}},ct=class extends I{static{s(this,"KodaXReasoningEffortRejectedError")}rejectedEffort;model;constructor(t,n,o,r){super(t,n),this.rejectedEffort=o,this.model=r,this.name="KodaXReasoningEffortRejectedError"}},Sn=class extends le{static{s(this,"KodaXToolCallIdError")}constructor(t){super(t,"TOOL_CALL_ID_ERROR"),this.name="KodaXToolCallIdError"}};var Rn=32768,qi=32e3,Gi=64e3,dt="[Tool Error] No result was recorded for this tool call \u2014 its execution status is unknown (the turn may have been cancelled or the provider switched mid-run). Check whether the tool already produced side effects (files written, commits made) before re-issuing it.",Ji=.5;function lt(e,t,n={}){if(e===void 0)return;let o=n.allowZero===!0;if(!Number.isFinite(e)||(o?e<0:e<=0)){let r=o?"a non-negative finite number":"a positive finite number";throw new Error(`${t} must be ${r}`)}return e===0?0:Math.max(1,Math.floor(e*1e3))}s(lt,"timeoutSecToMs");function Yi(e){if(e===void 0||e.trim().length===0)return;let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.max(1,Math.floor(t*1e3))}s(Yi,"parseTimeoutSecEnvMs");function Qi(e){if(!e)return;let t={requestTimeoutMs:lt(e.requestTimeoutSec,"timeouts.llm.requestTimeoutSec"),streamIdleTimeoutMs:lt(e.streamIdleTimeoutSec,"timeouts.llm.streamIdleTimeoutSec",{allowZero:!0}),chunkTimeoutMs:lt(e.chunkTimeoutSec,"timeouts.llm.chunkTimeoutSec"),maxRetryDelayMs:lt(e.maxRetryDelaySec,"timeouts.llm.maxRetryDelaySec")};return Object.values(t).some(o=>o!==void 0)?t:void 0}s(Qi,"resolveLlmTimeoutConfig");function $t(e,t){return`${e}/${t??""}`}s($t,"capabilityCacheKey");function Mn(e,t){if(t.length===0)return e;let n=new Set(t),o=e.defaultEffort!==void 0&&n.has(e.defaultEffort);return{...e,...o?{defaultEffort:void 0}:{},supportedEfforts:e.supportedEfforts?.filter(r=>!n.has(r.value)),localRejectEfforts:Array.from(new Set([...e.localRejectEfforts??[],...t]))}}s(Mn,"narrowReasoningProfile");function An(e,t,n){return e[$t(t,n)]?.rejected??[]}s(An,"getRejectedEfforts");function In(e,t,n,o,r,i){let a=$t(t,n),u=e[a],c=u?.rejected.includes(o)?u.rejected:[...u?.rejected??[],o];return{...e,[a]:{rejected:c,source:r,updatedAt:i}}}s(In,"addRejectedEffort");function Zi(e,t,n){if(!t)return{};let o={...e};return delete o[$t(t,n)],o}s(Zi,"removeCacheEntry");function es(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(!o||typeof o!="object")continue;let r=o,i=Array.isArray(r.rejected)?r.rejected.filter(c=>typeof c=="string"):[],a=r.source==="probed"?"probed":"observed",u=typeof r.updatedAt=="string"?r.updatedAt:"";t[n]={rejected:i,source:a,updatedAt:u}}return t}s(es,"sanitizeCapabilityCache");var On=["max","xhigh","high","medium","low","minimal"];function Ne(e,t="auto"){if(e.effortStrategy==="none"||e.effortStrategy==="prompt-only")return[void 0];let n=s(d=>e.effortAliases?.[d]??d,"alias"),o=e.supportedEfforts?.map(d=>n(d.value)),r=On.filter(d=>!e.disabledEfforts?.includes(d)&&(!o||o.includes(d))),i=t==="auto"?e.defaultEffort??e.supportedEfforts?.find(d=>d.isDefault)?.value??"max":t,a=n(i),c=i==="none"||e.disabledEfforts?.includes(i)?[...e.supportsDisabledThinking===!1?[]:["none"],...r.slice().reverse()]:[a,...r.filter(d=>On.indexOf(d)>On.indexOf(a))];return[...new Set(c.filter(d=>!e.localRejectEfforts?.includes(d)&&(d==="none"||!o||o.includes(d)||e.allowCustomEffort))),void 0]}s(Ne,"buildReasoningEffortLadder");function he(e){return e?.effortStrategy==="openai-chat-effort"||e?.effortStrategy==="openai-responses-effort"}s(he,"usesReasoningEffortLadder");var ts=["off","auto","quick","balanced","deep"],Fe=["auto","none","low","medium","high"],Vo={low:6e3,medium:1e4,high:2e4},qo=4096,Dn=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Enable thinking"},{value:"medium",description:"Enable thinking",isDefault:!0},{value:"high",description:"Enable thinking"},{value:"xhigh",description:"Enable thinking"},{value:"max",description:"Enable thinking"}],Ln=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Alias to high"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning",isDefault:!0},{value:"xhigh",description:"Alias to max"},{value:"max",description:"Maximum reasoning"}],ns=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Low reasoning"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning",isDefault:!0},{value:"xhigh",description:"Alias to high"},{value:"max",description:"Maximum reasoning"}],os=[{value:"low",description:"Thinking is always on"},{value:"medium",description:"Thinking is always on"},{value:"high",description:"Thinking is always on",isDefault:!0},{value:"xhigh",description:"Thinking is always on"},{value:"max",description:"Thinking is always on"}];function Nt(e,t={}){return{...rs(e),...t,reasoningPreset:e}}s(Nt,"createReasoningProfileFromPreset");function rs(e){switch(e){case"zai-glm-5.3":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:[{value:"none",description:"Maps to low reasoning"},{value:"minimal",description:"Alias to low",isUserVisible:!1},{value:"low",description:"Low reasoning"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning"},{value:"xhigh",description:"Alias to max"},{value:"max",description:"Maximum reasoning",isDefault:!0}],effortAliases:{none:"low",minimal:"low",minimum:"low",light:"low",medium:"high",xhigh:"max",ultra:"max"},disabledEfforts:["none"],supportsReasoningEffort:!0,supportsDisabledThinking:!1};case"zai-glm-5.2":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-flash-openai":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:ns,effortAliases:{medium:"high",xhigh:"high"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-openai":case"deepseek-v4-pro-openai":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-anthropic":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"zai-glm-toggle":case"deepseek-toggle":case"kimi-hybrid-toggle":case"mimo-v2.5-toggle":case"generic-thinking-toggle":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",supportedEfforts:Dn,disabledEfforts:["none","minimal"],supportsDisabledThinking:!0};case"kimi-k3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:[{value:"none",description:"Disable thinking"},{value:"low",description:"Low thinking effort"},{value:"high",description:"High thinking effort",isDefault:!0},{value:"max",description:"Maximum thinking effort"}],effortAliases:{minimal:"low",minimum:"low",light:"low",medium:"high",xhigh:"max",ultra:"max"},disabledEfforts:["none"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"kimi-k2.7-code":case"minimax-m2-always":return{reasoningPreset:e,effortStrategy:"prompt-only",defaultEffort:"high",supportedEfforts:os,localRejectEfforts:["none","minimal"]};case"minimax-m3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"anthropic-adaptive",supportedEfforts:Dn,disabledEfforts:["none","minimal"],supportsAdaptiveThinking:!0,supportsDisabledThinking:!0};case"qwen-hybrid-thinking":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"provider-budget",defaultEffort:"medium",supportedEfforts:Dn,budgetByEffort:{low:6e3,medium:1e4,high:16e3,xhigh:24e3,max:32e3},disabledEfforts:["none","minimal"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"claude-adaptive-xhigh":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"xhigh"},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"claude-adaptive-max":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"anthropic-budget":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"anthropic-budget",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"}],budgetByEffort:{low:6e3,medium:1e4,high:16e3},disabledEfforts:["none"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"openai-chat-reasoning":case"openai-responses-reasoning":return{reasoningPreset:e,effortStrategy:e==="openai-chat-reasoning"?"openai-chat-effort":"openai-responses-effort",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],disabledEfforts:["none"],supportsReasoningEffort:!0,supportsReasoningSummary:!0,supportsEncryptedReasoningReplay:!0};case"codex-cli-effort":return{reasoningPreset:e,effortStrategy:"codex-cli-config",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],allowCustomEffort:!0,supportsReasoningEffort:!0};case"none":return{reasoningPreset:e,effortStrategy:"none",thinkingStrategy:"none"}}}s(rs,"createBaseReasoningProfileFromPreset");function Nn(e){return e.reasoningCapability?e.reasoningCapability:e.supportsThinking?"native-toggle":"prompt-only"}s(Nn,"getReasoningCapability");function jn(e){return jt(e).enabled}s(jn,"isReasoningEnabled");function jt(e){if(typeof e=="boolean")return{enabled:e,effort:e?"auto":"none",effortSource:"legacy",taskType:"unknown",executionMode:"implementation"};let t=e?.effort?mt(e.effort):void 0,n=t??(e?.enabled===!0?"auto":"none");return{enabled:n!=="none",effort:n,effortSource:t!==void 0?"explicit":e===void 0?"omitted":"legacy",taskType:e?.taskType??"unknown",executionMode:e?.executionMode??"implementation"}}s(jt,"normalizeReasoningRequest");function mt(e){let t=e.trim().toLowerCase();if(!t)throw new Error("Reasoning effort cannot be empty.");if(/\s/.test(t))throw new Error(`Reasoning effort cannot contain whitespace: "${e}".`);return t==="off"?"none":t}s(mt,"normalizeReasoningEffortValue");function Go(e){switch(e){case"off":return"none";case"auto":return"auto";case"quick":return"low";case"balanced":return"medium";case"deep":return"high"}}s(Go,"mapLegacyReasoningModeToEffortIntent");function is(e){switch(e){case"none":return"off";case"auto":return"auto";case"low":return"quick";case"medium":return"balanced";case"high":return"deep";default:return}}s(is,"effortToLegacyReasoningMode");function Jo(e){let t=e?.trim();if(!t)return{kind:"unset"};let n=mt(t);return n==="auto"||n==="unset"?{kind:"clear"}:{kind:"value",value:n}}s(Jo,"parseReasoningEffortEnv");function ht(e){let t=Jo(e.envEffort),n=[];if(ft(n,e.explicitEffort,"explicit",!0),t.kind==="value"&&n.push({value:t.value,source:"env",isExplicit:!0}),ft(n,e.sessionEffort,"session",!1),e.legacyReasoningMode?n.push({value:Go(e.legacyReasoningMode),source:"legacy",isExplicit:!1}):e.thinking!==void 0&&n.push({value:e.thinking?"auto":"none",source:"legacy",isExplicit:!1}),he(e.capability)){let i=n[0]??{value:"auto",source:"fallback",isExplicit:!1},a={...e.capability,defaultEffort:e.modelDefaultEffort??e.capability.defaultEffort??je(e.capability)??e.providerDefaultEffort??e.fallbackEffort},u=Ne(a,i.value)[0];return{configuredEffort:i.value,effectiveEffort:u,source:i.source,isExplicit:i.isExplicit,diagnostics:[]}}ft(n,e.modelDefaultEffort??e.capability?.defaultEffort??je(e.capability),"model-default",!1),ft(n,e.providerDefaultEffort,"provider-default",!1),ft(n,e.fallbackEffort??gt(e.capability),"fallback",!1);let o=n[0]??{value:"none",source:"fallback",isExplicit:!1};if(o.value==="auto")return{configuredEffort:"auto",effectiveEffort:as(n.slice(1),e.capability),source:o.source,isExplicit:o.isExplicit,diagnostics:[]};let r=Yo(o.value,e.capability,o.isExplicit);return{configuredEffort:o.value,effectiveEffort:r,source:o.source,isExplicit:o.isExplicit,diagnostics:[]}}s(ht,"resolveReasoningEffort");function ss(e){let t=e.currentEffort?mt(e.currentEffort):void 0;if(t&&Qo(t,e.capability))return{effectiveEffort:pt(t,e.capability),preserved:!0};let n=e.capability?.defaultEffort??je(e.capability)??$n(e.capability)??gt(e.capability),o=n&&pt(n,e.capability);return t?{effectiveEffort:o,preserved:!1,diagnostic:o?`Effort ${t} is not supported by the selected model; using ${o}.`:`Effort ${t} is not supported by the selected model; clearing effort.`}:{effectiveEffort:o,preserved:!1}}s(ss,"resolveReasoningEffortForModelSwitch");function ft(e,t,n,o){if(t===void 0)return;let r=mt(t);e.push({value:r,source:n,isExplicit:o})}s(ft,"pushEffortCandidate");function as(e,t){let n=e.find(o=>o.value!=="auto");return n?Yo(n.value,t,n.isExplicit):je(t)??gt(t)}s(as,"resolveAutoEffectiveEffort");function Yo(e,t,n){if(t?.localRejectEfforts?.includes(e)){if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return je(t)??$n(t)??gt(t)??e}if(e==="none")return t?.supportsDisabledThinking===!1?pt(e,t):e;if(Qo(e,t))return pt(e,t);if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return je(t)??$n(t)??gt(t)??e}s(Yo,"validateReasoningEffort");function pt(e,t){return t?.effortAliases?.[e]??e}s(pt,"applyEffortAlias");function Qo(e,t){if(t?.localRejectEfforts?.includes(e))return!1;if(e==="auto"||e==="none"||t?.allowCustomEffort===!0)return!0;let n=us(t);return n.length===0?Fe.includes(e):n.includes(e)||n.includes(pt(e,t))}s(Qo,"isSupportedReasoningEffort");function us(e){return e?.supportedEfforts?.map(t=>t.value)??[]}s(us,"getSupportedEffortValues");function je(e){return e?.supportedEfforts?.find(t=>t.isDefault)?.value}s(je,"getDefaultPresetValue");function $n(e){let t=e?.supportedEfforts?.filter(cs).map(n=>n.value);if(!(!t||t.length===0))return t[Math.floor((t.length-1)/2)]}s($n,"getMiddleVisiblePresetValue");function cs(e){return e.isUserVisible!==!1}s(cs,"isUserVisiblePreset");function gt(e){if(!e||e.effortStrategy==="none"||e.effortStrategy==="prompt-only")return"none";if(!(e.effortStrategy==="anthropic-output-effort"&&e.thinkingStrategy==="anthropic-adaptive"))return"medium"}s(gt,"getFallbackEffortForCapability");function ds(e){switch(e){case"quick":return"low";case"balanced":case"auto":return"medium";case"deep":return"high";default:return"off"}}s(ds,"getDefaultThinkingDepthForMode");function Pe(e){switch(e){case"none":return"off";case"low":return"low";case void 0:case"medium":case"auto":return"medium";default:return"high"}}s(Pe,"effortToThinkingDepth");function Te(e,t,n="unknown"){if(t==="off")return 0;let o={...Vo,...e.defaultThinkingBudgets??{}},i=e.taskBudgetOverrides?.[n]?.[t]??o[t];return e.thinkingBudgetCap?Math.min(i,e.thinkingBudgetCap):i}s(Te,"resolveThinkingBudget");function _e(e,t,n=qo){let o=Math.max(1024,t-n);return Math.max(1024,Math.min(e,o))}s(_e,"clampThinkingBudget");function Fn(e){switch(e){case"low":return"low";case"medium":return"medium";case"high":return"high";default:return}}s(Fn,"mapDepthToOpenAIReasoningEffort");import{AsyncLocalStorage as xs}from"node:async_hooks";function Ce(e){let t=Number(e?.replace(/,/g,""));return Number.isSafeInteger(t)&&t>0?t:void 0}s(Ce,"tokens");function Bn(e){let t=/maximum context length is\s*(\d[\d,]*)\s*tokens/i.exec(e),n=/your prompt contains\s+(at least\s+)?(\d[\d,]*)\s+input tokens/i.exec(e);if(t&&n)return{contextWindow:Ce(t[1]),inputTokens:Ce(n[2]),inputTokensKind:n[1]?"lower_bound":"exact"};if(/upper bound|at least/i.test(e))return{contextWindow:Ce(t?.[1]),inputTokensKind:"unknown"};let o=/Input length\s*\((\d[\d,]*)\).*?maximum context length\s*\((\d[\d,]*)\)/i.exec(e)??/prompt (?:is )?too long:\s*(\d[\d,]*)\s*tokens?\s*>\s*(\d[\d,]*)/i.exec(e)??/exceeds?\s+(\d[\d,]*)\s*tokens?\s*上限\s*(\d[\d,]*)/i.exec(e);if(o)return{inputTokens:Ce(o[1]),contextWindow:Ce(o[2]),inputTokensKind:"exact"};let r=/\((\d[\d,]*)\s+in (?:your|the) (?:prompt|messages)/i.exec(e);return{contextWindow:Ce(t?.[1]),inputTokens:Ce(r?.[1]),inputTokensKind:r?"exact":"unknown"}}s(Bn,"parseContextOverflowFacts");function Zo(e){if(!e||typeof e!="object")return;let t=e,n=t.status??t.statusCode??t.code;return typeof n=="number"&&Number.isInteger(n)?n:typeof n=="string"&&/^\d{3}$/.test(n)?Number(n):Zo(t.cause)}s(Zo,"getStatus");function ls(e){if(e instanceof Error)return e.message.toLowerCase();if(typeof e=="string")return e.toLowerCase();if(e&&typeof e=="object"){let t=e;return[t.message,t.error,t.detail,t.body].filter(o=>typeof o=="string").join(" ").toLowerCase()}return""}s(ls,"getMessage");var fs=["reasoning_effort","reasoning effort","reasoninglevel","reasoning_level","reasoning.effort","thinking.effort","thinking.type"],ps=["unsupported","not supported","invalid","does not support","is not one of","not allowed","unknown","unexpected","unrecognized"],gs=["minimal","none","low","medium","high","xhigh","max"];function ms(e){let t=`(?:${fs.map(u=>u.replaceAll(".","\\.")).join("|")})`,n=`(?:${ps.join("|")})`,o="['\"`][^'\"`\\n]{0,80}['\"`]",r="[\\s'\"`:]",i=`(?:${r}|\\b(?:value|parameter|field|for|of|the)\\b|${o})*`,a=`(?:${r}|\\b(?:value|parameter|is)\\b|${o})*`;return new RegExp(`${n}${i}${t}\\b|${t}${a}${n}`).test(e)}s(ms,"namesRejectedEffort");function hs(e,t){if(t!==void 0)return t;for(let n of gs)if(new RegExp(`['"\`]${n}['"\`]`).test(e))return n;return t}s(hs,"extractRejectedEffort");function Be(e,t){let n=Zo(e);if(n!==400&&n!==422)return null;let o=ls(e);if(!o)return null;let r=/(?:unknown|unrecognized|unexpected|unsupported|not supported)\s+(?:parameter|field|argument)s?\s*:?\s*['"`]*(reasoning_effort|reasoning\b|thinking\b|enable_thinking|thinking_budget|budget_tokens)/.exec(o)?.[1]??/\b(enable_thinking|thinking_budget|budget_tokens)\b['"`]*\s+(?:is\s+)?(?:unsupported|not supported)/.exec(o)?.[1]??/does not support\s+(?:the\s+)?['"`]*(reasoning_effort|reasoning|thinking)['"`]*\s+(?:parameter|field)/.exec(o)?.[1];if(r)return{rejectedEffort:t??"*",parameterRejected:!0,parameter:r};if(!ms(o))return null;let i=hs(o,t);return i?{rejectedEffort:i}:null}s(Be,"classifyReasoningEffortRejection");function er(e,t){if(!e)return;if(typeof e.get=="function")return e.get(t)??void 0;let n=e,o=t.toLowerCase(),r=n[t]??n[o]??n[o.replace(/\b\w/g,i=>i.toUpperCase())];if(r!==void 0)return Array.isArray(r)?r[0]:r}s(er,"readHeader");function tr(e){if(!e)return;let t=e.trim();if(t.length===0)return;let n=Number(t);if(!(!Number.isFinite(n)||n<=0))return n}s(tr,"parsePositiveNumber");function ys(e,t){if(!e)return;let n=e.trim();if(n.length===0)return;let o=Date.parse(n);if(!Number.isFinite(o))return;let r=o-t;return r>0?r:void 0}s(ys,"parseHttpDate");function Ft(e,t){let n=t.baseBackoffMs??1e3,o=t.maxBackoffMs??3e4,r=t.maxHeaderWaitMs??12e4,i=t.now?t.now():Date.now(),a=tr(er(e,"retry-after-ms"));if(a!==void 0){let l=Math.min(a,r);return{type:"header",waitMs:Math.round(l),source:"retry-after-ms",cappedFromHeader:l!==a}}let u=er(e,"retry-after");if(u!==void 0&&u.trim().length>0){let l=tr(u);if(l!==void 0){let m=l*1e3,T=Math.min(m,r);return{type:"header",waitMs:Math.round(T),source:"retry-after-seconds",cappedFromHeader:T!==m}}let h=ys(u,i);if(h!==void 0){let m=Math.min(h,r);return{type:"header",waitMs:Math.round(m),source:"retry-after-date",cappedFromHeader:m!==h}}}let c=n*Math.pow(2,Math.max(0,t.attempt)),d=Math.min(c,o),p=t.withJitter!==!1?Math.random()*.25*d:0;return{type:"backoff",waitMs:Math.round(d+p),source:"exponential-backoff",attempt:t.attempt}}s(Ft,"parseRetryAfter");function yt(e){if(!e||typeof e!="object")return;let t=e;return t.headers??t.response?.headers??t.cause?.headers??t.cause?.response?.headers}s(yt,"extractHeadersFromError");import{AsyncLocalStorage as vs}from"node:async_hooks";var nr=new vs,or=8,rr=32;function bs(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}s(bs,"parsePositiveInt");function Es(){let e=vt()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:bs(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??or;return Math.max(1,Math.min(rr,t))}s(Es,"resolveWorkflowMaxConcurrency");function ks(e,t){return nr.run(e,t)}s(ks,"runWithScopedConfig");function vt(){return nr.getStore()}s(vt,"getRunScopedConfig");function se(e){if(e!==void 0)return e;let t=vt()?.disablePromptCache;return t!==void 0?t:process.env.KODAX_DISABLE_PROMPT_CACHE==="1"}s(se,"resolvePromptCacheDisabled");var ae={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},ir={...ae,multimodalSupport:"image-input"},bt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},sr={...bt,multimodalSupport:"image-input"};function Bt(e){return{transport:e.transport,conversationSemantics:e.conversationSemantics,mcpSupport:e.mcpSupport,contextFidelity:e.contextFidelity??"full",toolCallingFidelity:e.toolCallingFidelity??"full",sessionSupport:e.sessionSupport??"full",longRunningSupport:e.longRunningSupport??"full",multimodalSupport:e.multimodalSupport??"none",evidenceSupport:e.evidenceSupport??"full"}}s(Bt,"normalizeCapabilityProfile");function Z(e){return{...Bt(e)}}s(Z,"cloneCapabilityProfile");function ws(e){if(!e)return;let t=parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}s(ws,"parseEnvInt");function Ps(e){switch(e.reasoningPreset){case"zai-glm-5.3":case"zai-glm-5.2":case"deepseek-v4-flash-openai":case"deepseek-v4-pro-openai":case"deepseek-v4-openai":case"deepseek-v4-anthropic":case"qwen-hybrid-thinking":return!0;default:break}return e.effortStrategy==="provider-budget"}s(Ps,"shouldLowerAutoReasoningEffort");function Kt(){return new DOMException("Request aborted","AbortError")}s(Kt,"abortError");async function Ts(e){let[t,n]=await Promise.allSettled([import("@anthropic-ai/sdk"),import("openai")]);return t.status==="fulfilled"&&e instanceof t.value.APIUserAbortError||n.status==="fulfilled"&&e instanceof n.value.APIUserAbortError}s(Ts,"isProviderSdkAbortError");function _s(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(Kt()):new Promise((n,o)=>{let r,i=s(()=>{t&&t.removeEventListener("abort",a)},"cleanup"),a=s(()=>{r&&clearTimeout(r),i(),o(Kt())},"onAbort");t&&t.addEventListener("abort",a,{once:!0}),r=setTimeout(()=>{i(),n()},e)})}s(_s,"waitForRetryDelay");function Kn(e){let t=typeof e=="number"&&Number.isInteger(e)?e:typeof e=="string"&&/^\d{3}$/.test(e)?Number(e):void 0;return t!==void 0&&t>=100&&t<=599?t:void 0}s(Kn,"normalizeHttpStatus");function Un(e,t=0){if(!e||typeof e!="object"||t>4)return;let n=e;return Kn(n.status)??Kn(n.statusCode)??Kn(n.code)??Un(n.cause,t+1)}s(Un,"extractHttpStatus");function ar(e,t=0){return!(e instanceof Error)||t>4?!1:e.name==="TimeoutError"||ar(e.cause,t+1)}s(ar,"hasTypedTimeout");function Ut(e,t=0){if(!e||typeof e!="object"||t>4)return"";let n=e;return typeof n.code=="string"?n.code:typeof n.code=="number"&&Number.isSafeInteger(n.code)?String(n.code):Ut(n.cause,t+1)||Ut(n.error,t+1)}s(Ut,"extractErrorCode");function ur(e,t,n=0){if(!e||typeof e!="object"||n>4)return;let o=e;for(let r of t){let i=o[r];if(typeof i=="string"&&/^[\w.:-]{1,200}$/.test(i))return i}return ur(o.cause,t,n+1)}s(ur,"extractDiagnosticString");function Cs(e){let t=ur(e,["requestId","request_id"]);if(t!==void 0)return t;let n=yt(e),o=["x-request-id","request-id","anthropic-request-id","cf-ray"];for(let r of o){let i=n instanceof Headers?n.get(r)??void 0:n?.[r]??n?.[r.replace(/\b\w/g,u=>u.toUpperCase())],a=Array.isArray(i)?i[0]:i;if(typeof a=="string"&&/^[\w.:-]{1,200}$/.test(a))return a}}s(Cs,"extractRequestId");function Ke(e){if(e instanceof Error)return e.message.toLowerCase();if(e&&typeof e=="object"){let t=e.message;if(typeof t=="string")return t.toLowerCase()}return String(e).toLowerCase()}s(Ke,"getErrorMessage");var ue=class{static{s(this,"KodaXBaseProvider")}requestObservationBoundary="provider_operation";activeLegacyRequestOverride=new xs;pendingLegacyMaxOutputTokensOverride;setMaxOutputTokensOverride(t){this.pendingLegacyMaxOutputTokensOverride=t}getEffectiveMaxOutputTokens(t){let n=this.activeLegacyRequestOverride.getStore()?.maxOutputTokensOverride??this.pendingLegacyMaxOutputTokensOverride;if(typeof n=="number"&&Number.isFinite(n)&&n>0)return n;let o=vt()?.maxOutputTokens,r=(typeof o=="number"&&Number.isFinite(o)&&o>0?o:void 0)??ws(process.env.KODAX_MAX_OUTPUT_TOKENS);if(r!==void 0)return r;let i=this.getModelDescriptor(t)?.maxOutputTokens;return i!==void 0?i:this.config.maxOutputTokens??32768}getStreamMaxDurationMs(t){let n=this.getModelDescriptor(t)?.streamMaxDurationMs;return n!==void 0?n:this.config.streamMaxDurationMs}getEffectiveReplayReasoningContent(t){let n=this.getModelDescriptor(t)?.replayReasoningContent;return n!==void 0?n:this.config.replayReasoningContent??!1}getEffectiveStrictThinkingSignature(t){let n=this.getModelDescriptor(t)?.strictThinkingSignature;return n!==void 0?n:this.config.strictThinkingSignature??!1}getProviderSupportsThinking(){return this.config.supportsThinking}getEffectiveThinkingBudgetCap(t){return this.getModelDescriptor(t)?.thinkingBudgetCap??this.config.thinkingBudgetCap}supportsEphemeralSuffix(){return!1}usesPromptCacheAffinity(){return this.config.promptCacheAffinity===!0}supportsNonStreamingFallback(){return!1}async complete(t,n,o,r,i,a){throw new I(`${this.name} does not support non-streaming fallback`,this.name,{failureCode:"protocol_mismatch",stage:"response_stream"})}isConfigured(){let t=xe(this.name);return t!==void 0?t:Le(this.name,process.env[this.config.apiKeyEnv])!==void 0}async verifyCredential(t){return{ok:!1,error:"unsupported",strategy:this.config.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider class "${this.name}" does not implement verifyCredential()`}}getModel(){return this.config.model}getAvailableModels(){return this.config.models?.length?[...new Set([this.config.model,...this.config.models.map(t=>t.id)])]:[this.config.model]}getModelDescriptor(t){let n=t??this.config.model,o=this.config.models?.find(r=>r.id===n);if(o){let r=o.wireModel?this.config.models?.find(i=>i.id===o.wireModel):void 0;return r?{...r,...o}:o}if(n===this.config.model)return{id:this.config.model}}getWireModelId(t){let n=t??this.config.model;return this.getModelDescriptor(n)?.wireModel??n}getWireModel(t){return this.getWireModelId(t)}getBaseUrl(){return this.config.baseUrl}getApiKeyEnv(){return this.config.apiKeyEnv}getCapabilityProfile(){return Z(this.config.capabilityProfile??ae)}getConfiguredReasoningCapability(t){let n=this.getModelDescriptor(t);return n?.reasoningCapability?n.reasoningCapability:Nn(this.config)}getReasoningCapability(t){return this.getConfiguredReasoningCapability(t)}getReasoningProfile(t){return this.getModelDescriptor(t)?.reasoningProfile??this.config.reasoningProfile}shouldFallbackForReasoningError(t,...n){if(Be(t,void 0))return!1;let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase(),i=n.map(u=>u.toLowerCase()).some(u=>o.includes(u)),a=o.includes("parameter")||i;return o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported")&&a}shouldFallbackForSpecificReasoningError(t,...n){let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.map(a=>a.toLowerCase()).some(a=>o.includes(a))?o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported"):!1}shouldFallbackForForcedToolChoiceError(t){let n=Ke(t);return(n.includes("tool_choice")||n.includes("tool choice")||n.includes("toolchoice"))&&(n.includes("unknown parameter")||n.includes("invalid parameter")||n.includes("unsupported")||n.includes("incompatible"))?!0:this.isServerError(t)}isServerError(t){let n=Un(t);if(n!==void 0&&n>=500&&n<=599)return!0;let o=Ke(t);return o.includes("internal server error")||o.includes("server error")}getReasoningFallbackChain(t){switch(t){case"native-budget":return["native-budget","native-toggle","none"];case"native-effort":return["native-effort","none"];case"native-adaptive":return["native-adaptive","none"];case"native-toggle":return["native-toggle","none"];default:return["none"]}}getContextWindow(){return this.getEffectiveContextWindow()}getEffectiveContextWindow(t){let n=this.getModelDescriptor(t)?.contextWindow;return n!==void 0?n:this.config.contextWindow??2e5}getApiKey(){let t=Le(this.name,process.env[this.config.apiKeyEnv]);if(!t)throw new Error(`${this.config.apiKeyEnv} not set`);return t}shouldLogStreamDiagnostics(){return!!process.env.KODAX_DEBUG_STREAM}logStreamDiagnostic(...t){this.shouldLogStreamDiagnostics()&&console.error(...t)}normalizeReasoning(t){return jt(t)}validateExplicitReasoningEffort(t,n){if(t.effortSource!=="explicit")return;let o=t.effort;if(!o||o==="auto")return;let r=Fe.includes(o),i=this.getReasoningProfile(n);if(!i){if(o==="none"||r)return;let f=n?`/${n}`:"";throw new I(`${this.name}${f} does not advertise provider-specific reasoning effort "${o}". Supported stable efforts: ${Fe.join(", ")}.`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(i.localRejectEfforts?.includes(o)){let f=n?`/${n}`:"";throw new I(`${this.name}${f} does not support reasoning effort "${o}".`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(o==="none"||i.disabledEfforts?.includes(o)||i.allowCustomEffort)return;let a=i.supportedEfforts?.map(f=>f.value)??[],u=i.effortAliases?.[o]??o;if(a.includes(o)||a.includes(u)||a.length===0&&r)return;let c=n?`/${n}`:"",d=a.length>0?a.join(", "):Fe.join(", ");throw new I(`${this.name}${c} does not support reasoning effort "${o}". Supported efforts: ${d}.`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}resolveReasoningProfileIntent(t,n,o){let r=t.effort;if(r&&n.localRejectEfforts?.includes(r)){if(t.effortSource==="explicit"){let i=o?`/${o}`:"";throw new I(`${this.name}${i} does not support reasoning effort "${r}".`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(n.defaultEffort)return{disabled:!1,effort:n.defaultEffort,requestedEffort:r}}if(!t.enabled||r==="none"||r!==void 0&&n.disabledEfforts?.includes(r))return{disabled:!0,requestedEffort:r};if(!r||r==="auto"){if(Ps(n)){let i=ht({capability:n,explicitEffort:r??"auto"}).effectiveEffort;return i==="none"||i!==void 0&&n.disabledEfforts?.includes(i)?{disabled:!0,effort:i,requestedEffort:r}:{disabled:!1,effort:i,requestedEffort:r}}return{disabled:!1,requestedEffort:r}}return{disabled:!1,effort:n.effortAliases?.[r]??r,requestedEffort:r}}onStaleConnection(){}isRateLimitError(t){if(!(t instanceof Error))return!1;let n=t.message.toLowerCase();return["rate","limit","\u901F\u7387","\u9891\u7387","1302","429","too many","overload","overwhelmed","503","529","busy"].some(o=>n.includes(o))}classifyRateLimitReason(t){let n=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.includes("overload")||n.includes("overwhelmed")||n.includes("503")||n.includes("529")||n.includes("busy")?"overloaded":"rate-limit"}extractRetryAfterMs(t){let n=yt(t);if(!n)return;let o=Ft(n,{attempt:0,withJitter:!1});return o.type==="header"?o.waitMs:void 0}providerErrorMetadata(t){let n=Un(t),o=Ut(t),r=Cs(t),i=this.extractRetryAfterMs(t);return{stage:"transport",...n!==void 0?{httpStatus:n}:{},...o!==""&&/^[\w.:-]{1,200}$/.test(o)?{upstreamCode:o}:{},...r!==void 0?{requestId:r}:{},...i!==void 0?{retryAfterMs:i}:{}}}parseContextOverflow(t){let n=Bn(Ke(t));if(n.inputTokensKind!=="exact"||n.inputTokens===void 0||n.contextWindow===void 0)return;let o=n.contextWindow-n.inputTokens-1e3;return o>=3e3?o:void 0}isContextOverflowError(t){let n=Ke(t).toLowerCase();return n.includes("prompt is too long")||n.includes("prompt too long")||n.includes("context length")||n.includes("context_length_exceeded")||n.includes("context window")||n.includes("context limit")||n.includes("\u4E0A\u4E0B\u6587\u957F\u5EA6")}async withRateLimit(t,n,o=3,r,i,a){let u=!1,c=this.pendingLegacyMaxOutputTokensOverride;this.pendingLegacyMaxOutputTokensOverride=void 0;let d={...c===void 0?{}:{maxOutputTokensOverride:c},suppressReasoningEffort:!1};for(let f=0;f<o;f++)try{return await this.activeLegacyRequestOverride.run(d.maxOutputTokensOverride===void 0?{}:{maxOutputTokensOverride:d.maxOutputTokensOverride},()=>Ko(this.name,a?.model??this.getModel(),()=>t(d),this.requestObservationBoundary==="physical_attempt"))}catch(p){if(o>1&&this.isContextOverflowError(p)&&d.maxOutputTokensOverride===void 0){let l=this.parseContextOverflow(p),h=d.maxOutputTokensLimit;if(l&&(h===void 0||l<h)){d.maxOutputTokensOverride=l,r?.(f+1,o,0);continue}}if(p instanceof $e)throw p;if(this.isContextOverflowError(p))throw new $e(Bn(Ke(p)),this.name,this.providerErrorMetadata(p));if(this.isRateLimitError(p)){if(f===o-1){let g=Ke(p).trim(),y=g?`
|
|
3
|
-
${g}`:"",k=this.providerErrorMetadata(p);throw new at(`API rate limit exceeded after ${o} retries. Please wait and try again later.${y}`,k.retryAfterMs??6e4,k)}let l=yt(p)??{},h=Ft(l,{attempt:f,baseBackoffMs:500,maxBackoffMs:32e3,withJitter:!0}),m=h.waitMs,T=this.classifyRateLimitReason(p);if(i?.({provider:this.name,waitMs:m,reason:T,source:h.source,attempt:f+1,maxAttempts:o}),r?r(f+1,o,m):i||console.log(`[Rate Limit] Retrying in ${m/1e3}s (${f+1}/${o})...`),n?.aborted||(await
|
|
2
|
+
import{a as s}from"./chunk-ONUPGMER.js";import{AsyncLocalStorage as Oe}from"node:async_hooks";import{randomUUID as wn}from"node:crypto";var ie=new Oe,Ot=new Oe,$o=new Oe,Pn=new Oe,jo=new Oe;function Ri(e,t){return jo.run(e,t)}s(Ri,"runWithProviderRequestAttribution");function Fo(){return jo.getStore()}s(Fo,"currentProviderRequestAttribution");var Tn=new Oe;function Mi(e,t){return Tn.run(e,t)}s(Mi,"runWithProviderRequestRoute");function Ai(e,t){return Pn.run(e,t)}s(Ai,"runWithProviderRequestAbortSignal");function Bo(){return Pn.getStore()}s(Bo,"currentProviderRequestAbortSignal");function Ii(e,t){return ie.run(e,t)}s(Ii,"runWithProviderRequestObserver");function Oi(e,t){let n=ie.getStore();return ie.run(o=>{e(o),n?.(o)},t)}s(Oi,"runWithAdditionalProviderRequestObserver");async function Ko(e,t,n,o=!1){let r=ie.getStore();if(!r)return n();let i=Ot.getStore();i?.operationFact&&i.attempts===0&&o&&(i.operationFact={...i.operationFact,model:t,wireObservation:"pending"},r(i.operationFact));let a={provider:e,model:t};try{let u=await $o.run(a,n);return ke(a,u),u}catch(u){throw ke(a,void 0,u),u}}s(Ko,"observeProviderAttempt");function Uo(e){let t=e!==null&&typeof e=="object"&&"usage"in e?e.usage:void 0;if(t===null||typeof t!="object")return;let n=t,{inputTokens:o,outputTokens:r}=n;if(typeof o!="number"||!Number.isFinite(o)||o<0||typeof r!="number"||!Number.isFinite(r)||r<0||!Number.isFinite(o+r))return;let i={inputTokens:o,outputTokens:r,totalTokens:o+r};for(let a of["cachedReadTokens","cachedWriteTokens","thoughtTokens"]){let u=n[a];typeof u=="number"&&Number.isFinite(u)&&u>=0&&(i[a]=u)}return i}s(Uo,"usageFrom");function ke(e,t,n){if(!e.current||e.current.state!=="started")return;let o=Ot.getStore()?.signal?.aborted||Pn.getStore()?.aborted||n instanceof Error&&n.name==="AbortError";e.current={...e.current,state:n===void 0?"succeeded":o?"cancelled":"failed",endedAt:new Date().toISOString(),usage:Uo(t)},ie.getStore()?.(e.current)}s(ke,"finishWire");function Dt(e){return async(t,n)=>{let o=ie.getStore(),r=Ot.getStore();if(!o||!r)return e(t,n);let i=$o.getStore()??(r.wire??={provider:r.provider});i.current?.state==="started"&&ke(i,void 0,new Error("Provider request replaced.")),r.attempts+=1,i.current={requestId:r.attempts===1&&r.operationFact?r.operationFact.requestId:`physical_${wn()}`,logicalRequestId:r.logicalRequestId,provider:i.provider,model:i.model,purpose:r.purpose,attribution:r.attribution,route:Tn.getStore(),attempt:r.attempts,boundary:"physical_attempt",wireObservation:"observed",dispatch:"dispatched",state:"started",startedAt:new Date().toISOString()},o(i.current);try{let a=await e(t,n);return a.ok||ke(i,void 0,new Error("Provider HTTP request failed.")),a}catch(a){throw ke(i,void 0,a),a}}}s(Dt,"observeProviderFetch");async function Wo(e,t,n,o,r,i){if(!ie.getStore())return o();let a={provider:e,purpose:t,attribution:n,logicalRequestId:r??`logical_${wn()}`,attempts:0,signal:i};return Ot.run(a,async()=>{let u=new Date().toISOString();a.operationFact={requestId:`request_${wn()}`,logicalRequestId:a.logicalRequestId,provider:e,purpose:t,attribution:n,route:Tn.getStore(),attempt:1,boundary:"provider_operation",wireObservation:"unavailable",dispatch:"unknown",state:"started",startedAt:u},ie.getStore()(a.operationFact);try{let c=await o();return a.wire&&ke(a.wire,c),a.attempts===0&&ie.getStore()({...a.operationFact,state:"succeeded",endedAt:new Date().toISOString(),usage:Uo(c)}),c}catch(c){throw a.wire&&ke(a.wire,void 0,c),a.attempts===0&&ie.getStore()({...a.operationFact,state:i?.aborted?"cancelled":"failed",endedAt:new Date().toISOString()}),c}})}s(Wo,"observeProviderOperation");import{createHash as Di}from"node:crypto";var ot=new WeakMap,Li=s(e=>ot.get(e),"getRejectedImageHash");function rt(e,t){let n=ot.get(e);return n&&ot.set(t,n),t}s(rt,"inheritRejectedImage");function zo(e,t=0){if(!e||typeof e!="object"||t>3)return"";let n=e;return[n.message,n.param].filter(o=>typeof o=="string").join(" ").slice(0,8192)+zo(n.error,t+1)}s(zo,"details");function Ni(e){if(!e||typeof e!="object")return;let t=e,n=t.source,o=t.image_url,r=t.type==="image"&&n?.type==="base64"?n.data:t.type==="image_url"?o?.url?.match(/^data:image\/[^;]+;base64,(.*)$/)?.[1]:void 0;if(typeof r=="string")return Di("sha256").update(Buffer.from(r,"base64")).digest("hex")}s(Ni,"imageHash");function De(e,t){if(!e||typeof e!="object")return;ot.delete(e);let n=zo(e);if(!/image|图片/i.test(n)||!/decod|invalid|unsupported|format|解析|格式|尺寸/i.test(n))return;let o=n.match(/messages(?:\[\d+\]|\.\d+)(?:\.(?:content|source|image_url|url|data)(?:\[\d+\]|\.\d+)*)+/g)??[],r=new Set;for(let i of o){let a=t,u;for(let c of i.replace(/\[(\d+)\]/g,".$1").split(".")){if(!a||typeof a!="object"||!Object.hasOwn(a,c)){u=void 0;break}a=a[c],u=Ni(a)??u}if(!u)return;r.add(u)}r.size===1&&ot.set(e,[...r][0])}s(De,"recordRejectedImage");import{AsyncLocalStorage as $i}from"node:async_hooks";var J=new $i,_n=new WeakMap;function ji(e,t,n){if(!e||!t)throw new Error("Provider credential scope requires non-empty values.");let o=!0,r={kind:"exact",provider:e,credential:t,isActive:s(()=>o,"isActive")};try{let i=J.run(r,n);return Vi(i)?Promise.resolve(i).finally(()=>{o=!1}):(o=!1,i)}catch(i){throw o=!1,i}}s(ji,"runWithProviderCredential");function Fi(e){let t=Xo(e.allowedProviders),n={kind:"lease",allowedProviders:new Set(t),access:e,controller:new AbortController},o={allowedProviders:t,close(r="credential operation completed"){n.controller.signal.aborted||n.controller.abort(new Error(r))}};return _n.set(o,n),o}s(Fi,"createProviderCredentialLeaseScope");function Bi(e,t){let n=_n.get(e);if(!n)throw new Error("Unknown provider credential lease scope.");return J.run(n,t)}s(Bi,"runWithProviderCredentialLeaseScope");function Ki(e){return J.run({kind:"deny"},e)}s(Ki,"runWithoutProviderCredentialScope");function Ui(e,t){let n=J.getStore(),o=n?.kind==="lease"?n:n?.kind==="exact"?n.parentLease:void 0;if(!o)return;Lt(o);let r=Xo(e,!0);for(let u of r)if(!o.allowedProviders.has(u))throw new Error(`Parent credential scope does not allow provider ${u}.`);let i={kind:"lease",allowedProviders:new Set(r),access:o.access,controller:new AbortController,parent:o,...t===void 0?{}:{attribution:t}},a={allowedProviders:r,close(u="derived credential operation completed"){i.controller.signal.aborted||i.controller.abort(new Error(u))}};return _n.set(a,i),a}s(Ui,"deriveCurrentProviderCredentialLeaseScope");function Wi(){let e=J.getStore(),t=e?.kind==="lease"?e:e?.kind==="exact"?e.parentLease:void 0;if(t)return Lt(t),Object.freeze([...t.allowedProviders])}s(Wi,"currentProviderCredentialLeaseProviders");async function se(e,t,n,o,r){let i=Bo();i&&(n=n===void 0?i:AbortSignal.any([n,i])),n?.throwIfAborted();let a=J.getStore(),u=a?.kind==="lease"?a:a?.kind==="exact"?a.parentLease:void 0;return Wo(e,t,Fo()??u?.attribution,()=>zi(e,t,n,o),r,n)}s(se,"withProviderRequestCredential");async function zi(e,t,n,o){let r=J.getStore();if(!r)return o(n);if(r.kind==="deny")throw new Error(`Provider credential scope does not allow provider ${e}.`);if(r.kind==="exact"&&r.provider===e){if(!r.isActive())throw Ho();return o(n)}let i=r.kind==="lease"?r:r.parentLease;if(!i)throw new Error(`Provider credential scope does not allow provider ${e}.`);if(Lt(i),!i.allowedProviders.has(e))throw new Error(`Provider credential scope does not allow provider ${e}.`);let a=new AbortController,u=Hi([n,a.signal,i.controller.signal,i.access.signal]),c=await i.access.acquire(e,t,u,i.attribution);if(Lt(i),!c)throw new Error("Provider credential broker returned no credential.");let d={kind:"exact",provider:e,credential:c,parentLease:i,isActive:s(()=>!a.signal.aborted&&it(i),"isActive")};try{return await J.run(d,async()=>{try{return await o(u)}catch(f){throw st(f,c,new WeakMap)}})}finally{a.abort(new Error("provider request completed"))}}s(zi,"withProviderRequestCredentialInternal");function Xi(e){let t=J.getStore();return t?.kind==="exact"&&t.provider===e&&t.isActive()?t.credential:void 0}s(Xi,"getScopedProviderCredential");function xe(e){let t=J.getStore();if(t)return t.kind==="deny"?!1:t.kind==="exact"?t.provider===e?t.isActive():t.parentLease===void 0?!1:it(t.parentLease)&&t.parentLease.allowedProviders.has(e):it(t)&&t.allowedProviders.has(e)}s(xe,"hasScopedProviderCredentialAuthority");function we(){return J.getStore()!==void 0}s(we,"hasProviderCredentialContext");function Le(e,t){let n=J.getStore();if(!n)return t;if(!(n.kind!=="exact"||!n.isActive()))return n.provider===e?n.credential:void 0}s(Le,"resolveProviderCredential");function Cn(e){let t=J.getStore(),n=t?.kind==="exact"&&t.isActive()?t.credential:void 0;return n?st(e,n,new WeakMap):e}s(Cn,"redactScopedProviderCredential");function Xo(e,t=!1){let n=e.map(o=>o.trim());if(!t&&n.length===0||n.some(o=>o.length===0)||new Set(n).size!==n.length)throw new Error("Provider credential lease scope requires non-empty, unique Providers.");return Object.freeze(n)}s(Xo,"normalizeAllowedProviders");function it(e){return!e.controller.signal.aborted&&e.access.signal?.aborted!==!0&&(e.access.isActive?.()??!0)&&(e.parent===void 0||it(e.parent))}s(it,"isLeaseActive");function Lt(e){if(!it(e))throw Ho()}s(Lt,"assertLeaseActive");function Ho(){return new Error("Provider credential lease scope is no longer active.")}s(Ho,"inactiveCredentialScopeError");function Hi(e){let t=e.filter(n=>n!==void 0);return t.length===1?t[0]:AbortSignal.any(t)}s(Hi,"combineAbortSignals");function Vi(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}s(Vi,"isPromiseLike");function qi(e,t,n){let o=e instanceof DOMException?new DOMException(e.message.split(t).join("[REDACTED_CREDENTIAL]"),e.name.split(t).join("[REDACTED_CREDENTIAL]")):new Error;Object.setPrototypeOf(o,Object.getPrototypeOf(e));let r=Object.getOwnPropertyDescriptor(o,"stack")?.get;delete o.stack,n.set(e,o);for(let i of Reflect.ownKeys(e)){let a=Object.getOwnPropertyDescriptor(e,i);if(i==="stack"&&a?.get&&a.get===r&&(a={configurable:a.configurable,enumerable:a.enumerable,writable:!0,value:e.stack}),a===void 0||!("value"in a))continue;let u=typeof i=="string"?i.split(t).join("[REDACTED_CREDENTIAL]"):i;Object.prototype.hasOwnProperty.call(o,u)||Object.defineProperty(o,u,{...a,value:st(a.value,t,n)})}return rt(e,o)}s(qi,"redactCredentialError");function st(e,t,n){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let o=n.get(e);if(o!==void 0)return o;if(e instanceof Error)return qi(e,t,n);if(Array.isArray(e)){let i=[];n.set(e,i);for(let a of e)i.push(st(a,t,n));return i}let r={};n.set(e,r);for(let[i,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let u=i.split(t).join("[REDACTED_CREDENTIAL]");r[u]=st(a.value,t,n)}return r}s(st,"redactCredentialValue");var fe=class extends Error{static{s(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}},I=class extends fe{static{s(this,"KodaXProviderError")}provider;metadata;constructor(t,n,o){super(t,"PROVIDER_ERROR"),this.provider=n,this.metadata=o,this.name="KodaXProviderError"}},Ne=class extends I{static{s(this,"KodaXContextOverflowError")}capacity;requestInputReliefTokens=0;constructor(t,n,o){super("Provider request exceeded its context capacity.",n,o),this.capacity=t,this.name="KodaXContextOverflowError"}},at=class extends fe{static{s(this,"KodaXRateLimitError")}retryAfter;metadata;constructor(t,n,o){super(t,"RATE_LIMIT_ERROR"),this.retryAfter=n,this.metadata=o,this.name="KodaXRateLimitError"}},ut=class extends fe{static{s(this,"KodaXNetworkError")}isTimeout;constructor(t,n=!1){super(t,"NETWORK_ERROR"),this.isTimeout=n,this.name="KodaXNetworkError"}},ct=class extends I{static{s(this,"KodaXReasoningEffortRejectedError")}rejectedEffort;model;constructor(t,n,o,r){super(t,n),this.rejectedEffort=o,this.model=r,this.name="KodaXReasoningEffortRejectedError"}},Sn=class extends fe{static{s(this,"KodaXToolCallIdError")}constructor(t){super(t,"TOOL_CALL_ID_ERROR"),this.name="KodaXToolCallIdError"}};var Rn=32768,Gi=32e3,Ji=64e3,dt="[Tool Error] No result was recorded for this tool call \u2014 its execution status is unknown (the turn may have been cancelled or the provider switched mid-run). Check whether the tool already produced side effects (files written, commits made) before re-issuing it.",Yi=.5;function lt(e,t,n={}){if(e===void 0)return;let o=n.allowZero===!0;if(!Number.isFinite(e)||(o?e<0:e<=0)){let r=o?"a non-negative finite number":"a positive finite number";throw new Error(`${t} must be ${r}`)}return e===0?0:Math.max(1,Math.floor(e*1e3))}s(lt,"timeoutSecToMs");function Qi(e){if(e===void 0||e.trim().length===0)return;let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.max(1,Math.floor(t*1e3))}s(Qi,"parseTimeoutSecEnvMs");function Zi(e){if(!e)return;let t={requestTimeoutMs:lt(e.requestTimeoutSec,"timeouts.llm.requestTimeoutSec"),streamIdleTimeoutMs:lt(e.streamIdleTimeoutSec,"timeouts.llm.streamIdleTimeoutSec",{allowZero:!0}),chunkTimeoutMs:lt(e.chunkTimeoutSec,"timeouts.llm.chunkTimeoutSec"),maxRetryDelayMs:lt(e.maxRetryDelaySec,"timeouts.llm.maxRetryDelaySec")};return Object.values(t).some(o=>o!==void 0)?t:void 0}s(Zi,"resolveLlmTimeoutConfig");function Nt(e,t){return`${e}/${t??""}`}s(Nt,"capabilityCacheKey");function Mn(e,t){if(t.length===0)return e;let n=new Set(t),o=e.defaultEffort!==void 0&&n.has(e.defaultEffort);return{...e,...o?{defaultEffort:void 0}:{},supportedEfforts:e.supportedEfforts?.filter(r=>!n.has(r.value)),localRejectEfforts:Array.from(new Set([...e.localRejectEfforts??[],...t]))}}s(Mn,"narrowReasoningProfile");function An(e,t,n){return e[Nt(t,n)]?.rejected??[]}s(An,"getRejectedEfforts");function In(e,t,n,o,r,i){let a=Nt(t,n),u=e[a],c=u?.rejected.includes(o)?u.rejected:[...u?.rejected??[],o];return{...e,[a]:{rejected:c,source:r,updatedAt:i}}}s(In,"addRejectedEffort");function es(e,t,n){if(!t)return{};let o={...e};return delete o[Nt(t,n)],o}s(es,"removeCacheEntry");function ts(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(!o||typeof o!="object")continue;let r=o,i=Array.isArray(r.rejected)?r.rejected.filter(c=>typeof c=="string"):[],a=r.source==="probed"?"probed":"observed",u=typeof r.updatedAt=="string"?r.updatedAt:"";t[n]={rejected:i,source:a,updatedAt:u}}return t}s(ts,"sanitizeCapabilityCache");var On=["max","xhigh","high","medium","low","minimal"];function $e(e,t="auto"){if(e.effortStrategy==="none"||e.effortStrategy==="prompt-only")return[void 0];let n=s(d=>e.effortAliases?.[d]??d,"alias"),o=e.supportedEfforts?.map(d=>n(d.value)),r=On.filter(d=>!e.disabledEfforts?.includes(d)&&(!o||o.includes(d))),i=t==="auto"?e.defaultEffort??e.supportedEfforts?.find(d=>d.isDefault)?.value??"max":t,a=n(i),c=i==="none"||e.disabledEfforts?.includes(i)?[...e.supportsDisabledThinking===!1?[]:["none"],...r.slice().reverse()]:[a,...r.filter(d=>On.indexOf(d)>On.indexOf(a))];return[...new Set(c.filter(d=>!e.localRejectEfforts?.includes(d)&&(d==="none"||!o||o.includes(d)||e.allowCustomEffort))),void 0]}s($e,"buildReasoningEffortLadder");function he(e){return e?.effortStrategy==="openai-chat-effort"||e?.effortStrategy==="openai-responses-effort"}s(he,"usesReasoningEffortLadder");var ns=["off","auto","quick","balanced","deep"],Fe=["auto","none","low","medium","high"],Vo={low:6e3,medium:1e4,high:2e4},qo=4096,Dn=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Enable thinking"},{value:"medium",description:"Enable thinking",isDefault:!0},{value:"high",description:"Enable thinking"},{value:"xhigh",description:"Enable thinking"},{value:"max",description:"Enable thinking"}],Ln=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Alias to high"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning",isDefault:!0},{value:"xhigh",description:"Alias to max"},{value:"max",description:"Maximum reasoning"}],os=[{value:"none",description:"Disable thinking"},{value:"minimal",description:"Disable thinking",isUserVisible:!1},{value:"low",description:"Low reasoning"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning",isDefault:!0},{value:"xhigh",description:"Alias to high"},{value:"max",description:"Maximum reasoning"}],rs=[{value:"low",description:"Thinking is always on"},{value:"medium",description:"Thinking is always on"},{value:"high",description:"Thinking is always on",isDefault:!0},{value:"xhigh",description:"Thinking is always on"},{value:"max",description:"Thinking is always on"}];function $t(e,t={}){return{...is(e),...t,reasoningPreset:e}}s($t,"createReasoningProfileFromPreset");function is(e){switch(e){case"zai-glm-5.3":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:[{value:"none",description:"Maps to low reasoning"},{value:"minimal",description:"Alias to low",isUserVisible:!1},{value:"low",description:"Low reasoning"},{value:"medium",description:"Alias to high"},{value:"high",description:"High reasoning"},{value:"xhigh",description:"Alias to max"},{value:"max",description:"Maximum reasoning",isDefault:!0}],effortAliases:{none:"low",minimal:"low",minimum:"low",light:"low",medium:"high",xhigh:"max",ultra:"max"},disabledEfforts:["none"],supportsReasoningEffort:!0,supportsDisabledThinking:!1};case"zai-glm-5.2":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"max",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-flash-openai":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:os,effortAliases:{medium:"high",xhigh:"high"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-openai":case"deepseek-v4-pro-openai":return{reasoningPreset:e,effortStrategy:"openai-chat-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"deepseek-v4-anthropic":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:Ln,effortAliases:{low:"high",medium:"high",xhigh:"max"},disabledEfforts:["none","minimal"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"zai-glm-toggle":case"deepseek-toggle":case"kimi-hybrid-toggle":case"mimo-v2.5-toggle":case"generic-thinking-toggle":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",supportedEfforts:Dn,disabledEfforts:["none","minimal"],supportsDisabledThinking:!0};case"kimi-k3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"provider-toggle",defaultEffort:"high",supportedEfforts:[{value:"none",description:"Disable thinking"},{value:"low",description:"Low thinking effort"},{value:"high",description:"High thinking effort",isDefault:!0},{value:"max",description:"Maximum thinking effort"}],effortAliases:{minimal:"low",minimum:"low",light:"low",medium:"high",xhigh:"max",ultra:"max"},disabledEfforts:["none"],supportsReasoningEffort:!0,supportsDisabledThinking:!0};case"kimi-k2.7-code":case"minimax-m2-always":return{reasoningPreset:e,effortStrategy:"prompt-only",defaultEffort:"high",supportedEfforts:rs,localRejectEfforts:["none","minimal"]};case"minimax-m3":return{reasoningPreset:e,effortStrategy:"provider-toggle",thinkingStrategy:"anthropic-adaptive",supportedEfforts:Dn,disabledEfforts:["none","minimal"],supportsAdaptiveThinking:!0,supportsDisabledThinking:!0};case"qwen-hybrid-thinking":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"provider-budget",defaultEffort:"medium",supportedEfforts:Dn,budgetByEffort:{low:6e3,medium:1e4,high:16e3,xhigh:24e3,max:32e3},disabledEfforts:["none","minimal"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"claude-adaptive-xhigh":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"xhigh"},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"claude-adaptive-max":return{reasoningPreset:e,effortStrategy:"anthropic-output-effort",thinkingStrategy:"anthropic-adaptive",defaultEffort:"high",supportedEfforts:[{value:"low"},{value:"medium"},{value:"high",isDefault:!0},{value:"max"}],supportsReasoningEffort:!0,supportsAdaptiveThinking:!0};case"anthropic-budget":return{reasoningPreset:e,effortStrategy:"provider-budget",thinkingStrategy:"anthropic-budget",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"}],budgetByEffort:{low:6e3,medium:1e4,high:16e3},disabledEfforts:["none"],supportsManualThinkingBudget:!0,supportsDisabledThinking:!0};case"openai-chat-reasoning":case"openai-responses-reasoning":return{reasoningPreset:e,effortStrategy:e==="openai-chat-reasoning"?"openai-chat-effort":"openai-responses-effort",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],disabledEfforts:["none"],supportsReasoningEffort:!0,supportsReasoningSummary:!0,supportsEncryptedReasoningReplay:!0};case"codex-cli-effort":return{reasoningPreset:e,effortStrategy:"codex-cli-config",defaultEffort:"medium",supportedEfforts:[{value:"none"},{value:"minimal"},{value:"low"},{value:"medium",isDefault:!0},{value:"high"},{value:"xhigh"}],allowCustomEffort:!0,supportsReasoningEffort:!0};case"none":return{reasoningPreset:e,effortStrategy:"none",thinkingStrategy:"none"}}}s(is,"createBaseReasoningProfileFromPreset");function $n(e){return e.reasoningCapability?e.reasoningCapability:e.supportsThinking?"native-toggle":"prompt-only"}s($n,"getReasoningCapability");function jn(e){return jt(e).enabled}s(jn,"isReasoningEnabled");function jt(e){if(typeof e=="boolean")return{enabled:e,effort:e?"auto":"none",effortSource:"legacy",taskType:"unknown",executionMode:"implementation"};let t=e?.effort?mt(e.effort):void 0,n=t??(e?.enabled===!0?"auto":"none");return{enabled:n!=="none",effort:n,effortSource:t!==void 0?"explicit":e===void 0?"omitted":"legacy",taskType:e?.taskType??"unknown",executionMode:e?.executionMode??"implementation"}}s(jt,"normalizeReasoningRequest");function mt(e){let t=e.trim().toLowerCase();if(!t)throw new Error("Reasoning effort cannot be empty.");if(/\s/.test(t))throw new Error(`Reasoning effort cannot contain whitespace: "${e}".`);return t==="off"?"none":t}s(mt,"normalizeReasoningEffortValue");function Go(e){switch(e){case"off":return"none";case"auto":return"auto";case"quick":return"low";case"balanced":return"medium";case"deep":return"high"}}s(Go,"mapLegacyReasoningModeToEffortIntent");function ss(e){switch(e){case"none":return"off";case"auto":return"auto";case"low":return"quick";case"medium":return"balanced";case"high":return"deep";default:return}}s(ss,"effortToLegacyReasoningMode");function Jo(e){let t=e?.trim();if(!t)return{kind:"unset"};let n=mt(t);return n==="auto"||n==="unset"?{kind:"clear"}:{kind:"value",value:n}}s(Jo,"parseReasoningEffortEnv");function ht(e){let t=Jo(e.envEffort),n=[];if(ft(n,e.explicitEffort,"explicit",!0),t.kind==="value"&&n.push({value:t.value,source:"env",isExplicit:!0}),ft(n,e.sessionEffort,"session",!1),e.legacyReasoningMode?n.push({value:Go(e.legacyReasoningMode),source:"legacy",isExplicit:!1}):e.thinking!==void 0&&n.push({value:e.thinking?"auto":"none",source:"legacy",isExplicit:!1}),he(e.capability)){let i=n[0]??{value:"auto",source:"fallback",isExplicit:!1},a={...e.capability,defaultEffort:e.modelDefaultEffort??e.capability.defaultEffort??je(e.capability)??e.providerDefaultEffort??e.fallbackEffort},u=$e(a,i.value)[0];return{configuredEffort:i.value,effectiveEffort:u,source:i.source,isExplicit:i.isExplicit,diagnostics:[]}}ft(n,e.modelDefaultEffort??e.capability?.defaultEffort??je(e.capability),"model-default",!1),ft(n,e.providerDefaultEffort,"provider-default",!1),ft(n,e.fallbackEffort??gt(e.capability),"fallback",!1);let o=n[0]??{value:"none",source:"fallback",isExplicit:!1};if(o.value==="auto")return{configuredEffort:"auto",effectiveEffort:us(n.slice(1),e.capability),source:o.source,isExplicit:o.isExplicit,diagnostics:[]};let r=Yo(o.value,e.capability,o.isExplicit);return{configuredEffort:o.value,effectiveEffort:r,source:o.source,isExplicit:o.isExplicit,diagnostics:[]}}s(ht,"resolveReasoningEffort");function as(e){let t=e.currentEffort?mt(e.currentEffort):void 0;if(t&&Qo(t,e.capability))return{effectiveEffort:pt(t,e.capability),preserved:!0};let n=e.capability?.defaultEffort??je(e.capability)??Nn(e.capability)??gt(e.capability),o=n&&pt(n,e.capability);return t?{effectiveEffort:o,preserved:!1,diagnostic:o?`Effort ${t} is not supported by the selected model; using ${o}.`:`Effort ${t} is not supported by the selected model; clearing effort.`}:{effectiveEffort:o,preserved:!1}}s(as,"resolveReasoningEffortForModelSwitch");function ft(e,t,n,o){if(t===void 0)return;let r=mt(t);e.push({value:r,source:n,isExplicit:o})}s(ft,"pushEffortCandidate");function us(e,t){let n=e.find(o=>o.value!=="auto");return n?Yo(n.value,t,n.isExplicit):je(t)??gt(t)}s(us,"resolveAutoEffectiveEffort");function Yo(e,t,n){if(t?.localRejectEfforts?.includes(e)){if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return je(t)??Nn(t)??gt(t)??e}if(e==="none")return t?.supportsDisabledThinking===!1?pt(e,t):e;if(Qo(e,t))return pt(e,t);if(n)throw new Error(`Unsupported reasoning effort "${e}" for the selected model.`);return je(t)??Nn(t)??gt(t)??e}s(Yo,"validateReasoningEffort");function pt(e,t){return t?.effortAliases?.[e]??e}s(pt,"applyEffortAlias");function Qo(e,t){if(t?.localRejectEfforts?.includes(e))return!1;if(e==="auto"||e==="none"||t?.allowCustomEffort===!0)return!0;let n=cs(t);return n.length===0?Fe.includes(e):n.includes(e)||n.includes(pt(e,t))}s(Qo,"isSupportedReasoningEffort");function cs(e){return e?.supportedEfforts?.map(t=>t.value)??[]}s(cs,"getSupportedEffortValues");function je(e){return e?.supportedEfforts?.find(t=>t.isDefault)?.value}s(je,"getDefaultPresetValue");function Nn(e){let t=e?.supportedEfforts?.filter(ds).map(n=>n.value);if(!(!t||t.length===0))return t[Math.floor((t.length-1)/2)]}s(Nn,"getMiddleVisiblePresetValue");function ds(e){return e.isUserVisible!==!1}s(ds,"isUserVisiblePreset");function gt(e){if(!e||e.effortStrategy==="none"||e.effortStrategy==="prompt-only")return"none";if(!(e.effortStrategy==="anthropic-output-effort"&&e.thinkingStrategy==="anthropic-adaptive"))return"medium"}s(gt,"getFallbackEffortForCapability");function ls(e){switch(e){case"quick":return"low";case"balanced":case"auto":return"medium";case"deep":return"high";default:return"off"}}s(ls,"getDefaultThinkingDepthForMode");function Pe(e){switch(e){case"none":return"off";case"low":return"low";case void 0:case"medium":case"auto":return"medium";default:return"high"}}s(Pe,"effortToThinkingDepth");function Te(e,t,n="unknown"){if(t==="off")return 0;let o={...Vo,...e.defaultThinkingBudgets??{}},i=e.taskBudgetOverrides?.[n]?.[t]??o[t];return e.thinkingBudgetCap?Math.min(i,e.thinkingBudgetCap):i}s(Te,"resolveThinkingBudget");function _e(e,t,n=qo){let o=Math.max(1024,t-n);return Math.max(1024,Math.min(e,o))}s(_e,"clampThinkingBudget");function Fn(e){switch(e){case"low":return"low";case"medium":return"medium";case"high":return"high";default:return}}s(Fn,"mapDepthToOpenAIReasoningEffort");import{AsyncLocalStorage as ws}from"node:async_hooks";function Ce(e){let t=Number(e?.replace(/,/g,""));return Number.isSafeInteger(t)&&t>0?t:void 0}s(Ce,"tokens");function Bn(e){let t=/maximum context length is\s*(\d[\d,]*)\s*tokens/i.exec(e),n=/your prompt contains\s+(at least\s+)?(\d[\d,]*)\s+input tokens/i.exec(e);if(t&&n)return{contextWindow:Ce(t[1]),inputTokens:Ce(n[2]),inputTokensKind:n[1]?"lower_bound":"exact"};if(/upper bound|at least/i.test(e))return{contextWindow:Ce(t?.[1]),inputTokensKind:"unknown"};let o=/Input length\s*\((\d[\d,]*)\).*?maximum context length\s*\((\d[\d,]*)\)/i.exec(e)??/prompt (?:is )?too long:\s*(\d[\d,]*)\s*tokens?\s*>\s*(\d[\d,]*)/i.exec(e)??/exceeds?\s+(\d[\d,]*)\s*tokens?\s*上限\s*(\d[\d,]*)/i.exec(e);if(o)return{inputTokens:Ce(o[1]),contextWindow:Ce(o[2]),inputTokensKind:"exact"};let r=/\((\d[\d,]*)\s+in (?:your|the) (?:prompt|messages)/i.exec(e);return{contextWindow:Ce(t?.[1]),inputTokens:Ce(r?.[1]),inputTokensKind:r?"exact":"unknown"}}s(Bn,"parseContextOverflowFacts");function Zo(e){if(!e||typeof e!="object")return;let t=e,n=t.status??t.statusCode??t.code;return typeof n=="number"&&Number.isInteger(n)?n:typeof n=="string"&&/^\d{3}$/.test(n)?Number(n):Zo(t.cause)}s(Zo,"getStatus");function fs(e){if(e instanceof Error)return e.message.toLowerCase();if(typeof e=="string")return e.toLowerCase();if(e&&typeof e=="object"){let t=e;return[t.message,t.error,t.detail,t.body].filter(o=>typeof o=="string").join(" ").toLowerCase()}return""}s(fs,"getMessage");var ps=["reasoning_effort","reasoning effort","reasoninglevel","reasoning_level","reasoning.effort","thinking.effort","thinking.type"],gs=["unsupported","not supported","invalid","does not support","is not one of","not allowed","unknown","unexpected","unrecognized"],ms=["minimal","none","low","medium","high","xhigh","max"];function hs(e){let t=`(?:${ps.map(u=>u.replaceAll(".","\\.")).join("|")})`,n=`(?:${gs.join("|")})`,o="['\"`][^'\"`\\n]{0,80}['\"`]",r="[\\s'\"`:]",i=`(?:${r}|\\b(?:value|parameter|field|for|of|the)\\b|${o})*`,a=`(?:${r}|\\b(?:value|parameter|is)\\b|${o})*`;return new RegExp(`${n}${i}${t}\\b|${t}${a}${n}`).test(e)}s(hs,"namesRejectedEffort");function ys(e,t){if(t!==void 0)return t;for(let n of ms)if(new RegExp(`['"\`]${n}['"\`]`).test(e))return n;return t}s(ys,"extractRejectedEffort");function Be(e,t){let n=Zo(e);if(n!==400&&n!==422)return null;let o=fs(e);if(!o)return null;let r=/(?:unknown|unrecognized|unexpected|unsupported|not supported)\s+(?:parameter|field|argument)s?\s*:?\s*['"`]*(reasoning_effort|reasoning\b|thinking\b|enable_thinking|thinking_budget|budget_tokens)/.exec(o)?.[1]??/\b(enable_thinking|thinking_budget|budget_tokens)\b['"`]*\s+(?:is\s+)?(?:unsupported|not supported)/.exec(o)?.[1]??/does not support\s+(?:the\s+)?['"`]*(reasoning_effort|reasoning|thinking)['"`]*\s+(?:parameter|field)/.exec(o)?.[1];if(r)return{rejectedEffort:t??"*",parameterRejected:!0,parameter:r};if(!hs(o))return null;let i=ys(o,t);return i?{rejectedEffort:i}:null}s(Be,"classifyReasoningEffortRejection");function er(e,t){if(!e)return;if(typeof e.get=="function")return e.get(t)??void 0;let n=e,o=t.toLowerCase(),r=n[t]??n[o]??n[o.replace(/\b\w/g,i=>i.toUpperCase())];if(r!==void 0)return Array.isArray(r)?r[0]:r}s(er,"readHeader");function tr(e){if(!e)return;let t=e.trim();if(t.length===0)return;let n=Number(t);if(!(!Number.isFinite(n)||n<=0))return n}s(tr,"parsePositiveNumber");function vs(e,t){if(!e)return;let n=e.trim();if(n.length===0)return;let o=Date.parse(n);if(!Number.isFinite(o))return;let r=o-t;return r>0?r:void 0}s(vs,"parseHttpDate");function Ft(e,t){let n=t.baseBackoffMs??1e3,o=t.maxBackoffMs??3e4,r=t.maxHeaderWaitMs??12e4,i=t.now?t.now():Date.now(),a=tr(er(e,"retry-after-ms"));if(a!==void 0){let l=Math.min(a,r);return{type:"header",waitMs:Math.round(l),source:"retry-after-ms",cappedFromHeader:l!==a}}let u=er(e,"retry-after");if(u!==void 0&&u.trim().length>0){let l=tr(u);if(l!==void 0){let m=l*1e3,T=Math.min(m,r);return{type:"header",waitMs:Math.round(T),source:"retry-after-seconds",cappedFromHeader:T!==m}}let h=vs(u,i);if(h!==void 0){let m=Math.min(h,r);return{type:"header",waitMs:Math.round(m),source:"retry-after-date",cappedFromHeader:m!==h}}}let c=n*Math.pow(2,Math.max(0,t.attempt)),d=Math.min(c,o),p=t.withJitter!==!1?Math.random()*.25*d:0;return{type:"backoff",waitMs:Math.round(d+p),source:"exponential-backoff",attempt:t.attempt}}s(Ft,"parseRetryAfter");function yt(e){if(!e||typeof e!="object")return;let t=e;return t.headers??t.response?.headers??t.cause?.headers??t.cause?.response?.headers}s(yt,"extractHeadersFromError");import{AsyncLocalStorage as bs}from"node:async_hooks";var nr=new bs,or=8,rr=32;function Es(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}s(Es,"parsePositiveInt");function ks(){let e=vt()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:Es(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??or;return Math.max(1,Math.min(rr,t))}s(ks,"resolveWorkflowMaxConcurrency");function xs(e,t){return nr.run(e,t)}s(xs,"runWithScopedConfig");function vt(){return nr.getStore()}s(vt,"getRunScopedConfig");function ae(e){if(e!==void 0)return e;let t=vt()?.disablePromptCache;return t!==void 0?t:process.env.KODAX_DISABLE_PROMPT_CACHE==="1"}s(ae,"resolvePromptCacheDisabled");var ue={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},ir={...ue,multimodalSupport:"image-input"},bt={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},sr={...bt,multimodalSupport:"image-input"};function Bt(e){return{transport:e.transport,conversationSemantics:e.conversationSemantics,mcpSupport:e.mcpSupport,contextFidelity:e.contextFidelity??"full",toolCallingFidelity:e.toolCallingFidelity??"full",sessionSupport:e.sessionSupport??"full",longRunningSupport:e.longRunningSupport??"full",multimodalSupport:e.multimodalSupport??"none",evidenceSupport:e.evidenceSupport??"full"}}s(Bt,"normalizeCapabilityProfile");function Z(e){return{...Bt(e)}}s(Z,"cloneCapabilityProfile");function Ps(e){if(!e)return;let t=parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}s(Ps,"parseEnvInt");function Ts(e){switch(e.reasoningPreset){case"zai-glm-5.3":case"zai-glm-5.2":case"deepseek-v4-flash-openai":case"deepseek-v4-pro-openai":case"deepseek-v4-openai":case"deepseek-v4-anthropic":case"qwen-hybrid-thinking":return!0;default:break}return e.effortStrategy==="provider-budget"}s(Ts,"shouldLowerAutoReasoningEffort");function Kt(){return new DOMException("Request aborted","AbortError")}s(Kt,"abortError");async function _s(e){let[t,n]=await Promise.allSettled([import("@anthropic-ai/sdk"),import("openai")]);return t.status==="fulfilled"&&e instanceof t.value.APIUserAbortError||n.status==="fulfilled"&&e instanceof n.value.APIUserAbortError}s(_s,"isProviderSdkAbortError");function Cs(e,t){return e<=0?Promise.resolve():t?.aborted?Promise.reject(Kt()):new Promise((n,o)=>{let r,i=s(()=>{t&&t.removeEventListener("abort",a)},"cleanup"),a=s(()=>{r&&clearTimeout(r),i(),o(Kt())},"onAbort");t&&t.addEventListener("abort",a,{once:!0}),r=setTimeout(()=>{i(),n()},e)})}s(Cs,"waitForRetryDelay");function Kn(e){let t=typeof e=="number"&&Number.isInteger(e)?e:typeof e=="string"&&/^\d{3}$/.test(e)?Number(e):void 0;return t!==void 0&&t>=100&&t<=599?t:void 0}s(Kn,"normalizeHttpStatus");function Un(e,t=0){if(!e||typeof e!="object"||t>4)return;let n=e;return Kn(n.status)??Kn(n.statusCode)??Kn(n.code)??Un(n.cause,t+1)}s(Un,"extractHttpStatus");function ar(e,t=0){return!(e instanceof Error)||t>4?!1:e.name==="TimeoutError"||ar(e.cause,t+1)}s(ar,"hasTypedTimeout");function Ut(e,t=0){if(!e||typeof e!="object"||t>4)return"";let n=e;return typeof n.code=="string"?n.code:typeof n.code=="number"&&Number.isSafeInteger(n.code)?String(n.code):Ut(n.cause,t+1)||Ut(n.error,t+1)}s(Ut,"extractErrorCode");function ur(e,t,n=0){if(!e||typeof e!="object"||n>4)return;let o=e;for(let r of t){let i=o[r];if(typeof i=="string"&&/^[\w.:-]{1,200}$/.test(i))return i}return ur(o.cause,t,n+1)}s(ur,"extractDiagnosticString");function Ss(e){let t=ur(e,["requestId","request_id"]);if(t!==void 0)return t;let n=yt(e),o=["x-request-id","request-id","anthropic-request-id","cf-ray"];for(let r of o){let i=n instanceof Headers?n.get(r)??void 0:n?.[r]??n?.[r.replace(/\b\w/g,u=>u.toUpperCase())],a=Array.isArray(i)?i[0]:i;if(typeof a=="string"&&/^[\w.:-]{1,200}$/.test(a))return a}}s(Ss,"extractRequestId");function Ke(e){if(e instanceof Error)return e.message.toLowerCase();if(e&&typeof e=="object"){let t=e.message;if(typeof t=="string")return t.toLowerCase()}return String(e).toLowerCase()}s(Ke,"getErrorMessage");var ce=class{static{s(this,"KodaXBaseProvider")}requestObservationBoundary="provider_operation";activeLegacyRequestOverride=new ws;pendingLegacyMaxOutputTokensOverride;setMaxOutputTokensOverride(t){this.pendingLegacyMaxOutputTokensOverride=t}getEffectiveMaxOutputTokens(t){let n=this.activeLegacyRequestOverride.getStore()?.maxOutputTokensOverride??this.pendingLegacyMaxOutputTokensOverride;if(typeof n=="number"&&Number.isFinite(n)&&n>0)return n;let o=vt()?.maxOutputTokens,r=(typeof o=="number"&&Number.isFinite(o)&&o>0?o:void 0)??Ps(process.env.KODAX_MAX_OUTPUT_TOKENS);if(r!==void 0)return r;let i=this.getModelDescriptor(t)?.maxOutputTokens;return i!==void 0?i:this.config.maxOutputTokens??32768}getStreamMaxDurationMs(t){let n=this.getModelDescriptor(t)?.streamMaxDurationMs;return n!==void 0?n:this.config.streamMaxDurationMs}getEffectiveReplayReasoningContent(t){let n=this.getModelDescriptor(t)?.replayReasoningContent;return n!==void 0?n:this.config.replayReasoningContent??!1}getEffectiveStrictThinkingSignature(t){let n=this.getModelDescriptor(t)?.strictThinkingSignature;return n!==void 0?n:this.config.strictThinkingSignature??!1}getProviderSupportsThinking(){return this.config.supportsThinking}getEffectiveThinkingBudgetCap(t){return this.getModelDescriptor(t)?.thinkingBudgetCap??this.config.thinkingBudgetCap}supportsEphemeralSuffix(){return!1}usesPromptCacheAffinity(){return this.config.promptCacheAffinity===!0}supportsNonStreamingFallback(){return!1}async complete(t,n,o,r,i,a){throw new I(`${this.name} does not support non-streaming fallback`,this.name,{failureCode:"protocol_mismatch",stage:"response_stream"})}isConfigured(){let t=xe(this.name);return t!==void 0?t:Le(this.name,process.env[this.config.apiKeyEnv])!==void 0}async verifyCredential(t){return{ok:!1,error:"unsupported",strategy:this.config.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider class "${this.name}" does not implement verifyCredential()`}}getModel(){return this.config.model}getAvailableModels(){return this.config.models?.length?[...new Set([this.config.model,...this.config.models.map(t=>t.id)])]:[this.config.model]}getModelDescriptor(t){let n=t??this.config.model,o=this.config.models?.find(r=>r.id===n);if(o){let r=o.wireModel?this.config.models?.find(i=>i.id===o.wireModel):void 0;return r?{...r,...o}:o}if(n===this.config.model)return{id:this.config.model}}getWireModelId(t){let n=t??this.config.model;return this.getModelDescriptor(n)?.wireModel??n}getWireModel(t){return this.getWireModelId(t)}getBaseUrl(){return this.config.baseUrl}getApiKeyEnv(){return this.config.apiKeyEnv}getCapabilityProfile(){return Z(this.config.capabilityProfile??ue)}getConfiguredReasoningCapability(t){let n=this.getModelDescriptor(t);return n?.reasoningCapability?n.reasoningCapability:$n(this.config)}getReasoningCapability(t){return this.getConfiguredReasoningCapability(t)}getReasoningProfile(t){return this.getModelDescriptor(t)?.reasoningProfile??this.config.reasoningProfile}shouldFallbackForReasoningError(t,...n){if(Be(t,void 0))return!1;let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase(),i=n.map(u=>u.toLowerCase()).some(u=>o.includes(u)),a=o.includes("parameter")||i;return o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported")&&a}shouldFallbackForSpecificReasoningError(t,...n){let o=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.map(a=>a.toLowerCase()).some(a=>o.includes(a))?o.includes("unknown parameter")||o.includes("invalid parameter")||o.includes("unsupported"):!1}shouldFallbackForForcedToolChoiceError(t){let n=Ke(t);return(n.includes("tool_choice")||n.includes("tool choice")||n.includes("toolchoice"))&&(n.includes("unknown parameter")||n.includes("invalid parameter")||n.includes("unsupported")||n.includes("incompatible"))?!0:this.isServerError(t)}isServerError(t){let n=Un(t);if(n!==void 0&&n>=500&&n<=599)return!0;let o=Ke(t);return o.includes("internal server error")||o.includes("server error")}getReasoningFallbackChain(t){switch(t){case"native-budget":return["native-budget","native-toggle","none"];case"native-effort":return["native-effort","none"];case"native-adaptive":return["native-adaptive","none"];case"native-toggle":return["native-toggle","none"];default:return["none"]}}getContextWindow(){return this.getEffectiveContextWindow()}getEffectiveContextWindow(t){let n=this.getModelDescriptor(t)?.contextWindow;return n!==void 0?n:this.config.contextWindow??2e5}getApiKey(){let t=Le(this.name,process.env[this.config.apiKeyEnv]);if(!t)throw new Error(`${this.config.apiKeyEnv} not set`);return t}shouldLogStreamDiagnostics(){return!!process.env.KODAX_DEBUG_STREAM}logStreamDiagnostic(...t){this.shouldLogStreamDiagnostics()&&console.error(...t)}normalizeReasoning(t){return jt(t)}validateExplicitReasoningEffort(t,n){if(t.effortSource!=="explicit")return;let o=t.effort;if(!o||o==="auto")return;let r=Fe.includes(o),i=this.getReasoningProfile(n);if(!i){if(o==="none"||r)return;let f=n?`/${n}`:"";throw new I(`${this.name}${f} does not advertise provider-specific reasoning effort "${o}". Supported stable efforts: ${Fe.join(", ")}.`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(i.localRejectEfforts?.includes(o)){let f=n?`/${n}`:"";throw new I(`${this.name}${f} does not support reasoning effort "${o}".`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(o==="none"||i.disabledEfforts?.includes(o)||i.allowCustomEffort)return;let a=i.supportedEfforts?.map(f=>f.value)??[],u=i.effortAliases?.[o]??o;if(a.includes(o)||a.includes(u)||a.length===0&&r)return;let c=n?`/${n}`:"",d=a.length>0?a.join(", "):Fe.join(", ");throw new I(`${this.name}${c} does not support reasoning effort "${o}". Supported efforts: ${d}.`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}resolveReasoningProfileIntent(t,n,o){let r=t.effort;if(r&&n.localRejectEfforts?.includes(r)){if(t.effortSource==="explicit"){let i=o?`/${o}`:"";throw new I(`${this.name}${i} does not support reasoning effort "${r}".`,this.name,{failureCode:"request_build_failed",stage:"request_build"})}if(n.defaultEffort)return{disabled:!1,effort:n.defaultEffort,requestedEffort:r}}if(!t.enabled||r==="none"||r!==void 0&&n.disabledEfforts?.includes(r))return{disabled:!0,requestedEffort:r};if(!r||r==="auto"){if(Ts(n)){let i=ht({capability:n,explicitEffort:r??"auto"}).effectiveEffort;return i==="none"||i!==void 0&&n.disabledEfforts?.includes(i)?{disabled:!0,effort:i,requestedEffort:r}:{disabled:!1,effort:i,requestedEffort:r}}return{disabled:!1,requestedEffort:r}}return{disabled:!1,effort:n.effortAliases?.[r]??r,requestedEffort:r}}onStaleConnection(){}isRateLimitError(t){if(!(t instanceof Error))return!1;let n=t.message.toLowerCase();return["rate","limit","\u901F\u7387","\u9891\u7387","1302","429","too many","overload","overwhelmed","503","529","busy"].some(o=>n.includes(o))}classifyRateLimitReason(t){let n=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return n.includes("overload")||n.includes("overwhelmed")||n.includes("503")||n.includes("529")||n.includes("busy")?"overloaded":"rate-limit"}extractRetryAfterMs(t){let n=yt(t);if(!n)return;let o=Ft(n,{attempt:0,withJitter:!1});return o.type==="header"?o.waitMs:void 0}providerErrorMetadata(t){let n=Un(t),o=Ut(t),r=Ss(t),i=this.extractRetryAfterMs(t);return{stage:"transport",...n!==void 0?{httpStatus:n}:{},...o!==""&&/^[\w.:-]{1,200}$/.test(o)?{upstreamCode:o}:{},...r!==void 0?{requestId:r}:{},...i!==void 0?{retryAfterMs:i}:{}}}parseContextOverflow(t){let n=Bn(Ke(t));if(n.inputTokensKind!=="exact"||n.inputTokens===void 0||n.contextWindow===void 0)return;let o=n.contextWindow-n.inputTokens-1e3;return o>=3e3?o:void 0}isContextOverflowError(t){let n=Ke(t).toLowerCase();return n.includes("prompt is too long")||n.includes("prompt too long")||n.includes("context length")||n.includes("context_length_exceeded")||n.includes("context window")||n.includes("context limit")||n.includes("\u4E0A\u4E0B\u6587\u957F\u5EA6")}async withRateLimit(t,n,o=3,r,i,a){let u=!1,c=this.pendingLegacyMaxOutputTokensOverride;this.pendingLegacyMaxOutputTokensOverride=void 0;let d={...c===void 0?{}:{maxOutputTokensOverride:c},suppressReasoningEffort:!1};for(let f=0;f<o;f++)try{return await this.activeLegacyRequestOverride.run(d.maxOutputTokensOverride===void 0?{}:{maxOutputTokensOverride:d.maxOutputTokensOverride},()=>Ko(this.name,a?.model??this.getModel(),()=>t(d),this.requestObservationBoundary==="physical_attempt"))}catch(p){if(o>1&&this.isContextOverflowError(p)&&d.maxOutputTokensOverride===void 0){let l=this.parseContextOverflow(p),h=d.maxOutputTokensLimit;if(l&&(h===void 0||l<h)){d.maxOutputTokensOverride=l,r?.(f+1,o,0);continue}}if(p instanceof Ne)throw p;if(this.isContextOverflowError(p))throw new Ne(Bn(Ke(p)),this.name,this.providerErrorMetadata(p));if(this.isRateLimitError(p)){if(f===o-1){let g=Ke(p).trim(),y=g?`
|
|
3
|
+
${g}`:"",k=this.providerErrorMetadata(p);throw new at(`API rate limit exceeded after ${o} retries. Please wait and try again later.${y}`,k.retryAfterMs??6e4,k)}let l=yt(p)??{},h=Ft(l,{attempt:f,baseBackoffMs:500,maxBackoffMs:32e3,withJitter:!0}),m=h.waitMs,T=this.classifyRateLimitReason(p);if(i?.({provider:this.name,waitMs:m,reason:T,source:h.source,attempt:f+1,maxAttempts:o}),r?r(f+1,o,m):i||console.log(`[Rate Limit] Retrying in ${m/1e3}s (${f+1}/${o})...`),n?.aborted||(await Cs(m,n),n?.aborted))throw Kt();continue}if(o>1&&a&&!u){let l=Be(p,a.effort);if(l){a.onRejected?.({provider:this.name,model:a.model,effort:l.rejectedEffort}),d.suppressReasoningEffort=!0,u=!0;continue}}if(a&&u){let l=Be(p,a.effort);if(l)throw new ct(`${this.name} rejected reasoning effort "${l.rejectedEffort}" even after dropping it.`,this.name,l.rejectedEffort,a.model)}if(p instanceof Error){if(p.name==="TimeoutError")throw p;if(n?.aborted&&(p.name==="AbortError"||await _s(p)))throw p.name==="AbortError"?p:new DOMException(p.message||"Request aborted","AbortError");let l=Ut(p);throw(l==="ECONNRESET"||l==="EPIPE")&&this.onStaleConnection(),p instanceof I?p:ar(p)?rt(p,new ut(`${this.name} API error: ${p.message}`,!0)):rt(p,new I(`${this.name} API error: ${p.message}`,this.name,this.providerErrorMetadata(p)))}throw p}throw new fe("Unexpected end of withRateLimit")}};import{parse as Rs}from"partial-json";function Ue(e){if(!e)return{value:{},salvaged:!1};try{let t=JSON.parse(e);return{value:t&&typeof t=="object"&&!Array.isArray(t)?t:{},salvaged:!1}}catch{}try{let t=Rs(e);return process.env.KODAX_DEBUG_TOOL_STREAM&&console.warn("[Tool Block Salvaged] partial JSON recovered, rawLength=",e.length),{value:t&&typeof t=="object"&&!Array.isArray(t)?t:{},salvaged:!0}}catch{return{value:{},salvaged:!0}}}s(Ue,"parseToolInputWithSalvageTracked");function Ms(e){return Ue(e).value}s(Ms,"parseToolInputWithSalvage");var As={max_tokens:"truncated",length:"truncated",model_context_window_exceeded:"truncated",end_turn:"end",stop:"end",stop_sequence:"end",tool_use:"tool",tool_calls:"tool",function_call:"tool",pause_turn:"paused",refusal:"refused",content_filter:"refused"};function Wt(e){return e==null?"unknown":As[e.trim().toLowerCase()]??"unknown"}s(Wt,"classifyStopReason");function We(e){let t=Wt(e);return t==="end"||t==="tool"||t==="paused"}s(We,"isCleanStop");var Is=8e3;async function ze(e){if(e.strategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:"Provider does not support credential verification"};let t=e.runners.find(d=>d.strategy===e.strategy);if(!t)return{ok:!1,error:"unsupported",strategy:e.strategy,durationMs:0,approxTokensSpent:0,message:`verifyStrategy="${e.strategy}" is not implemented for this provider's base class`};if(e.signal?.aborted)return{ok:!1,error:"unknown",strategy:e.strategy,durationMs:0,approxTokensSpent:0,message:"caller aborted before verifyCredential started"};let n=new AbortController,o=e.timeoutMs??Is,r,i=s(d=>{r||(r=d),n.abort()},"recordAbort"),a=setTimeout(()=>i("timeout"),o),u=s(()=>i("parent"),"onParentAbort");e.signal&&e.signal.addEventListener("abort",u,{once:!0});let c=Date.now();try{return await t.run(n.signal),{ok:!0,strategy:e.strategy,durationMs:Date.now()-c,approxTokensSpent:t.approxTokensSpent}}catch(d){return Wn(d,{strategy:e.strategy,durationMs:Date.now()-c,approxTokensSpent:0,abortCause:r,providerName:e.providerName})}finally{clearTimeout(a),e.signal&&e.signal.removeEventListener("abort",u)}}s(ze,"runVerifyCredential");function Os(e){return e.replace(/\bsk-[A-Za-z0-9_-]{6,}/g,"sk-***")}s(Os,"redactKeyMaterial");function Wn(e,t){let n=Cn(e),o=n,r=o.status??o.statusCode??o.response?.status,i=Os(String(o.message??n)).slice(0,240),a=o.cause?.code??o.code,u=o.constructor?.name??"",c;return t.abortCause==="timeout"?c="timeout":t.abortCause==="parent"?c="unknown":u==="AuthenticationError"||u==="PermissionDeniedError"||r===401||r===403?c="unauthorized":r===429?c="rate_limited":r===400&&t.strategy==="count-tokens"&&t.providerName==="kimi-code"?c="unauthorized":r!==void 0&&r>=500&&r<600?c="server_error":a!==void 0&&/ENOTFOUND|ECONNREFUSED|ECONNRESET|EAI_AGAIN|EPIPE|ETIMEDOUT|ENETUNREACH|ENETDOWN|EHOSTUNREACH/i.test(a)?c="network":/timeout/i.test(i)?c="timeout":c="unknown",{ok:!1,error:c,status:r,message:i,durationMs:t.durationMs,approxTokensSpent:t.approxTokensSpent,strategy:t.strategy}}s(Wn,"classifyVerifyError");function zn(e,t){let n=e[e.length-1];if(n&&Xe(n)&&n.hint===t)return e;let o=t?{type:"cache-boundary",hint:t}:{type:"cache-boundary"};return[...e,o]}s(zn,"insertCacheBoundary");function Xe(e){if(typeof e!="object"||e===null||e.type!=="cache-boundary")return!1;let t=Object.keys(e);return t.length<=2&&t.every(n=>n==="type"||n==="hint")}s(Xe,"isCacheBoundary");function Xn(e,t){let n=[];for(let o of e){if(Xe(o)){if(t==="attach"&&n.length>0){let r=n[n.length-1];n[n.length-1]={...r,cache_control:{type:"ephemeral"}}}continue}n.push(o)}return n}s(Xn,"lowerCacheBoundaries");function He(e){return e.filter(t=>!Xe(t))}s(He,"stripCacheBoundaries");import{readFile as Vs,stat as qs}from"node:fs/promises";import Gs from"node:path";import{AsyncLocalStorage as Js}from"node:async_hooks";import{createHash as fr}from"node:crypto";import{createHash as Ds}from"node:crypto";import{AsyncLocalStorage as Ls}from"node:async_hooks";import{existsSync as cr}from"node:fs";import{createRequire as Ns}from"node:module";import dr from"node:path";import{Worker as $s}from"node:worker_threads";var js={jpg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp"},lr=10*1024*1024,Fs=4e7,Bs=1e4,Ks=256,de=new Map,zt,Us=Ls.snapshot(),Ws=`
|
|
4
4
|
const { parentPort, workerData } = require('node:worker_threads');
|
|
5
5
|
let photon;
|
|
6
6
|
try { photon = require(workerData.modulePath); }
|
|
@@ -14,23 +14,23 @@ if (photon) {
|
|
|
14
14
|
parentPort.postMessage(/memory|allocation|limit/i.test(String(error)) ? 'unavailable' : 'invalid');
|
|
15
15
|
} finally { if (image) image.free(); }
|
|
16
16
|
}
|
|
17
|
-
`;function Ws(){let e=dr.join(dr.dirname(process.execPath),"image-codec","photon_rs.js");if(process.env.KODAX_BUNDLED==="true")return cr(e)?e:void 0;try{return Ls(import.meta.url).resolve("@silvia-odwyer/photon-node")}catch{return cr(e)?e:void 0}}s(Ws,"codecPath");async function zs(e,t,n){if(n<=0)return{status:"unverified",reason:"processing_limit",mediaType:t};let o=Ws();return o?new Promise(r=>{let i;try{i=new $s(Us,{eval:!0,workerData:{modulePath:o,bytes:e},resourceLimits:{maxOldGenerationSizeMb:128}})}catch{r({status:"unverified",reason:"decoder_unavailable",mediaType:t});return}let a=!1,u=s(d=>{a||(a=!0,clearTimeout(c),i.terminate().then(()=>r(d==="valid"?{status:d,mediaType:t}:d==="invalid"?{status:d}:{status:"unverified",reason:"decoder_unavailable",mediaType:t}),()=>r({status:"unverified",reason:"decoder_unavailable",mediaType:t})))},"finish"),c=setTimeout(()=>u("unavailable"),n);i.once("message",u),i.once("error",()=>u("unavailable")),i.once("exit",()=>u("unavailable"))}):{status:"unverified",reason:"decoder_unavailable",mediaType:t}}s(zs,"decode");async function Xs(e){let t=performance.now()+Fs;if(!e.length)return{status:"invalid"};if(e.length>lr)return{status:"unverified",reason:"processing_limit"};let n;try{({imageSize:n}=await import("image-size"))}catch{return{status:"unverified",reason:"decoder_unavailable"}}let o;try{o=n(e)}catch{return{status:"invalid"}}let r=Ns[o.type??""];if(!r)return{status:"unverified",reason:"unsupported_format"};if(!o.width||!o.height)return{status:"invalid"};if(o.width*o.height>js)return{status:"unverified",reason:"processing_limit",mediaType:r};let i=(zt??Promise.resolve()).then(()=>zs(e,r,t-performance.now())),a=i.then(()=>{},()=>{});return zt=a,a.then(()=>{zt===a&&(zt=void 0)}),i}s(Xs,"inspect");async function Xt(e){if(e.length>lr)return{status:"unverified",reason:"processing_limit"};let t=Os("sha256").update(e).digest("hex"),n=ce.get(t);n||(n=Ks(()=>Xs(Buffer.from(e))),ce.set(t,n),ce.size>Bs&&ce.delete(ce.keys().next().value));try{let o=await n;return ce.get(t)===n&&(o.status==="unverified"?ce.delete(t):ce.set(t,o)),o}catch(o){throw ce.get(t)===n&&ce.delete(t),o}}s(Xt,"validateImageBytes");var Js={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},Hn="[Historical image unavailable: the local attachment file is missing.]",pr="[Image content omitted: this provider does not support inline images in tool results.]",Ys="[Image unavailable: this attachment cannot be decoded. Re-extract or replace this image; other content remains available.]",ee=new Gs;function Qs(e,t,n){return ee.run({images:new WeakMap,signal:t,shouldPrepare:n},e)}s(Qs,"withPreparedImageHistory");function gr(e){return ee.getStore()?.signal?.throwIfAborted(),Vn(Xt(e))}s(gr,"validateImageBytesInRun");function Zs(e,t,n){if(ee.getStore()?.shouldPrepare?.()===!1)return;let o=ee.getStore()?.images;if(!o)return;ee.getStore()?.signal?.throwIfAborted();let r={image:yr(t,e.path,e.mediaType,n)};o.set(e,{path:e.path,mediaType:e.mediaType,result:r,value:Promise.resolve(r)})}s(Zs,"prepareValidatedImageBlock");function ea(e){let t=ee.getStore()?.images.get(e);if(!t||t.path!==e.path||t.mediaType!==e.mediaType||!t.result||!("image"in t.result))return;let n=t.result.image;return t.diagnostic??="placeholder"in n?n:{dataHash:fr("sha256").update(Buffer.from(n.data,"base64")).digest("hex"),mediaType:n.mediaType,...n.notice?{notice:n.notice}:{}},t.diagnostic}s(ea,"getPreparedImageDiagnostic");async function ta(e){let t=await Se(e);if("placeholder"in t)return t;let n=Buffer.from(t.data,"base64");return{validation:await gr(n),dataHash:fr("sha256").update(n).digest("hex")}}s(ta,"inspectPreparedImage");function na(e){if(ee.getStore()?.shouldPrepare?.()===!1)return;let t=ee.getStore()?.images;if(!t)return;let n=[],o=s(r=>{let i=t.get(r);(!i?.result||i.path!==r.path||i.mediaType!==r.mediaType)&&n.push(r)},"collect");for(let r of e)if(typeof r.content!="string"){for(let i of r.content)if(i.type==="image"&&o(i),i.type==="tool_result"&&typeof i.content!="string")for(let a of i.content)a.type==="image"&&o(a)}if(n.length)return(async()=>{for(let r of n)ee.getStore()?.signal?.throwIfAborted(),await Vn(mr(t,r).value)})()}s(na,"prepareHistoryImages");async function Se(e){let t=ee.getStore()?.images;if(!t)return hr(e.path,e.mediaType);ee.getStore()?.signal?.throwIfAborted();let n=mr(t,e),o=await Vn(n.value);if("image"in o)return o.image;throw t.get(e)===n&&t.delete(e),o.error}s(Se,"prepareImageBlock");function Vn(e){let t=ee.getStore()?.signal;return t?(t.throwIfAborted(),new Promise((n,o)=>{let r=s(()=>{t.removeEventListener("abort",r),o(t.reason)},"abort");t.addEventListener("abort",r,{once:!0}),e.then(i=>{t.removeEventListener("abort",r),n(i)},i=>{t.removeEventListener("abort",r),o(i)})})):e}s(Vn,"waitForPreparation");function mr(e,t){let n=e.get(t);return n&&n.path===t.path&&n.mediaType===t.mediaType?n:oa(e,t,hr(t.path,t.mediaType))}s(mr,"prepareEntry");function oa(e,t,n){let o={path:t.path,mediaType:t.mediaType,value:n.then(r=>o.result={image:r},r=>o.result={error:r})};return e.set(t,o),o}s(oa,"rememberEntry");async function hr(e,t){let n;try{n=await Hs(e)}catch(o){let r=o.code;if(r==="ENOENT"||r==="ENOTDIR")return{placeholder:Hn};throw o}return ra(n,e,t)}s(hr,"prepareImageFile");async function ra(e,t,n){let o=await Xt(e);return yr(e,t,n,o)}s(ra,"prepareImageBytes");function yr(e,t,n,o){return o.status==="invalid"?{placeholder:Ys}:{data:e.toString("base64"),mediaType:o.mediaType??ia(t,n),...o.status==="unverified"?{notice:`[Local image validation unavailable (${o.reason}); original image bytes retained.]`}:{}}}s(yr,"serializeValidatedImage");async function vr(e){try{return await Vs(e),!1}catch(t){let n=t.code;return n==="ENOENT"||n==="ENOTDIR"}}s(vr,"isImageFileMissing");function ia(e,t){return t??Js[qs.extname(e).toLowerCase()]??"image/png"}s(ia,"resolveImageMediaType");var sa="KodaX",aa="effort-2025-11-24";async function Gn(e){let{default:t}=await import("@anthropic-ai/sdk");return new t({...e,fetch:Dt(e?.fetch??globalThis.fetch)})}s(Gn,"createAnthropicSdkClient");function br(e,t){if(t===void 0||t.length===0)return e;let n={type:"text",text:t},o=e.at(-1);if(o?.role!=="user")return[...e,{role:"user",content:[n]}];let r=typeof o.content=="string"?[{type:"text",text:o.content},n]:[...o.content,n];return[...e.slice(0,-1),{...o,content:r}]}s(br,"appendAnthropicEphemeralSuffix");function ua(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":sa}}s(ua,"getAnthropicCompatDefaultHeaders");function qn(e,t){if(!e)return t;let n=typeof e.input_tokens=="number",o=typeof e.cache_creation_input_tokens=="number",r=typeof e.cache_read_input_tokens=="number",i=n||o||r,a=n?e.input_tokens:0,u=i?o?e.cache_creation_input_tokens:void 0:t?.cachedWriteTokens,c=i?r?e.cache_read_input_tokens:void 0:t?.cachedReadTokens,d=typeof e.output_tokens=="number"?e.output_tokens:t?.outputTokens??0,f=i?a+(u??0)+(c??0):t?.inputTokens??0;if(![f,d,u,c].some(p=>p!==void 0&&(!Number.isFinite(p)||p<0)))return{inputTokens:f,outputTokens:d,totalTokens:f+d,...c!==void 0?{cachedReadTokens:c}:{},...u!==void 0?{cachedWriteTokens:u}:{}}}s(qn,"normalizeAnthropicUsage");function Jn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}s(Jn,"isRecord");function ca(e){if(!(!e.enabled||e.effort==="auto"||e.effort==="none"))return e.effort}s(ca,"selectAnthropicOutputEffort");function Er(e,t){let n=ca(t);if(!n)return;let o=e,r=o.output_config;o.output_config={...Jn(r)?r:{},effort:n}}s(Er,"applyAnthropicOutputEffort");function Ht(e,t){if(!t)return;let n=e,o=n.output_config;n.output_config={...Jn(o)?o:{},effort:t}}s(Ht,"setAnthropicOutputEffort");function da(e){let n=e.output_config;return Jn(n)&&typeof n.effort=="string"}s(da,"hasAnthropicOutputEffort");var N=class extends ue{static{s(this,"KodaXAnthropicCompatProvider")}requestObservationBoundary="physical_attempt";supportsThinking=!0;_client;_clientPromise;async getClient(){if(we())return this.buildClient();if(this._client)return this._client;let t=this._clientPromise??=Promise.resolve(this.buildClient());try{let n=await t;return this._clientPromise===t&&(this._client=n,this._clientPromise=void 0),this._client??n}catch(n){throw this._clientPromise===t&&(this._clientPromise=void 0),n}}set client(t){this._client=t,this._clientPromise=void 0}buildClient(){let t=ua(this.config);return Gn({apiKey:this.getApiKey(),authToken:null,baseURL:this.config.baseUrl,...t?{defaultHeaders:t}:{}})}onStaleConnection(){this._client=void 0}buildMessageCreateOptions(t,n,o){let i=this.getReasoningProfile(n)?.requiresEffortBetaHeader&&da(t)?{"anthropic-beta":aa}:void 0;return{...o?{signal:o}:{},...i?{headers:i}:{}}}applyReasoningProfile(t,n,o,r,i,a){if(a)return;this.validateExplicitReasoningEffort(o,r);let u=this.resolveReasoningProfileIntent(o,n,r),c=n.reasoningPreset,d=t;if(c==="kimi-k2.7-code"||c==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(c==="kimi-k3"){let f=o.effortSource==="omitted"&&o.effort==="none";if(u.disabled&&!f){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:f?n.defaultEffort??"max":u.effort??n.defaultEffort??"max"};return}if(!(c==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(u.disabled){if(c==="zai-glm-5.3"){t.thinking={type:"adaptive"},Ht(t,"low");return}(n.supportsDisabledThinking===!0||c==="zai-glm-5.2"||c==="zai-glm-toggle"||c==="deepseek-v4-anthropic"||c==="deepseek-toggle"||c==="kimi-hybrid-toggle"||c==="minimax-m3"||c==="mimo-v2.5-toggle"||n.thinkingStrategy==="provider-toggle")&&(t.thinking={type:"disabled"});return}if(c==="zai-glm-5.2"){t.thinking={type:"enabled"},u.effort&&(d.reasoning_effort=u.effort);return}if(c==="zai-glm-5.3"){t.thinking={type:"adaptive"},Ht(t,u.effort);return}if(c==="deepseek-v4-anthropic"){t.thinking={type:"enabled"},Ht(t,u.effort);return}if(c==="minimax-m3"){t.thinking={type:"adaptive"};return}if(c==="zai-glm-toggle"||c==="deepseek-toggle"||c==="kimi-hybrid-toggle"||c==="mimo-v2.5-toggle"||n.effortStrategy==="provider-toggle"){t.thinking={type:"enabled"};return}if(n.effortStrategy==="anthropic-reasoning-effort"){t.thinking={type:"enabled"},u.effort&&(d.reasoning_effort=u.effort);return}if(n.effortStrategy==="anthropic-output-effort"||n.thinkingStrategy==="anthropic-adaptive"){t.thinking={type:"adaptive"},Ht(t,u.effort);return}if(n.effortStrategy==="provider-budget"||n.thinkingStrategy==="anthropic-budget"){let f=this.resolveReasoningProfileBudget(n,u.effort,o,r,i);t.thinking={type:"enabled",budget_tokens:f}}}}resolveReasoningProfileBudget(t,n,o,r,i){let u=(n?t.budgetByEffort?.[n]:void 0)??Te(this.config,Pe(o.effort),o.taskType),c=this.getEffectiveThinkingBudgetCap(r),d=c!==void 0?Math.min(u,c):u;return _e(d,i)}async verifyCredential(t){let n=this.config.model,o=[{strategy:"count-tokens",approxTokensSpent:0,run:s(r=>ie(this.name,"utility",r,async i=>{await(await this.getClient()).messages.countTokens({model:n,messages:[{role:"user",content:"hi"}]},{signal:i})}),"run")},{strategy:"models-list",approxTokensSpent:0,run:s(r=>ie(this.name,"utility",r,async i=>{await(await this.getClient()).models.list({},{signal:i})}),"run")},{strategy:"minimal-message",approxTokensSpent:7,run:s(r=>ie(this.name,"utility",r,async i=>{await(await this.getClient()).messages.create({model:n,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:i})}),"run")}];return ze({strategy:this.config.verifyStrategy??"count-tokens",runners:o,timeoutMs:t?.timeoutMs,signal:t?.signal,providerName:this.name})}applyCacheControlToSystem(t){if(!t.trim()||se())return t;let n=zn([{type:"text",text:t}],"system");return Xn(n,"attach")}applyCacheControlToTools(t){if(t.length===0||se())return t;let n=t.slice(),o=n[n.length-1];return n[n.length-1]={...o,cache_control:{type:"ephemeral"}},n}applyCacheControlToMessages(t){if(t.length===0||se())return t;let n=-1;for(let d=t.length-1;d>=0;d--)if(t[d].role==="user"){n=d;break}if(n===-1)return t;let o=t[n];if(typeof o.content=="string"){if(o.content.length===0)return t;let d=t.slice();return d[n]={...o,content:[{type:"text",text:o.content,cache_control:{type:"ephemeral"}}]},d}if(o.content.length===0)return t;let r=o.content,a={...r[r.length-1],cache_control:{type:"ephemeral"}},u=[...r.slice(0,-1),a],c=t.slice();return c[n]={...o,content:u},c}supportsEphemeralSuffix(){return!0}async stream(t,n,o,r,i,a){return this.withRateLimit(async u=>{let c=this.normalizeReasoning(r),d=i?.modelOverride??this.config.model,f=this.getWireModelId(d);this.validateExplicitReasoningEffort(c,d);let p=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(d);u.maxOutputTokensLimit??=p;let l=u.maxOutputTokensOverride??p,h=br(this.applyCacheControlToMessages(await this.convertMessages(t,d)),i?.ephemeralSuffix?.content),m=c.enabled?this.getReasoningCapability(d):"none",T=this.getReasoningProfile(d),g=T?["profile","none"]:c.enabled?this.getReasoningFallbackChain(m).filter(w=>w==="native-budget"||w==="native-toggle"||w==="native-adaptive"||w==="none"):["none"],y=n.length>0&&!!i?.forcedToolName,k=s(w=>{let S={model:f,max_tokens:l,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:h,...n.length>0?{tools:this.applyCacheControlToTools(n)}:{},stream:!0,...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!se()?{metadata:{user_id:i.promptCacheKey}}:{}};if(n.length>0&&i?.forcedToolName&&y&&(S.tool_choice={type:"tool",name:i.forcedToolName}),w!=="none")if(w==="profile"&&T)this.applyReasoningProfile(S,T,c,d,l,u.suppressReasoningEffort);else if(w==="native-budget"){let A=Te(this.config,Pe(c.effort),c.taskType);S.thinking={type:"enabled",budget_tokens:_e(A,l)}}else w==="native-toggle"?S.thinking={type:"enabled"}:w==="native-adaptive"&&(S.thinking={type:"adaptive"},Er(S,c));return S},"buildRequest");if(a?.aborted)throw new DOMException("Request aborted","AbortError");let v=[],x=[],P=[],R,E=null,_="",b="",C="",L="",$="",j="",q="",G=!1,F,D=Date.now(),be=Date.now(),X=await this.getClient(),Y,H;for(let w of g){for(;!Y;)try{let S=k(w);Y=await X.messages.create(S,{...this.buildMessageCreateOptions(S,d,a),...i?.singleAttempt?{maxRetries:0}:{}}).catch(A=>{throw De(A,S),A})}catch(S){if(i?.singleAttempt)throw S;if(H=S,y&&this.shouldFallbackForForcedToolChoiceError(S)){y=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let A=w==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:w==="native-budget"?["budget_tokens","thinking"]:w==="native-toggle"?["thinking"]:w==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(S,...A))throw S;break}if(Y)break}if(!Y)throw H??new I("All reasoning capability attempts failed without a captured error",this.name);let K=Date.now(),Ie=0,It=0,O=3e4;for await(let w of Y){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let S=Date.now(),A=S-K;if(A>O&&(Ie++,It+=A,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(A/1e3)}s gap before ${w.type}`,{stallCount:Ie,totalStallMs:It,eventType:w.type})),K=S,w.type==="content_block_start"||w.type==="content_block_stop"?i?.onHeartbeat?.(!0):i?.onHeartbeat?.(),w.type==="content_block_start"){D=Date.now();let M=w.content_block;E=M.type,process.env.KODAX_DEBUG_TOOL_STREAM&&M.type==="tool_use"&&console.error("[ToolStream] content_block_start:",{type:M.type,id:M.id,name:M.name}),M.type==="thinking"?(b="",C=M.signature??""):M.type==="redacted_thinking"?(E="redacted_thinking",L=M.data??""):M.type==="text"?_="":M.type==="tool_use"&&($=M.id,j=M.name,q="")}else if(w.type==="content_block_delta"){D=Date.now();let M=w.delta;M.type==="thinking_delta"?(b+=M.thinking??"",i?.onThinkingDelta?.(M.thinking??"")):M.type==="text_delta"?(_+=M.text??"",i?.onTextDelta?.(M.text??"")):M.type==="input_json_delta"&&(q+=M.partial_json??"",i?.onToolInputDelta?.(j,M.partial_json??"",$?{toolId:$}:void 0))}else if(w.type==="content_block_stop"){if(D=Date.now(),E==="thinking")b&&(P.push({type:"thinking",thinking:b,signature:C}),i?.onThinkingEnd?.(b));else if(E==="redacted_thinking")L&&P.push({type:"redacted_thinking",data:L}),L="";else if(E==="text")_&&v.push({type:"text",text:_});else if(E==="tool_use")if(!$||!j)process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Missing tool id or name:",{id:JSON.stringify($),name:JSON.stringify(j),input:q.slice(0,100)});else{let M=Ue(q);x.push({type:"tool_use",id:$,name:j,input:M.value,...M.salvaged?{_salvaged:!0,_truncated:!0}:{}})}E=null}else if(w.type==="message_stop"){if(G=!0,D=Date.now(),process.env.KODAX_DEBUG_STREAM){let M=Date.now()-be;this.logStreamDiagnostic(`[Stream] message_stop received after ${M}ms`)}}else if(w.type==="message_delta"){D=Date.now(),R=qn(w.usage,R);let M=w.delta;M?.stop_reason&&(F=M.stop_reason,process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic(`[Stream] message_delta with stop_reason: ${F}`))}else w.type==="message_start"&&(D=Date.now(),R=qn(w.message?.usage,R),process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic("[Stream] message_start received"))}if(!G){let w=Date.now()-be,S=Date.now()-D;if(a?.aborted){let A=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:w,lastEventAge:S,reason:A,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length}),new DOMException(A,"AbortError")}if(!F){let A=new Error(`Stream incomplete: message_stop event not received. Duration: ${w}ms, Last event: ${S}ms ago. This may indicate a network disconnection or API timeout.`);throw A.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:w,lastEventAge:S,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length}),A}this.logStreamDiagnostic("[Stream] message_stop missing but stop_reason known \u2014 treating as complete:",{duration:w,lastEventAge:S,stopReason:F,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length})}let Q=We(F)?x.map(({_truncated:w,...S})=>S):x;return{textBlocks:v,toolBlocks:Q,thinkingBlocks:P,usage:R,stopReason:F}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter,{model:i?.modelOverride??this.config.model,onRejected:i?.onReasoningEffortRejected})}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,i,a){return this.withRateLimit(async u=>{let c=this.normalizeReasoning(r),d=i?.modelOverride??this.config.model,f=this.getWireModelId(d);this.validateExplicitReasoningEffort(c,d);let p=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(d);u.maxOutputTokensLimit??=p;let l=u.maxOutputTokensOverride??p,h=br(this.applyCacheControlToMessages(await this.convertMessages(t,d)),i?.ephemeralSuffix?.content),m=c.enabled?this.getReasoningCapability(d):"none",T=this.getReasoningProfile(d),g=T?["profile","none"]:c.enabled?this.getReasoningFallbackChain(m).filter(b=>b==="native-budget"||b==="native-toggle"||b==="native-adaptive"||b==="none"):["none"],y=n.length>0&&!!i?.forcedToolName,k=s(b=>{let C={model:f,max_tokens:l,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:h,...n.length>0?{tools:this.applyCacheControlToTools(n)}:{},...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!se()?{metadata:{user_id:i.promptCacheKey}}:{}};if(n.length>0&&i?.forcedToolName&&y&&(C.tool_choice={type:"tool",name:i.forcedToolName}),b!=="none")if(b==="profile"&&T)this.applyReasoningProfile(C,T,c,d,l,u.suppressReasoningEffort);else if(b==="native-budget"){let L=Te(this.config,Pe(c.effort),c.taskType);C.thinking={type:"enabled",budget_tokens:_e(L,l)}}else b==="native-toggle"?C.thinking={type:"enabled"}:b==="native-adaptive"&&(C.thinking={type:"adaptive"},Er(C,c));return C},"buildRequest"),v=await this.getClient(),x,P;for(let b of g){for(;!x;)try{let C=k(b);x=await v.messages.create(C,{...this.buildMessageCreateOptions(C,d,a),...i?.singleAttempt?{maxRetries:0}:{}}).catch(L=>{throw De(L,C),L})}catch(C){if(i?.singleAttempt)throw C;if(P=C,y&&this.shouldFallbackForForcedToolChoiceError(C)){y=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let L=b==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:b==="native-budget"?["budget_tokens","thinking"]:b==="native-toggle"?["thinking"]:b==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(C,...L))throw C;break}if(x)break}if(!x)throw P??new I("All reasoning capability attempts failed without a captured error",this.name);let R=[],E=[],_=[];for(let b of x.content)b.type==="text"?(R.push({type:"text",text:b.text}),i?.onTextDelta?.(b.text)):b.type==="thinking"?(_.push({type:"thinking",thinking:b.thinking,signature:b.signature??""}),i?.onThinkingDelta?.(b.thinking),i?.onThinkingEnd?.(b.thinking)):b.type==="redacted_thinking"?_.push({type:"redacted_thinking",data:b.data}):b.type==="tool_use"&&E.push({type:"tool_use",id:b.id,name:b.name,input:typeof b.input=="object"&&b.input!==null?b.input:{}});return{textBlocks:R,toolBlocks:E,thinkingBlocks:_,usage:qn(x.usage),stopReason:x.stop_reason??void 0}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter,{model:i?.modelOverride??this.config.model,onRejected:i?.onReasoningEffortRejected})}serializeSystemMessageContent(t){if(typeof t=="string")return t.trim();for(let n of t)if(Xe(n))throw new I("cache-boundary marker reached system message serialization unlowered. Provider base class lowering must run before any wire-level serialization.",this.name,{failureCode:"request_build_failed",stage:"request_build"});return t.filter(n=>n.type==="text").map(n=>n.text.trim()).filter(Boolean).join(`
|
|
17
|
+
`;function zs(){let e=dr.join(dr.dirname(process.execPath),"image-codec","photon_rs.js");if(process.env.KODAX_BUNDLED==="true")return cr(e)?e:void 0;try{return Ns(import.meta.url).resolve("@silvia-odwyer/photon-node")}catch{return cr(e)?e:void 0}}s(zs,"codecPath");async function Xs(e,t,n){if(n<=0)return{status:"unverified",reason:"processing_limit",mediaType:t};let o=zs();return o?new Promise(r=>{let i;try{i=new $s(Ws,{eval:!0,workerData:{modulePath:o,bytes:e},resourceLimits:{maxOldGenerationSizeMb:128}})}catch{r({status:"unverified",reason:"decoder_unavailable",mediaType:t});return}let a=!1,u=s(d=>{a||(a=!0,clearTimeout(c),i.terminate().then(()=>r(d==="valid"?{status:d,mediaType:t}:d==="invalid"?{status:d}:{status:"unverified",reason:"decoder_unavailable",mediaType:t}),()=>r({status:"unverified",reason:"decoder_unavailable",mediaType:t})))},"finish"),c=setTimeout(()=>u("unavailable"),n);i.once("message",u),i.once("error",()=>u("unavailable")),i.once("exit",()=>u("unavailable"))}):{status:"unverified",reason:"decoder_unavailable",mediaType:t}}s(Xs,"decode");async function Hs(e){let t=performance.now()+Bs;if(!e.length)return{status:"invalid"};if(e.length>lr)return{status:"unverified",reason:"processing_limit"};let n;try{({imageSize:n}=await import("image-size"))}catch{return{status:"unverified",reason:"decoder_unavailable"}}let o;try{o=n(e)}catch{return{status:"invalid"}}let r=js[o.type??""];if(!r)return{status:"unverified",reason:"unsupported_format"};if(!o.width||!o.height)return{status:"invalid"};if(o.width*o.height>Fs)return{status:"unverified",reason:"processing_limit",mediaType:r};let i=(zt??Promise.resolve()).then(()=>Xs(e,r,t-performance.now())),a=i.then(()=>{},()=>{});return zt=a,a.then(()=>{zt===a&&(zt=void 0)}),i}s(Hs,"inspect");async function Xt(e){if(e.length>lr)return{status:"unverified",reason:"processing_limit"};let t=Ds("sha256").update(e).digest("hex"),n=de.get(t);n||(n=Us(()=>Hs(Buffer.from(e))),de.set(t,n),de.size>Ks&&de.delete(de.keys().next().value));try{let o=await n;return de.get(t)===n&&(o.status==="unverified"?de.delete(t):de.set(t,o)),o}catch(o){throw de.get(t)===n&&de.delete(t),o}}s(Xt,"validateImageBytes");var Ys={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},Hn="[Historical image unavailable: the local attachment file is missing.]",pr="[Image content omitted: this provider does not support inline images in tool results.]",Qs="[Image unavailable: this attachment cannot be decoded. Re-extract or replace this image; other content remains available.]",ee=new Js;function Zs(e,t,n){return ee.run({images:new WeakMap,signal:t,shouldPrepare:n},e)}s(Zs,"withPreparedImageHistory");function gr(e){return ee.getStore()?.signal?.throwIfAborted(),Vn(Xt(e))}s(gr,"validateImageBytesInRun");function ea(e,t,n){if(ee.getStore()?.shouldPrepare?.()===!1)return;let o=ee.getStore()?.images;if(!o)return;ee.getStore()?.signal?.throwIfAborted();let r={image:yr(t,e.path,e.mediaType,n)};o.set(e,{path:e.path,mediaType:e.mediaType,result:r,value:Promise.resolve(r)})}s(ea,"prepareValidatedImageBlock");function ta(e){let t=ee.getStore()?.images.get(e);if(!t||t.path!==e.path||t.mediaType!==e.mediaType||!t.result||!("image"in t.result))return;let n=t.result.image;return t.diagnostic??="placeholder"in n?n:{dataHash:fr("sha256").update(Buffer.from(n.data,"base64")).digest("hex"),mediaType:n.mediaType,...n.notice?{notice:n.notice}:{}},t.diagnostic}s(ta,"getPreparedImageDiagnostic");async function na(e){let t=await Se(e);if("placeholder"in t)return t;let n=Buffer.from(t.data,"base64");return{validation:await gr(n),dataHash:fr("sha256").update(n).digest("hex")}}s(na,"inspectPreparedImage");function oa(e){if(ee.getStore()?.shouldPrepare?.()===!1)return;let t=ee.getStore()?.images;if(!t)return;let n=[],o=s(r=>{let i=t.get(r);(!i?.result||i.path!==r.path||i.mediaType!==r.mediaType)&&n.push(r)},"collect");for(let r of e)if(typeof r.content!="string"){for(let i of r.content)if(i.type==="image"&&o(i),i.type==="tool_result"&&typeof i.content!="string")for(let a of i.content)a.type==="image"&&o(a)}if(n.length)return(async()=>{for(let r of n)ee.getStore()?.signal?.throwIfAborted(),await Vn(mr(t,r).value)})()}s(oa,"prepareHistoryImages");async function Se(e){let t=ee.getStore()?.images;if(!t)return hr(e.path,e.mediaType);ee.getStore()?.signal?.throwIfAborted();let n=mr(t,e),o=await Vn(n.value);if("image"in o)return o.image;throw t.get(e)===n&&t.delete(e),o.error}s(Se,"prepareImageBlock");function Vn(e){let t=ee.getStore()?.signal;return t?(t.throwIfAborted(),new Promise((n,o)=>{let r=s(()=>{t.removeEventListener("abort",r),o(t.reason)},"abort");t.addEventListener("abort",r,{once:!0}),e.then(i=>{t.removeEventListener("abort",r),n(i)},i=>{t.removeEventListener("abort",r),o(i)})})):e}s(Vn,"waitForPreparation");function mr(e,t){let n=e.get(t);return n&&n.path===t.path&&n.mediaType===t.mediaType?n:ra(e,t,hr(t.path,t.mediaType))}s(mr,"prepareEntry");function ra(e,t,n){let o={path:t.path,mediaType:t.mediaType,value:n.then(r=>o.result={image:r},r=>o.result={error:r})};return e.set(t,o),o}s(ra,"rememberEntry");async function hr(e,t){let n;try{n=await Vs(e)}catch(o){let r=o.code;if(r==="ENOENT"||r==="ENOTDIR")return{placeholder:Hn};throw o}return ia(n,e,t)}s(hr,"prepareImageFile");async function ia(e,t,n){let o=await Xt(e);return yr(e,t,n,o)}s(ia,"prepareImageBytes");function yr(e,t,n,o){return o.status==="invalid"?{placeholder:Qs}:{data:e.toString("base64"),mediaType:o.mediaType??sa(t,n),...o.status==="unverified"?{notice:`[Local image validation unavailable (${o.reason}); original image bytes retained.]`}:{}}}s(yr,"serializeValidatedImage");async function vr(e){try{return await qs(e),!1}catch(t){let n=t.code;return n==="ENOENT"||n==="ENOTDIR"}}s(vr,"isImageFileMissing");function sa(e,t){return t??Ys[Gs.extname(e).toLowerCase()]??"image/png"}s(sa,"resolveImageMediaType");var aa="KodaX",ua="effort-2025-11-24";async function Gn(e){let{default:t}=await import("@anthropic-ai/sdk");return new t({...e,fetch:Dt(e?.fetch??globalThis.fetch)})}s(Gn,"createAnthropicSdkClient");function br(e,t){if(t===void 0||t.length===0)return e;let n={type:"text",text:t},o=e.at(-1);if(o?.role!=="user")return[...e,{role:"user",content:[n]}];let r=typeof o.content=="string"?[{type:"text",text:o.content},n]:[...o.content,n];return[...e.slice(0,-1),{...o,content:r}]}s(br,"appendAnthropicEphemeralSuffix");function ca(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":aa}}s(ca,"getAnthropicCompatDefaultHeaders");function qn(e,t){if(!e)return t;let n=typeof e.input_tokens=="number",o=typeof e.cache_creation_input_tokens=="number",r=typeof e.cache_read_input_tokens=="number",i=n||o||r,a=n?e.input_tokens:0,u=i?o?e.cache_creation_input_tokens:void 0:t?.cachedWriteTokens,c=i?r?e.cache_read_input_tokens:void 0:t?.cachedReadTokens,d=typeof e.output_tokens=="number"?e.output_tokens:t?.outputTokens??0,f=i?a+(u??0)+(c??0):t?.inputTokens??0;if(![f,d,u,c].some(p=>p!==void 0&&(!Number.isFinite(p)||p<0)))return{inputTokens:f,outputTokens:d,totalTokens:f+d,...c!==void 0?{cachedReadTokens:c}:{},...u!==void 0?{cachedWriteTokens:u}:{}}}s(qn,"normalizeAnthropicUsage");function Jn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}s(Jn,"isRecord");function da(e){if(!(!e.enabled||e.effort==="auto"||e.effort==="none"))return e.effort}s(da,"selectAnthropicOutputEffort");function Er(e,t){let n=da(t);if(!n)return;let o=e,r=o.output_config;o.output_config={...Jn(r)?r:{},effort:n}}s(Er,"applyAnthropicOutputEffort");function Ht(e,t){if(!t)return;let n=e,o=n.output_config;n.output_config={...Jn(o)?o:{},effort:t}}s(Ht,"setAnthropicOutputEffort");function la(e){let n=e.output_config;return Jn(n)&&typeof n.effort=="string"}s(la,"hasAnthropicOutputEffort");var $=class extends ce{static{s(this,"KodaXAnthropicCompatProvider")}requestObservationBoundary="physical_attempt";supportsThinking=!0;_client;_clientPromise;async getClient(){if(we())return this.buildClient();if(this._client)return this._client;let t=this._clientPromise??=Promise.resolve(this.buildClient());try{let n=await t;return this._clientPromise===t&&(this._client=n,this._clientPromise=void 0),this._client??n}catch(n){throw this._clientPromise===t&&(this._clientPromise=void 0),n}}set client(t){this._client=t,this._clientPromise=void 0}buildClient(){let t=ca(this.config);return Gn({apiKey:this.getApiKey(),authToken:null,baseURL:this.config.baseUrl,...t?{defaultHeaders:t}:{}})}onStaleConnection(){this._client=void 0}buildMessageCreateOptions(t,n,o){let i=this.getReasoningProfile(n)?.requiresEffortBetaHeader&&la(t)?{"anthropic-beta":ua}:void 0;return{...o?{signal:o}:{},...i?{headers:i}:{}}}applyReasoningProfile(t,n,o,r,i,a){if(a)return;this.validateExplicitReasoningEffort(o,r);let u=this.resolveReasoningProfileIntent(o,n,r),c=n.reasoningPreset,d=t;if(c==="kimi-k2.7-code"||c==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(c==="kimi-k3"){let f=o.effortSource==="omitted"&&o.effort==="none";if(u.disabled&&!f){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:f?n.defaultEffort??"max":u.effort??n.defaultEffort??"max"};return}if(!(c==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(u.disabled){if(c==="zai-glm-5.3"){t.thinking={type:"adaptive"},Ht(t,"low");return}(n.supportsDisabledThinking===!0||c==="zai-glm-5.2"||c==="zai-glm-toggle"||c==="deepseek-v4-anthropic"||c==="deepseek-toggle"||c==="kimi-hybrid-toggle"||c==="minimax-m3"||c==="mimo-v2.5-toggle"||n.thinkingStrategy==="provider-toggle")&&(t.thinking={type:"disabled"});return}if(c==="zai-glm-5.2"){t.thinking={type:"enabled"},u.effort&&(d.reasoning_effort=u.effort);return}if(c==="zai-glm-5.3"){t.thinking={type:"adaptive"},Ht(t,u.effort);return}if(c==="deepseek-v4-anthropic"){t.thinking={type:"enabled"},Ht(t,u.effort);return}if(c==="minimax-m3"){t.thinking={type:"adaptive"};return}if(c==="zai-glm-toggle"||c==="deepseek-toggle"||c==="kimi-hybrid-toggle"||c==="mimo-v2.5-toggle"||n.effortStrategy==="provider-toggle"){t.thinking={type:"enabled"};return}if(n.effortStrategy==="anthropic-reasoning-effort"){t.thinking={type:"enabled"},u.effort&&(d.reasoning_effort=u.effort);return}if(n.effortStrategy==="anthropic-output-effort"||n.thinkingStrategy==="anthropic-adaptive"){t.thinking={type:"adaptive"},Ht(t,u.effort);return}if(n.effortStrategy==="provider-budget"||n.thinkingStrategy==="anthropic-budget"){let f=this.resolveReasoningProfileBudget(n,u.effort,o,r,i);t.thinking={type:"enabled",budget_tokens:f}}}}resolveReasoningProfileBudget(t,n,o,r,i){let u=(n?t.budgetByEffort?.[n]:void 0)??Te(this.config,Pe(o.effort),o.taskType),c=this.getEffectiveThinkingBudgetCap(r),d=c!==void 0?Math.min(u,c):u;return _e(d,i)}async verifyCredential(t){let n=this.config.model,o=[{strategy:"count-tokens",approxTokensSpent:0,run:s(r=>se(this.name,"utility",r,async i=>{await(await this.getClient()).messages.countTokens({model:n,messages:[{role:"user",content:"hi"}]},{signal:i})}),"run")},{strategy:"models-list",approxTokensSpent:0,run:s(r=>se(this.name,"utility",r,async i=>{await(await this.getClient()).models.list({},{signal:i})}),"run")},{strategy:"minimal-message",approxTokensSpent:7,run:s(r=>se(this.name,"utility",r,async i=>{await(await this.getClient()).messages.create({model:n,max_tokens:1,messages:[{role:"user",content:"hi"}]},{signal:i})}),"run")}];return ze({strategy:this.config.verifyStrategy??"count-tokens",runners:o,timeoutMs:t?.timeoutMs,signal:t?.signal,providerName:this.name})}applyCacheControlToSystem(t){if(!t.trim()||ae())return t;let n=zn([{type:"text",text:t}],"system");return Xn(n,"attach")}applyCacheControlToTools(t){if(t.length===0||ae())return t;let n=t.slice(),o=n[n.length-1];return n[n.length-1]={...o,cache_control:{type:"ephemeral"}},n}applyCacheControlToMessages(t){if(t.length===0||ae())return t;let n=-1;for(let d=t.length-1;d>=0;d--)if(t[d].role==="user"){n=d;break}if(n===-1)return t;let o=t[n];if(typeof o.content=="string"){if(o.content.length===0)return t;let d=t.slice();return d[n]={...o,content:[{type:"text",text:o.content,cache_control:{type:"ephemeral"}}]},d}if(o.content.length===0)return t;let r=o.content,a={...r[r.length-1],cache_control:{type:"ephemeral"}},u=[...r.slice(0,-1),a],c=t.slice();return c[n]={...o,content:u},c}supportsEphemeralSuffix(){return!0}async stream(t,n,o,r,i,a){return this.withRateLimit(async u=>{let c=this.normalizeReasoning(r),d=i?.modelOverride??this.config.model,f=this.getWireModelId(d);this.validateExplicitReasoningEffort(c,d);let p=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(d);u.maxOutputTokensLimit??=p;let l=u.maxOutputTokensOverride??p,h=br(this.applyCacheControlToMessages(await this.convertMessages(t,d)),i?.ephemeralSuffix?.content),m=c.enabled?this.getReasoningCapability(d):"none",T=this.getReasoningProfile(d),g=T?["profile","none"]:c.enabled?this.getReasoningFallbackChain(m).filter(w=>w==="native-budget"||w==="native-toggle"||w==="native-adaptive"||w==="none"):["none"],y=n.length>0&&!!i?.forcedToolName,k=s(w=>{let S={model:f,max_tokens:l,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:h,...n.length>0?{tools:this.applyCacheControlToTools(n)}:{},stream:!0,...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!ae()?{metadata:{user_id:i.promptCacheKey}}:{}};if(n.length>0&&i?.forcedToolName&&y&&(S.tool_choice={type:"tool",name:i.forcedToolName}),w!=="none")if(w==="profile"&&T)this.applyReasoningProfile(S,T,c,d,l,u.suppressReasoningEffort);else if(w==="native-budget"){let A=Te(this.config,Pe(c.effort),c.taskType);S.thinking={type:"enabled",budget_tokens:_e(A,l)}}else w==="native-toggle"?S.thinking={type:"enabled"}:w==="native-adaptive"&&(S.thinking={type:"adaptive"},Er(S,c));return S},"buildRequest");if(a?.aborted)throw new DOMException("Request aborted","AbortError");let v=[],x=[],P=[],R,E=null,_="",b="",C="",L="",N="",j="",q="",G=!1,F,D=Date.now(),be=Date.now(),X=await this.getClient(),Y,H;for(let w of g){for(;!Y;)try{let S=k(w);Y=await X.messages.create(S,{...this.buildMessageCreateOptions(S,d,a),...i?.singleAttempt?{maxRetries:0}:{}}).catch(A=>{throw De(A,S),A})}catch(S){if(i?.singleAttempt)throw S;if(H=S,y&&this.shouldFallbackForForcedToolChoiceError(S)){y=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let A=w==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:w==="native-budget"?["budget_tokens","thinking"]:w==="native-toggle"?["thinking"]:w==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(S,...A))throw S;break}if(Y)break}if(!Y)throw H??new I("All reasoning capability attempts failed without a captured error",this.name);let K=Date.now(),Ie=0,It=0,O=3e4;for await(let w of Y){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let S=Date.now(),A=S-K;if(A>O&&(Ie++,It+=A,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(A/1e3)}s gap before ${w.type}`,{stallCount:Ie,totalStallMs:It,eventType:w.type})),K=S,w.type==="content_block_start"||w.type==="content_block_stop"?i?.onHeartbeat?.(!0):i?.onHeartbeat?.(),w.type==="content_block_start"){D=Date.now();let M=w.content_block;E=M.type,process.env.KODAX_DEBUG_TOOL_STREAM&&M.type==="tool_use"&&console.error("[ToolStream] content_block_start:",{type:M.type,id:M.id,name:M.name}),M.type==="thinking"?(b="",C=M.signature??""):M.type==="redacted_thinking"?(E="redacted_thinking",L=M.data??""):M.type==="text"?_="":M.type==="tool_use"&&(N=M.id,j=M.name,q="")}else if(w.type==="content_block_delta"){D=Date.now();let M=w.delta;M.type==="thinking_delta"?(b+=M.thinking??"",i?.onThinkingDelta?.(M.thinking??"")):M.type==="text_delta"?(_+=M.text??"",i?.onTextDelta?.(M.text??"")):M.type==="input_json_delta"&&(q+=M.partial_json??"",i?.onToolInputDelta?.(j,M.partial_json??"",N?{toolId:N}:void 0))}else if(w.type==="content_block_stop"){if(D=Date.now(),E==="thinking")b&&(P.push({type:"thinking",thinking:b,signature:C}),i?.onThinkingEnd?.(b));else if(E==="redacted_thinking")L&&P.push({type:"redacted_thinking",data:L}),L="";else if(E==="text")_&&v.push({type:"text",text:_});else if(E==="tool_use")if(!N||!j)process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Missing tool id or name:",{id:JSON.stringify(N),name:JSON.stringify(j),input:q.slice(0,100)});else{let M=Ue(q);x.push({type:"tool_use",id:N,name:j,input:M.value,...M.salvaged?{_salvaged:!0,_truncated:!0}:{}})}E=null}else if(w.type==="message_stop"){if(G=!0,D=Date.now(),process.env.KODAX_DEBUG_STREAM){let M=Date.now()-be;this.logStreamDiagnostic(`[Stream] message_stop received after ${M}ms`)}}else if(w.type==="message_delta"){D=Date.now(),R=qn(w.usage,R);let M=w.delta;M?.stop_reason&&(F=M.stop_reason,process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic(`[Stream] message_delta with stop_reason: ${F}`))}else w.type==="message_start"&&(D=Date.now(),R=qn(w.message?.usage,R),process.env.KODAX_DEBUG_STREAM&&this.logStreamDiagnostic("[Stream] message_start received"))}if(!G){let w=Date.now()-be,S=Date.now()-D;if(a?.aborted){let A=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:w,lastEventAge:S,reason:A,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length}),new DOMException(A,"AbortError")}if(!F){let A=new Error(`Stream incomplete: message_stop event not received. Duration: ${w}ms, Last event: ${S}ms ago. This may indicate a network disconnection or API timeout.`);throw A.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:w,lastEventAge:S,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length}),A}this.logStreamDiagnostic("[Stream] message_stop missing but stop_reason known \u2014 treating as complete:",{duration:w,lastEventAge:S,stopReason:F,textBlocks:v.length,toolBlocks:x.length,thinkingBlocks:P.length})}let Q=We(F)?x.map(({_truncated:w,...S})=>S):x;return{textBlocks:v,toolBlocks:Q,thinkingBlocks:P,usage:R,stopReason:F}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter,{model:i?.modelOverride??this.config.model,onRejected:i?.onReasoningEffortRejected})}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,i,a){return this.withRateLimit(async u=>{let c=this.normalizeReasoning(r),d=i?.modelOverride??this.config.model,f=this.getWireModelId(d);this.validateExplicitReasoningEffort(c,d);let p=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(d);u.maxOutputTokensLimit??=p;let l=u.maxOutputTokensOverride??p,h=br(this.applyCacheControlToMessages(await this.convertMessages(t,d)),i?.ephemeralSuffix?.content),m=c.enabled?this.getReasoningCapability(d):"none",T=this.getReasoningProfile(d),g=T?["profile","none"]:c.enabled?this.getReasoningFallbackChain(m).filter(b=>b==="native-budget"||b==="native-toggle"||b==="native-adaptive"||b==="none"):["none"],y=n.length>0&&!!i?.forcedToolName,k=s(b=>{let C={model:f,max_tokens:l,system:this.applyCacheControlToSystem(this.buildSystemPrompt(o,t)),messages:h,...n.length>0?{tools:this.applyCacheControlToTools(n)}:{},...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!ae()?{metadata:{user_id:i.promptCacheKey}}:{}};if(n.length>0&&i?.forcedToolName&&y&&(C.tool_choice={type:"tool",name:i.forcedToolName}),b!=="none")if(b==="profile"&&T)this.applyReasoningProfile(C,T,c,d,l,u.suppressReasoningEffort);else if(b==="native-budget"){let L=Te(this.config,Pe(c.effort),c.taskType);C.thinking={type:"enabled",budget_tokens:_e(L,l)}}else b==="native-toggle"?C.thinking={type:"enabled"}:b==="native-adaptive"&&(C.thinking={type:"adaptive"},Er(C,c));return C},"buildRequest"),v=await this.getClient(),x,P;for(let b of g){for(;!x;)try{let C=k(b);x=await v.messages.create(C,{...this.buildMessageCreateOptions(C,d,a),...i?.singleAttempt?{maxRetries:0}:{}}).catch(L=>{throw De(L,C),L})}catch(C){if(i?.singleAttempt)throw C;if(P=C,y&&this.shouldFallbackForForcedToolChoiceError(C)){y=!1,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}let L=b==="profile"?["thinking","reasoning_effort","budget_tokens","adaptive"]:b==="native-budget"?["budget_tokens","thinking"]:b==="native-toggle"?["thinking"]:b==="native-adaptive"?["adaptive","thinking"]:[];if(!this.shouldFallbackForReasoningError(C,...L))throw C;break}if(x)break}if(!x)throw P??new I("All reasoning capability attempts failed without a captured error",this.name);let R=[],E=[],_=[];for(let b of x.content)b.type==="text"?(R.push({type:"text",text:b.text}),i?.onTextDelta?.(b.text)):b.type==="thinking"?(_.push({type:"thinking",thinking:b.thinking,signature:b.signature??""}),i?.onThinkingDelta?.(b.thinking),i?.onThinkingEnd?.(b.thinking)):b.type==="redacted_thinking"?_.push({type:"redacted_thinking",data:b.data}):b.type==="tool_use"&&E.push({type:"tool_use",id:b.id,name:b.name,input:typeof b.input=="object"&&b.input!==null?b.input:{}});return{textBlocks:R,toolBlocks:E,thinkingBlocks:_,usage:qn(x.usage),stopReason:x.stop_reason??void 0}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter,{model:i?.modelOverride??this.config.model,onRejected:i?.onReasoningEffortRejected})}serializeSystemMessageContent(t){if(typeof t=="string")return t.trim();for(let n of t)if(Xe(n))throw new I("cache-boundary marker reached system message serialization unlowered. Provider base class lowering must run before any wire-level serialization.",this.name,{failureCode:"request_build_failed",stage:"request_build"});return t.filter(n=>n.type==="text").map(n=>n.text.trim()).filter(Boolean).join(`
|
|
18
18
|
`)}buildSystemPrompt(t,n){let o=n.filter(r=>r.role==="system").map(r=>this.serializeSystemMessageContent(r.content)).filter(Boolean);return[t,...o].filter(r=>typeof r=="string"&&r.trim().length>0).join(`
|
|
19
19
|
|
|
20
20
|
`)}async convertMessages(t,n){let o=[],r=this.getEffectiveStrictThinkingSignature(n);for(let i of t.filter(a=>a.role!=="system")){let a=i.role==="user"?"user":"assistant";if(typeof i.content=="string"){o.push({role:a,content:i.content});continue}let u=[];if(a==="assistant"){for(let d of i.content)d.type==="thinking"?!r||typeof d.signature=="string"&&d.signature.length>0?u.push({type:"thinking",thinking:d.thinking,signature:d.signature??""}):d.thinking&&u.push({type:"text",text:`<prior_reasoning>
|
|
21
21
|
${d.thinking}
|
|
22
|
-
</prior_reasoning>`}):d.type==="redacted_thinking"?r||u.push({type:"redacted_thinking",data:d.data}):d.type==="text"&&u.push({type:"text",text:d.text});for(let d of i.content)d.type==="tool_use"&&u.push({type:"tool_use",id:d.id,name:d.name,input:d.input})}else{for(let d of i.content)if(d.type==="tool_result"&&i.role==="user"){let f;if(typeof d.content=="string")f=d.content;else{let p=[];for(let l of d.content)if(l.type==="text")p.push({type:"text",text:l.text});else if(l.type==="image"){let h=await Se(l);"placeholder"in h?p.push({type:"text",text:h.placeholder}):(h.notice&&p.push({type:"text",text:h.notice}),p.push({type:"image",source:{type:"base64",media_type:h.mediaType,data:h.data}}))}f=p}u.push({type:"tool_result",tool_use_id:d.tool_use_id,content:f,...d.is_error===!0?{is_error:!0}:{}})}for(let d of i.content)if(d.type==="text")u.push({type:"text",text:d.text});else if(d.type==="image"&&i.role==="user"){let f=await Se(d);"placeholder"in f?u.push({type:"text",text:f.placeholder}):(f.notice&&u.push({type:"text",text:f.notice}),u.push({type:"image",source:{type:"base64",media_type:f.mediaType,data:f.data}}))}}if(a==="assistant"&&this.config.supportsThinking&&!r){let d=u.some(p=>p.type==="tool_use"),f=u.some(p=>p.type==="thinking"||p.type==="redacted_thinking");d&&!f&&u.unshift({type:"thinking",thinking:"...",signature:""})}let c=u.length===0||(a==="assistant"||a==="user")&&u.every(d=>{let f=d;return f.type==="thinking"&&!f.thinking||f.type==="text"&&!f.text});o.push({role:i.role,content:c?[{type:"text",text:"..."}]:u})}return this.repairToolCallHistory(o)}repairToolCallHistory(t){let n=[],o=new Set,r=0;for(;r<t.length;){let i=t[r],a=typeof i.content=="string"||!Array.isArray(i.content)?void 0:i.content;if(i.role==="assistant"){let u=[],c=!1;for(let h of a??[]){let m=h;m.type==="tool_use"&&(typeof m.id=="string"&&m.id.trim().length>0?u.push(m.id):c=!0)}if(o=new Set(u),u.length===0){if(c){let h=(a??[]).filter(m=>m.type!=="tool_use"||!!m.id);n.push(h.length===0?{...i,content:[{type:"text",text:"..."}]}:{...i,content:h})}else n.push(i);r+=1;continue}let d=new Map,f=[],p=r+1;for(;p<t.length&&t[p].role!=="assistant";){let h=t[p];if(typeof h.content=="string")f.push({type:"text",text:h.content});else if(Array.isArray(h.content))for(let m of h.content){let T=m;if(T.type==="tool_result"){typeof T.tool_use_id=="string"&&o.has(T.tool_use_id)&&!d.has(T.tool_use_id)&&d.set(T.tool_use_id,m);continue}f.push(m)}p+=1}if(c){let h=(a??[]).filter(m=>m.type!=="tool_use"||!!m.id);n.push(h.length===0?{...i,content:[{type:"text",text:"..."}]}:{...i,content:h})}else n.push(i);let l=u.map(h=>d.get(h)??{type:"tool_result",tool_use_id:h,content:dt,is_error:!0});n.push({role:"user",content:[...l,...f]}),r=p;continue}if(i.role==="user"&&a){let u=a.filter(c=>{let d=c;return d.type!=="tool_result"||typeof d.tool_use_id=="string"&&o.has(d.tool_use_id)});u.length===a.length?n.push(i):u.length>0&&n.push({...i,content:u}),r+=1;continue}n.push(i),r+=1}return n}};function Ve(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t&&typeof t=="object"&&typeof t.text=="string"?t.text:"").join(""):""}s(Ve,"reasoningText");var Et=class{static{s(this,"OpenAIReasoningAccumulator")}text="";reasoning;details=[];append(t,n=!1){if(!t||typeof t!="object")return"";let o=t,r=Array.isArray(o.reasoning_details)?o.reasoning_details.filter(u=>u!==null&&typeof u=="object"&&!Array.isArray(u)):[];for(let[u,c]of r.entries())this.appendDetail(c,n&&u===0);typeof o.reasoning=="string"&&(this.reasoning=(this.reasoning??"")+o.reasoning);let a=r.map(u=>u.type==="reasoning.text"?Ve(u.text):u.type==="reasoning.summary"?Ve(u.summary):"").join("")||Ve(o.reasoning_content)||Ve(o.reasoning);return this.text+=a,a}appendDetail(t,n){let o=n?this.details.at(-1):void 0,r=t.type==="reasoning.text"?"text":t.type==="reasoning.summary"?"summary":void 0,i=typeof t.index=="number"&&o?.index===t.index,a=typeof t.id=="string"&&o?.id===t.id,u=["id","index","signature","format"].some(c=>t[c]!=null&&o?.[c]!=null&&t[c]!==o[c]);if(r&&o&&o.type===t.type&&!u&&(i||a)){let c=Ve(o[r])+Ve(t[r]),d={...o,...structuredClone(t),[r]:c};for(let f of["id","signature","format"])t[f]==null&&o[f]!==void 0&&(d[f]=o[f]);this.details[this.details.length-1]=d}else this.details.push(structuredClone(t))}blocks(t){let n=this.reasoning!==void 0||this.details.length>0;return!this.text&&!n?[]:[{type:"thinking",thinking:this.text,...n?{openaiReasoning:{...t,...this.reasoning!==void 0?{reasoning:this.reasoning}:{},...this.details.length>0?{details:this.details}:{}}}:{}}]}};var
|
|
22
|
+
</prior_reasoning>`}):d.type==="redacted_thinking"?r||u.push({type:"redacted_thinking",data:d.data}):d.type==="text"&&u.push({type:"text",text:d.text});for(let d of i.content)d.type==="tool_use"&&u.push({type:"tool_use",id:d.id,name:d.name,input:d.input})}else{for(let d of i.content)if(d.type==="tool_result"&&i.role==="user"){let f;if(typeof d.content=="string")f=d.content;else{let p=[];for(let l of d.content)if(l.type==="text")p.push({type:"text",text:l.text});else if(l.type==="image"){let h=await Se(l);"placeholder"in h?p.push({type:"text",text:h.placeholder}):(h.notice&&p.push({type:"text",text:h.notice}),p.push({type:"image",source:{type:"base64",media_type:h.mediaType,data:h.data}}))}f=p}u.push({type:"tool_result",tool_use_id:d.tool_use_id,content:f,...d.is_error===!0?{is_error:!0}:{}})}for(let d of i.content)if(d.type==="text")u.push({type:"text",text:d.text});else if(d.type==="image"&&i.role==="user"){let f=await Se(d);"placeholder"in f?u.push({type:"text",text:f.placeholder}):(f.notice&&u.push({type:"text",text:f.notice}),u.push({type:"image",source:{type:"base64",media_type:f.mediaType,data:f.data}}))}}if(a==="assistant"&&this.config.supportsThinking&&!r){let d=u.some(p=>p.type==="tool_use"),f=u.some(p=>p.type==="thinking"||p.type==="redacted_thinking");d&&!f&&u.unshift({type:"thinking",thinking:"...",signature:""})}let c=u.length===0||(a==="assistant"||a==="user")&&u.every(d=>{let f=d;return f.type==="thinking"&&!f.thinking||f.type==="text"&&!f.text});o.push({role:i.role,content:c?[{type:"text",text:"..."}]:u})}return this.repairToolCallHistory(o)}repairToolCallHistory(t){let n=[],o=new Set,r=0;for(;r<t.length;){let i=t[r],a=typeof i.content=="string"||!Array.isArray(i.content)?void 0:i.content;if(i.role==="assistant"){let u=[],c=!1;for(let h of a??[]){let m=h;m.type==="tool_use"&&(typeof m.id=="string"&&m.id.trim().length>0?u.push(m.id):c=!0)}if(o=new Set(u),u.length===0){if(c){let h=(a??[]).filter(m=>m.type!=="tool_use"||!!m.id);n.push(h.length===0?{...i,content:[{type:"text",text:"..."}]}:{...i,content:h})}else n.push(i);r+=1;continue}let d=new Map,f=[],p=r+1;for(;p<t.length&&t[p].role!=="assistant";){let h=t[p];if(typeof h.content=="string")f.push({type:"text",text:h.content});else if(Array.isArray(h.content))for(let m of h.content){let T=m;if(T.type==="tool_result"){typeof T.tool_use_id=="string"&&o.has(T.tool_use_id)&&!d.has(T.tool_use_id)&&d.set(T.tool_use_id,m);continue}f.push(m)}p+=1}if(c){let h=(a??[]).filter(m=>m.type!=="tool_use"||!!m.id);n.push(h.length===0?{...i,content:[{type:"text",text:"..."}]}:{...i,content:h})}else n.push(i);let l=u.map(h=>d.get(h)??{type:"tool_result",tool_use_id:h,content:dt,is_error:!0});n.push({role:"user",content:[...l,...f]}),r=p;continue}if(i.role==="user"&&a){let u=a.filter(c=>{let d=c;return d.type!=="tool_result"||typeof d.tool_use_id=="string"&&o.has(d.tool_use_id)});u.length===a.length?n.push(i):u.length>0&&n.push({...i,content:u}),r+=1;continue}n.push(i),r+=1}return n}};function Ve(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t&&typeof t=="object"&&typeof t.text=="string"?t.text:"").join(""):""}s(Ve,"reasoningText");var Et=class{static{s(this,"OpenAIReasoningAccumulator")}text="";reasoning;details=[];append(t,n=!1){if(!t||typeof t!="object")return"";let o=t,r=Array.isArray(o.reasoning_details)?o.reasoning_details.filter(u=>u!==null&&typeof u=="object"&&!Array.isArray(u)):[];for(let[u,c]of r.entries())this.appendDetail(c,n&&u===0);typeof o.reasoning=="string"&&(this.reasoning=(this.reasoning??"")+o.reasoning);let a=r.map(u=>u.type==="reasoning.text"?Ve(u.text):u.type==="reasoning.summary"?Ve(u.summary):"").join("")||Ve(o.reasoning_content)||Ve(o.reasoning);return this.text+=a,a}appendDetail(t,n){let o=n?this.details.at(-1):void 0,r=t.type==="reasoning.text"?"text":t.type==="reasoning.summary"?"summary":void 0,i=typeof t.index=="number"&&o?.index===t.index,a=typeof t.id=="string"&&o?.id===t.id,u=["id","index","signature","format"].some(c=>t[c]!=null&&o?.[c]!=null&&t[c]!==o[c]);if(r&&o&&o.type===t.type&&!u&&(i||a)){let c=Ve(o[r])+Ve(t[r]),d={...o,...structuredClone(t),[r]:c};for(let f of["id","signature","format"])t[f]==null&&o[f]!==void 0&&(d[f]=o[f]);this.details[this.details.length-1]=d}else this.details.push(structuredClone(t))}blocks(t){let n=this.reasoning!==void 0||this.details.length>0;return!this.text&&!n?[]:[{type:"thinking",thinking:this.text,...n?{openaiReasoning:{...t,...this.reasoning!==void 0?{reasoning:this.reasoning}:{},...this.details.length>0?{details:this.details}:{}}}:{}}]}};var fa="KodaX";async function pa(e){let{default:t}=await import("openai");return new t({...e,fetch:Dt(e?.fetch??globalThis.fetch)})}s(pa,"createOpenAISdkClient");function ga(e){return e==="native-budget"||e==="native-effort"||e==="native-toggle"||e==="none"}s(ga,"isOpenAIReasoningAttempt");function ma(e){return e.userAgentMode==="sdk"?void 0:{"User-Agent":fa}}s(ma,"getOpenAICompatDefaultHeaders");function Yn(e,t){return e==="max_tokens"?{max_tokens:t}:{max_completion_tokens:t}}s(Yn,"serializeOpenAICompatMaxOutputTokens");function kr(e,t){if(!t)return e;let n=e.at(-1);if(n?.role!=="user")return[...e,{role:"user",content:t}];let o=typeof n.content=="string"?n.content.length>0?`${n.content}
|
|
23
23
|
|
|
24
|
-
${t}`:t:[...n.content,{type:"text",text:t}];return[...e.slice(0,-1),{...n,content:o}]}s(kr,"appendOpenAIEphemeralSuffix");function
|
|
24
|
+
${t}`:t:[...n.content,{type:"text",text:t}];return[...e.slice(0,-1),{...n,content:o}]}s(kr,"appendOpenAIEphemeralSuffix");function ha(e){if(e.effort!=="none"){if(e.effort&&e.effort!=="auto")return e.effort;if(!(e.effort==="auto"&&e.effortSource==="explicit"))return Fn(Pe(e.effort))}}s(ha,"selectOpenAIReasoningEffort");function xr(e){if(!e)return;let t=typeof e.prompt_tokens=="number"?e.prompt_tokens:0,n=typeof e.completion_tokens=="number"?e.completion_tokens:0,o=typeof e.total_tokens=="number"?e.total_tokens:t+n;if([t,n,o].some(i=>!Number.isFinite(i)||i<0)||o<t||o<n)return;let r=typeof e.prompt_tokens_details?.cached_tokens=="number"&&e.prompt_tokens_details.cached_tokens>=0?e.prompt_tokens_details.cached_tokens:typeof e.prompt_cache_hit_tokens=="number"&&e.prompt_cache_hit_tokens>=0?e.prompt_cache_hit_tokens:void 0;return{inputTokens:t,outputTokens:n,totalTokens:o,...r!==void 0?{cachedReadTokens:r}:{}}}s(xr,"normalizeOpenAIUsage");function ya(e){return e?e.type==="function"&&"function"in e:!1}s(ya,"isOpenAIFunctionToolCall");function va(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object")return"";let n=Reflect.get(t,"text");if(typeof n=="string")return n;if(n&&typeof n=="object"){let o=Reflect.get(n,"value");return typeof o=="string"?o:""}return""}).filter(Boolean).join(""):""}s(va,"extractOpenAIMessageText");function kt(e){let t=e.role;return typeof t=="string"?t:void 0}s(kt,"getWireRole");function ba(e){if(kt(e)!=="assistant")return;let t=e.tool_calls;if(Array.isArray(t))return t.flatMap(n=>{if(!n||typeof n!="object")return[];let o=n.id;return typeof o=="string"&&o.trim().length>0?[{id:o,value:n}]:[]})}s(ba,"getAssistantWireToolCalls");function Ea(e){if(kt(e)!=="tool")return;let t=e.tool_call_id;return typeof t=="string"&&t.trim().length>0?t:void 0}s(Ea,"getToolWireCallId");function ka(e,t){let n={...e};return t.length>0?(n.tool_calls=t.map(o=>o.value),n):(delete n.tool_calls,(n.content==null||n.content==="")&&(n.content="..."),n)}s(ka,"rewriteAssistantWireToolCalls");var re=class extends ce{static{s(this,"KodaXOpenAICompatProvider")}requestObservationBoundary="physical_attempt";reasoningRejections={};normalizeReasoning(t){return super.normalizeReasoning(typeof t!="boolean"&&t?.effort===void 0&&t?.enabled===void 0?{...t,effort:"auto"}:t)}reasoningAttempts(t,n){let o=this.getReasoningProfile(n);if(he(o)){let i=t.effortSource==="omitted"?"auto":t.effort;return $e(o,i).map(a=>({capability:a===void 0?"none":"profile",reasoning:{...t,effort:a??"none",enabled:a!=="none"&&a!==void 0}}))}return this.validateExplicitReasoningEffort(t,n),(o?["profile","none"]:jn(t)?this.getReasoningFallbackChain(this.getReasoningCapability(n)).filter(ga):["none"]).map(i=>({capability:i,reasoning:t}))}skipRejectedReasoning(t,n,o,r){let i=t;if(!["reasoning_effort","reasoning","thinking","extra_body"].some(f=>f in i))return!1;let u=this.sentReasoningEffort(t),c=[...An(this.reasoningRejections,this.name,this.getWireModelId(n)),...o?.rejectedReasoningEfforts??[]];return!c.some(f=>f.startsWith("parameter:")&&this.hasReasoningParameter(t,f.slice(10)))&&!c.includes("*")&&(u===void 0||!c.includes(u))?!1:(r.fallbacks.some(f=>f.effort===u)||r.fallbacks.push({effort:u,reason:"cached-rejection"}),!0)}hasReasoningParameter(t,n){let o=t;return n in o||["thinking","reasoning","extra_body"].some(r=>{let i=o[r];return i!==null&&typeof i=="object"&&n in i})}sentReasoningEffort(t){let n=t,o=n.thinking,r=n.reasoning;return typeof n.reasoning_effort=="string"?n.reasoning_effort:r?.effort??o?.effort??(o?.type==="disabled"?"none":void 0)}recordReasoningRejection(t,n,o,r,i){let a=this.sentReasoningEffort(n),u=Be(t,a);if(!u||u.parameter&&!this.hasReasoningParameter(n,u.parameter)||!u.parameter&&a===void 0)return!1;let c=u.parameterRejected?["budget_tokens","thinking_budget","enable_thinking"].includes(u.parameter??"")?`parameter:${u.parameter}`:"*":u.rejectedEffort;return this.reasoningRejections=In(this.reasoningRejections,this.name,this.getWireModelId(o),c,"observed",new Date().toISOString()),i.fallbacks.push({effort:a,reason:u.parameterRejected?"unsupported-parameter":"unsupported-effort"}),r?.onReasoningEffortRejected?.({provider:this.name,model:o,effort:c}),!0}supportsThinking=!0;_client;_clientPromise;supportsEphemeralSuffix(){return!0}async getClient(){if(we())return this.buildClient();if(this._client)return this._client;let t=this._clientPromise??=Promise.resolve(this.buildClient());try{let n=await t;return this._clientPromise===t&&(this._client=n,this._clientPromise=void 0),this._client??n}catch(n){throw this._clientPromise===t&&(this._clientPromise=void 0),n}}set client(t){this._client=t,this._clientPromise=void 0}buildClient(){let t=ma(this.config);return pa({apiKey:this.getApiKey(),baseURL:this.config.baseUrl,...t?{defaultHeaders:t}:{}})}getEffectiveMaxOutputTokensField(t){return this.getModelDescriptor(t)?.maxOutputTokensField??this.config.maxOutputTokensField??"max_completion_tokens"}onStaleConnection(){this._client=void 0}async verifyCredential(t){let n=this.config.model,o=this.getWireModelId(n),r=[{strategy:"models-list",approxTokensSpent:0,run:s(i=>se(this.name,"utility",i,async a=>{await(await this.getClient()).models.list({signal:a})}),"run")},{strategy:"minimal-message",approxTokensSpent:6,run:s(i=>se(this.name,"utility",i,async a=>{await(await this.getClient()).chat.completions.create({model:o,...Yn(this.getEffectiveMaxOutputTokensField(n),1),messages:[{role:"user",content:"hi"}]},{signal:a})}),"run")}];return ze({strategy:this.config.verifyStrategy??"models-list",runners:r,timeoutMs:t?.timeoutMs,signal:t?.signal,providerName:this.name})}stripCacheBoundariesFromMessages(t){return t.map(n=>{if(typeof n.content=="string")return n;let o=He(n.content);return o.length===n.content.length?n:{...n,content:o}})}normalizeSystemForWire(t,n){let o=[];t&&t.trim().length>0&&o.push(t);let r=[];for(let i of n){if(i.role!=="system"){r.push(i);continue}let a=typeof i.content=="string"?i.content:Array.isArray(i.content)?i.content.filter(u=>typeof u=="object"&&u!==null&&u.type==="text"&&typeof u.text=="string").map(u=>u.text).join(`
|
|
25
25
|
`):"";a.trim().length>0&&o.push(a)}return{system:o.join(`
|
|
26
26
|
|
|
27
|
-
`),rest:r}}appendExtraBody(t,n){let o=typeof t.extra_body=="object"&&t.extra_body!==null?t.extra_body:{};t.extra_body={...o,...n}}resetReasoningCapabilityParams(t){delete t.reasoning_effort,delete t.reasoning,delete t.thinking;let n=typeof t.extra_body=="object"&&t.extra_body!==null?{...t.extra_body}:void 0;if(n){if(delete n.enable_thinking,delete n.thinking_budget,delete n.thinking,Object.keys(n).length===0){delete t.extra_body;return}t.extra_body=n}}applyReasoningCapability(t,n,o,r,i,a){if(i||o==="none")return;let u=t,c=_e(Te(this.config,Pe(r.effort),r.taskType),a),d=this.getReasoningProfile(n);if(d){this.applyReasoningProfile(u,d,r,n,c);return}switch(o){case"native-effort":{this.validateExplicitReasoningEffort(r,n);let f=ma(r);f&&(u.reasoning_effort=f);break}case"native-budget":{this.name==="qwen"?this.appendExtraBody(u,{enable_thinking:!0,thinking_budget:c}):this.name==="zhipu"&&(u.thinking={type:"enabled",budget_tokens:c});break}case"native-toggle":{this.name==="qwen"?this.appendExtraBody(u,{enable_thinking:!0}):this.name==="zhipu"&&(u.thinking={type:"enabled"});break}default:break}}applyReasoningProfile(t,n,o,r,i){he(n)||this.validateExplicitReasoningEffort(o,r);let a=this.resolveReasoningProfileIntent(o,n,r),u=n.reasoningPreset;if(u==="kimi-k2.7-code"||u==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(u==="kimi-k3"){let c=o.effortSource==="omitted"&&o.effort==="none";if(a.disabled&&!c){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:c?n.defaultEffort??"max":a.effort??n.defaultEffort??"max"};return}if(!(u==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(u==="qwen-hybrid-thinking"){if(a.disabled){this.appendExtraBody(t,{enable_thinking:!1});return}let c=this.resolveReasoningProfileBudget(n,a.effort,r,i);this.appendExtraBody(t,{enable_thinking:!0,...c!==void 0?{thinking_budget:c}:{}});return}if(u==="deepseek-v4-flash-openai"||u==="deepseek-v4-pro-openai"||u==="deepseek-v4-openai"||u==="zai-glm-5.3"||u==="zai-glm-5.2"){if(u==="zai-glm-5.3"&&a.disabled){t.thinking={type:"enabled"},t.reasoning_effort="low";return}t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&(t.reasoning_effort=a.effort);return}if(u==="zai-glm-toggle"||u==="deepseek-toggle"||u==="kimi-hybrid-toggle"||n.thinkingStrategy==="provider-toggle"){t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&n.effortStrategy==="openai-chat-effort"&&(t.reasoning_effort=a.effort);return}if(he(n)){let c=a.disabled?"none":a.effort;if(n.effortStrategy==="openai-responses-effort"){c&&(t.reasoning={effort:c});return}if(a.disabled){n.supportsDisabledThinking!==!1&&(t.reasoning_effort="none");return}a.effort&&(t.reasoning_effort=a.effort);return}if(n.effortStrategy==="provider-budget"){if(a.disabled){t.thinking={type:"disabled"};return}let c=this.resolveReasoningProfileBudget(n,a.effort,r,i);t.thinking={type:"enabled",...c!==void 0?{budget_tokens:c}:{}};return}n.effortStrategy==="provider-toggle"&&(t.thinking={type:a.disabled?"disabled":"enabled"})}}resolveReasoningProfileBudget(t,n,o,r){if(!t.supportsManualThinkingBudget&&t.effortStrategy!=="provider-budget")return;let i=n&&t.budgetByEffort?.[n]!==void 0?t.budgetByEffort[n]:r,a=this.getEffectiveThinkingBudgetCap(o);return a!==void 0?Math.min(i,a):i}async stream(t,n,o,r,i,a){let u=i?.modelOverride??this.config.model,c=this.normalizeReasoning(r),d={provider:this.name,model:u,requestedEffort:c.effortSource==="omitted"?"auto":c.effort??"auto",verified:!1,fallbacks:[]};return this.withRateLimit(async f=>{let p=this.stripCacheBoundariesFromMessages(t),{system:l,rest:h}=this.normalizeSystemForWire(o,p),m=this.getWireModelId(u),T=kr([{role:"system",content:l},...await this.convertMessages(h,u)],i?.ephemeralSuffix?.content),g=n.map(O=>({type:"function",function:{name:O.name,description:O.description,parameters:O.input_schema}})),y=i?.forcedToolName,k=g.length>0&&!!y;if(a?.aborted)throw new DOMException("Request aborted","AbortError");let v=new Map,x="",P=new Et,R,E=!0,_=null,b=Date.now(),C=this.reasoningAttempts(c,u),L=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u);f.maxOutputTokensLimit??=L;let $=f.maxOutputTokensOverride??L,j={model:m,messages:T,...g.length>0?{tools:g}:{},...Yn(this.getEffectiveMaxOutputTokensField(u),$),stream:!0,...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!se()?{prompt_cache_key:i.promptCacheKey}:{}};g.length>0&&y&&k&&(j.tool_choice={type:"function",function:{name:y}});let q=await this.getClient(),G,F;for(let{capability:O,reasoning:Q}of C){for(;!G;){let w={...j};if(E&&(w.stream_options={include_usage:!0}),this.resetReasoningCapabilityParams(w),this.applyReasoningCapability(w,u,O,Q,f.suppressReasoningEffort,$),this.skipRejectedReasoning(w,u,i,d))break;d.sentEffort=this.sentReasoningEffort(w);try{G=await q.chat.completions.create(w,{...a?{signal:a}:{},...i?.singleAttempt?{maxRetries:0}:{}}).catch(S=>{throw De(S,w),S})}catch(S){let A=this.recordReasoningRejection(S,w,u,i,d);if(i?.singleAttempt)throw S;if(A){F=S;break}if(F=S,k&&this.shouldFallbackForForcedToolChoiceError(S)){k=!1,delete j.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(E&&this.shouldFallbackForSpecificReasoningError(S,"stream_options","include_usage")){E=!1;continue}throw S}}if(G)break}if(!G)throw F??new I("All reasoning capability attempts failed without a captured error",this.name);let D=Date.now(),be=0,X=0,Y=3e4;for await(let O of G){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let Q=Date.now(),w=Q-D;w>Y&&(be++,X+=w,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(w/1e3)}s gap`,{stallCount:be,totalStallMs:X})),D=Q,i?.onHeartbeat?.(),R=xr(O.usage)??R;let S=O.choices[0],A=S?.delta;if(S?.finish_reason&&(_=S.finish_reason,process.env.KODAX_DEBUG_STREAM)){let oe=Date.now()-b;this.logStreamDiagnostic(`[Stream] finish_reason: ${_} after ${oe}ms`)}A?.content&&(x+=A.content,i?.onTextDelta?.(A.content));let M=P.append(A,!0);if(M&&i?.onThinkingDelta?.(M),A?.tool_calls)for(let oe of A.tool_calls){let Ee=v.get(oe.index)??{id:"",name:"",arguments:""};oe.id&&(Ee.id=oe.id),oe.function?.name&&(Ee.name=oe.function.name),oe.function?.arguments&&(Ee.arguments+=oe.function.arguments,i?.onToolInputDelta?.(Ee.name,oe.function.arguments,Ee.id?{toolId:Ee.id}:void 0)),v.set(oe.index,Ee)}}if(!_){let O=Date.now()-b;if(a?.aborted){let w=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:O,reason:w,textContentLength:x.length,toolCallsCount:v.size}),new DOMException(w,"AbortError")}let Q=new Error(`Stream incomplete: finish_reason not received. Duration: ${O}ms. This may indicate a network disconnection or API timeout.`);throw Q.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:O,textContentLength:x.length,toolCallsCount:v.size}),Q}let H=x?[{type:"text",text:x}]:[],K=[],Ie=P.blocks({provider:this.name,model:m,baseUrl:this.getBaseUrl()});P.text&&i?.onThinkingEnd?.(P.text);let It=We(_??void 0);for(let[,O]of v)if(O.id&&O.name){let Q=Ue(O.arguments),w=Q.salvaged?It?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};K.push({type:"tool_use",id:O.id,name:O.name,input:Q.value,...w})}else process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Dropped tool_call missing id or name:",{id:JSON.stringify(O.id),name:JSON.stringify(O.name),argsLength:O.arguments?.length??0});return d.requestedEffort!=="auto"&&d.requestedEffort!==d.sentEffort&&d.fallbacks.length===0&&d.fallbacks.push({effort:d.requestedEffort,reason:"profile"}),i?.onReasoningResolved?.(d),{textBlocks:H,toolBlocks:K,thinkingBlocks:Ie,usage:R,stopReason:_??void 0,reasoningResolution:d}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter)}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,i,a){let u=i?.modelOverride??this.config.model,c=this.normalizeReasoning(r),d={provider:this.name,model:u,requestedEffort:c.effortSource==="omitted"?"auto":c.effort??"auto",verified:!1,fallbacks:[]};return this.withRateLimit(async f=>{let p=this.stripCacheBoundariesFromMessages(t),{system:l,rest:h}=this.normalizeSystemForWire(o,p),m=this.getWireModelId(u),T=kr([{role:"system",content:l},...await this.convertMessages(h,u)],i?.ephemeralSuffix?.content),g=n.map(X=>({type:"function",function:{name:X.name,description:X.description,parameters:X.input_schema}})),y=i?.forcedToolName,k=g.length>0&&!!y,v=this.reasoningAttempts(c,u),x=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u);f.maxOutputTokensLimit??=x;let P=f.maxOutputTokensOverride??x,R={model:m,messages:T,...g.length>0?{tools:g}:{},...Yn(this.getEffectiveMaxOutputTokensField(u),P),...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!se()?{prompt_cache_key:i.promptCacheKey}:{}};g.length>0&&y&&k&&(R.tool_choice={type:"function",function:{name:y}});let E,_,b=await this.getClient();for(let{capability:X,reasoning:Y}of v){for(;!E;){let H={...R};if(this.resetReasoningCapabilityParams(H),this.applyReasoningCapability(H,u,X,Y,f.suppressReasoningEffort,P),this.skipRejectedReasoning(H,u,i,d))break;d.sentEffort=this.sentReasoningEffort(H);try{E=await b.chat.completions.create(H,{...a?{signal:a}:{},...i?.singleAttempt?{maxRetries:0}:{}}).catch(K=>{throw De(K,H),K})}catch(K){let Ie=this.recordReasoningRejection(K,H,u,i,d);if(i?.singleAttempt)throw K;if(Ie){_=K;break}if(_=K,k&&this.shouldFallbackForForcedToolChoiceError(K)){k=!1,delete R.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}throw K}}if(E)break}if(!E)throw _??new I("All reasoning capability attempts failed without a captured error",this.name);let C=E.choices[0],L=C?.message,$=ya(L?.content),j=new Et,q=j.append(L),G=We(C?.finish_reason??void 0),F=(L?.tool_calls??[]).filter(ha).map(X=>{let Y=Ue(X.function.arguments),H=Y.salvaged?G?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};return{type:"tool_use",id:X.id,name:X.function.name,input:Y.value,...H}});$&&i?.onTextDelta?.($);let D=$?[{type:"text",text:$}]:[],be=j.blocks({provider:this.name,model:m,baseUrl:this.getBaseUrl()});return q&&(i?.onThinkingDelta?.(q),i?.onThinkingEnd?.(q)),d.requestedEffort!=="auto"&&d.requestedEffort!==d.sentEffort&&d.fallbacks.length===0&&d.fallbacks.push({effort:d.requestedEffort,reason:"profile"}),i?.onReasoningResolved?.(d),{reasoningResolution:d,textBlocks:D,toolBlocks:F,thinkingBlocks:be,usage:xr(E.usage),stopReason:C?.finish_reason??void 0}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter)}serializeAssistantMessage(t,n){let o=t.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
27
|
+
`),rest:r}}appendExtraBody(t,n){let o=typeof t.extra_body=="object"&&t.extra_body!==null?t.extra_body:{};t.extra_body={...o,...n}}resetReasoningCapabilityParams(t){delete t.reasoning_effort,delete t.reasoning,delete t.thinking;let n=typeof t.extra_body=="object"&&t.extra_body!==null?{...t.extra_body}:void 0;if(n){if(delete n.enable_thinking,delete n.thinking_budget,delete n.thinking,Object.keys(n).length===0){delete t.extra_body;return}t.extra_body=n}}applyReasoningCapability(t,n,o,r,i,a){if(i||o==="none")return;let u=t,c=_e(Te(this.config,Pe(r.effort),r.taskType),a),d=this.getReasoningProfile(n);if(d){this.applyReasoningProfile(u,d,r,n,c);return}switch(o){case"native-effort":{this.validateExplicitReasoningEffort(r,n);let f=ha(r);f&&(u.reasoning_effort=f);break}case"native-budget":{this.name==="qwen"?this.appendExtraBody(u,{enable_thinking:!0,thinking_budget:c}):this.name==="zhipu"&&(u.thinking={type:"enabled",budget_tokens:c});break}case"native-toggle":{this.name==="qwen"?this.appendExtraBody(u,{enable_thinking:!0}):this.name==="zhipu"&&(u.thinking={type:"enabled"});break}default:break}}applyReasoningProfile(t,n,o,r,i){he(n)||this.validateExplicitReasoningEffort(o,r);let a=this.resolveReasoningProfileIntent(o,n,r),u=n.reasoningPreset;if(u==="kimi-k2.7-code"||u==="minimax-m2-always"){t.thinking={type:"enabled"};return}if(u==="kimi-k3"){let c=o.effortSource==="omitted"&&o.effort==="none";if(a.disabled&&!c){t.thinking={type:"disabled"};return}t.thinking={type:"enabled",effort:c?n.defaultEffort??"max":a.effort??n.defaultEffort??"max"};return}if(!(u==="none"||n.effortStrategy==="none"||n.effortStrategy==="prompt-only")){if(u==="qwen-hybrid-thinking"){if(a.disabled){this.appendExtraBody(t,{enable_thinking:!1});return}let c=this.resolveReasoningProfileBudget(n,a.effort,r,i);this.appendExtraBody(t,{enable_thinking:!0,...c!==void 0?{thinking_budget:c}:{}});return}if(u==="deepseek-v4-flash-openai"||u==="deepseek-v4-pro-openai"||u==="deepseek-v4-openai"||u==="zai-glm-5.3"||u==="zai-glm-5.2"){if(u==="zai-glm-5.3"&&a.disabled){t.thinking={type:"enabled"},t.reasoning_effort="low";return}t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&(t.reasoning_effort=a.effort);return}if(u==="zai-glm-toggle"||u==="deepseek-toggle"||u==="kimi-hybrid-toggle"||n.thinkingStrategy==="provider-toggle"){t.thinking={type:a.disabled?"disabled":"enabled"},!a.disabled&&a.effort&&n.effortStrategy==="openai-chat-effort"&&(t.reasoning_effort=a.effort);return}if(he(n)){let c=a.disabled?"none":a.effort;if(n.effortStrategy==="openai-responses-effort"){c&&(t.reasoning={effort:c});return}if(a.disabled){n.supportsDisabledThinking!==!1&&(t.reasoning_effort="none");return}a.effort&&(t.reasoning_effort=a.effort);return}if(n.effortStrategy==="provider-budget"){if(a.disabled){t.thinking={type:"disabled"};return}let c=this.resolveReasoningProfileBudget(n,a.effort,r,i);t.thinking={type:"enabled",...c!==void 0?{budget_tokens:c}:{}};return}n.effortStrategy==="provider-toggle"&&(t.thinking={type:a.disabled?"disabled":"enabled"})}}resolveReasoningProfileBudget(t,n,o,r){if(!t.supportsManualThinkingBudget&&t.effortStrategy!=="provider-budget")return;let i=n&&t.budgetByEffort?.[n]!==void 0?t.budgetByEffort[n]:r,a=this.getEffectiveThinkingBudgetCap(o);return a!==void 0?Math.min(i,a):i}async stream(t,n,o,r,i,a){let u=i?.modelOverride??this.config.model,c=this.normalizeReasoning(r),d={provider:this.name,model:u,requestedEffort:c.effortSource==="omitted"?"auto":c.effort??"auto",verified:!1,fallbacks:[]};return this.withRateLimit(async f=>{let p=this.stripCacheBoundariesFromMessages(t),{system:l,rest:h}=this.normalizeSystemForWire(o,p),m=this.getWireModelId(u),T=kr([{role:"system",content:l},...await this.convertMessages(h,u)],i?.ephemeralSuffix?.content),g=n.map(O=>({type:"function",function:{name:O.name,description:O.description,parameters:O.input_schema}})),y=i?.forcedToolName,k=g.length>0&&!!y;if(a?.aborted)throw new DOMException("Request aborted","AbortError");let v=new Map,x="",P=new Et,R,E=!0,_=null,b=Date.now(),C=this.reasoningAttempts(c,u),L=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u);f.maxOutputTokensLimit??=L;let N=f.maxOutputTokensOverride??L,j={model:m,messages:T,...g.length>0?{tools:g}:{},...Yn(this.getEffectiveMaxOutputTokensField(u),N),stream:!0,...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!ae()?{prompt_cache_key:i.promptCacheKey}:{}};g.length>0&&y&&k&&(j.tool_choice={type:"function",function:{name:y}});let q=await this.getClient(),G,F;for(let{capability:O,reasoning:Q}of C){for(;!G;){let w={...j};if(E&&(w.stream_options={include_usage:!0}),this.resetReasoningCapabilityParams(w),this.applyReasoningCapability(w,u,O,Q,f.suppressReasoningEffort,N),this.skipRejectedReasoning(w,u,i,d))break;d.sentEffort=this.sentReasoningEffort(w);try{G=await q.chat.completions.create(w,{...a?{signal:a}:{},...i?.singleAttempt?{maxRetries:0}:{}}).catch(S=>{throw De(S,w),S})}catch(S){let A=this.recordReasoningRejection(S,w,u,i,d);if(i?.singleAttempt)throw S;if(A){F=S;break}if(F=S,k&&this.shouldFallbackForForcedToolChoiceError(S)){k=!1,delete j.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}if(E&&this.shouldFallbackForSpecificReasoningError(S,"stream_options","include_usage")){E=!1;continue}throw S}}if(G)break}if(!G)throw F??new I("All reasoning capability attempts failed without a captured error",this.name);let D=Date.now(),be=0,X=0,Y=3e4;for await(let O of G){if(a?.aborted)throw new DOMException("Request aborted","AbortError");let Q=Date.now(),w=Q-D;w>Y&&(be++,X+=w,this.logStreamDiagnostic(`[Stream] stall detected: ${Math.round(w/1e3)}s gap`,{stallCount:be,totalStallMs:X})),D=Q,i?.onHeartbeat?.(),R=xr(O.usage)??R;let S=O.choices[0],A=S?.delta;if(S?.finish_reason&&(_=S.finish_reason,process.env.KODAX_DEBUG_STREAM)){let oe=Date.now()-b;this.logStreamDiagnostic(`[Stream] finish_reason: ${_} after ${oe}ms`)}A?.content&&(x+=A.content,i?.onTextDelta?.(A.content));let M=P.append(A,!0);if(M&&i?.onThinkingDelta?.(M),A?.tool_calls)for(let oe of A.tool_calls){let Ee=v.get(oe.index)??{id:"",name:"",arguments:""};oe.id&&(Ee.id=oe.id),oe.function?.name&&(Ee.name=oe.function.name),oe.function?.arguments&&(Ee.arguments+=oe.function.arguments,i?.onToolInputDelta?.(Ee.name,oe.function.arguments,Ee.id?{toolId:Ee.id}:void 0)),v.set(oe.index,Ee)}}if(!_){let O=Date.now()-b;if(a?.aborted){let w=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:O,reason:w,textContentLength:x.length,toolCallsCount:v.size}),new DOMException(w,"AbortError")}let Q=new Error(`Stream incomplete: finish_reason not received. Duration: ${O}ms. This may indicate a network disconnection or API timeout.`);throw Q.name="StreamIncompleteError",this.logStreamDiagnostic("[Stream] Incomplete stream detected:",{duration:O,textContentLength:x.length,toolCallsCount:v.size}),Q}let H=x?[{type:"text",text:x}]:[],K=[],Ie=P.blocks({provider:this.name,model:m,baseUrl:this.getBaseUrl()});P.text&&i?.onThinkingEnd?.(P.text);let It=We(_??void 0);for(let[,O]of v)if(O.id&&O.name){let Q=Ue(O.arguments),w=Q.salvaged?It?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};K.push({type:"tool_use",id:O.id,name:O.name,input:Q.value,...w})}else process.env.KODAX_DEBUG_TOOL_STREAM&&console.error("[Tool Block Invalid] Dropped tool_call missing id or name:",{id:JSON.stringify(O.id),name:JSON.stringify(O.name),argsLength:O.arguments?.length??0});return d.requestedEffort!=="auto"&&d.requestedEffort!==d.sentEffort&&d.fallbacks.length===0&&d.fallbacks.push({effort:d.requestedEffort,reason:"profile"}),i?.onReasoningResolved?.(d),{textBlocks:H,toolBlocks:K,thinkingBlocks:Ie,usage:R,stopReason:_??void 0,reasoningResolution:d}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter)}supportsNonStreamingFallback(){return!0}async complete(t,n,o,r,i,a){let u=i?.modelOverride??this.config.model,c=this.normalizeReasoning(r),d={provider:this.name,model:u,requestedEffort:c.effortSource==="omitted"?"auto":c.effort??"auto",verified:!1,fallbacks:[]};return this.withRateLimit(async f=>{let p=this.stripCacheBoundariesFromMessages(t),{system:l,rest:h}=this.normalizeSystemForWire(o,p),m=this.getWireModelId(u),T=kr([{role:"system",content:l},...await this.convertMessages(h,u)],i?.ephemeralSuffix?.content),g=n.map(X=>({type:"function",function:{name:X.name,description:X.description,parameters:X.input_schema}})),y=i?.forcedToolName,k=g.length>0&&!!y,v=this.reasoningAttempts(c,u),x=i?.maxOutputTokensOverride??this.getEffectiveMaxOutputTokens(u);f.maxOutputTokensLimit??=x;let P=f.maxOutputTokensOverride??x,R={model:m,messages:T,...g.length>0?{tools:g}:{},...Yn(this.getEffectiveMaxOutputTokensField(u),P),...this.config.promptCacheAffinity===!0&&i?.promptCacheKey&&!ae()?{prompt_cache_key:i.promptCacheKey}:{}};g.length>0&&y&&k&&(R.tool_choice={type:"function",function:{name:y}});let E,_,b=await this.getClient();for(let{capability:X,reasoning:Y}of v){for(;!E;){let H={...R};if(this.resetReasoningCapabilityParams(H),this.applyReasoningCapability(H,u,X,Y,f.suppressReasoningEffort,P),this.skipRejectedReasoning(H,u,i,d))break;d.sentEffort=this.sentReasoningEffort(H);try{E=await b.chat.completions.create(H,{...a?{signal:a}:{},...i?.singleAttempt?{maxRetries:0}:{}}).catch(K=>{throw De(K,H),K})}catch(K){let Ie=this.recordReasoningRejection(K,H,u,i,d);if(i?.singleAttempt)throw K;if(Ie){_=K;break}if(_=K,k&&this.shouldFallbackForForcedToolChoiceError(K)){k=!1,delete R.tool_choice,this.logStreamDiagnostic(`[${this.name}] upstream rejected forced tool_choice; retrying without forced tool choice`);continue}throw K}}if(E)break}if(!E)throw _??new I("All reasoning capability attempts failed without a captured error",this.name);let C=E.choices[0],L=C?.message,N=va(L?.content),j=new Et,q=j.append(L),G=We(C?.finish_reason??void 0),F=(L?.tool_calls??[]).filter(ya).map(X=>{let Y=Ue(X.function.arguments),H=Y.salvaged?G?{_salvaged:!0}:{_salvaged:!0,_truncated:!0}:{};return{type:"tool_use",id:X.id,name:X.function.name,input:Y.value,...H}});N&&i?.onTextDelta?.(N);let D=N?[{type:"text",text:N}]:[],be=j.blocks({provider:this.name,model:m,baseUrl:this.getBaseUrl()});return q&&(i?.onThinkingDelta?.(q),i?.onThinkingEnd?.(q)),d.requestedEffort!=="auto"&&d.requestedEffort!==d.sentEffort&&d.fallbacks.length===0&&d.fallbacks.push({effort:d.requestedEffort,reason:"profile"}),i?.onReasoningResolved?.(d),{reasoningResolution:d,textBlocks:D,toolBlocks:F,thinkingBlocks:be,usage:xr(E.usage),stopReason:C?.finish_reason??void 0}},a,i?.singleAttempt?1:3,i?.onRateLimit,i?.onRetryAfter)}serializeAssistantMessage(t,n){let o=t.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
28
28
|
`),r=t.filter(l=>l.type==="tool_use").map(l=>({id:l.id,type:"function",function:{name:l.name,arguments:JSON.stringify(l.input??{})}})),i=t.filter(l=>l.type==="thinking"||l.type==="redacted_thinking").map(l=>l.type==="thinking"?l.thinking:"").filter(Boolean).join(`
|
|
29
29
|
|
|
30
30
|
`),a=t.some(l=>l.type==="thinking"||l.type==="redacted_thinking"),u=t.some(l=>l.type==="text");if(!o&&r.length===0&&!a&&!u)return[];let c;o?c=o:r.length>0?c=null:c="...";let d={role:"assistant",content:c};r.length>0&&(d.tool_calls=r),this.getEffectiveReplayReasoningContent(n)&&(d.reasoning_content=i||"");let f=t.flatMap(l=>l.type==="thinking"&&l.openaiReasoning?[l.openaiReasoning]:[]).filter(l=>l.provider===this.name&&l.model===this.getWireModelId(n)&&l.baseUrl===this.getBaseUrl()),p=f.flatMap(l=>l.details??[]);return p.length>0&&(d.reasoning_details=p),f.some(l=>l.reasoning!==void 0)&&(d.reasoning=f.map(l=>l.reasoning??"").join("")),[d]}async serializeToolResult(t,n){let o=[],r=[],i=this.getCapabilityProfile().multimodalSupport,a=i==="image-input"||i==="full";if(typeof t.content=="string")o.push(t.content);else for(let c of t.content)if(c.type==="text")o.push(c.text);else if(a){let d=await Se(c);"placeholder"in d?o.push(d.placeholder):(d.notice&&o.push(d.notice),r.push({type:"image_url",image_url:{url:`data:${d.mediaType};base64,${d.data}`}}))}else o.push(await vr(c.path)?Hn:pr);r.length>0&&o.push("[Images from this tool result follow in a user message.]");let u={role:"tool",tool_call_id:t.tool_use_id,content:o.join(`
|
|
31
31
|
`)};return r.length>0&&n.set(u,{role:"user",content:[{type:"text",text:`Images from tool result ${t.tool_use_id}:`},...r]}),u}async serializeUserMessage(t,n){let o=[],r=t.filter(u=>u.type==="text").map(u=>u.text).join(`
|
|
32
32
|
`),i=t.filter(u=>u.type==="image");for(let u of t)u.type==="tool_result"&&o.push(await this.serializeToolResult(u,n));if(i.length===0)return r&&o.push({role:"user",content:r}),o;let a=[];r&&a.push({type:"text",text:r});for(let u of i){let c=await Se(u);"placeholder"in c?a.push({type:"text",text:c.placeholder}):(c.notice&&a.push({type:"text",text:c.notice}),a.push({type:"image_url",image_url:{url:`data:${c.mediaType};base64,${c.data}`}}))}return o.push({role:"user",content:a}),o}serializeSystemMessage(t){if(typeof t=="string")return[{role:"system",content:t}];let n=t.filter(o=>o.type==="text").map(o=>o.text).join(`
|
|
33
|
-
`);return n?[{role:"system",content:n}]:[]}async convertMessages(t,n){let o=[],r=new Map;for(let i of t){if(i.role==="system"){o.push(...this.serializeSystemMessage(i.content));continue}if(typeof i.content=="string"){o.push({role:i.role,content:i.content});continue}if(i.role==="assistant"){o.push(...this.serializeAssistantMessage(i.content,n));continue}o.push(...await this.serializeUserMessage(i.content,r))}return this.repairToolCallHistory(o,r)}repairToolCallHistory(t,n){let o=[],r=new Set,i=0;for(;i<t.length;){let a=t[i],u=kt(a);if(u==="assistant"){let c=
|
|
33
|
+
`);return n?[{role:"system",content:n}]:[]}async convertMessages(t,n){let o=[],r=new Map;for(let i of t){if(i.role==="system"){o.push(...this.serializeSystemMessage(i.content));continue}if(typeof i.content=="string"){o.push({role:i.role,content:i.content});continue}if(i.role==="assistant"){o.push(...this.serializeAssistantMessage(i.content,n));continue}o.push(...await this.serializeUserMessage(i.content,r))}return this.repairToolCallHistory(o,r)}repairToolCallHistory(t,n){let o=[],r=new Set,i=0;for(;i<t.length;){let a=t[i],u=kt(a);if(u==="assistant"){let c=ba(a)??[];r=new Set(c.map(h=>h.id));let d=ka(a,c);if(c.length===0){o.push(d),i+=1;continue}let f=new Map,p=[],l=i+1;for(;l<t.length&&kt(t[l])!=="assistant";){let h=t[l];if(kt(h)==="tool"){let m=Ea(h);if(m!==void 0&&r.has(m)&&!f.has(m)){f.set(m,h);let T=n.get(h);T&&p.push(T)}}else p.push(h);l+=1}o.push(d);for(let h of c)o.push(f.get(h.id)??{role:"tool",tool_call_id:h.id,content:dt});o.push(...p),i=l;continue}if(u==="tool"){i+=1;continue}o.push(a),i+=1}return o}};import{spawn as Ia}from"node:child_process";import{Readable as Oa,Writable as Da}from"node:stream";import Gt from"node:process";import{spawnSync as Vt}from"node:child_process";var xa=2e3,Re=2e3,eo=5e3,pe=Object.freeze({status:"terminated"}),wr=Object.freeze({status:"already-exited"}),U=Object.freeze({status:"unknown"}),Rr=String.raw`
|
|
34
34
|
using System;
|
|
35
35
|
using System.Runtime.InteropServices;
|
|
36
36
|
using System.Text;
|
|
@@ -117,21 +117,21 @@ public static class KodaXNativeProcessSnapshot {
|
|
|
117
117
|
CloseHandle(snapshot);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
}`;function Me(e){return e.exitCode!==null||e.signalCode!==null}s(Me,"isExited");function Qn(e,t){return Me(e)?Promise.resolve(!0):new Promise(n=>{let o=!1,r=s(u=>{o||(o=!0,clearTimeout(a),e.off("exit",i),e.off("error",i),n(u))},"finish"),i=s(()=>r(!0),"onExit"),a=setTimeout(()=>r(!1),t);a.unref?.(),e.once("exit",i),e.once("error",i)})}s(Qn,"waitForExit");function Pr(e,t){let n=!1;try{process.kill(-e,t),n=!0}catch{}try{process.kill(e,t),n=!0}catch{}return n}s(Pr,"signalPosixPidTree");function to(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}s(to,"signalTargetExists");function Tr(e){return to(-e)||to(e)}s(Tr,"isPosixPidTreeAlive");async function _r(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Tr(e))return!0;await new Promise(o=>setTimeout(o,50))}return!Tr(e)}s(_r,"waitForPosixPidTreeExit");function
|
|
121
|
-
`),t=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:eo,windowsHide:!0});if(!t.error&&t.status===0){let i=
|
|
122
|
-
`),t=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:eo,windowsHide:!0});if(!(t.error||t.status!==0))return Mr(t.stdout)}s(
|
|
123
|
-
`)):void 0}}s(
|
|
124
|
-
`),r=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",o],{encoding:"utf8",timeout:
|
|
120
|
+
}`;function Me(e){return e.exitCode!==null||e.signalCode!==null}s(Me,"isExited");function Qn(e,t){return Me(e)?Promise.resolve(!0):new Promise(n=>{let o=!1,r=s(u=>{o||(o=!0,clearTimeout(a),e.off("exit",i),e.off("error",i),n(u))},"finish"),i=s(()=>r(!0),"onExit"),a=setTimeout(()=>r(!1),t);a.unref?.(),e.once("exit",i),e.once("error",i)})}s(Qn,"waitForExit");function Pr(e,t){let n=!1;try{process.kill(-e,t),n=!0}catch{}try{process.kill(e,t),n=!0}catch{}return n}s(Pr,"signalPosixPidTree");function to(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}s(to,"signalTargetExists");function Tr(e){return to(-e)||to(e)}s(Tr,"isPosixPidTreeAlive");async function _r(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Tr(e))return!0;await new Promise(o=>setTimeout(o,50))}return!Tr(e)}s(_r,"waitForPosixPidTreeExit");function wa(e){let t=e.trim();if(!t)return[];try{let n=JSON.parse(t);return(Array.isArray(n)?n:[n]).flatMap(r=>{if(typeof r!="object"||r===null)return[];let i=r,a=Number(i.pid),u=Number(i.parentPid),c=typeof i.creationTime=="string"?i.creationTime:String(i.creationTime??"0");return!Number.isFinite(a)||a<=0||!Number.isFinite(u)?[]:[{pid:a,parentPid:u,creationTime:/^\d+$/.test(c)?c:"0"}]})}catch{return[]}}s(wa,"parseWindowsProcessSnapshotJson");function Pa(e){let t=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-])(\d{3})$/.exec(e);if(!t)return;let[,n,o,r,i,a,u,c,d,f]=t,p=Date.UTC(Number(n),Number(o)-1,Number(r),Number(i),Number(a),Number(u),Number(c.slice(0,3))),l=Number(f)*6e4*(d==="+"?1:-1),h=p-l;if(Number.isFinite(h))return{identity:(BigInt(h)+11644473600000n).toString(),unixMs:h}}s(Pa,"parseWmicCreationTime");function Ta(){let e=["$cutoff = [DateTime]::UtcNow","$items = try { @(Get-CimInstance Win32_Process -ErrorAction Stop) } catch { @(Get-WmiObject Win32_Process -ErrorAction Stop) }","$rows = @($items | ForEach-Object {"," $creationTime = '0'"," try {"," $created = $_.CreationDate"," if ($created -isnot [DateTime]) { $created = [System.Management.ManagementDateTimeConverter]::ToDateTime([string]$created) }"," $created = $created.ToUniversalTime()"," if ($created -le $cutoff) { $creationTime = ([long][Math]::Floor($created.ToFileTimeUtc() / 10000)).ToString() }"," } catch {}"," [PSCustomObject]@{ pid = [int]$_.ProcessId; parentPid = [int]$_.ParentProcessId; creationTime = $creationTime }","})","$rows | ConvertTo-Json -Compress"].join(`
|
|
121
|
+
`),t=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:eo,windowsHide:!0});if(!t.error&&t.status===0){let i=wa(t.stdout);if(i.length>0)return i}let n=Date.now(),o=Vt("wmic",["process","get","CreationDate,ParentProcessId,ProcessId","/format:list"],{encoding:"utf8",timeout:eo,windowsHide:!0});if(o.error||o.status!==0)return;let r=o.stdout.split(/\r?\n\s*\r?\n/).flatMap(i=>{let a=new Map(i.split(/\r?\n/).flatMap(p=>{let l=p.indexOf("=");return l<0?[]:[[p.slice(0,l),p.slice(l+1)]]})),u=Number(a.get("ProcessId")),c=Number(a.get("ParentProcessId")),d=a.get("CreationDate"),f=d===void 0?void 0:Pa(d);return!Number.isFinite(u)||u<=0||!Number.isFinite(c)||f===void 0||f.unixMs>n?[]:[{pid:u,parentPid:c,creationTime:f.identity}]});return r.length>0?r:void 0}s(Ta,"readWindowsProcessSnapshotFallback");function _a(){let e=["$source = @'",Rr,"'@","Add-Type -TypeDefinition $source","[KodaXNativeProcessSnapshot]::ReadRows()"].join(`
|
|
122
|
+
`),t=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{encoding:"utf8",timeout:eo,windowsHide:!0});if(!(t.error||t.status!==0))return Mr(t.stdout)}s(_a,"readWindowsProcessSnapshotNative");function Mr(e){let t=e.split(/\r?\n/).map(o=>o.trim()).filter(Boolean);if(t.some(o=>!/^\d+,\d+,\d+$/.test(o)))return;let n=t.flatMap(o=>{let[r,i,a="0"]=o.split(",",3),u=Number(r),c=Number(i);return!Number.isFinite(u)||u<=0||!Number.isFinite(c)?[]:[{pid:u,parentPid:c,creationTime:a}]});return n.length>0?n:void 0}s(Mr,"parseWindowsNativeProcessRows");function wt(){return _a()??Ta()}s(wt,"readWindowsProcessSnapshot");function Ar(e,t,n){let o=new Map;for(let u of e)o.set(u.parentPid,[...o.get(u.parentPid)??[],u]);let r=[],i=[{pid:t,...n===void 0?{}:{creationTime:n},ancestryVerified:n!==void 0&&n!=="0"}],a=new Set([t]);for(;i.length>0;){let u=i.shift();if(u===void 0)break;for(let c of o.get(u.pid)??[]){if(a.has(c.pid)||!Ca(c.creationTime,u.creationTime))continue;a.add(c.pid);let d=u.ancestryVerified&&c.creationTime!=="0";r.push(d?c:{...c,creationTime:"0"}),i.push({pid:c.pid,creationTime:c.creationTime,ancestryVerified:d})}}return r}s(Ar,"collectDescendantIdentities");function Ca(e,t){if(e==="0"||t===void 0||t==="0")return!0;try{return BigInt(e)>=BigInt(t)}catch{return!1}}s(Ca,"windowsCreationAtLeast");function Sa(e,t=wt()){if(t===void 0)return;let n=new Set(t.filter(r=>r.creationTime==="0").map(r=>r.pid));if(e.some(r=>n.has(r.pid)))return;let o=new Set(t.filter(r=>r.creationTime!=="0").map(r=>`${r.pid}:${r.creationTime}`));return new Set(e.filter(r=>r.creationTime!=="0").filter(r=>o.has(`${r.pid}:${r.creationTime}`)).map(r=>r.pid))}s(Sa,"currentCapturedWindowsPids");function no(e,t=wt()){if(t===void 0)return;let n=Sa([e.root,...e.descendants],t);if(n!==void 0){if(n.size>0)return!1;if(e.completeTree)return e.uncertainDescendantPids.every(o=>!t.some(r=>r.pid===o))?!0:void 0}}s(no,"capturedWindowsProcessesGone");function Ra(e){return[e.root.pid,...e.descendants.map(t=>t.pid),...e.uncertainDescendantPids].some(to)}s(Ra,"capturedWindowsPidMayBeAlive");async function Cr(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ra(e))return no(e)===!0;await new Promise(o=>setTimeout(o,50))}return no(e)===!0}s(Cr,"waitForCapturedWindowsProcessesExit");var Ir="KODAX_TERMINATION_COMPLETED",Or="KODAX_SNAPSHOT_COMPLETED";function Ma(e,t){let n=e.trim().split(/\r?\n/),o=n.indexOf(Ir),r=n.indexOf(Or);return{terminationAttempted:t||o>=0,snapshot:t&&o>=0&&r>o?Mr(n.slice(o+1,r).join(`
|
|
123
|
+
`)):void 0}}s(Ma,"readWindowsTerminationResult");function Sr(e,t=!1){let n=[...e].reverse().flatMap(i=>/^\d+$/.test(i.creationTime)?[`[KodaXNativeProcessSnapshot]::TerminateExact(${i.pid}, [UInt64]${i.creationTime}) | Out-Null`]:[]);if(n.length===0)return{terminationAttempted:!1};let o=["$source = @'",Rr,"'@","Add-Type -TypeDefinition $source",...n,...t?[`[Console]::Out.WriteLine('${Ir}')`,"[Console]::Out.Flush()","[Console]::Out.Write([KodaXNativeProcessSnapshot]::ReadRows())",`[Console]::Out.WriteLine('${Or}')`,"[Console]::Out.Flush()"]:[]].join(`
|
|
124
|
+
`),r=Vt("powershell.exe",["-NoProfile","-NonInteractive","-Command",o],{encoding:"utf8",timeout:xa,windowsHide:!0});return Ma(r.stdout??"",!r.error&&r.status===0)}s(Sr,"terminateCapturedWindowsProcesses");var xt=new WeakMap;function qe(e){if(process.platform!=="win32"||e.pid===void 0)return;let t=xt.get(e),n=wt();if(t!==void 0&&Me(e)){if(n===void 0)return t.root.creationTime;let r=n.find(a=>a.pid===e.pid);if(r!==void 0&&r.creationTime!==t.root.creationTime)return t.root.creationTime;let i=Ar(n,t.root.pid,t.root.creationTime);return xt.set(e,{root:t.root,descendants:i.filter(a=>a.creationTime!=="0"),uncertainDescendantPids:i.filter(a=>a.creationTime==="0").map(a=>a.pid),completeTree:t.completeTree}),t.root.creationTime}let o=n?.find(r=>r.pid===e.pid&&r.creationTime!=="0");if(o===void 0&&n!==void 0&&!Me(e)&&(o=wt()?.find(r=>r.pid===e.pid&&r.creationTime!=="0")),!(o===void 0||Me(e)))return xt.set(e,{root:o,descendants:[],uncertainDescendantPids:[],completeTree:!1}),o.creationTime}s(qe,"rememberChildProcessTree");function Aa(e,t){let n=wt();if(n===void 0)return;let o=n.find(i=>i.pid===e);if(o===void 0||o.creationTime==="0"||o.creationTime!==t)return null;let r=Ar(n,e,o.creationTime);return{root:o,descendants:r.filter(i=>i.creationTime!=="0"),uncertainDescendantPids:r.filter(i=>i.creationTime==="0").map(i=>i.pid),completeTree:!0}}s(Aa,"captureWindowsProcessTree");async function Zn(e){let t=[e.root,...e.descendants],n=Sr(t,e.completeTree);return e.completeTree?n.snapshot!==void 0&&no(e,n.snapshot)===!0||await Cr(e,Re)?pe:n.terminationAttempted?(Sr(t),await Cr(e,Re)?pe:U):U:U}s(Zn,"killCapturedWindowsTree");async function qt(e){let t;if(process.platform==="win32"&&e.pid!==void 0){let n=xt.get(e),o=n===void 0?void 0:Aa(e.pid,n.root.creationTime);o!=null&&xt.set(e,o);let r=o??n;return o===void 0&&r===void 0||Me(e)&&r!==void 0&&!r.completeTree&&r.descendants.length===0?U:(t=o===void 0?r===void 0?U:await Zn(r):o===null?r===void 0?U:await Zn(r):await Zn(o),await Qn(e,Re)?t.status==="unknown"?U:pe:U)}if(e.pid!==void 0&&process.platform!=="win32")return Pr(e.pid,"SIGTERM")?await _r(e.pid,Re)?pe:(Pr(e.pid,"SIGKILL"),await _r(e.pid,Re)?pe:U):wr;if(Me(e))return process.platform==="win32"&&e.pid!==void 0?U:wr;try{e.kill("SIGTERM")}catch{return Me(e)&&t?.status!=="unknown"?pe:U}if(await Qn(e,Re))return t?.status==="unknown"?U:pe;try{e.kill("SIGKILL")}catch{}return await Qn(e,Re)?t?.status==="unknown"?U:pe:U}s(qt,"killChildProcessTree");var le=class extends Error{static{s(this,"AcpTransportClosedError")}constructor(){super("ACP transport closed before the request completed"),this.name="AcpTransportClosedError"}},Jt=class{static{s(this,"AcpClient")}client=null;agentProcess=null;options;constructor(t){this.options=t}async connect(){let{ClientSideConnection:t,PROTOCOL_VERSION:n,ndJsonStream:o}=await import("@agentclientprotocol/sdk"),r,i;if(this.options.inputStream&&this.options.outputStream)r=this.options.inputStream,i=this.options.outputStream;else if(this.options.command){let c=Gt.platform==="win32"&&!this.options.command.endsWith(".cmd")?`${this.options.command}.cmd`:this.options.command;if(this.agentProcess=Ia(c,this.options.args??[],{cwd:this.options.cwd??Gt.cwd(),stdio:["pipe","pipe","inherit"],detached:Gt.platform!=="win32",windowsHide:!0}),qe(this.agentProcess),!this.agentProcess.stdin||!this.agentProcess.stdout)throw new Error("Failed to create ACP stdio pipes");i=Da.toWeb(this.agentProcess.stdin),r=Oa.toWeb(this.agentProcess.stdout)}else throw new Error("AcpClient requires either a command or I/O streams");let a=o(i,r);if(this.client=new t(()=>({sessionUpdate:s(async u=>{this.options.onSessionUpdate?.(u)},"sessionUpdate"),requestPermission:s(async u=>{let c=u.options??[],d=c.find(f=>f.kind==="allow_once"||f.kind==="allow_always")??c[0];return d?{outcome:{outcome:"selected",optionId:d.optionId}}:{outcome:{outcome:"cancelled"}}},"requestPermission")}),a),this.client.signal.aborted)throw new le;await this.awaitWhileConnected(this.client.initialize({protocolVersion:n,clientCapabilities:{},clientInfo:{name:"kodax-ai-acp-client",version:"1.0.0"}}))}async createNewSession(){if(!this.client)throw new Error("Client not connected");if(this.client.signal.aborted)throw new le;return(await this.awaitWhileConnected(this.client.newSession({cwd:this.options.cwd??Gt.cwd(),mcpServers:[]}))).sessionId}async prompt(t,n,o,r){if(!this.client)throw new Error("Client not connected");if(o?.throwIfAborted(),this.client.signal.aborted)throw new le;let i={sessionId:n,prompt:[{type:"text",text:t}]};r?.model&&(i.model=r.model),r?.reasoningEffort&&(i.effort=r.reasoningEffort);let a=this.client.prompt(i);if(o){let u,c=new Promise((f,p)=>{u=p}),d=s(()=>{this.client?.cancel({sessionId:n}).catch(()=>{});let f=new Error("ACP prompt aborted");f.name="AbortError",u?.(o.reason??f)},"onAbort");o.addEventListener("abort",d,{once:!0}),a=Promise.race([a,c]).finally(()=>{o.removeEventListener("abort",d)})}return await this.awaitWhileConnected(a)}isConnectionOpen(){return this.client!==null&&!this.client.signal.aborted}releaseSession(t){this.options.releaseSession?.(t)}disconnect(){this.agentProcess&&qt(this.agentProcess),this.options.abort?.();try{this.client?.close?.()}catch{}this.client=null,this.agentProcess=null}async awaitWhileConnected(t){let n=this.client;if(!n||n.signal.aborted)throw t.catch(()=>{}),new le;let o,r=new Promise((i,a)=>{o=s(()=>a(new le),"onClosed"),n.signal.addEventListener("abort",o,{once:!0})});try{return await Promise.race([t,r])}finally{o&&n.signal.removeEventListener("abort",o)}}};function La(e){if(!e||typeof e!="object")return;let t=e,n=t.inputTokens,o=t.outputTokens,r=t.totalTokens;if([n,o,r].some(l=>typeof l!="number"||!Number.isFinite(l)||l<0))return;let i=n,a=o,u=r;if(u<i||u<a)return;let c=s(l=>typeof l=="number"&&Number.isFinite(l)&&l>=0?l:void 0,"optionalToken"),d=c(t.cachedReadTokens),f=c(t.cachedWriteTokens),p=c(t.thoughtTokens);return{inputTokens:i,outputTokens:a,totalTokens:u,...d!==void 0?{cachedReadTokens:d}:{},...f!==void 0?{cachedWriteTokens:f}:{},...p!==void 0?{thoughtTokens:p}:{}}}s(La,"normalizeAcpUsage");function Na(e){if(e.effort==="none")return"none";if(!(!e.enabled||e.effort==="auto"))return e.effort}s(Na,"selectAcpReasoningEffort");function Dr(e){if(!e?.aborted)return;let t=e.reason;if(!(t===void 0||t instanceof Error&&t.name==="AbortError"))return t}s(Dr,"nonCancellationAbortReason");var ye=class extends ce{static{s(this,"KodaXAcpProvider")}_client=null;_clientConnectPromise=null;_connectingClient=null;_clientGeneration=0;_sessionMap=new Map;_activeStreams=new Map;_activeConversationIds=new Set;async ensureClient(t){if(this._client?.isConnectionOpen())return this._client;if(this._client&&this.invalidateClient(this._client),!this._clientConnectPromise){let n=this._clientGeneration===0?this.acpClientOptions:this.acpClientOptions.recreate?.()??this.acpClientOptions;this._clientGeneration+=1;let o={...n,onSessionUpdate:t},r=new Jt(o);this._connectingClient=r;let i;i=r.connect().then(()=>{if(this._clientConnectPromise!==i||this._connectingClient!==r)throw new Error("ACP client initialization was cancelled");return this._connectingClient=null,this._client=r,r}).catch(a=>{throw this._connectingClient===r&&(this._connectingClient=null,r.disconnect()),a}).finally(()=>{this._clientConnectPromise===i&&(this._clientConnectPromise=null)}),this._clientConnectPromise=i}return await this._clientConnectPromise}invalidateClient(t){this._client===t&&(this._client=null,this._sessionMap.clear(),t.disconnect())}supportsEphemeralSuffix(){return!0}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`}}getDiagnosticPromptText(t,n){let o=t.map(a=>Array.isArray(a.content)?{...a,content:He(a.content)}:a),r=o[o.length-1],i="";if(r&&typeof r.content=="string")i=r.content;else if(r&&Array.isArray(r.content)){let a=[];for(let u of r.content)if(u.type==="text")a.push(u.text);else if(u.type==="image"){let c=this.serializeImageBlockToPromptToken(u);c&&a.push(c)}i=a.join(`
|
|
125
125
|
`)}return n?i.length>0?`${i}
|
|
126
126
|
|
|
127
|
-
${n}`:n:i}getCapabilityProfile(){return Z(bt)}serializeImageBlockToPromptToken(t){return null}stripCacheBoundariesFromMessages(t){return t.map(n=>{if(typeof n.content=="string")return n;let o=He(n.content);return o.length===n.content.length?n:{...n,content:o}})}async stream(t,n,o,r,i,a){let u=this.normalizeReasoning(r),c=
|
|
127
|
+
${n}`:n:i}getCapabilityProfile(){return Z(bt)}serializeImageBlockToPromptToken(t){return null}stripCacheBoundariesFromMessages(t){return t.map(n=>{if(typeof n.content=="string")return n;let o=He(n.content);return o.length===n.content.length?n:{...n,content:o}})}async stream(t,n,o,r,i,a){let u=this.normalizeReasoning(r),c=Na(u);if(t=this.stripCacheBoundariesFromMessages(t),this.acpClientOptions.executor&&typeof this.acpClientOptions.executor.isInstalled=="function"&&!await this.acpClientOptions.executor.isInstalled())throw new Error(`${this.name} requires a local CLI environment, but the CLI was not found or is not configured correctly.`);let d=[],f=[],p=i?.ephemeralSuffix?.content,l=this.getDiagnosticPromptText(t,p),h=s(g=>{let y=g.update,k=g.sessionId;if(!("sessionUpdate"in y))return;let v=k?this._activeStreams.get(k):void 0;if(v)switch(y.sessionUpdate){case"agent_message_chunk":if(y.content?.type==="text"){let x=y.content.text;v.output.text+=x,v.streamOptions?.onTextDelta?.(x)}break;case"tool_call":{let x="{}",P=y,R=P.arguments??P.parameters;R&&(x=typeof R=="string"?R:JSON.stringify(R)),v.streamOptions?.onToolInputDelta?.(y.title,x);let E=`
|
|
128
128
|
> [Tool Use] ${y.title}: ${x}
|
|
129
129
|
`;v.output.text+=E,v.streamOptions?.onTextDelta?.(E);break}case"tool_call_update":if(y.status){let x=`> [Tool Result] ${y.status}
|
|
130
130
|
|
|
131
|
-
`;v.output.text+=x,v.streamOptions?.onTextDelta?.(x)}break}},"onSessionUpdate"),m=i?.sessionId,T=await this.ensureClient(h);if(m&&this._activeConversationIds.has(m))throw new Error(`ACP conversation "${m}" already has an active prompt`);m&&this._activeConversationIds.add(m);try{let g=m?this._sessionMap.get(m):void 0;g||(g=await T.createNewSession(),m&&this._sessionMap.set(m,g));let y={text:""};this._activeStreams.set(g,{streamOptions:i,output:y});let k;try{k=await T.prompt(l,g,a,{model:i?.modelOverride,reasoningEffort:c})}catch(v){v instanceof
|
|
132
|
-
`);o=i.pop()??"";for(let a of i){if(!a.trim())continue;let u=this.parseLine(a.trim());u&&(yield u)}}if(o.trim()&&!n?.aborted){let r=this.parseLine(o.trim());r&&(yield r)}}};import{spawn as
|
|
131
|
+
`;v.output.text+=x,v.streamOptions?.onTextDelta?.(x)}break}},"onSessionUpdate"),m=i?.sessionId,T=await this.ensureClient(h);if(m&&this._activeConversationIds.has(m))throw new Error(`ACP conversation "${m}" already has an active prompt`);m&&this._activeConversationIds.add(m);try{let g=m?this._sessionMap.get(m):void 0;g||(g=await T.createNewSession(),m&&this._sessionMap.set(m,g));let y={text:""};this._activeStreams.set(g,{streamOptions:i,output:y});let k;try{k=await T.prompt(l,g,a,{model:i?.modelOverride,reasoningEffort:c})}catch(v){v instanceof le&&this.invalidateClient(T);let x=Dr(a);if(x!==void 0)throw x;if(!(a?.aborted||v instanceof Error&&v.name==="AbortError"))throw v}finally{this._activeStreams.delete(g),m||T.releaseSession(g)}if(k?.stopReason==="cancelled"){let v=Dr(a);if(v!==void 0)throw v}return y.text&&d.push({type:"text",text:y.text}),{textBlocks:d,toolBlocks:f,thinkingBlocks:[],usage:La(k?.usage)}}catch(g){throw g instanceof le&&this.invalidateClient(T),g}finally{m&&this._activeConversationIds.delete(m)}}disconnect(){this._clientConnectPromise=null;let t=this._connectingClient;this._connectingClient=null,t?.disconnect(),this._client&&(this._client.disconnect(),this._client=null),this._activeStreams.clear(),this._activeConversationIds.clear(),this._sessionMap.clear()}};import{spawn as $a}from"node:child_process";import Pt from"node:process";var Ge=class{static{s(this,"CLIExecutor")}config;_installedCache=null;constructor(t){this.config=t}async isInstalled(){return this._installedCache!==null?this._installedCache:(this._installedCache=await this.checkInstalled(),this._installedCache)}async*execute(t){let n=this.buildArgs(t),o={...Pt.env,...this.config.env},i=Pt.platform==="win32"&&!this.config.command.endsWith(".cmd")?`${this.config.command}.cmd`:this.config.command,a=$a(i,n,{cwd:this.config.cwd??Pt.cwd(),env:o,stdio:["ignore","pipe","pipe"],detached:Pt.platform!=="win32",windowsHide:!0}),u="";a.stderr?.on("data",E=>{u+=E.toString()});let c=new AbortController,d={},f,p=new Promise(E=>{f=s(()=>E(d),"resolveAbort")});qe(a);let l=s(()=>{if(c.signal.aborted)return;let E=t.signal?.reason;E===void 0?c.abort():c.abort(E)},"forwardExternalAbort");t.signal?.addEventListener("abort",l),t.signal?.aborted&&l();let h=!1,m,T=s(()=>(m||(m=(async()=>{let E={status:"unknown"};for(let _=0;_<3;_+=1){if(qe(a),E=await qt(a),E.status!=="unknown"||h&&!c.signal.aborted)return E;_<2&&await new Promise(b=>setTimeout(b,50))}return E})()),m),"terminateChild"),g=s(()=>{f?.(),h||(T(),a.stdout?.destroy())},"abortHandler");c.signal.addEventListener("abort",g),c.signal.aborted&&g(),a.on("exit",()=>{h=!0,qe(a)});let y=!1,k,v,x=this.config.timeout;x!==void 0&&Number.isFinite(x)&&x>0&&!c.signal.aborted&&(v=setTimeout(()=>{c.signal.aborted||(y=!0,k=new Error(`Provider CLI timed out after ${x}ms`),c.abort(k))},x),v.unref?.());let P=s(async E=>{let _=await Promise.race([E,p]);if(_===d)throw c.signal.reason??k??new Error("Provider CLI execution aborted");return _},"waitForExecution"),R=new Promise((E,_)=>{a.once("error",_),a.once("close",(b,C)=>E({code:b,signal:C}))});try{let E=this.parseOutputStream(a.stdout,c.signal)[Symbol.asyncIterator]();for(;;){let C=await P(E.next());if(C.done)break;yield C.value}if(c.signal.aborted)throw c.signal.reason;let _=await P(R);if(y)throw k??c.signal.reason;let b=u.trim();if(!t.signal?.aborted&&_.code!==0){let C=_.code===null?`signal ${_.signal??"unknown"}`:`code ${_.code}`;throw new Error(`Provider CLI exited with ${C}${b?`: ${b}`:""}`)}b&&console.error(`[CLIExecutor] stderr: ${b}`)}catch(E){throw R.catch(()=>{}),c.signal.aborted?c.signal.reason:E}finally{if(v&&clearTimeout(v),t.signal?.removeEventListener("abort",l),c.signal.removeEventListener("abort",g),Pt.platform==="win32"||m!==void 0||!h){let E=m!==void 0;if((await T()).status==="unknown"&&(E||!h))throw new Error("Provider CLI process-tree termination could not be verified")}}}async*parseOutputStream(t,n){let o="";for await(let r of t){if(n?.aborted)break;o+=r.toString();let i=o.split(`
|
|
132
|
+
`);o=i.pop()??"";for(let a of i){if(!a.trim())continue;let u=this.parseLine(a.trim());u&&(yield u)}}if(o.trim()&&!n?.aborted){let r=this.parseLine(o.trim());r&&(yield r)}}};import{spawn as ja}from"node:child_process";import Fa from"node:process";async function Yt(e){try{let t=Fa.platform==="win32",n=ja(t?`${e}.cmd`:e,["--version"],{windowsHide:!0});return await new Promise(o=>{n.on("close",r=>o(r===0)),n.on("error",()=>o(!1))})}catch{return!1}}s(Yt,"checkCliCommandInstalled");function Qt(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}s(Qt,"finiteNonNegative");function Ba(e){if(!(!e||!Qt(e.input_tokens)||!Qt(e.output_tokens)||!Qt(e.total_tokens)))return{inputTokens:e.input_tokens,outputTokens:e.output_tokens,totalTokens:e.total_tokens,...Qt(e.cached)?{cachedReadTokens:e.cached}:{}}}s(Ba,"normalizeGeminiUsage");var Zt=class extends Ge{static{s(this,"GeminiCLIExecutor")}model;constructor(t){super({command:"gemini",baseArgs:["--output-format","stream-json","--approval-mode","yolo"],timeout:3e5,...t}),this.model=t?.model??"gemini-2.5-pro"}async checkInstalled(){return Yt("gemini")}buildArgs(t){let n=["-m",t.model??this.model];return t.sessionId?(n.push("-r",t.sessionId),n.push(t.prompt)):n.push("-p",t.prompt),[...n,...this.config.baseArgs]}parseLine(t){if(!t.startsWith("{"))return null;try{let n=JSON.parse(t);return this.convertEvent(n)}catch{return null}}convertEvent(t){let n=t.timestamp?Date.parse(t.timestamp):Date.now();switch(t.type){case"init":return{type:"session_start",timestamp:n,sessionId:t.session_id??"",model:t.model??this.model,raw:t};case"message":return{type:"message",timestamp:n,role:t.role,content:t.content??"",delta:t.delta,raw:t};case"tool_use":return{type:"tool_use",timestamp:n,toolId:t.tool_id??"",toolName:t.tool_name??"",parameters:t.parameters??{},raw:t};case"tool_result":return{type:"tool_result",timestamp:n,toolId:t.tool_id??"",status:t.status==="success"?"success":"error",output:t.output??"",raw:t};case"error":return{type:"error",timestamp:n,errorType:"error",message:t.message??"Unknown error",raw:t};case"result":return{type:"complete",timestamp:n,status:t.status==="success"?"success":"failed",usage:Ba(t.stats),raw:t};default:return null}}};import{TransformStream as Lr}from"node:stream/web";import{randomUUID as oo}from"node:crypto";function Tt(e){let t=new Lr,n=new Lr,o=t.readable.getReader(),r=n.writable.getWriter(),i=new TextDecoder,a=new TextEncoder,u="",c=oo(),d=new AbortController,f=new Map,p=new Map;(async()=>{try{for(;;){let{done:g,value:y}=await o.read();if(g)break;u+=i.decode(y,{stream:!0});let k=u.split(`
|
|
133
133
|
`);u=k.pop()??"";for(let v of k)if(v.trim())try{let x=JSON.parse(v);h(x).catch(P=>{console.error("[PseudoAcpServer] Failed to handle request:",P)})}catch{console.error("[PseudoAcpServer] Failed to parse message:",v)}}}catch(g){console.error("[PseudoAcpServer] Stream read error:",g)}})();let l=s(async g=>{let y=JSON.stringify(g)+`
|
|
134
134
|
`;await r.write(a.encode(y))},"sendMsg");async function h(g){if(g.method==="initialize")await l({jsonrpc:"2.0",id:g.id,result:{protocolVersion:g.params.protocolVersion,serverInfo:{name:"pseudo-acp-server",version:"1.0.0"},serverCapabilities:{}}});else if(g.method==="session/new"||g.method==="sessions/new")c=g.params?.sessionId??oo(),await l({jsonrpc:"2.0",id:g.id,result:{sessionId:c}});else if(g.method==="session/prompt"||g.method==="chat/prompt"){let y=new AbortController,k=g.params.sessionId;f.set(k,y);let v=s(()=>y.abort(),"onGlobalAbort");d.signal.addEventListener("abort",v);let x=m(k,g.params.prompt,typeof g.params.model=="string"?g.params.model:void 0,typeof g.params.effort=="string"?g.params.effort:void 0,y.signal).finally(()=>{f.delete(k),d.signal.removeEventListener("abort",v)});try{let P=await x;await l({jsonrpc:"2.0",id:g.id,result:P.usage?{stopReason:P.stopReason,usage:P.usage}:{stopReason:P.stopReason}})}catch(P){await l({jsonrpc:"2.0",id:g.id,error:{code:-32e3,message:P instanceof Error?P.message:String(P)}})}}else if(g.method==="session/cancel"||g.method==="chat/cancel"){let y=f.get(g.params.sessionId);y&&y.abort(),g.id!==void 0&&await l({jsonrpc:"2.0",id:g.id,result:{}})}else g.id!==void 0&&await l({jsonrpc:"2.0",id:g.id,result:{}})}s(h,"handleRequest");let m=s(async(g,y,k,v,x)=>{let P=y.find(_=>_.type==="text")?.text??"",R,E=!1;try{let _=e.execute({prompt:P,model:k,reasoningEffort:v,sessionId:p.get(g),signal:x});for await(let b of _){if(b.type==="error")throw new Error(b.message);if(b.type==="complete"&&b.status==="failed")throw new Error("Provider CLI reported a failed completion");b.type==="session_start"&&b.sessionId&&p.set(g,b.sessionId);let C=T(b);C&&await l({jsonrpc:"2.0",method:"session/update",params:{sessionId:g,update:C}}),b.type==="complete"&&(E=!0,R=b.usage)}if(!x.aborted&&!E)throw new Error("Provider CLI ended without a completion event");return{stopReason:x.aborted?"cancelled":"end_turn",...R!==void 0?{usage:R}:{}}}catch(_){if(x.aborted||_ instanceof Error&&_.name==="AbortError")return{stopReason:"cancelled"};throw _}},"executePrompt"),T=s(g=>{switch(g.type){case"message":if(g.role==="assistant"&&g.content)return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:g.content}};break;case"tool_use":return{sessionUpdate:"tool_call",title:g.toolName,arguments:g.parameters,status:"running",toolCallId:g.toolId||oo()};case"tool_result":return{sessionUpdate:"tool_call_update",toolCallId:g.toolId,status:g.status};case"error":return{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`
|
|
135
135
|
[Error: ${g.message}]
|
|
136
|
-
`}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:n.readable,outputStream:t.writable,abort:s(()=>{d.abort(),f.clear(),p.clear(),o.cancel().catch(()=>{}),r.abort().catch(()=>{})},"abort"),releaseSession:s(g=>{p.delete(g)},"releaseSession"),recreate:s(()=>Tt(e),"recreate"),executor:e}}s(Tt,"createPseudoAcpServer");import $r from"node:fs";import Nr from"node:os";import jr from"node:path";var Ba="gpt-5.4",Ka="auto-gemini-3",Ua=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Wa=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Fr(e){let t=new Set,n=[];for(let o of e){let r=o.trim();if(!r)continue;let i=r.toLowerCase();t.has(i)||(t.add(i),n.push(r))}return n}s(Fr,"dedupePreserveOrder");function za(){let e=jr.join(Nr.homedir(),".codex","config.toml");try{return $r.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}s(za,"readCodexConfiguredModel");function Xa(){let e=jr.join(Nr.homedir(),".gemini","settings.json");try{let t=JSON.parse($r.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}s(Xa,"readGeminiConfiguredModel");function Je(){return za()||Ba}s(Je,"getCodexCliDefaultModel");function Ye(){return Xa()||Ka}s(Ye,"getGeminiCliDefaultModel");function _t(){return Fr([Je(),...Ua])}s(_t,"getCodexCliKnownModels");function Ct(){return Fr([Ye(),...Wa])}s(Ct,"getGeminiCliKnownModels");var ro=Ye(),Ha=Ct(),Va={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},en=class extends ye{static{s(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:ro,models:Ha.filter(t=>t!==ro).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let t=new Zt({model:ro});this.acpClientOptions=Tt(t)}getCapabilityProfile(){return Z(Va)}serializeImageBlockToPromptToken(t){return/\s/.test(t.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(t.path)}`),null):`@${t.path}`}};function tn(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}s(tn,"finiteNonNegative");function qa(e){if(!(!e||!tn(e.input_tokens)||!tn(e.output_tokens)))return{inputTokens:e.input_tokens,outputTokens:e.output_tokens,totalTokens:e.input_tokens+e.output_tokens,...tn(e.cached_input_tokens)?{cachedReadTokens:e.cached_input_tokens}:{},...tn(e.cache_write_input_tokens)?{cachedWriteTokens:e.cache_write_input_tokens}:{}}}s(qa,"normalizeCodexUsage");function Ga(e){return!e||e==="auto"?[]:["--config",`model_reasoning_effort=${JSON.stringify(e)}`]}s(Ga,"buildReasoningEffortArgs");var nn=class extends Ge{static{s(this,"CodexCLIExecutor")}model;constructor(t){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...t}),this.model=t?.model??"gpt-5.4"}async checkInstalled(){return Yt("codex")}buildArgs(t){this.model=t.model??this.model;let n=t.model?["-m",t.model]:[],o=Ga(t.reasoningEffort);return t.sessionId?["exec","resume",t.sessionId,...n,...o,t.prompt,...this.config.baseArgs.filter(r=>r!=="exec")]:[...this.config.baseArgs,...n,...o,t.prompt]}parseLine(t){if(!t.startsWith("{"))return null;try{let n=JSON.parse(t);return this.convertEvent(n)}catch{return null}}convertEvent(t){let n=Date.now();switch(t.type){case"thread.started":return{type:"session_start",timestamp:n,sessionId:t.thread_id??"",model:this.model,raw:t};case"item.completed":return t.item?.type==="agent_message"?{type:"message",timestamp:n,role:"assistant",content:t.item.text??"",raw:t}:t.item?.type==="command_execution"?{type:"tool_use",timestamp:n,toolId:t.item.id,toolName:"Bash",parameters:{command:t.item.command},raw:t}:null;case"turn.completed":return{type:"complete",timestamp:n,status:"success",usage:qa(t.usage),raw:t};case"error":case"turn.failed":return{type:"error",timestamp:n,errorType:t.type,message:t.message??"Unknown error",raw:t};default:return null}}};var io=Je(),Ja=_t(),on=class extends ye{static{s(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:io,models:Ja.filter(t=>t!==io).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let t=new nn({model:io});this.acpClientOptions=Tt(t)}};import{existsSync as su,readFileSync as au}from"node:fs";import Ze from"node:path";import{fileURLToPath as uu}from"node:url";var Br=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Kr=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Ur=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Wr=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],zr=["max_tokens","max_completion_tokens"],Xr=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Hr=["count-tokens","models-list","minimal-message","unsupported"];function pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}s(pe,"isPlainObject");function Ae(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}s(Ae,"requireString");function Qe(e,t){if(e!==void 0)return Ae(e,t)}s(Qe,"optionalString");function Gr(e,t){if(e!==void 0){if(typeof e!="string"||!zr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${zr.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(Gr,"optionalMaxOutputTokensField");function ve(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}s(ve,"optionalNumber");function B(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}s(B,"optionalBoolean");function Vr(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,o)=>Ae(n,`${t}[${o}]`))}}s(Vr,"optionalStringArray");function Ya(e,t){if(e===void 0)return;if(!pe(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=Ae(r,`${t}.${o}`);return n}s(Ya,"optionalStringMap");function Qa(e,t){if(e!==void 0){if(typeof e!="string"||!Wr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Wr.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(Qa,"optionalReasoningPreset");function so(e,t){if(typeof e!="string"||!Br.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Br.join(", ")}, got ${JSON.stringify(e)}`);return e}s(so,"requireReasoningCapability");function Za(e,t){if(typeof e!="string"||!Kr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Kr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(Za,"requireEffortStrategy");function eu(e,t){if(e!==void 0){if(typeof e!="string"||!Ur.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ur.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(eu,"optionalThinkingStrategy");function qr(e,t){if(e===void 0)return;if(!pe(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Za(e.effortStrategy,`${t}.effortStrategy`),o=Qa(e.reasoningPreset,`${t}.reasoningPreset`),r=eu(e.thinkingStrategy,`${t}.thinkingStrategy`),i=Qe(e.defaultEffort,`${t}.defaultEffort`),a=Ya(e.effortAliases,`${t}.effortAliases`),u=Vr(e.disabledEfforts,`${t}.disabledEfforts`),c=Vr(e.localRejectEfforts,`${t}.localRejectEfforts`),d=B(e.allowCustomEffort,`${t}.allowCustomEffort`),f=B(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),p=B(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),l=B(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),h=B(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),m=B(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),T=B(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),g=B(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(o!==void 0&&(y.reasoningPreset=o),r!==void 0&&(y.thinkingStrategy=r),i!==void 0&&(y.defaultEffort=i),a!==void 0&&(y.effortAliases=a),u!==void 0&&(y.disabledEfforts=u),c!==void 0&&(y.localRejectEfforts=c),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((k,v)=>{if(!pe(k))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${v}] must be an object`);return{value:Ae(k.value,`${t}.supportedEfforts[${v}].value`),...Qe(k.description,`${t}.supportedEfforts[${v}].description`)!==void 0?{description:Qe(k.description,`${t}.supportedEfforts[${v}].description`)}:{},...B(k.isDefault,`${t}.supportedEfforts[${v}].isDefault`)!==void 0?{isDefault:B(k.isDefault,`${t}.supportedEfforts[${v}].isDefault`)}:{},...B(k.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)!==void 0?{isUserVisible:B(k.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!pe(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let k={};for(let[v,x]of Object.entries(e.budgetByEffort))k[v]=ve(x,`${t}.budgetByEffort.${v}`)??0;y.budgetByEffort=k}return d!==void 0&&(y.allowCustomEffort=d),f!==void 0&&(y.supportsReasoningEffort=f),p!==void 0&&(y.supportsReasoningSummary=p),l!==void 0&&(y.supportsEncryptedReasoningReplay=l),h!==void 0&&(y.supportsAdaptiveThinking=h),m!==void 0&&(y.supportsManualThinkingBudget=m),T!==void 0&&(y.supportsDisabledThinking=T),g!==void 0&&(y.requiresEffortBetaHeader=g),y}s(qr,"validateReasoningProfile");function Jr(e,t){let n=e.reasoningProfile,o=e.reasoningCapabilityV2;if(n!==void 0&&o!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?qr(n,`${t}.reasoningProfile`):qr(o,`${t}.reasoningCapabilityV2`)}s(Jr,"validateReasoningProfileField");function tu(e,t){if(typeof e!="string"||!Xr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Xr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(tu,"requireProfileName");function nu(e,t){if(typeof e!="string"||!Hr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Hr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(nu,"requireVerifyStrategy");function ou(e,t){if(!pe(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Ae(e.id,`${t}.id`),o=Qe(e.wireModel,`${t}.wireModel`),r=Qe(e.displayName,`${t}.displayName`),i=ve(e.contextWindow,`${t}.contextWindow`),a=ve(e.maxOutputTokens,`${t}.maxOutputTokens`),u=Gr(e.maxOutputTokensField,`${t}.maxOutputTokensField`),c=ve(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),d=B(e.replayReasoningContent,`${t}.replayReasoningContent`),f=B(e.strictThinkingSignature,`${t}.strictThinkingSignature`),p=ve(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),l=e.reasoningCapability===void 0?void 0:so(e.reasoningCapability,`${t}.reasoningCapability`),h=Jr(e,t),m={id:n};return o!==void 0&&(m.wireModel=o),r!==void 0&&(m.displayName=r),i!==void 0&&(m.contextWindow=i),a!==void 0&&(m.maxOutputTokens=a),u!==void 0&&(m.maxOutputTokensField=u),c!==void 0&&(m.thinkingBudgetCap=c),l!==void 0&&(m.reasoningCapability=l),h!==void 0&&(m.reasoningProfile=h),d!==void 0&&(m.replayReasoningContent=d),f!==void 0&&(m.strictThinkingSignature=f),p!==void 0&&(m.streamMaxDurationMs=p),m}s(ou,"validateModelDescriptor");function ru(e,t){if(e===void 0)return;if(!pe(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=so(r,`${t}.${o}`);return n}s(ru,"validateModelReasoningCapabilities");function iu(e,t){if(!pe(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=B(e.cliBridge,`providers.${t}.cliBridge`),o=Ae(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),r=so(e.reasoningCapability,`providers.${t}.reasoningCapability`),i=Jr(e,`providers.${t}`),a=tu(e.capabilityProfile,`providers.${t}.capabilityProfile`),u=nu(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&u!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${u}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let c=ve(e.contextWindow,`providers.${t}.contextWindow`),d=ve(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),f=Gr(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),p=ve(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),l=B(e.supportsThinking,`providers.${t}.supportsThinking`),h=ru(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),m=Qe(e.model,`providers.${t}.model`);if(n&&(m!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&m===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let T;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);T=e.models.map((k,v)=>ou(k,`providers.${t}.models[${v}]`));let y=new Set([...m===void 0?[]:[m],...T.map(k=>k.id)]);for(let[k,v]of T.entries())if(v.wireModel!==void 0&&!y.has(v.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${k}].wireModel must reference a declared model, got ${JSON.stringify(v.wireModel)}`)}let g={apiKeyEnv:o,reasoningCapability:r,capabilityProfile:a,verifyStrategy:u};return i!==void 0&&(g.reasoningProfile=i),m!==void 0&&(g.model=m),T!==void 0&&(g.models=T),c!==void 0&&(g.contextWindow=c),d!==void 0&&(g.maxOutputTokens=d),f!==void 0&&(g.maxOutputTokensField=f),p!==void 0&&(g.thinkingBudgetCap=p),l!==void 0&&(g.supportsThinking=l),h!==void 0&&(g.modelReasoningCapabilities=h),n&&(g.cliBridge=!0),g}s(iu,"validateProviderEntry");function Yr(e){if(!pe(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=Ae(e.updatedAt,"updatedAt");if(!pe(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[o,r]of Object.entries(e.providers))n[o]=iu(r,o);return{version:1,updatedAt:t,providers:n}}s(Yr,"validateProviderCapabilitiesJson");var cu=Object.freeze({native:ae,"image-input-native":ir,"cli-bridge":bt,"image-input-cli-bridge":sr}),rn=null;function du(){if(process.env.KODAX_BUNDLED==="true")return Ze.join(Ze.dirname(process.execPath),"provider-capabilities.json");let e=Ze.dirname(uu(import.meta.url)),t=[Ze.join(e,"provider-capabilities.json"),Ze.join(Ze.dirname(e),"provider-capabilities.json")];for(let n of t)if(su(n))return n;return t[0]}s(du,"resolveJsonPath");function lu(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Qr(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Qr(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}s(lu,"deepFreezeSnapshot");function Qr(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}s(Qr,"freezeReasoningProfile");function fu(e){if(e==="gemini-cli"){let t=Ye();return{model:t,models:Ct().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Je();return{model:t,models:_t().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}s(fu,"resolveCliBridgeModels");function pu(e,t){let n=cu[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let r=fu(e),i={model:r.model,models:r.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(i.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(i.supportsThinking=t.supportsThinking),i}let o={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(o.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(o.models=t.models),t.modelReasoningCapabilities!==void 0&&(o.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(o.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(o.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(o.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(o.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(o.supportsThinking=t.supportsThinking),o}s(pu,"buildSnapshot");function Zr(){if(rn)return rn;let e=du(),t;try{let r=au(e,"utf8");t=JSON.parse(r)}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`provider-capabilities loader: failed to read ${e}: ${i}`)}let n=Yr(t),o={};for(let[r,i]of Object.entries(n.providers))o[r]=lu(pu(r,i));return rn=Object.freeze(o),rn}s(Zr,"getProviderSnapshots");var W=Zr();function V(e,t={}){let n=W[e];return{apiKeyEnv:n.apiKeyEnv,model:n.model,reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,models:n.models,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,maxOutputTokensField:n.maxOutputTokensField,thinkingBudgetCap:n.thinkingBudgetCap,supportsThinking:n.supportsThinking??!1,verifyStrategy:n.verifyStrategy,...t}}s(V,"buildProviderConfig");var ao=class extends N{static{s(this,"AnthropicProvider")}name="anthropic";config=V("anthropic",{strictThinkingSignature:!0});buildClient(){return Gn({apiKey:this.getApiKey()})}},uo=class extends N{static{s(this,"ZhipuCodingProvider")}name="zhipu-coding";config=V("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},co=class extends N{static{s(this,"ZaiCodingProvider")}name="zai-coding";config=V("zai-coding",{baseUrl:"https://api.z.ai/api/anthropic",streamMaxDurationMs:3e5})},lo=class extends N{static{s(this,"KimiCodeProvider")}name="kimi-code";config=V("kimi-code",{baseUrl:"https://api.kimi.com/coding/",promptCacheAffinity:!0})},fo=class extends N{static{s(this,"MiniMaxCodingProvider")}name="minimax-coding";config=V("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},po=class extends N{static{s(this,"MimoCodingProvider")}name="mimo-coding";config=V("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},go=class extends N{static{s(this,"MimoProvider")}name="mimo";config=V("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},mo=class extends N{static{s(this,"ArkCodingProvider")}name="ark-coding";config=V("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},ho=class extends re{static{s(this,"OpenAIProvider")}name="openai";config=V("openai",{promptCacheAffinity:!0})},yo=class extends N{static{s(this,"DeepSeekProvider")}name="deepseek";config=V("deepseek",{baseUrl:"https://api.deepseek.com/anthropic"})},vo=class extends re{static{s(this,"KimiProvider")}name="kimi";config=V("kimi",{baseUrl:"https://api.moonshot.cn/v1",promptCacheAffinity:!0,replayReasoningContent:!0})},bo=class extends re{static{s(this,"QwenProvider")}name="qwen";config=V("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},Eo=class extends N{static{s(this,"QwenTokenPlanProvider")}name="qwen-token-plan";config=V("qwen-token-plan",{baseUrl:"https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic"})},ko=class extends re{static{s(this,"ZhipuProvider")}name="zhipu";config=V("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},te={anthropic:s(()=>new ao,"anthropic"),openai:s(()=>new ho,"openai"),deepseek:s(()=>new yo,"deepseek"),kimi:s(()=>new vo,"kimi"),"kimi-code":s(()=>new lo,"kimi-code"),qwen:s(()=>new bo,"qwen"),"qwen-token-plan":s(()=>new Eo,"qwen-token-plan"),zhipu:s(()=>new ko,"zhipu"),"zhipu-coding":s(()=>new uo,"zhipu-coding"),"zai-coding":s(()=>new co,"zai-coding"),"minimax-coding":s(()=>new fo,"minimax-coding"),"mimo-coding":s(()=>new po,"mimo-coding"),mimo:s(()=>new go,"mimo"),"ark-coding":s(()=>new mo,"ark-coding"),"gemini-cli":s(()=>new en,"gemini-cli"),"codex-cli":s(()=>new on,"codex-cli")},xo=process.env.KODAX_PROVIDER??"zhipu-coding",ei=new Map;function gu(e){if(z(e))return W[e].apiKeyEnv}s(gu,"resolveApiKeyEnvForProvider");function ti(e){let t=e??xo,n=te[t];if(!n)throw new I(`Unknown provider: ${t}. Available: ${Object.keys(te).join(", ")}`,t,{failureCode:"provider_not_registered",stage:"catalog"});if(we())return n();let o=gu(t),r=Le(t,o?process.env[o]:void 0),i=ei.get(t);if(i&&i.apiKey===r)return i.instance;let a=n();return ei.set(t,{apiKey:r,instance:a}),a}s(ti,"getProvider");function ni(e){if(!z(e))return!1;let t=xe(e);return t!==void 0?t:Le(e,process.env[W[e].apiKeyEnv])!==void 0}s(ni,"isProviderConfigured");function oi(e){return z(e)?W[e].model:null}s(oi,"getProviderModel");function ri(e,t){if(!z(e))return"unknown";let n=W[e],o=t??n.model;return n.models?.find(i=>i.id===o)?.reasoningCapability??n.modelReasoningCapabilities?.[o]??n.reasoningCapability}s(ri,"getProviderConfiguredReasoningCapability");function ii(e){return z(e)?Z(W[e].capabilityProfile):null}s(ii,"getProviderConfiguredCapabilityProfile");function si(){let e=[];for(let t of Object.keys(te)){let n=W[t];e.push({name:t,model:n.model,models:wo(t),configured:!!process.env[n.apiKeyEnv],reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,capabilityProfile:Z(n.capabilityProfile)})}return e}s(si,"getProviderList");function wo(e){return et(e).map(t=>t.id)}s(wo,"getProviderModels");function z(e){return e in te}s(z,"isProviderName");function ai(e){return{id:e.model}}s(ai,"makeDefaultDescriptor");function ui(e,t){if(!t.wireModel)return t;let n=e.models?.find(o=>o.id===t.wireModel);return n?{...n,...t}:t}s(ui,"resolveWireModelDescriptor");function sn(e,t,n){let o=n.id===t.model;return{provider:e,model:n.id,displayName:n.displayName??n.id,supportsThinking:t.supportsThinking??!1,reasoningCapability:n.reasoningCapability??t.reasoningCapability,reasoningProfile:n.reasoningProfile??t.reasoningProfile,contextWindow:n.contextWindow??t.contextWindow,maxOutputTokens:n.maxOutputTokens??t.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap??t.thinkingBudgetCap,isDefault:o}}s(sn,"effectiveCapabilities");function et(e){let t=W[e];if(!t)return[];let n=t.models??[],o=n.find(i=>i.id===t.model),r=n.filter(i=>i.id!==t.model);return[o??ai(t),...r].map(i=>ui(t,i))}s(et,"getProviderModelDescriptors");function an(e,t){let n=W[e];if(!n)return;let o=n.models?.find(r=>r.id===t);return o?sn(e,n,ui(n,o)):t===n.model?sn(e,n,ai(n)):sn(e,n,{id:t})}s(an,"getModelCapabilities");function un(){let e=[];for(let t of Object.keys(te)){let n=W[t];for(let o of et(t))e.push(sn(t,n,o))}return e}s(un,"listBuiltinModelCapabilities");var mu=new Set(["compat","sdk"]),hu=new Set(["max_tokens","max_completion_tokens"]),yu=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function Po(e){return e.reasoningProfile??e.reasoningCapabilityV2}s(Po,"getConfiguredReasoningProfile");function vu(e){return e==="anthropic"?"count-tokens":"models-list"}s(vu,"defaultVerifyStrategyForProtocol");function ci(e,t,n){if(t!==void 0){if(typeof t!="string"||!hu.has(t))throw new Error(`Custom provider "${e.name}": ${n} must be "max_tokens" or "max_completion_tokens".`);if(e.protocol!=="openai")throw new Error(`Custom provider "${e.name}": ${n} is only valid for protocol="openai".`)}}s(ci,"validateMaxOutputTokensField");function cn(e){if(e)return e.effortStrategy==="none"?"none":e.effortStrategy==="prompt-only"?"prompt-only":e.thinkingStrategy==="anthropic-adaptive"?"native-adaptive":e.effortStrategy==="provider-budget"?"native-budget":e.effortStrategy==="provider-toggle"?"native-toggle":"native-effort"}s(cn,"legacyCapabilityFromReasoningProfile");function bu(e,t,n){if(n===!1)return"none";switch(t){case"none":case"prompt-only":return"none";case"native-toggle":return e==="anthropic"?"generic-thinking-toggle":void 0;case"native-budget":return e==="anthropic"?"anthropic-budget":"qwen-hybrid-thinking";case"native-effort":return e==="anthropic"?"claude-adaptive-max":"openai-chat-reasoning";case"native-adaptive":return e==="anthropic"?"claude-adaptive-max":void 0;default:return n!==!0?void 0:e==="anthropic"?"generic-thinking-toggle":void 0}}s(bu,"legacyReasoningPresetForProtocol");function di(e){return e==="none"||typeof e=="object"&&e!==null&&Array.isArray(e.efforts)}s(di,"isSimpleReasoning");function Eu(e,t){if(e==="none")return Nt("none");let n=s(u=>u==="off"?"none":u,"toWire"),o=e.efforts.map(n),r=e.default?n(e.default):void 0,i=o.includes("none"),a=o.map(u=>u===r?{value:u,isDefault:!0}:{value:u});return{effortStrategy:t==="anthropic"?"anthropic-reasoning-effort":"openai-chat-effort",...t==="anthropic"?{thinkingStrategy:"provider-toggle"}:{},...r!==void 0?{defaultEffort:r}:{},supportedEfforts:a,...i?{disabledEfforts:["none"],supportsDisabledThinking:!0}:{localRejectEfforts:["none"],supportsDisabledThinking:!1},supportsReasoningEffort:!0}}s(Eu,"buildReasoningProfileFromSimple");function li(e,t,n,o){let r=di(n)?n:void 0,i=n!==void 0&&!di(n)?n:void 0;if(o?.supportsThinking===!1)return Nt("none");if(e)return{...e,...i??{}};if(r!==void 0)return Eu(r,o?.protocol??"openai");let a=t??(o?bu(o.protocol,o.reasoningCapability,o.supportsThinking):void 0);return a?Nt(a,i):void 0}s(li,"resolveCustomReasoningProfile");function fi(e,t,n){if(e!=="deepseek-v4-openai")return e;let o=n??t;return o==="deepseek-v4-flash"||o==="deepseek-flash"?"deepseek-v4-flash-openai":o==="deepseek-v4-pro"?"deepseek-v4-pro-openai":e}s(fi,"migrateLegacyDeepSeekPreset");function dn(e){return li(Po(e),fi(e.reasoningPreset,e.model),e.reasoning,{protocol:e.protocol,reasoningCapability:e.reasoningCapability,supportsThinking:e.supportsThinking})??(e.protocol==="openai"?{effortStrategy:"openai-chat-effort",allowCustomEffort:!0}:void 0)}s(dn,"resolveCustomProviderReasoningProfile");function Co(e,t,n,o){let r=o==="deepseek-v4-openai"&&Po(e)===void 0&&e.reasoningPreset===void 0&&e.reasoning===void 0&&e.reasoningCapability===void 0;return li(Po(e),fi(e.reasoningPreset??(r?o:void 0),e.id,e.wireModel),e.reasoning,{protocol:t,reasoningCapability:e.reasoningCapability,supportsThinking:n})}s(Co,"resolveCustomModelReasoningProfile");function ku(e,t,n,o){let r=typeof e=="string"?{id:e}:e,i=Co(r,t,n,o),a=n===!1&&r.reasoningCapability!==void 0?{...r,reasoningCapability:"none"}:r;return i?{...a,reasoningProfile:i}:a}s(ku,"customModelDescriptorToFull");function St(e){if(!e.name||!e.baseUrl||!e.apiKeyEnv||!e.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:e.name,baseUrl:e.baseUrl,apiKeyEnv:e.apiKeyEnv,model:e.model})}`);if(e.protocol!=="anthropic"&&e.protocol!=="openai")throw new Error(`Unknown protocol "${e.protocol}" for custom provider "${e.name}". Must be "anthropic" or "openai".`);if(e.userAgentMode!==void 0&&!mu.has(e.userAgentMode))throw new Error(`Unknown userAgentMode "${e.userAgentMode}" for custom provider "${e.name}". Must be "compat" or "sdk".`);if(e.promptCacheAffinity!==void 0&&typeof e.promptCacheAffinity!="boolean")throw new Error(`Custom provider "${e.name}": promptCacheAffinity must be a boolean.`);if(e.imageInput!==void 0&&typeof e.imageInput!="boolean")throw new Error(`Custom provider "${e.name}": imageInput must be a boolean.`);if(ci(e,e.maxOutputTokensField,"maxOutputTokensField"),e.models?.forEach((t,n)=>{typeof t!="string"&&ci(e,t.maxOutputTokensField,`models[${n}].maxOutputTokensField`)}),e.verifyStrategy!==void 0){if(!yu.has(e.verifyStrategy))throw new Error(`Unknown verifyStrategy "${e.verifyStrategy}" for custom provider "${e.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(e.protocol==="openai"&&e.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${e.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}s(St,"validateCustomProviderConfig");function ln(e,t){return t!==!0?e:{...e??ae,multimodalSupport:"image-input"}}s(ln,"mergeCapabilityProfileWithImageInput");function xu(e){let t=e.models?.length?e.models.map(i=>ku(i,e.protocol,e.supportsThinking,e.reasoningPreset)):void 0,n=dn(e),o=e.supportsThinking===!1?"none":e.reasoningCapability??cn(n)??"none",r=e.supportsThinking??(o!=="none"&&o!=="prompt-only");return{apiKeyEnv:e.apiKeyEnv,model:e.model,baseUrl:e.baseUrl,models:t,userAgentMode:e.userAgentMode,supportsThinking:r,reasoningCapability:o,reasoningProfile:n,capabilityProfile:ln(e.capabilityProfile,e.imageInput),contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,maxOutputTokensField:e.maxOutputTokensField,thinkingBudgetCap:e.thinkingBudgetCap,promptCacheAffinity:e.promptCacheAffinity??!1,replayReasoningContent:e.replayReasoningContent??!1,strictThinkingSignature:e.strictThinkingSignature??!1,streamMaxDurationMs:e.streamMaxDurationMs,verifyStrategy:e.verifyStrategy??vu(e.protocol)}}s(xu,"buildProviderConfig");function fn(e){St(e);let t=xu(e);return e.protocol==="anthropic"?new To(e.name,t):new _o(e.name,t)}s(fn,"createCustomProvider");var To=class extends N{static{s(this,"DynamicAnthropicProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}},_o=class extends re{static{s(this,"DynamicOpenAIProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}};var ne=new Map,So=new Map,wu=new Set(["native-toggle","native-budget","native-effort","native-adaptive"]);function pi(e){return e.reasoningCapability!==void 0&&wu.has(e.reasoningCapability)||e.reasoningProfile!==void 0||e.reasoningPreset!==void 0&&e.reasoningPreset!=="none"||e.reasoning!==void 0&&e.reasoning!=="none"}s(pi,"hasThinkingReasoningConfig");function Pu(e){if(e.supportsThinking!==!1)return;let t=pi(e),n=(e.models??[]).some(o=>typeof o!="string"&&pi(o));(t||n)&&console.warn(`[kodax] Custom provider "${e.name}": its reasoning config (provider- or per-model reasoningCapability / reasoningProfile / reasoning / reasoningPreset) is ignored because supportsThinking is false (thinking stays off). Set supportsThinking: true to enable thinking, or remove the reasoning config.`)}s(Pu,"warnOnIgnoredReasoningCapability");function gi(e){let t=new Set,n=new Map,o=new Map;for(let r of e){if(St(r),t.has(r.name))throw new Error(`Duplicate custom provider name: "${r.name}". Each custom provider must have a unique name.`);r.name in te&&console.warn(`[kodax] Custom provider "${r.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),Pu(r),t.add(r.name),n.set(r.name,r),o.set(r.name,()=>fn(r))}ne.clear(),So.clear();for(let[r,i]of n)ne.set(r,i);for(let[r,i]of o)So.set(r,i)}s(gi,"registerCustomProviders");function pn(e){let t=So.get(e);return t?t():void 0}s(pn,"getCustomProvider");function mi(e){let t=ne.get(e)??[...ne.entries()].find(([n])=>n.toLowerCase()===e.toLowerCase())?.[1];if(t)return Z(ln(t.capabilityProfile,t.imageInput)??ae)}s(mi,"getCustomProviderCapabilityProfile");function nt(e){return ne.has(e)}s(nt,"isCustomProviderName");function Rt(){return[...ne.keys()]}s(Rt,"getCustomProviderNames");function hi(){let e=[];for(let[t,n]of ne){let o=!!process.env[n.apiKeyEnv],r=dn(n),i=(n.models??[]).map(u=>typeof u=="string"?u:u.id),a=n.model&&i.length?[...new Set([n.model,...i])]:[n.model];e.push({name:t,model:n.model,models:a,configured:o,reasoningCapability:n.supportsThinking===!1?"none":n.reasoningCapability??cn(r)??"none",capabilityProfile:Z(ln(n.capabilityProfile,n.imageInput)??ae),custom:!0})}return e}s(hi,"getCustomProviderList");function yi(e){let t=ne.get(e);if(!t)return;let n=(t.models??[]).map(o=>typeof o=="string"?o:o.id);return t.model&&n.length?[...new Set([t.model,...n])]:[t.model]}s(yi,"getCustomProviderModels");function vi(e,t,n,o){let r=typeof e=="string"?{id:e}:e,i=Co(r,t,n,o),a=n===!1&&r.reasoningCapability!==void 0?{...r,reasoningCapability:"none"}:r;return i?{...a,reasoningProfile:i}:a}s(vi,"customDescriptorToFull");function gn(e){let t=ne.get(e);if(!t)return;let n=(t.models??[]).map(i=>vi(i,t.protocol,t.supportsThinking,t.reasoningPreset)),o=n.find(i=>i.id===t.model)??{id:t.model},r=n.filter(i=>i.id!==t.model);return[o,...r]}s(gn,"getCustomProviderModelDescriptors");function tt(e,t){let n=ne.get(e);if(!n)return;let o=t===n.model,r=dn(n),a=(n.models??[]).map(d=>vi(d,n.protocol,n.supportsThinking,n.reasoningPreset)).find(d=>d.id===t)??(o?{id:n.model}:void 0);if(!a)return;let u=n.supportsThinking===!1?r:a.reasoningProfile??r,c=n.supportsThinking===!1?"none":a.reasoningCapability??cn(u)??n.reasoningCapability??"none";return{provider:e,model:a.id,displayName:a.displayName??a.id,supportsThinking:n.supportsThinking??(c!=="none"&&c!=="prompt-only"),reasoningCapability:c,reasoningProfile:u,contextWindow:a.contextWindow??n.contextWindow,maxOutputTokens:a.maxOutputTokens??n.maxOutputTokens,thinkingBudgetCap:a.thinkingBudgetCap??n.thinkingBudgetCap,isDefault:o}}s(tt,"getCustomModelCapabilities");function Ro(e){let t=ne.get(e);if(!t)return;let n=t.verifyStrategy??(t.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:n}}s(Ro,"getCustomProviderVerifyMetadata");function mn(){let e=[];for(let[t,n]of ne){let o=tt(t,n.model);o&&e.push(o);for(let r of n.models??[]){let i=typeof r=="string"?r:r.id;if(i===n.model)continue;let a=tt(t,i);a&&e.push(a)}}return e}s(mn,"listCustomProviderModelCapabilities");var ge=new Map,Tu=0;function Mo(e){let t=ge.get(e);if(!(!t||t.length===0))return t[t.length-1]}s(Mo,"getActiveRuntimeProviderRegistration");function _u(e){for(let[t,n]of ge){let o=n.filter(r=>r.id!==e);if(o.length!==n.length){o.length===0?ge.delete(t):ge.set(t,o);return}}}s(_u,"removeRuntimeProviderRegistration");function bi(e,t){let n=e.trim();if(!n)throw new Error("Model provider name cannot be empty.");if(z(n))throw new Error(`Runtime model provider "${n}" conflicts with a built-in provider.`);if(nt(n))throw new Error(`Runtime model provider "${n}" conflicts with an existing config-defined custom provider.`);let o={id:`runtime-provider:${++Tu}`,name:n,factory:t},r=ge.get(n)??[];return ge.set(n,[...r,o]),()=>{_u(o.id)}}s(bi,"registerModelProvider");function hn(e){let t=Mo(e);if(t===void 0)return;let n=t.factory();return t.credentialEnvironmentName??=n.getApiKeyEnv(),n}s(hn,"getRuntimeModelProvider");function Mt(e){return Mo(e)!==void 0}s(Mt,"isRuntimeModelProviderName");function yn(){return Array.from(ge.keys()).filter(e=>Mo(e)!==void 0)}s(yn,"getRuntimeModelProviderNames");function vn(){let e=new Set;for(let t of ge.values())for(let n of t){if(n.credentialEnvironmentName===void 0){let o=n.factory();n.credentialEnvironmentName=o.getApiKeyEnv()}e.add(n.credentialEnvironmentName)}return[...e]}s(vn,"getRuntimeModelProviderCredentialEnvironmentNames");function Ei(){ge.clear()}s(Ei,"clearRuntimeModelProviders");function Ao(e){if(z(e))return te[e]();let t=hn(e);if(t)return t;let n=pn(e);if(n)return n;let o=En();throw new I(`Unknown provider: ${e}. Available: ${o.join(", ")}`,e,{failureCode:"provider_not_registered",stage:"catalog"})}s(Ao,"resolveProvider");function bn(e){return z(e)||Mt(e)||nt(e)}s(bn,"isKnownProvider");function En(){let e=Object.keys(te),t=yn(),n=Rt();return[...new Set([...e,...t,...n])]}s(En,"getAvailableProviderNames");function ki(){let e=new Set;for(let t of Object.values(W))e.add(t.apiKeyEnv);for(let t of Rt()){let n=Ro(t);n!==void 0&&e.add(n.apiKeyEnv)}for(let t of vn())e.add(t);return[...e].sort()}s(ki,"getProviderCredentialEnvironmentNames");function At(e){return z(e)?et(e):gn(e)??[]}s(At,"resolveProviderModelDescriptors");function kn(e,t){return z(e)?an(e,t):tt(e,t)}s(kn,"resolveModelCapabilities");function xi(){return[...un(),...mn()]}s(xi,"listAllModelCapabilities");function Cu(e){if(z(e)){let t=W[e];return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:t.verifyStrategy}}if(!Mt(e))return Ro(e)}s(Cu,"getProviderVerifyMetadata");async function wi(e,t){let n=Cu(e);if(!n&&!bn(e))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${e}". Available: ${En().join(", ")}`};if(n?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${e}" does not support credential verification (cli-bridge or strategy marked unsupported)`};let o=xe(e);if(o===!1)return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:`Active credential scope does not authorize provider "${e}"`};if(n&&o!==!0&&!process.env[n.apiKeyEnv])return{ok:!1,error:"unconfigured",strategy:n.verifyStrategy,durationMs:0,approxTokensSpent:0,message:`Environment variable "${n.apiKeyEnv}" is not set for provider "${e}"`};let r;try{r=Ao(e)}catch(i){return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}try{return await r.verifyCredential(t)}catch(i){return{ok:!1,error:"unknown",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}}s(wi,"verifyProviderCredential");async function Pi(e,t){if(!bn(e))return{ok:!1,source:"failed",error:`Unknown provider: "${e}"`,durationMs:0};let n=At(e);return n.length===0?{ok:!1,source:"failed",error:`Provider "${e}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:n.map(r=>r.id),durationMs:0}}s(Pi,"listProviderModels");function Su(e){let t=e.model??At(e.provider)[0]?.id,n=t?kn(e.provider,t)?.reasoningProfile:void 0;if(!n)return{effort:void 0,configuredEffort:void 0,adjusted:!1};if(n.effortStrategy==="none"||n.effortStrategy==="prompt-only")return{effort:void 0,configuredEffort:e.desiredEffort??"auto",adjusted:!0};if(he(n)){let a=e.desiredEffort??"auto",u=e.rejectedEfforts?.includes("*")?void 0:Ne(n,a).find(c=>c===void 0||!e.rejectedEfforts?.includes(c));return{effort:u,configuredEffort:a,adjusted:u!==a}}let o=e.rejectedEfforts&&e.rejectedEfforts.length>0?Mn(n,e.rejectedEfforts):n,r=ht({capability:o,sessionEffort:e.desiredEffort}),i=r.effectiveEffort;return i!==void 0&&e.rejectedEfforts?.includes(i)&&(i=void 0),{effort:i,configuredEffort:r.configuredEffort,adjusted:i!==r.configuredEffort}}s(Su,"resolveWireEffort");var Ti={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375,cacheReadPer1M:.375,cacheWritePer1M:3.75},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08,cacheReadPer1M:.08,cacheWritePer1M:1}},openai:{"gpt-5.4":{inputPer1M:30,outputPer1M:120},"gpt-5.3-codex-spark":{inputPer1M:10,outputPer1M:40}},deepseek:{"deepseek-flash":{inputPer1M:.14,outputPer1M:.56,cachePer1M:.0028},"deepseek-v4-pro":{inputPer1M:.63,outputPer1M:1.89,cachePer1M:.021}},kimi:{"kimi-k3":{inputPer1M:2.8,outputPer1M:14,cachePer1M:.28},"kimi-k2.7-code":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.182},"kimi-k2.7-code-highspeed":{inputPer1M:1.82,outputPer1M:7.56,cachePer1M:.364},"kimi-k2.6":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.154},"kimi-k2.5":{inputPer1M:.56,outputPer1M:2.94,cachePer1M:.098}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015},k3:{inputPer1M:.01,outputPer1M:.03},"k3-256k":{inputPer1M:.005,outputPer1M:.015},"kimi-for-coding-highspeed":{inputPer1M:.015,outputPer1M:.045}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},"qwen-token-plan":{"qwen3.8-max":{inputPer1M:.005,outputPer1M:.015},"qwen3.8-max-preview":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-max":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-plus":{inputPer1M:.005,outputPer1M:.015},"qwen3.6-flash":{inputPer1M:.005,outputPer1M:.015},"glm-5.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015}},zhipu:{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"zhipu-coding":{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5.2":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03},"glm-4.7":{inputPer1M:.01,outputPer1M:.03}},"zai-coding":{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5.2":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03},"glm-4.7":{inputPer1M:.01,outputPer1M:.03}},"minimax-coding":{"MiniMax-M3":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7-highspeed":{inputPer1M:.01,outputPer1M:.03}},"mimo-coding":{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},mimo:{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},"ark-coding":{"glm-5.3":{inputPer1M:.005,outputPer1M:.015},"glm-5.2":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.7-code":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M3":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M2.7":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-flash":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-code":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-pro":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-lite":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-code":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function Io(e,t,n){let o=n?.[e]?.[t];return o||Ti[e]?.[t]}s(Io,"getCostRate");function Oo(e,t,n,o=0,r=0){let i=Math.max(0,t-o-r),a=e.cacheReadPer1M??e.cachePer1M??e.inputPer1M,u=e.cacheWritePer1M??e.cachePer1M??e.inputPer1M,c=i/1e6*e.inputPer1M,d=n/1e6*e.outputPer1M,f=o/1e6*a,p=r/1e6*u;return c+d+f+p}s(Oo,"calculateCost");function Ru(){return{records:[],retries:[]}}s(Ru,"createCostTracker");function Do(e,t){let n={timestamp:Date.now(),provider:t.provider,waitMs:t.waitMs,reason:t.reason,source:t.source};return{records:e.records,retries:[...e.retries,n]}}s(Do,"recordRetry");function Lo(e,t,n){let o=Io(t.provider,t.model,n),r=o?Oo(o,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens):0,i={timestamp:Date.now(),provider:t.provider,model:t.model,inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheReadTokens:t.cacheReadTokens??0,cacheWriteTokens:t.cacheWriteTokens??0,cost:r,role:t.role};return{records:[...e.records,i],retries:e.retries}}s(Lo,"recordUsage");function Mu(e){let t=0,n=0,o=0,r=0,i=0,a=0,u={},c={};for(let p of e.records){t+=p.cost,n+=p.inputTokens,o+=p.outputTokens,r+=p.cacheReadTokens+p.cacheWriteTokens,i+=p.cacheReadTokens,a+=p.cacheWriteTokens;let l=u[p.provider];u[p.provider]={cost:(l?.cost??0)+p.cost,calls:(l?.calls??0)+1,inputTokens:(l?.inputTokens??0)+p.inputTokens,outputTokens:(l?.outputTokens??0)+p.outputTokens};let h=p.role??"default",m=c[h];c[h]={cost:(m?.cost??0)+p.cost,calls:(m?.calls??0)+1,inputTokens:(m?.inputTokens??0)+p.inputTokens,outputTokens:(m?.outputTokens??0)+p.outputTokens}}let d=0;for(let p of e.retries)d+=p.waitMs;let f=r>0?i/r:0;return{totalCost:t,totalInputTokens:n,totalOutputTokens:o,totalCacheTokens:r,totalCacheReadTokens:i,totalCacheWriteTokens:a,cacheHitRate:f,callCount:e.records.length,retryCount:e.retries.length,retryWaitMs:d,byProvider:u,byRole:c}}s(Mu,"getSummary");function xn(e){return e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}s(xn,"formatCost");function Au(e){let t=[];if(t.push(`Session Cost: ${xn(e.totalCost)} (${e.callCount} calls)`),t.push(`Tokens: ${e.totalInputTokens.toLocaleString()} in / ${e.totalOutputTokens.toLocaleString()} out`),e.totalCacheTokens>0){let r=(e.cacheHitRate*100).toFixed(0);t.push(`Cache: ${e.totalCacheTokens.toLocaleString()} tokens (${e.totalCacheReadTokens.toLocaleString()} read / ${e.totalCacheWriteTokens.toLocaleString()} write, ${r}% hit rate)`)}if(e.retryCount>0){let r=(e.retryWaitMs/1e3).toFixed(1);t.push(`Retries: ${e.retryCount} (${r}s total wait)`)}t.push("");let n=Object.entries(e.byProvider).sort((r,i)=>i[1].cost-r[1].cost);if(n.length>0){t.push("By Provider:");for(let[r,i]of n)t.push(` ${r}: ${xn(i.cost)} (${i.calls} calls, ${i.inputTokens.toLocaleString()} in / ${i.outputTokens.toLocaleString()} out)`);t.push("")}let o=Object.entries(e.byRole).sort((r,i)=>i[1].cost-r[1].cost);if(o.length>1){t.push("By Role:");for(let[r,i]of o)t.push(` ${r}: ${xn(i.cost)} (${i.calls} calls)`)}return t.join(`
|
|
137
|
-
`)}s(
|
|
136
|
+
`}};case"complete":break}return null},"mapToAcpNotification");return{inputStream:n.readable,outputStream:t.writable,abort:s(()=>{d.abort(),f.clear(),p.clear(),o.cancel().catch(()=>{}),r.abort().catch(()=>{})},"abort"),releaseSession:s(g=>{p.delete(g)},"releaseSession"),recreate:s(()=>Tt(e),"recreate"),executor:e}}s(Tt,"createPseudoAcpServer");import Nr from"node:fs";import $r from"node:os";import jr from"node:path";var Ka="gpt-5.4",Ua="auto-gemini-3",Wa=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],za=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Fr(e){let t=new Set,n=[];for(let o of e){let r=o.trim();if(!r)continue;let i=r.toLowerCase();t.has(i)||(t.add(i),n.push(r))}return n}s(Fr,"dedupePreserveOrder");function Xa(){let e=jr.join($r.homedir(),".codex","config.toml");try{return Nr.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}s(Xa,"readCodexConfiguredModel");function Ha(){let e=jr.join($r.homedir(),".gemini","settings.json");try{let t=JSON.parse(Nr.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}s(Ha,"readGeminiConfiguredModel");function Je(){return Xa()||Ka}s(Je,"getCodexCliDefaultModel");function Ye(){return Ha()||Ua}s(Ye,"getGeminiCliDefaultModel");function _t(){return Fr([Je(),...Wa])}s(_t,"getCodexCliKnownModels");function Ct(){return Fr([Ye(),...za])}s(Ct,"getGeminiCliKnownModels");var ro=Ye(),Va=Ct(),qa={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"image-input",evidenceSupport:"limited"},en=class extends ye{static{s(this,"KodaXGeminiCliProvider")}name="gemini-cli";supportsThinking=!1;config={apiKeyEnv:"GEMINI_CLI_API_KEY",model:ro,models:Va.filter(t=>t!==ro).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:1048576};acpClientOptions;constructor(){super();let t=new Zt({model:ro});this.acpClientOptions=Tt(t)}getCapabilityProfile(){return Z(qa)}serializeImageBlockToPromptToken(t){return/\s/.test(t.path)?(console.warn(`[gemini-cli] Image path contains whitespace and cannot be safely passed via @<path> syntax \u2014 dropping image block. Path: ${JSON.stringify(t.path)}`),null):`@${t.path}`}};function tn(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}s(tn,"finiteNonNegative");function Ga(e){if(!(!e||!tn(e.input_tokens)||!tn(e.output_tokens)))return{inputTokens:e.input_tokens,outputTokens:e.output_tokens,totalTokens:e.input_tokens+e.output_tokens,...tn(e.cached_input_tokens)?{cachedReadTokens:e.cached_input_tokens}:{},...tn(e.cache_write_input_tokens)?{cachedWriteTokens:e.cache_write_input_tokens}:{}}}s(Ga,"normalizeCodexUsage");function Ja(e){return!e||e==="auto"?[]:["--config",`model_reasoning_effort=${JSON.stringify(e)}`]}s(Ja,"buildReasoningEffortArgs");var nn=class extends Ge{static{s(this,"CodexCLIExecutor")}model;constructor(t){super({command:"codex",baseArgs:["exec","--json","--full-auto"],timeout:3e5,...t}),this.model=t?.model??"gpt-5.4"}async checkInstalled(){return Yt("codex")}buildArgs(t){this.model=t.model??this.model;let n=t.model?["-m",t.model]:[],o=Ja(t.reasoningEffort);return t.sessionId?["exec","resume",t.sessionId,...n,...o,t.prompt,...this.config.baseArgs.filter(r=>r!=="exec")]:[...this.config.baseArgs,...n,...o,t.prompt]}parseLine(t){if(!t.startsWith("{"))return null;try{let n=JSON.parse(t);return this.convertEvent(n)}catch{return null}}convertEvent(t){let n=Date.now();switch(t.type){case"thread.started":return{type:"session_start",timestamp:n,sessionId:t.thread_id??"",model:this.model,raw:t};case"item.completed":return t.item?.type==="agent_message"?{type:"message",timestamp:n,role:"assistant",content:t.item.text??"",raw:t}:t.item?.type==="command_execution"?{type:"tool_use",timestamp:n,toolId:t.item.id,toolName:"Bash",parameters:{command:t.item.command},raw:t}:null;case"turn.completed":return{type:"complete",timestamp:n,status:"success",usage:Ga(t.usage),raw:t};case"error":case"turn.failed":return{type:"error",timestamp:n,errorType:t.type,message:t.message??"Unknown error",raw:t};default:return null}}};var io=Je(),Ya=_t(),on=class extends ye{static{s(this,"KodaXCodexCliProvider")}name="codex-cli";supportsThinking=!1;config={apiKeyEnv:"CODEX_CLI_API_KEY",model:io,models:Ya.filter(t=>t!==io).map(t=>({id:t,displayName:t})),supportsThinking:!1,reasoningCapability:"prompt-only",contextWindow:128e3};acpClientOptions;constructor(){super();let t=new nn({model:io});this.acpClientOptions=Tt(t)}};import{existsSync as au,readFileSync as uu}from"node:fs";import Ze from"node:path";import{fileURLToPath as cu}from"node:url";var Br=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Kr=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Ur=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Wr=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],zr=["max_tokens","max_completion_tokens"],Xr=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Hr=["count-tokens","models-list","minimal-message","unsupported"];function ge(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}s(ge,"isPlainObject");function Ae(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}s(Ae,"requireString");function Qe(e,t){if(e!==void 0)return Ae(e,t)}s(Qe,"optionalString");function Gr(e,t){if(e!==void 0){if(typeof e!="string"||!zr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${zr.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(Gr,"optionalMaxOutputTokensField");function ve(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}s(ve,"optionalNumber");function B(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}s(B,"optionalBoolean");function Vr(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,o)=>Ae(n,`${t}[${o}]`))}}s(Vr,"optionalStringArray");function Qa(e,t){if(e===void 0)return;if(!ge(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=Ae(r,`${t}.${o}`);return n}s(Qa,"optionalStringMap");function Za(e,t){if(e!==void 0){if(typeof e!="string"||!Wr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Wr.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(Za,"optionalReasoningPreset");function so(e,t){if(typeof e!="string"||!Br.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Br.join(", ")}, got ${JSON.stringify(e)}`);return e}s(so,"requireReasoningCapability");function eu(e,t){if(typeof e!="string"||!Kr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Kr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(eu,"requireEffortStrategy");function tu(e,t){if(e!==void 0){if(typeof e!="string"||!Ur.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ur.join(", ")}, got ${JSON.stringify(e)}`);return e}}s(tu,"optionalThinkingStrategy");function qr(e,t){if(e===void 0)return;if(!ge(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=eu(e.effortStrategy,`${t}.effortStrategy`),o=Za(e.reasoningPreset,`${t}.reasoningPreset`),r=tu(e.thinkingStrategy,`${t}.thinkingStrategy`),i=Qe(e.defaultEffort,`${t}.defaultEffort`),a=Qa(e.effortAliases,`${t}.effortAliases`),u=Vr(e.disabledEfforts,`${t}.disabledEfforts`),c=Vr(e.localRejectEfforts,`${t}.localRejectEfforts`),d=B(e.allowCustomEffort,`${t}.allowCustomEffort`),f=B(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),p=B(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),l=B(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),h=B(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),m=B(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),T=B(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),g=B(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),y={effortStrategy:n};if(o!==void 0&&(y.reasoningPreset=o),r!==void 0&&(y.thinkingStrategy=r),i!==void 0&&(y.defaultEffort=i),a!==void 0&&(y.effortAliases=a),u!==void 0&&(y.disabledEfforts=u),c!==void 0&&(y.localRejectEfforts=c),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);y.supportedEfforts=e.supportedEfforts.map((k,v)=>{if(!ge(k))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${v}] must be an object`);return{value:Ae(k.value,`${t}.supportedEfforts[${v}].value`),...Qe(k.description,`${t}.supportedEfforts[${v}].description`)!==void 0?{description:Qe(k.description,`${t}.supportedEfforts[${v}].description`)}:{},...B(k.isDefault,`${t}.supportedEfforts[${v}].isDefault`)!==void 0?{isDefault:B(k.isDefault,`${t}.supportedEfforts[${v}].isDefault`)}:{},...B(k.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)!==void 0?{isUserVisible:B(k.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!ge(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let k={};for(let[v,x]of Object.entries(e.budgetByEffort))k[v]=ve(x,`${t}.budgetByEffort.${v}`)??0;y.budgetByEffort=k}return d!==void 0&&(y.allowCustomEffort=d),f!==void 0&&(y.supportsReasoningEffort=f),p!==void 0&&(y.supportsReasoningSummary=p),l!==void 0&&(y.supportsEncryptedReasoningReplay=l),h!==void 0&&(y.supportsAdaptiveThinking=h),m!==void 0&&(y.supportsManualThinkingBudget=m),T!==void 0&&(y.supportsDisabledThinking=T),g!==void 0&&(y.requiresEffortBetaHeader=g),y}s(qr,"validateReasoningProfile");function Jr(e,t){let n=e.reasoningProfile,o=e.reasoningCapabilityV2;if(n!==void 0&&o!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?qr(n,`${t}.reasoningProfile`):qr(o,`${t}.reasoningCapabilityV2`)}s(Jr,"validateReasoningProfileField");function nu(e,t){if(typeof e!="string"||!Xr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Xr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(nu,"requireProfileName");function ou(e,t){if(typeof e!="string"||!Hr.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Hr.join(", ")}, got ${JSON.stringify(e)}`);return e}s(ou,"requireVerifyStrategy");function ru(e,t){if(!ge(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Ae(e.id,`${t}.id`),o=Qe(e.wireModel,`${t}.wireModel`),r=Qe(e.displayName,`${t}.displayName`),i=ve(e.contextWindow,`${t}.contextWindow`),a=ve(e.maxOutputTokens,`${t}.maxOutputTokens`),u=Gr(e.maxOutputTokensField,`${t}.maxOutputTokensField`),c=ve(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),d=B(e.replayReasoningContent,`${t}.replayReasoningContent`),f=B(e.strictThinkingSignature,`${t}.strictThinkingSignature`),p=ve(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),l=e.reasoningCapability===void 0?void 0:so(e.reasoningCapability,`${t}.reasoningCapability`),h=Jr(e,t),m={id:n};return o!==void 0&&(m.wireModel=o),r!==void 0&&(m.displayName=r),i!==void 0&&(m.contextWindow=i),a!==void 0&&(m.maxOutputTokens=a),u!==void 0&&(m.maxOutputTokensField=u),c!==void 0&&(m.thinkingBudgetCap=c),l!==void 0&&(m.reasoningCapability=l),h!==void 0&&(m.reasoningProfile=h),d!==void 0&&(m.replayReasoningContent=d),f!==void 0&&(m.strictThinkingSignature=f),p!==void 0&&(m.streamMaxDurationMs=p),m}s(ru,"validateModelDescriptor");function iu(e,t){if(e===void 0)return;if(!ge(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[o,r]of Object.entries(e))n[o]=so(r,`${t}.${o}`);return n}s(iu,"validateModelReasoningCapabilities");function su(e,t){if(!ge(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=B(e.cliBridge,`providers.${t}.cliBridge`),o=Ae(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),r=so(e.reasoningCapability,`providers.${t}.reasoningCapability`),i=Jr(e,`providers.${t}`),a=nu(e.capabilityProfile,`providers.${t}.capabilityProfile`),u=ou(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&u!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${u}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let c=ve(e.contextWindow,`providers.${t}.contextWindow`),d=ve(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),f=Gr(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),p=ve(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),l=B(e.supportsThinking,`providers.${t}.supportsThinking`),h=iu(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),m=Qe(e.model,`providers.${t}.model`);if(n&&(m!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&m===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let T;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);T=e.models.map((k,v)=>ru(k,`providers.${t}.models[${v}]`));let y=new Set([...m===void 0?[]:[m],...T.map(k=>k.id)]);for(let[k,v]of T.entries())if(v.wireModel!==void 0&&!y.has(v.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${k}].wireModel must reference a declared model, got ${JSON.stringify(v.wireModel)}`)}let g={apiKeyEnv:o,reasoningCapability:r,capabilityProfile:a,verifyStrategy:u};return i!==void 0&&(g.reasoningProfile=i),m!==void 0&&(g.model=m),T!==void 0&&(g.models=T),c!==void 0&&(g.contextWindow=c),d!==void 0&&(g.maxOutputTokens=d),f!==void 0&&(g.maxOutputTokensField=f),p!==void 0&&(g.thinkingBudgetCap=p),l!==void 0&&(g.supportsThinking=l),h!==void 0&&(g.modelReasoningCapabilities=h),n&&(g.cliBridge=!0),g}s(su,"validateProviderEntry");function Yr(e){if(!ge(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=Ae(e.updatedAt,"updatedAt");if(!ge(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[o,r]of Object.entries(e.providers))n[o]=su(r,o);return{version:1,updatedAt:t,providers:n}}s(Yr,"validateProviderCapabilitiesJson");var du=Object.freeze({native:ue,"image-input-native":ir,"cli-bridge":bt,"image-input-cli-bridge":sr}),rn=null;function lu(){if(process.env.KODAX_BUNDLED==="true")return Ze.join(Ze.dirname(process.execPath),"provider-capabilities.json");let e=Ze.dirname(cu(import.meta.url)),t=[Ze.join(e,"provider-capabilities.json"),Ze.join(Ze.dirname(e),"provider-capabilities.json")];for(let n of t)if(au(n))return n;return t[0]}s(lu,"resolveJsonPath");function fu(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Qr(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Qr(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}s(fu,"deepFreezeSnapshot");function Qr(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}s(Qr,"freezeReasoningProfile");function pu(e){if(e==="gemini-cli"){let t=Ye();return{model:t,models:Ct().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=Je();return{model:t,models:_t().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}s(pu,"resolveCliBridgeModels");function gu(e,t){let n=du[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let r=pu(e),i={model:r.model,models:r.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(i.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(i.supportsThinking=t.supportsThinking),i}let o={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(o.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(o.models=t.models),t.modelReasoningCapabilities!==void 0&&(o.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(o.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(o.maxOutputTokens=t.maxOutputTokens),t.maxOutputTokensField!==void 0&&(o.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(o.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(o.supportsThinking=t.supportsThinking),o}s(gu,"buildSnapshot");function Zr(){if(rn)return rn;let e=lu(),t;try{let r=uu(e,"utf8");t=JSON.parse(r)}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`provider-capabilities loader: failed to read ${e}: ${i}`)}let n=Yr(t),o={};for(let[r,i]of Object.entries(n.providers))o[r]=fu(gu(r,i));return rn=Object.freeze(o),rn}s(Zr,"getProviderSnapshots");var W=Zr();function V(e,t={}){let n=W[e];return{apiKeyEnv:n.apiKeyEnv,model:n.model,reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,models:n.models,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,maxOutputTokensField:n.maxOutputTokensField,thinkingBudgetCap:n.thinkingBudgetCap,supportsThinking:n.supportsThinking??!1,capabilityProfile:n.capabilityProfile,verifyStrategy:n.verifyStrategy,...t}}s(V,"buildProviderConfig");var ao=class extends ${static{s(this,"AnthropicProvider")}name="anthropic";config=V("anthropic",{strictThinkingSignature:!0});buildClient(){return Gn({apiKey:this.getApiKey()})}},uo=class extends ${static{s(this,"ZhipuCodingProvider")}name="zhipu-coding";config=V("zhipu-coding",{baseUrl:"https://open.bigmodel.cn/api/anthropic",streamMaxDurationMs:3e5})},co=class extends ${static{s(this,"ZaiCodingProvider")}name="zai-coding";config=V("zai-coding",{baseUrl:"https://api.z.ai/api/anthropic",streamMaxDurationMs:3e5})},lo=class extends ${static{s(this,"KimiCodeProvider")}name="kimi-code";config=V("kimi-code",{baseUrl:"https://api.kimi.com/coding/",promptCacheAffinity:!0})},fo=class extends ${static{s(this,"MiniMaxCodingProvider")}name="minimax-coding";config=V("minimax-coding",{baseUrl:"https://api.minimaxi.com/anthropic"})},po=class extends ${static{s(this,"MimoCodingProvider")}name="mimo-coding";config=V("mimo-coding",{baseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic"})},go=class extends ${static{s(this,"MimoProvider")}name="mimo";config=V("mimo",{baseUrl:"https://api.xiaomimimo.com/anthropic"})},mo=class extends ${static{s(this,"ArkCodingProvider")}name="ark-coding";config=V("ark-coding",{baseUrl:"https://ark.cn-beijing.volces.com/api/coding"})},ho=class extends re{static{s(this,"OpenAIProvider")}name="openai";config=V("openai",{promptCacheAffinity:!0})},yo=class extends ${static{s(this,"DeepSeekProvider")}name="deepseek";config=V("deepseek",{baseUrl:"https://api.deepseek.com/anthropic"})},vo=class extends re{static{s(this,"KimiProvider")}name="kimi";config=V("kimi",{baseUrl:"https://api.moonshot.cn/v1",promptCacheAffinity:!0,replayReasoningContent:!0})},bo=class extends re{static{s(this,"QwenProvider")}name="qwen";config=V("qwen",{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",replayReasoningContent:!0})},Eo=class extends ${static{s(this,"QwenTokenPlanProvider")}name="qwen-token-plan";config=V("qwen-token-plan",{baseUrl:"https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic"})},ko=class extends re{static{s(this,"ZhipuProvider")}name="zhipu";config=V("zhipu",{baseUrl:"https://open.bigmodel.cn/api/paas/v4",replayReasoningContent:!0})},te={anthropic:s(()=>new ao,"anthropic"),openai:s(()=>new ho,"openai"),deepseek:s(()=>new yo,"deepseek"),kimi:s(()=>new vo,"kimi"),"kimi-code":s(()=>new lo,"kimi-code"),qwen:s(()=>new bo,"qwen"),"qwen-token-plan":s(()=>new Eo,"qwen-token-plan"),zhipu:s(()=>new ko,"zhipu"),"zhipu-coding":s(()=>new uo,"zhipu-coding"),"zai-coding":s(()=>new co,"zai-coding"),"minimax-coding":s(()=>new fo,"minimax-coding"),"mimo-coding":s(()=>new po,"mimo-coding"),mimo:s(()=>new go,"mimo"),"ark-coding":s(()=>new mo,"ark-coding"),"gemini-cli":s(()=>new en,"gemini-cli"),"codex-cli":s(()=>new on,"codex-cli")},xo=process.env.KODAX_PROVIDER??"zhipu-coding",ei=new Map;function mu(e){if(z(e))return W[e].apiKeyEnv}s(mu,"resolveApiKeyEnvForProvider");function ti(e){let t=e??xo,n=te[t];if(!n)throw new I(`Unknown provider: ${t}. Available: ${Object.keys(te).join(", ")}`,t,{failureCode:"provider_not_registered",stage:"catalog"});if(we())return n();let o=mu(t),r=Le(t,o?process.env[o]:void 0),i=ei.get(t);if(i&&i.apiKey===r)return i.instance;let a=n();return ei.set(t,{apiKey:r,instance:a}),a}s(ti,"getProvider");function ni(e){if(!z(e))return!1;let t=xe(e);return t!==void 0?t:Le(e,process.env[W[e].apiKeyEnv])!==void 0}s(ni,"isProviderConfigured");function oi(e){return z(e)?W[e].model:null}s(oi,"getProviderModel");function ri(e,t){if(!z(e))return"unknown";let n=W[e],o=t??n.model;return n.models?.find(i=>i.id===o)?.reasoningCapability??n.modelReasoningCapabilities?.[o]??n.reasoningCapability}s(ri,"getProviderConfiguredReasoningCapability");function ii(e){return z(e)?Z(W[e].capabilityProfile):null}s(ii,"getProviderConfiguredCapabilityProfile");function si(){let e=[];for(let t of Object.keys(te)){let n=W[t];e.push({name:t,model:n.model,models:wo(t),configured:!!process.env[n.apiKeyEnv],reasoningCapability:n.reasoningCapability,reasoningProfile:n.reasoningProfile,capabilityProfile:Z(n.capabilityProfile)})}return e}s(si,"getProviderList");function wo(e){return et(e).map(t=>t.id)}s(wo,"getProviderModels");function z(e){return e in te}s(z,"isProviderName");function ai(e){return{id:e.model}}s(ai,"makeDefaultDescriptor");function ui(e,t){if(!t.wireModel)return t;let n=e.models?.find(o=>o.id===t.wireModel);return n?{...n,...t}:t}s(ui,"resolveWireModelDescriptor");function sn(e,t,n){let o=n.id===t.model;return{provider:e,model:n.id,displayName:n.displayName??n.id,supportsThinking:t.supportsThinking??!1,reasoningCapability:n.reasoningCapability??t.reasoningCapability,reasoningProfile:n.reasoningProfile??t.reasoningProfile,contextWindow:n.contextWindow??t.contextWindow,maxOutputTokens:n.maxOutputTokens??t.maxOutputTokens,thinkingBudgetCap:n.thinkingBudgetCap??t.thinkingBudgetCap,isDefault:o}}s(sn,"effectiveCapabilities");function et(e){let t=W[e];if(!t)return[];let n=t.models??[],o=n.find(i=>i.id===t.model),r=n.filter(i=>i.id!==t.model);return[o??ai(t),...r].map(i=>ui(t,i))}s(et,"getProviderModelDescriptors");function an(e,t){let n=W[e];if(!n)return;let o=n.models?.find(r=>r.id===t);return o?sn(e,n,ui(n,o)):t===n.model?sn(e,n,ai(n)):sn(e,n,{id:t})}s(an,"getModelCapabilities");function un(){let e=[];for(let t of Object.keys(te)){let n=W[t];for(let o of et(t))e.push(sn(t,n,o))}return e}s(un,"listBuiltinModelCapabilities");var hu=new Set(["compat","sdk"]),yu=new Set(["max_tokens","max_completion_tokens"]),vu=new Set(["count-tokens","models-list","minimal-message","unsupported"]);function Po(e){return e.reasoningProfile??e.reasoningCapabilityV2}s(Po,"getConfiguredReasoningProfile");function bu(e){return e==="anthropic"?"count-tokens":"models-list"}s(bu,"defaultVerifyStrategyForProtocol");function ci(e,t,n){if(t!==void 0){if(typeof t!="string"||!yu.has(t))throw new Error(`Custom provider "${e.name}": ${n} must be "max_tokens" or "max_completion_tokens".`);if(e.protocol!=="openai")throw new Error(`Custom provider "${e.name}": ${n} is only valid for protocol="openai".`)}}s(ci,"validateMaxOutputTokensField");function cn(e){if(e)return e.effortStrategy==="none"?"none":e.effortStrategy==="prompt-only"?"prompt-only":e.thinkingStrategy==="anthropic-adaptive"?"native-adaptive":e.effortStrategy==="provider-budget"?"native-budget":e.effortStrategy==="provider-toggle"?"native-toggle":"native-effort"}s(cn,"legacyCapabilityFromReasoningProfile");function Eu(e,t,n){if(n===!1)return"none";switch(t){case"none":case"prompt-only":return"none";case"native-toggle":return e==="anthropic"?"generic-thinking-toggle":void 0;case"native-budget":return e==="anthropic"?"anthropic-budget":"qwen-hybrid-thinking";case"native-effort":return e==="anthropic"?"claude-adaptive-max":"openai-chat-reasoning";case"native-adaptive":return e==="anthropic"?"claude-adaptive-max":void 0;default:return n!==!0?void 0:e==="anthropic"?"generic-thinking-toggle":void 0}}s(Eu,"legacyReasoningPresetForProtocol");function di(e){return e==="none"||typeof e=="object"&&e!==null&&Array.isArray(e.efforts)}s(di,"isSimpleReasoning");function ku(e,t){if(e==="none")return $t("none");let n=s(u=>u==="off"?"none":u,"toWire"),o=e.efforts.map(n),r=e.default?n(e.default):void 0,i=o.includes("none"),a=o.map(u=>u===r?{value:u,isDefault:!0}:{value:u});return{effortStrategy:t==="anthropic"?"anthropic-reasoning-effort":"openai-chat-effort",...t==="anthropic"?{thinkingStrategy:"provider-toggle"}:{},...r!==void 0?{defaultEffort:r}:{},supportedEfforts:a,...i?{disabledEfforts:["none"],supportsDisabledThinking:!0}:{localRejectEfforts:["none"],supportsDisabledThinking:!1},supportsReasoningEffort:!0}}s(ku,"buildReasoningProfileFromSimple");function li(e,t,n,o){let r=di(n)?n:void 0,i=n!==void 0&&!di(n)?n:void 0;if(o?.supportsThinking===!1)return $t("none");if(e)return{...e,...i??{}};if(r!==void 0)return ku(r,o?.protocol??"openai");let a=t??(o?Eu(o.protocol,o.reasoningCapability,o.supportsThinking):void 0);return a?$t(a,i):void 0}s(li,"resolveCustomReasoningProfile");function fi(e,t,n){if(e!=="deepseek-v4-openai")return e;let o=n??t;return o==="deepseek-v4-flash"||o==="deepseek-flash"?"deepseek-v4-flash-openai":o==="deepseek-v4-pro"?"deepseek-v4-pro-openai":e}s(fi,"migrateLegacyDeepSeekPreset");function dn(e){return li(Po(e),fi(e.reasoningPreset,e.model),e.reasoning,{protocol:e.protocol,reasoningCapability:e.reasoningCapability,supportsThinking:e.supportsThinking})??(e.protocol==="openai"?{effortStrategy:"openai-chat-effort",allowCustomEffort:!0}:void 0)}s(dn,"resolveCustomProviderReasoningProfile");function Co(e,t,n,o){let r=o==="deepseek-v4-openai"&&Po(e)===void 0&&e.reasoningPreset===void 0&&e.reasoning===void 0&&e.reasoningCapability===void 0;return li(Po(e),fi(e.reasoningPreset??(r?o:void 0),e.id,e.wireModel),e.reasoning,{protocol:t,reasoningCapability:e.reasoningCapability,supportsThinking:n})}s(Co,"resolveCustomModelReasoningProfile");function xu(e,t,n,o){let r=typeof e=="string"?{id:e}:e,i=Co(r,t,n,o),a=n===!1&&r.reasoningCapability!==void 0?{...r,reasoningCapability:"none"}:r;return i?{...a,reasoningProfile:i}:a}s(xu,"customModelDescriptorToFull");function St(e){if(!e.name||!e.baseUrl||!e.apiKeyEnv||!e.model)throw new Error(`Custom provider requires name, baseUrl, apiKeyEnv, and model. Got: ${JSON.stringify({name:e.name,baseUrl:e.baseUrl,apiKeyEnv:e.apiKeyEnv,model:e.model})}`);if(e.protocol!=="anthropic"&&e.protocol!=="openai")throw new Error(`Unknown protocol "${e.protocol}" for custom provider "${e.name}". Must be "anthropic" or "openai".`);if(e.userAgentMode!==void 0&&!hu.has(e.userAgentMode))throw new Error(`Unknown userAgentMode "${e.userAgentMode}" for custom provider "${e.name}". Must be "compat" or "sdk".`);if(e.promptCacheAffinity!==void 0&&typeof e.promptCacheAffinity!="boolean")throw new Error(`Custom provider "${e.name}": promptCacheAffinity must be a boolean.`);if(e.imageInput!==void 0&&typeof e.imageInput!="boolean")throw new Error(`Custom provider "${e.name}": imageInput must be a boolean.`);if(ci(e,e.maxOutputTokensField,"maxOutputTokensField"),e.models?.forEach((t,n)=>{typeof t!="string"&&ci(e,t.maxOutputTokensField,`models[${n}].maxOutputTokensField`)}),e.verifyStrategy!==void 0){if(!vu.has(e.verifyStrategy))throw new Error(`Unknown verifyStrategy "${e.verifyStrategy}" for custom provider "${e.name}". Must be one of "count-tokens" | "models-list" | "minimal-message" | "unsupported".`);if(e.protocol==="openai"&&e.verifyStrategy==="count-tokens")throw new Error(`Custom provider "${e.name}": verifyStrategy="count-tokens" requires Anthropic protocol; got protocol="openai". Use "models-list" or "minimal-message" for OpenAI-compat.`)}}s(St,"validateCustomProviderConfig");function ln(e,t){return t!==!0?e:{...e??ue,multimodalSupport:"image-input"}}s(ln,"mergeCapabilityProfileWithImageInput");function wu(e){let t=e.models?.length?e.models.map(i=>xu(i,e.protocol,e.supportsThinking,e.reasoningPreset)):void 0,n=dn(e),o=e.supportsThinking===!1?"none":e.reasoningCapability??cn(n)??"none",r=e.supportsThinking??(o!=="none"&&o!=="prompt-only");return{apiKeyEnv:e.apiKeyEnv,model:e.model,baseUrl:e.baseUrl,models:t,userAgentMode:e.userAgentMode,supportsThinking:r,reasoningCapability:o,reasoningProfile:n,capabilityProfile:ln(e.capabilityProfile,e.imageInput),contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,maxOutputTokensField:e.maxOutputTokensField,thinkingBudgetCap:e.thinkingBudgetCap,promptCacheAffinity:e.promptCacheAffinity??!1,replayReasoningContent:e.replayReasoningContent??!1,strictThinkingSignature:e.strictThinkingSignature??!1,streamMaxDurationMs:e.streamMaxDurationMs,verifyStrategy:e.verifyStrategy??bu(e.protocol)}}s(wu,"buildProviderConfig");function fn(e){St(e);let t=wu(e);return e.protocol==="anthropic"?new To(e.name,t):new _o(e.name,t)}s(fn,"createCustomProvider");var To=class extends ${static{s(this,"DynamicAnthropicProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}},_o=class extends re{static{s(this,"DynamicOpenAIProvider")}name;config;constructor(t,n){super(),this.name=t,this.config=n}};var ne=new Map,So=new Map,Pu=new Set(["native-toggle","native-budget","native-effort","native-adaptive"]);function pi(e){return e.reasoningCapability!==void 0&&Pu.has(e.reasoningCapability)||e.reasoningProfile!==void 0||e.reasoningPreset!==void 0&&e.reasoningPreset!=="none"||e.reasoning!==void 0&&e.reasoning!=="none"}s(pi,"hasThinkingReasoningConfig");function Tu(e){if(e.supportsThinking!==!1)return;let t=pi(e),n=(e.models??[]).some(o=>typeof o!="string"&&pi(o));(t||n)&&console.warn(`[kodax] Custom provider "${e.name}": its reasoning config (provider- or per-model reasoningCapability / reasoningProfile / reasoning / reasoningPreset) is ignored because supportsThinking is false (thinking stays off). Set supportsThinking: true to enable thinking, or remove the reasoning config.`)}s(Tu,"warnOnIgnoredReasoningCapability");function gi(e){let t=new Set,n=new Map,o=new Map;for(let r of e){if(St(r),t.has(r.name))throw new Error(`Duplicate custom provider name: "${r.name}". Each custom provider must have a unique name.`);r.name in te&&console.warn(`[kodax] Custom provider "${r.name}" shadows a built-in provider. The built-in provider will be used. Choose a different name to use your custom provider.`),Tu(r),t.add(r.name),n.set(r.name,r),o.set(r.name,()=>fn(r))}ne.clear(),So.clear();for(let[r,i]of n)ne.set(r,i);for(let[r,i]of o)So.set(r,i)}s(gi,"registerCustomProviders");function pn(e){let t=So.get(e);return t?t():void 0}s(pn,"getCustomProvider");function mi(e){let t=ne.get(e)??[...ne.entries()].find(([n])=>n.toLowerCase()===e.toLowerCase())?.[1];if(t)return Z(ln(t.capabilityProfile,t.imageInput)??ue)}s(mi,"getCustomProviderCapabilityProfile");function nt(e){return ne.has(e)}s(nt,"isCustomProviderName");function Rt(){return[...ne.keys()]}s(Rt,"getCustomProviderNames");function hi(){let e=[];for(let[t,n]of ne){let o=!!process.env[n.apiKeyEnv],r=dn(n),i=(n.models??[]).map(u=>typeof u=="string"?u:u.id),a=n.model&&i.length?[...new Set([n.model,...i])]:[n.model];e.push({name:t,model:n.model,models:a,configured:o,reasoningCapability:n.supportsThinking===!1?"none":n.reasoningCapability??cn(r)??"none",capabilityProfile:Z(ln(n.capabilityProfile,n.imageInput)??ue),custom:!0})}return e}s(hi,"getCustomProviderList");function yi(e){let t=ne.get(e);if(!t)return;let n=(t.models??[]).map(o=>typeof o=="string"?o:o.id);return t.model&&n.length?[...new Set([t.model,...n])]:[t.model]}s(yi,"getCustomProviderModels");function vi(e,t,n,o){let r=typeof e=="string"?{id:e}:e,i=Co(r,t,n,o),a=n===!1&&r.reasoningCapability!==void 0?{...r,reasoningCapability:"none"}:r;return i?{...a,reasoningProfile:i}:a}s(vi,"customDescriptorToFull");function gn(e){let t=ne.get(e);if(!t)return;let n=(t.models??[]).map(i=>vi(i,t.protocol,t.supportsThinking,t.reasoningPreset)),o=n.find(i=>i.id===t.model)??{id:t.model},r=n.filter(i=>i.id!==t.model);return[o,...r]}s(gn,"getCustomProviderModelDescriptors");function tt(e,t){let n=ne.get(e);if(!n)return;let o=t===n.model,r=dn(n),a=(n.models??[]).map(d=>vi(d,n.protocol,n.supportsThinking,n.reasoningPreset)).find(d=>d.id===t)??(o?{id:n.model}:void 0);if(!a)return;let u=n.supportsThinking===!1?r:a.reasoningProfile??r,c=n.supportsThinking===!1?"none":a.reasoningCapability??cn(u)??n.reasoningCapability??"none";return{provider:e,model:a.id,displayName:a.displayName??a.id,supportsThinking:n.supportsThinking??(c!=="none"&&c!=="prompt-only"),reasoningCapability:c,reasoningProfile:u,contextWindow:a.contextWindow??n.contextWindow,maxOutputTokens:a.maxOutputTokens??n.maxOutputTokens,thinkingBudgetCap:a.thinkingBudgetCap??n.thinkingBudgetCap,isDefault:o}}s(tt,"getCustomModelCapabilities");function Ro(e){let t=ne.get(e);if(!t)return;let n=t.verifyStrategy??(t.protocol==="anthropic"?"count-tokens":"models-list");return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:n}}s(Ro,"getCustomProviderVerifyMetadata");function mn(){let e=[];for(let[t,n]of ne){let o=tt(t,n.model);o&&e.push(o);for(let r of n.models??[]){let i=typeof r=="string"?r:r.id;if(i===n.model)continue;let a=tt(t,i);a&&e.push(a)}}return e}s(mn,"listCustomProviderModelCapabilities");var me=new Map,_u=0;function Mo(e){let t=me.get(e);if(!(!t||t.length===0))return t[t.length-1]}s(Mo,"getActiveRuntimeProviderRegistration");function Cu(e){for(let[t,n]of me){let o=n.filter(r=>r.id!==e);if(o.length!==n.length){o.length===0?me.delete(t):me.set(t,o);return}}}s(Cu,"removeRuntimeProviderRegistration");function bi(e,t){let n=e.trim();if(!n)throw new Error("Model provider name cannot be empty.");if(z(n))throw new Error(`Runtime model provider "${n}" conflicts with a built-in provider.`);if(nt(n))throw new Error(`Runtime model provider "${n}" conflicts with an existing config-defined custom provider.`);let o={id:`runtime-provider:${++_u}`,name:n,factory:t},r=me.get(n)??[];return me.set(n,[...r,o]),()=>{Cu(o.id)}}s(bi,"registerModelProvider");function hn(e){let t=Mo(e);if(t===void 0)return;let n=t.factory();return t.credentialEnvironmentName??=n.getApiKeyEnv(),n}s(hn,"getRuntimeModelProvider");function Mt(e){return Mo(e)!==void 0}s(Mt,"isRuntimeModelProviderName");function yn(){return Array.from(me.keys()).filter(e=>Mo(e)!==void 0)}s(yn,"getRuntimeModelProviderNames");function vn(){let e=new Set;for(let t of me.values())for(let n of t){if(n.credentialEnvironmentName===void 0){let o=n.factory();n.credentialEnvironmentName=o.getApiKeyEnv()}e.add(n.credentialEnvironmentName)}return[...e]}s(vn,"getRuntimeModelProviderCredentialEnvironmentNames");function Ei(){me.clear()}s(Ei,"clearRuntimeModelProviders");function Ao(e){if(z(e))return te[e]();let t=hn(e);if(t)return t;let n=pn(e);if(n)return n;let o=En();throw new I(`Unknown provider: ${e}. Available: ${o.join(", ")}`,e,{failureCode:"provider_not_registered",stage:"catalog"})}s(Ao,"resolveProvider");function bn(e){return z(e)||Mt(e)||nt(e)}s(bn,"isKnownProvider");function En(){let e=Object.keys(te),t=yn(),n=Rt();return[...new Set([...e,...t,...n])]}s(En,"getAvailableProviderNames");function ki(){let e=new Set;for(let t of Object.values(W))e.add(t.apiKeyEnv);for(let t of Rt()){let n=Ro(t);n!==void 0&&e.add(n.apiKeyEnv)}for(let t of vn())e.add(t);return[...e].sort()}s(ki,"getProviderCredentialEnvironmentNames");function At(e){return z(e)?et(e):gn(e)??[]}s(At,"resolveProviderModelDescriptors");function kn(e,t){return z(e)?an(e,t):tt(e,t)}s(kn,"resolveModelCapabilities");function xi(){return[...un(),...mn()]}s(xi,"listAllModelCapabilities");function Su(e){if(z(e)){let t=W[e];return{apiKeyEnv:t.apiKeyEnv,verifyStrategy:t.verifyStrategy}}if(!Mt(e))return Ro(e)}s(Su,"getProviderVerifyMetadata");async function wi(e,t){let n=Su(e);if(!n&&!bn(e))return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Unknown provider: "${e}". Available: ${En().join(", ")}`};if(n?.verifyStrategy==="unsupported")return{ok:!1,error:"unsupported",strategy:"unsupported",durationMs:0,approxTokensSpent:0,message:`Provider "${e}" does not support credential verification (cli-bridge or strategy marked unsupported)`};let o=xe(e);if(o===!1)return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:`Active credential scope does not authorize provider "${e}"`};if(n&&o!==!0&&!process.env[n.apiKeyEnv])return{ok:!1,error:"unconfigured",strategy:n.verifyStrategy,durationMs:0,approxTokensSpent:0,message:`Environment variable "${n.apiKeyEnv}" is not set for provider "${e}"`};let r;try{r=Ao(e)}catch(i){return{ok:!1,error:"unconfigured",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}try{return await r.verifyCredential(t)}catch(i){return{ok:!1,error:"unknown",strategy:n?.verifyStrategy??"unsupported",durationMs:0,approxTokensSpent:0,message:String(i?.message??i).slice(0,240)}}}s(wi,"verifyProviderCredential");async function Pi(e,t){if(!bn(e))return{ok:!1,source:"failed",error:`Unknown provider: "${e}"`,durationMs:0};let n=At(e);return n.length===0?{ok:!1,source:"failed",error:`Provider "${e}" has no static model list`,durationMs:0}:{ok:!0,source:"static",models:n.map(r=>r.id),durationMs:0}}s(Pi,"listProviderModels");function Ru(e){let t=e.model??At(e.provider)[0]?.id,n=t?kn(e.provider,t)?.reasoningProfile:void 0;if(!n)return{effort:void 0,configuredEffort:void 0,adjusted:!1};if(n.effortStrategy==="none"||n.effortStrategy==="prompt-only")return{effort:void 0,configuredEffort:e.desiredEffort??"auto",adjusted:!0};if(he(n)){let a=e.desiredEffort??"auto",u=e.rejectedEfforts?.includes("*")?void 0:$e(n,a).find(c=>c===void 0||!e.rejectedEfforts?.includes(c));return{effort:u,configuredEffort:a,adjusted:u!==a}}let o=e.rejectedEfforts&&e.rejectedEfforts.length>0?Mn(n,e.rejectedEfforts):n,r=ht({capability:o,sessionEffort:e.desiredEffort}),i=r.effectiveEffort;return i!==void 0&&e.rejectedEfforts?.includes(i)&&(i=void 0),{effort:i,configuredEffort:r.configuredEffort,adjusted:i!==r.configuredEffort}}s(Ru,"resolveWireEffort");var Ti={anthropic:{"claude-opus-4-8":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-7":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-opus-4-6":{inputPer1M:5,outputPer1M:25,cachePer1M:.5,cacheReadPer1M:.5,cacheWritePer1M:6.25},"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15,cachePer1M:.375,cacheReadPer1M:.375,cacheWritePer1M:3.75},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4,cachePer1M:.08,cacheReadPer1M:.08,cacheWritePer1M:1}},openai:{"gpt-5.4":{inputPer1M:30,outputPer1M:120},"gpt-5.3-codex-spark":{inputPer1M:10,outputPer1M:40}},deepseek:{"deepseek-flash":{inputPer1M:.14,outputPer1M:.56,cachePer1M:.0028},"deepseek-v4-pro":{inputPer1M:.63,outputPer1M:1.89,cachePer1M:.021}},kimi:{"kimi-k3":{inputPer1M:2.8,outputPer1M:14,cachePer1M:.28},"kimi-k2.7-code":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.182},"kimi-k2.7-code-highspeed":{inputPer1M:1.82,outputPer1M:7.56,cachePer1M:.364},"kimi-k2.6":{inputPer1M:.91,outputPer1M:3.78,cachePer1M:.154},"kimi-k2.5":{inputPer1M:.56,outputPer1M:2.94,cachePer1M:.098}},"kimi-code":{"kimi-for-coding":{inputPer1M:.005,outputPer1M:.015},k3:{inputPer1M:.01,outputPer1M:.03},"k3-256k":{inputPer1M:.005,outputPer1M:.015},"kimi-for-coding-highspeed":{inputPer1M:.015,outputPer1M:.045}},qwen:{"qwen3.5-plus":{inputPer1M:.003,outputPer1M:.006}},"qwen-token-plan":{"qwen3.8-max":{inputPer1M:.005,outputPer1M:.015},"qwen3.8-max-preview":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-max":{inputPer1M:.005,outputPer1M:.015},"qwen3.7-plus":{inputPer1M:.005,outputPer1M:.015},"qwen3.6-flash":{inputPer1M:.005,outputPer1M:.015},"glm-5.2":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015}},zhipu:{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5":{inputPer1M:.05,outputPer1M:.1},"glm-5.1":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03}},"zhipu-coding":{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5.2":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03},"glm-4.7":{inputPer1M:.01,outputPer1M:.03}},"zai-coding":{"glm-5.3":{inputPer1M:.05,outputPer1M:.1},"glm-5.3-flash":{inputPer1M:.15,outputPer1M:.5,cachePer1M:.03},"glm-5.2":{inputPer1M:.05,outputPer1M:.1},"glm-5-turbo":{inputPer1M:.01,outputPer1M:.03},"glm-4.7":{inputPer1M:.01,outputPer1M:.03}},"minimax-coding":{"MiniMax-M3":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7":{inputPer1M:.01,outputPer1M:.03},"MiniMax-M2.7-highspeed":{inputPer1M:.01,outputPer1M:.03}},"mimo-coding":{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},mimo:{"mimo-v2.5-pro":{inputPer1M:.01,outputPer1M:.03},"mimo-v2.5":{inputPer1M:.01,outputPer1M:.03}},"ark-coding":{"glm-5.3":{inputPer1M:.005,outputPer1M:.015},"glm-5.2":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.7-code":{inputPer1M:.005,outputPer1M:.015},"kimi-k2.6":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M3":{inputPer1M:.005,outputPer1M:.015},"MiniMax-M2.7":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-pro":{inputPer1M:.005,outputPer1M:.015},"deepseek-v4-flash":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-code":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-pro":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-2.0-lite":{inputPer1M:.005,outputPer1M:.015},"doubao-seed-code":{inputPer1M:.005,outputPer1M:.015}},"gemini-cli":{},"codex-cli":{}};function Io(e,t,n){let o=n?.[e]?.[t];return o||Ti[e]?.[t]}s(Io,"getCostRate");function Oo(e,t,n,o=0,r=0){let i=Math.max(0,t-o-r),a=e.cacheReadPer1M??e.cachePer1M??e.inputPer1M,u=e.cacheWritePer1M??e.cachePer1M??e.inputPer1M,c=i/1e6*e.inputPer1M,d=n/1e6*e.outputPer1M,f=o/1e6*a,p=r/1e6*u;return c+d+f+p}s(Oo,"calculateCost");function Mu(){return{records:[],retries:[]}}s(Mu,"createCostTracker");function Do(e,t){let n={timestamp:Date.now(),provider:t.provider,waitMs:t.waitMs,reason:t.reason,source:t.source};return{records:e.records,retries:[...e.retries,n]}}s(Do,"recordRetry");function Lo(e,t,n){let o=Io(t.provider,t.model,n),r=o?Oo(o,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens):0,i={timestamp:Date.now(),provider:t.provider,model:t.model,inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheReadTokens:t.cacheReadTokens??0,cacheWriteTokens:t.cacheWriteTokens??0,cost:r,role:t.role};return{records:[...e.records,i],retries:e.retries}}s(Lo,"recordUsage");function Au(e){let t=0,n=0,o=0,r=0,i=0,a=0,u={},c={};for(let p of e.records){t+=p.cost,n+=p.inputTokens,o+=p.outputTokens,r+=p.cacheReadTokens+p.cacheWriteTokens,i+=p.cacheReadTokens,a+=p.cacheWriteTokens;let l=u[p.provider];u[p.provider]={cost:(l?.cost??0)+p.cost,calls:(l?.calls??0)+1,inputTokens:(l?.inputTokens??0)+p.inputTokens,outputTokens:(l?.outputTokens??0)+p.outputTokens};let h=p.role??"default",m=c[h];c[h]={cost:(m?.cost??0)+p.cost,calls:(m?.calls??0)+1,inputTokens:(m?.inputTokens??0)+p.inputTokens,outputTokens:(m?.outputTokens??0)+p.outputTokens}}let d=0;for(let p of e.retries)d+=p.waitMs;let f=r>0?i/r:0;return{totalCost:t,totalInputTokens:n,totalOutputTokens:o,totalCacheTokens:r,totalCacheReadTokens:i,totalCacheWriteTokens:a,cacheHitRate:f,callCount:e.records.length,retryCount:e.retries.length,retryWaitMs:d,byProvider:u,byRole:c}}s(Au,"getSummary");function xn(e){return e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}s(xn,"formatCost");function Iu(e){let t=[];if(t.push(`Session Cost: ${xn(e.totalCost)} (${e.callCount} calls)`),t.push(`Tokens: ${e.totalInputTokens.toLocaleString()} in / ${e.totalOutputTokens.toLocaleString()} out`),e.totalCacheTokens>0){let r=(e.cacheHitRate*100).toFixed(0);t.push(`Cache: ${e.totalCacheTokens.toLocaleString()} tokens (${e.totalCacheReadTokens.toLocaleString()} read / ${e.totalCacheWriteTokens.toLocaleString()} write, ${r}% hit rate)`)}if(e.retryCount>0){let r=(e.retryWaitMs/1e3).toFixed(1);t.push(`Retries: ${e.retryCount} (${r}s total wait)`)}t.push("");let n=Object.entries(e.byProvider).sort((r,i)=>i[1].cost-r[1].cost);if(n.length>0){t.push("By Provider:");for(let[r,i]of n)t.push(` ${r}: ${xn(i.cost)} (${i.calls} calls, ${i.inputTokens.toLocaleString()} in / ${i.outputTokens.toLocaleString()} out)`);t.push("")}let o=Object.entries(e.byRole).sort((r,i)=>i[1].cost-r[1].cost);if(o.length>1){t.push("By Role:");for(let[r,i]of o)t.push(` ${r}: ${xn(i.cost)} (${i.calls} calls)`)}return t.join(`
|
|
137
|
+
`)}s(Iu,"formatCostReport");import{performance as No}from"node:perf_hooks";var _i={inputTokens:0,outputTokens:0,totalTokens:0},Ou=3e4,Du=1024;function Ci(e){if(!e)return{effort:"none"};let t=new Set(e.localRejectEfforts??[]),n=new Set(e.disabledEfforts??[]),o=e.supportedEfforts?.filter(i=>i.isUserVisible!==!1).map(i=>i.value).filter(i=>!t.has(i));if(!t.has("none")&&e.supportsDisabledThinking!==!1&&(e.supportsDisabledThinking===!0||o?.includes("none")))return{effort:"none"};let r=o?.find(i=>{let a=e.effortAliases?.[i]??i;return i!=="none"&&a!=="none"&&!n.has(i)&&!n.has(a)&&!t.has(a)});return r!==void 0?{effort:r}:e.supportsDisabledThinking===!1||t.has("none")?{effort:"auto"}:void 0}s(Ci,"resolveDefaultSideQueryReasoning");function Lu(e,t,n,o){if(!o||!Si(e)||!t)return e;let r=n?.effort,i=r==="none"||r!==void 0&&t.disabledEfforts?.includes(r)===!0,a=t.supportsDisabledThinking===!1||t.localRejectEfforts?.includes("none")===!0;return i||!a?e:e+Du}s(Lu,"resolveSideQueryMaxOutputTokens");async function Nu(e){let t=new AbortController,n=e.timeoutMs??Ou,o=e.costTracker,r=No.now(),i=Buffer.byteLength(e.system,"utf8"),a=Buffer.byteLength(JSON.stringify(e.messages),"utf8"),u,c,d,f=0,p=0,l=s((P,R)=>{let E=Math.max(0,Math.round(No.now()-r));return{provider:e.provider.name,model:e.model,timeoutMs:n,elapsedMs:E,systemBytes:i,messageBytes:a,promptBytes:i+a,retryCount:f,retryWaitMs:p,...R!==void 0?R:{},...u!==void 0?{firstUpstreamEventMs:u}:{},...c!==void 0?{firstThinkingDeltaMs:c}:{},...d!==void 0?{firstTextDeltaMs:d,firstOutputMs:d,streamMs:Math.max(0,E-d)}:{},terminalPhase:P}},"diagnostics"),h,m=s(P=>{h||(h=P),t.abort()},"recordAbort"),T=setTimeout(()=>m("timeout"),n),g=s(()=>m("parent"),"onParentAbort");e.abortSignal&&(e.abortSignal.aborted?m("parent"):e.abortSignal.addEventListener("abort",g,{once:!0}));let y=s(()=>Math.max(0,Math.round(No.now()-r)),"elapsed"),k=s(()=>{u===void 0&&(u=y())},"recordUpstreamEvent"),v,x=new Promise((P,R)=>{v=s(()=>{R(new DOMException(h==="timeout"?"sideQuery timed out":"sideQuery aborted","AbortError"))},"onControllerAbort"),t.signal.aborted?v():t.signal.addEventListener("abort",v,{once:!0})});try{let P=e.provider.getReasoningProfile(e.model),R=e.reasoning??Ci(P),E=Lu(e.maxOutputTokens,P,R,e.reasoning===void 0),_=se(e.provider.name,e.credentialPurpose??"utility",t.signal,F=>e.provider.stream([...e.messages],[],e.system,R,{modelOverride:e.model,...Si(E)?{maxOutputTokensOverride:E}:{},onTextDelta:s(D=>{k(),D.length>0&&d===void 0&&(d=y())},"onTextDelta"),onThinkingDelta:s(D=>{k(),D.length>0&&c===void 0&&(c=y())},"onThinkingDelta"),onHeartbeat:s(()=>k(),"onHeartbeat"),onRetryAfter:s(D=>{k(),f+=1,p+=Math.max(0,D.waitMs),o&&(o=Do(o,{provider:D.provider,waitMs:D.waitMs,reason:D.reason,source:D.source}))},"onRetryAfter")},F)),b=await Promise.race([_,x]),C=b.usage??_i,L=b.textBlocks??[],N=b.toolBlocks??[],j=L.map(F=>F.text).join(""),q={responseBytes:Buffer.byteLength(j,"utf8"),textBlockCount:L.length};if(N.length>0)return{text:j,usage:C,costTracker:o,stopReason:"error",diagnostics:l("contract_error",{stopReason:"error",...q}),error:new Error(`sideQuery: provider returned ${N.length} tool_use block(s); sideQuery expects text-only output`)};o&&(o=Lo(o,{provider:e.provider.name,model:e.model,inputTokens:C.inputTokens,outputTokens:C.outputTokens,cacheReadTokens:C.cachedReadTokens,cacheWriteTokens:C.cachedWriteTokens,role:e.querySource}));let G=$u(b.stopReason);return{text:j,usage:C,costTracker:o,stopReason:G,diagnostics:l("completed",{stopReason:G,...q})}}catch(P){let R=P instanceof Error?P:new Error(String(P)),E="error";return t.signal.aborted&&(E=h==="timeout"?"timeout":"aborted"),{text:"",usage:_i,costTracker:o,stopReason:E,diagnostics:l(d!==void 0?"streaming":c!==void 0?"thinking":u!==void 0?"awaiting_text":"pre_output",{stopReason:E}),error:R}}finally{clearTimeout(T),e.abortSignal&&e.abortSignal.removeEventListener("abort",g),v&&t.signal.removeEventListener("abort",v)}}s(Nu,"sideQuery");function Si(e){return e!==void 0&&Number.isInteger(e)&&e>0}s(Si,"isPositiveInteger");function $u(e){return Wt(e)==="truncated"?"max_tokens":"end_turn"}s($u,"mapStopReason");export{Ri as a,Mi as b,Ai as c,Ii as d,Oi as e,Li as f,ji as g,Fi as h,Bi as i,Ki as j,Ui as k,Wi as l,se as m,Xi as n,xe as o,we as p,Cn as q,fe as r,I as s,Ne as t,at as u,ut as v,ct as w,Sn as x,Rn as y,Gi as z,Ji as A,dt as B,Yi as C,lt as D,Qi as E,Zi as F,Nt as G,Mn as H,An as I,In as J,es as K,ts as L,ns as M,Fe as N,Vo as O,qo as P,$n as Q,jn as R,jt as S,mt as T,Go as U,ss as V,Jo as W,ht as X,as as Y,ls as Z,Te as _,_e as $,Fn as aa,Ft as ba,yt as ca,or as da,rr as ea,ks as fa,xs as ga,vt as ha,ae as ia,Bt as ja,ce as ka,Ms as la,Wt as ma,We as na,ze as oa,Wn as pa,zn as qa,Xe as ra,Xn as sa,He as ta,Xt as ua,Zs as va,gr as wa,ea as xa,ta as ya,na as za,oa as Aa,$ as Ba,re as Ca,ye as Da,Je as Ea,Ye as Fa,_t as Ga,Ct as Ha,W as Ia,te as Ja,xo as Ka,ti as La,ni as Ma,oi as Na,ri as Oa,ii as Pa,si as Qa,wo as Ra,z as Sa,et as Ta,an as Ua,un as Va,St as Wa,fn as Xa,gi as Ya,pn as Za,mi as _a,nt as $a,Rt as ab,hi as bb,yi as cb,gn as db,tt as eb,mn as fb,bi as gb,hn as hb,Mt as ib,yn as jb,vn as kb,Ei as lb,Ao as mb,bn as nb,En as ob,ki as pb,At as qb,kn as rb,xi as sb,wi as tb,Pi as ub,Ru as vb,Ti as wb,Io as xb,Oo as yb,Mu as zb,Do as Ab,Lo as Bb,Au as Cb,xn as Db,Iu as Eb,Ci as Fb,Nu as Gb};
|