@decocms/mesh 1.0.0-alpha.25 → 1.0.0-alpha.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
package/dist/server/server.js
CHANGED
|
@@ -1065,7 +1065,7 @@ Please refer to the documentation here: https://better-auth.com/docs/plugins/org
|
|
|
1065
1065
|
<h2>You've been invited!</h2>
|
|
1066
1066
|
<p>${G} has invited you to join <strong>${X.organization.name}</strong>.</p>
|
|
1067
1067
|
<p><a href="${Y}">Click here to accept the invitation</a></p>
|
|
1068
|
-
`})}}}var LI4=[Z00({organizationCreation:{afterCreate:async(Q)=>{await LY1(Q.organization.id,Q.member.userId)}},ac:B_,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:wY1,resourceNameValidation:(Q)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test(Q)}}},roles:{user:BI4,admin:OI4,owner:DI4},sendInvitationEmail:EY1}),T00({loginPage:"/login",oidcConfig:{scopes:AY1,metadata:{scopes_supported:AY1},loginPage:"/login"}}),M00({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:(Q)=>{if(Q.headers?.get("X-MCP-Session-Auth")==="true")return null;let X=Q.headers?.get("Authorization");if(X?.startsWith("Bearer "))return X.replace("Bearer ","").trim();return null},permissions:{defaultPermissions:{self:["ORGANIZATION_LIST","ORGANIZATION_GET","ORGANIZATION_MEMBER_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","API_KEY_CREATE","API_KEY_LIST"]}}}),F00({defaultRole:"user",adminRoles:["admin","owner"]}),I00(),U00({jwt:{expirationTime:"5m"}}),rt0(Z9.ssoConfig?PY1(Z9.ssoConfig):void 0),...Z9.magicLinkConfig&&Z9.emailProviders&&Z9.emailProviders.length>0?[j00(H61(Z9.magicLinkConfig,Z9.emailProviders))]:[]],wI4=q10(),PI4=Z61(wI4),RW=Le({baseURL:process.env.BASE_URL||"http://localhost:3000",database:PI4,emailAndPassword:{enabled:!0},...Z9,plugins:LI4,databaseHooks:{user:{create:{after:async(Q)=>{if(Hv.autoCreateOrganizationOnSignup===!1)return;let J=Q.name?Q.name.split(" ")[0]:Q.email.split("@")[0],X=3;for(let G=0;G<X;G++){let Y=`${J} ${zI4()}`,W=VI4(Y);try{await RW.api.createOrganization({body:{name:Y,slug:W,userId:Q.id}});return}catch($){if(!($ instanceof Error&&("body"in $)&&$.body?.code==="ORGANIZATION_ALREADY_EXISTS")||G===X-1){console.error("Failed to create default organization:",$);return}}}}}}}});PJ();import{randomBytes as MI4}from"crypto";var yP=null;function jY1(){if(yP)return yP;let Q=process.env.MESH_JWT_SECRET??Z9.jwt?.secret;if(Q)yP=new TextEncoder().encode(Q);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),yP=new Uint8Array(MI4(32));return yP}async function IY1(Q,J="5m"){let X=jY1();return await new mQ(Q).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(J).sign(X)}async function CY1(Q){try{let J=jY1(),{payload:X}=await B8(Q,J);return X}catch{return}}class N90{db;constructor(Q){this.db=Q}async get(Q){let J=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Q).executeTakeFirst();if(!J)return null;return{organizationId:J.organizationId,sidebar_items:J.sidebar_items?typeof J.sidebar_items==="string"?JSON.parse(J.sidebar_items):J.sidebar_items:null,createdAt:J.createdAt,updatedAt:J.updatedAt}}async upsert(Q,J){let X=new Date().toISOString(),G=J?.sidebar_items?JSON.stringify(J.sidebar_items):null;await this.db.insertInto("organization_settings").values({organizationId:Q,sidebar_items:G,createdAt:X,updatedAt:X}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:G?G:void 0,updatedAt:X})).execute();let Y=await this.get(Q);if(!Y)return{organizationId:Q,sidebar_items:J?.sidebar_items??null,createdAt:X,updatedAt:X};return Y}}gH();class RY1 extends Error{constructor(Q){super(Q);this.name="UnauthorizedError"}}class B90 extends Error{constructor(Q){super(Q);this.name="ForbiddenError"}}class xU{userId;toolName;boundAuth;role;connectionId;_granted=!1;constructor(Q,J,X,G,Y,W=EY.SELF){this.userId=J;this.toolName=X;this.boundAuth=G;this.role=Y;this.connectionId=W}[Symbol.dispose](){this._granted=!1}setToolName(Q){this.toolName=Q}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Q){if(this._granted)return;if(!this.userId&&!this.boundAuth)throw new RY1("Authentication required. Please provide a valid OAuth token or API key.");let J=Q.length>0?Q:this.toolName?[this.toolName]:[];if(J.length===0)throw new B90("No resources specified for access check");for(let X of J)if(await this.checkResource(X)){this.grant();return}throw new B90(`Access denied to: ${J.join(", ")}`)}async checkResource(Q){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let J={};if(this.connectionId)J[this.connectionId]=[Q];return this.boundAuth.hasPermission(J)}granted(){return this._granted}}class O90{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Q){return QO.startActiveSpan("redactor.redact",(J)=>{try{if(Q===null||Q===void 0)return Q;if(typeof Q==="string")return J.setAttribute("data.type","string"),this.redactString(Q);if(Array.isArray(Q))return J.setAttribute("data.type","array"),J.setAttribute("data.length",Q.length),Q.map((X)=>this.redact(X));if(typeof Q==="object"){J.setAttribute("data.type","object");let X={};for(let[G,Y]of Object.entries(Q)){let W=this.redactString(G);X[W]=this.redact(Y)}return X}return J.setAttribute("data.type",typeof Q),Q}finally{J.end()}})}redactString(Q){return QO.startActiveSpan("redactor.redactString",(J)=>{try{J.setAttribute("text.length",Q.length);let X=Q,G=0;for(let Y of this.patterns){let W=Q.match(Y.regex);if(W)G+=W.length,J.setAttribute(`redaction.${Y.type}.count`,W.length);X=X.replace(Y.regex,`[REDACTED:${Y.type}]`)}return J.setAttribute("redaction.total_count",G),X}finally{J.end()}})}}class D90{db;redactor;constructor(Q){this.db=Q;this.redactor=new O90}async log(Q){await this.logBatch([Q])}async logBatch(Q){if(Q.length===0)return;let J=Q.map((X)=>({...X,input:this.redactor.redact(X.input),output:this.redactor.redact(X.output)}));await this.db.transaction().execute(async(X)=>{await X.insertInto("monitoring_logs").values(J.map((G)=>this.toDbRow(G))).execute()})}async query(Q){let J=this.db.selectFrom("monitoring_logs").selectAll(),X=this.db.selectFrom("monitoring_logs").select((K)=>K.fn.count("id").as("count"));if(Q.organizationId)J=J.where("organization_id","=",Q.organizationId),X=X.where("organization_id","=",Q.organizationId);if(Q.connectionId)J=J.where("connection_id","=",Q.connectionId),X=X.where("connection_id","=",Q.connectionId);if(Q.gatewayId)J=J.where("gateway_id","=",Q.gatewayId),X=X.where("gateway_id","=",Q.gatewayId);if(Q.toolName)J=J.where("tool_name","=",Q.toolName),X=X.where("tool_name","=",Q.toolName);if(Q.isError!==void 0)J=J.where("is_error","=",Q.isError?1:0),X=X.where("is_error","=",Q.isError?1:0);if(Q.startDate)J=J.where("timestamp",">=",Q.startDate.toISOString()),X=X.where("timestamp",">=",Q.startDate.toISOString());if(Q.endDate)J=J.where("timestamp","<=",Q.endDate.toISOString()),X=X.where("timestamp","<=",Q.endDate.toISOString());if(J=J.orderBy("timestamp","desc"),Q.limit)J=J.limit(Q.limit);if(Q.offset)J=J.offset(Q.offset);let[G,Y]=await Promise.all([J.execute(),X.executeTakeFirst()]),W=Number(Y?.count||0);return{logs:G.map((K)=>this.fromDbRow(K)),total:W}}async getStats(Q){let J=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q.organizationId);if(Q.startDate)J=J.where("timestamp",">=",Q.startDate.toISOString());if(Q.endDate)J=J.where("timestamp","<=",Q.endDate.toISOString());let X=await J.select([($)=>$.fn.count("id").as("total_count"),($)=>$.fn.sum($.ref("is_error")).as("error_count"),($)=>$.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),G=Number(X?.total_count||0),Y=Number(X?.error_count||0),W=Number(X?.avg_duration||0);return{totalCalls:G,errorRate:G>0?Y/G:0,avgDurationMs:W}}toDbRow(Q){return{id:Q.id||a7("log"),organization_id:Q.organizationId,connection_id:Q.connectionId,connection_title:Q.connectionTitle,tool_name:Q.toolName,input:JSON.stringify(Q.input),output:JSON.stringify(Q.output),is_error:Q.isError?1:0,error_message:Q.errorMessage||null,duration_ms:Q.durationMs,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp,user_id:Q.userId||null,request_id:Q.requestId,user_agent:Q.userAgent||null,gateway_id:Q.gatewayId||null}}fromDbRow(Q){let J=typeof Q.input==="string"?JSON.parse(Q.input):Q.input,X=typeof Q.output==="string"?JSON.parse(Q.output):Q.output,G=typeof Q.timestamp==="string"?new Date(Q.timestamp):Q.timestamp;return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,connectionTitle:Q.connection_title,toolName:Q.tool_name,input:J,output:X,isError:Q.is_error===1,errorMessage:Q.error_message,durationMs:Q.duration_ms,timestamp:G,userId:Q.user_id,requestId:Q.request_id,userAgent:Q.user_agent,gatewayId:Q.gateway_id}}}gH();_80();function SY1(Q){let J=null;return()=>{if(J)return J;return J=Q().catch((X)=>{throw J=null,X}),J}}class vY1{factory;promise=null;constructor(Q){this.factory=Q}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Q,J){return this.getOrCreatePromise().then(Q,J)}catch(Q){return this.getOrCreatePromise().catch(Q)}finally(Q){return this.getOrCreatePromise().finally(Q)}}function XG(Q){return new vY1(Q)}Kk();QP();yk();yJ();W_();var O_=new i5;async function kY1(Q,J){return(await J.storage.connections.findById(Q))?.connection_url??null}async function D_(Q){let X=new URL(Q).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let G=new URL(Q);G.pathname=`${X}/.well-known/oauth-protected-resource`;let Y=await fetch(G.toString(),{method:"GET",headers:{Accept:"application/json"}});if(Y.ok)return Y;if(Y.status!==404&&Y.status!==401)return Y;let W=new URL(Q);if(W.pathname=`/.well-known/oauth-protected-resource${X}`,Y=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),Y.status!==404&&Y.status!==401)return Y;let $=new URL(Q);return $.pathname="/.well-known/oauth-protected-resource",Y=await fetch($.toString(),{method:"GET",headers:{Accept:"application/json"}}),Y}async function TI4(Q,J){let X=await kY1(Q,J);if(!X)return null;try{let G=await D_(X);if(!G.ok)return null;return(await G.json()).authorization_servers?.[0]??null}catch{return null}}async function _Y1(Q){let J=Q.get("meshContext");if(!J)J=await JZ.create(Q.req.raw),Q.set("meshContext",J);return J}async function yY1({error:Q,reqUrl:J,connectionId:X,connectionUrl:G,headers:Y}){if(!(Q.status===401||Q.message?.includes("401")||Q.message?.toLowerCase().includes("unauthorized")))return null;if(await fetch(G,{method:"POST",headers:{...Y,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})}).then((K)=>K.headers.has("WWW-Authenticate")).catch(()=>!1))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${J.origin}/mcp/${X}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}var L_=(Q)=>{if(!(Q.hostname==="localhost"||Q.hostname==="127.0.0.1"))Q.protocol="https:";return Q},hY1=async(Q)=>{let J=Q.req.param("connectionId"),X=await _Y1(Q),G=await kY1(J,X);if(!G)return Q.json({error:"Connection not found"},404);try{let Y=await D_(G);if(!Y.ok)return new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}});let W=await Y.json(),$=L_(new URL(Q.req.url)),K=`${$.origin}/mcp/${J}`,Z=`${$.origin}/oauth-proxy/${J}`,H={...W,resource:K,authorization_servers:[Z]};return new Response(JSON.stringify(H),{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}})}catch(Y){let W=Y;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",W),Q.json({error:"Failed to proxy OAuth metadata",message:W.message},502)}};O_.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Q)=>hY1(Q));O_.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Q)=>hY1(Q));async function L90(Q){let X=new URL(Q).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let G=X!==""&&X!=="/",Y=[];if(G){let $=new URL(Q);$.pathname=`/.well-known/oauth-authorization-server${X}`,Y.push($);let K=new URL(Q);K.pathname=`/.well-known/openid-configuration${X}`,Y.push(K);let Z=new URL(Q);Z.pathname=`${X}/.well-known/openid-configuration`,Y.push(Z)}else{let $=new URL(Q);$.pathname="/.well-known/oauth-authorization-server",Y.push($);let K=new URL(Q);K.pathname="/.well-known/openid-configuration",Y.push(K)}let W=null;for(let $ of Y){if(W=await fetch($.toString(),{method:"GET",headers:{Accept:"application/json"}}),W.ok)return W;if(W.status!==404&&W.status!==401)return W}return W}O_.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Q)=>{let J=Q.req.param("connectionId"),X=await _Y1(Q),G=await TI4(J,X);if(!G)return Q.json({error:"Connection not found or no auth server"},404);try{let Y=await L90(G);if(!Y.ok)return new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}});let W=await Y.json(),K=`${L_(new URL(Q.req.url)).origin}/oauth-proxy/${J}`,Z={...W,authorization_endpoint:W.authorization_endpoint?`${K}/authorize`:void 0,token_endpoint:W.token_endpoint?`${K}/token`:void 0,registration_endpoint:W.registration_endpoint?`${K}/register`:void 0};return new Response(JSON.stringify(Z),{status:200,headers:{"Content-Type":"application/json"}})}catch(Y){let W=Y;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",W),Q.json({error:"Failed to proxy auth server metadata",message:W.message},502)}});var fY1=O_;function AI4(Q){if(!Q.isError)return;let J=Q.content;if(!Array.isArray(J))return;for(let X of J)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function bY1(Q){if(Q&&typeof Q==="object"&&!Array.isArray(Q)){let J=Q,X=J.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return J}return{value:Q}}async function EI4(Q,J){let X=Q.body;if(!X)return{text:"",truncated:!1};let G=X.getReader(),Y=new TextDecoder,W=!1,$=0,K=[];try{while(!0){let{value:Z,done:H}=await G.read();if(H)break;if(Z){if($+=Z.byteLength,$>J){W=!0;let q=J-($-Z.byteLength);if(q>0)K.push(Y.decode(Z.slice(0,q),{stream:!0}));break}K.push(Y.decode(Z,{stream:!0}))}}}finally{G.releaseLock()}return K.push(Y.decode()),{text:K.join(""),truncated:W}}async function hP(Q){let{ctx:J,enabled:X}=Q,G=Q.organizationId??J.organization?.id;if(!X||!G)return;await J.storage.monitoring.log({organizationId:G,connectionId:Q.connectionId,connectionTitle:Q.connectionTitle,toolName:Q.request.params.name,input:Q.request.params.arguments??{},output:Q.output,isError:Q.isError,errorMessage:Q.errorMessage,durationMs:Q.durationMs,timestamp:new Date,userId:J.auth.user?.id||J.auth.apiKey?.userId||null,requestId:J.metadata.requestId,userAgent:J.metadata.userAgent,gatewayId:J.gatewayId})}function xY1(Q){let{ctx:J,enabled:X,connectionId:G,connectionTitle:Y}=Q;return async(W,$)=>{let K=Date.now();try{let Z=await $(),H=Date.now()-K;return await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:bY1(Z),isError:Boolean(Z.isError),errorMessage:AI4(Z),durationMs:H}),Z}catch(Z){let H=Z,q=Date.now()-K;throw await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:H.message,durationMs:q}),Z}}}function gY1(Q){let{ctx:J,enabled:X,connectionId:G,connectionTitle:Y}=Q;return async(W,$)=>{let K=Date.now();try{let Z=await $(),H=J.organization?.id;if(X&&H){let q=Z.clone();(async()=>{try{let{text:F,truncated:V}=await EI4(q,262144),z=Date.now()-K,U=q.headers.get("content-type")??"",N=F;if(U.includes("application/json"))try{N=F.length?JSON.parse(F):null}catch{N=F}let D=Z.status>=400,w=D&&N&&typeof N==="object"&&"error"in N?N.error:void 0,A=typeof w==="string"&&w?w:D&&typeof N==="string"&&N.trim()?N.slice(0,500):D?`HTTP ${Z.status} ${Z.statusText}`.trim():V?"Response body truncated to 262144 bytes":void 0;await hP({ctx:J,enabled:X,organizationId:H,connectionId:G,connectionTitle:Y,request:W,output:bY1(N),isError:D,errorMessage:A,durationMs:z})}catch(F){let V=Date.now()-K;await hP({ctx:J,enabled:X,organizationId:H,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${F.message}`,durationMs:V})}})()}return Z}catch(Z){let H=Z,q=Date.now()-K;throw await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:H.message,durationMs:q}),Z}}}var uY1=new i5;function jI4(Q,J){return async(X,G)=>{try{let Y=X.params.name;return await new xU(Q.authInstance,Q.auth.user?.id??Q.auth.apiKey?.userId,Y,Q.boundAuth,Q.auth.user?.role,J).check(Y),await G()}catch(Y){return{content:[{type:"text",text:`Authorization failed: ${Y.message}`}],isError:!0}}}}function II4(Q,J){return async(X,G)=>{try{let Y=X.params.name;return await new xU(Q.authInstance,Q.auth.user?.id??Q.auth.apiKey?.userId,Y,Q.boundAuth,Q.auth.user?.role,J).check(Y),await G()}catch(Y){return new Response(JSON.stringify({error:`Authorization failed: ${Y.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}async function mY1(Q,J,{superUser:X}){let G=typeof Q==="string"?await J.storage.connections.findById(Q,J.organization?.id):Q;if(!G)throw Error("Connection not found");let Y=G?.id;if(J.organization&&G.organization_id!==J.organization.id)throw Error("Connection does not belong to the active organization");if(J.organization??={id:G.organization_id},G.status!=="active")throw Error(`Connection inactive: ${G.status}`);let W,$=J.auth.user?.connectionId,K=SY1(async()=>{let y=k80(G.configuration_state,G.configuration_scopes),f=J.auth.user?.id??J.auth.apiKey?.userId;if(!f){console.error("User ID required to issue configuration token");return}try{W=await IY1({sub:f,user:{id:f},metadata:{state:G.configuration_state??void 0,meshUrl:process.env.MESH_URL??J.baseUrl,connectionId:Y,organizationId:J.organization?.id},permissions:y})}catch(m){console.error("Failed to issue configuration token:",m)}}),Z=async()=>{await K();let y={...$?{"x-caller-id":$}:{}};if(G.connection_token)y.Authorization=`Bearer ${G.connection_token}`;if(W)y["x-mesh-token"]=W;if(G.connection_headers)Object.assign(y,G.connection_headers);return y},H=async()=>{let y=await Z(),f=new MW(new URL(G.connection_url),{requestInit:{headers:y}}),m=new oH({name:"mcp-mesh-proxy",version:"1.0.0"});return await m.connect(f),m},q=X?async(y,f)=>await f():jI4(J,Y),F=X?async(y,f)=>await f():II4(J,Y),V={enabled:y01().enabled,connectionId:Y,connectionTitle:G.title,ctx:J},z=xY1(V),U=gY1(V),N=VP(z,q),D=VP(U,F),w=async(y)=>{return N(y,async()=>{let f=await H(),m=Date.now();return await J.tracer.startActiveSpan("mcp.proxy.callTool",{attributes:{"connection.id":Y,"tool.name":y.params.name}},async(b)=>{try{let v=await f.callTool(y.params),x=Date.now()-m;return J.meter.createHistogram("connection.proxy.duration").record(x,{"connection.id":Y,"tool.name":y.params.name,status:"success"}),J.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":Y,"tool.name":y.params.name,status:"success"}),b.end(),v}catch(v){let x=v,Q0=Date.now()-m;throw J.meter.createHistogram("connection.proxy.duration").record(Q0,{"connection.id":Y,"tool.name":y.params.name,status:"error"}),J.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":Y,"tool.name":y.params.name,error:x.message}),b.recordException(x),b.end(),v}})})};return{fetch:async(y)=>{let f=new URL(y.url),m;try{m=await H()}catch(x){let Q0=await yY1({error:x,reqUrl:f,connectionId:Y,connectionUrl:G.connection_url,headers:await Z()});if(Q0)return Q0;throw x}let b=new tH({name:"mcp-mesh",version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}}}),v=new Kq({enableJsonResponse:y.headers.get("Accept")?.includes("application/json")??!1});return await b.connect(v),b.server.setRequestHandler(bK,async(x)=>{return await m.listTools()}),b.server.setRequestHandler(xK,w),b.server.setRequestHandler(kK,async()=>{return await m.listResources()}),b.server.setRequestHandler(yK,async(x)=>{return await m.readResource(x.params)}),b.server.setRequestHandler(_K,async()=>{return await m.listResourceTemplates()}),b.server.setRequestHandler(hK,async()=>{return await m.listPrompts()}),b.server.setRequestHandler(fK,async(x)=>{return await m.getPrompt(x.params)}),await v.handleMessage(y)},client:{callTool:(y)=>{return w({method:"tools/call",params:y})},listTools:async()=>{if(G.tools&&G.tools.length>0)return{tools:G.tools.map((f)=>({name:f.name,description:f.description,inputSchema:f.inputSchema}))};return await(await H()).listTools()},listResources:async()=>{return await(await H()).listResources()},readResource:async(y)=>{return await(await H()).readResource(y)},listResourceTemplates:async()=>{return await(await H()).listResourceTemplates()},listPrompts:async()=>{return await(await H()).listPrompts()},getPrompt:async(y)=>{return await(await H()).getPrompt(y)}},callStreamableTool:async(y,f)=>{let m={method:"tools/call",params:{name:y,arguments:f}};return D(m,async()=>{let b=await Z(),v=new URL(G.connection_url);return v.pathname=v.pathname.replace(/\/$/,"")+`/call-tool/${m.params.name}`,await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":Y,"tool.name":m.params.name}},async(x)=>{let Q0=Date.now();try{let c=await fetch(v.toString(),{method:"POST",redirect:"manual",body:JSON.stringify(m.params.arguments),headers:{...b,"Content-Type":"application/json"}}),G0=Date.now()-Q0;return J.meter.createHistogram("connection.proxy.streamable.duration").record(G0,{"connection.id":Y,"tool.name":m.params.name,status:c.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":Y,"tool.name":m.params.name,status:c.ok?"success":"error"}),x.end(),c}catch(c){let G0=c,U0=Date.now()-Q0;throw J.meter.createHistogram("connection.proxy.streamable.duration").record(U0,{"connection.id":Y,"tool.name":m.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":Y,"tool.name":m.params.name,error:G0.message}),x.recordException(G0),x.end(),c}})})}}}async function lY1(Q,J){return mY1(Q,J,{superUser:!1})}async function dY1(Q,J){return mY1(Q,J,{superUser:!0})}uY1.all("/:connectionId",async(Q)=>{let J=Q.req.param("connectionId"),X=Q.get("meshContext");try{return await(await X.createMCPProxy(J)).fetch(Q.req.raw)}catch(G){let Y=G;if(Y.message.includes("not found"))return Q.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return Q.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return Q.json({error:Y.message},503);return Q.json({error:"Internal server error",message:Y.message},500)}});var pY1=uY1;function CI4(Q,J){for(let[X,G]of Object.entries(J)){let Y=Q[X];if(!Y||Y.length===0){let W=Q["*"];if(!W||W.length===0)return!1;if(W.includes("*"))continue;for(let $ of G)if(!W.includes($))return!1;continue}if(Y.includes("*"))continue;for(let W of G)if(!Y.includes(W))return!1}return!0}function RI4(Q){let{auth:J,headers:X,role:G,permissions:Y,userId:W}=Q,$=J.api.hasPermission;return{hasPermission:async(K)=>{if(G&&U90.includes(G))return!0;if(Y)return CI4(Y,K);if(!$)return console.error("[Auth] hasPermission API not available"),!1;try{if((await $({headers:X,body:{permission:K}}))?.success===!0)return!0;let H={};for(let F of Object.keys(K))H[F]=["*"];return(await $({headers:X,body:{permission:H}}))?.success===!0}catch(Z){return console.error("[Auth] Permission check failed:",Z),!1}},organization:{create:async(K)=>{return J.api.createOrganization({headers:X,body:K})},update:async(K)=>{return J.api.updateOrganization({headers:X,body:K})},delete:async(K)=>{await J.api.deleteOrganization({headers:X,body:{organizationId:K}})},get:async(K)=>{return J.api.getFullOrganization({headers:X,query:K?{organizationId:K}:void 0})},list:async(K)=>{return J.api.listOrganizations({headers:X,query:K?{userId:K}:void 0})},addMember:async(K)=>{return J.api.addMember({headers:X,body:K})},removeMember:async(K)=>{await J.api.removeMember({headers:X,body:K})},listMembers:async(K)=>{return J.api.listMembers({headers:X,query:K?{organizationId:K.organizationId,limit:K.limit,offset:K.offset}:void 0})},updateMemberRole:async(K)=>{return J.api.updateMemberRole({headers:X,body:K})}},apiKey:{create:async(K)=>{return J.api.createApiKey({body:{...K,userId:W}})},list:async()=>{return J.api.listApiKeys({headers:X})},update:async(K)=>{return J.api.updateApiKey({body:{...K,userId:W}})},delete:async(K)=>{await J.api.deleteApiKey({headers:X,body:{keyId:K}})}}}}async function SI4(Q,J,X){if(U90.includes(X))return;let G=await Q.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",J).where("role","=",X).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${X}`);return}}async function vI4(Q,J,X){let G=Q.headers.get("Authorization");try{let Y=new Headers(Q.headers);Y.set("X-MCP-Session-Auth","true");let W=await J.api.getMcpSession({headers:Y});if(W){let $=W.userId,K=await X.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",$).executeTakeFirst(),Z=K?.role,H=K?{id:K.orgId,slug:K.orgSlug,name:K.orgName}:void 0,q;if(K&&Z)q=await SI4(X,K.organizationId,Z);return{user:{id:$,role:Z},role:Z,permissions:q,organization:H}}}catch(Y){console.error("[Auth] OAuth session check failed:",Y)}if(G?.startsWith("Bearer ")){let Y=G.replace("Bearer ","").trim();try{let W=await CY1(Y);if(W)return{user:{id:W.sub,connectionId:W.metadata?.connectionId},permissions:W.permissions,organization:W.metadata?.organizationId?{id:W.metadata?.organizationId}:void 0}}catch{}try{let W=await J.api.verifyApiKey({body:{key:Y}});if(W?.valid&&W.key){let $=W.key.metadata?.organization,K=W.key.permissions;return{apiKeyId:W.key.id,user:{id:W.key.userId},permissions:K,organization:$?{id:$.id,slug:$.slug,name:$.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let Y=await J.api.getSession({headers:Q.headers});if(Y){let W,$;if(Y.session.activeOrganizationId){let K=await J.api.getFullOrganization({headers:Q.headers}).catch(()=>null);if(K)W={id:K.id,slug:K.slug,name:K.name},$=K.members?.find((H)=>H.userId===Y.user.id)?.role;else W={id:Y.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Y.user.id,email:Y.user.email,role:$},role:$,organization:W}}}catch(Y){console.error("[Auth] Session check failed:",Y)}return{user:void 0}}var cY1,JZ={set:(Q)=>{cY1=Q},create:async(Q)=>{return await cY1(Q)}};function nY1(Q){let J=new _w(Q.encryption.key),X={connections:new yw(Q.db,J),organizationSettings:new N90(Q.db),monitoring:new D90(Q.db),gateways:new hw(Q.db)};return async(G)=>{let Y=G?.headers.get("x-caller-id")??void 0,W=G?await vI4(G,Q.auth,Q.db):{user:void 0},$=RI4({auth:Q.auth,headers:G?.headers??new Headers,role:W.role,permissions:W.permissions,userId:W.user?.id}),K={user:W.user};if(W.apiKeyId)K.apiKey={id:W.apiKeyId,name:"",userId:""};let Z=W.organization,H=G?new URL(G.url):new URL("http://localhost:3000"),q=process.env.BASE_URL??`${H.protocol}//${H.host}`,F=new xU(Q.auth,K.user?.id,void 0,$,W.role,EY.SELF),V={auth:K,connectionId:Y,organization:Z,storage:X,vault:J,authInstance:Q.auth,boundAuth:$,access:F,db:Q.db,tracer:Q.observability.tracer,meter:Q.observability.meter,baseUrl:q,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,userAgent:G?.headers.get("x-mesh-client")||G?.headers.get("User-Agent")||void 0,ipAddress:(G?.headers.get("CF-Connecting-IP")||G?.headers.get("X-Forwarded-For"))??void 0},eventBus:Q.eventBus,createMCPProxy:async(z)=>{return await lY1(z,V)}};return V}}var fP={HEALTH:"/health",METRICS:"/metrics"},bP={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known"},kI4=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/;function iY1(Q){return Q===fP.HEALTH||Q===fP.METRICS||Q.startsWith(bP.WELL_KNOWN)}function _I4(Q){return Q.startsWith(bP.API)}function yI4(Q){return Q==="/mcp"||Q.startsWith(bP.MCP)}function hI4(Q){return Q.startsWith(bP.OAUTH_PROXY)}function fI4(Q){return kI4.test(Q)}function rY1(Q){return _I4(Q)||yI4(Q)||hI4(Q)||iY1(Q)}function aY1(Q){return Q==="/"||Q.startsWith(bP.API_AUTH)||iY1(Q)||fI4(Q)}class oY1{db;constructor(Q){this.db=Q}async publishEvent(Q){let J=new Date().toISOString();return await this.db.insertInto("events").values({id:Q.id,organization_id:Q.organizationId,type:Q.type,source:Q.source,specversion:"1.0",subject:Q.subject??null,time:Q.time,datacontenttype:Q.datacontenttype??"application/json",dataschema:Q.dataschema??null,data:Q.data?JSON.stringify(Q.data):null,cron:Q.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:J,updated_at:J}).execute(),{id:Q.id,organizationId:Q.organizationId,type:Q.type,source:Q.source,specversion:"1.0",subject:Q.subject??null,time:Q.time,datacontenttype:Q.datacontenttype??"application/json",dataschema:Q.dataschema??null,data:Q.data??null,cron:Q.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:J,updatedAt:J}}async subscribe(Q){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q.organizationId).where("connection_id","=",Q.connectionId).where("event_type","=",Q.eventType);if(Q.publisher)J=J.where("publisher","=",Q.publisher);else J=J.where("publisher","is",null);if(Q.filter)J=J.where("filter","=",Q.filter);else J=J.where("filter","is",null);let X=await J.executeTakeFirst();if(X)return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at};let G=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Q.id,organization_id:Q.organizationId,connection_id:Q.connectionId,publisher:Q.publisher??null,event_type:Q.eventType,filter:Q.filter??null,enabled:1,created_at:G,updated_at:G}).execute(),{id:Q.id,organizationId:Q.organizationId,connectionId:Q.connectionId,publisher:Q.publisher??null,eventType:Q.eventType,filter:Q.filter??null,enabled:!0,createdAt:G,updatedAt:G}}async unsubscribe(Q,J){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Q).where("organization_id","=",J).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Q,J){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q);if(J)X=X.where("connection_id","=",J);return(await X.execute()).map((Y)=>({id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Y.enabled===1,createdAt:Y.created_at,updatedAt:Y.updated_at}))}async getSubscription(Q,J){let X=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}}async getMatchingSubscriptions(Q){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q.organizationId).where("enabled","=",1).where("event_type","=",Q.type).where((X)=>X.or([X("publisher","is",null),X("publisher","=",Q.source)])).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}))}async createDeliveries(Q,J,X){if(J.length===0)return;let G=new Date().toISOString(),Y=X??null,W=J.map(($)=>({id:crypto.randomUUID(),event_id:Q,subscription_id:$,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:Y,created_at:G}));await this.db.insertInto("event_deliveries").values(W).execute()}async claimPendingDeliveries(Q){let J=new Date().toISOString(),X;try{X=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(W)=>W.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where(($)=>$.or([$("d.next_retry_at","is",null),$("d.next_retry_at","<=",J)])).orderBy("d.created_at","asc").limit(Q)).where("status","=","pending").returning(["id"]).execute()).map((W)=>W.id)}catch{let Y=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",J)])).orderBy("d.created_at","asc").limit(Q).execute();if(Y.length===0)return[];X=Y.map((W)=>W.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",X).where("status","=","pending").execute()}if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((Y)=>({delivery:{id:Y.delivery_id,eventId:Y.event_id,subscriptionId:Y.subscription_id,status:Y.delivery_status,attempts:Y.delivery_attempts,lastError:Y.delivery_last_error,deliveredAt:Y.delivered_at,nextRetryAt:Y.delivery_next_retry_at,createdAt:Y.delivery_created_at},event:{id:Y.event_id,organizationId:Y.organization_id,type:Y.type,source:Y.source,specversion:Y.specversion,subject:Y.subject,time:Y.time,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema,data:Y.data?JSON.parse(Y.data):null,cron:Y.cron,status:Y.event_status,attempts:Y.event_attempts,lastError:Y.event_last_error,nextRetryAt:Y.next_retry_at,createdAt:Y.event_created_at,updatedAt:Y.event_updated_at},subscription:{id:Y.subscription_id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Y.enabled===1,createdAt:Y.subscription_created_at,updatedAt:Y.subscription_updated_at}}))}async markDeliveriesDelivered(Q){if(Q.length===0)return;let J=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:J}).where("id","in",Q).execute()}async markDeliveriesFailed(Q,J,X=20,G=1000,Y=3600000){if(Q.length===0)return;for(let W of Q){let $=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",W).executeTakeFirst();if(!$)continue;let K=$.attempts+1;if(K>=X)await this.db.updateTable("event_deliveries").set({attempts:K,last_error:J,status:"failed",next_retry_at:null}).where("id","=",W).execute();else{let Z=Math.min(G*Math.pow(2,K-1),Y),H=new Date(Date.now()+Z).toISOString();await this.db.updateTable("event_deliveries").set({attempts:K,last_error:J,status:"pending",next_retry_at:H}).where("id","=",W).execute()}}}async updateEventStatus(Q){let J=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Q).execute();if(J.length===0)return;let X=J.every((W)=>W.status==="delivered"),G=J.some((W)=>W.status==="failed"),Y=J.some((W)=>W.status==="pending"||W.status==="processing");if(X)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Q).execute();else if(G&&!Y)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Q).execute()}async resetStuckDeliveries(){let Q=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Q.numUpdatedRows??0)}async getEvent(Q,J){let X=await this.db.selectFrom("events").selectAll().where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}}async cancelEvent(Q,J,X){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Q).where("organization_id","=",J).where("source","=",X).where("status","in",["pending","processing"]).executeTakeFirst();if((G.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Q).where("status","in",["pending","processing"]).execute();return{success:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Q,J){if(Q.length===0)return;let X=new Date(Date.now()+J).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:X}).where("id","in",Q).execute()}async ackDelivery(Q,J,X){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst())return{success:!1};let W=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Q).where("status","in",["pending","processing"]).where(($)=>$.exists($.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",X).where("event_subscriptions.organization_id","=",J))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(W)await this.updateEventStatus(Q);return{success:W}}async syncSubscriptions(Q){let{organizationId:J,connectionId:X,subscriptions:G}=Q,Y=(w,A)=>{return`${w}::${A??""}`},W=await this.listSubscriptions(J,X),$=new Map;for(let w of W)$.set(Y(w.eventType,w.publisher),w);let K=new Map;for(let w of G)K.set(Y(w.eventType,w.publisher),w);let Z=new Date().toISOString(),H=[],q=[],F=[],V=0;for(let[w,A]of K){let P=$.get(w);if(!P)H.push({id:crypto.randomUUID(),organization_id:J,connection_id:X,event_type:A.eventType,publisher:A.publisher??null,filter:A.filter??null,enabled:1,created_at:Z,updated_at:Z});else{let M=P.filter??null,T=A.filter??null;if(M!==T)q.push({id:P.id,filter:T});else V++}}for(let[w,A]of $)if(!K.has(w))F.push(A.id);if(H.length>0)await this.db.insertInto("event_subscriptions").values(H).execute();if(q.length>0)await Promise.all(q.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:Z}).where("id","=",w.id).execute()));if(F.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",F).execute();let z=H.length,U=q.length,N=F.length,D=await this.listSubscriptions(J,X);return{created:z,updated:U,deleted:N,unchanged:V,subscriptions:D}}}function sY1(Q){return new oY1(Q)}function u5(Q,J,X,G,Y,W,$,K){return u5.fromTZ(u5.tp(Q,J,X,G,Y,W,$),K)}u5.fromTZISO=(Q,J,X)=>u5.fromTZ(bI4(Q,J),X);u5.fromTZ=function(Q,J){let X=new Date(Date.UTC(Q.y,Q.m-1,Q.d,Q.h,Q.i,Q.s)),G=w90(Q.tz,X),Y=new Date(X.getTime()-G),W=w90(Q.tz,Y);if(W-G===0)return Y;{let $=new Date(X.getTime()-W),K=w90(Q.tz,$);if(K-W===0)return $;if(!J&&K-W>0)return $;if(J)throw Error("Invalid date passed to fromTZ()");return Y}};u5.toTZ=function(Q,J){let X=Q.toLocaleString("en-US",{timeZone:J}).replace(/[\u202f]/," "),G=new Date(X);return{y:G.getFullYear(),m:G.getMonth()+1,d:G.getDate(),h:G.getHours(),i:G.getMinutes(),s:G.getSeconds(),tz:J}};u5.tp=(Q,J,X,G,Y,W,$)=>({y:Q,m:J,d:X,h:G,i:Y,s:W,tz:$});function w90(Q,J=new Date){let X=J.toLocaleString("en-US",{timeZone:Q,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],G=J.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${G} GMT`)-Date.parse(`${G} ${X}`)}function bI4(Q,J){let X=new Date(Date.parse(Q));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let G=Q.substring(9);return Q.includes("Z")||G.includes("-")||G.includes("+")?u5.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):u5.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),J)}u5.minitz=u5;var P90=32,gP=31|P90,J71=[1,2,4,8,16],tY1=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Q,J){this.pattern=Q,this.timezone=J,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Q=this.pattern.replace(/\s+/g," ").split(" ");if(Q.length<5||Q.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Q.length===5&&Q.unshift("0"),Q[3].indexOf("L")>=0&&(Q[3]=Q[3].replace("L",""),this.lastDayOfMonth=!0),Q[3]=="*"&&(this.starDOM=!0),Q[4].length>=3&&(Q[4]=this.replaceAlphaMonths(Q[4])),Q[5].length>=3&&(Q[5]=this.replaceAlphaDays(Q[5])),Q[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let J=new uX(new Date,this.timezone).getDate(!0);Q[0]=Q[0].replace("?",J.getSeconds().toString()),Q[1]=Q[1].replace("?",J.getMinutes().toString()),Q[2]=Q[2].replace("?",J.getHours().toString()),this.starDOM||(Q[3]=Q[3].replace("?",J.getDate().toString())),Q[4]=Q[4].replace("?",(J.getMonth()+1).toString()),this.starDOW||(Q[5]=Q[5].replace("?",J.getDay().toString()))}this.throwAtIllegalCharacters(Q),this.partToArray("second",Q[0],0,1),this.partToArray("minute",Q[1],0,1),this.partToArray("hour",Q[2],0,1),this.partToArray("day",Q[3],-1,1),this.partToArray("month",Q[4],-1,1),this.partToArray("dayOfWeek",Q[5],0,gP),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Q,J,X,G){let Y=this[Q],W=Q==="day"&&this.lastDayOfMonth;if(J===""&&!W)throw TypeError("CronPattern: configuration entry "+Q+" ("+J+") is empty, check for trailing spaces.");if(J==="*")return Y.fill(G);let $=J.split(",");if($.length>1)for(let K=0;K<$.length;K++)this.partToArray(Q,$[K],X,G);else J.indexOf("-")!==-1&&J.indexOf("/")!==-1?this.handleRangeWithStepping(J,Q,X,G):J.indexOf("-")!==-1?this.handleRange(J,Q,X,G):J.indexOf("/")!==-1?this.handleStepping(J,Q,X,G):J!==""&&this.handleNumber(J,Q,X,G)}throwAtIllegalCharacters(Q){for(let J=0;J<Q.length;J++)if((J===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Q[J]))throw TypeError("CronPattern: configuration entry "+J+" ("+Q[J]+") contains illegal characters.")}handleNumber(Q,J,X,G){let Y=this.extractNth(Q,J),W=parseInt(Y[0],10)+X;if(isNaN(W))throw TypeError("CronPattern: "+J+" is not a number: '"+Q+"'");this.setPart(J,W,Y[1]||G)}setPart(Q,J,X){if(!Object.prototype.hasOwnProperty.call(this,Q))throw TypeError("CronPattern: Invalid part specified: "+Q);if(Q==="dayOfWeek"){if(J===7&&(J=0),J<0||J>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+J);this.setNthWeekdayOfMonth(J,X);return}if(Q==="second"||Q==="minute"){if(J<0||J>=60)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="hour"){if(J<0||J>=24)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="day"){if(J<0||J>=31)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="month"&&(J<0||J>=12))throw RangeError("CronPattern: Invalid value for "+Q+": "+J);this[Q][J]=X}handleRangeWithStepping(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(W===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Q+"'");let[,$,K,Z]=W,H=parseInt($,10)+X,q=parseInt(K,10)+X,F=parseInt(Z,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(q))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(F===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(F>this[J].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[J].length+")");if(H>q)throw TypeError("CronPattern: From value is larger than to value: '"+Q+"'");for(let V=H;V<=q;V+=F)this.setPart(J,V,Y[1]||G)}extractNth(Q,J){let X=Q,G;if(X.includes("#")){if(J!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");G=X.split("#")[1],X=X.split("#")[0]}return[X,G]}handleRange(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].split("-");if(W.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Q+"'");let $=parseInt(W[0],10)+X,K=parseInt(W[1],10)+X;if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if($>K)throw TypeError("CronPattern: From value is larger than to value: '"+Q+"'");for(let Z=$;Z<=K;Z++)this.setPart(J,Z,Y[1]||G)}handleStepping(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].split("/");if(W.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Q+"'");W[0]===""&&(W[0]="*");let $=0;W[0]!=="*"&&($=parseInt(W[0],10)+X);let K=parseInt(W[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[J].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[J].length+")");for(let Z=$;Z<this[J].length;Z+=K)this.setPart(J,Z,Y[1]||G)}replaceAlphaDays(Q){return Q.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Q){return Q.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Q){let J=Q.trim().toLowerCase();return J==="@yearly"||J==="@annually"?"0 0 1 1 *":J==="@monthly"?"0 0 1 * *":J==="@weekly"?"0 0 * * 0":J==="@daily"?"0 0 * * *":J==="@hourly"?"0 * * * *":Q}setNthWeekdayOfMonth(Q,J){if(typeof J!="number"&&J==="L")this.dayOfWeek[Q]=this.dayOfWeek[Q]|P90;else if(J===gP)this.dayOfWeek[Q]=gP;else if(J<6&&J>0)this.dayOfWeek[Q]=this.dayOfWeek[Q]|J71[J-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${J}, Type: ${typeof J}`)}},eY1=[31,28,31,30,31,30,31,31,30,31,30,31],SW=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]],uX=class Q{tz;ms;second;minute;hour;day;month;year;constructor(J,X){if(this.tz=X,J&&J instanceof Date)if(!isNaN(J))this.fromDate(J);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(J===void 0)this.fromDate(new Date);else if(J&&typeof J=="string")this.fromString(J);else if(J instanceof Q)this.fromCronDate(J);else throw TypeError("CronDate: Invalid type ("+typeof J+") passed to CronDate constructor")}isNthWeekdayOfMonth(J,X,G,Y){let W=new Date(Date.UTC(J,X,G)).getUTCDay(),$=0;for(let K=1;K<=G;K++)new Date(Date.UTC(J,X,K)).getUTCDay()===W&&$++;if(Y&gP&&J71[$-1]&Y)return!0;if(Y&P90){let K=new Date(Date.UTC(J,X+1,0)).getUTCDate();for(let Z=G+1;Z<=K;Z++)if(new Date(Date.UTC(J,X,Z)).getUTCDay()===W)return!1;return!0}return!1}fromDate(J){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=J.getUTCMilliseconds(),this.second=J.getUTCSeconds(),this.minute=J.getUTCMinutes()+this.tz,this.hour=J.getUTCHours(),this.day=J.getUTCDate(),this.month=J.getUTCMonth(),this.year=J.getUTCFullYear(),this.apply();else{let X=u5.toTZ(J,this.tz);this.ms=J.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=J.getMilliseconds(),this.second=J.getSeconds(),this.minute=J.getMinutes(),this.hour=J.getHours(),this.day=J.getDate(),this.month=J.getMonth(),this.year=J.getFullYear()}fromCronDate(J){this.tz=J.tz,this.year=J.year,this.month=J.month,this.day=J.day,this.hour=J.hour,this.minute=J.minute,this.second=J.second,this.ms=J.ms}apply(){if(this.month>11||this.day>eY1[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let J=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=J.getUTCMilliseconds(),this.second=J.getUTCSeconds(),this.minute=J.getUTCMinutes(),this.hour=J.getUTCHours(),this.day=J.getUTCDate(),this.month=J.getUTCMonth(),this.year=J.getUTCFullYear(),!0}else return!1}fromString(J){if(typeof this.tz=="number"){let X=u5.fromTZISO(J);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(u5.fromTZISO(J,this.tz))}findNext(J,X,G,Y){let W=this[X],$;G.lastDayOfMonth&&(this.month!==1?$=eY1[this.month]:$=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!G.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let Z=this[X]+Y;Z<G[X].length;Z++){let H=G[X][Z];if(X==="day"&&G.lastDayOfMonth&&Z-Y==$&&(H=1),X==="day"&&!G.starDOW){let q=G.dayOfWeek[(K+(Z-Y-1))%7];if(q&&q&gP)q=this.isNthWeekdayOfMonth(this.year,this.month,Z-Y,q)?1:0;else if(q)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${q}`);J.legacyMode&&!G.starDOM?H=H||q:H=H&&q}if(H)return this[X]=Z-Y,W!==this[X]?2:1}return 3}recurse(J,X,G){let Y=this.findNext(X,SW[G][0],J,SW[G][2]);if(Y>1){let W=G+1;for(;W<SW.length;)this[SW[W][0]]=-SW[W][2],W++;if(Y===3)return this[SW[G][1]]++,this[SW[G][0]]=-SW[G][2],this.apply(),this.recurse(J,X,0);if(this.apply())return this.recurse(J,X,G-1)}return G+=1,G>=SW.length?this:this.year>=3000?null:this.recurse(J,X,G)}increment(J,X,G){return this.second+=X.interval!==void 0&&X.interval>1&&G?X.interval:1,this.ms=0,this.apply(),this.recurse(J,X,0)}getDate(J){return J||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):u5.fromTZ(u5.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function xI4(Q){if(Q===void 0&&(Q={}),delete Q.name,Q.legacyMode=Q.legacyMode===void 0?!0:Q.legacyMode,Q.paused=Q.paused===void 0?!1:Q.paused,Q.maxRuns=Q.maxRuns===void 0?1/0:Q.maxRuns,Q.catch=Q.catch===void 0?!1:Q.catch,Q.interval=Q.interval===void 0?0:parseInt(Q.interval.toString(),10),Q.utcOffset=Q.utcOffset===void 0?void 0:parseInt(Q.utcOffset.toString(),10),Q.unref=Q.unref===void 0?!1:Q.unref,Q.startAt&&(Q.startAt=new uX(Q.startAt,Q.timezone)),Q.stopAt&&(Q.stopAt=new uX(Q.stopAt,Q.timezone)),Q.interval!==null){if(isNaN(Q.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Q.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Q.utcOffset!==void 0){if(isNaN(Q.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Q.utcOffset<-870||Q.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Q.utcOffset!==void 0&&Q.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Q.unref!==!0&&Q.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Q}function xP(Q){return Object.prototype.toString.call(Q)==="[object Function]"||typeof Q=="function"||Q instanceof Function}function gI4(Q){return xP(Q)}function uI4(Q){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Q):Q&&typeof Q.unref<"u"&&Q.unref()}var Q71=30000,w_=[],P_=class{name;options;_states;fn;constructor(Q,J,X){let G,Y;if(xP(J))Y=J;else if(typeof J=="object")G=J;else if(J!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(xP(X))Y=X;else if(typeof X=="object")G=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=G?.name,this.options=xI4(G),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:G?G.maxRuns:void 0,paused:G?G.paused:!1,pattern:new tY1("* * * * *")},Q&&(Q instanceof Date||typeof Q=="string"&&Q.indexOf(":")>0)?this._states.once=new uX(Q,this.options.timezone||this.options.utcOffset):this._states.pattern=new tY1(Q,this.options.timezone),this.name){if(w_.find((W)=>W.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");w_.push(this)}return Y!==void 0&&gI4(Y)&&(this.fn=Y,this.schedule()),this}nextRun(Q){let J=this._next(Q);return J?J.getDate(!1):null}nextRuns(Q,J){this._states.maxRuns!==void 0&&Q>this._states.maxRuns&&(Q=this._states.maxRuns);let X=[],G=J||this._states.currentRun||void 0;for(;Q--&&(G=this.nextRun(G));)X.push(G);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Q=this.nextRun(this._states.currentRun),J=!this._states.paused,X=this.fn!==void 0,G=!this._states.kill;return J&&X&&G&&Q!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Q){let J=this._next(Q);return J?Q instanceof uX||Q instanceof Date?J.getTime()-Q.getTime():J.getTime()-new uX(Q).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Q=w_.indexOf(this);Q>=0&&w_.splice(Q,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Q){if(Q&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Q&&(this.fn=Q);let J=this.msToNext(),X=this.nextRun(this._states.currentRun);return J==null||isNaN(J)||X===null?this:(J>Q71&&(J=Q71),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),J),this._states.currentTimeout&&this.options.unref&&uI4(this._states.currentTimeout),this)}async _trigger(Q){if(this._states.blocking=!0,this._states.currentRun=new uX(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(J){xP(this.options.catch)&&this.options.catch(J,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new uX(Q,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Q){let J=new Date,X=!this._states.paused&&J.getTime()>=Q.getTime(),G=this._states.blocking&&this.options.protect;X&&!G?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&G&&xP(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Q){let J=!!(Q||this._states.currentRun),X=!1;!Q&&this.options.startAt&&this.options.interval&&([Q,J]=this._calculatePreviousRun(Q,J),X=!Q),Q=new uX(Q,this.options.timezone||this.options.utcOffset),this.options.startAt&&Q&&Q.getTime()<this.options.startAt.getTime()&&(Q=this.options.startAt);let G=this._states.once||new uX(Q,this.options.timezone||this.options.utcOffset);return!X&&G!==this._states.once&&(G=G.increment(this._states.pattern,this.options,J)),this._states.once&&this._states.once.getTime()<=Q.getTime()||G===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&G.getTime()>=this.options.stopAt.getTime()?null:G}_calculatePreviousRun(Q,J){let X=new uX(void 0,this.options.timezone||this.options.utcOffset),G=Q;if(this.options.startAt.getTime()<=X.getTime()){G=this.options.startAt;let Y=G.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)G=new uX(G,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=G.getTime()+this.options.interval*1000;J=!0}return G===null&&(G=void 0),[G,J]}};var M_={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};V_();function X71(){return async(Q,J)=>{try{let X=await JZ.create(),G=await dY1(Q,{...X,auth:{...X.auth,user:{id:"notify-worker"}}}),W=await j80.forClient(G).ON_EVENTS({events:J});return{success:W.success,error:W.error,retryAfter:W.retryAfter,results:W.results}}catch(X){let G=X instanceof Error?X.message:String(X);return console.error(`[EventBus] Failed to notify connection ${Q}:`,G),{success:!1,error:G}}}}function Y71(Q){return{specversion:"1.0",id:Q.id,source:Q.source,type:Q.type,time:Q.time,subject:Q.subject??void 0,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema??void 0,data:Q.data??void 0}}function mI4(Q){let J=new Map;for(let G of Q){let Y=G.subscription.connectionId,W=J.get(Y);if(W){if(W.deliveryIds.push(G.delivery.id),!W.seenEventIds.has(G.event.id))W.seenEventIds.add(G.event.id),W.events.push(Y71(G.event))}else J.set(Y,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[Y71(G.event)],seenEventIds:new Set([G.event.id])})}let X=new Map;for(let[G,Y]of J)X.set(G,{connectionId:Y.connectionId,deliveryIds:Y.deliveryIds,events:Y.events});return X}class M90{storage;notifySubscriber;running=!1;processing=!1;config;constructor(Q,J){this.storage=Q;this.notifySubscriber=X71(),this.config={...M_,...J}}async start(){if(this.running)return;let Q=await this.storage.resetStuckDeliveries();if(Q>0)console.log(`[EventBus] Reset ${Q} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing)return;this.processing=!0;try{await this.processEvents()}catch(Q){console.error("[EventBus] Error processing events:",Q)}finally{this.processing=!1}}async processEvents(){let Q=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Q.length===0)return;let J=mI4(Q),X=new Set;for(let[G,Y]of J){try{let W=await this.notifySubscriber(Y.connectionId,Y.events);if(W.results&&Object.keys(W.results).length>0)await this.processPerEventResults(Y,W);else if(W.success)await this.storage.markDeliveriesDelivered(Y.deliveryIds);else if(W.retryAfter&&W.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Y.deliveryIds,W.retryAfter);else await this.storage.markDeliveriesFailed(Y.deliveryIds,W.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(W){let $=W instanceof Error?W.message:String(W);console.error(`[EventBus] Failed to notify subscription ${G}:`,$),await this.storage.markDeliveriesFailed(Y.deliveryIds,$,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let W of Q)if(Y.deliveryIds.includes(W.delivery.id))X.add(W.event.id)}for(let G of X)try{await this.storage.updateEventStatus(G);let Y=Q.find((W)=>W.event.id===G)?.event;if(Y?.cron)await this.scheduleNextCronDelivery(Y)}catch(Y){console.error(`[EventBus] Failed to update event status ${G}:`,Y)}}async processPerEventResults(Q,J){let X=[],G=new Map,Y=[],W=new Map;for(let $=0;$<Q.events.length;$++){let K=Q.events?.[$];if(!K)continue;let Z=Q.deliveryIds?.[$];if(!Z)continue;W.set(K.id,Z)}for(let $ of Q.events){let K=W.get($.id);if(!K)continue;let Z=J.results?.[$.id];if(Z)if(Z.success)X.push(K);else if(Z.retryAfter&&Z.retryAfter>0){let H=G.get(Z.retryAfter)||[];H.push(K),G.set(Z.retryAfter,H)}else Y.push({deliveryId:K,error:Z.error||"Event processing failed"});else if(J.success)X.push(K);else if(J.retryAfter&&J.retryAfter>0){let H=G.get(J.retryAfter)||[];H.push(K),G.set(J.retryAfter,H)}else Y.push({deliveryId:K,error:J.error||"Batch processing failed"})}if(X.length>0)await this.storage.markDeliveriesDelivered(X);for(let[$,K]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(K,$);if(Y.length>0){let $=new Map;for(let{deliveryId:K,error:Z}of Y){let H=$.get(Z)||[];H.push(K),$.set(Z,H)}for(let[K,Z]of $)await this.storage.markDeliveriesFailed(Z,K,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Q){if(!Q.cron)return;try{let X=new P_(Q.cron).nextRun();if(!X){console.log(`[EventBus] Cron expression for event ${Q.id} has no more runs`);return}let G=X.toISOString(),Y=await this.storage.getMatchingSubscriptions(Q);if(Y.length===0){console.log(`[EventBus] No subscriptions for cron event ${Q.id}, skipping next delivery`);return}await this.storage.createDeliveries(Q.id,Y.map((W)=>W.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Q.id} at ${G}`)}catch(J){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Q.id}:`,J)}}}class T90{storage;worker;notifyStrategy;running=!1;constructor(Q){this.storage=Q.storage,this.notifyStrategy=Q.notifyStrategy,this.worker=new M90(this.storage,Q.config)}async publish(Q,J,X){if(X.deliverAt&&X.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(X.cron)try{let H=new P_(X.cron).nextRun();if(!H)throw Error("Cron expression does not produce a next run time");G=H.toISOString()}catch(Z){throw Error(`Invalid cron expression: ${Z instanceof Error?Z.message:String(Z)}`)}let Y=crypto.randomUUID(),W=new Date().toISOString(),$=await this.storage.publishEvent({id:Y,organizationId:Q,type:X.type,source:J,subject:X.subject,time:W,data:X.data,cron:X.cron}),K=await this.storage.getMatchingSubscriptions($);if(K.length>0){let Z=X.deliverAt??G;if(await this.storage.createDeliveries(Y,K.map((H)=>H.id),Z),this.notifyStrategy&&!Z)await this.notifyStrategy.notify(Y).catch((H)=>{console.warn("[EventBus] Notify failed (non-critical):",H)})}return $}async subscribe(Q,J){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Q,connectionId:J.connectionId,publisher:J.publisher,eventType:J.eventType,filter:J.filter})}async unsubscribe(Q,J){return this.storage.unsubscribe(J,Q)}async listSubscriptions(Q,J){return this.storage.listSubscriptions(Q,J)}async getSubscription(Q,J){return this.storage.getSubscription(J,Q)}async getEvent(Q,J){return this.storage.getEvent(J,Q)}async cancelEvent(Q,J,X){return this.storage.cancelEvent(J,Q,X)}async ackEvent(Q,J,X){return this.storage.ackDelivery(J,Q,X)}async syncSubscriptions(Q,J){return this.storage.syncSubscriptions({organizationId:Q,...J})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Q)=>{console.error("[EventBus] Error processing after notify:",Q)})});await this.worker.processNow().catch((Q)=>{console.error("[EventBus] Error processing pending events on startup:",Q)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Q){console.error("[EventBus] Error stopping notify strategy:",Q)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}function G71(...Q){return{async start(J){await Promise.all(Q.map((X)=>X.start(J)))},async stop(){await Promise.all(Q.map((J)=>J.stop().catch((X)=>{console.error("[NotifyStrategy] Error stopping strategy:",X)})))},async notify(J){await Promise.all(Q.map((X)=>X.notify(J).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class T_{intervalMs;timer=null;onNotify=null;constructor(Q){this.intervalMs=Q}async start(Q){if(this.timer)return;this.onNotify=Q,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Q){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as lI4}from"kysely";var gU="mesh_events";class A90{db;pool;listenClient=null;onNotify=null;constructor(Q,J){this.db=Q;this.pool=J}async start(Q){if(this.listenClient)return;this.onNotify=Q;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(J)=>{if(J.channel===gU&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(J)=>{console.error("[PostgresNotify] Connection error:",J),this.cleanup()}),await this.listenClient.query(`LISTEN ${gU}`),console.log("[PostgresNotify] Started LISTEN on",gU)}catch(J){console.error("[PostgresNotify] Failed to start LISTEN:",J),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${gU}`),console.log("[PostgresNotify] Stopped LISTEN on",gU)}catch{}this.cleanup()}}async notify(Q){try{await lI4`SELECT pg_notify(${gU}, ${Q})`.execute(this.db)}catch(J){console.warn("[PostgresNotify] Failed to send NOTIFY:",J)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}function W71(Q,J){let X=sY1(Q.db),G=J?.pollIntervalMs??M_.pollIntervalMs,Y=Q.type==="postgres"?G71(new T_(G),new A90(Q.db,Q.pool)):new T_(G);return new T90({storage:X,config:J,notifyStrategy:Y})}var $71={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};var K71=new i5;K71.get("/config",async(Q)=>{try{let J=Object.keys(Z9.socialProviders??{}),X=J.length>0,G=J.map((W)=>({name:W,icon:$71[W].icon})),Y={emailAndPassword:{enabled:Z9.emailAndPassword?.enabled??!1},magicLink:{enabled:Z9.magicLinkConfig?.enabled??!1},socialProviders:{enabled:X,providers:G},sso:Z9.ssoConfig?{enabled:!0,providerId:Z9.ssoConfig.providerId}:{enabled:!1}};return Q.json({success:!0,config:Y})}catch(J){let X=J instanceof Error?J.message:"Failed to load auth config";return Q.json({success:!1,error:X},500)}});var Z71=K71;yk();yJ();class uP{proxies=new Map;constructor(){}static async create(Q,J){let X=new uP,G=await Promise.allSettled(Q.map(async({connection:Y,selectedTools:W})=>{try{let $=await J.createMCPProxy(Y);return{connection:Y,proxy:$,selectedTools:W}}catch($){return console.error(`[gateway] Failed to create proxy for connection ${Y.id}:`,$),null}}));for(let Y of G)if(Y.status==="fulfilled"&&Y.value)X.proxies.set(Y.value.connection.id,Y.value);return X}get(Q){return this.proxies.get(Q)}entries(){return this.proxies.entries()}forEach(Q){this.proxies.forEach((J,X)=>Q(J,X))}async mapAsync(Q){let J=[];for(let[X,G]of this.proxies.entries())J.push(Q(G,X));return await Promise.all(J)}async mapSettled(Q){return Promise.allSettled(Array.from(this.proxies.entries()).map(([J,X])=>Q(X,J)))}get size(){return this.proxies.size}}function dI4(Q){return Q.toLowerCase().split(/[\s_\-./]+/).filter((J)=>J.length>=2)}function pI4(Q,J){let X=0,G=J.name.toLowerCase(),Y=(J.description??"").toLowerCase(),W=J.connectionTitle.toLowerCase();for(let $ of Q){if(G===$)X+=10;else if(G.includes($))X+=3;if(Y.includes($))X+=2;if(W.includes($))X+=1}return X}function cI4(Q,J,X){let G=dI4(Q);if(G.length===0)return J.slice(0,X);return J.map((Y)=>({tool:Y,score:pI4(G,Y)})).filter((Y)=>Y.score>0).sort((Y,W)=>W.score-Y.score).slice(0,X).map((Y)=>Y.tool)}var H71=(Q)=>({tools:Q.tools,callTool:(J,X)=>Q.callTool(J,X)}),XZ={SEARCH:"GATEWAY_SEARCH_TOOLS",DESCRIBE:"GATEWAY_DESCRIBE_TOOLS",CALL:"GATEWAY_CALL_TOOL"};function nI4(Q){let J=Q.categories.length>0?` Available categories: ${Q.categories.join(", ")}.`:"",X=Q.tools.map((G)=>G.name);return[{name:XZ.SEARCH,description:`Search for available tools by name or description. Returns tool names and brief descriptions without full schemas.${J} Total tools: ${Q.tools.length}.`,inputSchema:{type:"object",properties:{query:{type:"string",description:"Natural language search query (e.g., 'send email', 'create order')"},limit:{type:"number",description:"Maximum results to return (default: 10)",default:10}},required:["query"]}},{name:XZ.DESCRIBE,description:"Get detailed schemas for specific tools. Call after searching to get full input/output schemas.",inputSchema:{type:"object",properties:{tools:{type:"array",items:{type:"string",enum:X},description:"Array of tool names to get detailed schemas for"}},required:["tools"]}},{name:XZ.CALL,description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:{type:"object",properties:{name:{type:"string",enum:X,description:"The name of the tool to execute"},arguments:{type:"object",description:"Arguments to pass to the tool",additionalProperties:!0}},required:["name"]}}]}var iI4=(Q)=>{let J=new Map(Q.tools.map((G)=>[G.name,G])),X=async(G,Y)=>{switch(G){case XZ.SEARCH:{let W=Y.query??"",$=Y.limit??10,K=cI4(W,Q.tools,$);return{content:[{type:"text",text:JSON.stringify({query:W,results:K.map((Z)=>({name:Z.name,description:Z.description,connection:Z.connectionTitle})),totalAvailable:Q.tools.length},null,2)}]}}case XZ.DESCRIBE:{let W=Y.tools??[];if(W.length===0)return{content:[{type:"text",text:JSON.stringify({error:"No tool names provided"})}],isError:!0};let $=W.map((K)=>J.get(K)).filter((K)=>K!==void 0);return{content:[{type:"text",text:JSON.stringify({tools:$.map((K)=>({name:K.name,description:K.description,connection:K.connectionTitle,inputSchema:K.inputSchema,outputSchema:K.outputSchema})),notFound:W.filter((K)=>!J.has(K))},null,2)}]}}case XZ.CALL:{let W=Y.name,$=Y.arguments??{};if(!W)return{content:[{type:"text",text:JSON.stringify({error:"Tool name is required"})}],isError:!0};if(!J.has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use ${XZ.SEARCH} to find available tools.`}],isError:!0};return Q.callTool(W,$)}default:return{content:[{type:"text",text:`Unknown meta-tool: ${G}. Available: ${Object.values(XZ).join(", ")}`}],isError:!0}}};return{tools:nI4(Q),callTool:X}};function q71(Q){switch(Q){case"smart_tool_selection":return iI4;case"code_execution":return H71;case"passthrough":default:return H71}}class A_{proxies;options;cache;constructor(Q,J){this.proxies=Q;this.options=J;this.cache=XG(()=>this.loadTools())}async loadTools(){let Q=await this.proxies.mapSettled(async(Z,H)=>{try{let F=(await Z.proxy.client.listTools()).tools;if(this.options.selectionMode==="exclusion"){if(Z.selectedTools&&Z.selectedTools.length>0){let V=new Set(Z.selectedTools);F=F.filter((z)=>!V.has(z.name))}}else if(Z.selectedTools&&Z.selectedTools.length>0){let V=new Set(Z.selectedTools);F=F.filter((z)=>V.has(z.name))}return{connectionId:H,connectionTitle:Z.connection.title,tools:F}}catch(q){return console.error(`[gateway] Failed to list tools for connection ${H}:`,q),null}}),J=new Set,X=[],G=new Map,Y=new Set;for(let Z of Q){if(Z.status!=="fulfilled"||!Z.value)continue;let{connectionId:H,connectionTitle:q,tools:F}=Z.value;Y.add(q);for(let V of F){if(J.has(V.name))continue;J.add(V.name),X.push({...V,connectionId:H,connectionTitle:q}),G.set(V.name,{connectionId:H,originalName:V.name})}}let W=async(Z,H)=>{let q=G.get(Z);if(!q)return{content:[{type:"text",text:`Tool not found: ${Z}`}],isError:!0};let F=this.proxies.get(q.connectionId);if(!F)return{content:[{type:"text",text:`Connection not found for tool: ${Z}`}],isError:!0};return await F.proxy.client.callTool({name:q.originalName,arguments:H})},K=q71(this.options.strategy)({tools:X,callTool:W,categories:Array.from(Y).sort()});return{tools:X,mappings:G,strategyResult:K}}async list(){return{tools:(await this.cache).strategyResult.tools}}async call(Q){return(await this.cache).strategyResult.callTool(Q.name,Q.arguments??{})}async callStreamable(Q,J){let X=await this.cache,G=X.mappings.get(Q);if(G){let W=this.proxies.get(G.connectionId);if(W)return W.proxy.callStreamableTool(G.originalName,J)}let Y=await X.strategyResult.callTool(Q,J);return new Response(JSON.stringify(Y),{headers:{"Content-Type":"application/json"}})}}class E_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadResources())}async loadResources(){let Q=await this.proxies.mapSettled(async(Y,W)=>{try{let $=await Y.proxy.client.listResources();return{connectionId:W,resources:$.resources}}catch($){return console.error(`[gateway] Failed to list resources for connection ${W}:`,$),{connectionId:W,resources:[]}}}),J=new Set,X=[],G=new Map;for(let Y of Q){if(Y.status!=="fulfilled")continue;let{connectionId:W,resources:$}=Y.value;for(let K of $){if(J.has(K.uri))continue;J.add(K.uri),X.push(K),G.set(K.uri,W)}}return{resources:X,mappings:G}}async list(){return{resources:(await this.cache).resources}}async read(Q){let X=(await this.cache).mappings.get(Q.uri);if(!X)throw Error(`Resource not found: ${Q.uri}`);let G=this.proxies.get(X);if(!G)throw Error(`Connection not found for resource: ${Q.uri}`);return await G.proxy.client.readResource(Q)}}class j_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadResourceTemplates())}async loadResourceTemplates(){let Q=await this.proxies.mapSettled(async(X,G)=>{try{let Y=await X.proxy.client.listResourceTemplates();return{connectionId:G,templates:Y.resourceTemplates}}catch(Y){return console.error(`[gateway] Failed to list resource templates for connection ${G}:`,Y),{connectionId:G,templates:[]}}}),J=[];for(let X of Q){if(X.status!=="fulfilled")continue;let{templates:G}=X.value;for(let Y of G)J.push(Y)}return{templates:J}}async list(){return{resourceTemplates:(await this.cache).templates}}}class I_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadPrompts())}async loadPrompts(){let Q=await this.proxies.mapSettled(async(Y,W)=>{try{let $=await Y.proxy.client.listPrompts();return{connectionId:W,prompts:$.prompts}}catch($){return console.error(`[gateway] Failed to list prompts for connection ${W}:`,$),{connectionId:W,prompts:[]}}}),J=new Set,X=[],G=new Map;for(let Y of Q){if(Y.status!=="fulfilled")continue;let{connectionId:W,prompts:$}=Y.value;for(let K of $){if(J.has(K.name))continue;J.add(K.name),X.push(K),G.set(K.name,W)}}return{prompts:X,mappings:G}}async list(){return{prompts:(await this.cache).prompts}}async get(Q){let X=(await this.cache).mappings.get(Q.name);if(!X)throw Error(`Prompt not found: ${Q.name}`);let G=this.proxies.get(X);if(!G)throw Error(`Connection not found for prompt: ${Q.name}`);return await G.proxy.client.getPrompt(Q)}}W_();var F71=new i5;async function rI4(Q,J){let X=await uP.create(Q.connections,J),G=new A_(X,{selectionMode:Q.toolSelectionMode,strategy:Q.toolSelectionStrategy}),Y=new E_(X),W=new j_(X),$=new I_(X);return{client:{listTools:G.list.bind(G),callTool:G.call.bind(G),listResources:Y.list.bind(Y),readResource:Y.read.bind(Y),listResourceTemplates:W.list.bind(W),listPrompts:$.list.bind($),getPrompt:$.get.bind($)},callStreamableTool:G.callStreamable.bind(G)}}async function aI4(Q,J){let X;if(Q.toolSelectionMode==="exclusion"){let W=(await J.storage.connections.list(Q.organizationId)).filter((K)=>K.status==="active"),$=new Map;for(let K of Q.connections)$.set(K.connectionId,K.selectedTools);X=[];for(let K of W){let Z=$.get(K.id);if(Z===void 0)X.push({connection:K,selectedTools:null});else if(Z===null||Z.length===0);else X.push({connection:K,selectedTools:Z})}}else{let Y=Q.connections.map(($)=>$.connectionId),W=[];for(let $ of Y){let K=await J.storage.connections.findById($);if(K&&K.status==="active")W.push(K)}X=W.map(($)=>{let K=Q.connections.find((Z)=>Z.connectionId===$.id);return{connection:$,selectedTools:K?.selectedTools??null}})}let G={connections:X,toolSelectionMode:Q.toolSelectionMode,toolSelectionStrategy:Q.toolSelectionStrategy};return rI4(G,J)}F71.all("/gateway/:gatewayId?",async(Q)=>{let J=Q.req.param("gatewayId"),X=Q.get("meshContext");try{let G=null;if(J)G=await X.storage.gateways.findById(J);else{let Z=Q.req.header("x-org-id"),H=Q.req.header("x-org-slug");if(Z)G=await X.storage.gateways.getDefaultByOrgId(Z);else if(H)G=await X.storage.gateways.getDefaultByOrgSlug(H);else return Q.json({error:"Gateway ID required, or provide x-org-id or x-org-slug header for default gateway"},400)}if(!G){if(J)return Q.json({error:`Gateway not found: ${J}`},404);return Q.json({error:"No default gateway configured for this organization"},404)}if(X.gatewayId=G.id,G.status!=="active")return Q.json({error:`Gateway is inactive: ${G.id}`},503);let Y=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organizationId).executeTakeFirst();if(Y)X.organization={id:Y.id,slug:Y.slug,name:Y.name};let W=await aI4(G,X),$=new tH({name:`mcp-gateway-${G.title}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}}}),K=new Kq({enableJsonResponse:Q.req.header("Accept")?.includes("application/json")??!1});return await $.connect(K),$.server.setRequestHandler(bK,async(Z)=>{return W.client.listTools()}),$.server.setRequestHandler(xK,async(Z)=>{return await W.client.callTool(Z.params)}),$.server.setRequestHandler(kK,async()=>{return W.client.listResources()}),$.server.setRequestHandler(yK,async(Z)=>{return W.client.readResource(Z.params)}),$.server.setRequestHandler(_K,async()=>{return W.client.listResourceTemplates()}),$.server.setRequestHandler(hK,async()=>{return W.client.listPrompts()}),$.server.setRequestHandler(fK,async(Z)=>{return W.client.getPrompt(Z.params)}),await K.handleMessage(Q.req.raw).then(async(Z)=>{return Z})}catch(G){let Y=G;return console.error("[gateway] Error handling gateway request:",Y),Q.json({error:"Internal server error",message:Y.message},500)}});var V71=F71;z90();var z71=new i5;z71.all("/",async(Q)=>{return V90(Q.get("meshContext")).fetch(Q.req.raw)});var U71=z71;var d71="vercel.ai.error",oI4=Symbol.for(d71),N71,B71,D1=class Q extends(B71=Error,N71=oI4,B71){constructor({name:J,message:X,cause:G}){super(X);this[N71]=!0,this.name=J,this.cause=G}static isInstance(J){return Q.hasMarker(J,d71)}static hasMarker(J,X){let G=Symbol.for(X);return J!=null&&typeof J==="object"&&G in J&&typeof J[G]==="boolean"&&J[G]===!0}},p71="AI_APICallError",c71=`vercel.ai.error.${p71}`,sI4=Symbol.for(c71),O71,D71,H9=class extends(D71=D1,O71=sI4,D71){constructor({message:Q,url:J,requestBodyValues:X,statusCode:G,responseHeaders:Y,responseBody:W,cause:$,isRetryable:K=G!=null&&(G===408||G===409||G===429||G>=500),data:Z}){super({name:p71,message:Q,cause:$});this[O71]=!0,this.url=J,this.requestBodyValues=X,this.statusCode=G,this.responseHeaders=Y,this.responseBody=W,this.isRetryable=K,this.data=Z}static isInstance(Q){return D1.hasMarker(Q,c71)}},n71="AI_EmptyResponseBodyError",i71=`vercel.ai.error.${n71}`,tI4=Symbol.for(i71),L71,w71,r71=class extends(w71=D1,L71=tI4,w71){constructor({message:Q="Empty response body"}={}){super({name:n71,message:Q});this[L71]=!0}static isInstance(Q){return D1.hasMarker(Q,i71)}};function YG(Q){if(Q==null)return"unknown error";if(typeof Q==="string")return Q;if(Q instanceof Error)return Q.message;return JSON.stringify(Q)}var a71="AI_InvalidArgumentError",o71=`vercel.ai.error.${a71}`,eI4=Symbol.for(o71),P71,M71,s71=class extends(M71=D1,P71=eI4,M71){constructor({message:Q,cause:J,argument:X}){super({name:a71,message:Q,cause:J});this[P71]=!0,this.argument=X}static isInstance(Q){return D1.hasMarker(Q,o71)}},t71="AI_InvalidPromptError",e71=`vercel.ai.error.${t71}`,QC4=Symbol.for(e71),T71,A71,Hq=class extends(A71=D1,T71=QC4,A71){constructor({prompt:Q,message:J,cause:X}){super({name:t71,message:`Invalid prompt: ${J}`,cause:X});this[T71]=!0,this.prompt=Q}static isInstance(Q){return D1.hasMarker(Q,e71)}},QG1="AI_InvalidResponseDataError",JG1=`vercel.ai.error.${QG1}`,JC4=Symbol.for(JG1),E71,j71,Eb6=class extends(j71=D1,E71=JC4,j71){constructor({data:Q,message:J=`Invalid response data: ${JSON.stringify(Q)}.`}){super({name:QG1,message:J});this[E71]=!0,this.data=Q}static isInstance(Q){return D1.hasMarker(Q,JG1)}},XG1="AI_JSONParseError",YG1=`vercel.ai.error.${XG1}`,XC4=Symbol.for(YG1),I71,C71,mP=class extends(C71=D1,I71=XC4,C71){constructor({text:Q,cause:J}){super({name:XG1,message:`JSON parsing failed: Text: ${Q}.
|
|
1068
|
+
`})}}}var LI4=[Z00({organizationCreation:{afterCreate:async(Q)=>{await LY1(Q.organization.id,Q.member.userId)}},ac:B_,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:wY1,resourceNameValidation:(Q)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test(Q)}}},roles:{user:BI4,admin:OI4,owner:DI4},sendInvitationEmail:EY1}),T00({loginPage:"/login",oidcConfig:{scopes:AY1,metadata:{scopes_supported:AY1},loginPage:"/login"}}),M00({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:(Q)=>{if(Q.headers?.get("X-MCP-Session-Auth")==="true")return null;let X=Q.headers?.get("Authorization");if(X?.startsWith("Bearer "))return X.replace("Bearer ","").trim();return null},permissions:{defaultPermissions:{self:["ORGANIZATION_LIST","ORGANIZATION_GET","ORGANIZATION_MEMBER_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","API_KEY_CREATE","API_KEY_LIST"]}}}),F00({defaultRole:"user",adminRoles:["admin","owner"]}),I00(),U00({jwt:{expirationTime:"5m"}}),rt0(Z9.ssoConfig?PY1(Z9.ssoConfig):void 0),...Z9.magicLinkConfig&&Z9.emailProviders&&Z9.emailProviders.length>0?[j00(H61(Z9.magicLinkConfig,Z9.emailProviders))]:[]],wI4=q10(),PI4=Z61(wI4),RW=Le({baseURL:process.env.BASE_URL||"http://localhost:3000",database:PI4,emailAndPassword:{enabled:!0},...Z9,plugins:LI4,databaseHooks:{user:{create:{after:async(Q)=>{if(Hv.autoCreateOrganizationOnSignup===!1)return;let J=Q.name?Q.name.split(" ")[0]:Q.email.split("@")[0],X=3;for(let G=0;G<X;G++){let Y=`${J} ${zI4()}`,W=VI4(Y);try{await RW.api.createOrganization({body:{name:Y,slug:W,userId:Q.id}});return}catch($){if(!($ instanceof Error&&("body"in $)&&$.body?.code==="ORGANIZATION_ALREADY_EXISTS")||G===X-1){console.error("Failed to create default organization:",$);return}}}}}}}});PJ();import{randomBytes as MI4}from"crypto";var yP=null;function jY1(){if(yP)return yP;let Q=process.env.MESH_JWT_SECRET??Z9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Q)yP=new TextEncoder().encode(Q);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),yP=new Uint8Array(MI4(32));return yP}async function IY1(Q,J="5m"){let X=jY1();return await new mQ(Q).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(J).sign(X)}async function CY1(Q){try{let J=jY1(),{payload:X}=await B8(Q,J);return X}catch{return}}class N90{db;constructor(Q){this.db=Q}async get(Q){let J=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Q).executeTakeFirst();if(!J)return null;return{organizationId:J.organizationId,sidebar_items:J.sidebar_items?typeof J.sidebar_items==="string"?JSON.parse(J.sidebar_items):J.sidebar_items:null,createdAt:J.createdAt,updatedAt:J.updatedAt}}async upsert(Q,J){let X=new Date().toISOString(),G=J?.sidebar_items?JSON.stringify(J.sidebar_items):null;await this.db.insertInto("organization_settings").values({organizationId:Q,sidebar_items:G,createdAt:X,updatedAt:X}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:G?G:void 0,updatedAt:X})).execute();let Y=await this.get(Q);if(!Y)return{organizationId:Q,sidebar_items:J?.sidebar_items??null,createdAt:X,updatedAt:X};return Y}}gH();class RY1 extends Error{constructor(Q){super(Q);this.name="UnauthorizedError"}}class B90 extends Error{constructor(Q){super(Q);this.name="ForbiddenError"}}class xU{userId;toolName;boundAuth;role;connectionId;_granted=!1;constructor(Q,J,X,G,Y,W=EY.SELF){this.userId=J;this.toolName=X;this.boundAuth=G;this.role=Y;this.connectionId=W}[Symbol.dispose](){this._granted=!1}setToolName(Q){this.toolName=Q}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Q){if(this._granted)return;if(!this.userId&&!this.boundAuth)throw new RY1("Authentication required. Please provide a valid OAuth token or API key.");let J=Q.length>0?Q:this.toolName?[this.toolName]:[];if(J.length===0)throw new B90("No resources specified for access check");for(let X of J)if(await this.checkResource(X)){this.grant();return}throw new B90(`Access denied to: ${J.join(", ")}`)}async checkResource(Q){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let J={};if(this.connectionId)J[this.connectionId]=[Q];return this.boundAuth.hasPermission(J)}granted(){return this._granted}}class O90{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Q){return QO.startActiveSpan("redactor.redact",(J)=>{try{if(Q===null||Q===void 0)return Q;if(typeof Q==="string")return J.setAttribute("data.type","string"),this.redactString(Q);if(Array.isArray(Q))return J.setAttribute("data.type","array"),J.setAttribute("data.length",Q.length),Q.map((X)=>this.redact(X));if(typeof Q==="object"){J.setAttribute("data.type","object");let X={};for(let[G,Y]of Object.entries(Q)){let W=this.redactString(G);X[W]=this.redact(Y)}return X}return J.setAttribute("data.type",typeof Q),Q}finally{J.end()}})}redactString(Q){return QO.startActiveSpan("redactor.redactString",(J)=>{try{J.setAttribute("text.length",Q.length);let X=Q,G=0;for(let Y of this.patterns){let W=Q.match(Y.regex);if(W)G+=W.length,J.setAttribute(`redaction.${Y.type}.count`,W.length);X=X.replace(Y.regex,`[REDACTED:${Y.type}]`)}return J.setAttribute("redaction.total_count",G),X}finally{J.end()}})}}class D90{db;redactor;constructor(Q){this.db=Q;this.redactor=new O90}async log(Q){await this.logBatch([Q])}async logBatch(Q){if(Q.length===0)return;let J=Q.map((X)=>({...X,input:this.redactor.redact(X.input),output:this.redactor.redact(X.output)}));await this.db.transaction().execute(async(X)=>{await X.insertInto("monitoring_logs").values(J.map((G)=>this.toDbRow(G))).execute()})}async query(Q){let J=this.db.selectFrom("monitoring_logs").selectAll(),X=this.db.selectFrom("monitoring_logs").select((K)=>K.fn.count("id").as("count"));if(Q.organizationId)J=J.where("organization_id","=",Q.organizationId),X=X.where("organization_id","=",Q.organizationId);if(Q.connectionId)J=J.where("connection_id","=",Q.connectionId),X=X.where("connection_id","=",Q.connectionId);if(Q.gatewayId)J=J.where("gateway_id","=",Q.gatewayId),X=X.where("gateway_id","=",Q.gatewayId);if(Q.toolName)J=J.where("tool_name","=",Q.toolName),X=X.where("tool_name","=",Q.toolName);if(Q.isError!==void 0)J=J.where("is_error","=",Q.isError?1:0),X=X.where("is_error","=",Q.isError?1:0);if(Q.startDate)J=J.where("timestamp",">=",Q.startDate.toISOString()),X=X.where("timestamp",">=",Q.startDate.toISOString());if(Q.endDate)J=J.where("timestamp","<=",Q.endDate.toISOString()),X=X.where("timestamp","<=",Q.endDate.toISOString());if(J=J.orderBy("timestamp","desc"),Q.limit)J=J.limit(Q.limit);if(Q.offset)J=J.offset(Q.offset);let[G,Y]=await Promise.all([J.execute(),X.executeTakeFirst()]),W=Number(Y?.count||0);return{logs:G.map((K)=>this.fromDbRow(K)),total:W}}async getStats(Q){let J=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q.organizationId);if(Q.startDate)J=J.where("timestamp",">=",Q.startDate.toISOString());if(Q.endDate)J=J.where("timestamp","<=",Q.endDate.toISOString());let X=await J.select([($)=>$.fn.count("id").as("total_count"),($)=>$.fn.sum($.ref("is_error")).as("error_count"),($)=>$.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),G=Number(X?.total_count||0),Y=Number(X?.error_count||0),W=Number(X?.avg_duration||0);return{totalCalls:G,errorRate:G>0?Y/G:0,avgDurationMs:W}}toDbRow(Q){return{id:Q.id||a7("log"),organization_id:Q.organizationId,connection_id:Q.connectionId,connection_title:Q.connectionTitle,tool_name:Q.toolName,input:JSON.stringify(Q.input),output:JSON.stringify(Q.output),is_error:Q.isError?1:0,error_message:Q.errorMessage||null,duration_ms:Q.durationMs,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp,user_id:Q.userId||null,request_id:Q.requestId,user_agent:Q.userAgent||null,gateway_id:Q.gatewayId||null}}fromDbRow(Q){let J=typeof Q.input==="string"?JSON.parse(Q.input):Q.input,X=typeof Q.output==="string"?JSON.parse(Q.output):Q.output,G=typeof Q.timestamp==="string"?new Date(Q.timestamp):Q.timestamp;return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,connectionTitle:Q.connection_title,toolName:Q.tool_name,input:J,output:X,isError:Q.is_error===1,errorMessage:Q.error_message,durationMs:Q.duration_ms,timestamp:G,userId:Q.user_id,requestId:Q.request_id,userAgent:Q.user_agent,gatewayId:Q.gateway_id}}}gH();_80();function SY1(Q){let J=null;return()=>{if(J)return J;return J=Q().catch((X)=>{throw J=null,X}),J}}class vY1{factory;promise=null;constructor(Q){this.factory=Q}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Q,J){return this.getOrCreatePromise().then(Q,J)}catch(Q){return this.getOrCreatePromise().catch(Q)}finally(Q){return this.getOrCreatePromise().finally(Q)}}function XG(Q){return new vY1(Q)}Kk();QP();yk();yJ();W_();var O_=new i5;async function kY1(Q,J){return(await J.storage.connections.findById(Q))?.connection_url??null}async function D_(Q){let X=new URL(Q).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let G=new URL(Q);G.pathname=`${X}/.well-known/oauth-protected-resource`;let Y=await fetch(G.toString(),{method:"GET",headers:{Accept:"application/json"}});if(Y.ok)return Y;if(Y.status!==404&&Y.status!==401)return Y;let W=new URL(Q);if(W.pathname=`/.well-known/oauth-protected-resource${X}`,Y=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),Y.status!==404&&Y.status!==401)return Y;let $=new URL(Q);return $.pathname="/.well-known/oauth-protected-resource",Y=await fetch($.toString(),{method:"GET",headers:{Accept:"application/json"}}),Y}async function TI4(Q,J){let X=await kY1(Q,J);if(!X)return null;try{let G=await D_(X);if(!G.ok)return null;return(await G.json()).authorization_servers?.[0]??null}catch{return null}}async function _Y1(Q){let J=Q.get("meshContext");if(!J)J=await JZ.create(Q.req.raw),Q.set("meshContext",J);return J}async function yY1({error:Q,reqUrl:J,connectionId:X,connectionUrl:G,headers:Y}){if(!(Q.status===401||Q.message?.includes("401")||Q.message?.toLowerCase().includes("unauthorized")))return null;if(await fetch(G,{method:"POST",headers:{...Y,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})}).then((K)=>K.headers.has("WWW-Authenticate")).catch(()=>!1))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${J.origin}/mcp/${X}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}var L_=(Q)=>{if(!(Q.hostname==="localhost"||Q.hostname==="127.0.0.1"))Q.protocol="https:";return Q},hY1=async(Q)=>{let J=Q.req.param("connectionId"),X=await _Y1(Q),G=await kY1(J,X);if(!G)return Q.json({error:"Connection not found"},404);try{let Y=await D_(G);if(!Y.ok)return new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}});let W=await Y.json(),$=L_(new URL(Q.req.url)),K=`${$.origin}/mcp/${J}`,Z=`${$.origin}/oauth-proxy/${J}`,H={...W,resource:K,authorization_servers:[Z]};return new Response(JSON.stringify(H),{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}})}catch(Y){let W=Y;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",W),Q.json({error:"Failed to proxy OAuth metadata",message:W.message},502)}};O_.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Q)=>hY1(Q));O_.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Q)=>hY1(Q));async function L90(Q){let X=new URL(Q).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let G=X!==""&&X!=="/",Y=[];if(G){let $=new URL(Q);$.pathname=`/.well-known/oauth-authorization-server${X}`,Y.push($);let K=new URL(Q);K.pathname=`/.well-known/openid-configuration${X}`,Y.push(K);let Z=new URL(Q);Z.pathname=`${X}/.well-known/openid-configuration`,Y.push(Z)}else{let $=new URL(Q);$.pathname="/.well-known/oauth-authorization-server",Y.push($);let K=new URL(Q);K.pathname="/.well-known/openid-configuration",Y.push(K)}let W=null;for(let $ of Y){if(W=await fetch($.toString(),{method:"GET",headers:{Accept:"application/json"}}),W.ok)return W;if(W.status!==404&&W.status!==401)return W}return W}O_.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Q)=>{let J=Q.req.param("connectionId"),X=await _Y1(Q),G=await TI4(J,X);if(!G)return Q.json({error:"Connection not found or no auth server"},404);try{let Y=await L90(G);if(!Y.ok)return new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:{"Content-Type":"application/json"}});let W=await Y.json(),K=`${L_(new URL(Q.req.url)).origin}/oauth-proxy/${J}`,Z={...W,authorization_endpoint:W.authorization_endpoint?`${K}/authorize`:void 0,token_endpoint:W.token_endpoint?`${K}/token`:void 0,registration_endpoint:W.registration_endpoint?`${K}/register`:void 0};return new Response(JSON.stringify(Z),{status:200,headers:{"Content-Type":"application/json"}})}catch(Y){let W=Y;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",W),Q.json({error:"Failed to proxy auth server metadata",message:W.message},502)}});var fY1=O_;function AI4(Q){if(!Q.isError)return;let J=Q.content;if(!Array.isArray(J))return;for(let X of J)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function bY1(Q){if(Q&&typeof Q==="object"&&!Array.isArray(Q)){let J=Q,X=J.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return J}return{value:Q}}async function EI4(Q,J){let X=Q.body;if(!X)return{text:"",truncated:!1};let G=X.getReader(),Y=new TextDecoder,W=!1,$=0,K=[];try{while(!0){let{value:Z,done:H}=await G.read();if(H)break;if(Z){if($+=Z.byteLength,$>J){W=!0;let q=J-($-Z.byteLength);if(q>0)K.push(Y.decode(Z.slice(0,q),{stream:!0}));break}K.push(Y.decode(Z,{stream:!0}))}}}finally{G.releaseLock()}return K.push(Y.decode()),{text:K.join(""),truncated:W}}async function hP(Q){let{ctx:J,enabled:X}=Q,G=Q.organizationId??J.organization?.id;if(!X||!G)return;await J.storage.monitoring.log({organizationId:G,connectionId:Q.connectionId,connectionTitle:Q.connectionTitle,toolName:Q.request.params.name,input:Q.request.params.arguments??{},output:Q.output,isError:Q.isError,errorMessage:Q.errorMessage,durationMs:Q.durationMs,timestamp:new Date,userId:J.auth.user?.id||J.auth.apiKey?.userId||null,requestId:J.metadata.requestId,userAgent:J.metadata.userAgent,gatewayId:J.gatewayId})}function xY1(Q){let{ctx:J,enabled:X,connectionId:G,connectionTitle:Y}=Q;return async(W,$)=>{let K=Date.now();try{let Z=await $(),H=Date.now()-K;return await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:bY1(Z),isError:Boolean(Z.isError),errorMessage:AI4(Z),durationMs:H}),Z}catch(Z){let H=Z,q=Date.now()-K;throw await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:H.message,durationMs:q}),Z}}}function gY1(Q){let{ctx:J,enabled:X,connectionId:G,connectionTitle:Y}=Q;return async(W,$)=>{let K=Date.now();try{let Z=await $(),H=J.organization?.id;if(X&&H){let q=Z.clone();(async()=>{try{let{text:F,truncated:V}=await EI4(q,262144),z=Date.now()-K,U=q.headers.get("content-type")??"",N=F;if(U.includes("application/json"))try{N=F.length?JSON.parse(F):null}catch{N=F}let D=Z.status>=400,w=D&&N&&typeof N==="object"&&"error"in N?N.error:void 0,A=typeof w==="string"&&w?w:D&&typeof N==="string"&&N.trim()?N.slice(0,500):D?`HTTP ${Z.status} ${Z.statusText}`.trim():V?"Response body truncated to 262144 bytes":void 0;await hP({ctx:J,enabled:X,organizationId:H,connectionId:G,connectionTitle:Y,request:W,output:bY1(N),isError:D,errorMessage:A,durationMs:z})}catch(F){let V=Date.now()-K;await hP({ctx:J,enabled:X,organizationId:H,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${F.message}`,durationMs:V})}})()}return Z}catch(Z){let H=Z,q=Date.now()-K;throw await hP({ctx:J,enabled:X,connectionId:G,connectionTitle:Y,request:W,output:{},isError:!0,errorMessage:H.message,durationMs:q}),Z}}}var uY1=new i5;function jI4(Q,J){return async(X,G)=>{try{let Y=X.params.name;return await new xU(Q.authInstance,Q.auth.user?.id??Q.auth.apiKey?.userId,Y,Q.boundAuth,Q.auth.user?.role,J).check(Y),await G()}catch(Y){return{content:[{type:"text",text:`Authorization failed: ${Y.message}`}],isError:!0}}}}function II4(Q,J){return async(X,G)=>{try{let Y=X.params.name;return await new xU(Q.authInstance,Q.auth.user?.id??Q.auth.apiKey?.userId,Y,Q.boundAuth,Q.auth.user?.role,J).check(Y),await G()}catch(Y){return new Response(JSON.stringify({error:`Authorization failed: ${Y.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}async function mY1(Q,J,{superUser:X}){let G=typeof Q==="string"?await J.storage.connections.findById(Q,J.organization?.id):Q;if(!G)throw Error("Connection not found");let Y=G?.id;if(J.organization&&G.organization_id!==J.organization.id)throw Error("Connection does not belong to the active organization");if(J.organization??={id:G.organization_id},G.status!=="active")throw Error(`Connection inactive: ${G.status}`);let W,$=J.auth.user?.connectionId,K=SY1(async()=>{let y=k80(G.configuration_state,G.configuration_scopes),f=J.auth.user?.id??J.auth.apiKey?.userId;if(!f){console.error("User ID required to issue configuration token");return}try{W=await IY1({sub:f,user:{id:f},metadata:{state:G.configuration_state??void 0,meshUrl:process.env.MESH_URL??J.baseUrl,connectionId:Y,organizationId:J.organization?.id},permissions:y})}catch(m){console.error("Failed to issue configuration token:",m)}}),Z=async()=>{await K();let y={...$?{"x-caller-id":$}:{}};if(G.connection_token)y.Authorization=`Bearer ${G.connection_token}`;if(W)y["x-mesh-token"]=W;if(G.connection_headers)Object.assign(y,G.connection_headers);return y},H=async()=>{let y=await Z(),f=new MW(new URL(G.connection_url),{requestInit:{headers:y}}),m=new oH({name:"mcp-mesh-proxy",version:"1.0.0"});return await m.connect(f),m},q=X?async(y,f)=>await f():jI4(J,Y),F=X?async(y,f)=>await f():II4(J,Y),V={enabled:y01().enabled,connectionId:Y,connectionTitle:G.title,ctx:J},z=xY1(V),U=gY1(V),N=VP(z,q),D=VP(U,F),w=async(y)=>{return N(y,async()=>{let f=await H(),m=Date.now();return await J.tracer.startActiveSpan("mcp.proxy.callTool",{attributes:{"connection.id":Y,"tool.name":y.params.name}},async(b)=>{try{let v=await f.callTool(y.params),x=Date.now()-m;return J.meter.createHistogram("connection.proxy.duration").record(x,{"connection.id":Y,"tool.name":y.params.name,status:"success"}),J.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":Y,"tool.name":y.params.name,status:"success"}),b.end(),v}catch(v){let x=v,Q0=Date.now()-m;throw J.meter.createHistogram("connection.proxy.duration").record(Q0,{"connection.id":Y,"tool.name":y.params.name,status:"error"}),J.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":Y,"tool.name":y.params.name,error:x.message}),b.recordException(x),b.end(),v}})})};return{fetch:async(y)=>{let f=new URL(y.url),m;try{m=await H()}catch(x){let Q0=await yY1({error:x,reqUrl:f,connectionId:Y,connectionUrl:G.connection_url,headers:await Z()});if(Q0)return Q0;throw x}let b=new tH({name:"mcp-mesh",version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}}}),v=new Kq({enableJsonResponse:y.headers.get("Accept")?.includes("application/json")??!1});return await b.connect(v),b.server.setRequestHandler(bK,async(x)=>{return await m.listTools()}),b.server.setRequestHandler(xK,w),b.server.setRequestHandler(kK,async()=>{return await m.listResources()}),b.server.setRequestHandler(yK,async(x)=>{return await m.readResource(x.params)}),b.server.setRequestHandler(_K,async()=>{return await m.listResourceTemplates()}),b.server.setRequestHandler(hK,async()=>{return await m.listPrompts()}),b.server.setRequestHandler(fK,async(x)=>{return await m.getPrompt(x.params)}),await v.handleMessage(y)},client:{callTool:(y)=>{return w({method:"tools/call",params:y})},listTools:async()=>{if(G.tools&&G.tools.length>0)return{tools:G.tools.map((f)=>({name:f.name,description:f.description,inputSchema:f.inputSchema}))};return await(await H()).listTools()},listResources:async()=>{return await(await H()).listResources()},readResource:async(y)=>{return await(await H()).readResource(y)},listResourceTemplates:async()=>{return await(await H()).listResourceTemplates()},listPrompts:async()=>{return await(await H()).listPrompts()},getPrompt:async(y)=>{return await(await H()).getPrompt(y)}},callStreamableTool:async(y,f)=>{let m={method:"tools/call",params:{name:y,arguments:f}};return D(m,async()=>{let b=await Z(),v=new URL(G.connection_url);return v.pathname=v.pathname.replace(/\/$/,"")+`/call-tool/${m.params.name}`,await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":Y,"tool.name":m.params.name}},async(x)=>{let Q0=Date.now();try{let c=await fetch(v.toString(),{method:"POST",redirect:"manual",body:JSON.stringify(m.params.arguments),headers:{...b,"Content-Type":"application/json"}}),G0=Date.now()-Q0;return J.meter.createHistogram("connection.proxy.streamable.duration").record(G0,{"connection.id":Y,"tool.name":m.params.name,status:c.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":Y,"tool.name":m.params.name,status:c.ok?"success":"error"}),x.end(),c}catch(c){let G0=c,U0=Date.now()-Q0;throw J.meter.createHistogram("connection.proxy.streamable.duration").record(U0,{"connection.id":Y,"tool.name":m.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":Y,"tool.name":m.params.name,error:G0.message}),x.recordException(G0),x.end(),c}})})}}}async function lY1(Q,J){return mY1(Q,J,{superUser:!1})}async function dY1(Q,J){return mY1(Q,J,{superUser:!0})}uY1.all("/:connectionId",async(Q)=>{let J=Q.req.param("connectionId"),X=Q.get("meshContext");try{return await(await X.createMCPProxy(J)).fetch(Q.req.raw)}catch(G){let Y=G;if(Y.message.includes("not found"))return Q.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return Q.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return Q.json({error:Y.message},503);return Q.json({error:"Internal server error",message:Y.message},500)}});var pY1=uY1;function CI4(Q,J){for(let[X,G]of Object.entries(J)){let Y=Q[X];if(!Y||Y.length===0){let W=Q["*"];if(!W||W.length===0)return!1;if(W.includes("*"))continue;for(let $ of G)if(!W.includes($))return!1;continue}if(Y.includes("*"))continue;for(let W of G)if(!Y.includes(W))return!1}return!0}function RI4(Q){let{auth:J,headers:X,role:G,permissions:Y,userId:W}=Q,$=J.api.hasPermission;return{hasPermission:async(K)=>{if(G&&U90.includes(G))return!0;if(Y)return CI4(Y,K);if(!$)return console.error("[Auth] hasPermission API not available"),!1;try{if((await $({headers:X,body:{permission:K}}))?.success===!0)return!0;let H={};for(let F of Object.keys(K))H[F]=["*"];return(await $({headers:X,body:{permission:H}}))?.success===!0}catch(Z){return console.error("[Auth] Permission check failed:",Z),!1}},organization:{create:async(K)=>{return J.api.createOrganization({headers:X,body:K})},update:async(K)=>{return J.api.updateOrganization({headers:X,body:K})},delete:async(K)=>{await J.api.deleteOrganization({headers:X,body:{organizationId:K}})},get:async(K)=>{return J.api.getFullOrganization({headers:X,query:K?{organizationId:K}:void 0})},list:async(K)=>{return J.api.listOrganizations({headers:X,query:K?{userId:K}:void 0})},addMember:async(K)=>{return J.api.addMember({headers:X,body:K})},removeMember:async(K)=>{await J.api.removeMember({headers:X,body:K})},listMembers:async(K)=>{return J.api.listMembers({headers:X,query:K?{organizationId:K.organizationId,limit:K.limit,offset:K.offset}:void 0})},updateMemberRole:async(K)=>{return J.api.updateMemberRole({headers:X,body:K})}},apiKey:{create:async(K)=>{return J.api.createApiKey({body:{...K,userId:W}})},list:async()=>{return J.api.listApiKeys({headers:X})},update:async(K)=>{return J.api.updateApiKey({body:{...K,userId:W}})},delete:async(K)=>{await J.api.deleteApiKey({headers:X,body:{keyId:K}})}}}}async function SI4(Q,J,X){if(U90.includes(X))return;let G=await Q.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",J).where("role","=",X).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${X}`);return}}async function vI4(Q,J,X){let G=Q.headers.get("Authorization");try{let Y=new Headers(Q.headers);Y.set("X-MCP-Session-Auth","true");let W=await J.api.getMcpSession({headers:Y});if(W){let $=W.userId,K=await X.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",$).executeTakeFirst(),Z=K?.role,H=K?{id:K.orgId,slug:K.orgSlug,name:K.orgName}:void 0,q;if(K&&Z)q=await SI4(X,K.organizationId,Z);return{user:{id:$,role:Z},role:Z,permissions:q,organization:H}}}catch(Y){console.error("[Auth] OAuth session check failed:",Y)}if(G?.startsWith("Bearer ")){let Y=G.replace("Bearer ","").trim();try{let W=await CY1(Y);if(W)return{user:{id:W.sub,connectionId:W.metadata?.connectionId},permissions:W.permissions,organization:W.metadata?.organizationId?{id:W.metadata?.organizationId}:void 0}}catch{}try{let W=await J.api.verifyApiKey({body:{key:Y}});if(W?.valid&&W.key){let $=W.key.metadata?.organization,K=W.key.permissions;return{apiKeyId:W.key.id,user:{id:W.key.userId},permissions:K,organization:$?{id:$.id,slug:$.slug,name:$.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let Y=await J.api.getSession({headers:Q.headers});if(Y){let W,$;if(Y.session.activeOrganizationId){let K=await J.api.getFullOrganization({headers:Q.headers}).catch(()=>null);if(K)W={id:K.id,slug:K.slug,name:K.name},$=K.members?.find((H)=>H.userId===Y.user.id)?.role;else W={id:Y.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Y.user.id,email:Y.user.email,role:$},role:$,organization:W}}}catch(Y){console.error("[Auth] Session check failed:",Y)}return{user:void 0}}var cY1,JZ={set:(Q)=>{cY1=Q},create:async(Q)=>{return await cY1(Q)}};function nY1(Q){let J=new _w(Q.encryption.key),X={connections:new yw(Q.db,J),organizationSettings:new N90(Q.db),monitoring:new D90(Q.db),gateways:new hw(Q.db)};return async(G)=>{let Y=G?.headers.get("x-caller-id")??void 0,W=G?await vI4(G,Q.auth,Q.db):{user:void 0},$=RI4({auth:Q.auth,headers:G?.headers??new Headers,role:W.role,permissions:W.permissions,userId:W.user?.id}),K={user:W.user};if(W.apiKeyId)K.apiKey={id:W.apiKeyId,name:"",userId:""};let Z=W.organization,H=G?new URL(G.url):new URL("http://localhost:3000"),q=process.env.BASE_URL??`${H.protocol}//${H.host}`,F=new xU(Q.auth,K.user?.id,void 0,$,W.role,EY.SELF),V={auth:K,connectionId:Y,organization:Z,storage:X,vault:J,authInstance:Q.auth,boundAuth:$,access:F,db:Q.db,tracer:Q.observability.tracer,meter:Q.observability.meter,baseUrl:q,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,userAgent:G?.headers.get("x-mesh-client")||G?.headers.get("User-Agent")||void 0,ipAddress:(G?.headers.get("CF-Connecting-IP")||G?.headers.get("X-Forwarded-For"))??void 0},eventBus:Q.eventBus,createMCPProxy:async(z)=>{return await lY1(z,V)}};return V}}var fP={HEALTH:"/health",METRICS:"/metrics"},bP={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known"},kI4=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/;function iY1(Q){return Q===fP.HEALTH||Q===fP.METRICS||Q.startsWith(bP.WELL_KNOWN)}function _I4(Q){return Q.startsWith(bP.API)}function yI4(Q){return Q==="/mcp"||Q.startsWith(bP.MCP)}function hI4(Q){return Q.startsWith(bP.OAUTH_PROXY)}function fI4(Q){return kI4.test(Q)}function rY1(Q){return _I4(Q)||yI4(Q)||hI4(Q)||iY1(Q)}function aY1(Q){return Q==="/"||Q.startsWith(bP.API_AUTH)||iY1(Q)||fI4(Q)}class oY1{db;constructor(Q){this.db=Q}async publishEvent(Q){let J=new Date().toISOString();return await this.db.insertInto("events").values({id:Q.id,organization_id:Q.organizationId,type:Q.type,source:Q.source,specversion:"1.0",subject:Q.subject??null,time:Q.time,datacontenttype:Q.datacontenttype??"application/json",dataschema:Q.dataschema??null,data:Q.data?JSON.stringify(Q.data):null,cron:Q.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:J,updated_at:J}).execute(),{id:Q.id,organizationId:Q.organizationId,type:Q.type,source:Q.source,specversion:"1.0",subject:Q.subject??null,time:Q.time,datacontenttype:Q.datacontenttype??"application/json",dataschema:Q.dataschema??null,data:Q.data??null,cron:Q.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:J,updatedAt:J}}async subscribe(Q){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q.organizationId).where("connection_id","=",Q.connectionId).where("event_type","=",Q.eventType);if(Q.publisher)J=J.where("publisher","=",Q.publisher);else J=J.where("publisher","is",null);if(Q.filter)J=J.where("filter","=",Q.filter);else J=J.where("filter","is",null);let X=await J.executeTakeFirst();if(X)return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at};let G=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Q.id,organization_id:Q.organizationId,connection_id:Q.connectionId,publisher:Q.publisher??null,event_type:Q.eventType,filter:Q.filter??null,enabled:1,created_at:G,updated_at:G}).execute(),{id:Q.id,organizationId:Q.organizationId,connectionId:Q.connectionId,publisher:Q.publisher??null,eventType:Q.eventType,filter:Q.filter??null,enabled:!0,createdAt:G,updatedAt:G}}async unsubscribe(Q,J){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Q).where("organization_id","=",J).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Q,J){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q);if(J)X=X.where("connection_id","=",J);return(await X.execute()).map((Y)=>({id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Y.enabled===1,createdAt:Y.created_at,updatedAt:Y.updated_at}))}async getSubscription(Q,J){let X=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}}async getMatchingSubscriptions(Q){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Q.organizationId).where("enabled","=",1).where("event_type","=",Q.type).where((X)=>X.or([X("publisher","is",null),X("publisher","=",Q.source)])).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}))}async createDeliveries(Q,J,X){if(J.length===0)return;let G=new Date().toISOString(),Y=X??null,W=J.map(($)=>({id:crypto.randomUUID(),event_id:Q,subscription_id:$,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:Y,created_at:G}));await this.db.insertInto("event_deliveries").values(W).execute()}async claimPendingDeliveries(Q){let J=new Date().toISOString(),X;try{X=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(W)=>W.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where(($)=>$.or([$("d.next_retry_at","is",null),$("d.next_retry_at","<=",J)])).orderBy("d.created_at","asc").limit(Q)).where("status","=","pending").returning(["id"]).execute()).map((W)=>W.id)}catch{let Y=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",J)])).orderBy("d.created_at","asc").limit(Q).execute();if(Y.length===0)return[];X=Y.map((W)=>W.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",X).where("status","=","pending").execute()}if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((Y)=>({delivery:{id:Y.delivery_id,eventId:Y.event_id,subscriptionId:Y.subscription_id,status:Y.delivery_status,attempts:Y.delivery_attempts,lastError:Y.delivery_last_error,deliveredAt:Y.delivered_at,nextRetryAt:Y.delivery_next_retry_at,createdAt:Y.delivery_created_at},event:{id:Y.event_id,organizationId:Y.organization_id,type:Y.type,source:Y.source,specversion:Y.specversion,subject:Y.subject,time:Y.time,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema,data:Y.data?JSON.parse(Y.data):null,cron:Y.cron,status:Y.event_status,attempts:Y.event_attempts,lastError:Y.event_last_error,nextRetryAt:Y.next_retry_at,createdAt:Y.event_created_at,updatedAt:Y.event_updated_at},subscription:{id:Y.subscription_id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Y.enabled===1,createdAt:Y.subscription_created_at,updatedAt:Y.subscription_updated_at}}))}async markDeliveriesDelivered(Q){if(Q.length===0)return;let J=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:J}).where("id","in",Q).execute()}async markDeliveriesFailed(Q,J,X=20,G=1000,Y=3600000){if(Q.length===0)return;for(let W of Q){let $=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",W).executeTakeFirst();if(!$)continue;let K=$.attempts+1;if(K>=X)await this.db.updateTable("event_deliveries").set({attempts:K,last_error:J,status:"failed",next_retry_at:null}).where("id","=",W).execute();else{let Z=Math.min(G*Math.pow(2,K-1),Y),H=new Date(Date.now()+Z).toISOString();await this.db.updateTable("event_deliveries").set({attempts:K,last_error:J,status:"pending",next_retry_at:H}).where("id","=",W).execute()}}}async updateEventStatus(Q){let J=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Q).execute();if(J.length===0)return;let X=J.every((W)=>W.status==="delivered"),G=J.some((W)=>W.status==="failed"),Y=J.some((W)=>W.status==="pending"||W.status==="processing");if(X)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Q).execute();else if(G&&!Y)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Q).execute()}async resetStuckDeliveries(){let Q=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Q.numUpdatedRows??0)}async getEvent(Q,J){let X=await this.db.selectFrom("events").selectAll().where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}}async cancelEvent(Q,J,X){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Q).where("organization_id","=",J).where("source","=",X).where("status","in",["pending","processing"]).executeTakeFirst();if((G.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Q).where("status","in",["pending","processing"]).execute();return{success:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Q,J){if(Q.length===0)return;let X=new Date(Date.now()+J).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:X}).where("id","in",Q).execute()}async ackDelivery(Q,J,X){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst())return{success:!1};let W=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Q).where("status","in",["pending","processing"]).where(($)=>$.exists($.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",X).where("event_subscriptions.organization_id","=",J))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(W)await this.updateEventStatus(Q);return{success:W}}async syncSubscriptions(Q){let{organizationId:J,connectionId:X,subscriptions:G}=Q,Y=(w,A)=>{return`${w}::${A??""}`},W=await this.listSubscriptions(J,X),$=new Map;for(let w of W)$.set(Y(w.eventType,w.publisher),w);let K=new Map;for(let w of G)K.set(Y(w.eventType,w.publisher),w);let Z=new Date().toISOString(),H=[],q=[],F=[],V=0;for(let[w,A]of K){let P=$.get(w);if(!P)H.push({id:crypto.randomUUID(),organization_id:J,connection_id:X,event_type:A.eventType,publisher:A.publisher??null,filter:A.filter??null,enabled:1,created_at:Z,updated_at:Z});else{let M=P.filter??null,T=A.filter??null;if(M!==T)q.push({id:P.id,filter:T});else V++}}for(let[w,A]of $)if(!K.has(w))F.push(A.id);if(H.length>0)await this.db.insertInto("event_subscriptions").values(H).execute();if(q.length>0)await Promise.all(q.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:Z}).where("id","=",w.id).execute()));if(F.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",F).execute();let z=H.length,U=q.length,N=F.length,D=await this.listSubscriptions(J,X);return{created:z,updated:U,deleted:N,unchanged:V,subscriptions:D}}}function sY1(Q){return new oY1(Q)}function u5(Q,J,X,G,Y,W,$,K){return u5.fromTZ(u5.tp(Q,J,X,G,Y,W,$),K)}u5.fromTZISO=(Q,J,X)=>u5.fromTZ(bI4(Q,J),X);u5.fromTZ=function(Q,J){let X=new Date(Date.UTC(Q.y,Q.m-1,Q.d,Q.h,Q.i,Q.s)),G=w90(Q.tz,X),Y=new Date(X.getTime()-G),W=w90(Q.tz,Y);if(W-G===0)return Y;{let $=new Date(X.getTime()-W),K=w90(Q.tz,$);if(K-W===0)return $;if(!J&&K-W>0)return $;if(J)throw Error("Invalid date passed to fromTZ()");return Y}};u5.toTZ=function(Q,J){let X=Q.toLocaleString("en-US",{timeZone:J}).replace(/[\u202f]/," "),G=new Date(X);return{y:G.getFullYear(),m:G.getMonth()+1,d:G.getDate(),h:G.getHours(),i:G.getMinutes(),s:G.getSeconds(),tz:J}};u5.tp=(Q,J,X,G,Y,W,$)=>({y:Q,m:J,d:X,h:G,i:Y,s:W,tz:$});function w90(Q,J=new Date){let X=J.toLocaleString("en-US",{timeZone:Q,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],G=J.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${G} GMT`)-Date.parse(`${G} ${X}`)}function bI4(Q,J){let X=new Date(Date.parse(Q));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let G=Q.substring(9);return Q.includes("Z")||G.includes("-")||G.includes("+")?u5.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):u5.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),J)}u5.minitz=u5;var P90=32,gP=31|P90,J71=[1,2,4,8,16],tY1=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Q,J){this.pattern=Q,this.timezone=J,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Q=this.pattern.replace(/\s+/g," ").split(" ");if(Q.length<5||Q.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Q.length===5&&Q.unshift("0"),Q[3].indexOf("L")>=0&&(Q[3]=Q[3].replace("L",""),this.lastDayOfMonth=!0),Q[3]=="*"&&(this.starDOM=!0),Q[4].length>=3&&(Q[4]=this.replaceAlphaMonths(Q[4])),Q[5].length>=3&&(Q[5]=this.replaceAlphaDays(Q[5])),Q[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let J=new uX(new Date,this.timezone).getDate(!0);Q[0]=Q[0].replace("?",J.getSeconds().toString()),Q[1]=Q[1].replace("?",J.getMinutes().toString()),Q[2]=Q[2].replace("?",J.getHours().toString()),this.starDOM||(Q[3]=Q[3].replace("?",J.getDate().toString())),Q[4]=Q[4].replace("?",(J.getMonth()+1).toString()),this.starDOW||(Q[5]=Q[5].replace("?",J.getDay().toString()))}this.throwAtIllegalCharacters(Q),this.partToArray("second",Q[0],0,1),this.partToArray("minute",Q[1],0,1),this.partToArray("hour",Q[2],0,1),this.partToArray("day",Q[3],-1,1),this.partToArray("month",Q[4],-1,1),this.partToArray("dayOfWeek",Q[5],0,gP),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Q,J,X,G){let Y=this[Q],W=Q==="day"&&this.lastDayOfMonth;if(J===""&&!W)throw TypeError("CronPattern: configuration entry "+Q+" ("+J+") is empty, check for trailing spaces.");if(J==="*")return Y.fill(G);let $=J.split(",");if($.length>1)for(let K=0;K<$.length;K++)this.partToArray(Q,$[K],X,G);else J.indexOf("-")!==-1&&J.indexOf("/")!==-1?this.handleRangeWithStepping(J,Q,X,G):J.indexOf("-")!==-1?this.handleRange(J,Q,X,G):J.indexOf("/")!==-1?this.handleStepping(J,Q,X,G):J!==""&&this.handleNumber(J,Q,X,G)}throwAtIllegalCharacters(Q){for(let J=0;J<Q.length;J++)if((J===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Q[J]))throw TypeError("CronPattern: configuration entry "+J+" ("+Q[J]+") contains illegal characters.")}handleNumber(Q,J,X,G){let Y=this.extractNth(Q,J),W=parseInt(Y[0],10)+X;if(isNaN(W))throw TypeError("CronPattern: "+J+" is not a number: '"+Q+"'");this.setPart(J,W,Y[1]||G)}setPart(Q,J,X){if(!Object.prototype.hasOwnProperty.call(this,Q))throw TypeError("CronPattern: Invalid part specified: "+Q);if(Q==="dayOfWeek"){if(J===7&&(J=0),J<0||J>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+J);this.setNthWeekdayOfMonth(J,X);return}if(Q==="second"||Q==="minute"){if(J<0||J>=60)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="hour"){if(J<0||J>=24)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="day"){if(J<0||J>=31)throw RangeError("CronPattern: Invalid value for "+Q+": "+J)}else if(Q==="month"&&(J<0||J>=12))throw RangeError("CronPattern: Invalid value for "+Q+": "+J);this[Q][J]=X}handleRangeWithStepping(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(W===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Q+"'");let[,$,K,Z]=W,H=parseInt($,10)+X,q=parseInt(K,10)+X,F=parseInt(Z,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(q))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(F===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(F>this[J].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[J].length+")");if(H>q)throw TypeError("CronPattern: From value is larger than to value: '"+Q+"'");for(let V=H;V<=q;V+=F)this.setPart(J,V,Y[1]||G)}extractNth(Q,J){let X=Q,G;if(X.includes("#")){if(J!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");G=X.split("#")[1],X=X.split("#")[0]}return[X,G]}handleRange(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].split("-");if(W.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Q+"'");let $=parseInt(W[0],10)+X,K=parseInt(W[1],10)+X;if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if($>K)throw TypeError("CronPattern: From value is larger than to value: '"+Q+"'");for(let Z=$;Z<=K;Z++)this.setPart(J,Z,Y[1]||G)}handleStepping(Q,J,X,G){let Y=this.extractNth(Q,J),W=Y[0].split("/");if(W.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Q+"'");W[0]===""&&(W[0]="*");let $=0;W[0]!=="*"&&($=parseInt(W[0],10)+X);let K=parseInt(W[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[J].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[J].length+")");for(let Z=$;Z<this[J].length;Z+=K)this.setPart(J,Z,Y[1]||G)}replaceAlphaDays(Q){return Q.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Q){return Q.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Q){let J=Q.trim().toLowerCase();return J==="@yearly"||J==="@annually"?"0 0 1 1 *":J==="@monthly"?"0 0 1 * *":J==="@weekly"?"0 0 * * 0":J==="@daily"?"0 0 * * *":J==="@hourly"?"0 * * * *":Q}setNthWeekdayOfMonth(Q,J){if(typeof J!="number"&&J==="L")this.dayOfWeek[Q]=this.dayOfWeek[Q]|P90;else if(J===gP)this.dayOfWeek[Q]=gP;else if(J<6&&J>0)this.dayOfWeek[Q]=this.dayOfWeek[Q]|J71[J-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${J}, Type: ${typeof J}`)}},eY1=[31,28,31,30,31,30,31,31,30,31,30,31],SW=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]],uX=class Q{tz;ms;second;minute;hour;day;month;year;constructor(J,X){if(this.tz=X,J&&J instanceof Date)if(!isNaN(J))this.fromDate(J);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(J===void 0)this.fromDate(new Date);else if(J&&typeof J=="string")this.fromString(J);else if(J instanceof Q)this.fromCronDate(J);else throw TypeError("CronDate: Invalid type ("+typeof J+") passed to CronDate constructor")}isNthWeekdayOfMonth(J,X,G,Y){let W=new Date(Date.UTC(J,X,G)).getUTCDay(),$=0;for(let K=1;K<=G;K++)new Date(Date.UTC(J,X,K)).getUTCDay()===W&&$++;if(Y&gP&&J71[$-1]&Y)return!0;if(Y&P90){let K=new Date(Date.UTC(J,X+1,0)).getUTCDate();for(let Z=G+1;Z<=K;Z++)if(new Date(Date.UTC(J,X,Z)).getUTCDay()===W)return!1;return!0}return!1}fromDate(J){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=J.getUTCMilliseconds(),this.second=J.getUTCSeconds(),this.minute=J.getUTCMinutes()+this.tz,this.hour=J.getUTCHours(),this.day=J.getUTCDate(),this.month=J.getUTCMonth(),this.year=J.getUTCFullYear(),this.apply();else{let X=u5.toTZ(J,this.tz);this.ms=J.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=J.getMilliseconds(),this.second=J.getSeconds(),this.minute=J.getMinutes(),this.hour=J.getHours(),this.day=J.getDate(),this.month=J.getMonth(),this.year=J.getFullYear()}fromCronDate(J){this.tz=J.tz,this.year=J.year,this.month=J.month,this.day=J.day,this.hour=J.hour,this.minute=J.minute,this.second=J.second,this.ms=J.ms}apply(){if(this.month>11||this.day>eY1[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let J=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=J.getUTCMilliseconds(),this.second=J.getUTCSeconds(),this.minute=J.getUTCMinutes(),this.hour=J.getUTCHours(),this.day=J.getUTCDate(),this.month=J.getUTCMonth(),this.year=J.getUTCFullYear(),!0}else return!1}fromString(J){if(typeof this.tz=="number"){let X=u5.fromTZISO(J);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(u5.fromTZISO(J,this.tz))}findNext(J,X,G,Y){let W=this[X],$;G.lastDayOfMonth&&(this.month!==1?$=eY1[this.month]:$=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!G.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let Z=this[X]+Y;Z<G[X].length;Z++){let H=G[X][Z];if(X==="day"&&G.lastDayOfMonth&&Z-Y==$&&(H=1),X==="day"&&!G.starDOW){let q=G.dayOfWeek[(K+(Z-Y-1))%7];if(q&&q&gP)q=this.isNthWeekdayOfMonth(this.year,this.month,Z-Y,q)?1:0;else if(q)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${q}`);J.legacyMode&&!G.starDOM?H=H||q:H=H&&q}if(H)return this[X]=Z-Y,W!==this[X]?2:1}return 3}recurse(J,X,G){let Y=this.findNext(X,SW[G][0],J,SW[G][2]);if(Y>1){let W=G+1;for(;W<SW.length;)this[SW[W][0]]=-SW[W][2],W++;if(Y===3)return this[SW[G][1]]++,this[SW[G][0]]=-SW[G][2],this.apply(),this.recurse(J,X,0);if(this.apply())return this.recurse(J,X,G-1)}return G+=1,G>=SW.length?this:this.year>=3000?null:this.recurse(J,X,G)}increment(J,X,G){return this.second+=X.interval!==void 0&&X.interval>1&&G?X.interval:1,this.ms=0,this.apply(),this.recurse(J,X,0)}getDate(J){return J||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):u5.fromTZ(u5.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function xI4(Q){if(Q===void 0&&(Q={}),delete Q.name,Q.legacyMode=Q.legacyMode===void 0?!0:Q.legacyMode,Q.paused=Q.paused===void 0?!1:Q.paused,Q.maxRuns=Q.maxRuns===void 0?1/0:Q.maxRuns,Q.catch=Q.catch===void 0?!1:Q.catch,Q.interval=Q.interval===void 0?0:parseInt(Q.interval.toString(),10),Q.utcOffset=Q.utcOffset===void 0?void 0:parseInt(Q.utcOffset.toString(),10),Q.unref=Q.unref===void 0?!1:Q.unref,Q.startAt&&(Q.startAt=new uX(Q.startAt,Q.timezone)),Q.stopAt&&(Q.stopAt=new uX(Q.stopAt,Q.timezone)),Q.interval!==null){if(isNaN(Q.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Q.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Q.utcOffset!==void 0){if(isNaN(Q.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Q.utcOffset<-870||Q.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Q.utcOffset!==void 0&&Q.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Q.unref!==!0&&Q.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Q}function xP(Q){return Object.prototype.toString.call(Q)==="[object Function]"||typeof Q=="function"||Q instanceof Function}function gI4(Q){return xP(Q)}function uI4(Q){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Q):Q&&typeof Q.unref<"u"&&Q.unref()}var Q71=30000,w_=[],P_=class{name;options;_states;fn;constructor(Q,J,X){let G,Y;if(xP(J))Y=J;else if(typeof J=="object")G=J;else if(J!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(xP(X))Y=X;else if(typeof X=="object")G=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=G?.name,this.options=xI4(G),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:G?G.maxRuns:void 0,paused:G?G.paused:!1,pattern:new tY1("* * * * *")},Q&&(Q instanceof Date||typeof Q=="string"&&Q.indexOf(":")>0)?this._states.once=new uX(Q,this.options.timezone||this.options.utcOffset):this._states.pattern=new tY1(Q,this.options.timezone),this.name){if(w_.find((W)=>W.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");w_.push(this)}return Y!==void 0&&gI4(Y)&&(this.fn=Y,this.schedule()),this}nextRun(Q){let J=this._next(Q);return J?J.getDate(!1):null}nextRuns(Q,J){this._states.maxRuns!==void 0&&Q>this._states.maxRuns&&(Q=this._states.maxRuns);let X=[],G=J||this._states.currentRun||void 0;for(;Q--&&(G=this.nextRun(G));)X.push(G);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Q=this.nextRun(this._states.currentRun),J=!this._states.paused,X=this.fn!==void 0,G=!this._states.kill;return J&&X&&G&&Q!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Q){let J=this._next(Q);return J?Q instanceof uX||Q instanceof Date?J.getTime()-Q.getTime():J.getTime()-new uX(Q).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Q=w_.indexOf(this);Q>=0&&w_.splice(Q,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Q){if(Q&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Q&&(this.fn=Q);let J=this.msToNext(),X=this.nextRun(this._states.currentRun);return J==null||isNaN(J)||X===null?this:(J>Q71&&(J=Q71),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),J),this._states.currentTimeout&&this.options.unref&&uI4(this._states.currentTimeout),this)}async _trigger(Q){if(this._states.blocking=!0,this._states.currentRun=new uX(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(J){xP(this.options.catch)&&this.options.catch(J,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new uX(Q,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Q){let J=new Date,X=!this._states.paused&&J.getTime()>=Q.getTime(),G=this._states.blocking&&this.options.protect;X&&!G?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&G&&xP(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Q){let J=!!(Q||this._states.currentRun),X=!1;!Q&&this.options.startAt&&this.options.interval&&([Q,J]=this._calculatePreviousRun(Q,J),X=!Q),Q=new uX(Q,this.options.timezone||this.options.utcOffset),this.options.startAt&&Q&&Q.getTime()<this.options.startAt.getTime()&&(Q=this.options.startAt);let G=this._states.once||new uX(Q,this.options.timezone||this.options.utcOffset);return!X&&G!==this._states.once&&(G=G.increment(this._states.pattern,this.options,J)),this._states.once&&this._states.once.getTime()<=Q.getTime()||G===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&G.getTime()>=this.options.stopAt.getTime()?null:G}_calculatePreviousRun(Q,J){let X=new uX(void 0,this.options.timezone||this.options.utcOffset),G=Q;if(this.options.startAt.getTime()<=X.getTime()){G=this.options.startAt;let Y=G.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)G=new uX(G,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=G.getTime()+this.options.interval*1000;J=!0}return G===null&&(G=void 0),[G,J]}};var M_={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};V_();function X71(){return async(Q,J)=>{try{let X=await JZ.create(),G=await dY1(Q,{...X,auth:{...X.auth,user:{id:"notify-worker"}}}),W=await j80.forClient(G).ON_EVENTS({events:J});return{success:W.success,error:W.error,retryAfter:W.retryAfter,results:W.results}}catch(X){let G=X instanceof Error?X.message:String(X);return console.error(`[EventBus] Failed to notify connection ${Q}:`,G),{success:!1,error:G}}}}function Y71(Q){return{specversion:"1.0",id:Q.id,source:Q.source,type:Q.type,time:Q.time,subject:Q.subject??void 0,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema??void 0,data:Q.data??void 0}}function mI4(Q){let J=new Map;for(let G of Q){let Y=G.subscription.connectionId,W=J.get(Y);if(W){if(W.deliveryIds.push(G.delivery.id),!W.seenEventIds.has(G.event.id))W.seenEventIds.add(G.event.id),W.events.push(Y71(G.event))}else J.set(Y,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[Y71(G.event)],seenEventIds:new Set([G.event.id])})}let X=new Map;for(let[G,Y]of J)X.set(G,{connectionId:Y.connectionId,deliveryIds:Y.deliveryIds,events:Y.events});return X}class M90{storage;notifySubscriber;running=!1;processing=!1;config;constructor(Q,J){this.storage=Q;this.notifySubscriber=X71(),this.config={...M_,...J}}async start(){if(this.running)return;let Q=await this.storage.resetStuckDeliveries();if(Q>0)console.log(`[EventBus] Reset ${Q} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing)return;this.processing=!0;try{await this.processEvents()}catch(Q){console.error("[EventBus] Error processing events:",Q)}finally{this.processing=!1}}async processEvents(){let Q=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Q.length===0)return;let J=mI4(Q),X=new Set;for(let[G,Y]of J){try{let W=await this.notifySubscriber(Y.connectionId,Y.events);if(W.results&&Object.keys(W.results).length>0)await this.processPerEventResults(Y,W);else if(W.success)await this.storage.markDeliveriesDelivered(Y.deliveryIds);else if(W.retryAfter&&W.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Y.deliveryIds,W.retryAfter);else await this.storage.markDeliveriesFailed(Y.deliveryIds,W.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(W){let $=W instanceof Error?W.message:String(W);console.error(`[EventBus] Failed to notify subscription ${G}:`,$),await this.storage.markDeliveriesFailed(Y.deliveryIds,$,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let W of Q)if(Y.deliveryIds.includes(W.delivery.id))X.add(W.event.id)}for(let G of X)try{await this.storage.updateEventStatus(G);let Y=Q.find((W)=>W.event.id===G)?.event;if(Y?.cron)await this.scheduleNextCronDelivery(Y)}catch(Y){console.error(`[EventBus] Failed to update event status ${G}:`,Y)}}async processPerEventResults(Q,J){let X=[],G=new Map,Y=[],W=new Map;for(let $=0;$<Q.events.length;$++){let K=Q.events?.[$];if(!K)continue;let Z=Q.deliveryIds?.[$];if(!Z)continue;W.set(K.id,Z)}for(let $ of Q.events){let K=W.get($.id);if(!K)continue;let Z=J.results?.[$.id];if(Z)if(Z.success)X.push(K);else if(Z.retryAfter&&Z.retryAfter>0){let H=G.get(Z.retryAfter)||[];H.push(K),G.set(Z.retryAfter,H)}else Y.push({deliveryId:K,error:Z.error||"Event processing failed"});else if(J.success)X.push(K);else if(J.retryAfter&&J.retryAfter>0){let H=G.get(J.retryAfter)||[];H.push(K),G.set(J.retryAfter,H)}else Y.push({deliveryId:K,error:J.error||"Batch processing failed"})}if(X.length>0)await this.storage.markDeliveriesDelivered(X);for(let[$,K]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(K,$);if(Y.length>0){let $=new Map;for(let{deliveryId:K,error:Z}of Y){let H=$.get(Z)||[];H.push(K),$.set(Z,H)}for(let[K,Z]of $)await this.storage.markDeliveriesFailed(Z,K,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Q){if(!Q.cron)return;try{let X=new P_(Q.cron).nextRun();if(!X){console.log(`[EventBus] Cron expression for event ${Q.id} has no more runs`);return}let G=X.toISOString(),Y=await this.storage.getMatchingSubscriptions(Q);if(Y.length===0){console.log(`[EventBus] No subscriptions for cron event ${Q.id}, skipping next delivery`);return}await this.storage.createDeliveries(Q.id,Y.map((W)=>W.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Q.id} at ${G}`)}catch(J){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Q.id}:`,J)}}}class T90{storage;worker;notifyStrategy;running=!1;constructor(Q){this.storage=Q.storage,this.notifyStrategy=Q.notifyStrategy,this.worker=new M90(this.storage,Q.config)}async publish(Q,J,X){if(X.deliverAt&&X.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(X.cron)try{let H=new P_(X.cron).nextRun();if(!H)throw Error("Cron expression does not produce a next run time");G=H.toISOString()}catch(Z){throw Error(`Invalid cron expression: ${Z instanceof Error?Z.message:String(Z)}`)}let Y=crypto.randomUUID(),W=new Date().toISOString(),$=await this.storage.publishEvent({id:Y,organizationId:Q,type:X.type,source:J,subject:X.subject,time:W,data:X.data,cron:X.cron}),K=await this.storage.getMatchingSubscriptions($);if(K.length>0){let Z=X.deliverAt??G;if(await this.storage.createDeliveries(Y,K.map((H)=>H.id),Z),this.notifyStrategy&&!Z)await this.notifyStrategy.notify(Y).catch((H)=>{console.warn("[EventBus] Notify failed (non-critical):",H)})}return $}async subscribe(Q,J){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Q,connectionId:J.connectionId,publisher:J.publisher,eventType:J.eventType,filter:J.filter})}async unsubscribe(Q,J){return this.storage.unsubscribe(J,Q)}async listSubscriptions(Q,J){return this.storage.listSubscriptions(Q,J)}async getSubscription(Q,J){return this.storage.getSubscription(J,Q)}async getEvent(Q,J){return this.storage.getEvent(J,Q)}async cancelEvent(Q,J,X){return this.storage.cancelEvent(J,Q,X)}async ackEvent(Q,J,X){return this.storage.ackDelivery(J,Q,X)}async syncSubscriptions(Q,J){return this.storage.syncSubscriptions({organizationId:Q,...J})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Q)=>{console.error("[EventBus] Error processing after notify:",Q)})});await this.worker.processNow().catch((Q)=>{console.error("[EventBus] Error processing pending events on startup:",Q)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Q){console.error("[EventBus] Error stopping notify strategy:",Q)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}function G71(...Q){return{async start(J){await Promise.all(Q.map((X)=>X.start(J)))},async stop(){await Promise.all(Q.map((J)=>J.stop().catch((X)=>{console.error("[NotifyStrategy] Error stopping strategy:",X)})))},async notify(J){await Promise.all(Q.map((X)=>X.notify(J).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class T_{intervalMs;timer=null;onNotify=null;constructor(Q){this.intervalMs=Q}async start(Q){if(this.timer)return;this.onNotify=Q,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Q){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as lI4}from"kysely";var gU="mesh_events";class A90{db;pool;listenClient=null;onNotify=null;constructor(Q,J){this.db=Q;this.pool=J}async start(Q){if(this.listenClient)return;this.onNotify=Q;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(J)=>{if(J.channel===gU&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(J)=>{console.error("[PostgresNotify] Connection error:",J),this.cleanup()}),await this.listenClient.query(`LISTEN ${gU}`),console.log("[PostgresNotify] Started LISTEN on",gU)}catch(J){console.error("[PostgresNotify] Failed to start LISTEN:",J),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${gU}`),console.log("[PostgresNotify] Stopped LISTEN on",gU)}catch{}this.cleanup()}}async notify(Q){try{await lI4`SELECT pg_notify(${gU}, ${Q})`.execute(this.db)}catch(J){console.warn("[PostgresNotify] Failed to send NOTIFY:",J)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}function W71(Q,J){let X=sY1(Q.db),G=J?.pollIntervalMs??M_.pollIntervalMs,Y=Q.type==="postgres"?G71(new T_(G),new A90(Q.db,Q.pool)):new T_(G);return new T90({storage:X,config:J,notifyStrategy:Y})}var $71={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};var K71=new i5;K71.get("/config",async(Q)=>{try{let J=Object.keys(Z9.socialProviders??{}),X=J.length>0,G=J.map((W)=>({name:W,icon:$71[W].icon})),Y={emailAndPassword:{enabled:Z9.emailAndPassword?.enabled??!1},magicLink:{enabled:Z9.magicLinkConfig?.enabled??!1},socialProviders:{enabled:X,providers:G},sso:Z9.ssoConfig?{enabled:!0,providerId:Z9.ssoConfig.providerId}:{enabled:!1}};return Q.json({success:!0,config:Y})}catch(J){let X=J instanceof Error?J.message:"Failed to load auth config";return Q.json({success:!1,error:X},500)}});var Z71=K71;yk();yJ();class uP{proxies=new Map;constructor(){}static async create(Q,J){let X=new uP,G=await Promise.allSettled(Q.map(async({connection:Y,selectedTools:W})=>{try{let $=await J.createMCPProxy(Y);return{connection:Y,proxy:$,selectedTools:W}}catch($){return console.error(`[gateway] Failed to create proxy for connection ${Y.id}:`,$),null}}));for(let Y of G)if(Y.status==="fulfilled"&&Y.value)X.proxies.set(Y.value.connection.id,Y.value);return X}get(Q){return this.proxies.get(Q)}entries(){return this.proxies.entries()}forEach(Q){this.proxies.forEach((J,X)=>Q(J,X))}async mapAsync(Q){let J=[];for(let[X,G]of this.proxies.entries())J.push(Q(G,X));return await Promise.all(J)}async mapSettled(Q){return Promise.allSettled(Array.from(this.proxies.entries()).map(([J,X])=>Q(X,J)))}get size(){return this.proxies.size}}function dI4(Q){return Q.toLowerCase().split(/[\s_\-./]+/).filter((J)=>J.length>=2)}function pI4(Q,J){let X=0,G=J.name.toLowerCase(),Y=(J.description??"").toLowerCase(),W=J.connectionTitle.toLowerCase();for(let $ of Q){if(G===$)X+=10;else if(G.includes($))X+=3;if(Y.includes($))X+=2;if(W.includes($))X+=1}return X}function cI4(Q,J,X){let G=dI4(Q);if(G.length===0)return J.slice(0,X);return J.map((Y)=>({tool:Y,score:pI4(G,Y)})).filter((Y)=>Y.score>0).sort((Y,W)=>W.score-Y.score).slice(0,X).map((Y)=>Y.tool)}var H71=(Q)=>({tools:Q.tools,callTool:(J,X)=>Q.callTool(J,X)}),XZ={SEARCH:"GATEWAY_SEARCH_TOOLS",DESCRIBE:"GATEWAY_DESCRIBE_TOOLS",CALL:"GATEWAY_CALL_TOOL"};function nI4(Q){let J=Q.categories.length>0?` Available categories: ${Q.categories.join(", ")}.`:"",X=Q.tools.map((G)=>G.name);return[{name:XZ.SEARCH,description:`Search for available tools by name or description. Returns tool names and brief descriptions without full schemas.${J} Total tools: ${Q.tools.length}.`,inputSchema:{type:"object",properties:{query:{type:"string",description:"Natural language search query (e.g., 'send email', 'create order')"},limit:{type:"number",description:"Maximum results to return (default: 10)",default:10}},required:["query"]}},{name:XZ.DESCRIBE,description:"Get detailed schemas for specific tools. Call after searching to get full input/output schemas.",inputSchema:{type:"object",properties:{tools:{type:"array",items:{type:"string",enum:X},description:"Array of tool names to get detailed schemas for"}},required:["tools"]}},{name:XZ.CALL,description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:{type:"object",properties:{name:{type:"string",enum:X,description:"The name of the tool to execute"},arguments:{type:"object",description:"Arguments to pass to the tool",additionalProperties:!0}},required:["name"]}}]}var iI4=(Q)=>{let J=new Map(Q.tools.map((G)=>[G.name,G])),X=async(G,Y)=>{switch(G){case XZ.SEARCH:{let W=Y.query??"",$=Y.limit??10,K=cI4(W,Q.tools,$);return{content:[{type:"text",text:JSON.stringify({query:W,results:K.map((Z)=>({name:Z.name,description:Z.description,connection:Z.connectionTitle})),totalAvailable:Q.tools.length},null,2)}]}}case XZ.DESCRIBE:{let W=Y.tools??[];if(W.length===0)return{content:[{type:"text",text:JSON.stringify({error:"No tool names provided"})}],isError:!0};let $=W.map((K)=>J.get(K)).filter((K)=>K!==void 0);return{content:[{type:"text",text:JSON.stringify({tools:$.map((K)=>({name:K.name,description:K.description,connection:K.connectionTitle,inputSchema:K.inputSchema,outputSchema:K.outputSchema})),notFound:W.filter((K)=>!J.has(K))},null,2)}]}}case XZ.CALL:{let W=Y.name,$=Y.arguments??{};if(!W)return{content:[{type:"text",text:JSON.stringify({error:"Tool name is required"})}],isError:!0};if(!J.has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use ${XZ.SEARCH} to find available tools.`}],isError:!0};return Q.callTool(W,$)}default:return{content:[{type:"text",text:`Unknown meta-tool: ${G}. Available: ${Object.values(XZ).join(", ")}`}],isError:!0}}};return{tools:nI4(Q),callTool:X}};function q71(Q){switch(Q){case"smart_tool_selection":return iI4;case"code_execution":return H71;case"passthrough":default:return H71}}class A_{proxies;options;cache;constructor(Q,J){this.proxies=Q;this.options=J;this.cache=XG(()=>this.loadTools())}async loadTools(){let Q=await this.proxies.mapSettled(async(Z,H)=>{try{let F=(await Z.proxy.client.listTools()).tools;if(this.options.selectionMode==="exclusion"){if(Z.selectedTools&&Z.selectedTools.length>0){let V=new Set(Z.selectedTools);F=F.filter((z)=>!V.has(z.name))}}else if(Z.selectedTools&&Z.selectedTools.length>0){let V=new Set(Z.selectedTools);F=F.filter((z)=>V.has(z.name))}return{connectionId:H,connectionTitle:Z.connection.title,tools:F}}catch(q){return console.error(`[gateway] Failed to list tools for connection ${H}:`,q),null}}),J=new Set,X=[],G=new Map,Y=new Set;for(let Z of Q){if(Z.status!=="fulfilled"||!Z.value)continue;let{connectionId:H,connectionTitle:q,tools:F}=Z.value;Y.add(q);for(let V of F){if(J.has(V.name))continue;J.add(V.name),X.push({...V,connectionId:H,connectionTitle:q}),G.set(V.name,{connectionId:H,originalName:V.name})}}let W=async(Z,H)=>{let q=G.get(Z);if(!q)return{content:[{type:"text",text:`Tool not found: ${Z}`}],isError:!0};let F=this.proxies.get(q.connectionId);if(!F)return{content:[{type:"text",text:`Connection not found for tool: ${Z}`}],isError:!0};return await F.proxy.client.callTool({name:q.originalName,arguments:H})},K=q71(this.options.strategy)({tools:X,callTool:W,categories:Array.from(Y).sort()});return{tools:X,mappings:G,strategyResult:K}}async list(){return{tools:(await this.cache).strategyResult.tools}}async call(Q){return(await this.cache).strategyResult.callTool(Q.name,Q.arguments??{})}async callStreamable(Q,J){let X=await this.cache,G=X.mappings.get(Q);if(G){let W=this.proxies.get(G.connectionId);if(W)return W.proxy.callStreamableTool(G.originalName,J)}let Y=await X.strategyResult.callTool(Q,J);return new Response(JSON.stringify(Y),{headers:{"Content-Type":"application/json"}})}}class E_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadResources())}async loadResources(){let Q=await this.proxies.mapSettled(async(Y,W)=>{try{let $=await Y.proxy.client.listResources();return{connectionId:W,resources:$.resources}}catch($){return console.error(`[gateway] Failed to list resources for connection ${W}:`,$),{connectionId:W,resources:[]}}}),J=new Set,X=[],G=new Map;for(let Y of Q){if(Y.status!=="fulfilled")continue;let{connectionId:W,resources:$}=Y.value;for(let K of $){if(J.has(K.uri))continue;J.add(K.uri),X.push(K),G.set(K.uri,W)}}return{resources:X,mappings:G}}async list(){return{resources:(await this.cache).resources}}async read(Q){let X=(await this.cache).mappings.get(Q.uri);if(!X)throw Error(`Resource not found: ${Q.uri}`);let G=this.proxies.get(X);if(!G)throw Error(`Connection not found for resource: ${Q.uri}`);return await G.proxy.client.readResource(Q)}}class j_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadResourceTemplates())}async loadResourceTemplates(){let Q=await this.proxies.mapSettled(async(X,G)=>{try{let Y=await X.proxy.client.listResourceTemplates();return{connectionId:G,templates:Y.resourceTemplates}}catch(Y){return console.error(`[gateway] Failed to list resource templates for connection ${G}:`,Y),{connectionId:G,templates:[]}}}),J=[];for(let X of Q){if(X.status!=="fulfilled")continue;let{templates:G}=X.value;for(let Y of G)J.push(Y)}return{templates:J}}async list(){return{resourceTemplates:(await this.cache).templates}}}class I_{proxies;cache;constructor(Q){this.proxies=Q;this.cache=XG(()=>this.loadPrompts())}async loadPrompts(){let Q=await this.proxies.mapSettled(async(Y,W)=>{try{let $=await Y.proxy.client.listPrompts();return{connectionId:W,prompts:$.prompts}}catch($){return console.error(`[gateway] Failed to list prompts for connection ${W}:`,$),{connectionId:W,prompts:[]}}}),J=new Set,X=[],G=new Map;for(let Y of Q){if(Y.status!=="fulfilled")continue;let{connectionId:W,prompts:$}=Y.value;for(let K of $){if(J.has(K.name))continue;J.add(K.name),X.push(K),G.set(K.name,W)}}return{prompts:X,mappings:G}}async list(){return{prompts:(await this.cache).prompts}}async get(Q){let X=(await this.cache).mappings.get(Q.name);if(!X)throw Error(`Prompt not found: ${Q.name}`);let G=this.proxies.get(X);if(!G)throw Error(`Connection not found for prompt: ${Q.name}`);return await G.proxy.client.getPrompt(Q)}}W_();var F71=new i5;async function rI4(Q,J){let X=await uP.create(Q.connections,J),G=new A_(X,{selectionMode:Q.toolSelectionMode,strategy:Q.toolSelectionStrategy}),Y=new E_(X),W=new j_(X),$=new I_(X);return{client:{listTools:G.list.bind(G),callTool:G.call.bind(G),listResources:Y.list.bind(Y),readResource:Y.read.bind(Y),listResourceTemplates:W.list.bind(W),listPrompts:$.list.bind($),getPrompt:$.get.bind($)},callStreamableTool:G.callStreamable.bind(G)}}async function aI4(Q,J){let X;if(Q.toolSelectionMode==="exclusion"){let W=(await J.storage.connections.list(Q.organizationId)).filter((K)=>K.status==="active"),$=new Map;for(let K of Q.connections)$.set(K.connectionId,K.selectedTools);X=[];for(let K of W){let Z=$.get(K.id);if(Z===void 0)X.push({connection:K,selectedTools:null});else if(Z===null||Z.length===0);else X.push({connection:K,selectedTools:Z})}}else{let Y=Q.connections.map(($)=>$.connectionId),W=[];for(let $ of Y){let K=await J.storage.connections.findById($);if(K&&K.status==="active")W.push(K)}X=W.map(($)=>{let K=Q.connections.find((Z)=>Z.connectionId===$.id);return{connection:$,selectedTools:K?.selectedTools??null}})}let G={connections:X,toolSelectionMode:Q.toolSelectionMode,toolSelectionStrategy:Q.toolSelectionStrategy};return rI4(G,J)}F71.all("/gateway/:gatewayId?",async(Q)=>{let J=Q.req.param("gatewayId"),X=Q.get("meshContext");try{let G=null;if(J)G=await X.storage.gateways.findById(J);else{let Z=Q.req.header("x-org-id"),H=Q.req.header("x-org-slug");if(Z)G=await X.storage.gateways.getDefaultByOrgId(Z);else if(H)G=await X.storage.gateways.getDefaultByOrgSlug(H);else return Q.json({error:"Gateway ID required, or provide x-org-id or x-org-slug header for default gateway"},400)}if(!G){if(J)return Q.json({error:`Gateway not found: ${J}`},404);return Q.json({error:"No default gateway configured for this organization"},404)}if(X.gatewayId=G.id,G.status!=="active")return Q.json({error:`Gateway is inactive: ${G.id}`},503);let Y=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organizationId).executeTakeFirst();if(Y)X.organization={id:Y.id,slug:Y.slug,name:Y.name};let W=await aI4(G,X),$=new tH({name:`mcp-gateway-${G.title}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}}}),K=new Kq({enableJsonResponse:Q.req.header("Accept")?.includes("application/json")??!1});return await $.connect(K),$.server.setRequestHandler(bK,async(Z)=>{return W.client.listTools()}),$.server.setRequestHandler(xK,async(Z)=>{return await W.client.callTool(Z.params)}),$.server.setRequestHandler(kK,async()=>{return W.client.listResources()}),$.server.setRequestHandler(yK,async(Z)=>{return W.client.readResource(Z.params)}),$.server.setRequestHandler(_K,async()=>{return W.client.listResourceTemplates()}),$.server.setRequestHandler(hK,async()=>{return W.client.listPrompts()}),$.server.setRequestHandler(fK,async(Z)=>{return W.client.getPrompt(Z.params)}),await K.handleMessage(Q.req.raw).then(async(Z)=>{return Z})}catch(G){let Y=G;return console.error("[gateway] Error handling gateway request:",Y),Q.json({error:"Internal server error",message:Y.message},500)}});var V71=F71;z90();var z71=new i5;z71.all("/",async(Q)=>{return V90(Q.get("meshContext")).fetch(Q.req.raw)});var U71=z71;var d71="vercel.ai.error",oI4=Symbol.for(d71),N71,B71,D1=class Q extends(B71=Error,N71=oI4,B71){constructor({name:J,message:X,cause:G}){super(X);this[N71]=!0,this.name=J,this.cause=G}static isInstance(J){return Q.hasMarker(J,d71)}static hasMarker(J,X){let G=Symbol.for(X);return J!=null&&typeof J==="object"&&G in J&&typeof J[G]==="boolean"&&J[G]===!0}},p71="AI_APICallError",c71=`vercel.ai.error.${p71}`,sI4=Symbol.for(c71),O71,D71,H9=class extends(D71=D1,O71=sI4,D71){constructor({message:Q,url:J,requestBodyValues:X,statusCode:G,responseHeaders:Y,responseBody:W,cause:$,isRetryable:K=G!=null&&(G===408||G===409||G===429||G>=500),data:Z}){super({name:p71,message:Q,cause:$});this[O71]=!0,this.url=J,this.requestBodyValues=X,this.statusCode=G,this.responseHeaders=Y,this.responseBody=W,this.isRetryable=K,this.data=Z}static isInstance(Q){return D1.hasMarker(Q,c71)}},n71="AI_EmptyResponseBodyError",i71=`vercel.ai.error.${n71}`,tI4=Symbol.for(i71),L71,w71,r71=class extends(w71=D1,L71=tI4,w71){constructor({message:Q="Empty response body"}={}){super({name:n71,message:Q});this[L71]=!0}static isInstance(Q){return D1.hasMarker(Q,i71)}};function YG(Q){if(Q==null)return"unknown error";if(typeof Q==="string")return Q;if(Q instanceof Error)return Q.message;return JSON.stringify(Q)}var a71="AI_InvalidArgumentError",o71=`vercel.ai.error.${a71}`,eI4=Symbol.for(o71),P71,M71,s71=class extends(M71=D1,P71=eI4,M71){constructor({message:Q,cause:J,argument:X}){super({name:a71,message:Q,cause:J});this[P71]=!0,this.argument=X}static isInstance(Q){return D1.hasMarker(Q,o71)}},t71="AI_InvalidPromptError",e71=`vercel.ai.error.${t71}`,QC4=Symbol.for(e71),T71,A71,Hq=class extends(A71=D1,T71=QC4,A71){constructor({prompt:Q,message:J,cause:X}){super({name:t71,message:`Invalid prompt: ${J}`,cause:X});this[T71]=!0,this.prompt=Q}static isInstance(Q){return D1.hasMarker(Q,e71)}},QG1="AI_InvalidResponseDataError",JG1=`vercel.ai.error.${QG1}`,JC4=Symbol.for(JG1),E71,j71,Eb6=class extends(j71=D1,E71=JC4,j71){constructor({data:Q,message:J=`Invalid response data: ${JSON.stringify(Q)}.`}){super({name:QG1,message:J});this[E71]=!0,this.data=Q}static isInstance(Q){return D1.hasMarker(Q,JG1)}},XG1="AI_JSONParseError",YG1=`vercel.ai.error.${XG1}`,XC4=Symbol.for(YG1),I71,C71,mP=class extends(C71=D1,I71=XC4,C71){constructor({text:Q,cause:J}){super({name:XG1,message:`JSON parsing failed: Text: ${Q}.
|
|
1069
1069
|
Error message: ${YG(J)}`,cause:J});this[I71]=!0,this.text=Q}static isInstance(Q){return D1.hasMarker(Q,YG1)}},GG1="AI_LoadAPIKeyError",WG1=`vercel.ai.error.${GG1}`,YC4=Symbol.for(WG1),R71,S71,jb6=class extends(S71=D1,R71=YC4,S71){constructor({message:Q}){super({name:GG1,message:Q});this[R71]=!0}static isInstance(Q){return D1.hasMarker(Q,WG1)}},$G1="AI_LoadSettingError",KG1=`vercel.ai.error.${$G1}`,GC4=Symbol.for(KG1),v71,k71,Ib6=class extends(k71=D1,v71=GC4,k71){constructor({message:Q}){super({name:$G1,message:Q});this[v71]=!0}static isInstance(Q){return D1.hasMarker(Q,KG1)}},ZG1="AI_NoContentGeneratedError",HG1=`vercel.ai.error.${ZG1}`,WC4=Symbol.for(HG1),_71,y71,Cb6=class extends(y71=D1,_71=WC4,y71){constructor({message:Q="No content generated."}={}){super({name:ZG1,message:Q});this[_71]=!0}static isInstance(Q){return D1.hasMarker(Q,HG1)}},qG1="AI_NoSuchModelError",FG1=`vercel.ai.error.${qG1}`,$C4=Symbol.for(FG1),h71,f71,Rb6=class extends(f71=D1,h71=$C4,f71){constructor({errorName:Q=qG1,modelId:J,modelType:X,message:G=`No such ${X}: ${J}`}){super({name:Q,message:G});this[h71]=!0,this.modelId=J,this.modelType=X}static isInstance(Q){return D1.hasMarker(Q,FG1)}},VG1="AI_TooManyEmbeddingValuesForCallError",zG1=`vercel.ai.error.${VG1}`,KC4=Symbol.for(zG1),b71,x71,Sb6=class extends(x71=D1,b71=KC4,x71){constructor(Q){super({name:VG1,message:`Too many values for a single embedding call. The ${Q.provider} model "${Q.modelId}" can only embed up to ${Q.maxEmbeddingsPerCall} values per call, but ${Q.values.length} values were provided.`});this[b71]=!0,this.provider=Q.provider,this.modelId=Q.modelId,this.maxEmbeddingsPerCall=Q.maxEmbeddingsPerCall,this.values=Q.values}static isInstance(Q){return D1.hasMarker(Q,zG1)}},UG1="AI_TypeValidationError",NG1=`vercel.ai.error.${UG1}`,ZC4=Symbol.for(NG1),g71,u71,bY=class Q extends(u71=D1,g71=ZC4,u71){constructor({value:J,cause:X}){super({name:UG1,message:`Type validation failed: Value: ${JSON.stringify(J)}.
|
|
1070
1070
|
Error message: ${YG(X)}`,cause:X});this[g71]=!0,this.value=J}static isInstance(J){return D1.hasMarker(J,NG1)}static wrap({value:J,cause:X}){return Q.isInstance(X)&&X.value===J?X:new Q({value:J,cause:X})}},BG1="AI_UnsupportedFunctionalityError",OG1=`vercel.ai.error.${BG1}`,HC4=Symbol.for(OG1),m71,l71,vb6=class extends(l71=D1,m71=HC4,l71){constructor({functionality:Q,message:J=`'${Q}' functionality not supported.`}){super({name:BG1,message:J});this[m71]=!0,this.functionality=Q}static isInstance(Q){return D1.hasMarker(Q,OG1)}};var I={};_6(I,{xid:()=>HS4,void:()=>SS4,uuidv7:()=>XS4,uuidv6:()=>JS4,uuidv4:()=>QS4,uuid:()=>eR4,url:()=>YS4,uppercase:()=>qM,unknown:()=>Ly,union:()=>jy,undefined:()=>CS4,ulid:()=>ZS4,uint64:()=>jS4,uint32:()=>TS4,tuple:()=>bS4,trim:()=>BM,treeifyError:()=>b90,transform:()=>pX0,toUpperCase:()=>DM,toLowerCase:()=>OM,toJSONSchema:()=>wM,templateLiteral:()=>nS4,symbol:()=>IS4,superRefine:()=>kW1,success:()=>pS4,stringbool:()=>oS4,stringFormat:()=>LS4,string:()=>LX0,strictObject:()=>yS4,startsWith:()=>VM,size:()=>KM,setErrorMap:()=>Qv4,set:()=>uS4,safeParseAsync:()=>PM,safeParse:()=>DX0,registry:()=>p_,regexes:()=>zq,regex:()=>ZM,refine:()=>vW1,record:()=>KW1,readonly:()=>EW1,property:()=>YX0,promise:()=>iS4,prettifyError:()=>x90,preprocess:()=>tS4,prefault:()=>DW1,positive:()=>eJ0,pipe:()=>My,partialRecord:()=>xS4,parseAsync:()=>OX0,parse:()=>BX0,overwrite:()=>hW,optional:()=>wy,object:()=>_S4,number:()=>nG1,nullish:()=>dS4,nullable:()=>Py,null:()=>sG1,normalize:()=>NM,nonpositive:()=>JX0,nonoptional:()=>LW1,nonnegative:()=>XX0,never:()=>Ty,negative:()=>QX0,nativeEnum:()=>mS4,nanoid:()=>WS4,nan:()=>cS4,multipleOf:()=>Bq,minSize:()=>Oq,minLength:()=>GZ,mime:()=>UM,maxSize:()=>nU,maxLength:()=>iU,map:()=>gS4,lte:()=>mX,lt:()=>_W,lowercase:()=>HM,looseObject:()=>hS4,locales:()=>GM,literal:()=>VW1,length:()=>rU,lazy:()=>CW1,ksuid:()=>qS4,keyof:()=>kS4,jwt:()=>DS4,json:()=>sS4,iso:()=>Oy,ipv6:()=>VS4,ipv4:()=>FS4,intersection:()=>WW1,int64:()=>ES4,int32:()=>MS4,int:()=>wX0,instanceof:()=>aS4,includes:()=>FM,guid:()=>tR4,gte:()=>JJ,gt:()=>yW,globalRegistry:()=>GG,getErrorMap:()=>Jv4,function:()=>FX0,formatError:()=>tP,float64:()=>PS4,float32:()=>wS4,flattenError:()=>sP,file:()=>lS4,enum:()=>qW1,endsWith:()=>zM,emoji:()=>GS4,email:()=>sR4,e164:()=>OS4,discriminatedUnion:()=>fS4,date:()=>vS4,custom:()=>rS4,cuid2:()=>KS4,cuid:()=>$S4,core:()=>fW,config:()=>B9,coerce:()=>rX0,clone:()=>fJ,cidrv6:()=>US4,cidrv4:()=>zS4,check:()=>SW1,catch:()=>MW1,boolean:()=>iG1,bigint:()=>AS4,base64url:()=>BS4,base64:()=>NS4,array:()=>uX0,any:()=>RS4,_default:()=>BW1,_ZodString:()=>PX0,ZodXID:()=>RX0,ZodVoid:()=>JW1,ZodUnknown:()=>eG1,ZodUnion:()=>mX0,ZodUndefined:()=>aG1,ZodUUID:()=>bW,ZodURL:()=>TX0,ZodULID:()=>CX0,ZodType:()=>I4,ZodTuple:()=>$W1,ZodTransform:()=>dX0,ZodTemplateLiteral:()=>jW1,ZodSymbol:()=>rG1,ZodSuccess:()=>wW1,ZodStringFormat:()=>F8,ZodString:()=>TM,ZodSet:()=>HW1,ZodRecord:()=>lX0,ZodRealError:()=>aU,ZodReadonly:()=>AW1,ZodPromise:()=>RW1,ZodPrefault:()=>OW1,ZodPipe:()=>iX0,ZodOptional:()=>cX0,ZodObject:()=>Ey,ZodNumberFormat:()=>oU,ZodNumber:()=>AM,ZodNullable:()=>UW1,ZodNull:()=>oG1,ZodNonOptional:()=>nX0,ZodNever:()=>QW1,ZodNanoID:()=>EX0,ZodNaN:()=>TW1,ZodMap:()=>ZW1,ZodLiteral:()=>FW1,ZodLazy:()=>IW1,ZodKSUID:()=>SX0,ZodJWT:()=>xX0,ZodIssueCode:()=>eS4,ZodIntersection:()=>GW1,ZodISOTime:()=>Ny,ZodISODuration:()=>By,ZodISODateTime:()=>zy,ZodISODate:()=>Uy,ZodIPv6:()=>kX0,ZodIPv4:()=>vX0,ZodGUID:()=>Dy,ZodFile:()=>zW1,ZodError:()=>aR4,ZodEnum:()=>MM,ZodEmoji:()=>AX0,ZodEmail:()=>MX0,ZodE164:()=>bX0,ZodDiscriminatedUnion:()=>YW1,ZodDefault:()=>NW1,ZodDate:()=>Ay,ZodCustomStringFormat:()=>cG1,ZodCustom:()=>Iy,ZodCatch:()=>PW1,ZodCUID2:()=>IX0,ZodCUID:()=>jX0,ZodCIDRv6:()=>yX0,ZodCIDRv4:()=>_X0,ZodBoolean:()=>EM,ZodBigIntFormat:()=>gX0,ZodBigInt:()=>jM,ZodBase64URL:()=>fX0,ZodBase64:()=>hX0,ZodArray:()=>XW1,ZodAny:()=>tG1,TimePrecision:()=>jJ0,NEVER:()=>E90,$output:()=>MJ0,$input:()=>TJ0,$brand:()=>j90});var fW={};_6(fW,{version:()=>y50,util:()=>H1,treeifyError:()=>b90,toJSONSchema:()=>wM,toDotPath:()=>wG1,safeParseAsync:()=>u90,safeParse:()=>g90,registry:()=>p_,regexes:()=>zq,prettifyError:()=>x90,parseAsync:()=>k_,parse:()=>S_,locales:()=>GM,isValidJWT:()=>xG1,isValidBase64URL:()=>bG1,isValidBase64:()=>JQ0,globalRegistry:()=>GG,globalConfig:()=>lP,function:()=>FX0,formatError:()=>tP,flattenError:()=>sP,config:()=>B9,clone:()=>fJ,_xid:()=>Xy,_void:()=>aJ0,_uuidv7:()=>a_,_uuidv6:()=>r_,_uuidv4:()=>i_,_uuid:()=>n_,_url:()=>o_,_uppercase:()=>qM,_unknown:()=>cU,_union:()=>IR4,_undefined:()=>cJ0,_ulid:()=>Jy,_uint64:()=>dJ0,_uint32:()=>bJ0,_tuple:()=>GX0,_trim:()=>BM,_transform:()=>fR4,_toUpperCase:()=>DM,_toLowerCase:()=>OM,_templateLiteral:()=>cR4,_symbol:()=>pJ0,_success:()=>mR4,_stringbool:()=>ZX0,_stringFormat:()=>HX0,_string:()=>AJ0,_startsWith:()=>VM,_size:()=>KM,_set:()=>kR4,_safeParseAsync:()=>y_,_safeParse:()=>__,_regex:()=>ZM,_refine:()=>KX0,_record:()=>SR4,_readonly:()=>pR4,_property:()=>YX0,_promise:()=>iR4,_positive:()=>eJ0,_pipe:()=>dR4,_parseAsync:()=>v_,_parse:()=>R_,_overwrite:()=>hW,_optional:()=>bR4,_number:()=>vJ0,_nullable:()=>xR4,_null:()=>nJ0,_normalize:()=>NM,_nonpositive:()=>JX0,_nonoptional:()=>uR4,_nonnegative:()=>XX0,_never:()=>rJ0,_negative:()=>QX0,_nativeEnum:()=>yR4,_nanoid:()=>t_,_nan:()=>tJ0,_multipleOf:()=>Bq,_minSize:()=>Oq,_minLength:()=>GZ,_min:()=>JJ,_mime:()=>UM,_maxSize:()=>nU,_maxLength:()=>iU,_max:()=>mX,_map:()=>vR4,_lte:()=>mX,_lt:()=>_W,_lowercase:()=>HM,_literal:()=>hR4,_length:()=>rU,_lazy:()=>nR4,_ksuid:()=>Yy,_jwt:()=>Fy,_isoTime:()=>RJ0,_isoDuration:()=>SJ0,_isoDateTime:()=>IJ0,_isoDate:()=>CJ0,_ipv6:()=>Wy,_ipv4:()=>Gy,_intersection:()=>RR4,_int64:()=>lJ0,_int32:()=>fJ0,_int:()=>_J0,_includes:()=>FM,_guid:()=>$M,_gte:()=>JJ,_gt:()=>yW,_float64:()=>hJ0,_float32:()=>yJ0,_file:()=>WX0,_enum:()=>_R4,_endsWith:()=>zM,_emoji:()=>s_,_email:()=>c_,_e164:()=>qy,_discriminatedUnion:()=>CR4,_default:()=>gR4,_date:()=>oJ0,_custom:()=>$X0,_cuid2:()=>Qy,_cuid:()=>e_,_coercedString:()=>EJ0,_coercedNumber:()=>kJ0,_coercedDate:()=>sJ0,_coercedBoolean:()=>gJ0,_coercedBigint:()=>mJ0,_cidrv6:()=>Ky,_cidrv4:()=>$y,_catch:()=>lR4,_boolean:()=>xJ0,_bigint:()=>uJ0,_base64url:()=>Hy,_base64:()=>Zy,_array:()=>LM,_any:()=>iJ0,TimePrecision:()=>jJ0,NEVER:()=>E90,JSONSchemaGenerator:()=>Vy,JSONSchema:()=>lG1,Doc:()=>x_,$output:()=>MJ0,$input:()=>TJ0,$constructor:()=>T0,$brand:()=>j90,$ZodXID:()=>c50,$ZodVoid:()=>UQ0,$ZodUnknown:()=>pU,$ZodUnion:()=>d_,$ZodUndefined:()=>qQ0,$ZodUUID:()=>b50,$ZodURL:()=>g50,$ZodULID:()=>p50,$ZodType:()=>Z4,$ZodTuple:()=>Nq,$ZodTransform:()=>JM,$ZodTemplateLiteral:()=>yQ0,$ZodSymbol:()=>HQ0,$ZodSuccess:()=>SQ0,$ZodStringFormat:()=>$8,$ZodString:()=>Uq,$ZodSet:()=>PQ0,$ZodRegistry:()=>WM,$ZodRecord:()=>LQ0,$ZodRealError:()=>lU,$ZodReadonly:()=>_Q0,$ZodPromise:()=>hQ0,$ZodPrefault:()=>CQ0,$ZodPipe:()=>XM,$ZodOptional:()=>EQ0,$ZodObject:()=>BQ0,$ZodNumberFormat:()=>KQ0,$ZodNumber:()=>m_,$ZodNullable:()=>jQ0,$ZodNull:()=>FQ0,$ZodNonOptional:()=>RQ0,$ZodNever:()=>zQ0,$ZodNanoID:()=>m50,$ZodNaN:()=>kQ0,$ZodMap:()=>wQ0,$ZodLiteral:()=>TQ0,$ZodLazy:()=>fQ0,$ZodKSUID:()=>n50,$ZodJWT:()=>WQ0,$ZodIntersection:()=>DQ0,$ZodISOTime:()=>a50,$ZodISODuration:()=>o50,$ZodISODateTime:()=>i50,$ZodISODate:()=>r50,$ZodIPv6:()=>t50,$ZodIPv4:()=>s50,$ZodGUID:()=>f50,$ZodFunction:()=>qX0,$ZodFile:()=>AQ0,$ZodError:()=>oP,$ZodEnum:()=>MQ0,$ZodEmoji:()=>u50,$ZodEmail:()=>x50,$ZodE164:()=>GQ0,$ZodDiscriminatedUnion:()=>OQ0,$ZodDefault:()=>IQ0,$ZodDate:()=>NQ0,$ZodCustomStringFormat:()=>$Q0,$ZodCustom:()=>bQ0,$ZodCheckUpperCase:()=>I50,$ZodCheckStringFormat:()=>dU,$ZodCheckStartsWith:()=>R50,$ZodCheckSizeEquals:()=>P50,$ZodCheckRegex:()=>E50,$ZodCheckProperty:()=>v50,$ZodCheckOverwrite:()=>_50,$ZodCheckNumberFormat:()=>O50,$ZodCheckMultipleOf:()=>B50,$ZodCheckMinSize:()=>w50,$ZodCheckMinLength:()=>T50,$ZodCheckMimeType:()=>k50,$ZodCheckMaxSize:()=>L50,$ZodCheckMaxLength:()=>M50,$ZodCheckLowerCase:()=>j50,$ZodCheckLessThan:()=>f_,$ZodCheckLengthEquals:()=>A50,$ZodCheckIncludes:()=>C50,$ZodCheckGreaterThan:()=>b_,$ZodCheckEndsWith:()=>S50,$ZodCheckBigIntFormat:()=>D50,$ZodCheck:()=>l8,$ZodCatch:()=>vQ0,$ZodCUID2:()=>d50,$ZodCUID:()=>l50,$ZodCIDRv6:()=>QQ0,$ZodCIDRv4:()=>e50,$ZodBoolean:()=>eP,$ZodBigIntFormat:()=>ZQ0,$ZodBigInt:()=>l_,$ZodBase64URL:()=>YQ0,$ZodBase64:()=>XQ0,$ZodAsyncError:()=>vW,$ZodArray:()=>QM,$ZodAny:()=>VQ0});var E90=Object.freeze({status:"aborted"});function T0(Q,J,X){function G(K,Z){var H;Object.defineProperty(K,"_zod",{value:K._zod??{},enumerable:!1}),(H=K._zod).traits??(H.traits=new Set),K._zod.traits.add(Q),J(K,Z);for(let q in $.prototype)if(!(q in K))Object.defineProperty(K,q,{value:$.prototype[q].bind(K)});K._zod.constr=$,K._zod.def=Z}let Y=X?.Parent??Object;class W extends Y{}Object.defineProperty(W,"name",{value:Q});function $(K){var Z;let H=X?.Parent?new W:this;G(H,K),(Z=H._zod).deferred??(Z.deferred=[]);for(let q of H._zod.deferred)q();return H}return Object.defineProperty($,"init",{value:G}),Object.defineProperty($,Symbol.hasInstance,{value:(K)=>{if(X?.Parent&&K instanceof X.Parent)return!0;return K?._zod?.traits?.has(Q)}}),Object.defineProperty($,"name",{value:Q}),$}var j90=Symbol("zod_brand");class vW extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}var lP={};function B9(Q){if(Q)Object.assign(lP,Q);return lP}var H1={};_6(H1,{unwrapMessage:()=>dP,stringifyPrimitive:()=>Z1,required:()=>jC4,randomString:()=>OC4,propertyKeyTypes:()=>iP,promiseAllObject:()=>BC4,primitiveTypes:()=>k90,prefixIssues:()=>QJ,pick:()=>PC4,partial:()=>EC4,optionalKeys:()=>_90,omit:()=>MC4,numKeys:()=>DC4,nullish:()=>YZ,normalizeParams:()=>W1,merge:()=>AC4,jsonStringifyReplacer:()=>C90,joinValues:()=>g0,issue:()=>f90,isPlainObject:()=>mU,isObject:()=>uU,getSizableOrigin:()=>rP,getParsedType:()=>LC4,getLengthableOrigin:()=>aP,getEnumValues:()=>pP,getElementAtPath:()=>NC4,floatSafeRemainder:()=>R90,finalizeIssue:()=>bJ,extend:()=>TC4,escapeRegex:()=>kW,esc:()=>qq,defineLazy:()=>T6,createTransparentProxy:()=>wC4,clone:()=>fJ,cleanRegex:()=>nP,cleanEnum:()=>IC4,captureStackTrace:()=>C_,cached:()=>cP,assignProp:()=>S90,assertNotEqual:()=>FC4,assertNever:()=>zC4,assertIs:()=>VC4,assertEqual:()=>qC4,assert:()=>UC4,allowsEval:()=>v90,aborted:()=>Fq,NUMBER_FORMAT_RANGES:()=>y90,Class:()=>DG1,BIGINT_FORMAT_RANGES:()=>h90});function qC4(Q){return Q}function FC4(Q){return Q}function VC4(Q){}function zC4(Q){throw Error()}function UC4(Q){}function pP(Q){let J=Object.values(Q).filter((G)=>typeof G==="number");return Object.entries(Q).filter(([G,Y])=>J.indexOf(+G)===-1).map(([G,Y])=>Y)}function g0(Q,J="|"){return Q.map((X)=>Z1(X)).join(J)}function C90(Q,J){if(typeof J==="bigint")return J.toString();return J}function cP(Q){return{get value(){{let X=Q();return Object.defineProperty(this,"value",{value:X}),X}throw Error("cached value already set")}}}function YZ(Q){return Q===null||Q===void 0}function nP(Q){let J=Q.startsWith("^")?1:0,X=Q.endsWith("$")?Q.length-1:Q.length;return Q.slice(J,X)}function R90(Q,J){let X=(Q.toString().split(".")[1]||"").length,G=(J.toString().split(".")[1]||"").length,Y=X>G?X:G,W=Number.parseInt(Q.toFixed(Y).replace(".","")),$=Number.parseInt(J.toFixed(Y).replace(".",""));return W%$/10**Y}function T6(Q,J,X){Object.defineProperty(Q,J,{get(){{let Y=X();return Q[J]=Y,Y}throw Error("cached value already set")},set(Y){Object.defineProperty(Q,J,{value:Y})},configurable:!0})}function S90(Q,J,X){Object.defineProperty(Q,J,{value:X,writable:!0,enumerable:!0,configurable:!0})}function NC4(Q,J){if(!J)return Q;return J.reduce((X,G)=>X?.[G],Q)}function BC4(Q){let J=Object.keys(Q),X=J.map((G)=>Q[G]);return Promise.all(X).then((G)=>{let Y={};for(let W=0;W<J.length;W++)Y[J[W]]=G[W];return Y})}function OC4(Q=10){let X="";for(let G=0;G<Q;G++)X+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return X}function qq(Q){return JSON.stringify(Q)}var C_=Error.captureStackTrace?Error.captureStackTrace:(...Q)=>{};function uU(Q){return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)}var v90=cP(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(Q){return!1}});function mU(Q){if(uU(Q)===!1)return!1;let J=Q.constructor;if(J===void 0)return!0;let X=J.prototype;if(uU(X)===!1)return!1;if(Object.prototype.hasOwnProperty.call(X,"isPrototypeOf")===!1)return!1;return!0}function DC4(Q){let J=0;for(let X in Q)if(Object.prototype.hasOwnProperty.call(Q,X))J++;return J}var LC4=(Q)=>{let J=typeof Q;switch(J){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(Q)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":if(Array.isArray(Q))return"array";if(Q===null)return"null";if(Q.then&&typeof Q.then==="function"&&Q.catch&&typeof Q.catch==="function")return"promise";if(typeof Map<"u"&&Q instanceof Map)return"map";if(typeof Set<"u"&&Q instanceof Set)return"set";if(typeof Date<"u"&&Q instanceof Date)return"date";if(typeof File<"u"&&Q instanceof File)return"file";return"object";default:throw Error(`Unknown data type: ${J}`)}},iP=new Set(["string","number","symbol"]),k90=new Set(["string","number","bigint","boolean","symbol","undefined"]);function kW(Q){return Q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fJ(Q,J,X){let G=new Q._zod.constr(J??Q._zod.def);if(!J||X?.parent)G._zod.parent=Q;return G}function W1(Q){let J=Q;if(!J)return{};if(typeof J==="string")return{error:()=>J};if(J?.message!==void 0){if(J?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");J.error=J.message}if(delete J.message,typeof J.error==="string")return{...J,error:()=>J.error};return J}function wC4(Q){let J;return new Proxy({},{get(X,G,Y){return J??(J=Q()),Reflect.get(J,G,Y)},set(X,G,Y,W){return J??(J=Q()),Reflect.set(J,G,Y,W)},has(X,G){return J??(J=Q()),Reflect.has(J,G)},deleteProperty(X,G){return J??(J=Q()),Reflect.deleteProperty(J,G)},ownKeys(X){return J??(J=Q()),Reflect.ownKeys(J)},getOwnPropertyDescriptor(X,G){return J??(J=Q()),Reflect.getOwnPropertyDescriptor(J,G)},defineProperty(X,G,Y){return J??(J=Q()),Reflect.defineProperty(J,G,Y)}})}function Z1(Q){if(typeof Q==="bigint")return Q.toString()+"n";if(typeof Q==="string")return`"${Q}"`;return`${Q}`}function _90(Q){return Object.keys(Q).filter((J)=>{return Q[J]._zod.optin==="optional"&&Q[J]._zod.optout==="optional"})}var y90={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},h90={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function PC4(Q,J){let X={},G=Q._zod.def;for(let Y in J){if(!(Y in G.shape))throw Error(`Unrecognized key: "${Y}"`);if(!J[Y])continue;X[Y]=G.shape[Y]}return fJ(Q,{...Q._zod.def,shape:X,checks:[]})}function MC4(Q,J){let X={...Q._zod.def.shape},G=Q._zod.def;for(let Y in J){if(!(Y in G.shape))throw Error(`Unrecognized key: "${Y}"`);if(!J[Y])continue;delete X[Y]}return fJ(Q,{...Q._zod.def,shape:X,checks:[]})}function TC4(Q,J){if(!mU(J))throw Error("Invalid input to extend: expected a plain object");let X={...Q._zod.def,get shape(){let G={...Q._zod.def.shape,...J};return S90(this,"shape",G),G},checks:[]};return fJ(Q,X)}function AC4(Q,J){return fJ(Q,{...Q._zod.def,get shape(){let X={...Q._zod.def.shape,...J._zod.def.shape};return S90(this,"shape",X),X},catchall:J._zod.def.catchall,checks:[]})}function EC4(Q,J,X){let G=J._zod.def.shape,Y={...G};if(X)for(let W in X){if(!(W in G))throw Error(`Unrecognized key: "${W}"`);if(!X[W])continue;Y[W]=Q?new Q({type:"optional",innerType:G[W]}):G[W]}else for(let W in G)Y[W]=Q?new Q({type:"optional",innerType:G[W]}):G[W];return fJ(J,{...J._zod.def,shape:Y,checks:[]})}function jC4(Q,J,X){let G=J._zod.def.shape,Y={...G};if(X)for(let W in X){if(!(W in Y))throw Error(`Unrecognized key: "${W}"`);if(!X[W])continue;Y[W]=new Q({type:"nonoptional",innerType:G[W]})}else for(let W in G)Y[W]=new Q({type:"nonoptional",innerType:G[W]});return fJ(J,{...J._zod.def,shape:Y,checks:[]})}function Fq(Q,J=0){for(let X=J;X<Q.issues.length;X++)if(Q.issues[X]?.continue!==!0)return!0;return!1}function QJ(Q,J){return J.map((X)=>{var G;return(G=X).path??(G.path=[]),X.path.unshift(Q),X})}function dP(Q){return typeof Q==="string"?Q:Q?.message}function bJ(Q,J,X){let G={...Q,path:Q.path??[]};if(!Q.message){let Y=dP(Q.inst?._zod.def?.error?.(Q))??dP(J?.error?.(Q))??dP(X.customError?.(Q))??dP(X.localeError?.(Q))??"Invalid input";G.message=Y}if(delete G.inst,delete G.continue,!J?.reportInput)delete G.input;return G}function rP(Q){if(Q instanceof Set)return"set";if(Q instanceof Map)return"map";if(Q instanceof File)return"file";return"unknown"}function aP(Q){if(Array.isArray(Q))return"array";if(typeof Q==="string")return"string";return"unknown"}function f90(...Q){let[J,X,G]=Q;if(typeof J==="string")return{message:J,code:"custom",input:X,inst:G};return{...J}}function IC4(Q){return Object.entries(Q).filter(([J,X])=>{return Number.isNaN(Number.parseInt(J,10))}).map((J)=>J[1])}class DG1{constructor(...Q){}}var LG1=(Q,J)=>{Q.name="$ZodError",Object.defineProperty(Q,"_zod",{value:Q._zod,enumerable:!1}),Object.defineProperty(Q,"issues",{value:J,enumerable:!1}),Object.defineProperty(Q,"message",{get(){return JSON.stringify(J,C90,2)},enumerable:!0}),Object.defineProperty(Q,"toString",{value:()=>Q.message,enumerable:!1})},oP=T0("$ZodError",LG1),lU=T0("$ZodError",LG1,{Parent:Error});function sP(Q,J=(X)=>X.message){let X={},G=[];for(let Y of Q.issues)if(Y.path.length>0)X[Y.path[0]]=X[Y.path[0]]||[],X[Y.path[0]].push(J(Y));else G.push(J(Y));return{formErrors:G,fieldErrors:X}}function tP(Q,J){let X=J||function(W){return W.message},G={_errors:[]},Y=(W)=>{for(let $ of W.issues)if($.code==="invalid_union"&&$.errors.length)$.errors.map((K)=>Y({issues:K}));else if($.code==="invalid_key")Y({issues:$.issues});else if($.code==="invalid_element")Y({issues:$.issues});else if($.path.length===0)G._errors.push(X($));else{let K=G,Z=0;while(Z<$.path.length){let H=$.path[Z];if(Z!==$.path.length-1)K[H]=K[H]||{_errors:[]};else K[H]=K[H]||{_errors:[]},K[H]._errors.push(X($));K=K[H],Z++}}};return Y(Q),G}function b90(Q,J){let X=J||function(W){return W.message},G={errors:[]},Y=(W,$=[])=>{var K,Z;for(let H of W.issues)if(H.code==="invalid_union"&&H.errors.length)H.errors.map((q)=>Y({issues:q},H.path));else if(H.code==="invalid_key")Y({issues:H.issues},H.path);else if(H.code==="invalid_element")Y({issues:H.issues},H.path);else{let q=[...$,...H.path];if(q.length===0){G.errors.push(X(H));continue}let F=G,V=0;while(V<q.length){let z=q[V],U=V===q.length-1;if(typeof z==="string")F.properties??(F.properties={}),(K=F.properties)[z]??(K[z]={errors:[]}),F=F.properties[z];else F.items??(F.items=[]),(Z=F.items)[z]??(Z[z]={errors:[]}),F=F.items[z];if(U)F.errors.push(X(H));V++}}};return Y(Q),G}function wG1(Q){let J=[];for(let X of Q)if(typeof X==="number")J.push(`[${X}]`);else if(typeof X==="symbol")J.push(`[${JSON.stringify(String(X))}]`);else if(/[^\w$]/.test(X))J.push(`[${JSON.stringify(X)}]`);else{if(J.length)J.push(".");J.push(X)}return J.join("")}function x90(Q){let J=[],X=[...Q.issues].sort((G,Y)=>G.path.length-Y.path.length);for(let G of X)if(J.push(`\u2716 ${G.message}`),G.path?.length)J.push(` \u2192 at ${wG1(G.path)}`);return J.join(`
|
|
1071
1071
|
`)}var R_=(Q)=>(J,X,G,Y)=>{let W=G?Object.assign(G,{async:!1}):{async:!1},$=J._zod.run({value:X,issues:[]},W);if($ instanceof Promise)throw new vW;if($.issues.length){let K=new(Y?.Err??Q)($.issues.map((Z)=>bJ(Z,W,B9())));throw C_(K,Y?.callee),K}return $.value},S_=R_(lU),v_=(Q)=>async(J,X,G,Y)=>{let W=G?Object.assign(G,{async:!0}):{async:!0},$=J._zod.run({value:X,issues:[]},W);if($ instanceof Promise)$=await $;if($.issues.length){let K=new(Y?.Err??Q)($.issues.map((Z)=>bJ(Z,W,B9())));throw C_(K,Y?.callee),K}return $.value},k_=v_(lU),__=(Q)=>(J,X,G)=>{let Y=G?{...G,async:!1}:{async:!1},W=J._zod.run({value:X,issues:[]},Y);if(W instanceof Promise)throw new vW;return W.issues.length?{success:!1,error:new(Q??oP)(W.issues.map(($)=>bJ($,Y,B9())))}:{success:!0,data:W.value}},g90=__(lU),y_=(Q)=>async(J,X,G)=>{let Y=G?Object.assign(G,{async:!0}):{async:!0},W=J._zod.run({value:X,issues:[]},Y);if(W instanceof Promise)W=await W;return W.issues.length?{success:!1,error:new Q(W.issues.map(($)=>bJ($,Y,B9())))}:{success:!0,data:W.value}},u90=y_(lU);var zq={};_6(zq,{xid:()=>p90,uuid7:()=>kC4,uuid6:()=>vC4,uuid4:()=>SC4,uuid:()=>Vq,uppercase:()=>N50,unicodeEmail:()=>hC4,undefined:()=>z50,ulid:()=>d90,time:()=>W50,string:()=>K50,rfc5322Email:()=>yC4,number:()=>q50,null:()=>V50,nanoid:()=>n90,lowercase:()=>U50,ksuid:()=>c90,ipv6:()=>t90,ipv4:()=>s90,integer:()=>H50,html5Email:()=>_C4,hostname:()=>X50,guid:()=>r90,extendedDuration:()=>RC4,emoji:()=>o90,email:()=>a90,e164:()=>Y50,duration:()=>i90,domain:()=>xC4,datetime:()=>$50,date:()=>G50,cuid2:()=>l90,cuid:()=>m90,cidrv6:()=>Q50,cidrv4:()=>e90,browserEmail:()=>fC4,boolean:()=>F50,bigint:()=>Z50,base64url:()=>h_,base64:()=>J50,_emoji:()=>bC4});var m90=/^[cC][^\s-]{8,}$/,l90=/^[0-9a-z]+$/,d90=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,p90=/^[0-9a-vA-V]{20}$/,c90=/^[A-Za-z0-9]{27}$/,n90=/^[a-zA-Z0-9_-]{21}$/,i90=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,RC4=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,r90=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Vq=(Q)=>{if(!Q)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${Q}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)},SC4=Vq(4),vC4=Vq(6),kC4=Vq(7),a90=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,_C4=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,yC4=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,hC4=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,fC4=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bC4="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function o90(){return new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")}var s90=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,t90=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,e90=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Q50=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,J50=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,h_=/^[A-Za-z0-9_-]*$/,X50=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,xC4=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Y50=/^\+(?:[0-9]){6,14}[0-9]$/,PG1="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",G50=new RegExp(`^${PG1}$`);function MG1(Q){return typeof Q.precision==="number"?Q.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":Q.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${Q.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function W50(Q){return new RegExp(`^${MG1(Q)}$`)}function $50(Q){let J=MG1({precision:Q.precision}),X=["Z"];if(Q.local)X.push("");if(Q.offset)X.push("([+-]\\d{2}:\\d{2})");let G=`${J}(?:${X.join("|")})`;return new RegExp(`^${PG1}T(?:${G})$`)}var K50=(Q)=>{let J=Q?`[\\s\\S]{${Q?.minimum??0},${Q?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${J}$`)},Z50=/^\d+n?$/,H50=/^\d+$/,q50=/^-?\d+(?:\.\d+)?/i,F50=/true|false/i,V50=/null/i;var z50=/undefined/i;var U50=/^[^A-Z]*$/,N50=/^[^a-z]*$/;var l8=T0("$ZodCheck",(Q,J)=>{var X;Q._zod??(Q._zod={}),Q._zod.def=J,(X=Q._zod).onattach??(X.onattach=[])}),AG1={number:"number",bigint:"bigint",object:"date"},f_=T0("$ZodCheckLessThan",(Q,J)=>{l8.init(Q,J);let X=AG1[typeof J.value];Q._zod.onattach.push((G)=>{let Y=G._zod.bag,W=(J.inclusive?Y.maximum:Y.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(J.value<W)if(J.inclusive)Y.maximum=J.value;else Y.exclusiveMaximum=J.value}),Q._zod.check=(G)=>{if(J.inclusive?G.value<=J.value:G.value<J.value)return;G.issues.push({origin:X,code:"too_big",maximum:J.value,input:G.value,inclusive:J.inclusive,inst:Q,continue:!J.abort})}}),b_=T0("$ZodCheckGreaterThan",(Q,J)=>{l8.init(Q,J);let X=AG1[typeof J.value];Q._zod.onattach.push((G)=>{let Y=G._zod.bag,W=(J.inclusive?Y.minimum:Y.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(J.value>W)if(J.inclusive)Y.minimum=J.value;else Y.exclusiveMinimum=J.value}),Q._zod.check=(G)=>{if(J.inclusive?G.value>=J.value:G.value>J.value)return;G.issues.push({origin:X,code:"too_small",minimum:J.value,input:G.value,inclusive:J.inclusive,inst:Q,continue:!J.abort})}}),B50=T0("$ZodCheckMultipleOf",(Q,J)=>{l8.init(Q,J),Q._zod.onattach.push((X)=>{var G;(G=X._zod.bag).multipleOf??(G.multipleOf=J.value)}),Q._zod.check=(X)=>{if(typeof X.value!==typeof J.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof X.value==="bigint"?X.value%J.value===BigInt(0):R90(X.value,J.value)===0)return;X.issues.push({origin:typeof X.value,code:"not_multiple_of",divisor:J.value,input:X.value,inst:Q,continue:!J.abort})}}),O50=T0("$ZodCheckNumberFormat",(Q,J)=>{l8.init(Q,J),J.format=J.format||"float64";let X=J.format?.includes("int"),G=X?"int":"number",[Y,W]=y90[J.format];Q._zod.onattach.push(($)=>{let K=$._zod.bag;if(K.format=J.format,K.minimum=Y,K.maximum=W,X)K.pattern=H50}),Q._zod.check=($)=>{let K=$.value;if(X){if(!Number.isInteger(K)){$.issues.push({expected:G,format:J.format,code:"invalid_type",input:K,inst:Q});return}if(!Number.isSafeInteger(K)){if(K>0)$.issues.push({input:K,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Q,origin:G,continue:!J.abort});else $.issues.push({input:K,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Q,origin:G,continue:!J.abort});return}}if(K<Y)$.issues.push({origin:"number",input:K,code:"too_small",minimum:Y,inclusive:!0,inst:Q,continue:!J.abort});if(K>W)$.issues.push({origin:"number",input:K,code:"too_big",maximum:W,inst:Q})}}),D50=T0("$ZodCheckBigIntFormat",(Q,J)=>{l8.init(Q,J);let[X,G]=h90[J.format];Q._zod.onattach.push((Y)=>{let W=Y._zod.bag;W.format=J.format,W.minimum=X,W.maximum=G}),Q._zod.check=(Y)=>{let W=Y.value;if(W<X)Y.issues.push({origin:"bigint",input:W,code:"too_small",minimum:X,inclusive:!0,inst:Q,continue:!J.abort});if(W>G)Y.issues.push({origin:"bigint",input:W,code:"too_big",maximum:G,inst:Q})}}),L50=T0("$ZodCheckMaxSize",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.size!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag.maximum??Number.POSITIVE_INFINITY;if(J.maximum<Y)G._zod.bag.maximum=J.maximum}),Q._zod.check=(G)=>{let Y=G.value;if(Y.size<=J.maximum)return;G.issues.push({origin:rP(Y),code:"too_big",maximum:J.maximum,input:Y,inst:Q,continue:!J.abort})}}),w50=T0("$ZodCheckMinSize",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.size!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(J.minimum>Y)G._zod.bag.minimum=J.minimum}),Q._zod.check=(G)=>{let Y=G.value;if(Y.size>=J.minimum)return;G.issues.push({origin:rP(Y),code:"too_small",minimum:J.minimum,input:Y,inst:Q,continue:!J.abort})}}),P50=T0("$ZodCheckSizeEquals",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.size!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag;Y.minimum=J.size,Y.maximum=J.size,Y.size=J.size}),Q._zod.check=(G)=>{let Y=G.value,W=Y.size;if(W===J.size)return;let $=W>J.size;G.issues.push({origin:rP(Y),...$?{code:"too_big",maximum:J.size}:{code:"too_small",minimum:J.size},inclusive:!0,exact:!0,input:G.value,inst:Q,continue:!J.abort})}}),M50=T0("$ZodCheckMaxLength",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.length!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag.maximum??Number.POSITIVE_INFINITY;if(J.maximum<Y)G._zod.bag.maximum=J.maximum}),Q._zod.check=(G)=>{let Y=G.value;if(Y.length<=J.maximum)return;let $=aP(Y);G.issues.push({origin:$,code:"too_big",maximum:J.maximum,inclusive:!0,input:Y,inst:Q,continue:!J.abort})}}),T50=T0("$ZodCheckMinLength",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.length!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(J.minimum>Y)G._zod.bag.minimum=J.minimum}),Q._zod.check=(G)=>{let Y=G.value;if(Y.length>=J.minimum)return;let $=aP(Y);G.issues.push({origin:$,code:"too_small",minimum:J.minimum,inclusive:!0,input:Y,inst:Q,continue:!J.abort})}}),A50=T0("$ZodCheckLengthEquals",(Q,J)=>{var X;l8.init(Q,J),(X=Q._zod.def).when??(X.when=(G)=>{let Y=G.value;return!YZ(Y)&&Y.length!==void 0}),Q._zod.onattach.push((G)=>{let Y=G._zod.bag;Y.minimum=J.length,Y.maximum=J.length,Y.length=J.length}),Q._zod.check=(G)=>{let Y=G.value,W=Y.length;if(W===J.length)return;let $=aP(Y),K=W>J.length;G.issues.push({origin:$,...K?{code:"too_big",maximum:J.length}:{code:"too_small",minimum:J.length},inclusive:!0,exact:!0,input:G.value,inst:Q,continue:!J.abort})}}),dU=T0("$ZodCheckStringFormat",(Q,J)=>{var X,G;if(l8.init(Q,J),Q._zod.onattach.push((Y)=>{let W=Y._zod.bag;if(W.format=J.format,J.pattern)W.patterns??(W.patterns=new Set),W.patterns.add(J.pattern)}),J.pattern)(X=Q._zod).check??(X.check=(Y)=>{if(J.pattern.lastIndex=0,J.pattern.test(Y.value))return;Y.issues.push({origin:"string",code:"invalid_format",format:J.format,input:Y.value,...J.pattern?{pattern:J.pattern.toString()}:{},inst:Q,continue:!J.abort})});else(G=Q._zod).check??(G.check=()=>{})}),E50=T0("$ZodCheckRegex",(Q,J)=>{dU.init(Q,J),Q._zod.check=(X)=>{if(J.pattern.lastIndex=0,J.pattern.test(X.value))return;X.issues.push({origin:"string",code:"invalid_format",format:"regex",input:X.value,pattern:J.pattern.toString(),inst:Q,continue:!J.abort})}}),j50=T0("$ZodCheckLowerCase",(Q,J)=>{J.pattern??(J.pattern=U50),dU.init(Q,J)}),I50=T0("$ZodCheckUpperCase",(Q,J)=>{J.pattern??(J.pattern=N50),dU.init(Q,J)}),C50=T0("$ZodCheckIncludes",(Q,J)=>{l8.init(Q,J);let X=kW(J.includes),G=new RegExp(typeof J.position==="number"?`^.{${J.position}}${X}`:X);J.pattern=G,Q._zod.onattach.push((Y)=>{let W=Y._zod.bag;W.patterns??(W.patterns=new Set),W.patterns.add(G)}),Q._zod.check=(Y)=>{if(Y.value.includes(J.includes,J.position))return;Y.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:J.includes,input:Y.value,inst:Q,continue:!J.abort})}}),R50=T0("$ZodCheckStartsWith",(Q,J)=>{l8.init(Q,J);let X=new RegExp(`^${kW(J.prefix)}.*`);J.pattern??(J.pattern=X),Q._zod.onattach.push((G)=>{let Y=G._zod.bag;Y.patterns??(Y.patterns=new Set),Y.patterns.add(X)}),Q._zod.check=(G)=>{if(G.value.startsWith(J.prefix))return;G.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:J.prefix,input:G.value,inst:Q,continue:!J.abort})}}),S50=T0("$ZodCheckEndsWith",(Q,J)=>{l8.init(Q,J);let X=new RegExp(`.*${kW(J.suffix)}$`);J.pattern??(J.pattern=X),Q._zod.onattach.push((G)=>{let Y=G._zod.bag;Y.patterns??(Y.patterns=new Set),Y.patterns.add(X)}),Q._zod.check=(G)=>{if(G.value.endsWith(J.suffix))return;G.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:J.suffix,input:G.value,inst:Q,continue:!J.abort})}});function TG1(Q,J,X){if(Q.issues.length)J.issues.push(...QJ(X,Q.issues))}var v50=T0("$ZodCheckProperty",(Q,J)=>{l8.init(Q,J),Q._zod.check=(X)=>{let G=J.schema._zod.run({value:X.value[J.property],issues:[]},{});if(G instanceof Promise)return G.then((Y)=>TG1(Y,X,J.property));TG1(G,X,J.property);return}}),k50=T0("$ZodCheckMimeType",(Q,J)=>{l8.init(Q,J);let X=new Set(J.mime);Q._zod.onattach.push((G)=>{G._zod.bag.mime=J.mime}),Q._zod.check=(G)=>{if(X.has(G.value.type))return;G.issues.push({code:"invalid_value",values:J.mime,input:G.value.type,inst:Q})}}),_50=T0("$ZodCheckOverwrite",(Q,J)=>{l8.init(Q,J),Q._zod.check=(X)=>{X.value=J.tx(X.value)}});class x_{constructor(Q=[]){if(this.content=[],this.indent=0,this)this.args=Q}indented(Q){this.indent+=1,Q(this),this.indent-=1}write(Q){if(typeof Q==="function"){Q(this,{execution:"sync"}),Q(this,{execution:"async"});return}let X=Q.split(`
|
|
@@ -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");return Q.body.pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform(J,X){let G=J.split(`
|
|
1130
|
-
`);for(let Y of G)if(Y.trim())try{let W=JSON.parse(Y);X.enqueue(W)}catch(W){throw console.error("Failed to parse stream chunk:",W),W}}}))}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
|
+
`);for(let Y of G)if(Y.trim())try{let W=JSON.parse(Y);X.enqueue(W)}catch(W){throw console.error("Failed to parse stream chunk:",W),W}}}))}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});
|