@shumai-one/shumai-agent 0.3.4 → 0.3.6
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/bin/{chunk-9px4mby3.js → chunk-1ep7nnzp.js} +2 -2
- package/bin/{chunk-hkacwxx5.js → chunk-1jq2vgrd.js} +1 -1
- package/bin/{chunk-qget207r.js → chunk-2ntm65jn.js} +1 -1
- package/bin/{chunk-2qp0n7qr.js → chunk-3nh1p64q.js} +3 -3
- package/bin/{chunk-em0kmz2k.js → chunk-41gh01qj.js} +1 -1
- package/bin/chunk-4n1309xp.js +2 -0
- package/bin/{chunk-decj3jj5.js → chunk-616f7y5x.js} +1 -1
- package/bin/{chunk-d5pe7gc0.js → chunk-6a9h5d64.js} +2 -2
- package/bin/{chunk-frztqry5.js → chunk-6dp3ybh2.js} +1 -1
- package/bin/{chunk-qsj8bjjz.js → chunk-6nd8f70y.js} +2 -2
- package/bin/{chunk-b9fvn1we.js → chunk-6vs3gb9g.js} +1 -1
- package/bin/chunk-7dyx5m0f.js +6 -0
- package/bin/{chunk-wd4xdvj8.js → chunk-7j3qbvwc.js} +1 -1
- package/bin/{chunk-sy5nq4n6.js → chunk-9h5qhgqx.js} +1 -1
- package/bin/chunk-b9s67nd8.js +2 -0
- package/bin/{chunk-5qfgf76w.js → chunk-c14kvr2r.js} +1 -1
- package/bin/{chunk-wtznsfef.js → chunk-ccx6803n.js} +3 -3
- package/bin/{chunk-q8rfm9yd.js → chunk-dd2tfwzy.js} +1 -1
- package/bin/{chunk-3g2568q8.js → chunk-dk9vz5tv.js} +1 -1
- package/bin/{chunk-gza7gcvv.js → chunk-e6691p0v.js} +1 -1
- package/bin/{chunk-c35a19j7.js → chunk-e9d2ah8y.js} +2 -2
- package/bin/{chunk-r6kwqq12.js → chunk-fvmb8en4.js} +1 -1
- package/bin/{chunk-ncafamz2.js → chunk-gegf6d3m.js} +1 -1
- package/bin/{chunk-rwm4gzpt.js → chunk-gx9vdcbm.js} +1 -1
- package/bin/{chunk-081v79v3.js → chunk-j427r7a5.js} +1 -1
- package/bin/chunk-jperx2a8.js +6 -0
- package/bin/{chunk-fyy1bs2c.js → chunk-k4jm2gt4.js} +1 -1
- package/bin/{chunk-12h1srs7.js → chunk-m29dphbf.js} +1 -1
- package/bin/{chunk-n7ywq5jm.js → chunk-mpgy1y53.js} +2 -2
- package/bin/{chunk-w5rk53bc.js → chunk-n1t3he2k.js} +1 -1
- package/bin/{chunk-n7pc3vzj.js → chunk-pmdb6y7t.js} +1 -1
- package/bin/{chunk-c6wkem7t.js → chunk-qx9njyk7.js} +2 -2
- package/bin/{chunk-xmjzej3m.js → chunk-r5h7vczc.js} +2 -2
- package/bin/{chunk-wt1c7rd5.js → chunk-rw98tgm8.js} +43 -4
- package/bin/chunk-spm76160.js +2 -0
- package/bin/{chunk-6e30fa04.js → chunk-t8k09sgb.js} +1 -1
- package/bin/chunk-tvef1ck8.js +2 -0
- package/bin/{chunk-15y416ps.js → chunk-v4j6yxch.js} +1 -1
- package/bin/{chunk-s6td43rw.js → chunk-vjzrmneg.js} +1 -1
- package/bin/{chunk-ghp1vchh.js → chunk-x25enwfz.js} +1 -1
- package/bin/{chunk-5b9qr9hd.js → chunk-xqg06q7q.js} +1 -1
- package/bin/chunk-xvbd9e2b.js +8 -0
- package/bin/{chunk-hbzg8qk9.js → chunk-y2z3xj0m.js} +2 -2
- package/bin/{chunk-tzn6yhz8.js → chunk-ywhrsshf.js} +1 -1
- package/bin/{chunk-36c7hn2a.js → chunk-z512b49m.js} +1 -1
- package/bin/{chunk-y6k3ph6k.js → chunk-z58rb52r.js} +1 -1
- package/bin/{chunk-vra858k4.js → chunk-zazbsz25.js} +1 -1
- package/bin/shumai-agent-app.js +476 -350
- package/package.json +7 -7
- package/prisma/migrations/20260810025327_add_mcp_servers/migration.sql +71 -0
- package/prisma/migrations/20260810074554_mcp_server_cleanup/migration.sql +12 -0
- package/prisma/migrations/20260810124707_add_mcp_server_instructions/migration.sql +2 -0
- package/prisma/schema.prisma +69 -0
- package/bin/chunk-75q7k7ws.js +0 -6
- package/bin/chunk-dnje06y3.js +0 -2
- package/bin/chunk-ghwhw8p2.js +0 -8
- package/bin/chunk-kjh8ef83.js +0 -2
- package/bin/chunk-p2420qj9.js +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
function W(q){if(!(q instanceof Error))return{message:F(q),messageCarriesBody:!1};let w=q,A=I(w),D=K(w),H=D===void 0||q.message.includes(D);return{status:A,body:D,message:q.message,messageCarriesBody:H}}function I(q){if(typeof q.statusCode==="number")return q.statusCode;if(typeof q.status==="number")return q.status;if(typeof q.$metadata?.httpStatusCode==="number")return q.$metadata.httpStatusCode;if(typeof q.$response?.statusCode==="number")return q.$response.statusCode;return}function K(q){let w=P(q);if(w===void 0)return;let A=w.trim();if(A.length===0)return;return V(A,4000)}function P(q){if(typeof q.body==="string")return q.body;if(G(q.error))return F(q.error);let w=q.$response?.body;if(typeof w==="string")return w;if(Q(w))return;if(G(w))return F(w);return}function Q(q){return typeof q==="object"&&q!==null&&"pipe"in q&&typeof q.pipe==="function"}function G(q){return typeof q==="object"&&q!==null&&Object.keys(q).length>0}function X(q,w){if(q.messageCarriesBody||q.status===void 0||q.body===void 0)return w!==void 0&&q.status!==void 0?`${w} (${q.status}): ${q.message}`:q.message;return w!==void 0?`${w} (${q.status}): ${q.body}`:`${q.status}: ${q.body}`}function V(q,w){if(q.length<=w)return q;return`${q.slice(0,w)}... [truncated ${q.length-w} chars]`}function F(q){try{let w=JSON.stringify(q);return w===void 0?String(q):w}catch{return String(q)}}
|
|
3
|
-
export{W as
|
|
3
|
+
export{W as Uc,X as Vc};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{xc as h,yc as z,zc as E}from"./chunk-y2z3xj0m.js";import{Ac as S}from"./chunk-zazbsz25.js";import"./chunk-v4j6yxch.js";import{Dc as f}from"./chunk-fvmb8en4.js";import{Ec as R}from"./chunk-41gh01qj.js";import"./chunk-1ep7nnzp.js";import{Hc as $}from"./chunk-mpgy1y53.js";import{Uc as M,Vc as V}from"./chunk-n1t3he2k.js";import{_c as C,ad as _}from"./chunk-m29dphbf.js";import"./chunk-x25enwfz.js";import{ed as k}from"./chunk-z58rb52r.js";import{ld as L}from"./chunk-r5h7vczc.js";import{md as D}from"./chunk-1jq2vgrd.js";import"./chunk-2ntm65jn.js";var O="v1",g=new Set(["openai","openai-codex","opencode","azure-openai-responses"]),A=16;function T(w){let G=new Map;if(!w)return G;for(let j of w.split(",")){let Q=j.trim();if(!Q)continue;let[W,J]=Q.split("=",2);if(!W||!J)continue;G.set(W.trim(),J.trim())}return G}function I(w,G){if(G?.azureDeploymentName)return G.azureDeploymentName;return T($("AZURE_OPENAI_DEPLOYMENT_NAME_MAP",G?.env)).get(w.id)||w.id}function b(w){return V(M(w),"Azure OpenAI API error")}var y=(w,G,j)=>{let Q=new D;return(async()=>{let W=I(w,j),J={role:"assistant",content:[],api:"azure-openai-responses",provider:w.provider,model:w.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{let X=j?.apiKey;if(!X)throw Error(`No API key for provider: ${w.provider}`);let Y=U(w,X,j),F=C(G.tools,w.compat?.supportsOpenAIGrammarTools??!1),q=x(w,G,j,W,F),H=await j?.onPayload?.(q,w);if(H!==void 0)q=H;let K={...j?.signal?{signal:j.signal}:{},...j?.timeoutMs!==void 0?{timeout:j.timeoutMs}:{},maxRetries:0},{data:B,response:Z}=await R(()=>Y.responses.create(q,K).withResponse(),{maxRetries:j?.maxRetries,maxRetryDelayMs:j?.maxRetryDelayMs,signal:j?.signal});if(await j?.onResponse?.({status:Z.status,headers:k(Z.headers)},w),Q.push({type:"start",partial:J}),await E(B,J,Q,w,{grammarToolInputProperties:F}),j?.signal?.aborted)throw Error("Request was aborted");if(J.stopReason==="aborted"||J.stopReason==="error")throw Error("An unknown error occurred");Q.push({type:"done",reason:J.stopReason,message:J}),Q.end()}catch(X){for(let Y of J.content)delete Y.index,delete Y.partialJson,delete Y.customInput;J.stopReason=j?.signal?.aborted?"aborted":"error",J.errorMessage=b(X),Q.push({type:"error",reason:J.stopReason,error:J}),Q.end()}})(),Q},t=(w,G,j)=>{let Q=j?.apiKey;if(!Q)throw Error(`No API key for provider: ${w.provider}`);let W=_(w,G,j,Q),J=j?.reasoning?L(w,j.reasoning):void 0;return y(w,G,{...W,reasoningEffort:J==="off"?void 0:J})};function v(w){let G=w.trim().replace(/\/+$/,""),j;try{j=new URL(G)}catch{throw Error(`Invalid Azure OpenAI base URL: ${w}`)}let Q=j.hostname.endsWith(".openai.azure.com")||j.hostname.endsWith(".cognitiveservices.azure.com")||j.hostname.endsWith(".ai.azure.com"),W=j.pathname.replace(/\/+$/,"");if(Q&&(W===""||W==="/"||W==="/openai"||W==="/openai/v1/responses"))j.pathname="/openai/v1",j.search="";return j.toString().replace(/\/+$/,"")}function N(w){return`https://${w}.openai.azure.com/openai/v1`}function P(w,G){let j=G?.azureApiVersion||$("AZURE_OPENAI_API_VERSION",G?.env)||O,Q=G?.azureBaseUrl?.trim()||$("AZURE_OPENAI_BASE_URL",G?.env)?.trim()||void 0,W=G?.azureResourceName||$("AZURE_OPENAI_RESOURCE_NAME",G?.env),J=Q;if(!J&&W)J=N(W);if(!J&&w.baseUrl)J=w.baseUrl;if(!J)throw Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return{baseUrl:v(J),apiVersion:j}}function U(w,G,j){let Q={...w.headers};if(j?.headers)Object.assign(Q,j.headers);let{baseUrl:W,apiVersion:J}=P(w,j);return new f({apiKey:G,apiVersion:J,dangerouslyAllowBrowser:!0,defaultHeaders:Q,baseURL:W})}function x(w,G,j,Q,W=C(G.tools,w.compat?.supportsOpenAIGrammarTools??!1)){let J=h(w,G,g,{grammarToolInputProperties:W}),X={model:Q,input:J,stream:!0,prompt_cache_key:S(j?.sessionId),store:!1};if(j?.maxTokens)X.max_output_tokens=Math.max(j.maxTokens,A);if(j?.temperature!==void 0)X.temperature=j?.temperature;if(G.tools&&G.tools.length>0)X.tools=z(G.tools,{supportsStrictMode:w.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:w.compat?.supportsOpenAIGrammarTools??!1});if(w.reasoning){if(j?.reasoningEffort||j?.reasoningSummary){let Y=j?.reasoningEffort?w.thinkingLevelMap?.[j.reasoningEffort]??j.reasoningEffort:"medium";X.reasoning={effort:Y,summary:j?.reasoningSummary||"auto"},X.include=["reasoning.encrypted_content"]}else if(w.thinkingLevelMap?.off!==null)X.reasoning={effort:w.thinkingLevelMap?.off??"none"}}return X}export{t as streamSimple,y as stream};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
3
|
-
export{s as
|
|
2
|
+
import{_a as a}from"./chunk-6dp3ybh2.js";var l=/"/g,n=/[\\'"]/g;class r extends a{visitOrAction(t){this.append("or "),this.append(t.action)}getCurrentParameterPlaceholder(){return"?"}getLeftExplainOptionsWrapper(){return""}getRightExplainOptionsWrapper(){return""}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getAutoIncrement(){return"autoincrement"}sanitizeIdentifier(t){return t.replace(l,'""')}sanitizeJSONPathMemberValue(t){return t.replace(n,(e)=>e==="\\"?"\\\\":e==="'"?"''":"\\\"")}visitDefaultInsertValue(t){this.append("null")}}class s{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}}class p extends s{get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(t,e){}async releaseMigrationLock(t,e){}}
|
|
3
|
+
export{s as ma,r as na,p as oa};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Bc as w,Cc as T}from"./chunk-hkacwxx5.js";function S(B,Q){return{role:"assistant",content:[],api:B.api,provider:B.provider,model:B.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function f(B){return typeof B.result==="function"}async function L(B,Q){for await(let Y of Q)B.push(Y);B.end(f(Q)?await Q.result():void 0)}function H(B,Q){let Y=new w;return Q().then((Z)=>L(Y,Z)).catch((Z)=>{let $=S(B,Z);Y.push({type:"error",reason:"error",error:$}),Y.end($)}),Y}function g(B){return{stream:(Q,Y,Z)=>H(Q,async()=>(await B()).stream(Q,Y,Z)),streamSimple:(Q,Y,Z)=>H(Q,async()=>(await B()).streamSimple(Q,Y,Z))}}var b=function(B,Q){if(typeof B==="string"&&/^\.\.?\//.test(B))return B.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(Y,Z,$,F,J){return Z?Q?".jsx":".js":$&&(!F||!J)?Y:$+F+"."+J.toLowerCase()+"js"});return B},A=(B)=>import(b(B));function N(){return globalThis.process?.env}function C(){return{async env(B){let Q=N()?.[B];return typeof Q==="string"&&Q.trim().length>0?Q:void 0},async fileExists(B){try{let Q=await A("node:fs/promises"),Y=B;if(Y.startsWith("~"))Y=(await A("node:os")).homedir()+Y.slice(1);return await Q.access(Y),!0}catch{return!1}}}}class D{credentials=new Map;chains=new Map;enqueue(B,Q){let Y=this.chains.get(B)??Promise.resolve(),Z=(async()=>{return await Y.catch(()=>{}),Q()})();return this.chains.set(B,Z.catch(()=>{})),Z}async read(B){return this.credentials.get(B)}async list(){return[...this.credentials].map(([B,Q])=>({providerId:B,type:Q.type}))}modify(B,Q){return this.enqueue(B,async()=>{let Y=this.credentials.get(B),Z=await Q(Y);if(Z!==void 0)this.credentials.set(B,Z);return Z??Y})}delete(B){return this.enqueue(B,async()=>{this.credentials.delete(B)})}}class G extends Error{code;constructor(B,Q,Y){super(y(Q,Y?.cause),Y);this.name="ModelsError",this.code=B}}function y(B,Q){if(Q===void 0||Q===null)return B;let Y=T(Q).trim();if(!Y||B.includes(Y))return B;return`${B}: ${Y}`}async function _(B,Q,Y,Z){let $=Z?.env?E(Y,Z.env):Y;if(Z?.apiKey!==void 0&&B.auth.apiKey)return q($,B.auth.apiKey,B.id,{type:"api_key",key:Z.apiKey,env:Z.env});let F=await x(Q,B.id);if(F){if(F.type==="oauth"&&B.auth.oauth)return M(Q,B.id,B.auth.oauth,F);if(F.type==="api_key"&&B.auth.apiKey){let J=Z?.env?{...F,env:{...F.env,...Z.env}}:F;return q($,B.auth.apiKey,B.id,J)}return}return B.auth.apiKey?q($,B.auth.apiKey,B.id,void 0):void 0}function E(B,Q){return{env:async(Y)=>Q[Y]||await B.env(Y),fileExists:(Y)=>B.fileExists(Y)}}async function M(B,Q,Y,Z){let $=Z;if(Date.now()>=$.expires){let F;try{F=await B.modify(Q,async(J)=>{if(J?.type!=="oauth")return;if(Date.now()<J.expires)return;try{return await Y.refresh(J)}catch(W){throw new G("oauth",`OAuth refresh failed for ${Q}`,{cause:W})}})}catch(J){if(J instanceof G)throw J;throw new G("auth",`Credential store modify failed for ${Q}`,{cause:J})}if(F?.type!=="oauth")return;$=F}try{return{auth:await Y.toAuth($),source:"OAuth"}}catch(F){throw new G("oauth",`OAuth auth derivation failed for ${Q}`,{cause:F})}}async function q(B,Q,Y,Z){try{return await Q.resolve({ctx:B,credential:Z})}catch($){throw new G("auth",`API key auth failed for provider ${Y}`,{cause:$})}}async function x(B,Q){try{return await B.read(Q)}catch(Y){throw new G("auth",`Credential store read failed for ${Q}`,{cause:Y})}}class j{entries=new Map;async read(B){let Q=this.entries.get(B);return Q?structuredClone(Q):void 0}async write(B,Q){this.entries.set(B,structuredClone(Q))}async delete(B){this.entries.delete(B)}}function K(B,Q){if(!B&&!Q)return;let Y={...B};for(let[Z,$]of Object.entries(Q??{})){let F=Z.toLowerCase();for(let J of Object.keys(Y))if(J.toLowerCase()===F)delete Y[J];Y[Z]=$}return Y}class O{providers=new Map;credentials;modelsStore;authContext;constructor(B){this.credentials=B?.credentials??new D,this.modelsStore=B?.modelsStore??new j,this.authContext=B?.authContext??C()}setProvider(B){this.providers.set(B.id,B)}deleteProvider(B){this.providers.delete(B)}clearProviders(){this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(B){return this.providers.get(B)}getModels(B){if(B!==void 0){let Y=this.providers.get(B);if(!Y)return[];try{return Y.getModels()}catch{return[]}}let Q=[];for(let Y of this.providers.values())try{Q.push(...Y.getModels())}catch{}return Q}getModel(B,Q){return this.getModels(B).find((Y)=>Y.id===Q)}async refresh(B={}){let Q=B.allowNetwork??!0,Y=new Map,Z=Array.from(this.providers.values()).filter(($)=>$.refreshModels!==void 0);return await Promise.all(Z.map(async($)=>{if(B.signal?.aborted)return;let F={read:()=>this.modelsStore.read($.id),write:(W)=>this.modelsStore.write($.id,W),delete:()=>this.modelsStore.delete($.id)},J;try{J=await this.readCredential($.id);let W=await this.resolveRefreshCredential($,J,Q,B.signal);if(!W)return;await $.refreshModels({credential:W,store:F,allowNetwork:Q,force:B.force,signal:B.signal})}catch(W){if(!B.signal?.aborted)Y.set($.id,W instanceof Error?W:new G("model_source",`Model refresh failed for ${$.id}`,{cause:W}));try{await $.refreshModels({credential:J,store:F,allowNetwork:!1,signal:B.signal})}catch{}}})),{aborted:B.signal?.aborted??!1,errors:Y}}async resolveRefreshCredential(B,Q,Y,Z){if(Q?.type==="oauth"){let W=B.auth.oauth;if(!W)return;if(!Y||Date.now()<Q.expires)return Q;if(Z?.aborted)return;let k=await this.credentials.modify(B.id,async(z)=>{if(z?.type!=="oauth"||Date.now()<z.expires)return;return W.refresh(z,Z)});return k?.type==="oauth"?k:void 0}let $=B.auth.apiKey;if(!$)return;let F=Q?.type==="api_key"?Q:void 0,J=await $.resolve({ctx:this.authContext,credential:F});if(!J)return;return{type:"api_key",key:J.auth.apiKey,env:J.env}}async readCredential(B){try{return await this.credentials.read(B)}catch(Q){throw new G("auth",`Credential store read failed for ${B}`,{cause:Q})}}async checkProviderAuth(B,Q){if(Q?.type==="oauth")return B.auth.oauth?{source:"OAuth",type:"oauth"}:void 0;let Y=B.auth.apiKey;if(!Y)return;if(Y.check)try{return await Y.check({ctx:this.authContext,credential:Q?.type==="api_key"?Q:void 0})}catch($){throw new G("auth",`API key auth check failed for provider ${B.id}`,{cause:$})}let Z=await _(B,this.credentials,this.authContext);return Z?{source:Z.source,type:"api_key"}:void 0}async checkAuth(B){let Q=this.providers.get(B);if(!Q)return;return this.checkProviderAuth(Q,await this.readCredential(B))}async getAvailable(B){let Q=B?[this.providers.get(B)].filter((Z)=>Z!==void 0):this.getProviders();return(await Promise.all(Q.map(async(Z)=>{let $=await this.readCredential(Z.id);return{provider:Z,credential:$,auth:await this.checkProviderAuth(Z,$)}}))).flatMap(({provider:Z,credential:$,auth:F})=>{if(!F)return[];let J=Z.getModels();return Z.filterModels?.(J,$)??J})}async getAuth(B,Q){let Y=typeof B==="string"?B:B.provider,Z=this.providers.get(Y);if(!Z)return;let $=await _(Z,this.credentials,this.authContext,Q);if(!$||typeof B==="string"||!B.headers)return $;return{...$,auth:{...$.auth,headers:K($.auth.headers,B.headers)}}}async login(B,Q,Y){let Z=this.providers.get(B);if(!Z)throw new G("provider",`Unknown provider: ${B}`);let $=Q==="oauth"?Z.auth.oauth:Z.auth.apiKey;if(!$?.login)throw new G("auth",`${Z.name} does not support ${Q} login`);let F=await $.login(Y);try{await this.credentials.modify(B,async()=>F)}catch(J){throw new G("auth",`Credential store modify failed for ${B}`,{cause:J})}return F}async logout(B){try{await this.credentials.delete(B)}catch(Q){throw new G("auth",`Credential store delete failed for ${B}`,{cause:Q})}}requireProvider(B){let Q=this.providers.get(B.provider);if(!Q)throw new G("provider",`Unknown provider: ${B.provider}`);return Q}async applyAuth(B,Q){this.requireProvider(B);let Y=await this.getAuth(B,{apiKey:Q?.apiKey,env:Q?.env});if(!Y)throw new G("auth",`Provider is not configured: ${B.provider}`);let Z=Y.auth,$=Q?.apiKey??Z.apiKey,F=K(Z.headers,Q?.headers);if(Q?.transformHeaders)F=await Q.transformHeaders(F??{});let J=Y.env||Q?.env?{...Y.env??{},...Q?.env??{}}:void 0,W=Z.baseUrl?{...B,baseUrl:Z.baseUrl}:B,{transformHeaders:k,...z}=Q??{},P={...z,apiKey:$,headers:F,env:J};return{requestModel:W,requestOptions:P}}stream(B,Q,Y){return H(B,async()=>{let Z=this.requireProvider(B),{requestModel:$,requestOptions:F}=await this.applyAuth(B,Y);return Z.stream($,Q,F)})}async complete(B,Q,Y){return this.stream(B,Q,Y).result()}streamSimple(B,Q,Y){return H(B,async()=>{let Z=this.requireProvider(B),{requestModel:$,requestOptions:F}=await this.applyAuth(B,Y);return Z.streamSimple($,Q,F)})}async completeSimple(B,Q,Y){return this.streamSimple(B,Q,Y).result()}}function d(B){return new O(B)}function o(B){let Q=B.models,Y=[],Z,$=B.fetchModels,F=()=>{let P=[...Q];for(let U of Y){let X=P.findIndex((V)=>V.id===U.id);if(X>=0)P[X]=U;else P.push(U)}return P},J=typeof B.api.stream==="function"?B.api:void 0,W=J?void 0:B.api,k=(P)=>J??W?.[P.api],z=(P,U)=>{let X=k(P);if(!X)return H(P,async()=>{throw new G("stream",`Provider ${B.id} has no API implementation for "${P.api}"`)});return U(X)};return{id:B.id,name:B.name??B.id,baseUrl:B.baseUrl,headers:B.headers,auth:B.auth,getModels:F,refreshModels:$?(P)=>{return Z??=(async()=>{try{let U=await P.store.read();if(U)Y=U.models.filter((V)=>V.provider===B.id).map((V)=>V);if(!P.allowNetwork||P.signal?.aborted)return;let X=await $(P);if(P.signal?.aborted)return;Y=X,await P.store.write({models:X,checkedAt:Date.now()})}finally{Z=void 0}})(),Z}:void 0,filterModels:B.filterModels,stream:(P,U,X)=>z(P,(V)=>V.stream(P,U,X)),streamSimple:(P,U,X)=>z(P,(V)=>V.streamSimple(P,U,X))}}function r(B,Q){let Y=Q.input+Q.cacheRead+Q.cacheWrite,Z=B.cost,$=-1;for(let W of B.cost.tiers??[])if(Y>W.inputTokensAbove&&W.inputTokensAbove>$)Z=W,$=W.inputTokensAbove;let F=Q.cacheWrite1h??0,J=Q.cacheWrite-F;return Q.cost.input=Z.input/1e6*Q.input,Q.cost.output=Z.output/1e6*Q.output,Q.cost.cacheRead=Z.cacheRead/1e6*Q.cacheRead,Q.cost.cacheWrite=(Z.cacheWrite*J+Z.input*2*F)/1e6,Q.cost.total=Q.cost.input+Q.cost.output+Q.cost.cacheRead+Q.cost.cacheWrite,Q.cost}var R=["off","minimal","low","medium","high","xhigh","max"];function h(B){if(!B.reasoning)return["off"];return R.filter((Q)=>{let Y=B.thinkingLevelMap?.[Q];if(Y===null)return!1;if(Q==="xhigh"||Q==="max")return Y!==void 0;return!0})}function e(B,Q){let Y=h(B);if(Y.includes(Q))return Q;let Z=R.indexOf(Q);if(Z===-1)return Y[0]??"off";for(let $=Z;$<R.length;$++){let F=R[$];if(Y.includes(F))return F}for(let $=Z-1;$>=0;$--){let F=R[$];if(Y.includes(F))return F}return Y[0]??"off"}
|
|
3
|
-
export{g as
|
|
2
|
+
import{md as w,nd as T}from"./chunk-1jq2vgrd.js";function S(B,Q){return{role:"assistant",content:[],api:B.api,provider:B.provider,model:B.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function f(B){return typeof B.result==="function"}async function L(B,Q){for await(let Y of Q)B.push(Y);B.end(f(Q)?await Q.result():void 0)}function H(B,Q){let Y=new w;return Q().then((Z)=>L(Y,Z)).catch((Z)=>{let $=S(B,Z);Y.push({type:"error",reason:"error",error:$}),Y.end($)}),Y}function g(B){return{stream:(Q,Y,Z)=>H(Q,async()=>(await B()).stream(Q,Y,Z)),streamSimple:(Q,Y,Z)=>H(Q,async()=>(await B()).streamSimple(Q,Y,Z))}}var b=function(B,Q){if(typeof B==="string"&&/^\.\.?\//.test(B))return B.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(Y,Z,$,F,J){return Z?Q?".jsx":".js":$&&(!F||!J)?Y:$+F+"."+J.toLowerCase()+"js"});return B},A=(B)=>import(b(B));function N(){return globalThis.process?.env}function C(){return{async env(B){let Q=N()?.[B];return typeof Q==="string"&&Q.trim().length>0?Q:void 0},async fileExists(B){try{let Q=await A("node:fs/promises"),Y=B;if(Y.startsWith("~"))Y=(await A("node:os")).homedir()+Y.slice(1);return await Q.access(Y),!0}catch{return!1}}}}class D{credentials=new Map;chains=new Map;enqueue(B,Q){let Y=this.chains.get(B)??Promise.resolve(),Z=(async()=>{return await Y.catch(()=>{}),Q()})();return this.chains.set(B,Z.catch(()=>{})),Z}async read(B){return this.credentials.get(B)}async list(){return[...this.credentials].map(([B,Q])=>({providerId:B,type:Q.type}))}modify(B,Q){return this.enqueue(B,async()=>{let Y=this.credentials.get(B),Z=await Q(Y);if(Z!==void 0)this.credentials.set(B,Z);return Z??Y})}delete(B){return this.enqueue(B,async()=>{this.credentials.delete(B)})}}class G extends Error{code;constructor(B,Q,Y){super(y(Q,Y?.cause),Y);this.name="ModelsError",this.code=B}}function y(B,Q){if(Q===void 0||Q===null)return B;let Y=T(Q).trim();if(!Y||B.includes(Y))return B;return`${B}: ${Y}`}async function _(B,Q,Y,Z){let $=Z?.env?E(Y,Z.env):Y;if(Z?.apiKey!==void 0&&B.auth.apiKey)return q($,B.auth.apiKey,B.id,{type:"api_key",key:Z.apiKey,env:Z.env});let F=await x(Q,B.id);if(F){if(F.type==="oauth"&&B.auth.oauth)return M(Q,B.id,B.auth.oauth,F);if(F.type==="api_key"&&B.auth.apiKey){let J=Z?.env?{...F,env:{...F.env,...Z.env}}:F;return q($,B.auth.apiKey,B.id,J)}return}return B.auth.apiKey?q($,B.auth.apiKey,B.id,void 0):void 0}function E(B,Q){return{env:async(Y)=>Q[Y]||await B.env(Y),fileExists:(Y)=>B.fileExists(Y)}}async function M(B,Q,Y,Z){let $=Z;if(Date.now()>=$.expires){let F;try{F=await B.modify(Q,async(J)=>{if(J?.type!=="oauth")return;if(Date.now()<J.expires)return;try{return await Y.refresh(J)}catch(W){throw new G("oauth",`OAuth refresh failed for ${Q}`,{cause:W})}})}catch(J){if(J instanceof G)throw J;throw new G("auth",`Credential store modify failed for ${Q}`,{cause:J})}if(F?.type!=="oauth")return;$=F}try{return{auth:await Y.toAuth($),source:"OAuth"}}catch(F){throw new G("oauth",`OAuth auth derivation failed for ${Q}`,{cause:F})}}async function q(B,Q,Y,Z){try{return await Q.resolve({ctx:B,credential:Z})}catch($){throw new G("auth",`API key auth failed for provider ${Y}`,{cause:$})}}async function x(B,Q){try{return await B.read(Q)}catch(Y){throw new G("auth",`Credential store read failed for ${Q}`,{cause:Y})}}class j{entries=new Map;async read(B){let Q=this.entries.get(B);return Q?structuredClone(Q):void 0}async write(B,Q){this.entries.set(B,structuredClone(Q))}async delete(B){this.entries.delete(B)}}function K(B,Q){if(!B&&!Q)return;let Y={...B};for(let[Z,$]of Object.entries(Q??{})){let F=Z.toLowerCase();for(let J of Object.keys(Y))if(J.toLowerCase()===F)delete Y[J];Y[Z]=$}return Y}class O{providers=new Map;credentials;modelsStore;authContext;constructor(B){this.credentials=B?.credentials??new D,this.modelsStore=B?.modelsStore??new j,this.authContext=B?.authContext??C()}setProvider(B){this.providers.set(B.id,B)}deleteProvider(B){this.providers.delete(B)}clearProviders(){this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(B){return this.providers.get(B)}getModels(B){if(B!==void 0){let Y=this.providers.get(B);if(!Y)return[];try{return Y.getModels()}catch{return[]}}let Q=[];for(let Y of this.providers.values())try{Q.push(...Y.getModels())}catch{}return Q}getModel(B,Q){return this.getModels(B).find((Y)=>Y.id===Q)}async refresh(B={}){let Q=B.allowNetwork??!0,Y=new Map,Z=Array.from(this.providers.values()).filter(($)=>$.refreshModels!==void 0);return await Promise.all(Z.map(async($)=>{if(B.signal?.aborted)return;let F={read:()=>this.modelsStore.read($.id),write:(W)=>this.modelsStore.write($.id,W),delete:()=>this.modelsStore.delete($.id)},J;try{J=await this.readCredential($.id);let W=await this.resolveRefreshCredential($,J,Q,B.signal);if(!W)return;await $.refreshModels({credential:W,store:F,allowNetwork:Q,force:B.force,signal:B.signal})}catch(W){if(!B.signal?.aborted)Y.set($.id,W instanceof Error?W:new G("model_source",`Model refresh failed for ${$.id}`,{cause:W}));try{await $.refreshModels({credential:J,store:F,allowNetwork:!1,signal:B.signal})}catch{}}})),{aborted:B.signal?.aborted??!1,errors:Y}}async resolveRefreshCredential(B,Q,Y,Z){if(Q?.type==="oauth"){let W=B.auth.oauth;if(!W)return;if(!Y||Date.now()<Q.expires)return Q;if(Z?.aborted)return;let k=await this.credentials.modify(B.id,async(z)=>{if(z?.type!=="oauth"||Date.now()<z.expires)return;return W.refresh(z,Z)});return k?.type==="oauth"?k:void 0}let $=B.auth.apiKey;if(!$)return;let F=Q?.type==="api_key"?Q:void 0,J=await $.resolve({ctx:this.authContext,credential:F});if(!J)return;return{type:"api_key",key:J.auth.apiKey,env:J.env}}async readCredential(B){try{return await this.credentials.read(B)}catch(Q){throw new G("auth",`Credential store read failed for ${B}`,{cause:Q})}}async checkProviderAuth(B,Q){if(Q?.type==="oauth")return B.auth.oauth?{source:"OAuth",type:"oauth"}:void 0;let Y=B.auth.apiKey;if(!Y)return;if(Y.check)try{return await Y.check({ctx:this.authContext,credential:Q?.type==="api_key"?Q:void 0})}catch($){throw new G("auth",`API key auth check failed for provider ${B.id}`,{cause:$})}let Z=await _(B,this.credentials,this.authContext);return Z?{source:Z.source,type:"api_key"}:void 0}async checkAuth(B){let Q=this.providers.get(B);if(!Q)return;return this.checkProviderAuth(Q,await this.readCredential(B))}async getAvailable(B){let Q=B?[this.providers.get(B)].filter((Z)=>Z!==void 0):this.getProviders();return(await Promise.all(Q.map(async(Z)=>{let $=await this.readCredential(Z.id);return{provider:Z,credential:$,auth:await this.checkProviderAuth(Z,$)}}))).flatMap(({provider:Z,credential:$,auth:F})=>{if(!F)return[];let J=Z.getModels();return Z.filterModels?.(J,$)??J})}async getAuth(B,Q){let Y=typeof B==="string"?B:B.provider,Z=this.providers.get(Y);if(!Z)return;let $=await _(Z,this.credentials,this.authContext,Q);if(!$||typeof B==="string"||!B.headers)return $;return{...$,auth:{...$.auth,headers:K($.auth.headers,B.headers)}}}async login(B,Q,Y){let Z=this.providers.get(B);if(!Z)throw new G("provider",`Unknown provider: ${B}`);let $=Q==="oauth"?Z.auth.oauth:Z.auth.apiKey;if(!$?.login)throw new G("auth",`${Z.name} does not support ${Q} login`);let F=await $.login(Y);try{await this.credentials.modify(B,async()=>F)}catch(J){throw new G("auth",`Credential store modify failed for ${B}`,{cause:J})}return F}async logout(B){try{await this.credentials.delete(B)}catch(Q){throw new G("auth",`Credential store delete failed for ${B}`,{cause:Q})}}requireProvider(B){let Q=this.providers.get(B.provider);if(!Q)throw new G("provider",`Unknown provider: ${B.provider}`);return Q}async applyAuth(B,Q){this.requireProvider(B);let Y=await this.getAuth(B,{apiKey:Q?.apiKey,env:Q?.env});if(!Y)throw new G("auth",`Provider is not configured: ${B.provider}`);let Z=Y.auth,$=Q?.apiKey??Z.apiKey,F=K(Z.headers,Q?.headers);if(Q?.transformHeaders)F=await Q.transformHeaders(F??{});let J=Y.env||Q?.env?{...Y.env??{},...Q?.env??{}}:void 0,W=Z.baseUrl?{...B,baseUrl:Z.baseUrl}:B,{transformHeaders:k,...z}=Q??{},P={...z,apiKey:$,headers:F,env:J};return{requestModel:W,requestOptions:P}}stream(B,Q,Y){return H(B,async()=>{let Z=this.requireProvider(B),{requestModel:$,requestOptions:F}=await this.applyAuth(B,Y);return Z.stream($,Q,F)})}async complete(B,Q,Y){return this.stream(B,Q,Y).result()}streamSimple(B,Q,Y){return H(B,async()=>{let Z=this.requireProvider(B),{requestModel:$,requestOptions:F}=await this.applyAuth(B,Y);return Z.streamSimple($,Q,F)})}async completeSimple(B,Q,Y){return this.streamSimple(B,Q,Y).result()}}function d(B){return new O(B)}function o(B){let Q=B.models,Y=[],Z,$=B.fetchModels,F=()=>{let P=[...Q];for(let U of Y){let X=P.findIndex((V)=>V.id===U.id);if(X>=0)P[X]=U;else P.push(U)}return P},J=typeof B.api.stream==="function"?B.api:void 0,W=J?void 0:B.api,k=(P)=>J??W?.[P.api],z=(P,U)=>{let X=k(P);if(!X)return H(P,async()=>{throw new G("stream",`Provider ${B.id} has no API implementation for "${P.api}"`)});return U(X)};return{id:B.id,name:B.name??B.id,baseUrl:B.baseUrl,headers:B.headers,auth:B.auth,getModels:F,refreshModels:$?(P)=>{return Z??=(async()=>{try{let U=await P.store.read();if(U)Y=U.models.filter((V)=>V.provider===B.id).map((V)=>V);if(!P.allowNetwork||P.signal?.aborted)return;let X=await $(P);if(P.signal?.aborted)return;Y=X,await P.store.write({models:X,checkedAt:Date.now()})}finally{Z=void 0}})(),Z}:void 0,filterModels:B.filterModels,stream:(P,U,X)=>z(P,(V)=>V.stream(P,U,X)),streamSimple:(P,U,X)=>z(P,(V)=>V.streamSimple(P,U,X))}}function r(B,Q){let Y=Q.input+Q.cacheRead+Q.cacheWrite,Z=B.cost,$=-1;for(let W of B.cost.tiers??[])if(Y>W.inputTokensAbove&&W.inputTokensAbove>$)Z=W,$=W.inputTokensAbove;let F=Q.cacheWrite1h??0,J=Q.cacheWrite-F;return Q.cost.input=Z.input/1e6*Q.input,Q.cost.output=Z.output/1e6*Q.output,Q.cost.cacheRead=Z.cacheRead/1e6*Q.cacheRead,Q.cost.cacheWrite=(Z.cacheWrite*J+Z.input*2*F)/1e6,Q.cost.total=Q.cost.input+Q.cost.output+Q.cost.cacheRead+Q.cost.cacheWrite,Q.cost}var R=["off","minimal","low","medium","high","xhigh","max"];function h(B){if(!B.reasoning)return["off"];return R.filter((Q)=>{let Y=B.thinkingLevelMap?.[Q];if(Y===null)return!1;if(Q==="xhigh"||Q==="max")return Y!==void 0;return!0})}function e(B,Q){let Y=h(B);if(Y.includes(Q))return Q;let Z=R.indexOf(Q);if(Z===-1)return Y[0]??"off";for(let $=Z;$<R.length;$++){let F=R[$];if(Y.includes(F))return F}for(let $=Z-1;$>=0;$--){let F=R[$];if(Y.includes(F))return F}return Y[0]??"off"}
|
|
3
|
+
export{g as gd,D as hd,d as id,o as jd,r as kd,e as ld};
|