@decocms/mesh 1.0.0-alpha.30 → 1.0.0-alpha.31

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.
@@ -1140,7 +1140,7 @@ Learn more: \x1B[34m${X}\x1B[0m
1140
1140
  `)},flush(Q){Q.enqueue(`data: [DONE]
1141
1141
 
1142
1142
  `)}})}},Bz1={"content-type":"text/event-stream","cache-control":"no-cache",connection:"keep-alive","x-vercel-ai-ui-message-stream":"v1","x-accel-buffering":"no"};fa6=mQ(()=>KQ(I.union([I.strictObject({type:I.literal("text-start"),id:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("text-delta"),id:I.string(),delta:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("text-end"),id:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("error"),errorText:I.string()}),I.strictObject({type:I.literal("tool-input-start"),toolCallId:I.string(),toolName:I.string(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-input-delta"),toolCallId:I.string(),inputTextDelta:I.string()}),I.strictObject({type:I.literal("tool-input-available"),toolCallId:I.string(),toolName:I.string(),input:I.unknown(),providerExecuted:I.boolean().optional(),providerMetadata:e1.optional(),dynamic:I.boolean().optional(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-input-error"),toolCallId:I.string(),toolName:I.string(),input:I.unknown(),providerExecuted:I.boolean().optional(),providerMetadata:e1.optional(),dynamic:I.boolean().optional(),errorText:I.string(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-approval-request"),approvalId:I.string(),toolCallId:I.string()}),I.strictObject({type:I.literal("tool-output-available"),toolCallId:I.string(),output:I.unknown(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional(),preliminary:I.boolean().optional()}),I.strictObject({type:I.literal("tool-output-error"),toolCallId:I.string(),errorText:I.string(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional()}),I.strictObject({type:I.literal("tool-output-denied"),toolCallId:I.string()}),I.strictObject({type:I.literal("reasoning-start"),id:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("reasoning-delta"),id:I.string(),delta:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("reasoning-end"),id:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("source-url"),sourceId:I.string(),url:I.string(),title:I.string().optional(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("source-document"),sourceId:I.string(),mediaType:I.string(),title:I.string(),filename:I.string().optional(),providerMetadata:e1.optional()}),I.strictObject({type:I.literal("file"),url:I.string(),mediaType:I.string(),providerMetadata:e1.optional()}),I.strictObject({type:I.custom((Q)=>typeof Q==="string"&&Q.startsWith("data-"),{message:'Type must start with "data-"'}),id:I.string().optional(),data:I.unknown(),transient:I.boolean().optional()}),I.strictObject({type:I.literal("start-step")}),I.strictObject({type:I.literal("finish-step")}),I.strictObject({type:I.literal("start"),messageId:I.string().optional(),messageMetadata:I.unknown().optional()}),I.strictObject({type:I.literal("finish"),finishReason:I.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:I.unknown().optional()}),I.strictObject({type:I.literal("abort")}),I.strictObject({type:I.literal("message-metadata"),messageMetadata:I.unknown()})])));zd4=z$({prefix:"aitxt",size:24});ma6=mQ(()=>KQ(I.array(I.object({id:I.string(),role:I.enum(["system","user","assistant"]),metadata:I.unknown().optional(),parts:I.array(I.union([I.object({type:I.literal("text"),text:I.string(),state:I.enum(["streaming","done"]).optional(),providerMetadata:e1.optional()}),I.object({type:I.literal("reasoning"),text:I.string(),state:I.enum(["streaming","done"]).optional(),providerMetadata:e1.optional()}),I.object({type:I.literal("source-url"),sourceId:I.string(),url:I.string(),title:I.string().optional(),providerMetadata:e1.optional()}),I.object({type:I.literal("source-document"),sourceId:I.string(),mediaType:I.string(),title:I.string(),filename:I.string().optional(),providerMetadata:e1.optional()}),I.object({type:I.literal("file"),mediaType:I.string(),filename:I.string().optional(),url:I.string(),providerMetadata:e1.optional()}),I.object({type:I.literal("step-start")}),I.object({type:I.string().startsWith("data-"),id:I.string().optional(),data:I.unknown()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("input-streaming"),input:I.unknown().optional(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),approval:I.never().optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("input-available"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.never().optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("approval-requested"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.never().optional(),reason:I.never().optional()})}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("approval-responded"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.boolean(),reason:I.string().optional()})}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-available"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.unknown(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),preliminary:I.boolean().optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-error"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.string(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-denied"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.literal(!1),reason:I.string().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("input-streaming"),providerExecuted:I.boolean().optional(),input:I.unknown().optional(),output:I.never().optional(),errorText:I.never().optional(),approval:I.never().optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("input-available"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.never().optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("approval-requested"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.never().optional(),reason:I.never().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("approval-responded"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.boolean(),reason:I.string().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-available"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.unknown(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),preliminary:I.boolean().optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-error"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.string(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-denied"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:e1.optional(),approval:I.object({id:I.string(),approved:I.literal(!1),reason:I.string().optional()})})])).nonempty("Message must contain at least one part")})).nonempty("Messages array must not be empty"))),da6=z$({prefix:"aiobj",size:24}),ca6=z$({prefix:"aiobj",size:24});Od4=`vercel.ai.error.${Bd4}`,Dd4=Symbol.for(Od4);Ld4=Dd4});function wd4(Q){if(!Q.body)throw Error("Response body is null");let J="";return Q.body.pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform(X,G){J+=X;let Y=J.split(`
1143
- `);J=Y.pop()??"";for(let W of Y)if(W.trim())try{let $=JSON.parse(W);G.enqueue($)}catch($){throw console.error("Failed to parse stream chunk:",$),$}},flush(X){if(J.trim())try{let G=JSON.parse(J);X.enqueue(G)}catch(G){throw console.error("Failed to parse final stream chunk:",G),G}}}))}var Pd4=(Q)=>{return Object.fromEntries(Object.entries(Q).map(([J,X])=>[J,X.map((G)=>new RegExp(G))]))},Mz1=(Q)=>{return{imageModel:()=>{throw Error("Image models are not supported by this provider")},textEmbeddingModel:()=>{throw Error("Text embedding models are not supported by this provider")},listModels:async()=>{return await Q.COLLECTION_LLM_LIST({})},languageModel:(J)=>{let X=RG(()=>Q.LLM_METADATA({modelId:J}).then((G)=>Pd4(G.supportedUrls)));return{specificationVersion:"v2",provider:"llm-binding",modelId:J,supportedUrls:X,doGenerate:async(G)=>{let Y=await Q.LLM_DO_GENERATE({callOptions:G,modelId:J});return{...Y,usage:{inputTokens:Y.usage.inputTokens??void 0,outputTokens:Y.usage.outputTokens??void 0,totalTokens:Y.usage.totalTokens??void 0,reasoningTokens:Y.usage.reasoningTokens??void 0}}},doStream:async(G)=>{let Y=await Q.LLM_DO_STREAM({callOptions:G,modelId:J});return{stream:wd4(Y),response:{headers:Object.fromEntries(Y.headers?.entries()??[])}}}}}}};var Tz1=()=>{};function Ed4(Q,J){if(!Q.organization)throw Error("Organization context is required");if(Q.organization.slug!==J)throw Error("Organization slug mismatch");return Q.organization}async function jd4(Q,J,X){let G=await Q.storage.connections.findById(X);if(!G)return null;if(G.organization_id!==J)throw Error("Connection does not belong to organization");if(G.status!=="active")throw Error(`Connection is ${G.status.toUpperCase()}, not active`);return G}function Id4(Q,J){let X=Ry(new URL(Q.url)),G=`${X.protocol}//${X.host}`,Y=new Headers,W=["cookie","authorization"];for(let $ of W)if(Q.headers.has($))Y.set($,Q.headers.get($));return new SW(new URL(`/mcp/gateway/${J}`,G),{requestInit:{headers:Y}})}var Md4=4096,Td4=50,Ad4,Az1,Ez1;var jz1=h(()=>{KF1();q00();Jw();Pz1();vZ();A4();Tz1();Sy();Ad4=L.object({messages:L.any(),model:L.object({id:L.string(),connectionId:L.string(),provider:L.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable()}).passthrough().optional(),gateway:L.object({id:L.string()}).passthrough().optional(),stream:L.boolean().optional(),temperature:L.number().optional(),maxOutputTokens:L.number().optional(),maxWindowSize:L.number().optional(),thread_id:L.string().optional()}),Az1=new gQ;Az1.post("/:org/models/stream",async(Q)=>{let J=Q.get("meshContext"),X=Q.req.param("org"),G=null;try{let Y=Ed4(J,X),W=await Q.req.json(),$=Ad4.safeParse(W);if(!$.success)return Q.json({error:"Invalid request body",details:$.error.issues},400);let K=$.data;if(!K.model)return Q.json({error:"model is required"},400);let{model:Z,gateway:H,messages:q,temperature:F,maxOutputTokens:V=Md4,maxWindowSize:z=Td4,thread_id:U}=K;if(!H?.id)return Q.json({error:"gateway is required"},400);let N=Id4(Q.req.raw,H.id),[D,w,A]=await Promise.all([Lz1(q,{ignoreIncompleteToolCalls:!0}),jd4(J,Y.id,Z.connectionId),$F1({transport:N})]);if(!w)return Q.json({error:`Model connection not found: ${Z.connectionId}`},404);let P=wz1({messages:D,reasoning:"before-last-message",emptyMessages:"remove",toolCalls:"none"}).slice(-z),[M,T]=await Promise.all([J.createMCPProxy(w),A.tools({schemas:"automatic"})]);G=A;let E=rk0.forClient(M),R=Mz1(E).languageModel(Z.id);return Dz1({model:R,messages:P,tools:T,temperature:F,maxOutputTokens:V,abortSignal:Q.req.raw.signal,stopWhen:KW0(30),onError:async(_)=>{console.error("[models:stream] Error",_),await G?.close().catch(console.error)},onFinish:async()=>{await G?.close().catch(console.error)}}).toUIMessageStreamResponse({messageMetadata:({part:_})=>{if(_.type==="start")return{gateway:H,model:Z,created_at:new Date,thread_id:U};return{}}})}catch(Y){let W=Y;if(await G?.close().catch(console.error),W.name==="AbortError")return console.warn("[models:stream] Aborted",JSON.stringify({org:X})),Q.json({error:"Request aborted"},400);return console.error("[models:stream] Failed",JSON.stringify({org:X,error:W.message,stack:W.stack})),Q.json({error:W.message},500)}});Ez1=Az1});function Cz1(Q={}){let J=Q.database??LH();if(qf&&qf.isRunning())console.log("[EventBus] Stopping previous worker (HMR cleanup)"),Promise.resolve(qf.stop()).catch(($)=>{console.error("[EventBus] Error stopping previous worker:",$)});let X;if(Q.eventBus)X=Q.eventBus;else X=uK1(J);qf=X;let G=new gQ;G.use("/*",r$1({origin:($)=>{if($.includes("localhost")||$.includes("127.0.0.1"))return $;return $},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]})),G.use("*",e$1()),G.get(kM.HEALTH,($)=>{return $.json({status:"ok",timestamp:new Date().toISOString(),version:"1.0.0"})}),G.get(kM.METRICS,async($)=>{try{let K=await VQ0.collect(),Z=Cd4.serialize(K.resourceMetrics);return $.text(Z,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K){return console.error("Failed to collect metrics:",K),$.text("# Error collecting metrics",500)}}),G.route("/api/auth/custom",cK1),G.all("/api/auth/*",async($)=>{return await dY.handler($.req.raw)}),G.route("/",zK1),G.all("/oauth-proxy/:connectionId/*",async($)=>{let K=$.req.param("connectionId"),Z=$.req.path.split("/").filter(Boolean),H=Z[Z.length-1],q=$.get("meshContext");if(!q)q=await kZ.create($.req.raw),$.set("meshContext",q);let F=await q.storage.connections.findById(K);if(!F?.connection_url)return $.json({error:"Connection not found"},404);let V=await Cy(F.connection_url);if(!V.ok)return $.json({error:"Failed to get resource metadata"},502);let U=(await V.json()).authorization_servers?.[0];if(!U)return $.json({error:"No authorization server found"},404);let N=await yQ0(U);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let D=await N.json(),w;if(H==="authorize")w=D.authorization_endpoint;else if(H==="token")w=D.token_endpoint;else if(H==="register")w=D.registration_endpoint;if(!w)return $.json({error:`Unknown OAuth endpoint: ${H}`},404);let A=new URL(w),P=new URL($.req.url);if(A.search=P.search,H==="authorize")return $.redirect(A.toString(),302);let M={Accept:$.req.header("Accept")||"application/json"},T=$.req.header("Content-Type");if(T)M["Content-Type"]=T;let E=$.req.header("Authorization");if(E)M.Authorization=E;let R=await fetch(A.toString(),{method:$.req.method,headers:M,body:$.req.method!=="GET"&&$.req.method!=="HEAD"?$.req.raw.body:void 0,duplex:"half",redirect:"manual"}),k=new Headers,_=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,b]of R.headers.entries())if(!_.includes(y.toLowerCase()))k.set(y,b);return new Response(R.body,{status:R.status,statusText:R.statusText,headers:k})}),G.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",async($)=>{let Z=await Rd4()($.req.raw),H=await Z.json();return Response.json(H,Z)});let Y=async($)=>{let Z=await Sd4()($.req.raw),H=await Z.json();return Response.json(H,Z)};G.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",Y),kZ.set(TK1({db:J.db,auth:dY,encryption:{key:process.env.ENCRYPTION_KEY||""},observability:{tracer:EM,meter:q$1},eventBus:X})),Promise.resolve(X.start()).then(()=>{console.log("[EventBus] Worker started")}),G.use("*",async($,K)=>{if(jK1($.req.path))return K();let Z=await kZ.create($.req.raw);return $.set("meshContext",Z),K()}),G.get("/api/tools/management",($)=>{return $.json({tools:sd,grouped:hO()})});let W=async($,K)=>{let Z=$.var.meshContext;if(!Z.auth.user?.id&&!Z.auth.apiKey?.id){let H=new URL($.req.url);return $.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${H.origin}${H.pathname}/.well-known/oauth-protected-resource"`}})}return await K()};return G.use("/mcp/:connectionId?",W),G.use("/mcp/gateway/:gatewayId?",W),G.route("/mcp",XZ1),G.route("/mcp",WZ1),G.route("/mcp",PK1),G.route("/api",Ez1),G.notFound(($)=>{return $.json({error:"Not Found",path:$.req.path},404)}),G.onError(($,K)=>{console.error("Server error :",$);let Z=$ instanceof Error?$.message:"Unknown error";return K.json({error:"Internal Server Error",message:Z},500)}),G}var Iz1,qf=null,Cd4,Rd4=()=>$a(dY),Sd4=()=>Wa(dY);var Rz1=h(()=>{vZ();a$1();QK1();BU();vy();kL();hQ0();mK1();Oy();nK1();YZ1();$Z1();jz1();Sy();ky();Ha();td();Iz1=l4(FQ0(),1),Cd4=new Iz1.PrometheusSerializer});var Sz1,vd4,kd4=(Q,J)=>{if(!Q)return{};let X=new Headers(Q.headers);if(J){let G=X.get("connection");if(G){let Y=G.split(",").map(($)=>$.trim()),W=Y.filter(($)=>!vd4.test($));if(W.length>0)throw new UQ0(400,{message:`Invalid Connection header value: ${W.join(", ")}`});Y.forEach(($)=>{X.delete($)})}}return Sz1.forEach((G)=>{X.delete(G)}),{method:Q.method,body:Q.body,duplex:Q.body?"half":void 0,headers:X,signal:Q.signal}},_d4=(Q)=>{if(!Q.headers||Array.isArray(Q.headers)||Q.headers instanceof Headers)return Q;let J=new Headers;for(let[X,G]of Object.entries(Q.headers))if(G==null)J.delete(X);else J.set(X,G);return Q.headers=J,Q},vz1=async(Q,J)=>{let{raw:X,customFetch:G,strictConnectionProcessing:Y=!1,...W}=J instanceof Request?{raw:J}:J??{},$=new Request(Q,{...kd4(X,Y),..._d4(W)});$.headers.delete("accept-encoding");let K=await(G||fetch)($),Z=new Headers(K.headers);if(Sz1.forEach((H)=>{Z.delete(H)}),Z.has("content-encoding"))Z.delete("content-encoding"),Z.delete("content-length");return new Response(K.body,{status:K.status,statusText:K.statusText,headers:Z})};var kz1=h(()=>{NQ0();Sz1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],vd4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var _z1=(Q)=>(J)=>{let X=new URL(J.req.raw.url),G=new URL(Q);return G.pathname=X.pathname,G.search=X.search,vz1(G,{raw:J.req.raw,headers:{...J.req.raw.headers}})};var yz1=h(()=>{kz1()});import{resolve as f2,dirname as yd4}from"path";function bd4(Q,J){let X=f2(J),G=f2(Q);return G===X||G.startsWith(X+"/")}function xd4({requestPath:Q,clientDir:J}){let X=Q.startsWith("/")?Q.slice(1):Q,G=f2(J,X);if(!bd4(G,J))return null;return G}function hz1(Q,J="../client"){let X=new URL(Q),G=yd4(X.pathname);return f2(G,J)}function fz1(Q={}){let{env:J="production",devServerUrl:X=hd4,clientDir:G=fd4,isServerPath:Y=()=>!1}=Q;if(J==="development"){let W=_z1(X);return async function(K){let Z=new URL(K.url);if(Y(Z.pathname))return null;let H={req:{raw:K,url:K.url}};return W(H)}}return async function($){if($.method!=="GET")return null;let K=new URL($.url),Z;try{Z=decodeURIComponent(K.pathname)}catch{return null}if(Y(Z))return null;let H=xd4({requestPath:Z,clientDir:G});if(!H)return null;let q=f2(G,"index.html");for(let F of[H,q])try{let V=Bun.file(F);if(await V.exists())return new Response(V)}catch{}return null}}var hd4="http://localhost:4000",fd4="./dist/client";var bz1=h(()=>{yz1()});var id4={};var xz1,Ff="\x1B[0m",gd4="\x1B[1m",ud4="\x1B[2m",md4="\x1B[32m",ld4="\x1B[36m",dd4="\x1B[4m",pd4,cd4,nd4;var gz1=h(()=>{Oy();Rz1();hQ0();bz1();xz1=parseInt(process.env.PORT||"3000",10),pd4=`http://localhost:${xz1}`,cd4=fz1({clientDir:hz1(import.meta.url,"../client"),isServerPath:EK1}),nd4=Cz1();console.log("");console.log(`${md4}\u2713${Ff} ${gd4}Ready${Ff}`);console.log("");console.log(` ${ud4}Open in browser:${Ff} ${ld4}${dd4}${pd4}${Ff}`);console.log("");Bun.serve({idleTimeout:0,port:xz1,hostname:"0.0.0.0",fetch:async(Q)=>{return await cd4(Q)??nd4.fetch(Q)},development:!1})});import{parseArgs as rd4}from"util";var{values:Vf}=rd4({args:process.argv.slice(2),options:{port:{type:"string",short:"p",default:process.env.PORT||"3000"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1},"skip-migrations":{type:"boolean",default:!1}},allowPositionals:!0});if(Vf.help)console.log(`
1143
+ `);J=Y.pop()??"";for(let W of Y)if(W.trim())try{let $=JSON.parse(W);G.enqueue($)}catch($){throw console.error("Failed to parse stream chunk:",$),$}},flush(X){if(J.trim())try{let G=JSON.parse(J);X.enqueue(G)}catch(G){throw console.error("Failed to parse final stream chunk:",G),G}}}))}var Pd4=(Q)=>{return Object.fromEntries(Object.entries(Q).map(([J,X])=>[J,X.map((G)=>new RegExp(G))]))},Mz1=(Q)=>{return{imageModel:()=>{throw Error("Image models are not supported by this provider")},textEmbeddingModel:()=>{throw Error("Text embedding models are not supported by this provider")},listModels:async()=>{return await Q.COLLECTION_LLM_LIST({})},languageModel:(J)=>{let X=RG(()=>Q.LLM_METADATA({modelId:J}).then((G)=>Pd4(G.supportedUrls)));return{specificationVersion:"v2",provider:"llm-binding",modelId:J,supportedUrls:X,doGenerate:async(G)=>{let Y=await Q.LLM_DO_GENERATE({callOptions:G,modelId:J});return{...Y,usage:{inputTokens:Y.usage.inputTokens??void 0,outputTokens:Y.usage.outputTokens??void 0,totalTokens:Y.usage.totalTokens??void 0,reasoningTokens:Y.usage.reasoningTokens??void 0}}},doStream:async(G)=>{let Y=await Q.LLM_DO_STREAM({callOptions:G,modelId:J});return{stream:wd4(Y),response:{headers:Object.fromEntries(Y.headers?.entries()??[])}}}}}}};var Tz1=()=>{};function Ed4(Q,J){if(!Q.organization)throw Error("Organization context is required");if(Q.organization.slug!==J)throw Error("Organization slug mismatch");return Q.organization}async function jd4(Q,J,X){let G=await Q.storage.connections.findById(X);if(!G)return null;if(G.organization_id!==J)throw Error("Connection does not belong to organization");if(G.status!=="active")throw Error(`Connection is ${G.status.toUpperCase()}, not active`);return G}function Id4(Q,J){let X=Ry(new URL(Q.url)),G=`${X.protocol}//${X.host}`,Y=new Headers,W=["cookie","authorization"];for(let $ of W)if(Q.headers.has($))Y.set($,Q.headers.get($));return new SW(new URL(`/mcp/gateway/${J}`,G),{requestInit:{headers:Y}})}var Md4=32768,Td4=50,Ad4,Az1,Ez1;var jz1=h(()=>{KF1();q00();Jw();Pz1();vZ();A4();Tz1();Sy();Ad4=L.object({messages:L.any(),model:L.object({id:L.string(),connectionId:L.string(),provider:L.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable()}).passthrough().optional(),gateway:L.object({id:L.string()}).passthrough().optional(),stream:L.boolean().optional(),temperature:L.number().optional(),maxOutputTokens:L.number().optional(),maxWindowSize:L.number().optional(),thread_id:L.string().optional()}),Az1=new gQ;Az1.post("/:org/models/stream",async(Q)=>{let J=Q.get("meshContext"),X=Q.req.param("org"),G=null;try{let Y=Ed4(J,X),W=await Q.req.json(),$=Ad4.safeParse(W);if(!$.success)return Q.json({error:"Invalid request body",details:$.error.issues},400);let K=$.data;if(!K.model)return Q.json({error:"model is required"},400);let{model:Z,gateway:H,messages:q,temperature:F,maxOutputTokens:V=Md4,maxWindowSize:z=Td4,thread_id:U}=K;if(!H?.id)return Q.json({error:"gateway is required"},400);let N=Id4(Q.req.raw,H.id),[D,w,A]=await Promise.all([Lz1(q,{ignoreIncompleteToolCalls:!0}),jd4(J,Y.id,Z.connectionId),$F1({transport:N})]);if(!w)return Q.json({error:`Model connection not found: ${Z.connectionId}`},404);let P=wz1({messages:D,reasoning:"before-last-message",emptyMessages:"remove",toolCalls:"none"}).slice(-z),[M,T]=await Promise.all([J.createMCPProxy(w),A.tools({schemas:"automatic"})]);G=A;let E=rk0.forClient(M),R=Mz1(E).languageModel(Z.id);return Dz1({model:R,messages:P,tools:T,temperature:F,maxOutputTokens:V,abortSignal:Q.req.raw.signal,stopWhen:KW0(30),onError:async(_)=>{console.error("[models:stream] Error",_),await G?.close().catch(console.error)},onFinish:async()=>{await G?.close().catch(console.error)}}).toUIMessageStreamResponse({messageMetadata:({part:_})=>{if(_.type==="start")return{gateway:H,model:Z,created_at:new Date,thread_id:U};return{}}})}catch(Y){let W=Y;if(await G?.close().catch(console.error),W.name==="AbortError")return console.warn("[models:stream] Aborted",JSON.stringify({org:X})),Q.json({error:"Request aborted"},400);return console.error("[models:stream] Failed",JSON.stringify({org:X,error:W.message,stack:W.stack})),Q.json({error:W.message},500)}});Ez1=Az1});function Cz1(Q={}){let J=Q.database??LH();if(qf&&qf.isRunning())console.log("[EventBus] Stopping previous worker (HMR cleanup)"),Promise.resolve(qf.stop()).catch(($)=>{console.error("[EventBus] Error stopping previous worker:",$)});let X;if(Q.eventBus)X=Q.eventBus;else X=uK1(J);qf=X;let G=new gQ;G.use("/*",r$1({origin:($)=>{if($.includes("localhost")||$.includes("127.0.0.1"))return $;return $},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]})),G.use("*",e$1()),G.get(kM.HEALTH,($)=>{return $.json({status:"ok",timestamp:new Date().toISOString(),version:"1.0.0"})}),G.get(kM.METRICS,async($)=>{try{let K=await VQ0.collect(),Z=Cd4.serialize(K.resourceMetrics);return $.text(Z,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K){return console.error("Failed to collect metrics:",K),$.text("# Error collecting metrics",500)}}),G.route("/api/auth/custom",cK1),G.all("/api/auth/*",async($)=>{return await dY.handler($.req.raw)}),G.route("/",zK1),G.all("/oauth-proxy/:connectionId/*",async($)=>{let K=$.req.param("connectionId"),Z=$.req.path.split("/").filter(Boolean),H=Z[Z.length-1],q=$.get("meshContext");if(!q)q=await kZ.create($.req.raw),$.set("meshContext",q);let F=await q.storage.connections.findById(K);if(!F?.connection_url)return $.json({error:"Connection not found"},404);let V=await Cy(F.connection_url);if(!V.ok)return $.json({error:"Failed to get resource metadata"},502);let U=(await V.json()).authorization_servers?.[0];if(!U)return $.json({error:"No authorization server found"},404);let N=await yQ0(U);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let D=await N.json(),w;if(H==="authorize")w=D.authorization_endpoint;else if(H==="token")w=D.token_endpoint;else if(H==="register")w=D.registration_endpoint;if(!w)return $.json({error:`Unknown OAuth endpoint: ${H}`},404);let A=new URL(w),P=new URL($.req.url);if(A.search=P.search,H==="authorize")return $.redirect(A.toString(),302);let M={Accept:$.req.header("Accept")||"application/json"},T=$.req.header("Content-Type");if(T)M["Content-Type"]=T;let E=$.req.header("Authorization");if(E)M.Authorization=E;let R=await fetch(A.toString(),{method:$.req.method,headers:M,body:$.req.method!=="GET"&&$.req.method!=="HEAD"?$.req.raw.body:void 0,duplex:"half",redirect:"manual"}),k=new Headers,_=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,b]of R.headers.entries())if(!_.includes(y.toLowerCase()))k.set(y,b);return new Response(R.body,{status:R.status,statusText:R.statusText,headers:k})}),G.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",async($)=>{let Z=await Rd4()($.req.raw),H=await Z.json();return Response.json(H,Z)});let Y=async($)=>{let Z=await Sd4()($.req.raw),H=await Z.json();return Response.json(H,Z)};G.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",Y),kZ.set(TK1({db:J.db,auth:dY,encryption:{key:process.env.ENCRYPTION_KEY||""},observability:{tracer:EM,meter:q$1},eventBus:X})),Promise.resolve(X.start()).then(()=>{console.log("[EventBus] Worker started")}),G.use("*",async($,K)=>{if(jK1($.req.path))return K();let Z=await kZ.create($.req.raw);return $.set("meshContext",Z),K()}),G.get("/api/tools/management",($)=>{return $.json({tools:sd,grouped:hO()})});let W=async($,K)=>{let Z=$.var.meshContext;if(!Z.auth.user?.id&&!Z.auth.apiKey?.id){let H=new URL($.req.url);return $.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${H.origin}${H.pathname}/.well-known/oauth-protected-resource"`}})}return await K()};return G.use("/mcp/:connectionId?",W),G.use("/mcp/gateway/:gatewayId?",W),G.route("/mcp",XZ1),G.route("/mcp",WZ1),G.route("/mcp",PK1),G.route("/api",Ez1),G.notFound(($)=>{return $.json({error:"Not Found",path:$.req.path},404)}),G.onError(($,K)=>{console.error("Server error :",$);let Z=$ instanceof Error?$.message:"Unknown error";return K.json({error:"Internal Server Error",message:Z},500)}),G}var Iz1,qf=null,Cd4,Rd4=()=>$a(dY),Sd4=()=>Wa(dY);var Rz1=h(()=>{vZ();a$1();QK1();BU();vy();kL();hQ0();mK1();Oy();nK1();YZ1();$Z1();jz1();Sy();ky();Ha();td();Iz1=l4(FQ0(),1),Cd4=new Iz1.PrometheusSerializer});var Sz1,vd4,kd4=(Q,J)=>{if(!Q)return{};let X=new Headers(Q.headers);if(J){let G=X.get("connection");if(G){let Y=G.split(",").map(($)=>$.trim()),W=Y.filter(($)=>!vd4.test($));if(W.length>0)throw new UQ0(400,{message:`Invalid Connection header value: ${W.join(", ")}`});Y.forEach(($)=>{X.delete($)})}}return Sz1.forEach((G)=>{X.delete(G)}),{method:Q.method,body:Q.body,duplex:Q.body?"half":void 0,headers:X,signal:Q.signal}},_d4=(Q)=>{if(!Q.headers||Array.isArray(Q.headers)||Q.headers instanceof Headers)return Q;let J=new Headers;for(let[X,G]of Object.entries(Q.headers))if(G==null)J.delete(X);else J.set(X,G);return Q.headers=J,Q},vz1=async(Q,J)=>{let{raw:X,customFetch:G,strictConnectionProcessing:Y=!1,...W}=J instanceof Request?{raw:J}:J??{},$=new Request(Q,{...kd4(X,Y),..._d4(W)});$.headers.delete("accept-encoding");let K=await(G||fetch)($),Z=new Headers(K.headers);if(Sz1.forEach((H)=>{Z.delete(H)}),Z.has("content-encoding"))Z.delete("content-encoding"),Z.delete("content-length");return new Response(K.body,{status:K.status,statusText:K.statusText,headers:Z})};var kz1=h(()=>{NQ0();Sz1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],vd4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var _z1=(Q)=>(J)=>{let X=new URL(J.req.raw.url),G=new URL(Q);return G.pathname=X.pathname,G.search=X.search,vz1(G,{raw:J.req.raw,headers:{...J.req.raw.headers}})};var yz1=h(()=>{kz1()});import{resolve as f2,dirname as yd4}from"path";function bd4(Q,J){let X=f2(J),G=f2(Q);return G===X||G.startsWith(X+"/")}function xd4({requestPath:Q,clientDir:J}){let X=Q.startsWith("/")?Q.slice(1):Q,G=f2(J,X);if(!bd4(G,J))return null;return G}function hz1(Q,J="../client"){let X=new URL(Q),G=yd4(X.pathname);return f2(G,J)}function fz1(Q={}){let{env:J="production",devServerUrl:X=hd4,clientDir:G=fd4,isServerPath:Y=()=>!1}=Q;if(J==="development"){let W=_z1(X);return async function(K){let Z=new URL(K.url);if(Y(Z.pathname))return null;let H={req:{raw:K,url:K.url}};return W(H)}}return async function($){if($.method!=="GET")return null;let K=new URL($.url),Z;try{Z=decodeURIComponent(K.pathname)}catch{return null}if(Y(Z))return null;let H=xd4({requestPath:Z,clientDir:G});if(!H)return null;let q=f2(G,"index.html");for(let F of[H,q])try{let V=Bun.file(F);if(await V.exists())return new Response(V)}catch{}return null}}var hd4="http://localhost:4000",fd4="./dist/client";var bz1=h(()=>{yz1()});var id4={};var xz1,Ff="\x1B[0m",gd4="\x1B[1m",ud4="\x1B[2m",md4="\x1B[32m",ld4="\x1B[36m",dd4="\x1B[4m",pd4,cd4,nd4;var gz1=h(()=>{Oy();Rz1();hQ0();bz1();xz1=parseInt(process.env.PORT||"3000",10),pd4=`http://localhost:${xz1}`,cd4=fz1({clientDir:hz1(import.meta.url,"../client"),isServerPath:EK1}),nd4=Cz1();console.log("");console.log(`${md4}\u2713${Ff} ${gd4}Ready${Ff}`);console.log("");console.log(` ${ud4}Open in browser:${Ff} ${ld4}${dd4}${pd4}${Ff}`);console.log("");Bun.serve({idleTimeout:0,port:xz1,hostname:"0.0.0.0",fetch:async(Q)=>{return await cd4(Q)??nd4.fetch(Q)},development:!1})});import{parseArgs as rd4}from"util";var{values:Vf}=rd4({args:process.argv.slice(2),options:{port:{type:"string",short:"p",default:process.env.PORT||"3000"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1},"skip-migrations":{type:"boolean",default:!1}},allowPositionals:!0});if(Vf.help)console.log(`
1144
1144
  MCP Mesh - Self-hostable MCP Gateway
1145
1145
 
1146
1146
  Usage:
@@ -1127,4 +1127,4 @@ Learn more: \x1B[34m${X}\x1B[0m
1127
1127
  `)},flush(Q){Q.enqueue(`data: [DONE]
1128
1128
 
1129
1129
  `)}})}},kZ1={"content-type":"text/event-stream","cache-control":"no-cache",connection:"keep-alive","x-vercel-ai-ui-message-stream":"v1","x-accel-buffering":"no"};function _f4({status:Q,statusText:J,headers:X,stream:G,consumeSseStream:Y}){let W=G.pipeThrough(new vZ1);if(Y){let[$,K]=W.tee();W=$,Y({stream:K})}return new Response(W.pipeThrough(new TextEncoderStream),{status:Q,statusText:J,headers:cy(X,kZ1)})}function yf4({originalMessages:Q,responseMessageId:J}){if(Q==null)return;let X=Q[Q.length-1];return(X==null?void 0:X.role)==="assistant"?X.id:typeof J==="function"?J():J}var Ll6=PQ(()=>m5(I.union([I.strictObject({type:I.literal("text-start"),id:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("text-delta"),id:I.string(),delta:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("text-end"),id:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("error"),errorText:I.string()}),I.strictObject({type:I.literal("tool-input-start"),toolCallId:I.string(),toolName:I.string(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-input-delta"),toolCallId:I.string(),inputTextDelta:I.string()}),I.strictObject({type:I.literal("tool-input-available"),toolCallId:I.string(),toolName:I.string(),input:I.unknown(),providerExecuted:I.boolean().optional(),providerMetadata:t1.optional(),dynamic:I.boolean().optional(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-input-error"),toolCallId:I.string(),toolName:I.string(),input:I.unknown(),providerExecuted:I.boolean().optional(),providerMetadata:t1.optional(),dynamic:I.boolean().optional(),errorText:I.string(),title:I.string().optional()}),I.strictObject({type:I.literal("tool-approval-request"),approvalId:I.string(),toolCallId:I.string()}),I.strictObject({type:I.literal("tool-output-available"),toolCallId:I.string(),output:I.unknown(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional(),preliminary:I.boolean().optional()}),I.strictObject({type:I.literal("tool-output-error"),toolCallId:I.string(),errorText:I.string(),providerExecuted:I.boolean().optional(),dynamic:I.boolean().optional()}),I.strictObject({type:I.literal("tool-output-denied"),toolCallId:I.string()}),I.strictObject({type:I.literal("reasoning-start"),id:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("reasoning-delta"),id:I.string(),delta:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("reasoning-end"),id:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("source-url"),sourceId:I.string(),url:I.string(),title:I.string().optional(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("source-document"),sourceId:I.string(),mediaType:I.string(),title:I.string(),filename:I.string().optional(),providerMetadata:t1.optional()}),I.strictObject({type:I.literal("file"),url:I.string(),mediaType:I.string(),providerMetadata:t1.optional()}),I.strictObject({type:I.custom((Q)=>typeof Q==="string"&&Q.startsWith("data-"),{message:'Type must start with "data-"'}),id:I.string().optional(),data:I.unknown(),transient:I.boolean().optional()}),I.strictObject({type:I.literal("start-step")}),I.strictObject({type:I.literal("finish-step")}),I.strictObject({type:I.literal("start"),messageId:I.string().optional(),messageMetadata:I.unknown().optional()}),I.strictObject({type:I.literal("finish"),finishReason:I.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:I.unknown().optional()}),I.strictObject({type:I.literal("abort")}),I.strictObject({type:I.literal("message-metadata"),messageMetadata:I.unknown()})])));function hf4(Q){return Q.type.startsWith("data-")}function LY0(Q){return Q.type.startsWith("data-")}function wY0(Q){return Q.type==="text"}function PY0(Q){return Q.type==="file"}function yK1(Q){return Q.type==="reasoning"}function CY0(Q){return Q.type.startsWith("tool-")}function _Z1(Q){return Q.type==="dynamic-tool"}function fM(Q){return CY0(Q)||_Z1(Q)}function RY0(Q){return Q.type.split("-").slice(1).join("-")}function MY0(Q){return _Z1(Q)?Q.toolName:RY0(Q)}function ff4({lastMessage:Q,messageId:J}){return{message:(Q==null?void 0:Q.role)==="assistant"?Q:{id:J,metadata:void 0,role:"assistant",parts:[]},activeTextParts:{},activeReasoningParts:{},partialToolCalls:{}}}function bf4({stream:Q,messageMetadataSchema:J,dataPartSchemas:X,runUpdateMessageJob:G,onError:Y,onToolCall:W,onData:$}){return Q.pipeThrough(new TransformStream({async transform(K,Z){await G(async({state:H,write:q})=>{var F,V,z,U;function N(P){let T=H.message.parts.filter(fM).find((E)=>E.toolCallId===P);if(T==null)throw Error(`no tool invocation found for tool call ${P}`);return T}function D(P){var M;let T=H.message.parts.find((k)=>CY0(k)&&k.toolCallId===P.toolCallId),E=P,R=T;if(T!=null){if(T.state=P.state,R.input=E.input,R.output=E.output,R.errorText=E.errorText,R.rawInput=E.rawInput,R.preliminary=E.preliminary,P.title!==void 0)R.title=P.title;if(R.providerExecuted=(M=E.providerExecuted)!=null?M:T.providerExecuted,E.providerMetadata!=null&&T.state==="input-available")T.callProviderMetadata=E.providerMetadata}else H.message.parts.push({type:`tool-${P.toolName}`,toolCallId:P.toolCallId,state:P.state,title:P.title,input:E.input,output:E.output,rawInput:E.rawInput,errorText:E.errorText,providerExecuted:E.providerExecuted,preliminary:E.preliminary,...E.providerMetadata!=null?{callProviderMetadata:E.providerMetadata}:{}})}function w(P){var M,T;let E=H.message.parts.find((_)=>_.type==="dynamic-tool"&&_.toolCallId===P.toolCallId),R=P,k=E;if(E!=null){if(E.state=P.state,k.toolName=P.toolName,k.input=R.input,k.output=R.output,k.errorText=R.errorText,k.rawInput=(M=R.rawInput)!=null?M:k.rawInput,k.preliminary=R.preliminary,P.title!==void 0)k.title=P.title;if(k.providerExecuted=(T=R.providerExecuted)!=null?T:E.providerExecuted,R.providerMetadata!=null&&E.state==="input-available")E.callProviderMetadata=R.providerMetadata}else H.message.parts.push({type:"dynamic-tool",toolName:P.toolName,toolCallId:P.toolCallId,state:P.state,input:R.input,output:R.output,errorText:R.errorText,preliminary:R.preliminary,providerExecuted:R.providerExecuted,title:P.title,...R.providerMetadata!=null?{callProviderMetadata:R.providerMetadata}:{}})}async function A(P){if(P!=null){let M=H.message.metadata!=null?vY0(H.message.metadata,P):P;if(J!=null)await vM({value:M,schema:J});H.message.metadata=M}}switch(K.type){case"text-start":{let P={type:"text",text:"",providerMetadata:K.providerMetadata,state:"streaming"};H.activeTextParts[K.id]=P,H.message.parts.push(P),q();break}case"text-delta":{let P=H.activeTextParts[K.id];P.text+=K.delta,P.providerMetadata=(F=K.providerMetadata)!=null?F:P.providerMetadata,q();break}case"text-end":{let P=H.activeTextParts[K.id];P.state="done",P.providerMetadata=(V=K.providerMetadata)!=null?V:P.providerMetadata,delete H.activeTextParts[K.id],q();break}case"reasoning-start":{let P={type:"reasoning",text:"",providerMetadata:K.providerMetadata,state:"streaming"};H.activeReasoningParts[K.id]=P,H.message.parts.push(P),q();break}case"reasoning-delta":{let P=H.activeReasoningParts[K.id];P.text+=K.delta,P.providerMetadata=(z=K.providerMetadata)!=null?z:P.providerMetadata,q();break}case"reasoning-end":{let P=H.activeReasoningParts[K.id];P.providerMetadata=(U=K.providerMetadata)!=null?U:P.providerMetadata,P.state="done",delete H.activeReasoningParts[K.id],q();break}case"file":{H.message.parts.push({type:"file",mediaType:K.mediaType,url:K.url}),q();break}case"source-url":{H.message.parts.push({type:"source-url",sourceId:K.sourceId,url:K.url,title:K.title,providerMetadata:K.providerMetadata}),q();break}case"source-document":{H.message.parts.push({type:"source-document",sourceId:K.sourceId,mediaType:K.mediaType,title:K.title,filename:K.filename,providerMetadata:K.providerMetadata}),q();break}case"tool-input-start":{let P=H.message.parts.filter(CY0);if(H.partialToolCalls[K.toolCallId]={text:"",toolName:K.toolName,index:P.length,dynamic:K.dynamic,title:K.title},K.dynamic)w({toolCallId:K.toolCallId,toolName:K.toolName,state:"input-streaming",input:void 0,providerExecuted:K.providerExecuted,title:K.title});else D({toolCallId:K.toolCallId,toolName:K.toolName,state:"input-streaming",input:void 0,providerExecuted:K.providerExecuted,title:K.title});q();break}case"tool-input-delta":{let P=H.partialToolCalls[K.toolCallId];P.text+=K.inputTextDelta;let{value:M}=await xM(P.text);if(P.dynamic)w({toolCallId:K.toolCallId,toolName:P.toolName,state:"input-streaming",input:M,title:P.title});else D({toolCallId:K.toolCallId,toolName:P.toolName,state:"input-streaming",input:M,title:P.title});q();break}case"tool-input-available":{if(K.dynamic)w({toolCallId:K.toolCallId,toolName:K.toolName,state:"input-available",input:K.input,providerExecuted:K.providerExecuted,providerMetadata:K.providerMetadata,title:K.title});else D({toolCallId:K.toolCallId,toolName:K.toolName,state:"input-available",input:K.input,providerExecuted:K.providerExecuted,providerMetadata:K.providerMetadata,title:K.title});if(q(),W&&!K.providerExecuted)await W({toolCall:K});break}case"tool-input-error":{if(K.dynamic)w({toolCallId:K.toolCallId,toolName:K.toolName,state:"output-error",input:K.input,errorText:K.errorText,providerExecuted:K.providerExecuted,providerMetadata:K.providerMetadata});else D({toolCallId:K.toolCallId,toolName:K.toolName,state:"output-error",input:void 0,rawInput:K.input,errorText:K.errorText,providerExecuted:K.providerExecuted,providerMetadata:K.providerMetadata});q();break}case"tool-approval-request":{let P=N(K.toolCallId);P.state="approval-requested",P.approval={id:K.approvalId},q();break}case"tool-output-denied":{let P=N(K.toolCallId);P.state="output-denied",q();break}case"tool-output-available":{let P=N(K.toolCallId);if(P.type==="dynamic-tool")w({toolCallId:K.toolCallId,toolName:P.toolName,state:"output-available",input:P.input,output:K.output,preliminary:K.preliminary,providerExecuted:K.providerExecuted,title:P.title});else D({toolCallId:K.toolCallId,toolName:RY0(P),state:"output-available",input:P.input,output:K.output,providerExecuted:K.providerExecuted,preliminary:K.preliminary,title:P.title});q();break}case"tool-output-error":{let P=N(K.toolCallId);if(P.type==="dynamic-tool")w({toolCallId:K.toolCallId,toolName:P.toolName,state:"output-error",input:P.input,errorText:K.errorText,providerExecuted:K.providerExecuted,title:P.title});else D({toolCallId:K.toolCallId,toolName:RY0(P),state:"output-error",input:P.input,rawInput:P.rawInput,errorText:K.errorText,providerExecuted:K.providerExecuted,title:P.title});q();break}case"start-step":{H.message.parts.push({type:"step-start"});break}case"finish-step":{H.activeTextParts={},H.activeReasoningParts={};break}case"start":{if(K.messageId!=null)H.message.id=K.messageId;if(await A(K.messageMetadata),K.messageId!=null||K.messageMetadata!=null)q();break}case"finish":{if(K.finishReason!=null)H.finishReason=K.finishReason;if(await A(K.messageMetadata),K.messageMetadata!=null)q();break}case"message-metadata":{if(await A(K.messageMetadata),K.messageMetadata!=null)q();break}case"error":{Y==null||Y(Error(K.errorText));break}default:if(hf4(K)){if((X==null?void 0:X[K.type])!=null)await vM({value:K.data,schema:X[K.type]});let P=K;if(P.transient){$==null||$(P);break}let M=P.id!=null?H.message.parts.find((T)=>P.type===T.type&&P.id===T.id):void 0;if(M!=null)M.data=P.data;else H.message.parts.push(P);$==null||$(P),q()}}Z.enqueue(K)})}}))}function xf4({messageId:Q,originalMessages:J=[],onFinish:X,onError:G,stream:Y}){let W=J==null?void 0:J[J.length-1];if((W==null?void 0:W.role)!=="assistant")W=void 0;else Q=W.id;let $=!1,K=Y.pipeThrough(new TransformStream({transform(V,z){if(V.type==="start"){let U=V;if(U.messageId==null&&Q!=null)U.messageId=Q}if(V.type==="abort")$=!0;z.enqueue(V)}}));if(X==null)return K;let Z=ff4({lastMessage:W?structuredClone(W):void 0,messageId:Q!=null?Q:""}),H=async(V)=>{await V({state:Z,write:()=>{}})},q=!1,F=async()=>{if(q||!X)return;q=!0;let V=Z.message.id===(W==null?void 0:W.id);await X({isAborted:$,isContinuation:V,responseMessage:Z.message,messages:[...V?J.slice(0,-1):J,Z.message],finishReason:Z.finishReason})};return bf4({stream:K,runUpdateMessageJob:H,onError:G}).pipeThrough(new TransformStream({transform(V,z){z.enqueue(V)},async cancel(){await F()},async flush(){await F()}}))}function gf4({response:Q,status:J,statusText:X,headers:G,stream:Y,consumeSseStream:W}){let $=Y.pipeThrough(new vZ1);if(W){let[K,Z]=$.tee();$=K,W({stream:Z})}SZ1({response:Q,status:J,statusText:X,headers:Object.fromEntries(cy(G,kZ1).entries()),stream:$.pipeThrough(new TextEncoderStream)})}function dy(Q){let J=Q.pipeThrough(new TransformStream);return J[Symbol.asyncIterator]=function(){let X=this.getReader(),G=!1;async function Y(W){var $;G=!0;try{if(W)await(($=X.cancel)==null?void 0:$.call(X))}finally{try{X.releaseLock()}catch(K){}}}return{async next(){if(G)return{done:!0,value:void 0};let{done:W,value:$}=await X.read();if(W)return await Y(!0),{done:!0,value:void 0};return{done:!1,value:$}},async return(){return await Y(!0),{done:!0,value:void 0}},async throw(W){throw await Y(!0),W}}},J}async function uf4({stream:Q,onError:J}){let X=Q.getReader();try{while(!0){let{done:G}=await X.read();if(G)break}}catch(G){J==null||J(G)}finally{X.releaseLock()}}function hK1(){let Q,J;return{promise:new Promise((G,Y)=>{Q=G,J=Y}),resolve:Q,reject:J}}function mf4(){let Q=[],J=null,X=!1,G=hK1(),Y=()=>{X=!0,G.resolve(),Q.forEach(($)=>$.cancel()),Q=[],J==null||J.close()},W=async()=>{if(X&&Q.length===0){J==null||J.close();return}if(Q.length===0)return G=hK1(),await G.promise,W();try{let{value:$,done:K}=await Q[0].read();if(K)if(Q.shift(),Q.length===0&&X)J==null||J.close();else await W();else J==null||J.enqueue($)}catch($){J==null||J.error($),Q.shift(),Y()}};return{stream:new ReadableStream({start($){J=$},pull:W,async cancel(){for(let $ of Q)await $.cancel();Q=[],X=!0}}),addStream:($)=>{if(X)throw Error("Cannot add inner stream: outer stream is closed");Q.push($.getReader()),G.resolve()},close:()=>{if(X=!0,G.resolve(),Q.length===0)J==null||J.close()},terminate:Y}}function lf4(){var Q,J;return(J=(Q=globalThis==null?void 0:globalThis.performance)==null?void 0:Q.now())!=null?J:Date.now()}function df4({tools:Q,generatorStream:J,tracer:X,telemetry:G,system:Y,messages:W,abortSignal:$,repairToolCall:K,experimental_context:Z,generateId:H}){let q=null,F=new ReadableStream({start(P){q=P}}),V=new Set,z=new Map,U=new Map,N=!1,D=void 0;function w(){if(N&&V.size===0){if(D!=null)q.enqueue(D);q.close()}}let A=new TransformStream({async transform(P,M){let T=P.type;switch(T){case"stream-start":case"text-start":case"text-delta":case"text-end":case"reasoning-start":case"reasoning-delta":case"reasoning-end":case"tool-input-start":case"tool-input-delta":case"tool-input-end":case"source":case"response-metadata":case"error":case"raw":{M.enqueue(P);break}case"file":{M.enqueue({type:"file",file:new wf4({data:P.data,mediaType:P.mediaType})});break}case"finish":{D={type:"finish",finishReason:P.finishReason.unified,rawFinishReason:P.finishReason.raw,usage:zf4(P.usage),providerMetadata:P.providerMetadata};break}case"tool-approval-request":{let E=U.get(P.toolCallId);if(E==null){q.enqueue({type:"error",error:new rK1({toolCallId:P.toolCallId,approvalId:P.approvalId})});break}M.enqueue({type:"tool-approval-request",approvalId:P.approvalId,toolCall:E});break}case"tool-call":{try{let E=await Cf4({toolCall:P,tools:Q,repairToolCall:K,system:Y,messages:W});if(U.set(E.toolCallId,E),M.enqueue(E),E.invalid){q.enqueue({type:"tool-error",toolCallId:E.toolCallId,toolName:E.toolName,input:E.input,error:RM(E.error),dynamic:!0,title:E.title});break}let R=Q==null?void 0:Q[E.toolName];if(R==null)break;if(R.onInputAvailable!=null)await R.onInputAvailable({input:E.input,toolCallId:E.toolCallId,messages:W,abortSignal:$,experimental_context:Z});if(await Pf4({tool:R,toolCall:E,messages:W,experimental_context:Z})){q.enqueue({type:"tool-approval-request",approvalId:H(),toolCall:E});break}if(z.set(E.toolCallId,E.input),R.execute!=null&&E.providerExecuted!==!0){let k=H();V.add(k),CZ1({toolCall:E,tools:Q,tracer:X,telemetry:G,messages:W,abortSignal:$,experimental_context:Z,onPreliminaryToolResult:(_)=>{q.enqueue(_)}}).then((_)=>{q.enqueue(_),V.delete(k),w()})}}catch(E){q.enqueue({type:"error",error:E})}break}case"tool-result":{let E=P.toolName;if(P.isError)q.enqueue({type:"tool-error",toolCallId:P.toolCallId,toolName:E,input:z.get(P.toolCallId),providerExecuted:!0,error:P.result,dynamic:P.dynamic});else M.enqueue({type:"tool-result",toolCallId:P.toolCallId,toolName:E,input:z.get(P.toolCallId),output:P.result,providerExecuted:!0,dynamic:P.dynamic});break}default:throw Error(`Unhandled chunk type: ${T}`)}},flush(){N=!0,w()}});return new ReadableStream({async start(P){return Promise.all([J.pipeThrough(A).pipeTo(new WritableStream({write(M){P.enqueue(M)},close(){}})),F.pipeTo(new WritableStream({write(M){P.enqueue(M)},close(){P.close()}}))])}})}var pf4=gW({prefix:"aitxt",size:24});function yZ1({model:Q,tools:J,toolChoice:X,system:G,prompt:Y,messages:W,maxRetries:$,abortSignal:K,headers:Z,stopWhen:H=kY0(1),experimental_output:q,output:F=q,experimental_telemetry:V,prepareStep:z,providerOptions:U,experimental_activeTools:N,activeTools:D=N,experimental_repairToolCall:w,experimental_transform:A,experimental_download:P,includeRawChunks:M=!1,onChunk:T,onError:E=({error:x})=>{console.error(x)},onFinish:R,onAbort:k,onStepFinish:_,experimental_context:y,_internal:{now:f=lf4,generateId:m=pf4,currentDate:b=()=>new Date}={},...v}){return new nf4({model:LZ1(Q),telemetry:V,headers:Z,settings:v,maxRetries:$,abortSignal:K,system:G,prompt:Y,messages:W,tools:J,toolChoice:X,transforms:py(A),activeTools:D,repairToolCall:w,stopConditions:py(H),output:F,providerOptions:U,prepareStep:z,includeRawChunks:M,onChunk:T,onError:E,onFinish:R,onAbort:k,onStepFinish:_,now:f,currentDate:b,generateId:m,experimental_context:y,download:P})}function cf4(Q){let J=void 0,X="",G="",Y=void 0,W="";function $({controller:K,partialOutput:Z=void 0}){K.enqueue({part:{type:"text-delta",id:J,text:G,providerMetadata:Y},partialOutput:Z}),G=""}return new TransformStream({async transform(K,Z){var H;if(K.type==="finish-step"&&G.length>0)$({controller:Z});if(K.type!=="text-delta"&&K.type!=="text-start"&&K.type!=="text-end"){Z.enqueue({part:K,partialOutput:void 0});return}if(J==null)J=K.id;else if(K.id!==J){Z.enqueue({part:K,partialOutput:void 0});return}if(K.type==="text-start"){Z.enqueue({part:K,partialOutput:void 0});return}if(K.type==="text-end"){if(G.length>0)$({controller:Z});Z.enqueue({part:K,partialOutput:void 0});return}X+=K.text,G+=K.text,Y=(H=K.providerMetadata)!=null?H:Y;let q=await Q.parsePartialOutput({text:X});if(q!==void 0){let F=JSON.stringify(q.partial);if(F!==W)$({controller:Z,partialOutput:q.partial}),W=F}}})}var nf4=class{constructor({model:Q,telemetry:J,headers:X,settings:G,maxRetries:Y,abortSignal:W,system:$,prompt:K,messages:Z,tools:H,toolChoice:q,transforms:F,activeTools:V,repairToolCall:z,stopConditions:U,output:N,providerOptions:D,prepareStep:w,includeRawChunks:A,now:P,currentDate:M,generateId:T,onChunk:E,onError:R,onFinish:k,onAbort:_,onStepFinish:y,experimental_context:f,download:m}){this._totalUsage=new Lq,this._finishReason=new Lq,this._rawFinishReason=new Lq,this._steps=new Lq,this.outputSpecification=N,this.includeRawChunks=A,this.tools=H;let b,v=[],x=[],Q0=void 0,c=void 0,G0=void 0,U0={},X0=[],B0=[],R0=new Map,x0,p0={},O0={},K0=new TransformStream({async transform(m0,k0){var h0,Y1,v1,Q4;k0.enqueue(m0);let{part:l0}=m0;if(l0.type==="text-delta"||l0.type==="reasoning-delta"||l0.type==="source"||l0.type==="tool-call"||l0.type==="tool-result"||l0.type==="tool-input-start"||l0.type==="tool-input-delta"||l0.type==="raw")await(E==null?void 0:E({chunk:l0}));if(l0.type==="error")await R({error:Kf4(l0.error)});if(l0.type==="text-start")p0[l0.id]={type:"text",text:"",providerMetadata:l0.providerMetadata},v.push(p0[l0.id]);if(l0.type==="text-delta"){let c0=p0[l0.id];if(c0==null){k0.enqueue({part:{type:"error",error:`text part ${l0.id} not found`},partialOutput:void 0});return}c0.text+=l0.text,c0.providerMetadata=(h0=l0.providerMetadata)!=null?h0:c0.providerMetadata}if(l0.type==="text-end"){let c0=p0[l0.id];if(c0==null){k0.enqueue({part:{type:"error",error:`text part ${l0.id} not found`},partialOutput:void 0});return}c0.providerMetadata=(Y1=l0.providerMetadata)!=null?Y1:c0.providerMetadata,delete p0[l0.id]}if(l0.type==="reasoning-start")O0[l0.id]={type:"reasoning",text:"",providerMetadata:l0.providerMetadata},v.push(O0[l0.id]);if(l0.type==="reasoning-delta"){let c0=O0[l0.id];if(c0==null){k0.enqueue({part:{type:"error",error:`reasoning part ${l0.id} not found`},partialOutput:void 0});return}c0.text+=l0.text,c0.providerMetadata=(v1=l0.providerMetadata)!=null?v1:c0.providerMetadata}if(l0.type==="reasoning-end"){let c0=O0[l0.id];if(c0==null){k0.enqueue({part:{type:"error",error:`reasoning part ${l0.id} not found`},partialOutput:void 0});return}c0.providerMetadata=(Q4=l0.providerMetadata)!=null?Q4:c0.providerMetadata,delete O0[l0.id]}if(l0.type==="file")v.push({type:"file",file:l0.file});if(l0.type==="source")v.push(l0);if(l0.type==="tool-call")v.push(l0);if(l0.type==="tool-result"&&!l0.preliminary)v.push(l0);if(l0.type==="tool-approval-request")v.push(l0);if(l0.type==="tool-error")v.push(l0);if(l0.type==="start-step")v=[],O0={},p0={},U0=l0.request,X0=l0.warnings;if(l0.type==="finish-step"){let c0=await _K1({content:v,tools:H}),S0=new Rf4({content:v,finishReason:l0.finishReason,rawFinishReason:l0.rawFinishReason,usage:l0.usage,warnings:X0,request:U0,response:{...l0.response,messages:[...x,...c0]},providerMetadata:l0.providerMetadata});await(y==null?void 0:y(S0)),BZ1({warnings:X0,provider:Q.provider,model:Q.modelId}),B0.push(S0),x.push(...c0),b.resolve()}if(l0.type==="finish")G0=l0.totalUsage,Q0=l0.finishReason,c=l0.rawFinishReason},async flush(m0){try{if(B0.length===0){let v1=new zh4({message:"No output generated. Check the stream for errors."});D0._finishReason.reject(v1),D0._rawFinishReason.reject(v1),D0._totalUsage.reject(v1),D0._steps.reject(v1);return}let k0=Q0!=null?Q0:"other",h0=G0!=null?G0:DY0();D0._finishReason.resolve(k0),D0._rawFinishReason.resolve(c),D0._totalUsage.resolve(h0),D0._steps.resolve(B0);let Y1=B0[B0.length-1];await(k==null?void 0:k({finishReason:Y1.finishReason,rawFinishReason:Y1.rawFinishReason,totalUsage:h0,usage:Y1.usage,content:Y1.content,text:Y1.text,reasoningText:Y1.reasoningText,reasoning:Y1.reasoning,files:Y1.files,sources:Y1.sources,toolCalls:Y1.toolCalls,staticToolCalls:Y1.staticToolCalls,dynamicToolCalls:Y1.dynamicToolCalls,toolResults:Y1.toolResults,staticToolResults:Y1.staticToolResults,dynamicToolResults:Y1.dynamicToolResults,request:Y1.request,response:Y1.response,warnings:Y1.warnings,providerMetadata:Y1.providerMetadata,steps:B0,experimental_context:f})),x0.setAttributes(await YN({telemetry:J,attributes:{"ai.response.finishReason":k0,"ai.response.text":{output:()=>Y1.text},"ai.response.toolCalls":{output:()=>{var v1;return((v1=Y1.toolCalls)==null?void 0:v1.length)?JSON.stringify(Y1.toolCalls):void 0}},"ai.response.providerMetadata":JSON.stringify(Y1.providerMetadata),"ai.usage.inputTokens":h0.inputTokens,"ai.usage.outputTokens":h0.outputTokens,"ai.usage.totalTokens":h0.totalTokens,"ai.usage.reasoningTokens":h0.reasoningTokens,"ai.usage.cachedInputTokens":h0.cachedInputTokens}}))}catch(k0){m0.error(k0)}finally{x0.end()}}}),v0=mf4();this.addStream=v0.addStream,this.closeStream=v0.close;let x1=v0.stream.getReader(),I1=new ReadableStream({async start(m0){m0.enqueue({type:"start"})},async pull(m0){function k0(){_==null||_({steps:B0}),m0.enqueue({type:"abort"}),m0.close()}try{let{done:h0,value:Y1}=await x1.read();if(h0){m0.close();return}if(W==null?void 0:W.aborted){k0();return}m0.enqueue(Y1)}catch(h0){if(xW(h0)&&(W==null?void 0:W.aborted))k0();else m0.error(h0)}},cancel(m0){return v0.stream.cancel(m0)}});for(let m0 of F)I1=I1.pipeThrough(m0({tools:H,stopStream(){v0.terminate()}}));this.baseStream=I1.pipeThrough(cf4(N!=null?N:IY0())).pipeThrough(K0);let{maxRetries:b0,retry:L0}=Of4({maxRetries:Y,abortSignal:W}),z0=Ff4(J),I0=nh4(G),H0=Zf4({model:Q,telemetry:J,headers:X,settings:{...I0,maxRetries:b0}}),D0=this;jY0({name:"ai.streamText",attributes:YN({telemetry:J,attributes:{...AY0({operationId:"ai.streamText",telemetry:J}),...H0,"ai.prompt":{input:()=>JSON.stringify({system:$,prompt:K,messages:Z})}}}),tracer:z0,endWhenDone:!1,fn:async(m0)=>{x0=m0;let k0=await $f4({system:$,prompt:K,messages:Z}),h0=k0.messages,Y1=[],{approvedToolApprovals:v1,deniedToolApprovals:Q4}=Df4({messages:h0});if(Q4.length>0||v1.length>0){let c0=[...v1,...Q4].filter((j1)=>j1.toolCall.providerExecuted),S0=v1.filter((j1)=>!j1.toolCall.providerExecuted),G1=Q4.filter((j1)=>!j1.toolCall.providerExecuted),N6=Q4.filter((j1)=>j1.toolCall.providerExecuted),U4,w8=new ReadableStream({start(j1){U4=j1}});D0.addStream(w8);try{for(let y1 of[...G1,...N6])U4==null||U4.enqueue({type:"tool-output-denied",toolCallId:y1.toolCall.toolCallId,toolName:y1.toolCall.toolName});let j1=[];if(await Promise.all(S0.map(async(y1)=>{let q6=await CZ1({toolCall:y1.toolCall,tools:H,tracer:z0,telemetry:J,messages:h0,abortSignal:W,experimental_context:f,onPreliminaryToolResult:(O)=>{U4==null||U4.enqueue(O)}});if(q6!=null)U4==null||U4.enqueue(q6),j1.push(q6)})),c0.length>0)Y1.push({role:"tool",content:c0.map((y1)=>({type:"tool-approval-response",approvalId:y1.approvalResponse.approvalId,approved:y1.approvalResponse.approved,reason:y1.approvalResponse.reason,providerExecuted:!0}))});if(j1.length>0||G1.length>0){let y1=[];for(let q6 of j1)y1.push({type:"tool-result",toolCallId:q6.toolCallId,toolName:q6.toolName,output:await GN({toolCallId:q6.toolCallId,input:q6.input,tool:H==null?void 0:H[q6.toolName],output:q6.type==="tool-result"?q6.output:q6.error,errorMode:q6.type==="tool-error"?"json":"none"})});for(let q6 of G1)y1.push({type:"tool-result",toolCallId:q6.toolCall.toolCallId,toolName:q6.toolCall.toolName,output:{type:"execution-denied",reason:q6.approvalResponse.reason}});Y1.push({role:"tool",content:y1})}}finally{U4==null||U4.close()}}x.push(...Y1);async function l0({currentStep:c0,responseMessages:S0,usage:G1}){var N6,U4,w8,j1,y1,q6;let O=D0.includeRawChunks;b=new Lq;let h=[...h0,...S0],t=await(w==null?void 0:w({model:Q,steps:B0,stepNumber:B0.length,messages:h,experimental_context:f})),q0=LZ1((N6=t==null?void 0:t.model)!=null?N6:Q),B=await lh4({prompt:{system:(U4=t==null?void 0:t.system)!=null?U4:k0.system,messages:(w8=t==null?void 0:t.messages)!=null?w8:h},supportedUrls:await q0.supportedUrls,download:m}),{toolChoice:j,tools:p}=await rh4({tools:H,toolChoice:(j1=t==null?void 0:t.toolChoice)!=null?j1:q,activeTools:(y1=t==null?void 0:t.activeTools)!=null?y1:V});f=(q6=t==null?void 0:t.experimental_context)!=null?q6:f;let Y0=vY0(D,t==null?void 0:t.providerOptions),{result:{stream:Z0,response:r,request:u0},doStreamSpan:A1,startTimestampMs:r1}=await L0(()=>jY0({name:"ai.streamText.doStream",attributes:YN({telemetry:J,attributes:{...AY0({operationId:"ai.streamText.doStream",telemetry:J}),...H0,"ai.model.provider":q0.provider,"ai.model.id":q0.modelId,"ai.prompt.messages":{input:()=>Vf4(B)},"ai.prompt.tools":{input:()=>p==null?void 0:p.map((C0)=>JSON.stringify(C0))},"ai.prompt.toolChoice":{input:()=>j!=null?JSON.stringify(j):void 0},"gen_ai.system":q0.provider,"gen_ai.request.model":q0.modelId,"gen_ai.request.frequency_penalty":I0.frequencyPenalty,"gen_ai.request.max_tokens":I0.maxOutputTokens,"gen_ai.request.presence_penalty":I0.presencePenalty,"gen_ai.request.stop_sequences":I0.stopSequences,"gen_ai.request.temperature":I0.temperature,"gen_ai.request.top_k":I0.topK,"gen_ai.request.top_p":I0.topP}}),tracer:z0,endWhenDone:!1,fn:async(C0)=>({startTimestampMs:P(),doStreamSpan:C0,result:await q0.doStream({...I0,tools:p,toolChoice:j,responseFormat:await(N==null?void 0:N.responseFormat),prompt:B,providerOptions:Y0,abortSignal:W,headers:X,includeRawChunks:O})})})),n0=df4({tools:H,generatorStream:Z0,tracer:z0,telemetry:J,system:$,messages:h,repairToolCall:z,abortSignal:W,experimental_context:f,generateId:T}),m1=u0!=null?u0:{},r6=[],d8=[],S4,o9={},uJ="other",dX=void 0,a=DY0(),s,F0=!0,A0={id:T(),timestamp:M(),modelId:Q.modelId},W0="";D0.addStream(n0.pipeThrough(new TransformStream({async transform(C0,O1){var W4,C4,V8,i1,A6;if(C0.type==="stream-start"){S4=C0.warnings;return}if(F0){let q4=P()-r1;F0=!1,A1.addEvent("ai.stream.firstChunk",{"ai.response.msToFirstChunk":q4}),A1.setAttributes({"ai.response.msToFirstChunk":q4}),O1.enqueue({type:"start-step",request:m1,warnings:S4!=null?S4:[]})}let P8=C0.type;switch(P8){case"tool-approval-request":case"text-start":case"text-end":{O1.enqueue(C0);break}case"text-delta":{if(C0.delta.length>0)O1.enqueue({type:"text-delta",id:C0.id,text:C0.delta,providerMetadata:C0.providerMetadata}),W0+=C0.delta;break}case"reasoning-start":case"reasoning-end":{O1.enqueue(C0);break}case"reasoning-delta":{O1.enqueue({type:"reasoning-delta",id:C0.id,text:C0.delta,providerMetadata:C0.providerMetadata});break}case"tool-call":{O1.enqueue(C0),r6.push(C0);break}case"tool-result":{if(O1.enqueue(C0),!C0.preliminary)d8.push(C0);break}case"tool-error":{O1.enqueue(C0),d8.push(C0);break}case"response-metadata":{A0={id:(W4=C0.id)!=null?W4:A0.id,timestamp:(C4=C0.timestamp)!=null?C4:A0.timestamp,modelId:(V8=C0.modelId)!=null?V8:A0.modelId};break}case"finish":{a=C0.usage,uJ=C0.finishReason,dX=C0.rawFinishReason,s=C0.providerMetadata;let q4=P()-r1;A1.addEvent("ai.stream.finish"),A1.setAttributes({"ai.response.msToFinish":q4,"ai.response.avgOutputTokensPerSecond":1000*((i1=a.outputTokens)!=null?i1:0)/q4});break}case"file":{O1.enqueue(C0);break}case"source":{O1.enqueue(C0);break}case"tool-input-start":{o9[C0.id]=C0.toolName;let q4=H==null?void 0:H[C0.toolName];if((q4==null?void 0:q4.onInputStart)!=null)await q4.onInputStart({toolCallId:C0.id,messages:h,abortSignal:W,experimental_context:f});O1.enqueue({...C0,dynamic:(A6=C0.dynamic)!=null?A6:(q4==null?void 0:q4.type)==="dynamic",title:q4==null?void 0:q4.title});break}case"tool-input-end":{delete o9[C0.id],O1.enqueue(C0);break}case"tool-input-delta":{let q4=o9[C0.id],g4=H==null?void 0:H[q4];if((g4==null?void 0:g4.onInputDelta)!=null)await g4.onInputDelta({inputTextDelta:C0.delta,toolCallId:C0.id,messages:h,abortSignal:W,experimental_context:f});O1.enqueue(C0);break}case"error":{O1.enqueue(C0),uJ="error";break}case"raw":{if(O)O1.enqueue(C0);break}default:throw Error(`Unknown chunk type: ${P8}`)}},async flush(C0){let O1=r6.length>0?JSON.stringify(r6):void 0;try{A1.setAttributes(await YN({telemetry:J,attributes:{"ai.response.finishReason":uJ,"ai.response.text":{output:()=>W0},"ai.response.toolCalls":{output:()=>O1},"ai.response.id":A0.id,"ai.response.model":A0.modelId,"ai.response.timestamp":A0.timestamp.toISOString(),"ai.response.providerMetadata":JSON.stringify(s),"ai.usage.inputTokens":a.inputTokens,"ai.usage.outputTokens":a.outputTokens,"ai.usage.totalTokens":a.totalTokens,"ai.usage.reasoningTokens":a.reasoningTokens,"ai.usage.cachedInputTokens":a.cachedInputTokens,"gen_ai.response.finish_reasons":[uJ],"gen_ai.response.id":A0.id,"gen_ai.response.model":A0.modelId,"gen_ai.usage.input_tokens":a.inputTokens,"gen_ai.usage.output_tokens":a.outputTokens}}))}catch(i1){}finally{A1.end()}C0.enqueue({type:"finish-step",finishReason:uJ,rawFinishReason:dX,usage:a,providerMetadata:s,response:{...A0,headers:r==null?void 0:r.headers}});let W4=Uf4(G1,a);await b.promise;let C4=r6.filter((i1)=>i1.providerExecuted!==!0),V8=d8.filter((i1)=>i1.providerExecuted!==!0);for(let i1 of r6){if(i1.providerExecuted!==!0)continue;let A6=H==null?void 0:H[i1.toolName];if((A6==null?void 0:A6.type)==="provider"&&A6.supportsDeferredResults){if(!d8.some((q4)=>q4.type==="tool-result"&&q4.toolCallId===i1.toolCallId))R0.set(i1.toolCallId,{toolName:i1.toolName})}}for(let i1 of d8)if(i1.type==="tool-result")R0.delete(i1.toolCallId);if((C4.length>0&&V8.length===C4.length||R0.size>0)&&!await Sf4({stopConditions:U,steps:B0})){S0.push(...await _K1({content:B0[B0.length-1].content,tools:H}));try{await l0({currentStep:c0+1,responseMessages:S0,usage:W4})}catch(i1){C0.enqueue({type:"error",error:i1}),D0.closeStream()}}else C0.enqueue({type:"finish",finishReason:uJ,rawFinishReason:dX,totalUsage:W4}),D0.closeStream()}})))}await l0({currentStep:0,responseMessages:Y1,usage:DY0()})}}).catch((m0)=>{D0.addStream(new ReadableStream({start(k0){k0.enqueue({type:"error",error:m0}),k0.close()}})),D0.closeStream()})}get steps(){return this.consumeStream(),this._steps.promise}get finalStep(){return this.steps.then((Q)=>Q[Q.length-1])}get content(){return this.finalStep.then((Q)=>Q.content)}get warnings(){return this.finalStep.then((Q)=>Q.warnings)}get providerMetadata(){return this.finalStep.then((Q)=>Q.providerMetadata)}get text(){return this.finalStep.then((Q)=>Q.text)}get reasoningText(){return this.finalStep.then((Q)=>Q.reasoningText)}get reasoning(){return this.finalStep.then((Q)=>Q.reasoning)}get sources(){return this.finalStep.then((Q)=>Q.sources)}get files(){return this.finalStep.then((Q)=>Q.files)}get toolCalls(){return this.finalStep.then((Q)=>Q.toolCalls)}get staticToolCalls(){return this.finalStep.then((Q)=>Q.staticToolCalls)}get dynamicToolCalls(){return this.finalStep.then((Q)=>Q.dynamicToolCalls)}get toolResults(){return this.finalStep.then((Q)=>Q.toolResults)}get staticToolResults(){return this.finalStep.then((Q)=>Q.staticToolResults)}get dynamicToolResults(){return this.finalStep.then((Q)=>Q.dynamicToolResults)}get usage(){return this.finalStep.then((Q)=>Q.usage)}get request(){return this.finalStep.then((Q)=>Q.request)}get response(){return this.finalStep.then((Q)=>Q.response)}get totalUsage(){return this.consumeStream(),this._totalUsage.promise}get finishReason(){return this.consumeStream(),this._finishReason.promise}get rawFinishReason(){return this.consumeStream(),this._rawFinishReason.promise}teeStream(){let[Q,J]=this.baseStream.tee();return this.baseStream=J,Q}get textStream(){return dy(this.teeStream().pipeThrough(new TransformStream({transform({part:Q},J){if(Q.type==="text-delta")J.enqueue(Q.text)}})))}get fullStream(){return dy(this.teeStream().pipeThrough(new TransformStream({transform({part:Q},J){J.enqueue(Q)}})))}async consumeStream(Q){var J;try{await uf4({stream:this.fullStream,onError:Q==null?void 0:Q.onError})}catch(X){(J=Q==null?void 0:Q.onError)==null||J.call(Q,X)}}get experimental_partialOutputStream(){return this.partialOutputStream}get partialOutputStream(){return dy(this.teeStream().pipeThrough(new TransformStream({transform({partialOutput:Q},J){if(Q!=null)J.enqueue(Q)}})))}get output(){return this.finalStep.then((Q)=>{var J;return((J=this.outputSpecification)!=null?J:IY0()).parseCompleteOutput({text:Q.text},{response:Q.response,usage:Q.usage,finishReason:Q.finishReason})})}toUIMessageStream({originalMessages:Q,generateMessageId:J,onFinish:X,messageMetadata:G,sendReasoning:Y=!0,sendSources:W=!1,sendStart:$=!0,sendFinish:K=!0,onError:Z=YG}={}){let H=J!=null?yf4({originalMessages:Q,responseMessageId:J}):void 0,q=(V)=>{var z;let U=(z=this.tools)==null?void 0:z[V.toolName];if(U==null)return V.dynamic;return(U==null?void 0:U.type)==="dynamic"?!0:void 0},F=this.fullStream.pipeThrough(new TransformStream({transform:async(V,z)=>{let U=G==null?void 0:G({part:V}),N=V.type;switch(N){case"text-start":{z.enqueue({type:"text-start",id:V.id,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"text-delta":{z.enqueue({type:"text-delta",id:V.id,delta:V.text,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"text-end":{z.enqueue({type:"text-end",id:V.id,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"reasoning-start":{z.enqueue({type:"reasoning-start",id:V.id,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"reasoning-delta":{if(Y)z.enqueue({type:"reasoning-delta",id:V.id,delta:V.text,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"reasoning-end":{z.enqueue({type:"reasoning-end",id:V.id,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"file":{z.enqueue({type:"file",mediaType:V.file.mediaType,url:`data:${V.file.mediaType};base64,${V.file.base64}`});break}case"source":{if(W&&V.sourceType==="url")z.enqueue({type:"source-url",sourceId:V.id,url:V.url,title:V.title,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});if(W&&V.sourceType==="document")z.enqueue({type:"source-document",sourceId:V.id,mediaType:V.mediaType,title:V.title,filename:V.filename,...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{}});break}case"tool-input-start":{let D=q(V);z.enqueue({type:"tool-input-start",toolCallId:V.id,toolName:V.toolName,...V.providerExecuted!=null?{providerExecuted:V.providerExecuted}:{},...D!=null?{dynamic:D}:{},...V.title!=null?{title:V.title}:{}});break}case"tool-input-delta":{z.enqueue({type:"tool-input-delta",toolCallId:V.id,inputTextDelta:V.delta});break}case"tool-call":{let D=q(V);if(V.invalid)z.enqueue({type:"tool-input-error",toolCallId:V.toolCallId,toolName:V.toolName,input:V.input,...V.providerExecuted!=null?{providerExecuted:V.providerExecuted}:{},...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{},...D!=null?{dynamic:D}:{},errorText:Z(V.error),...V.title!=null?{title:V.title}:{}});else z.enqueue({type:"tool-input-available",toolCallId:V.toolCallId,toolName:V.toolName,input:V.input,...V.providerExecuted!=null?{providerExecuted:V.providerExecuted}:{},...V.providerMetadata!=null?{providerMetadata:V.providerMetadata}:{},...D!=null?{dynamic:D}:{},...V.title!=null?{title:V.title}:{}});break}case"tool-approval-request":{z.enqueue({type:"tool-approval-request",approvalId:V.approvalId,toolCallId:V.toolCall.toolCallId});break}case"tool-result":{let D=q(V);z.enqueue({type:"tool-output-available",toolCallId:V.toolCallId,output:V.output,...V.providerExecuted!=null?{providerExecuted:V.providerExecuted}:{},...V.preliminary!=null?{preliminary:V.preliminary}:{},...D!=null?{dynamic:D}:{}});break}case"tool-error":{let D=q(V);z.enqueue({type:"tool-output-error",toolCallId:V.toolCallId,errorText:Z(V.error),...V.providerExecuted!=null?{providerExecuted:V.providerExecuted}:{},...D!=null?{dynamic:D}:{}});break}case"tool-output-denied":{z.enqueue({type:"tool-output-denied",toolCallId:V.toolCallId});break}case"error":{z.enqueue({type:"error",errorText:Z(V.error)});break}case"start-step":{z.enqueue({type:"start-step"});break}case"finish-step":{z.enqueue({type:"finish-step"});break}case"start":{if($)z.enqueue({type:"start",...U!=null?{messageMetadata:U}:{},...H!=null?{messageId:H}:{}});break}case"finish":{if(K)z.enqueue({type:"finish",finishReason:V.finishReason,...U!=null?{messageMetadata:U}:{}});break}case"abort":{z.enqueue(V);break}case"tool-input-end":break;case"raw":break;default:throw Error(`Unknown chunk type: ${N}`)}if(U!=null&&N!=="start"&&N!=="finish")z.enqueue({type:"message-metadata",messageMetadata:U})}}));return dy(xf4({stream:F,messageId:H!=null?H:J==null?void 0:J(),originalMessages:Q,onFinish:X,onError:Z}))}pipeUIMessageStreamToResponse(Q,{originalMessages:J,generateMessageId:X,onFinish:G,messageMetadata:Y,sendReasoning:W,sendSources:$,sendFinish:K,sendStart:Z,onError:H,...q}={}){gf4({response:Q,stream:this.toUIMessageStream({originalMessages:J,generateMessageId:X,onFinish:G,messageMetadata:Y,sendReasoning:W,sendSources:$,sendFinish:K,sendStart:Z,onError:H}),...q})}pipeTextStreamToResponse(Q,J){kf4({response:Q,textStream:this.textStream,...J})}toUIMessageStreamResponse({originalMessages:Q,generateMessageId:J,onFinish:X,messageMetadata:G,sendReasoning:Y,sendSources:W,sendFinish:$,sendStart:K,onError:Z,...H}={}){return _f4({stream:this.toUIMessageStream({originalMessages:Q,generateMessageId:J,onFinish:X,messageMetadata:G,sendReasoning:Y,sendSources:W,sendFinish:$,sendStart:K,onError:Z}),...H})}toTextStreamResponse(Q){return vf4({textStream:this.textStream,...Q})}};async function hZ1(Q,J){let X=[];if(J==null?void 0:J.ignoreIncompleteToolCalls)Q=Q.map((G)=>({...G,parts:G.parts.filter((Y)=>!fM(Y)||Y.state!=="input-streaming"&&Y.state!=="input-available")}));for(let G of Q)switch(G.role){case"system":{let Y=G.parts.filter(($)=>$.type==="text"),W=Y.reduce(($,K)=>{if(K.providerMetadata!=null)return{...$,...K.providerMetadata};return $},{});X.push({role:"system",content:Y.map(($)=>$.text).join(""),...Object.keys(W).length>0?{providerOptions:W}:{}});break}case"user":{X.push({role:"user",content:G.parts.map((Y)=>{var W;if(wY0(Y))return{type:"text",text:Y.text,...Y.providerMetadata!=null?{providerOptions:Y.providerMetadata}:{}};if(PY0(Y))return{type:"file",mediaType:Y.mediaType,filename:Y.filename,data:Y.url,...Y.providerMetadata!=null?{providerOptions:Y.providerMetadata}:{}};if(LY0(Y))return(W=J==null?void 0:J.convertDataPart)==null?void 0:W.call(J,Y)}).filter(pW1)});break}case"assistant":{if(G.parts!=null){let Y=[];async function W(){var $,K,Z,H,q,F;if(Y.length===0)return;let V=[];for(let U of Y)if(wY0(U))V.push({type:"text",text:U.text,...U.providerMetadata!=null?{providerOptions:U.providerMetadata}:{}});else if(PY0(U))V.push({type:"file",mediaType:U.mediaType,filename:U.filename,data:U.url});else if(yK1(U))V.push({type:"reasoning",text:U.text,providerOptions:U.providerMetadata});else if(fM(U)){let N=MY0(U);if(U.state!=="input-streaming"){if(V.push({type:"tool-call",toolCallId:U.toolCallId,toolName:N,input:U.state==="output-error"?($=U.input)!=null?$:("rawInput"in U)?U.rawInput:void 0:U.input,providerExecuted:U.providerExecuted,...U.callProviderMetadata!=null?{providerOptions:U.callProviderMetadata}:{}}),U.approval!=null)V.push({type:"tool-approval-request",approvalId:U.approval.id,toolCallId:U.toolCallId});if(U.providerExecuted===!0&&U.state!=="approval-responded"&&(U.state==="output-available"||U.state==="output-error"))V.push({type:"tool-result",toolCallId:U.toolCallId,toolName:N,output:await GN({toolCallId:U.toolCallId,input:U.input,output:U.state==="output-error"?U.errorText:U.output,tool:(K=J==null?void 0:J.tools)==null?void 0:K[N],errorMode:U.state==="output-error"?"json":"none"}),...U.callProviderMetadata!=null?{providerOptions:U.callProviderMetadata}:{}})}}else if(LY0(U)){let N=(Z=J==null?void 0:J.convertDataPart)==null?void 0:Z.call(J,U);if(N!=null)V.push(N)}else throw Error(`Unsupported part: ${U}`);X.push({role:"assistant",content:V});let z=Y.filter((U)=>{var N;return fM(U)&&(U.providerExecuted!==!0||((N=U.approval)==null?void 0:N.approved)!=null)});if(z.length>0){let U=[];for(let N of z){if(((H=N.approval)==null?void 0:H.approved)!=null)U.push({type:"tool-approval-response",approvalId:N.approval.id,approved:N.approval.approved,reason:N.approval.reason,providerExecuted:N.providerExecuted});if(N.providerExecuted===!0)continue;switch(N.state){case"output-denied":{U.push({type:"tool-result",toolCallId:N.toolCallId,toolName:MY0(N),output:{type:"error-text",value:(q=N.approval.reason)!=null?q:"Tool execution denied."},...N.callProviderMetadata!=null?{providerOptions:N.callProviderMetadata}:{}});break}case"output-error":case"output-available":{let D=MY0(N);U.push({type:"tool-result",toolCallId:N.toolCallId,toolName:D,output:await GN({toolCallId:N.toolCallId,input:N.input,output:N.state==="output-error"?N.errorText:N.output,tool:(F=J==null?void 0:J.tools)==null?void 0:F[D],errorMode:N.state==="output-error"?"text":"none"}),...N.callProviderMetadata!=null?{providerOptions:N.callProviderMetadata}:{}});break}}}if(U.length>0)X.push({role:"tool",content:U})}Y=[]}for(let $ of G.parts)if(wY0($)||yK1($)||PY0($)||fM($)||LY0($))Y.push($);else if($.type==="step-start")await W();await W();break}break}default:{let Y=G.role;throw new Eh4({originalMessage:G,message:`Unsupported role: ${Y}`})}}return X}var Al6=PQ(()=>m5(I.array(I.object({id:I.string(),role:I.enum(["system","user","assistant"]),metadata:I.unknown().optional(),parts:I.array(I.union([I.object({type:I.literal("text"),text:I.string(),state:I.enum(["streaming","done"]).optional(),providerMetadata:t1.optional()}),I.object({type:I.literal("reasoning"),text:I.string(),state:I.enum(["streaming","done"]).optional(),providerMetadata:t1.optional()}),I.object({type:I.literal("source-url"),sourceId:I.string(),url:I.string(),title:I.string().optional(),providerMetadata:t1.optional()}),I.object({type:I.literal("source-document"),sourceId:I.string(),mediaType:I.string(),title:I.string(),filename:I.string().optional(),providerMetadata:t1.optional()}),I.object({type:I.literal("file"),mediaType:I.string(),filename:I.string().optional(),url:I.string(),providerMetadata:t1.optional()}),I.object({type:I.literal("step-start")}),I.object({type:I.string().startsWith("data-"),id:I.string().optional(),data:I.unknown()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("input-streaming"),input:I.unknown().optional(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),approval:I.never().optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("input-available"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.never().optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("approval-requested"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.never().optional(),reason:I.never().optional()})}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("approval-responded"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.boolean(),reason:I.string().optional()})}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-available"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.unknown(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),preliminary:I.boolean().optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-error"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.string(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.literal("dynamic-tool"),toolName:I.string(),toolCallId:I.string(),state:I.literal("output-denied"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.literal(!1),reason:I.string().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("input-streaming"),providerExecuted:I.boolean().optional(),input:I.unknown().optional(),output:I.never().optional(),errorText:I.never().optional(),approval:I.never().optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("input-available"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.never().optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("approval-requested"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.never().optional(),reason:I.never().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("approval-responded"),input:I.unknown(),providerExecuted:I.boolean().optional(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.boolean(),reason:I.string().optional()})}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-available"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.unknown(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),preliminary:I.boolean().optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-error"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.string(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.literal(!0),reason:I.string().optional()}).optional()}),I.object({type:I.string().startsWith("tool-"),toolCallId:I.string(),state:I.literal("output-denied"),providerExecuted:I.boolean().optional(),input:I.unknown(),output:I.never().optional(),errorText:I.never().optional(),callProviderMetadata:t1.optional(),approval:I.object({id:I.string(),approved:I.literal(!1),reason:I.string().optional()})})])).nonempty("Message must contain at least one part")})).nonempty("Messages array must not be empty")));var jl6=gW({prefix:"aiobj",size:24});var Cl6=gW({prefix:"aiobj",size:24});function fZ1({messages:Q,reasoning:J="none",toolCalls:X=[],emptyMessages:G="remove"}){if(J==="all"||J==="before-last-message")Q=Q.map((Y,W)=>{if(Y.role!=="assistant"||typeof Y.content==="string"||J==="before-last-message"&&W===Q.length-1)return Y;return{...Y,content:Y.content.filter(($)=>$.type!=="reasoning")}});if(X==="none")X=[];else if(X==="all")X=[{type:"all"}];else if(X==="before-last-message")X=[{type:"before-last-message"}];else if(typeof X==="string")X=[{type:X}];for(let Y of X){let W=Y.type==="all"?void 0:Y.type==="before-last-message"?1:Number(Y.type.slice(12).slice(0,-9)),$=new Set,K=new Set;if(W!=null){for(let Z of Q.slice(-W))if((Z.role==="assistant"||Z.role==="tool")&&typeof Z.content!=="string"){for(let H of Z.content)if(H.type==="tool-call"||H.type==="tool-result")$.add(H.toolCallId);else if(H.type==="tool-approval-request"||H.type==="tool-approval-response")K.add(H.approvalId)}}Q=Q.map((Z,H)=>{if(Z.role!=="assistant"&&Z.role!=="tool"||typeof Z.content==="string"||W&&H>=Q.length-W)return Z;let q={},F={};return{...Z,content:Z.content.filter((V)=>{if(V.type!=="tool-call"&&V.type!=="tool-result"&&V.type!=="tool-approval-request"&&V.type!=="tool-approval-response")return!0;if(V.type==="tool-call")q[V.toolCallId]=V.toolName;else if(V.type==="tool-approval-request")F[V.approvalId]=q[V.toolCallId];if((V.type==="tool-call"||V.type==="tool-result")&&$.has(V.toolCallId)||(V.type==="tool-approval-request"||V.type==="tool-approval-response")&&K.has(V.approvalId))return!0;return Y.tools!=null&&!Y.tools.includes(V.type==="tool-call"||V.type==="tool-result"?V.toolName:F[V.approvalId])})}})}if(G==="remove")Q=Q.filter((Y)=>Y.content.length>0);return Q}var if4="AI_NoSuchProviderError",rf4=`vercel.ai.error.${if4}`,af4=Symbol.for(rf4),of4;of4=af4;M4();function sf4(Q){if(!Q.body)throw Error("Response body is null");let J="";return Q.body.pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform(X,G){J+=X;let Y=J.split(`
1130
- `);J=Y.pop()??"";for(let W of Y)if(W.trim())try{let $=JSON.parse(W);G.enqueue($)}catch($){throw console.error("Failed to parse stream chunk:",$),$}},flush(X){if(J.trim())try{let G=JSON.parse(J);X.enqueue(G)}catch(G){throw console.error("Failed to parse final stream chunk:",G),G}}}))}var tf4=(Q)=>{return Object.fromEntries(Object.entries(Q).map(([J,X])=>[J,X.map((G)=>new RegExp(G))]))},bZ1=(Q)=>{return{imageModel:()=>{throw Error("Image models are not supported by this provider")},textEmbeddingModel:()=>{throw Error("Text embedding models are not supported by this provider")},listModels:async()=>{return await Q.COLLECTION_LLM_LIST({})},languageModel:(J)=>{let X=XG(()=>Q.LLM_METADATA({modelId:J}).then((G)=>tf4(G.supportedUrls)));return{specificationVersion:"v2",provider:"llm-binding",modelId:J,supportedUrls:X,doGenerate:async(G)=>{let Y=await Q.LLM_DO_GENERATE({callOptions:G,modelId:J});return{...Y,usage:{inputTokens:Y.usage.inputTokens??void 0,outputTokens:Y.usage.outputTokens??void 0,totalTokens:Y.usage.totalTokens??void 0,reasoningTokens:Y.usage.reasoningTokens??void 0}}},doStream:async(G)=>{let Y=await Q.LLM_DO_STREAM({callOptions:G,modelId:J});return{stream:sf4(Y),response:{headers:Object.fromEntries(Y.headers?.entries()??[])}}}}}}};var ef4=4096,Qb4=50,Jb4=L.object({messages:L.any(),model:L.object({id:L.string(),connectionId:L.string(),provider:L.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable()}).passthrough().optional(),gateway:L.object({id:L.string()}).passthrough().optional(),stream:L.boolean().optional(),temperature:L.number().optional(),maxOutputTokens:L.number().optional(),maxWindowSize:L.number().optional(),thread_id:L.string().optional()}),xZ1=new i5;function Xb4(Q,J){if(!Q.organization)throw Error("Organization context is required");if(Q.organization.slug!==J)throw Error("Organization slug mismatch");return Q.organization}async function Yb4(Q,J,X){let G=await Q.storage.connections.findById(X);if(!G)return null;if(G.organization_id!==J)throw Error("Connection does not belong to organization");if(G.status!=="active")throw Error(`Connection is ${G.status.toUpperCase()}, not active`);return G}function Gb4(Q,J){let X=L_(new URL(Q.url)),G=`${X.protocol}//${X.host}`,Y=new Headers,W=["cookie","authorization"];for(let $ of W)if(Q.headers.has($))Y.set($,Q.headers.get($));return new MW(new URL(`/mcp/gateway/${J}`,G),{requestInit:{headers:Y}})}xZ1.post("/:org/models/stream",async(Q)=>{let J=Q.get("meshContext"),X=Q.req.param("org"),G=null;try{let Y=Xb4(J,X),W=await Q.req.json(),$=Jb4.safeParse(W);if(!$.success)return Q.json({error:"Invalid request body",details:$.error.issues},400);let K=$.data;if(!K.model)return Q.json({error:"model is required"},400);let{model:Z,gateway:H,messages:q,temperature:F,maxOutputTokens:V=ef4,maxWindowSize:z=Qb4,thread_id:U}=K;if(!H?.id)return Q.json({error:"gateway is required"},400);let N=Gb4(Q.req.raw,H.id),[D,w,A]=await Promise.all([hZ1(q,{ignoreIncompleteToolCalls:!0}),Yb4(J,Y.id,Z.connectionId),T$1({transport:N})]);if(!w)return Q.json({error:`Model connection not found: ${Z.connectionId}`},404);let P=fZ1({messages:D,reasoning:"before-last-message",emptyMessages:"remove",toolCalls:"none"}).slice(-z),[M,T]=await Promise.all([J.createMCPProxy(w),A.tools({schemas:"automatic"})]);G=A;let E=IX1.forClient(M),R=bZ1(E).languageModel(Z.id);return yZ1({model:R,messages:P,tools:T,temperature:F,maxOutputTokens:V,abortSignal:Q.req.raw.signal,stopWhen:kY0(30),onError:async(_)=>{console.error("[models:stream] Error",_),await G?.close().catch(console.error)},onFinish:async()=>{await G?.close().catch(console.error)}}).toUIMessageStreamResponse({messageMetadata:({part:_})=>{if(_.type==="start")return{gateway:H,model:Z,created_at:new Date,thread_id:U};return{}}})}catch(Y){let W=Y;if(await G?.close().catch(console.error),W.name==="AbortError")return console.warn("[models:stream] Aborted",JSON.stringify({org:X})),Q.json({error:"Request aborted"},400);return console.error("[models:stream] Failed",JSON.stringify({org:X,error:W.message,stack:W.stack})),Q.json({error:W.message},500)}});var gZ1=xZ1;var ny=null,Wb4=new uZ1.PrometheusSerializer,$b4=()=>E00(RW),Kb4=()=>A00(RW);function mZ1(Q={}){let J=Q.database??Pv();if(ny&&ny.isRunning())console.log("[EventBus] Stopping previous worker (HMR cleanup)"),Promise.resolve(ny.stop()).catch(($)=>{console.error("[EventBus] Error stopping previous worker:",$)});let X;if(Q.eventBus)X=Q.eventBus;else X=W71(J);ny=X;let G=new i5;G.use("/*",Fx0({origin:($)=>{if($.includes("localhost")||$.includes("127.0.0.1"))return $;return $},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]})),G.use("*",Ux0()),G.get(fP.HEALTH,($)=>{return $.json({status:"ok",timestamp:new Date().toISOString(),version:"1.0.0"})}),G.get(fP.METRICS,async($)=>{try{let K=await Wl.collect(),Z=Wb4.serialize(K.resourceMetrics);return $.text(Z,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K){return console.error("Failed to collect metrics:",K),$.text("# Error collecting metrics",500)}}),G.route("/api/auth/custom",Z71),G.all("/api/auth/*",async($)=>{return await RW.handler($.req.raw)}),G.route("/",fY1),G.all("/oauth-proxy/:connectionId/*",async($)=>{let K=$.req.param("connectionId"),Z=$.req.path.split("/").filter(Boolean),H=Z[Z.length-1],q=$.get("meshContext");if(!q)q=await JZ.create($.req.raw),$.set("meshContext",q);let F=await q.storage.connections.findById(K);if(!F?.connection_url)return $.json({error:"Connection not found"},404);let V=await D_(F.connection_url);if(!V.ok)return $.json({error:"Failed to get resource metadata"},502);let U=(await V.json()).authorization_servers?.[0];if(!U)return $.json({error:"No authorization server found"},404);let N=await L90(U);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let D=await N.json(),w;if(H==="authorize")w=D.authorization_endpoint;else if(H==="token")w=D.token_endpoint;else if(H==="register")w=D.registration_endpoint;if(!w)return $.json({error:`Unknown OAuth endpoint: ${H}`},404);let A=new URL(w),P=new URL($.req.url);if(A.search=P.search,H==="authorize")return $.redirect(A.toString(),302);let M={Accept:$.req.header("Accept")||"application/json"},T=$.req.header("Content-Type");if(T)M["Content-Type"]=T;let E=$.req.header("Authorization");if(E)M.Authorization=E;let R=await fetch(A.toString(),{method:$.req.method,headers:M,body:$.req.method!=="GET"&&$.req.method!=="HEAD"?$.req.raw.body:void 0,duplex:"half",redirect:"manual"}),k=new Headers,_=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,f]of R.headers.entries())if(!_.includes(y.toLowerCase()))k.set(y,f);return new Response(R.body,{status:R.status,statusText:R.statusText,headers:k})}),G.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",async($)=>{let Z=await $b4()($.req.raw),H=await Z.json();return Response.json(H,Z)});let Y=async($)=>{let Z=await Kb4()($.req.raw),H=await Z.json();return Response.json(H,Z)};G.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",Y),JZ.set(nY1({db:J.db,auth:RW,encryption:{key:process.env.ENCRYPTION_KEY||""},observability:{tracer:QO,meter:db0},eventBus:X})),Promise.resolve(X.start()).then(()=>{console.log("[EventBus] Worker started")}),G.use("*",async($,K)=>{if(aY1($.req.path))return K();let Z=await JZ.create($.req.raw);return $.set("meshContext",Z),K()}),G.get("/api/tools/management",($)=>{return $.json({tools:Bl,grouped:WO()})});let W=async($,K)=>{let Z=$.var.meshContext;if(!Z.auth.user?.id&&!Z.auth.apiKey?.id){let H=new URL($.req.url);return $.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${H.origin}${H.pathname}/.well-known/oauth-protected-resource"`}})}return await K()};return G.use("/mcp/:connectionId?",W),G.use("/mcp/gateway/:gatewayId?",W),G.route("/mcp",V71),G.route("/mcp",U71),G.route("/mcp",pY1),G.route("/api",gZ1),G.notFound(($)=>{return $.json({error:"Not Found",path:$.req.path},404)}),G.onError(($,K)=>{console.error("Server error :",$);let Z=$ instanceof Error?$.message:"Unknown error";return K.json({error:"Internal Server Error",message:Z},500)}),G}var lZ1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],Zb4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/,Hb4=(Q,J)=>{if(!Q)return{};let X=new Headers(Q.headers);if(J){let G=X.get("connection");if(G){let Y=G.split(",").map(($)=>$.trim()),W=Y.filter(($)=>!Zb4.test($));if(W.length>0)throw new Kl(400,{message:`Invalid Connection header value: ${W.join(", ")}`});Y.forEach(($)=>{X.delete($)})}}return lZ1.forEach((G)=>{X.delete(G)}),{method:Q.method,body:Q.body,duplex:Q.body?"half":void 0,headers:X,signal:Q.signal}},qb4=(Q)=>{if(!Q.headers||Array.isArray(Q.headers)||Q.headers instanceof Headers)return Q;let J=new Headers;for(let[X,G]of Object.entries(Q.headers))if(G==null)J.delete(X);else J.set(X,G);return Q.headers=J,Q},dZ1=async(Q,J)=>{let{raw:X,customFetch:G,strictConnectionProcessing:Y=!1,...W}=J instanceof Request?{raw:J}:J??{},$=new Request(Q,{...Hb4(X,Y),...qb4(W)});$.headers.delete("accept-encoding");let K=await(G||fetch)($),Z=new Headers(K.headers);if(lZ1.forEach((H)=>{Z.delete(H)}),Z.has("content-encoding"))Z.delete("content-encoding"),Z.delete("content-length");return new Response(K.body,{status:K.status,statusText:K.statusText,headers:Z})};var pZ1=(Q)=>(J)=>{let X=new URL(J.req.raw.url),G=new URL(Q);return G.pathname=X.pathname,G.search=X.search,dZ1(G,{raw:J.req.raw,headers:{...J.req.raw.headers}})};import{resolve as gM,dirname as Fb4}from"path";var Vb4="http://localhost:4000",zb4="./dist/client";function Ub4(Q,J){let X=gM(J),G=gM(Q);return G===X||G.startsWith(X+"/")}function Nb4({requestPath:Q,clientDir:J}){let X=Q.startsWith("/")?Q.slice(1):Q,G=gM(J,X);if(!Ub4(G,J))return null;return G}function cZ1(Q,J="../client"){let X=new URL(Q),G=Fb4(X.pathname);return gM(G,J)}function nZ1(Q={}){let{env:J="production",devServerUrl:X=Vb4,clientDir:G=zb4,isServerPath:Y=()=>!1}=Q;if(J==="development"){let W=pZ1(X);return async function(K){let Z=new URL(K.url);if(Y(Z.pathname))return null;let H={req:{raw:K,url:K.url}};return W(H)}}return async function($){if($.method!=="GET")return null;let K=new URL($.url),Z;try{Z=decodeURIComponent(K.pathname)}catch{return null}if(Y(Z))return null;let H=Nb4({requestPath:Z,clientDir:G});if(!H)return null;let q=gM(G,"index.html");for(let F of[H,q])try{let V=Bun.file(F);if(await V.exists())return new Response(V)}catch{}return null}}var iZ1=parseInt(process.env.PORT||"3000",10),iy="\x1B[0m",Bb4="\x1B[1m",Ob4="\x1B[2m",Db4="\x1B[32m",Lb4="\x1B[36m",wb4="\x1B[4m",Pb4=`http://localhost:${iZ1}`,Mb4=nZ1({clientDir:cZ1(import.meta.url,"../client"),isServerPath:rY1}),Tb4=mZ1();console.log("");console.log(`${Db4}\u2713${iy} ${Bb4}Ready${iy}`);console.log("");console.log(` ${Ob4}Open in browser:${iy} ${Lb4}${wb4}${Pb4}${iy}`);console.log("");Bun.serve({idleTimeout:0,port:iZ1,hostname:"0.0.0.0",fetch:async(Q)=>{return await Mb4(Q)??Tb4.fetch(Q)},development:!1});
1130
+ `);J=Y.pop()??"";for(let W of Y)if(W.trim())try{let $=JSON.parse(W);G.enqueue($)}catch($){throw console.error("Failed to parse stream chunk:",$),$}},flush(X){if(J.trim())try{let G=JSON.parse(J);X.enqueue(G)}catch(G){throw console.error("Failed to parse final stream chunk:",G),G}}}))}var tf4=(Q)=>{return Object.fromEntries(Object.entries(Q).map(([J,X])=>[J,X.map((G)=>new RegExp(G))]))},bZ1=(Q)=>{return{imageModel:()=>{throw Error("Image models are not supported by this provider")},textEmbeddingModel:()=>{throw Error("Text embedding models are not supported by this provider")},listModels:async()=>{return await Q.COLLECTION_LLM_LIST({})},languageModel:(J)=>{let X=XG(()=>Q.LLM_METADATA({modelId:J}).then((G)=>tf4(G.supportedUrls)));return{specificationVersion:"v2",provider:"llm-binding",modelId:J,supportedUrls:X,doGenerate:async(G)=>{let Y=await Q.LLM_DO_GENERATE({callOptions:G,modelId:J});return{...Y,usage:{inputTokens:Y.usage.inputTokens??void 0,outputTokens:Y.usage.outputTokens??void 0,totalTokens:Y.usage.totalTokens??void 0,reasoningTokens:Y.usage.reasoningTokens??void 0}}},doStream:async(G)=>{let Y=await Q.LLM_DO_STREAM({callOptions:G,modelId:J});return{stream:sf4(Y),response:{headers:Object.fromEntries(Y.headers?.entries()??[])}}}}}}};var ef4=32768,Qb4=50,Jb4=L.object({messages:L.any(),model:L.object({id:L.string(),connectionId:L.string(),provider:L.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable()}).passthrough().optional(),gateway:L.object({id:L.string()}).passthrough().optional(),stream:L.boolean().optional(),temperature:L.number().optional(),maxOutputTokens:L.number().optional(),maxWindowSize:L.number().optional(),thread_id:L.string().optional()}),xZ1=new i5;function Xb4(Q,J){if(!Q.organization)throw Error("Organization context is required");if(Q.organization.slug!==J)throw Error("Organization slug mismatch");return Q.organization}async function Yb4(Q,J,X){let G=await Q.storage.connections.findById(X);if(!G)return null;if(G.organization_id!==J)throw Error("Connection does not belong to organization");if(G.status!=="active")throw Error(`Connection is ${G.status.toUpperCase()}, not active`);return G}function Gb4(Q,J){let X=L_(new URL(Q.url)),G=`${X.protocol}//${X.host}`,Y=new Headers,W=["cookie","authorization"];for(let $ of W)if(Q.headers.has($))Y.set($,Q.headers.get($));return new MW(new URL(`/mcp/gateway/${J}`,G),{requestInit:{headers:Y}})}xZ1.post("/:org/models/stream",async(Q)=>{let J=Q.get("meshContext"),X=Q.req.param("org"),G=null;try{let Y=Xb4(J,X),W=await Q.req.json(),$=Jb4.safeParse(W);if(!$.success)return Q.json({error:"Invalid request body",details:$.error.issues},400);let K=$.data;if(!K.model)return Q.json({error:"model is required"},400);let{model:Z,gateway:H,messages:q,temperature:F,maxOutputTokens:V=ef4,maxWindowSize:z=Qb4,thread_id:U}=K;if(!H?.id)return Q.json({error:"gateway is required"},400);let N=Gb4(Q.req.raw,H.id),[D,w,A]=await Promise.all([hZ1(q,{ignoreIncompleteToolCalls:!0}),Yb4(J,Y.id,Z.connectionId),T$1({transport:N})]);if(!w)return Q.json({error:`Model connection not found: ${Z.connectionId}`},404);let P=fZ1({messages:D,reasoning:"before-last-message",emptyMessages:"remove",toolCalls:"none"}).slice(-z),[M,T]=await Promise.all([J.createMCPProxy(w),A.tools({schemas:"automatic"})]);G=A;let E=IX1.forClient(M),R=bZ1(E).languageModel(Z.id);return yZ1({model:R,messages:P,tools:T,temperature:F,maxOutputTokens:V,abortSignal:Q.req.raw.signal,stopWhen:kY0(30),onError:async(_)=>{console.error("[models:stream] Error",_),await G?.close().catch(console.error)},onFinish:async()=>{await G?.close().catch(console.error)}}).toUIMessageStreamResponse({messageMetadata:({part:_})=>{if(_.type==="start")return{gateway:H,model:Z,created_at:new Date,thread_id:U};return{}}})}catch(Y){let W=Y;if(await G?.close().catch(console.error),W.name==="AbortError")return console.warn("[models:stream] Aborted",JSON.stringify({org:X})),Q.json({error:"Request aborted"},400);return console.error("[models:stream] Failed",JSON.stringify({org:X,error:W.message,stack:W.stack})),Q.json({error:W.message},500)}});var gZ1=xZ1;var ny=null,Wb4=new uZ1.PrometheusSerializer,$b4=()=>E00(RW),Kb4=()=>A00(RW);function mZ1(Q={}){let J=Q.database??Pv();if(ny&&ny.isRunning())console.log("[EventBus] Stopping previous worker (HMR cleanup)"),Promise.resolve(ny.stop()).catch(($)=>{console.error("[EventBus] Error stopping previous worker:",$)});let X;if(Q.eventBus)X=Q.eventBus;else X=W71(J);ny=X;let G=new i5;G.use("/*",Fx0({origin:($)=>{if($.includes("localhost")||$.includes("127.0.0.1"))return $;return $},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]})),G.use("*",Ux0()),G.get(fP.HEALTH,($)=>{return $.json({status:"ok",timestamp:new Date().toISOString(),version:"1.0.0"})}),G.get(fP.METRICS,async($)=>{try{let K=await Wl.collect(),Z=Wb4.serialize(K.resourceMetrics);return $.text(Z,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K){return console.error("Failed to collect metrics:",K),$.text("# Error collecting metrics",500)}}),G.route("/api/auth/custom",Z71),G.all("/api/auth/*",async($)=>{return await RW.handler($.req.raw)}),G.route("/",fY1),G.all("/oauth-proxy/:connectionId/*",async($)=>{let K=$.req.param("connectionId"),Z=$.req.path.split("/").filter(Boolean),H=Z[Z.length-1],q=$.get("meshContext");if(!q)q=await JZ.create($.req.raw),$.set("meshContext",q);let F=await q.storage.connections.findById(K);if(!F?.connection_url)return $.json({error:"Connection not found"},404);let V=await D_(F.connection_url);if(!V.ok)return $.json({error:"Failed to get resource metadata"},502);let U=(await V.json()).authorization_servers?.[0];if(!U)return $.json({error:"No authorization server found"},404);let N=await L90(U);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let D=await N.json(),w;if(H==="authorize")w=D.authorization_endpoint;else if(H==="token")w=D.token_endpoint;else if(H==="register")w=D.registration_endpoint;if(!w)return $.json({error:`Unknown OAuth endpoint: ${H}`},404);let A=new URL(w),P=new URL($.req.url);if(A.search=P.search,H==="authorize")return $.redirect(A.toString(),302);let M={Accept:$.req.header("Accept")||"application/json"},T=$.req.header("Content-Type");if(T)M["Content-Type"]=T;let E=$.req.header("Authorization");if(E)M.Authorization=E;let R=await fetch(A.toString(),{method:$.req.method,headers:M,body:$.req.method!=="GET"&&$.req.method!=="HEAD"?$.req.raw.body:void 0,duplex:"half",redirect:"manual"}),k=new Headers,_=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,f]of R.headers.entries())if(!_.includes(y.toLowerCase()))k.set(y,f);return new Response(R.body,{status:R.status,statusText:R.statusText,headers:k})}),G.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",async($)=>{let Z=await $b4()($.req.raw),H=await Z.json();return Response.json(H,Z)});let Y=async($)=>{let Z=await Kb4()($.req.raw),H=await Z.json();return Response.json(H,Z)};G.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",Y),JZ.set(nY1({db:J.db,auth:RW,encryption:{key:process.env.ENCRYPTION_KEY||""},observability:{tracer:QO,meter:db0},eventBus:X})),Promise.resolve(X.start()).then(()=>{console.log("[EventBus] Worker started")}),G.use("*",async($,K)=>{if(aY1($.req.path))return K();let Z=await JZ.create($.req.raw);return $.set("meshContext",Z),K()}),G.get("/api/tools/management",($)=>{return $.json({tools:Bl,grouped:WO()})});let W=async($,K)=>{let Z=$.var.meshContext;if(!Z.auth.user?.id&&!Z.auth.apiKey?.id){let H=new URL($.req.url);return $.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${H.origin}${H.pathname}/.well-known/oauth-protected-resource"`}})}return await K()};return G.use("/mcp/:connectionId?",W),G.use("/mcp/gateway/:gatewayId?",W),G.route("/mcp",V71),G.route("/mcp",U71),G.route("/mcp",pY1),G.route("/api",gZ1),G.notFound(($)=>{return $.json({error:"Not Found",path:$.req.path},404)}),G.onError(($,K)=>{console.error("Server error :",$);let Z=$ instanceof Error?$.message:"Unknown error";return K.json({error:"Internal Server Error",message:Z},500)}),G}var lZ1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],Zb4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/,Hb4=(Q,J)=>{if(!Q)return{};let X=new Headers(Q.headers);if(J){let G=X.get("connection");if(G){let Y=G.split(",").map(($)=>$.trim()),W=Y.filter(($)=>!Zb4.test($));if(W.length>0)throw new Kl(400,{message:`Invalid Connection header value: ${W.join(", ")}`});Y.forEach(($)=>{X.delete($)})}}return lZ1.forEach((G)=>{X.delete(G)}),{method:Q.method,body:Q.body,duplex:Q.body?"half":void 0,headers:X,signal:Q.signal}},qb4=(Q)=>{if(!Q.headers||Array.isArray(Q.headers)||Q.headers instanceof Headers)return Q;let J=new Headers;for(let[X,G]of Object.entries(Q.headers))if(G==null)J.delete(X);else J.set(X,G);return Q.headers=J,Q},dZ1=async(Q,J)=>{let{raw:X,customFetch:G,strictConnectionProcessing:Y=!1,...W}=J instanceof Request?{raw:J}:J??{},$=new Request(Q,{...Hb4(X,Y),...qb4(W)});$.headers.delete("accept-encoding");let K=await(G||fetch)($),Z=new Headers(K.headers);if(lZ1.forEach((H)=>{Z.delete(H)}),Z.has("content-encoding"))Z.delete("content-encoding"),Z.delete("content-length");return new Response(K.body,{status:K.status,statusText:K.statusText,headers:Z})};var pZ1=(Q)=>(J)=>{let X=new URL(J.req.raw.url),G=new URL(Q);return G.pathname=X.pathname,G.search=X.search,dZ1(G,{raw:J.req.raw,headers:{...J.req.raw.headers}})};import{resolve as gM,dirname as Fb4}from"path";var Vb4="http://localhost:4000",zb4="./dist/client";function Ub4(Q,J){let X=gM(J),G=gM(Q);return G===X||G.startsWith(X+"/")}function Nb4({requestPath:Q,clientDir:J}){let X=Q.startsWith("/")?Q.slice(1):Q,G=gM(J,X);if(!Ub4(G,J))return null;return G}function cZ1(Q,J="../client"){let X=new URL(Q),G=Fb4(X.pathname);return gM(G,J)}function nZ1(Q={}){let{env:J="production",devServerUrl:X=Vb4,clientDir:G=zb4,isServerPath:Y=()=>!1}=Q;if(J==="development"){let W=pZ1(X);return async function(K){let Z=new URL(K.url);if(Y(Z.pathname))return null;let H={req:{raw:K,url:K.url}};return W(H)}}return async function($){if($.method!=="GET")return null;let K=new URL($.url),Z;try{Z=decodeURIComponent(K.pathname)}catch{return null}if(Y(Z))return null;let H=Nb4({requestPath:Z,clientDir:G});if(!H)return null;let q=gM(G,"index.html");for(let F of[H,q])try{let V=Bun.file(F);if(await V.exists())return new Response(V)}catch{}return null}}var iZ1=parseInt(process.env.PORT||"3000",10),iy="\x1B[0m",Bb4="\x1B[1m",Ob4="\x1B[2m",Db4="\x1B[32m",Lb4="\x1B[36m",wb4="\x1B[4m",Pb4=`http://localhost:${iZ1}`,Mb4=nZ1({clientDir:cZ1(import.meta.url,"../client"),isServerPath:rY1}),Tb4=mZ1();console.log("");console.log(`${Db4}\u2713${iy} ${Bb4}Ready${iy}`);console.log("");console.log(` ${Ob4}Open in browser:${iy} ${Lb4}${wb4}${Pb4}${iy}`);console.log("");Bun.serve({idleTimeout:0,port:iZ1,hostname:"0.0.0.0",fetch:async(Q)=>{return await Mb4(Q)??Tb4.fetch(Q)},development:!1});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decocms/mesh",
3
- "version": "1.0.0-alpha.30",
3
+ "version": "1.0.0-alpha.31",
4
4
  "description": "MCP Mesh - Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "license": "MIT",
6
6
  "author": "Deco team",