@decocms/mesh 2.123.2 → 2.123.3
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 +5 -5
- package/dist/server/migrate.js +4 -4
- package/dist/server/server.js +5 -5
- package/package.json +1 -1
package/dist/server/migrate.js
CHANGED
|
@@ -1191,7 +1191,7 @@ At the end, provide a concise summary of:
|
|
|
1191
1191
|
- What failed
|
|
1192
1192
|
- What could not be tested and why
|
|
1193
1193
|
- If some tool needs user-specific context (email/account/tenant), explicitly output a "CONTEXT_REQUIRED" note with what is needed.
|
|
1194
|
-
`.trim()});import{sql as Ow0}from"kysely";var Lw0;var Nw0=S(()=>{Lw0={name:"001-private-registry",async up(Y){await Y.schema.createTable("private_registry_item").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(Q)=>Q.notNull()).addColumn("description","text").addColumn("server_json","text",(Q)=>Q.notNull()).addColumn("meta_json","text").addColumn("tags","text").addColumn("categories","text").addColumn("is_public","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(Ow0`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(Ow0`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(Q)=>Q.references("user.id").onDelete("set null")).execute(),await Y.schema.createIndex("idx_private_registry_item_org").on("private_registry_item").column("organization_id").execute(),await Y.schema.createIndex("idx_private_registry_item_org_public").on("private_registry_item").columns(["organization_id","is_public"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_item_org_public").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_item_org").ifExists().execute(),await Y.schema.dropTable("private_registry_item").ifExists().execute()}}});import{sql as Mw0}from"kysely";var ww0;var Aw0=S(()=>{ww0={name:"002-publish-requests",async up(Y){await Y.schema.createTable("private_registry_publish_request").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(Q)=>Q.notNull().defaultTo("pending")).addColumn("title","text",(Q)=>Q.notNull()).addColumn("description","text").addColumn("server_json","text",(Q)=>Q.notNull()).addColumn("meta_json","text").addColumn("requester_name","text").addColumn("requester_email","text").addColumn("reviewer_notes","text").addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(Mw0`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(Mw0`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_publish_request_org_status").on("private_registry_publish_request").columns(["organization_id","status"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_publish_request_org_status").ifExists().execute(),await Y.schema.dropTable("private_registry_publish_request").ifExists().execute()}}});import{sql as sH4}from"kysely";var Pw0;var Ew0=S(()=>{Pw0={name:"003-publish-api-keys",async up(Y){await Y.schema.createTable("private_registry_publish_api_key").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("name","text",(Q)=>Q.notNull()).addColumn("key_hash","text",(Q)=>Q.notNull()).addColumn("prefix","text",(Q)=>Q.notNull()).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(sH4`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_publish_api_key_org").on("private_registry_publish_api_key").columns(["organization_id"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_publish_api_key_org").ifExists().execute(),await Y.schema.dropTable("private_registry_publish_api_key").ifExists().execute()}}});var Tw0;var Cw0=S(()=>{Tw0={name:"004-publish-request-requested-id",async up(Y){await Y.schema.alterTable("private_registry_publish_request").addColumn("requested_id","text").execute()},async down(Y){await Y.schema.alterTable("private_registry_publish_request").dropColumn("requested_id").execute()}}});import{sql as pm}from"kysely";var Rw0;var Iw0=S(()=>{Rw0={name:"005-monitor-runs",async up(Y){await Y.schema.createTable("private_registry_monitor_run").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(Q)=>Q.notNull().defaultTo("pending")).addColumn("config_snapshot","text").addColumn("total_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tested_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("passed_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("failed_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("skipped_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("current_item_id","text").addColumn("started_at","text").addColumn("finished_at","text").addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_run_org_created").on("private_registry_monitor_run").columns(["organization_id","created_at"]).execute(),await Y.schema.createTable("private_registry_monitor_result").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("run_id","text",(Q)=>Q.notNull().references("private_registry_monitor_run.id").onDelete("cascade")).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("item_id","text",(Q)=>Q.notNull()).addColumn("item_title","text",(Q)=>Q.notNull()).addColumn("status","text",(Q)=>Q.notNull()).addColumn("error_message","text").addColumn("connection_ok","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tools_listed","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tool_results","text").addColumn("agent_summary","text").addColumn("duration_ms","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("action_taken","text",(Q)=>Q.notNull().defaultTo("none")).addColumn("tested_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_result_run").on("private_registry_monitor_result").columns(["run_id","tested_at"]).execute(),await Y.schema.createIndex("idx_private_registry_monitor_result_run_status").on("private_registry_monitor_result").columns(["run_id","status"]).execute(),await Y.schema.createTable("private_registry_monitor_connection").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("item_id","text",(Q)=>Q.notNull()).addColumn("connection_id","text",(Q)=>Q.notNull().references("connections.id").onDelete("cascade")).addColumn("auth_status","text",(Q)=>Q.notNull().defaultTo("none")).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_connection_org_item").on("private_registry_monitor_connection").columns(["organization_id","item_id"]).unique().execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_monitor_connection_org_item").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_connection").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_result_run_status").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_result_run").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_result").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_run_org_created").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_run").ifExists().execute()}}});var jw0;var Sw0=S(()=>{jw0={name:"006-unlisted",async up(Y){await Y.schema.alterTable("private_registry_item").addColumn("is_unlisted","integer",(Q)=>Q.notNull().defaultTo(0)).execute()},async down(Y){await Y.schema.alterTable("private_registry_item").dropColumn("is_unlisted").execute()}}});var _w0;var vw0=S(()=>{Nw0();Aw0();Ew0();Cw0();Iw0();Sw0();_w0=[Lw0,ww0,Pw0,Tw0,Rw0,jw0]});function tH4(Y){let Q=Y;if(!Q||typeof Q!=="object"||!("method"in Q))return null;switch(Q.method){case"initialize":{let X=Q?.params?.protocolVersion;if(!X)return null;return{type:"emit",message:{result:{protocolVersion:X,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Q.jsonrpc??"2.0",id:Q.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var cm;var lZ1=S(()=>{TA();cm=class cm extends wH{constructor(Y,Q){super(Y,Q)}send(Y,Q){let X=tH4(Y);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send(Y,Q)}}});function AC(Y,Q){if(Y===Q)return!0;if(Y==null||Q==null)return Y===Q;if(typeof Y!==typeof Q)return!1;if(Array.isArray(Y)&&Array.isArray(Q)){if(Y.length!==Q.length)return!1;return Y.every((X,J)=>AC(X,Q[J]))}if(typeof Y==="object"&&typeof Q==="object"){let X=Object.keys(Y),J=Object.keys(Q);if(X.length!==J.length)return!1;return X.every((G)=>J.includes(G)&&AC(Y[G],Q[G]))}return!1}function wF4(){return(Y)=>{if(!Array.isArray(Y))return!0;let Q=[];return Y.every((X)=>{if(Q.some((G)=>AC(X,G)))return!1;return Q.push(X),!0})}}function nm(Y,Q){return Y.safeParse(Q).success}function vQ(Y){if(typeof Y==="boolean")return Y?q.any():q.never();let Q={};for(let G of fF4)G.apply(Q,Y);let X=[];if(Q.string!==!1)X.push(Q.string||q.string());if(Q.number!==!1)X.push(Q.number||q.number());if(Q.boolean!==!1)X.push(Q.boolean||q.boolean());if(Q.null!==!1)X.push(Q.null||q.null());if(Q.array!==!1)X.push(Q.array||q.array(q.any()));if(Q.tuple!==!1&&Q.tuple!==void 0)X.push(Q.tuple);if(Q.object!==!1)if(Q.object)X.push(Q.object);else{let G=q.custom((K)=>{return typeof K==="object"&&K!==null&&!Array.isArray(K)},"Must be an object, not an array");X.push(G)}if(Q.file!==!1&&Q.file!==void 0)X.push(Q.file);let J;if(X.length===0)J=q.never();else if(X.length===1)J=X[0];else if(!Object.keys(Y).some((K)=>K!=="$schema"&&K!=="title"&&K!=="description"))J=q.any();else J=q.union(X);for(let G of bF4)J=G.apply(J,Y);return J}var eH4=class{apply(Y,Q){if(!Q.type)return;let X=Array.isArray(Q.type)?Q.type:[Q.type],J=new Set(X);if(!J.has("string"))Y.string=!1;if(!J.has("number")&&!J.has("integer"))Y.number=!1;if(!J.has("boolean"))Y.boolean=!1;if(!J.has("null"))Y.null=!1;if(!J.has("array"))Y.array=!1;if(!J.has("object"))Y.object=!1;if(J.has("integer")&&Y.number!==!1){let G=Y.number||q.number();if(G instanceof q.ZodNumber)Y.number=G.int()}}},YF4=class{apply(Y,Q){if(Q.const===void 0)return;let X=Q.const;if(Y.string=!1,Y.number=!1,Y.boolean=!1,Y.null=!1,Y.array=!1,Y.object=!1,typeof X==="string")Y.string=q.literal(X);else if(typeof X==="number")Y.number=q.literal(X);else if(typeof X==="boolean")Y.boolean=q.literal(X);else if(X===null)Y.null=q.null();else if(Array.isArray(X))Y.array=void 0;else if(typeof X==="object")Y.object=void 0}},QF4=class{apply(Y,Q){if(!Q.enum)return;if(Q.enum.length===0){if(!Q.type)Y.string=!1,Y.number=!1,Y.boolean=!1,Y.null=!1,Y.array=!1,Y.object=!1;return}let X={string:Q.enum.filter((J)=>typeof J==="string"),number:Q.enum.filter((J)=>typeof J==="number"),boolean:Q.enum.filter((J)=>typeof J==="boolean"),null:Q.enum.filter((J)=>J===null),array:Q.enum.filter((J)=>Array.isArray(J)),object:Q.enum.filter((J)=>typeof J==="object"&&J!==null&&!Array.isArray(J))};Y.string=this.createTypeSchema(X.string,"string"),Y.number=this.createTypeSchema(X.number,"number"),Y.boolean=this.createTypeSchema(X.boolean,"boolean"),Y.null=X.null.length>0?q.null():!1,Y.array=X.array.length>0?void 0:!1,Y.object=X.object.length>0?void 0:!1}createTypeSchema(Y,Q){if(Y.length===0)return!1;if(Y.length===1)return q.literal(Y[0]);if(Q==="string")return q.enum(Y);if(Q==="number"){let[X,J,...G]=Y;return q.union([q.literal(X),q.literal(J),...G.map((K)=>q.literal(K))])}if(Q==="boolean")return q.union([q.literal(!0),q.literal(!1)]);return!1}},XF4=class{apply(Y,Q){let X=Q;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let J=q.file();if(X.minLength!==void 0)J=J.min(X.minLength);if(X.maxLength!==void 0)J=J.max(X.maxLength);if(X.contentMediaType!==void 0)J=J.mime(X.contentMediaType);Y.file=J,Y.string=!1}}},JF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.minLength!==void 0||X.maxLength!==void 0||X.pattern!==void 0)){if(Y.string===void 0)Y.string=q.string()}}},GF4=class{apply(Y,Q){let X=Q;if(X.minLength===void 0)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString)Y.string=J.refine((G)=>{return Array.from(G).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},WF4=class{apply(Y,Q){let X=Q;if(X.maxLength===void 0)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString)Y.string=J.refine((G)=>{return Array.from(G).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},ZF4=class{apply(Y,Q){let X=Q;if(!X.pattern)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString){let G=new RegExp(X.pattern);Y.string=J.regex(G)}}}},KF4=class{apply(Y,Q){let X=Q;if(X.minimum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.min(X.minimum)}}},HF4=class{apply(Y,Q){let X=Q;if(X.maximum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.max(X.maximum)}}},FF4=class{apply(Y,Q){let X=Q;if(X.exclusiveMinimum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)if(typeof X.exclusiveMinimum==="number")Y.number=J.gt(X.exclusiveMinimum);else Y.number=!1}}},$F4=class{apply(Y,Q){let X=Q;if(X.exclusiveMaximum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)if(typeof X.exclusiveMaximum==="number")Y.number=J.lt(X.exclusiveMaximum);else Y.number=!1}}},VF4=class{apply(Y,Q){let X=Q;if(X.multipleOf===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.refine((G)=>{if(X.multipleOf===0)return!1;let K=G/X.multipleOf,W=Math.round(K),Z=Math.min(Math.abs(G)*Number.EPSILON*10,Math.abs(X.multipleOf)*Number.EPSILON*10);return Math.abs(K-W)<=Z/Math.abs(X.multipleOf)},{message:`Must be a multiple of ${X.multipleOf}`})}}},qF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.minItems!==void 0||X.maxItems!==void 0||X.items!==void 0||X.prefixItems!==void 0)){if(Y.array===void 0)Y.array=q.array(q.any())}}},BF4=class{apply(Y,Q){let X=Q;if(X.minItems===void 0)return;if(Y.array!==!1)Y.array=(Y.array||q.array(q.any())).min(X.minItems)}},UF4=class{apply(Y,Q){let X=Q;if(X.maxItems===void 0)return;if(Y.array!==!1)Y.array=(Y.array||q.array(q.any())).max(X.maxItems)}},zF4=class{apply(Y,Q){let X=Q;if(Y.array===!1)return;if(Array.isArray(X.items))Y.array=Y.array||q.array(q.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let J=vQ(X.items),G=q.array(J);if(Y.array&&Y.array instanceof q.ZodArray){let K=Y.array._def;if(K.checks)K.checks.forEach((W)=>{if(W._zod&&W._zod.def){let Z=W._zod.def;if(Z.check==="min_length"&&Z.minimum!==void 0)G=G.min(Z.minimum);else if(Z.check==="max_length"&&Z.maximum!==void 0)G=G.max(Z.maximum)}})}Y.array=G}else if(typeof X.items==="boolean"&&X.items===!1)if(!X.prefixItems)Y.array=q.array(q.any()).max(0);else Y.array=Y.array||q.array(q.any());else if(typeof X.items==="boolean"&&X.items===!0)Y.array=Y.array||q.array(q.any());else if(X.prefixItems)Y.array=Y.array||q.array(q.any())}},DF4=class{apply(Y,Q){if(Q.type!=="array")return;let X=Q;if(!Array.isArray(X.items))return;if(Y.array===!1)return;let J=X.items.map((K)=>vQ(K)),G;if(J.length===0)G=q.tuple([]);else G=q.tuple(J);if(X.minItems!==void 0&&X.minItems>J.length)G=!1;if(X.maxItems!==void 0&&X.maxItems<J.length)G=!1;Y.tuple=G,Y.array=!1}},OF4=class{apply(Y,Q){let X=Q;if(Y.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)Y.object=Y.object||q.object({}).passthrough()}},LF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if(Y.object===void 0)Y.object=q.object({}).passthrough()}}},NF4=class{apply(Y,Q){let X=Q;if(X.maxProperties===void 0)return;if(Y.object!==!1){let J=Y.object||q.object({}).passthrough();Y.object=J.refine((G)=>Object.keys(G).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},MF4=class{apply(Y,Q){let X=Q;if(X.minProperties===void 0)return;if(Y.object!==!1){let J=Y.object||q.object({}).passthrough();Y.object=J.refine((G)=>Object.keys(G).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},AF4=class{apply(Y,Q){if(!Q.not)return Y;let X=vQ(Q.not);return Y.refine((J)=>!nm(X,J),{message:"Value must not match the 'not' schema"})}},PF4=class{apply(Y,Q){if(Q.uniqueItems!==!0)return Y;return Y.refine(wF4(),{message:"Array items must be unique"})}},EF4=class{apply(Y,Q){if(!Q.allOf||Q.allOf.length===0)return Y;return Q.allOf.map((J)=>vQ(J)).reduce((J,G)=>q.intersection(J,G),Y)}},TF4=class{apply(Y,Q){if(!Q.anyOf||Q.anyOf.length===0)return Y;let X=Q.anyOf.length===1?vQ(Q.anyOf[0]):q.union([vQ(Q.anyOf[0]),vQ(Q.anyOf[1]),...Q.anyOf.slice(2).map((J)=>vQ(J))]);return q.intersection(Y,X)}},CF4=class{apply(Y,Q){if(!Q.oneOf||Q.oneOf.length===0)return Y;let X=Q.oneOf.map((J)=>vQ(J));return Y.refine((J)=>{let G=0;for(let K of X)if(K.safeParse(J).success){if(G++,G>1)return!1}return G===1},{message:"Value must match exactly one of the oneOf schemas"})}},RF4=class{apply(Y,Q){let X=Q;if(X.prefixItems&&Array.isArray(X.prefixItems)){let G=X.prefixItems.map((K)=>vQ(K));return Y.refine((K)=>{if(!Array.isArray(K))return!0;for(let W=0;W<Math.min(K.length,G.length);W++)if(!nm(G[W],K[W]))return!1;if(K.length>G.length){if(typeof X.items==="boolean"&&X.items===!1)return!1;else if(X.items&&typeof X.items==="object"&&!Array.isArray(X.items)){let W=vQ(X.items);for(let Z=G.length;Z<K.length;Z++)if(!nm(W,K[Z]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return Y}},IF4=class{apply(Y,Q){let X=Q;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return Y;if(Y instanceof q.ZodObject||Y instanceof q.ZodRecord){let J={};if(X.properties){for(let[G,K]of Object.entries(X.properties))if(K!==void 0)J[G]=vQ(K)}if(X.required&&Array.isArray(X.required)){let G=new Set(X.required);for(let K of Object.keys(J))if(!G.has(K))J[K]=J[K].optional()}else for(let G of Object.keys(J))J[G]=J[G].optional();if(X.additionalProperties===!1)return q.object(J);else return q.object(J).passthrough()}return Y.refine((J)=>{if(typeof J!=="object"||J===null||Array.isArray(J))return!0;if(X.properties){for(let[G,K]of Object.entries(X.properties))if(K!==void 0){if(Object.getOwnPropertyDescriptor(J,G)!==void 0){if(!vQ(K).safeParse(J[G]).success)return!1}}}if(X.required&&Array.isArray(X.required)){for(let G of X.required)if(Object.getOwnPropertyDescriptor(J,G)===void 0)return!1}if(X.additionalProperties===!1&&X.properties){let G=new Set(Object.keys(X.properties));for(let K in J)if(!G.has(K))return!1}return!0},{message:"Object constraints validation failed"})}},jF4=class{apply(Y,Q){if(!Q.enum||Q.enum.length===0)return Y;let X=Q.enum.filter((J)=>Array.isArray(J)||typeof J==="object"&&J!==null);if(X.length===0)return Y;return Y.refine((J)=>{if(typeof J!=="object"||J===null)return!0;return X.some((G)=>AC(J,G))},{message:"Value must match one of the enum values"})}},SF4=class{apply(Y,Q){if(Q.const===void 0)return Y;let X=Q.const;if(typeof X!=="object"||X===null)return Y;return Y.refine((J)=>AC(J,X),{message:"Value must equal the const value"})}},_F4=class{apply(Y,Q){if(Q.description)Y=Y.describe(Q.description);return Y}},vF4=class{apply(Y,Q){var X;let J=Q;if(!((X=J.required)==null?void 0:X.includes("__proto__"))||Q.type!==void 0)return Y;return q.any().refine((G)=>this.validateRequired(G,J.required),{message:"Missing required properties"})}validateRequired(Y,Q){if(typeof Y!=="object"||Y===null||Array.isArray(Y))return!0;return Q.every((X)=>Object.prototype.hasOwnProperty.call(Y,X))}},kF4=class{apply(Y,Q){var X;let J=Q;if(J.contains===void 0)return Y;let G=vQ(J.contains),K=(X=J.minContains)!=null?X:1,W=J.maxContains;return Y.refine((Z)=>{if(!Array.isArray(Z))return!0;let H=0;for(let F of Z)if(nm(G,F))H++;if(H<K)return!1;if(W!==void 0&&H>W)return!1;return!0},{message:"Array must contain required items matching the schema"})}},yF4=class{apply(Y,Q){let{default:X}=Q;if(X===void 0)return Y;if(!Y.safeParse(X).success)return Y;return Y.default(X)}},fF4,bF4;var kw0=S(()=>{G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();fF4=[new YF4,new QF4,new eH4,new XF4,new JF4,new qF4,new LF4,new GF4,new WF4,new ZF4,new KF4,new HF4,new FF4,new $F4,new VF4,new DF4,new BF4,new UF4,new zF4,new NF4,new MF4,new OF4],bF4=[new vF4,new jF4,new SF4,new EF4,new TF4,new CF4,new RF4,new IF4,new kF4,new AF4,new PF4,new yF4,new _F4]});class dZ1{constructor(Y){this._url=Y}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((Y,Q)=>{this._socket=new WebSocket(this._url,hF4),this._socket.onerror=(X)=>{let J="error"in X?X.error:Error(`WebSocket error: ${JSON.stringify(X)}`);Q(J),this.onerror?.(J)},this._socket.onopen=()=>{Y()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(X)=>{let J;try{J=oX.parse(JSON.parse(X.data))}catch(G){this.onerror?.(G);return}this.onmessage?.(J)}})}async close(){this._socket?.close()}send(Y){return new Promise((Q,X)=>{if(!this._socket){X(Error("Not connected"));return}this._socket?.send(JSON.stringify(Y)),Q()})}}var hF4="mcp";var yw0=S(()=>{jY()});var fw0,bw0=async(Y,Q,X)=>{let J=xF4(Y.connection,Q,X);if(!J)throw Error("Unknown MCP connection type");let G=new fw0({name:Y?.name??"MCP Client",version:"1.0.0"});return await G.connect(J),{client:G,callStreamableTool:(K,W,Z)=>{if(Y.connection.type!=="HTTP")throw Error("HTTP connection required");let H=new Headers(X);if(!H.has("Authorization"))H.set("Authorization",`Bearer ${Y.connection.token}`);for(let[V,B]of Object.entries(Y.connection.headers??{}))H.set(V,B);let F=new URL(Y.connection.url),$=F.pathname.replace(/\/+$/,"")||"/";return F.pathname=`${$}/call-tool/${encodeURIComponent(K)}`,fetch(F.href,{method:"POST",redirect:"manual",body:JSON.stringify(W),headers:H,signal:Z})}}},xF4=(Y,Q,X)=>{if(Y.type==="Websocket")return new dZ1(new URL(Y.url));if(Y.type!=="SSE"&&Y.type!=="HTTP")return null;let G={...Y.token?{authorization:`Bearer ${Y.token}`}:{},...X??{},..."headers"in Y?Y.headers||{}:{}};if(Y.type==="SSE"){let K={requestInit:{headers:G,signal:Q}};if(Y.token)K.eventSourceInit={fetch:(W,Z)=>{return fetch(W,{...Z,headers:{...G,Accept:"text/event-stream"},signal:Q})}};return new IB(new URL(Y.url),K)}return new cm(new URL(Y.url),{requestInit:{headers:G,signal:Q,credentials:"include"}})};var hw0=S(()=>{Pz();um();yw0();jY();lZ1();fw0=class fw0 extends sX{constructor(Y,Q){super(Y,Q)}async listTools(Y,Q){return await this.request({method:"tools/list",params:Y},aw,Q)}}});function uw0(Y){let Q=(X)=>{if("connection"in Y)return bw0({connection:Y.connection},void 0,X);return Y.client};return new Proxy({},{get(X,J){if(J==="toJSON")return null;if(typeof J!=="string")throw Error("Name must be a string");if(J==="listTools")return Z;async function G(H,F=J){let $=Y?.debugId?.(),V=$?{"x-trace-debug-id":$}:void 0,{client:B,callStreamableTool:U}=await Q(V);if(Y?.streamable?.[String(F)]){if(!U)throw Error(`Tool ${String(F)} requires streaming support but client doesn't provide callStreamableTool`);return await U(String(F),H)}let{structuredContent:z,isError:O,content:M}=await B.callTool({name:String(F),arguments:H});if(O){let P=M?.[0]?.text,j=typeof P==="string"?xw0(P):null,C=j?.code&&typeof Y?.getErrorByStatusCode==="function"?Y.getErrorByStatusCode(j.code,j.message,j.traceId):null;if(C)throw C;throw Error(`Tool ${String(F)} returned an error: ${JSON.stringify(z??M)}`)}if(z!==void 0)return z;let w=M?.[0]?.text;return typeof w==="string"?xw0(w):void 0}async function K(){let{client:H}=await Q(),{tools:F}=await H.listTools();return F}async function W(){if(!("connection"in Y))return K();let H=Y.connection,F=JSON.stringify(H);try{if(!im.has(F))im.set(F,K());return await im.get(F)}catch($){console.error("Failed to list tools",$),im.delete(F);return}}async function Z(){return(await W()??[]).map((F)=>gw0(F,G))}return G.asTool=async()=>{let F=(await W()??[]).find(($)=>$.name===J);if(!F)throw Error(`Tool ${J} not found`);return gw0(F,G)},G}})}var xw0=(Y)=>{try{return JSON.parse(Y)}catch{return Y}},im,gw0=(Y,Q)=>{return{...Y,id:Y.name,inputSchema:Y.inputSchema?vQ(Y.inputSchema):void 0,outputSchema:Y.outputSchema?vQ(Y.outputSchema):void 0,execute:(X)=>{return Q(X.context,Y.name)}}};var mw0=S(()=>{kw0();hw0();im=new Map});function SB(Y){return uw0(Y)}var am;var pZ1=S(()=>{mw0();am=new Proxy({},{get(Y,Q){if(Q==="toJSON")return null;if(Q==="forConnection")return(X)=>SB({connection:X});return global[Q]}})});function rm(Y){return{isImplementedBy:(Q)=>{for(let X of Y){let J=typeof X.name==="string"?new RegExp(`^${X.name}$`):X.name,G=Q.find((K)=>J.test(K.name));if(!G&&X.opt)continue;if(!G)return!1}return!0}}}var vZ=(Y)=>{return{...rm(Y),forClient:(Q)=>{return SB({client:Q,streamable:Y.reduce((X,J)=>{return X[J.name]=J.streamable===!0,X},{})})},forConnection:(Q)=>{return SB({connection:Q,streamable:Y.reduce((X,J)=>{return X[J.name]=J.streamable===!0,X},{})})}}};var _B=S(()=>{pZ1()});var lw0=S(()=>{lZ1();pZ1();_B()});var cZ1=S(()=>{lw0()});var iZ1=(Y)=>{return typeof Y==="object"&&Y!==null&&typeof Y.__type==="string"&&typeof Y.value==="string"},dw0=(Y,Q,X)=>{let J=X?{"x-caller-app":X}:void 0;if(Q.cookie)J??={},J.cookie=Q.cookie;if(Q.token)J??={},J["x-mesh-token"]=Q.token;return console.log("[EventBus:Debug] proxyConnectionForId",{connectionId:Y,meshUrl:Q.meshUrl,hasToken:!!Q.token,tokenPreview:Q.token?.slice(0,20)??"NONE",targetUrl:new URL(`/mcp/${Y}`,Q.meshUrl).href}),{type:"HTTP",url:new URL(`/mcp/${Y}`,Q.meshUrl).href,token:Q.token,headers:J}},gF4=(Y,Q,X)=>{let J=dw0(Y,Q,X);return new Proxy(am.forConnection(J),{get(G,K){if(K==="value")return Y;if(K==="__type")return X;return G[K]}})},nZ1=(Y,Q)=>{if(Y===null||Y===void 0)return Y;if(Array.isArray(Y))return Y.map((X)=>nZ1(X,Q));if(typeof Y==="object"){if(iZ1(Y))return gF4(Y.value,Q,Y.__type);let X={};for(let[J,G]of Object.entries(Y))X[J]=nZ1(G,Q);return X}return Y},pw0=(Y)=>{return nZ1(Y.state,Y)};var om=S(()=>{cZ1()});var uF4,cw0=(Y,Q,X)=>{if(!Q)return null;if(Y===void 0||Y==="*")return"*";if(typeof Y==="string")return Y===Q?Y:null;if(Array.isArray(Y))return Y.includes(Q)?Q:null;if(typeof Y==="function")return Y(Q,X)??null;return null},mF4=(Y,Q,X)=>{let J=Q.headers.get("Origin"),G=cw0(X.origin,J,Q);if(G)Y.set("Access-Control-Allow-Origin",G);if(X.credentials)Y.set("Access-Control-Allow-Credentials","true");if(X.exposeHeaders?.length)Y.set("Access-Control-Expose-Headers",X.exposeHeaders.join(", "))},nw0=(Y,Q)=>{let X=new Headers,J=Y.headers.get("Origin"),G=cw0(Q.origin,J,Y);if(G)X.set("Access-Control-Allow-Origin",G);if(Q.credentials)X.set("Access-Control-Allow-Credentials","true");let K=Q.allowMethods??uF4;X.set("Access-Control-Allow-Methods",K.join(", "));let W=Y.headers.get("Access-Control-Request-Headers");if(Q.allowHeaders?.length)X.set("Access-Control-Allow-Headers",Q.allowHeaders.join(", "));else if(W)X.set("Access-Control-Allow-Headers",W);if(Q.maxAge!==void 0)X.set("Access-Control-Max-Age",Q.maxAge.toString());return new Response(null,{status:204,headers:X})},iw0=(Y,Q,X)=>{let J=new Headers(Y.headers);return mF4(J,Q,X),new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:J})};var aw0=S(()=>{uF4=["GET","HEAD","PUT","POST","DELETE","PATCH"]});function rw0(Y=32){let X=new Uint8Array(Y);return crypto.getRandomValues(X),Array.from(X,(J)=>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"[J%62]).join("")}function lF4(Y){try{let Q=new URL(Y);return Q.protocol==="https:"||Q.hostname==="localhost"||Q.hostname==="127.0.0.1"||!Q.protocol.startsWith("http")}catch{return!1}}function ow0(Y){return btoa(JSON.stringify(Y)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function sw0(Y){try{let Q=Y.replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(Q))}catch{return null}}function tw0(Y){return{handleProtectedResourceMetadata:(F)=>{let $=kZ(new URL(F.url)),V=`${$.origin}/mcp`;return Response.json({resource:V,authorization_servers:[$.origin],scopes_supported:["*"],bearer_methods_supported:["header"],resource_signing_alg_values_supported:["RS256","none"]})},handleAuthorizationServerMetadata:(F)=>{let V=kZ(new URL(F.url)).origin;return Response.json({issuer:V,authorization_endpoint:`${V}/authorize`,token_endpoint:`${V}/token`,registration_endpoint:`${V}/register`,scopes_supported:["*"],response_types_supported:["code"],response_modes_supported:["query"],grant_types_supported:["authorization_code","refresh_token"],token_endpoint_auth_methods_supported:["none","client_secret_post"],code_challenge_methods_supported:["S256","plain"]})},handleAuthorize:(F)=>{let $=kZ(new URL(F.url)),V=$.searchParams.get("redirect_uri"),B=$.searchParams.get("response_type"),U=$.searchParams.get("state"),z=$.searchParams.get("code_challenge"),O=$.searchParams.get("code_challenge_method");if(!V)return Response.json({error:"invalid_request",error_description:"redirect_uri required"},{status:400});if(B!=="code")return Response.json({error:"unsupported_response_type",error_description:"Only 'code' is supported"},{status:400});let M=kZ(new URL(`${$.origin}/oauth/callback`)),w=M.toString(),j=ow0({redirectUri:V,clientState:U??void 0,codeChallenge:z??void 0,codeChallengeMethod:O??void 0,oauthCallbackUri:w});M.searchParams.set("state",j);let C=Y.authorizationUrl(M.toString());return Response.redirect(C,302)},handleOAuthCallback:async(F)=>{let $=kZ(new URL(F.url)),V=$.searchParams.get("code"),B=$.searchParams.get("state"),U=$.searchParams.get("error"),z=B?sw0(B):null;if(U){let O=$.searchParams.get("error_description")??"Authorization failed";if(z?.redirectUri){let M=kZ(new URL(z.redirectUri));if(M.searchParams.set("error",U),M.searchParams.set("error_description",O),z.clientState)M.searchParams.set("state",z.clientState);return Response.redirect(M.toString(),302)}return Response.json({error:U,error_description:O},{status:400})}if(!V||!z)return Response.json({error:"invalid_request",error_description:"Missing code or state"},{status:400});try{let O=z.oauthCallbackUri??kZ(new URL(`${$.origin}/oauth/callback`)).toString(),M={code:V,redirect_uri:O},w=await Y.exchangeCode(M),P={accessToken:w.access_token,tokenType:w.token_type,refreshToken:w.refresh_token,expiresIn:w.expires_in,scope:w.scope,codeChallenge:z.codeChallenge,codeChallengeMethod:z.codeChallengeMethod},j=ow0(P),C=kZ(new URL(z.redirectUri));if(C.searchParams.set("code",j),z.clientState)C.searchParams.set("state",z.clientState);return Response.redirect(C.toString(),302)}catch(O){console.error("OAuth callback error:",O);let M=kZ(new URL(z.redirectUri));if(M.searchParams.set("error","server_error"),M.searchParams.set("error_description","Failed to exchange authorization code"),z.clientState)M.searchParams.set("state",z.clientState);return Response.redirect(M.toString(),302)}},handleToken:async(F)=>{try{let $=F.headers.get("content-type")??"",V;if($.includes("application/x-www-form-urlencoded")){let P=await F.formData();V=Object.fromEntries(P.entries())}else{let P=await F.json();if(typeof P!=="object"||P===null||Array.isArray(P))return Response.json({error:"invalid_request",error_description:"Request body must be a JSON object"},{status:400});V=P}let{code:B,code_verifier:U,grant_type:z,refresh_token:O}=V;if(z==="refresh_token"){if(typeof O!=="string"||!O)return Response.json({error:"invalid_request",error_description:"refresh_token is required and must be a string"},{status:400});if(!Y.refreshToken)return Response.json({error:"unsupported_grant_type",error_description:"refresh_token grant not supported"},{status:400});let P=await Y.refreshToken(O),j={access_token:P.access_token,token_type:P.token_type};if(P.refresh_token)j.refresh_token=P.refresh_token;if(P.expires_in!==void 0)j.expires_in=P.expires_in;if(P.scope)j.scope=P.scope;return Response.json(j,{headers:{"Cache-Control":"no-store",Pragma:"no-cache"}})}if(z!=="authorization_code")return Response.json({error:"unsupported_grant_type",error_description:"Only authorization_code and refresh_token supported"},{status:400});if(typeof B!=="string"||!B)return Response.json({error:"invalid_request",error_description:"code is required and must be a string"},{status:400});let M=sw0(B);if(!M||!M.accessToken)return Response.json({error:"invalid_grant",error_description:"Invalid or expired code"},{status:400});if(M.codeChallenge){if(typeof U!=="string"||!U)return Response.json({error:"invalid_grant",error_description:"code_verifier required and must be a string"},{status:400});let P;if(M.codeChallengeMethod==="S256"){let C=new TextEncoder().encode(U),E=await crypto.subtle.digest("SHA-256",C);P=btoa(String.fromCharCode(...new Uint8Array(E))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}else P=U;if(P!==M.codeChallenge)return Response.json({error:"invalid_grant",error_description:"Invalid code_verifier"},{status:400})}let w={access_token:M.accessToken,token_type:M.tokenType};if(M.refreshToken)w.refresh_token=M.refreshToken;if(M.expiresIn!==void 0)w.expires_in=M.expiresIn;if(M.scope)w.scope=M.scope;return Response.json(w,{headers:{"Cache-Control":"no-store",Pragma:"no-cache"}})}catch($){return console.error("Token exchange error:",$),Response.json({error:"server_error",error_description:"Failed to process token request"},{status:500})}},handleClientRegistration:async(F)=>{try{let $=await F.json();if(!$.redirect_uris||$.redirect_uris.length===0)return Response.json({error:"invalid_redirect_uri",error_description:"At least one redirect_uri is required"},{status:400});for(let O of $.redirect_uris)if(!lF4(O))return Response.json({error:"invalid_redirect_uri",error_description:`Invalid redirect URI: ${O}`},{status:400});let V=rw0(32),B=$.token_endpoint_auth_method!=="none"?rw0(32):void 0,U=Math.floor(Date.now()/1000),z={client_id:V,client_secret:B,client_name:$.client_name,redirect_uris:$.redirect_uris,grant_types:$.grant_types??["authorization_code"],response_types:$.response_types??["code"],token_endpoint_auth_method:$.token_endpoint_auth_method??"client_secret_post",scope:$.scope,client_id_issued_at:U,client_secret_expires_at:0};if(Y.persistence)await Y.persistence.saveClient(z);return new Response(JSON.stringify(z),{status:201,headers:{"Content-Type":"application/json","Cache-Control":"no-store",Pragma:"no-cache"}})}catch($){return console.error("Client registration error:",$),Response.json({error:"invalid_client_metadata",error_description:"Invalid client registration request"},{status:400})}},createUnauthorizedResponse:(F)=>{let B=`Bearer resource_metadata="${`${kZ(new URL(F.url)).origin}/.well-known/oauth-protected-resource`}", scope="*"`;return Response.json({jsonrpc:"2.0",error:{code:-32000,message:"Unauthorized: Authentication required"},id:null},{status:401,headers:{"WWW-Authenticate":B,"Access-Control-Expose-Headers":"WWW-Authenticate"}})},hasAuth:(F)=>F.headers.has("Authorization")}}var kZ=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y};import{AsyncLocalStorage as dF4}from"async_hooks";var ew0,PC;var aZ1=S(()=>{ew0=new dF4,PC={getStore:()=>{return ew0.getStore()},run:(Y,Q,...X)=>ew0.run(Y,Q,...X)}});function M3(Y){return q.object({items:q.array(Y).describe("Array of collection items"),totalCount:q.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:q.boolean().optional().describe("Whether there are more items available")})}function TC(Y){return q.object({item:Y.nullable().describe("The retrieved item, or null if not found")})}function nF4(Y){return q.object({data:Y.partial().describe("Data for the new entity (id may be auto-generated)")})}function iF4(Y){return q.object({item:Y.describe("The created entity with generated id")})}function aF4(Y){return q.object({id:q.string().describe("ID of the entity to update"),data:Y.partial().describe("Partial entity data to update")})}function rF4(Y){return q.object({item:Y.describe("The updated entity")})}function RC(Y){return q.object({item:Y.describe("The deleted entity")})}function fZ(Y,Q,X){let J=Y.toUpperCase(),G=X?.readOnly??!1,K=[{name:`COLLECTION_${J}_LIST`,inputSchema:dG,outputSchema:M3(Q)},{name:`COLLECTION_${J}_GET`,inputSchema:EC,outputSchema:TC(Q)}];if(!G)K.push({name:`COLLECTION_${J}_CREATE`,inputSchema:nF4(Q),outputSchema:iF4(Q),opt:!0},{name:`COLLECTION_${J}_UPDATE`,inputSchema:aF4(Q),outputSchema:rF4(Q),opt:!0},{name:`COLLECTION_${J}_DELETE`,inputSchema:CC,outputSchema:RC(Q),opt:!0});return K}var yZ,pF4,YA0,cF4,dG,EC,CC;var gX=S(()=>{y1();yZ=q.object({id:q.string().describe("Unique identifier for the entity"),title:q.string().describe("Human-readable title for the entity"),description:q.string().nullish().describe("Description of the entity"),created_at:q.string().datetime(),updated_at:q.string().datetime(),created_by:q.string().optional(),updated_by:q.string().optional()}),pF4=q.object({field:q.array(q.string()),operator:q.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:q.unknown()}),YA0=q.lazy(()=>q.union([pF4,q.object({operator:q.enum(["and","or","not"]),conditions:q.array(YA0)})])),cF4=q.object({field:q.array(q.string()),direction:q.enum(["asc","desc"]),nulls:q.enum(["first","last"]).optional()}),dG=q.object({where:YA0.optional().describe("Filter expression"),orderBy:q.array(cF4).optional().describe("Sort expressions"),limit:q.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:q.number().int().min(0).optional().describe("Number of items to skip")});EC=q.object({id:q.string().describe("ID of the entity to retrieve")});CC=q.object({id:q.string().describe("ID of the entity to delete")})});var oF4,QA0,CI8;var XA0=S(()=>{y1();gX();oF4=q.object({id:q.string(),name:q.string(),description:q.string().optional(),inputSchema:q.record(q.string(),q.unknown()),outputSchema:q.record(q.string(),q.unknown()).optional()}),QA0=yZ.extend({_meta:q.object({"io.decocms":q.object({id:q.string(),verified:q.boolean(),scopeName:q.string(),appName:q.string(),friendlyName:q.string().nullable().optional(),metadata:q.record(q.string(),q.unknown()).nullable().optional(),publishedAt:q.string().datetime().optional(),updatedAt:q.string().datetime().optional(),tools:q.array(oF4).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:q.object({$schema:q.string().optional(),_meta:q.record(q.string(),q.unknown()).optional(),name:q.string().describe("The server name (scope/app)"),title:q.string().optional().describe("User-friendly title"),description:q.string().optional().describe("Server description"),icons:q.array(q.object({src:q.string(),mimeType:q.string().optional(),sizes:q.array(q.string()).optional(),theme:q.enum(["light","dark"]).optional()})).optional(),remotes:q.array(q.object({type:q.enum(["http","stdio","sse"]),url:q.string().optional(),headers:q.array(q.unknown()).optional()})).optional(),packages:q.array(q.unknown()).optional(),repository:q.object({url:q.string(),source:q.string().optional(),subfolder:q.string().optional()}).optional(),version:q.string().optional(),websiteUrl:q.string().optional()})}),CI8=fZ("registry_app",QA0,{readOnly:!0})});var JA0,sm,GA0,tm,WA0,sF4;var ZA0=S(()=>{y1();_B();JA0=q.object({specversion:q.literal("1.0").describe("CloudEvents specification version"),id:q.string().describe("Unique identifier for this event (UUID recommended)"),source:q.string().describe("Connection ID of the event publisher"),type:q.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:q.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:q.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:q.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:q.string().url().optional().describe("URI to the schema for the data attribute"),data:q.unknown().optional().describe("Event payload (any JSON value)")}),sm=q.object({events:q.array(JA0).min(1).describe("Batch of CloudEvents to process")}),GA0=q.object({success:q.boolean().optional().describe("Whether this event was processed successfully"),error:q.string().optional().describe("Error message for this event"),retryAfter:q.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),tm=q.object({success:q.boolean().optional().describe("Batch success - applies to events not in results"),error:q.string().optional().describe("Batch error message - applies to events not in results"),processedCount:q.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:q.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:q.record(q.string(),GA0).optional().describe("Per-event results keyed by event ID")}),WA0=[{name:"ON_EVENTS",inputSchema:sm,outputSchema:tm}],sF4=vZ(WA0)});var IC,jC,SC,_C,KA0,HA0,vC,kC,yC,fC,bC,hC,xC,gC,FA0,tF4;var $A0=S(()=>{y1();_B();IC=q.object({type:q.string().min(1).max(255).describe("Event type identifier"),subject:q.string().max(255).optional().describe("Subject/resource identifier (e.g., order ID)"),data:q.unknown().optional().describe("Event payload"),deliverAt:q.string().datetime().optional().describe("Scheduled delivery time (ISO 8601). Omit for immediate delivery."),cron:q.string().max(100).optional().describe("Cron expression for recurring delivery. Use EVENT_CANCEL to stop.")}),jC=q.object({id:q.string().describe("Unique event ID"),type:q.string().describe("Event type"),source:q.string().describe("Source connection ID"),time:q.string().describe("Event timestamp")}),SC=q.object({eventType:q.string().min(1).max(255).describe("Event type to subscribe to"),publisher:q.string().optional().describe("Filter events by publisher connection ID"),filter:q.string().max(1000).optional().describe("JSONPath filter expression on event data")}),_C=q.object({subscription:q.object({id:q.string().describe("Subscription ID"),connectionId:q.string().describe("Subscriber connection ID"),eventType:q.string().describe("Event type pattern"),publisher:q.string().nullable().describe("Publisher connection filter"),filter:q.string().nullable().describe("JSONPath filter expression"),enabled:q.boolean().describe("Whether subscription is enabled"),createdAt:q.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:q.string().datetime().describe("Updated timestamp (ISO 8601)")})}),KA0=q.object({eventType:q.string().min(1).max(255).describe("Event type to subscribe to"),publisher:q.string().optional().describe("Filter events by publisher connection ID"),filter:q.string().max(1000).optional().describe("JSONPath filter expression on event data")}),HA0=q.object({id:q.string().describe("Subscription ID"),connectionId:q.string().describe("Subscriber connection ID"),eventType:q.string().describe("Event type pattern"),publisher:q.string().nullable().describe("Publisher connection filter"),filter:q.string().nullable().describe("JSONPath filter expression"),enabled:q.boolean().describe("Whether subscription is enabled"),createdAt:q.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:q.string().datetime().describe("Updated timestamp (ISO 8601)")}),vC=q.object({subscriptions:q.array(KA0).describe("Desired subscriptions - system will create/update/delete to match")}),kC=q.object({created:q.number().int().min(0).describe("Number of subscriptions created"),updated:q.number().int().min(0).describe("Number of subscriptions with filter updated"),deleted:q.number().int().min(0).describe("Number of subscriptions removed"),unchanged:q.number().int().min(0).describe("Number of subscriptions unchanged"),subscriptions:q.array(HA0).describe("Current subscriptions after sync")}),yC=q.object({subscriptionId:q.string().describe("Subscription ID to remove")}),fC=q.object({success:q.boolean().describe("Whether unsubscribe was successful"),subscriptionId:q.string().describe("Subscription ID that was removed")}),bC=q.object({eventId:q.string().describe("Event ID to cancel")}),hC=q.object({success:q.boolean().describe("Whether cancellation was successful"),eventId:q.string().describe("Event ID that was cancelled")}),xC=q.object({eventId:q.string().describe("Event ID to acknowledge")}),gC=q.object({success:q.boolean().describe("Whether ACK was successful"),eventId:q.string().describe("Event ID that was acknowledged")}),FA0=[{name:"EVENT_PUBLISH",inputSchema:IC,outputSchema:jC},{name:"EVENT_SUBSCRIBE",inputSchema:SC,outputSchema:_C},{name:"EVENT_UNSUBSCRIBE",inputSchema:yC,outputSchema:fC},{name:"EVENT_CANCEL",inputSchema:bC,outputSchema:hC},{name:"EVENT_ACK",inputSchema:xC,outputSchema:gC},{name:"EVENT_SYNC_SUBSCRIPTIONS",inputSchema:vC,outputSchema:kC}],tF4=vZ(FA0)});var eF4,Y$4,Q$4,X$4,J$4,G$4,W$4,Z$4,K$4,H$4,F$4,$$4,uC;var em=S(()=>{y1();eF4=q.object({prefix:q.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:q.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:q.string().optional().describe("Token for pagination from previous response"),delimiter:q.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),Y$4=q.object({objects:q.array(q.object({key:q.string().describe("Object key/path"),size:q.number().describe("Object size in bytes"),lastModified:q.string().describe("Last modified timestamp"),etag:q.string().describe("Entity tag for the object")})),nextContinuationToken:q.string().optional().describe("Token for fetching next page of results"),isTruncated:q.boolean().describe("Whether there are more results available"),commonPrefixes:q.array(q.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Q$4=q.object({key:q.string().describe("Object key/path to get metadata for")}),X$4=q.object({contentType:q.string().optional().describe("MIME type of the object"),contentLength:q.number().describe("Size of the object in bytes"),lastModified:q.string().describe("Last modified timestamp"),etag:q.string().describe("Entity tag for the object"),metadata:q.record(q.string(),q.string()).optional().describe("Custom metadata key-value pairs")}),J$4=q.object({key:q.string().describe("Object key/path to generate URL for"),expiresIn:q.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),G$4=q.object({url:q.string().describe("Presigned URL for downloading the object"),expiresIn:q.number().describe("Expiration time in seconds that was used")}),W$4=q.object({key:q.string().describe("Object key/path for the upload"),expiresIn:q.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:q.string().optional().describe("MIME type for the object being uploaded")}),Z$4=q.object({url:q.string().describe("Presigned URL for uploading the object"),expiresIn:q.number().describe("Expiration time in seconds that was used")}),K$4=q.object({key:q.string().describe("Object key/path to delete")}),H$4=q.object({success:q.boolean().describe("Whether the deletion was successful"),key:q.string().describe("The key that was deleted")}),F$4=q.object({keys:q.array(q.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),$$4=q.object({deleted:q.array(q.string()).describe("Array of successfully deleted keys"),errors:q.array(q.object({key:q.string(),message:q.string()})).describe("Array of errors for failed deletions")}),uC=[{name:"LIST_OBJECTS",inputSchema:eF4,outputSchema:Y$4},{name:"GET_OBJECT_METADATA",inputSchema:Q$4,outputSchema:X$4},{name:"GET_PRESIGNED_URL",inputSchema:J$4,outputSchema:G$4},{name:"PUT_PRESIGNED_URL",inputSchema:W$4,outputSchema:Z$4},{name:"DELETE_OBJECT",inputSchema:K$4,outputSchema:H$4},{name:"DELETE_OBJECTS",inputSchema:F$4,outputSchema:$$4}]});function M$4(Y,Q){let X=[];function J(G){if(typeof G==="string"){let K=G.match(/@(\w+)/g);if(K)for(let W of K){let Z=W.substring(1);if(Q.has(Z))X.push(Z)}}else if(Array.isArray(G))G.forEach(J);else if(typeof G==="object"&&G!==null)Object.values(G).forEach(J)}return J(Y.input),[...new Set(X)]}function UA0(Y){let Q=new Set(Y.map((W)=>W.name)),X=new Map;for(let W of Y)X.set(W.name,M$4(W,Q));let J=new Set,G=new Set;function K(W,Z){if(G.has(W))return[...Z,W];if(J.has(W))return null;J.add(W),G.add(W);let H=X.get(W)||[];for(let F of H){let $=K(F,[...Z,W]);if($)return $}return G.delete(W),null}for(let W of Y){let Z=K(W.name,[]);if(Z)return{isValid:!1,error:`Circular dependency detected: ${Z.join(" -> ")}`}}return{isValid:!0}}var rZ1,V$4,gI8,q$4,B$4,VA0,vB,U$4,qA0,z$4,uI8,D$4,BA0,O$4,L$4,N$4,mI8,lI8;var aL=S(()=>{y1();_B();gX();rZ1=q.object({toolName:q.string().describe("Name of the tool to invoke on that connection"),transformCode:q.string().optional().describe("Pure TypeScript function for data transformation of the tool call result. Must be a TypeScript file that declares the Output interface and exports a default function: `interface Output { ... } export default async function(input): Output { ... }`\n The input will match with the tool call outputSchema. If transformCode is not provided, the tool call result will be used as the step output. \n Providing an transformCode is recommended because it both allows you to transform the data and validate it against a JSON Schema - tools are ephemeral and may return unexpected data.")}),V$4=q.object({code:q.string().describe(`Pure TypeScript function for data transformation. Useful to merge data from multiple steps and transform it. Must be a TypeScript file that declares the Output interface and exports a default function: \`interface Output { ... } export default async function(input): Output { ... }\`
|
|
1194
|
+
`.trim()});import{sql as Ow0}from"kysely";var Lw0;var Nw0=S(()=>{Lw0={name:"001-private-registry",async up(Y){await Y.schema.createTable("private_registry_item").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(Q)=>Q.notNull()).addColumn("description","text").addColumn("server_json","text",(Q)=>Q.notNull()).addColumn("meta_json","text").addColumn("tags","text").addColumn("categories","text").addColumn("is_public","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(Ow0`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(Ow0`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(Q)=>Q.references("user.id").onDelete("set null")).execute(),await Y.schema.createIndex("idx_private_registry_item_org").on("private_registry_item").column("organization_id").execute(),await Y.schema.createIndex("idx_private_registry_item_org_public").on("private_registry_item").columns(["organization_id","is_public"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_item_org_public").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_item_org").ifExists().execute(),await Y.schema.dropTable("private_registry_item").ifExists().execute()}}});import{sql as Mw0}from"kysely";var ww0;var Aw0=S(()=>{ww0={name:"002-publish-requests",async up(Y){await Y.schema.createTable("private_registry_publish_request").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(Q)=>Q.notNull().defaultTo("pending")).addColumn("title","text",(Q)=>Q.notNull()).addColumn("description","text").addColumn("server_json","text",(Q)=>Q.notNull()).addColumn("meta_json","text").addColumn("requester_name","text").addColumn("requester_email","text").addColumn("reviewer_notes","text").addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(Mw0`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(Mw0`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_publish_request_org_status").on("private_registry_publish_request").columns(["organization_id","status"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_publish_request_org_status").ifExists().execute(),await Y.schema.dropTable("private_registry_publish_request").ifExists().execute()}}});import{sql as sH4}from"kysely";var Pw0;var Ew0=S(()=>{Pw0={name:"003-publish-api-keys",async up(Y){await Y.schema.createTable("private_registry_publish_api_key").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("name","text",(Q)=>Q.notNull()).addColumn("key_hash","text",(Q)=>Q.notNull()).addColumn("prefix","text",(Q)=>Q.notNull()).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(sH4`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_publish_api_key_org").on("private_registry_publish_api_key").columns(["organization_id"]).execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_publish_api_key_org").ifExists().execute(),await Y.schema.dropTable("private_registry_publish_api_key").ifExists().execute()}}});var Tw0;var Cw0=S(()=>{Tw0={name:"004-publish-request-requested-id",async up(Y){await Y.schema.alterTable("private_registry_publish_request").addColumn("requested_id","text").execute()},async down(Y){await Y.schema.alterTable("private_registry_publish_request").dropColumn("requested_id").execute()}}});import{sql as pm}from"kysely";var Rw0;var Iw0=S(()=>{Rw0={name:"005-monitor-runs",async up(Y){await Y.schema.createTable("private_registry_monitor_run").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(Q)=>Q.notNull().defaultTo("pending")).addColumn("config_snapshot","text").addColumn("total_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tested_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("passed_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("failed_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("skipped_items","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("current_item_id","text").addColumn("started_at","text").addColumn("finished_at","text").addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_run_org_created").on("private_registry_monitor_run").columns(["organization_id","created_at"]).execute(),await Y.schema.createTable("private_registry_monitor_result").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("run_id","text",(Q)=>Q.notNull().references("private_registry_monitor_run.id").onDelete("cascade")).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("item_id","text",(Q)=>Q.notNull()).addColumn("item_title","text",(Q)=>Q.notNull()).addColumn("status","text",(Q)=>Q.notNull()).addColumn("error_message","text").addColumn("connection_ok","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tools_listed","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("tool_results","text").addColumn("agent_summary","text").addColumn("duration_ms","integer",(Q)=>Q.notNull().defaultTo(0)).addColumn("action_taken","text",(Q)=>Q.notNull().defaultTo("none")).addColumn("tested_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_result_run").on("private_registry_monitor_result").columns(["run_id","tested_at"]).execute(),await Y.schema.createIndex("idx_private_registry_monitor_result_run_status").on("private_registry_monitor_result").columns(["run_id","status"]).execute(),await Y.schema.createTable("private_registry_monitor_connection").addColumn("id","text",(Q)=>Q.primaryKey()).addColumn("organization_id","text",(Q)=>Q.notNull().references("organization.id").onDelete("cascade")).addColumn("item_id","text",(Q)=>Q.notNull()).addColumn("connection_id","text",(Q)=>Q.notNull().references("connections.id").onDelete("cascade")).addColumn("auth_status","text",(Q)=>Q.notNull().defaultTo("none")).addColumn("created_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(Q)=>Q.notNull().defaultTo(pm`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_private_registry_monitor_connection_org_item").on("private_registry_monitor_connection").columns(["organization_id","item_id"]).unique().execute()},async down(Y){await Y.schema.dropIndex("idx_private_registry_monitor_connection_org_item").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_connection").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_result_run_status").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_result_run").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_result").ifExists().execute(),await Y.schema.dropIndex("idx_private_registry_monitor_run_org_created").ifExists().execute(),await Y.schema.dropTable("private_registry_monitor_run").ifExists().execute()}}});var jw0;var Sw0=S(()=>{jw0={name:"006-unlisted",async up(Y){await Y.schema.alterTable("private_registry_item").addColumn("is_unlisted","integer",(Q)=>Q.notNull().defaultTo(0)).execute()},async down(Y){await Y.schema.alterTable("private_registry_item").dropColumn("is_unlisted").execute()}}});var _w0;var vw0=S(()=>{Nw0();Aw0();Ew0();Cw0();Iw0();Sw0();_w0=[Lw0,ww0,Pw0,Tw0,Rw0,jw0]});function tH4(Y){let Q=Y;if(!Q||typeof Q!=="object"||!("method"in Q))return null;switch(Q.method){case"initialize":{let X=Q?.params?.protocolVersion;if(!X)return null;return{type:"emit",message:{result:{protocolVersion:X,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Q.jsonrpc??"2.0",id:Q.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var cm;var lZ1=S(()=>{TA();cm=class cm extends wH{constructor(Y,Q){super(Y,Q)}send(Y,Q){let X=tH4(Y);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send(Y,Q)}}});function AC(Y,Q){if(Y===Q)return!0;if(Y==null||Q==null)return Y===Q;if(typeof Y!==typeof Q)return!1;if(Array.isArray(Y)&&Array.isArray(Q)){if(Y.length!==Q.length)return!1;return Y.every((X,J)=>AC(X,Q[J]))}if(typeof Y==="object"&&typeof Q==="object"){let X=Object.keys(Y),J=Object.keys(Q);if(X.length!==J.length)return!1;return X.every((G)=>J.includes(G)&&AC(Y[G],Q[G]))}return!1}function wF4(){return(Y)=>{if(!Array.isArray(Y))return!0;let Q=[];return Y.every((X)=>{if(Q.some((G)=>AC(X,G)))return!1;return Q.push(X),!0})}}function nm(Y,Q){return Y.safeParse(Q).success}function vQ(Y){if(typeof Y==="boolean")return Y?q.any():q.never();let Q={};for(let G of fF4)G.apply(Q,Y);let X=[];if(Q.string!==!1)X.push(Q.string||q.string());if(Q.number!==!1)X.push(Q.number||q.number());if(Q.boolean!==!1)X.push(Q.boolean||q.boolean());if(Q.null!==!1)X.push(Q.null||q.null());if(Q.array!==!1)X.push(Q.array||q.array(q.any()));if(Q.tuple!==!1&&Q.tuple!==void 0)X.push(Q.tuple);if(Q.object!==!1)if(Q.object)X.push(Q.object);else{let G=q.custom((K)=>{return typeof K==="object"&&K!==null&&!Array.isArray(K)},"Must be an object, not an array");X.push(G)}if(Q.file!==!1&&Q.file!==void 0)X.push(Q.file);let J;if(X.length===0)J=q.never();else if(X.length===1)J=X[0];else if(!Object.keys(Y).some((K)=>K!=="$schema"&&K!=="title"&&K!=="description"))J=q.any();else J=q.union(X);for(let G of bF4)J=G.apply(J,Y);return J}var eH4=class{apply(Y,Q){if(!Q.type)return;let X=Array.isArray(Q.type)?Q.type:[Q.type],J=new Set(X);if(!J.has("string"))Y.string=!1;if(!J.has("number")&&!J.has("integer"))Y.number=!1;if(!J.has("boolean"))Y.boolean=!1;if(!J.has("null"))Y.null=!1;if(!J.has("array"))Y.array=!1;if(!J.has("object"))Y.object=!1;if(J.has("integer")&&Y.number!==!1){let G=Y.number||q.number();if(G instanceof q.ZodNumber)Y.number=G.int()}}},YF4=class{apply(Y,Q){if(Q.const===void 0)return;let X=Q.const;if(Y.string=!1,Y.number=!1,Y.boolean=!1,Y.null=!1,Y.array=!1,Y.object=!1,typeof X==="string")Y.string=q.literal(X);else if(typeof X==="number")Y.number=q.literal(X);else if(typeof X==="boolean")Y.boolean=q.literal(X);else if(X===null)Y.null=q.null();else if(Array.isArray(X))Y.array=void 0;else if(typeof X==="object")Y.object=void 0}},QF4=class{apply(Y,Q){if(!Q.enum)return;if(Q.enum.length===0){if(!Q.type)Y.string=!1,Y.number=!1,Y.boolean=!1,Y.null=!1,Y.array=!1,Y.object=!1;return}let X={string:Q.enum.filter((J)=>typeof J==="string"),number:Q.enum.filter((J)=>typeof J==="number"),boolean:Q.enum.filter((J)=>typeof J==="boolean"),null:Q.enum.filter((J)=>J===null),array:Q.enum.filter((J)=>Array.isArray(J)),object:Q.enum.filter((J)=>typeof J==="object"&&J!==null&&!Array.isArray(J))};Y.string=this.createTypeSchema(X.string,"string"),Y.number=this.createTypeSchema(X.number,"number"),Y.boolean=this.createTypeSchema(X.boolean,"boolean"),Y.null=X.null.length>0?q.null():!1,Y.array=X.array.length>0?void 0:!1,Y.object=X.object.length>0?void 0:!1}createTypeSchema(Y,Q){if(Y.length===0)return!1;if(Y.length===1)return q.literal(Y[0]);if(Q==="string")return q.enum(Y);if(Q==="number"){let[X,J,...G]=Y;return q.union([q.literal(X),q.literal(J),...G.map((K)=>q.literal(K))])}if(Q==="boolean")return q.union([q.literal(!0),q.literal(!1)]);return!1}},XF4=class{apply(Y,Q){let X=Q;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let J=q.file();if(X.minLength!==void 0)J=J.min(X.minLength);if(X.maxLength!==void 0)J=J.max(X.maxLength);if(X.contentMediaType!==void 0)J=J.mime(X.contentMediaType);Y.file=J,Y.string=!1}}},JF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.minLength!==void 0||X.maxLength!==void 0||X.pattern!==void 0)){if(Y.string===void 0)Y.string=q.string()}}},GF4=class{apply(Y,Q){let X=Q;if(X.minLength===void 0)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString)Y.string=J.refine((G)=>{return Array.from(G).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},WF4=class{apply(Y,Q){let X=Q;if(X.maxLength===void 0)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString)Y.string=J.refine((G)=>{return Array.from(G).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},ZF4=class{apply(Y,Q){let X=Q;if(!X.pattern)return;if(Y.string!==!1){let J=Y.string||q.string();if(J instanceof q.ZodString){let G=new RegExp(X.pattern);Y.string=J.regex(G)}}}},KF4=class{apply(Y,Q){let X=Q;if(X.minimum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.min(X.minimum)}}},HF4=class{apply(Y,Q){let X=Q;if(X.maximum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.max(X.maximum)}}},FF4=class{apply(Y,Q){let X=Q;if(X.exclusiveMinimum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)if(typeof X.exclusiveMinimum==="number")Y.number=J.gt(X.exclusiveMinimum);else Y.number=!1}}},$F4=class{apply(Y,Q){let X=Q;if(X.exclusiveMaximum===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)if(typeof X.exclusiveMaximum==="number")Y.number=J.lt(X.exclusiveMaximum);else Y.number=!1}}},VF4=class{apply(Y,Q){let X=Q;if(X.multipleOf===void 0)return;if(Y.number!==!1){let J=Y.number||q.number();if(J instanceof q.ZodNumber)Y.number=J.refine((G)=>{if(X.multipleOf===0)return!1;let K=G/X.multipleOf,W=Math.round(K),Z=Math.min(Math.abs(G)*Number.EPSILON*10,Math.abs(X.multipleOf)*Number.EPSILON*10);return Math.abs(K-W)<=Z/Math.abs(X.multipleOf)},{message:`Must be a multiple of ${X.multipleOf}`})}}},qF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.minItems!==void 0||X.maxItems!==void 0||X.items!==void 0||X.prefixItems!==void 0)){if(Y.array===void 0)Y.array=q.array(q.any())}}},BF4=class{apply(Y,Q){let X=Q;if(X.minItems===void 0)return;if(Y.array!==!1)Y.array=(Y.array||q.array(q.any())).min(X.minItems)}},UF4=class{apply(Y,Q){let X=Q;if(X.maxItems===void 0)return;if(Y.array!==!1)Y.array=(Y.array||q.array(q.any())).max(X.maxItems)}},zF4=class{apply(Y,Q){let X=Q;if(Y.array===!1)return;if(Array.isArray(X.items))Y.array=Y.array||q.array(q.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let J=vQ(X.items),G=q.array(J);if(Y.array&&Y.array instanceof q.ZodArray){let K=Y.array._def;if(K.checks)K.checks.forEach((W)=>{if(W._zod&&W._zod.def){let Z=W._zod.def;if(Z.check==="min_length"&&Z.minimum!==void 0)G=G.min(Z.minimum);else if(Z.check==="max_length"&&Z.maximum!==void 0)G=G.max(Z.maximum)}})}Y.array=G}else if(typeof X.items==="boolean"&&X.items===!1)if(!X.prefixItems)Y.array=q.array(q.any()).max(0);else Y.array=Y.array||q.array(q.any());else if(typeof X.items==="boolean"&&X.items===!0)Y.array=Y.array||q.array(q.any());else if(X.prefixItems)Y.array=Y.array||q.array(q.any())}},DF4=class{apply(Y,Q){if(Q.type!=="array")return;let X=Q;if(!Array.isArray(X.items))return;if(Y.array===!1)return;let J=X.items.map((K)=>vQ(K)),G;if(J.length===0)G=q.tuple([]);else G=q.tuple(J);if(X.minItems!==void 0&&X.minItems>J.length)G=!1;if(X.maxItems!==void 0&&X.maxItems<J.length)G=!1;Y.tuple=G,Y.array=!1}},OF4=class{apply(Y,Q){let X=Q;if(Y.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)Y.object=Y.object||q.object({}).passthrough()}},LF4=class{apply(Y,Q){let X=Q;if(Q.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if(Y.object===void 0)Y.object=q.object({}).passthrough()}}},NF4=class{apply(Y,Q){let X=Q;if(X.maxProperties===void 0)return;if(Y.object!==!1){let J=Y.object||q.object({}).passthrough();Y.object=J.refine((G)=>Object.keys(G).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},MF4=class{apply(Y,Q){let X=Q;if(X.minProperties===void 0)return;if(Y.object!==!1){let J=Y.object||q.object({}).passthrough();Y.object=J.refine((G)=>Object.keys(G).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},AF4=class{apply(Y,Q){if(!Q.not)return Y;let X=vQ(Q.not);return Y.refine((J)=>!nm(X,J),{message:"Value must not match the 'not' schema"})}},PF4=class{apply(Y,Q){if(Q.uniqueItems!==!0)return Y;return Y.refine(wF4(),{message:"Array items must be unique"})}},EF4=class{apply(Y,Q){if(!Q.allOf||Q.allOf.length===0)return Y;return Q.allOf.map((J)=>vQ(J)).reduce((J,G)=>q.intersection(J,G),Y)}},TF4=class{apply(Y,Q){if(!Q.anyOf||Q.anyOf.length===0)return Y;let X=Q.anyOf.length===1?vQ(Q.anyOf[0]):q.union([vQ(Q.anyOf[0]),vQ(Q.anyOf[1]),...Q.anyOf.slice(2).map((J)=>vQ(J))]);return q.intersection(Y,X)}},CF4=class{apply(Y,Q){if(!Q.oneOf||Q.oneOf.length===0)return Y;let X=Q.oneOf.map((J)=>vQ(J));return Y.refine((J)=>{let G=0;for(let K of X)if(K.safeParse(J).success){if(G++,G>1)return!1}return G===1},{message:"Value must match exactly one of the oneOf schemas"})}},RF4=class{apply(Y,Q){let X=Q;if(X.prefixItems&&Array.isArray(X.prefixItems)){let G=X.prefixItems.map((K)=>vQ(K));return Y.refine((K)=>{if(!Array.isArray(K))return!0;for(let W=0;W<Math.min(K.length,G.length);W++)if(!nm(G[W],K[W]))return!1;if(K.length>G.length){if(typeof X.items==="boolean"&&X.items===!1)return!1;else if(X.items&&typeof X.items==="object"&&!Array.isArray(X.items)){let W=vQ(X.items);for(let Z=G.length;Z<K.length;Z++)if(!nm(W,K[Z]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return Y}},IF4=class{apply(Y,Q){let X=Q;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return Y;if(Y instanceof q.ZodObject||Y instanceof q.ZodRecord){let J={};if(X.properties){for(let[G,K]of Object.entries(X.properties))if(K!==void 0)J[G]=vQ(K)}if(X.required&&Array.isArray(X.required)){let G=new Set(X.required);for(let K of Object.keys(J))if(!G.has(K))J[K]=J[K].optional()}else for(let G of Object.keys(J))J[G]=J[G].optional();if(X.additionalProperties===!1)return q.object(J);else return q.object(J).passthrough()}return Y.refine((J)=>{if(typeof J!=="object"||J===null||Array.isArray(J))return!0;if(X.properties){for(let[G,K]of Object.entries(X.properties))if(K!==void 0){if(Object.getOwnPropertyDescriptor(J,G)!==void 0){if(!vQ(K).safeParse(J[G]).success)return!1}}}if(X.required&&Array.isArray(X.required)){for(let G of X.required)if(Object.getOwnPropertyDescriptor(J,G)===void 0)return!1}if(X.additionalProperties===!1&&X.properties){let G=new Set(Object.keys(X.properties));for(let K in J)if(!G.has(K))return!1}return!0},{message:"Object constraints validation failed"})}},jF4=class{apply(Y,Q){if(!Q.enum||Q.enum.length===0)return Y;let X=Q.enum.filter((J)=>Array.isArray(J)||typeof J==="object"&&J!==null);if(X.length===0)return Y;return Y.refine((J)=>{if(typeof J!=="object"||J===null)return!0;return X.some((G)=>AC(J,G))},{message:"Value must match one of the enum values"})}},SF4=class{apply(Y,Q){if(Q.const===void 0)return Y;let X=Q.const;if(typeof X!=="object"||X===null)return Y;return Y.refine((J)=>AC(J,X),{message:"Value must equal the const value"})}},_F4=class{apply(Y,Q){if(Q.description)Y=Y.describe(Q.description);return Y}},vF4=class{apply(Y,Q){var X;let J=Q;if(!((X=J.required)==null?void 0:X.includes("__proto__"))||Q.type!==void 0)return Y;return q.any().refine((G)=>this.validateRequired(G,J.required),{message:"Missing required properties"})}validateRequired(Y,Q){if(typeof Y!=="object"||Y===null||Array.isArray(Y))return!0;return Q.every((X)=>Object.prototype.hasOwnProperty.call(Y,X))}},kF4=class{apply(Y,Q){var X;let J=Q;if(J.contains===void 0)return Y;let G=vQ(J.contains),K=(X=J.minContains)!=null?X:1,W=J.maxContains;return Y.refine((Z)=>{if(!Array.isArray(Z))return!0;let H=0;for(let F of Z)if(nm(G,F))H++;if(H<K)return!1;if(W!==void 0&&H>W)return!1;return!0},{message:"Array must contain required items matching the schema"})}},yF4=class{apply(Y,Q){let{default:X}=Q;if(X===void 0)return Y;if(!Y.safeParse(X).success)return Y;return Y.default(X)}},fF4,bF4;var kw0=S(()=>{G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();G4();fF4=[new YF4,new QF4,new eH4,new XF4,new JF4,new qF4,new LF4,new GF4,new WF4,new ZF4,new KF4,new HF4,new FF4,new $F4,new VF4,new DF4,new BF4,new UF4,new zF4,new NF4,new MF4,new OF4],bF4=[new vF4,new jF4,new SF4,new EF4,new TF4,new CF4,new RF4,new IF4,new kF4,new AF4,new PF4,new yF4,new _F4]});class dZ1{constructor(Y){this._url=Y}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((Y,Q)=>{this._socket=new WebSocket(this._url,hF4),this._socket.onerror=(X)=>{let J="error"in X?X.error:Error(`WebSocket error: ${JSON.stringify(X)}`);Q(J),this.onerror?.(J)},this._socket.onopen=()=>{Y()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(X)=>{let J;try{J=oX.parse(JSON.parse(X.data))}catch(G){this.onerror?.(G);return}this.onmessage?.(J)}})}async close(){this._socket?.close()}send(Y){return new Promise((Q,X)=>{if(!this._socket){X(Error("Not connected"));return}this._socket?.send(JSON.stringify(Y)),Q()})}}var hF4="mcp";var yw0=S(()=>{jY()});var fw0,bw0=async(Y,Q,X)=>{let J=xF4(Y.connection,Q,X);if(!J)throw Error("Unknown MCP connection type");let G=new fw0({name:Y?.name??"MCP Client",version:"1.0.0"});return await G.connect(J),{client:G,callStreamableTool:(K,W,Z)=>{if(Y.connection.type!=="HTTP")throw Error("HTTP connection required");let H=new Headers(X);if(!H.has("Authorization"))H.set("Authorization",`Bearer ${Y.connection.token}`);for(let[V,B]of Object.entries(Y.connection.headers??{}))H.set(V,B);let F=new URL(Y.connection.url),$=F.pathname.replace(/\/+$/,"")||"/";return F.pathname=`${$}/call-tool/${encodeURIComponent(K)}`,fetch(F.href,{method:"POST",redirect:"manual",body:JSON.stringify(W),headers:H,signal:Z})}}},xF4=(Y,Q,X)=>{if(Y.type==="Websocket")return new dZ1(new URL(Y.url));if(Y.type!=="SSE"&&Y.type!=="HTTP")return null;let G={...Y.token?{authorization:`Bearer ${Y.token}`}:{},...X??{},..."headers"in Y?Y.headers||{}:{}};if(Y.type==="SSE"){let K={requestInit:{headers:G,signal:Q}};if(Y.token)K.eventSourceInit={fetch:(W,Z)=>{return fetch(W,{...Z,headers:{...G,Accept:"text/event-stream"},signal:Q})}};return new IB(new URL(Y.url),K)}return new cm(new URL(Y.url),{requestInit:{headers:G,signal:Q,credentials:"include"}})};var hw0=S(()=>{Pz();um();yw0();jY();lZ1();fw0=class fw0 extends sX{constructor(Y,Q){super(Y,Q)}async listTools(Y,Q){return await this.request({method:"tools/list",params:Y},aw,Q)}}});function uw0(Y){let Q=(X)=>{if("connection"in Y)return bw0({connection:Y.connection},void 0,X);return Y.client};return new Proxy({},{get(X,J){if(J==="toJSON")return null;if(typeof J!=="string")throw Error("Name must be a string");if(J==="listTools")return Z;async function G(H,F=J){let $=Y?.debugId?.(),V=$?{"x-trace-debug-id":$}:void 0,{client:B,callStreamableTool:U}=await Q(V);if(Y?.streamable?.[String(F)]){if(!U)throw Error(`Tool ${String(F)} requires streaming support but client doesn't provide callStreamableTool`);return await U(String(F),H)}let{structuredContent:z,isError:O,content:M}=await B.callTool({name:String(F),arguments:H});if(O){let P=M?.[0]?.text,j=typeof P==="string"?xw0(P):null,C=j?.code&&typeof Y?.getErrorByStatusCode==="function"?Y.getErrorByStatusCode(j.code,j.message,j.traceId):null;if(C)throw C;throw Error(`Tool ${String(F)} returned an error: ${JSON.stringify(z??M)}`)}if(z!==void 0)return z;let w=M?.[0]?.text;return typeof w==="string"?xw0(w):void 0}async function K(){let{client:H}=await Q(),{tools:F}=await H.listTools();return F}async function W(){if(!("connection"in Y))return K();let H=Y.connection,F=JSON.stringify(H);try{if(!im.has(F))im.set(F,K());return await im.get(F)}catch($){console.error("Failed to list tools",$),im.delete(F);return}}async function Z(){return(await W()??[]).map((F)=>gw0(F,G))}return G.asTool=async()=>{let F=(await W()??[]).find(($)=>$.name===J);if(!F)throw Error(`Tool ${J} not found`);return gw0(F,G)},G}})}var xw0=(Y)=>{try{return JSON.parse(Y)}catch{return Y}},im,gw0=(Y,Q)=>{return{...Y,id:Y.name,inputSchema:Y.inputSchema?vQ(Y.inputSchema):void 0,outputSchema:Y.outputSchema?vQ(Y.outputSchema):void 0,execute:(X)=>{return Q(X.context,Y.name)}}};var mw0=S(()=>{kw0();hw0();im=new Map});function SB(Y){return uw0(Y)}var am;var pZ1=S(()=>{mw0();am=new Proxy({},{get(Y,Q){if(Q==="toJSON")return null;if(Q==="forConnection")return(X)=>SB({connection:X});return global[Q]}})});function rm(Y){return{isImplementedBy:(Q)=>{for(let X of Y){let J=typeof X.name==="string"?new RegExp(`^${X.name}$`):X.name,G=Q.find((K)=>J.test(K.name));if(!G&&X.opt)continue;if(!G)return!1}return!0}}}var vZ=(Y)=>{return{...rm(Y),forClient:(Q)=>{return SB({client:Q,streamable:Y.reduce((X,J)=>{return X[J.name]=J.streamable===!0,X},{})})},forConnection:(Q)=>{return SB({connection:Q,streamable:Y.reduce((X,J)=>{return X[J.name]=J.streamable===!0,X},{})})}}};var _B=S(()=>{pZ1()});var lw0=S(()=>{lZ1();pZ1();_B()});var cZ1=S(()=>{lw0()});var iZ1=(Y)=>{return typeof Y==="object"&&Y!==null&&typeof Y.__type==="string"&&typeof Y.value==="string"},dw0=(Y,Q,X)=>{let J=X?{"x-caller-app":X}:void 0;if(Q.cookie)J??={},J.cookie=Q.cookie;if(Q.token)J??={},J["x-mesh-token"]=Q.token;return{type:"HTTP",url:new URL(`/mcp/${Y}`,Q.meshUrl).href,token:Q.token,headers:J}},gF4=(Y,Q,X)=>{let J=dw0(Y,Q,X);return new Proxy(am.forConnection(J),{get(G,K){if(K==="value")return Y;if(K==="__type")return X;return G[K]}})},nZ1=(Y,Q)=>{if(Y===null||Y===void 0)return Y;if(Array.isArray(Y))return Y.map((X)=>nZ1(X,Q));if(typeof Y==="object"){if(iZ1(Y))return gF4(Y.value,Q,Y.__type);let X={};for(let[J,G]of Object.entries(Y))X[J]=nZ1(G,Q);return X}return Y},pw0=(Y)=>{return nZ1(Y.state,Y)};var om=S(()=>{cZ1()});var uF4,cw0=(Y,Q,X)=>{if(!Q)return null;if(Y===void 0||Y==="*")return"*";if(typeof Y==="string")return Y===Q?Y:null;if(Array.isArray(Y))return Y.includes(Q)?Q:null;if(typeof Y==="function")return Y(Q,X)??null;return null},mF4=(Y,Q,X)=>{let J=Q.headers.get("Origin"),G=cw0(X.origin,J,Q);if(G)Y.set("Access-Control-Allow-Origin",G);if(X.credentials)Y.set("Access-Control-Allow-Credentials","true");if(X.exposeHeaders?.length)Y.set("Access-Control-Expose-Headers",X.exposeHeaders.join(", "))},nw0=(Y,Q)=>{let X=new Headers,J=Y.headers.get("Origin"),G=cw0(Q.origin,J,Y);if(G)X.set("Access-Control-Allow-Origin",G);if(Q.credentials)X.set("Access-Control-Allow-Credentials","true");let K=Q.allowMethods??uF4;X.set("Access-Control-Allow-Methods",K.join(", "));let W=Y.headers.get("Access-Control-Request-Headers");if(Q.allowHeaders?.length)X.set("Access-Control-Allow-Headers",Q.allowHeaders.join(", "));else if(W)X.set("Access-Control-Allow-Headers",W);if(Q.maxAge!==void 0)X.set("Access-Control-Max-Age",Q.maxAge.toString());return new Response(null,{status:204,headers:X})},iw0=(Y,Q,X)=>{let J=new Headers(Y.headers);return mF4(J,Q,X),new Response(Y.body,{status:Y.status,statusText:Y.statusText,headers:J})};var aw0=S(()=>{uF4=["GET","HEAD","PUT","POST","DELETE","PATCH"]});function rw0(Y=32){let X=new Uint8Array(Y);return crypto.getRandomValues(X),Array.from(X,(J)=>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"[J%62]).join("")}function lF4(Y){try{let Q=new URL(Y);return Q.protocol==="https:"||Q.hostname==="localhost"||Q.hostname==="127.0.0.1"||!Q.protocol.startsWith("http")}catch{return!1}}function ow0(Y){return btoa(JSON.stringify(Y)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function sw0(Y){try{let Q=Y.replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(Q))}catch{return null}}function tw0(Y){return{handleProtectedResourceMetadata:(F)=>{let $=kZ(new URL(F.url)),V=`${$.origin}/mcp`;return Response.json({resource:V,authorization_servers:[$.origin],scopes_supported:["*"],bearer_methods_supported:["header"],resource_signing_alg_values_supported:["RS256","none"]})},handleAuthorizationServerMetadata:(F)=>{let V=kZ(new URL(F.url)).origin;return Response.json({issuer:V,authorization_endpoint:`${V}/authorize`,token_endpoint:`${V}/token`,registration_endpoint:`${V}/register`,scopes_supported:["*"],response_types_supported:["code"],response_modes_supported:["query"],grant_types_supported:["authorization_code","refresh_token"],token_endpoint_auth_methods_supported:["none","client_secret_post"],code_challenge_methods_supported:["S256","plain"]})},handleAuthorize:(F)=>{let $=kZ(new URL(F.url)),V=$.searchParams.get("redirect_uri"),B=$.searchParams.get("response_type"),U=$.searchParams.get("state"),z=$.searchParams.get("code_challenge"),O=$.searchParams.get("code_challenge_method");if(!V)return Response.json({error:"invalid_request",error_description:"redirect_uri required"},{status:400});if(B!=="code")return Response.json({error:"unsupported_response_type",error_description:"Only 'code' is supported"},{status:400});let M=kZ(new URL(`${$.origin}/oauth/callback`)),w=M.toString(),j=ow0({redirectUri:V,clientState:U??void 0,codeChallenge:z??void 0,codeChallengeMethod:O??void 0,oauthCallbackUri:w});M.searchParams.set("state",j);let C=Y.authorizationUrl(M.toString());return Response.redirect(C,302)},handleOAuthCallback:async(F)=>{let $=kZ(new URL(F.url)),V=$.searchParams.get("code"),B=$.searchParams.get("state"),U=$.searchParams.get("error"),z=B?sw0(B):null;if(U){let O=$.searchParams.get("error_description")??"Authorization failed";if(z?.redirectUri){let M=kZ(new URL(z.redirectUri));if(M.searchParams.set("error",U),M.searchParams.set("error_description",O),z.clientState)M.searchParams.set("state",z.clientState);return Response.redirect(M.toString(),302)}return Response.json({error:U,error_description:O},{status:400})}if(!V||!z)return Response.json({error:"invalid_request",error_description:"Missing code or state"},{status:400});try{let O=z.oauthCallbackUri??kZ(new URL(`${$.origin}/oauth/callback`)).toString(),M={code:V,redirect_uri:O},w=await Y.exchangeCode(M),P={accessToken:w.access_token,tokenType:w.token_type,refreshToken:w.refresh_token,expiresIn:w.expires_in,scope:w.scope,codeChallenge:z.codeChallenge,codeChallengeMethod:z.codeChallengeMethod},j=ow0(P),C=kZ(new URL(z.redirectUri));if(C.searchParams.set("code",j),z.clientState)C.searchParams.set("state",z.clientState);return Response.redirect(C.toString(),302)}catch(O){console.error("OAuth callback error:",O);let M=kZ(new URL(z.redirectUri));if(M.searchParams.set("error","server_error"),M.searchParams.set("error_description","Failed to exchange authorization code"),z.clientState)M.searchParams.set("state",z.clientState);return Response.redirect(M.toString(),302)}},handleToken:async(F)=>{try{let $=F.headers.get("content-type")??"",V;if($.includes("application/x-www-form-urlencoded")){let P=await F.formData();V=Object.fromEntries(P.entries())}else{let P=await F.json();if(typeof P!=="object"||P===null||Array.isArray(P))return Response.json({error:"invalid_request",error_description:"Request body must be a JSON object"},{status:400});V=P}let{code:B,code_verifier:U,grant_type:z,refresh_token:O}=V;if(z==="refresh_token"){if(typeof O!=="string"||!O)return Response.json({error:"invalid_request",error_description:"refresh_token is required and must be a string"},{status:400});if(!Y.refreshToken)return Response.json({error:"unsupported_grant_type",error_description:"refresh_token grant not supported"},{status:400});let P=await Y.refreshToken(O),j={access_token:P.access_token,token_type:P.token_type};if(P.refresh_token)j.refresh_token=P.refresh_token;if(P.expires_in!==void 0)j.expires_in=P.expires_in;if(P.scope)j.scope=P.scope;return Response.json(j,{headers:{"Cache-Control":"no-store",Pragma:"no-cache"}})}if(z!=="authorization_code")return Response.json({error:"unsupported_grant_type",error_description:"Only authorization_code and refresh_token supported"},{status:400});if(typeof B!=="string"||!B)return Response.json({error:"invalid_request",error_description:"code is required and must be a string"},{status:400});let M=sw0(B);if(!M||!M.accessToken)return Response.json({error:"invalid_grant",error_description:"Invalid or expired code"},{status:400});if(M.codeChallenge){if(typeof U!=="string"||!U)return Response.json({error:"invalid_grant",error_description:"code_verifier required and must be a string"},{status:400});let P;if(M.codeChallengeMethod==="S256"){let C=new TextEncoder().encode(U),E=await crypto.subtle.digest("SHA-256",C);P=btoa(String.fromCharCode(...new Uint8Array(E))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}else P=U;if(P!==M.codeChallenge)return Response.json({error:"invalid_grant",error_description:"Invalid code_verifier"},{status:400})}let w={access_token:M.accessToken,token_type:M.tokenType};if(M.refreshToken)w.refresh_token=M.refreshToken;if(M.expiresIn!==void 0)w.expires_in=M.expiresIn;if(M.scope)w.scope=M.scope;return Response.json(w,{headers:{"Cache-Control":"no-store",Pragma:"no-cache"}})}catch($){return console.error("Token exchange error:",$),Response.json({error:"server_error",error_description:"Failed to process token request"},{status:500})}},handleClientRegistration:async(F)=>{try{let $=await F.json();if(!$.redirect_uris||$.redirect_uris.length===0)return Response.json({error:"invalid_redirect_uri",error_description:"At least one redirect_uri is required"},{status:400});for(let O of $.redirect_uris)if(!lF4(O))return Response.json({error:"invalid_redirect_uri",error_description:`Invalid redirect URI: ${O}`},{status:400});let V=rw0(32),B=$.token_endpoint_auth_method!=="none"?rw0(32):void 0,U=Math.floor(Date.now()/1000),z={client_id:V,client_secret:B,client_name:$.client_name,redirect_uris:$.redirect_uris,grant_types:$.grant_types??["authorization_code"],response_types:$.response_types??["code"],token_endpoint_auth_method:$.token_endpoint_auth_method??"client_secret_post",scope:$.scope,client_id_issued_at:U,client_secret_expires_at:0};if(Y.persistence)await Y.persistence.saveClient(z);return new Response(JSON.stringify(z),{status:201,headers:{"Content-Type":"application/json","Cache-Control":"no-store",Pragma:"no-cache"}})}catch($){return console.error("Client registration error:",$),Response.json({error:"invalid_client_metadata",error_description:"Invalid client registration request"},{status:400})}},createUnauthorizedResponse:(F)=>{let B=`Bearer resource_metadata="${`${kZ(new URL(F.url)).origin}/.well-known/oauth-protected-resource`}", scope="*"`;return Response.json({jsonrpc:"2.0",error:{code:-32000,message:"Unauthorized: Authentication required"},id:null},{status:401,headers:{"WWW-Authenticate":B,"Access-Control-Expose-Headers":"WWW-Authenticate"}})},hasAuth:(F)=>F.headers.has("Authorization")}}var kZ=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y};import{AsyncLocalStorage as dF4}from"async_hooks";var ew0,PC;var aZ1=S(()=>{ew0=new dF4,PC={getStore:()=>{return ew0.getStore()},run:(Y,Q,...X)=>ew0.run(Y,Q,...X)}});function M3(Y){return q.object({items:q.array(Y).describe("Array of collection items"),totalCount:q.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:q.boolean().optional().describe("Whether there are more items available")})}function TC(Y){return q.object({item:Y.nullable().describe("The retrieved item, or null if not found")})}function nF4(Y){return q.object({data:Y.partial().describe("Data for the new entity (id may be auto-generated)")})}function iF4(Y){return q.object({item:Y.describe("The created entity with generated id")})}function aF4(Y){return q.object({id:q.string().describe("ID of the entity to update"),data:Y.partial().describe("Partial entity data to update")})}function rF4(Y){return q.object({item:Y.describe("The updated entity")})}function RC(Y){return q.object({item:Y.describe("The deleted entity")})}function fZ(Y,Q,X){let J=Y.toUpperCase(),G=X?.readOnly??!1,K=[{name:`COLLECTION_${J}_LIST`,inputSchema:dG,outputSchema:M3(Q)},{name:`COLLECTION_${J}_GET`,inputSchema:EC,outputSchema:TC(Q)}];if(!G)K.push({name:`COLLECTION_${J}_CREATE`,inputSchema:nF4(Q),outputSchema:iF4(Q),opt:!0},{name:`COLLECTION_${J}_UPDATE`,inputSchema:aF4(Q),outputSchema:rF4(Q),opt:!0},{name:`COLLECTION_${J}_DELETE`,inputSchema:CC,outputSchema:RC(Q),opt:!0});return K}var yZ,pF4,YA0,cF4,dG,EC,CC;var gX=S(()=>{y1();yZ=q.object({id:q.string().describe("Unique identifier for the entity"),title:q.string().describe("Human-readable title for the entity"),description:q.string().nullish().describe("Description of the entity"),created_at:q.string().datetime(),updated_at:q.string().datetime(),created_by:q.string().optional(),updated_by:q.string().optional()}),pF4=q.object({field:q.array(q.string()),operator:q.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:q.unknown()}),YA0=q.lazy(()=>q.union([pF4,q.object({operator:q.enum(["and","or","not"]),conditions:q.array(YA0)})])),cF4=q.object({field:q.array(q.string()),direction:q.enum(["asc","desc"]),nulls:q.enum(["first","last"]).optional()}),dG=q.object({where:YA0.optional().describe("Filter expression"),orderBy:q.array(cF4).optional().describe("Sort expressions"),limit:q.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:q.number().int().min(0).optional().describe("Number of items to skip")});EC=q.object({id:q.string().describe("ID of the entity to retrieve")});CC=q.object({id:q.string().describe("ID of the entity to delete")})});var oF4,QA0,CI8;var XA0=S(()=>{y1();gX();oF4=q.object({id:q.string(),name:q.string(),description:q.string().optional(),inputSchema:q.record(q.string(),q.unknown()),outputSchema:q.record(q.string(),q.unknown()).optional()}),QA0=yZ.extend({_meta:q.object({"io.decocms":q.object({id:q.string(),verified:q.boolean(),scopeName:q.string(),appName:q.string(),friendlyName:q.string().nullable().optional(),metadata:q.record(q.string(),q.unknown()).nullable().optional(),publishedAt:q.string().datetime().optional(),updatedAt:q.string().datetime().optional(),tools:q.array(oF4).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:q.object({$schema:q.string().optional(),_meta:q.record(q.string(),q.unknown()).optional(),name:q.string().describe("The server name (scope/app)"),title:q.string().optional().describe("User-friendly title"),description:q.string().optional().describe("Server description"),icons:q.array(q.object({src:q.string(),mimeType:q.string().optional(),sizes:q.array(q.string()).optional(),theme:q.enum(["light","dark"]).optional()})).optional(),remotes:q.array(q.object({type:q.enum(["http","stdio","sse"]),url:q.string().optional(),headers:q.array(q.unknown()).optional()})).optional(),packages:q.array(q.unknown()).optional(),repository:q.object({url:q.string(),source:q.string().optional(),subfolder:q.string().optional()}).optional(),version:q.string().optional(),websiteUrl:q.string().optional()})}),CI8=fZ("registry_app",QA0,{readOnly:!0})});var JA0,sm,GA0,tm,WA0,sF4;var ZA0=S(()=>{y1();_B();JA0=q.object({specversion:q.literal("1.0").describe("CloudEvents specification version"),id:q.string().describe("Unique identifier for this event (UUID recommended)"),source:q.string().describe("Connection ID of the event publisher"),type:q.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:q.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:q.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:q.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:q.string().url().optional().describe("URI to the schema for the data attribute"),data:q.unknown().optional().describe("Event payload (any JSON value)")}),sm=q.object({events:q.array(JA0).min(1).describe("Batch of CloudEvents to process")}),GA0=q.object({success:q.boolean().optional().describe("Whether this event was processed successfully"),error:q.string().optional().describe("Error message for this event"),retryAfter:q.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),tm=q.object({success:q.boolean().optional().describe("Batch success - applies to events not in results"),error:q.string().optional().describe("Batch error message - applies to events not in results"),processedCount:q.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:q.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:q.record(q.string(),GA0).optional().describe("Per-event results keyed by event ID")}),WA0=[{name:"ON_EVENTS",inputSchema:sm,outputSchema:tm}],sF4=vZ(WA0)});var IC,jC,SC,_C,KA0,HA0,vC,kC,yC,fC,bC,hC,xC,gC,FA0,tF4;var $A0=S(()=>{y1();_B();IC=q.object({type:q.string().min(1).max(255).describe("Event type identifier"),subject:q.string().max(255).optional().describe("Subject/resource identifier (e.g., order ID)"),data:q.unknown().optional().describe("Event payload"),deliverAt:q.string().datetime().optional().describe("Scheduled delivery time (ISO 8601). Omit for immediate delivery."),cron:q.string().max(100).optional().describe("Cron expression for recurring delivery. Use EVENT_CANCEL to stop.")}),jC=q.object({id:q.string().describe("Unique event ID"),type:q.string().describe("Event type"),source:q.string().describe("Source connection ID"),time:q.string().describe("Event timestamp")}),SC=q.object({eventType:q.string().min(1).max(255).describe("Event type to subscribe to"),publisher:q.string().optional().describe("Filter events by publisher connection ID"),filter:q.string().max(1000).optional().describe("JSONPath filter expression on event data")}),_C=q.object({subscription:q.object({id:q.string().describe("Subscription ID"),connectionId:q.string().describe("Subscriber connection ID"),eventType:q.string().describe("Event type pattern"),publisher:q.string().nullable().describe("Publisher connection filter"),filter:q.string().nullable().describe("JSONPath filter expression"),enabled:q.boolean().describe("Whether subscription is enabled"),createdAt:q.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:q.string().datetime().describe("Updated timestamp (ISO 8601)")})}),KA0=q.object({eventType:q.string().min(1).max(255).describe("Event type to subscribe to"),publisher:q.string().optional().describe("Filter events by publisher connection ID"),filter:q.string().max(1000).optional().describe("JSONPath filter expression on event data")}),HA0=q.object({id:q.string().describe("Subscription ID"),connectionId:q.string().describe("Subscriber connection ID"),eventType:q.string().describe("Event type pattern"),publisher:q.string().nullable().describe("Publisher connection filter"),filter:q.string().nullable().describe("JSONPath filter expression"),enabled:q.boolean().describe("Whether subscription is enabled"),createdAt:q.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:q.string().datetime().describe("Updated timestamp (ISO 8601)")}),vC=q.object({subscriptions:q.array(KA0).describe("Desired subscriptions - system will create/update/delete to match")}),kC=q.object({created:q.number().int().min(0).describe("Number of subscriptions created"),updated:q.number().int().min(0).describe("Number of subscriptions with filter updated"),deleted:q.number().int().min(0).describe("Number of subscriptions removed"),unchanged:q.number().int().min(0).describe("Number of subscriptions unchanged"),subscriptions:q.array(HA0).describe("Current subscriptions after sync")}),yC=q.object({subscriptionId:q.string().describe("Subscription ID to remove")}),fC=q.object({success:q.boolean().describe("Whether unsubscribe was successful"),subscriptionId:q.string().describe("Subscription ID that was removed")}),bC=q.object({eventId:q.string().describe("Event ID to cancel")}),hC=q.object({success:q.boolean().describe("Whether cancellation was successful"),eventId:q.string().describe("Event ID that was cancelled")}),xC=q.object({eventId:q.string().describe("Event ID to acknowledge")}),gC=q.object({success:q.boolean().describe("Whether ACK was successful"),eventId:q.string().describe("Event ID that was acknowledged")}),FA0=[{name:"EVENT_PUBLISH",inputSchema:IC,outputSchema:jC},{name:"EVENT_SUBSCRIBE",inputSchema:SC,outputSchema:_C},{name:"EVENT_UNSUBSCRIBE",inputSchema:yC,outputSchema:fC},{name:"EVENT_CANCEL",inputSchema:bC,outputSchema:hC},{name:"EVENT_ACK",inputSchema:xC,outputSchema:gC},{name:"EVENT_SYNC_SUBSCRIPTIONS",inputSchema:vC,outputSchema:kC}],tF4=vZ(FA0)});var eF4,Y$4,Q$4,X$4,J$4,G$4,W$4,Z$4,K$4,H$4,F$4,$$4,uC;var em=S(()=>{y1();eF4=q.object({prefix:q.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:q.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:q.string().optional().describe("Token for pagination from previous response"),delimiter:q.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),Y$4=q.object({objects:q.array(q.object({key:q.string().describe("Object key/path"),size:q.number().describe("Object size in bytes"),lastModified:q.string().describe("Last modified timestamp"),etag:q.string().describe("Entity tag for the object")})),nextContinuationToken:q.string().optional().describe("Token for fetching next page of results"),isTruncated:q.boolean().describe("Whether there are more results available"),commonPrefixes:q.array(q.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Q$4=q.object({key:q.string().describe("Object key/path to get metadata for")}),X$4=q.object({contentType:q.string().optional().describe("MIME type of the object"),contentLength:q.number().describe("Size of the object in bytes"),lastModified:q.string().describe("Last modified timestamp"),etag:q.string().describe("Entity tag for the object"),metadata:q.record(q.string(),q.string()).optional().describe("Custom metadata key-value pairs")}),J$4=q.object({key:q.string().describe("Object key/path to generate URL for"),expiresIn:q.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),G$4=q.object({url:q.string().describe("Presigned URL for downloading the object"),expiresIn:q.number().describe("Expiration time in seconds that was used")}),W$4=q.object({key:q.string().describe("Object key/path for the upload"),expiresIn:q.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:q.string().optional().describe("MIME type for the object being uploaded")}),Z$4=q.object({url:q.string().describe("Presigned URL for uploading the object"),expiresIn:q.number().describe("Expiration time in seconds that was used")}),K$4=q.object({key:q.string().describe("Object key/path to delete")}),H$4=q.object({success:q.boolean().describe("Whether the deletion was successful"),key:q.string().describe("The key that was deleted")}),F$4=q.object({keys:q.array(q.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),$$4=q.object({deleted:q.array(q.string()).describe("Array of successfully deleted keys"),errors:q.array(q.object({key:q.string(),message:q.string()})).describe("Array of errors for failed deletions")}),uC=[{name:"LIST_OBJECTS",inputSchema:eF4,outputSchema:Y$4},{name:"GET_OBJECT_METADATA",inputSchema:Q$4,outputSchema:X$4},{name:"GET_PRESIGNED_URL",inputSchema:J$4,outputSchema:G$4},{name:"PUT_PRESIGNED_URL",inputSchema:W$4,outputSchema:Z$4},{name:"DELETE_OBJECT",inputSchema:K$4,outputSchema:H$4},{name:"DELETE_OBJECTS",inputSchema:F$4,outputSchema:$$4}]});function M$4(Y,Q){let X=[];function J(G){if(typeof G==="string"){let K=G.match(/@(\w+)/g);if(K)for(let W of K){let Z=W.substring(1);if(Q.has(Z))X.push(Z)}}else if(Array.isArray(G))G.forEach(J);else if(typeof G==="object"&&G!==null)Object.values(G).forEach(J)}return J(Y.input),[...new Set(X)]}function UA0(Y){let Q=new Set(Y.map((W)=>W.name)),X=new Map;for(let W of Y)X.set(W.name,M$4(W,Q));let J=new Set,G=new Set;function K(W,Z){if(G.has(W))return[...Z,W];if(J.has(W))return null;J.add(W),G.add(W);let H=X.get(W)||[];for(let F of H){let $=K(F,[...Z,W]);if($)return $}return G.delete(W),null}for(let W of Y){let Z=K(W.name,[]);if(Z)return{isValid:!1,error:`Circular dependency detected: ${Z.join(" -> ")}`}}return{isValid:!0}}var rZ1,V$4,gI8,q$4,B$4,VA0,vB,U$4,qA0,z$4,uI8,D$4,BA0,O$4,L$4,N$4,mI8,lI8;var aL=S(()=>{y1();_B();gX();rZ1=q.object({toolName:q.string().describe("Name of the tool to invoke on that connection"),transformCode:q.string().optional().describe("Pure TypeScript function for data transformation of the tool call result. Must be a TypeScript file that declares the Output interface and exports a default function: `interface Output { ... } export default async function(input): Output { ... }`\n The input will match with the tool call outputSchema. If transformCode is not provided, the tool call result will be used as the step output. \n Providing an transformCode is recommended because it both allows you to transform the data and validate it against a JSON Schema - tools are ephemeral and may return unexpected data.")}),V$4=q.object({code:q.string().describe(`Pure TypeScript function for data transformation. Useful to merge data from multiple steps and transform it. Must be a TypeScript file that declares the Output interface and exports a default function: \`interface Output { ... } export default async function(input): Output { ... }\`
|
|
1195
1195
|
The input is the resolved value of the references in the input field. Example:
|
|
1196
1196
|
{
|
|
1197
1197
|
"input": {
|
|
@@ -1211,7 +1211,7 @@ data:
|
|
|
1211
1211
|
`;if(J)G+=`id: ${J}
|
|
1212
1212
|
`;return G+=`data: ${JSON.stringify(X)}
|
|
1213
1213
|
|
|
1214
|
-
`,Y.enqueue(Q.encode(G)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,Q){try{let X=Y.headers.get("accept");if(!X?.includes("application/json")||!X.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(Q?.parsedBody!==void 0)K=Q.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((M)=>oX.parse(M));else W=[oX.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(pr);if(Z){if(this._initialized&&this.sessionId!==void 0)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(W.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!Z){let M=this.validateSession(Y);if(M)return M;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(UW)){for(let M of W)this.onmessage?.(M,{authInfo:Q?.authInfo,requestInfo:G});return new Response(null,{status:202})}let F=crypto.randomUUID(),$=W.find((M)=>pr(M)),V=$?$.params.protocolVersion:Y.headers.get("mcp-protocol-version")??Qz1;if(this._enableJsonResponse)return new Promise((M)=>{this._streamMapping.set(F,{resolveJson:M,cleanup:()=>{this._streamMapping.delete(F)}});for(let w of W)if(UW(w))this._requestToStreamMapping.set(w.id,F);for(let w of W)this.onmessage?.(w,{authInfo:Q?.authInfo,requestInfo:G})});let B=new TextEncoder,U,z=new ReadableStream({start:(M)=>{U=M},cancel:()=>{this._streamMapping.delete(F)}}),O={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)O["mcp-session-id"]=this.sessionId;for(let M of W)if(UW(M))this._streamMapping.set(F,{controller:U,encoder:B,cleanup:()=>{this._streamMapping.delete(F);try{U.close()}catch{}}}),this._requestToStreamMapping.set(M.id,F);await this.writePrimingEvent(U,B,F,V);for(let M of W){let w,P;if(UW(M)&&this._eventStore&&V>="2025-11-25")w=()=>{this.closeSSEStream(M.id)},P=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(M,{authInfo:Q?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:P})}return new Response(z,{status:200,headers:O})}catch(X){return this.onerror?.(X),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(X)})}}async handleDeleteRequest(Y){let Q=this.validateSession(Y);if(Q)return Q;let X=this.validateProtocolVersion(Y);if(X)return X;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let Q=Y.headers.get("mcp-session-id");if(!Q)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(Q!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let Q=Y.headers.get("mcp-protocol-version");if(Q!==null&&!ZV.includes(Q))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${Q} (supported versions: ${ZV.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let Q=this._requestToStreamMapping.get(Y);if(!Q)return;let X=this._streamMapping.get(Q);if(X)X.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,Q){let X=Q?.relatedRequestId;if(e7(Y)||Wz(Y))X=Y.id;if(X===void 0){if(e7(Y)||Wz(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(X);if(!J)throw Error(`No connection established for request ID: ${String(X)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(e7(Y)||Wz(Y)){this._requestResponseMap.set(X,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(X)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map((F)=>this._requestResponseMap.get(F));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var LA0=S(()=>{jY()});var MA0="SELF",Xl=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},wA0=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},NA0="::",AA0=(Y)=>{let Q=Y.indexOf(NA0);if(Q===-1)return null;let X=Y.substring(0,Q),J=Y.substring(Q+NA0.length);return[X,J]},E$4=(Y)=>{if(!Y.startsWith("cron/"))return null;let Q=Y.substring(5),X=Q.indexOf("/");if(X===-1)return null;let J=Q.substring(0,X),G=Q.substring(X+1);return[J,G]},PA0=(Y)=>{if(Xl(Y))return[];return Object.keys(Y)},T$4=(Y,Q)=>{if(Xl(Y))return Y.events;let X=Y[Q];if(!X)return[];if(wA0(X))return X.events;return Object.keys(X)},Ql=(Y,Q,X)=>{if(Y===MA0){if(!X)return console.warn("[Event] SELF binding used but no connectionId available"),null;return X}let J=Q[Y];if(!iZ1(J))return console.warn(`[Event] Binding "${Y}" not found in state`),null;return J.value},C$4=(Y,Q,X)=>{let J=Q;if(Xl(Y)){let K=[];for(let W of Y.events){let Z=AA0(W);if(!Z){console.warn(`[Event] Global handler event "${W}" must be prefixed with BINDING:: (e.g., "SELF::${W}" or "DATABASE::${W}")`);continue}let[H,F]=Z,$=Ql(H,J,X);if(!$)continue;K.push({eventType:F,publisher:$})}return K}let G=[];for(let K of PA0(Y)){let W=Ql(K,J,X);if(!W)continue;let Z=T$4(Y,K);for(let H of Z)G.push({eventType:H,publisher:W})}return G},R$4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.source,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},I$4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.type,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},j$4=(Y)=>{let Q={},X={},J=!1,G=0,K=[];for(let W of Y){if(W.results)Object.assign(X,W.results);if(W.success===!1){if(J=!0,W.error)K.push(W.error)}if(W.processedCount!==void 0)G+=W.processedCount}if(Object.keys(X).length>0)Q.results=X;if(Q.success=!J,K.length>0)Q.error=K.join("; ");if(G>0)Q.processedCount=G;return Q},S$4=async(Y,Q,X,J,G)=>{let K=J;if(Xl(Y)){let $=new Set;for(let B of Y.events){let U=AA0(B);if(!U)continue;let[z,O]=U,M=Ql(z,K,G);if(!M)continue;$.add(`${M}:${O}`)}let V=Q.filter((B)=>{let U=`${B.source}:${B.type}`;return $.has(U)});if(V.length===0)return{success:!0};try{return await Y.handler({events:V},X)}catch(B){return{success:!1,error:B instanceof Error?B.message:String(B)}}}let W=new Map;for(let $ of PA0(Y)){let V=Ql($,K,G);if(V)W.set(V,$)}let Z=R$4(Q),H=[];for(let[$,V]of Z){let B=W.get($);if(!B)continue;let U=Y[B];if(!U)continue;if(wA0(U)){H.push((async()=>{try{return await U.handler({events:V},X)}catch(M){let w={};for(let P of V)w[P.id]={success:!1,error:M instanceof Error?M.message:String(M)};return{results:w}}})());continue}let z=U,O=I$4(V);for(let[M,w]of O){let P=z[M];if(!P)continue;H.push((async()=>{try{let j=await P({events:w},X),C={};for(let E of w)C[E.id]=j;return{results:C}}catch(j){let C={};for(let E of w)C[E.id]={success:!1,error:j instanceof Error?j.message:String(j)};return{results:C}}})())}}let F=await Promise.all(H);if(F.length===0)return{success:!0};return j$4(F)},Jl;var eZ1=S(()=>{om();Jl={subscriptions:C$4,execute:S$4,parseCron:E$4}});function w3(Y){return{...Y,execute:(Q)=>{return Y.execute({...Q,runtimeContext:lC(Q.runtimeContext)})}}}function YK1(Y){return Y&&"streamable"in Y&&Y.streamable===!0}var lC=(Y)=>{let Q=PC.getStore();if(!Q){if(Y)return Y;throw Error("Missing context, did you forget to call State.bind?")}return Q},_$4=(Y,Q)=>{let X=Q;return typeof X[Y]<"u"?X[Y]:Q?.MESH_REQUEST_CONTEXT?.state?.[Y]},v$4=({events:Y,configuration:{state:Q,scopes:X,onChange:J}={}}={})=>{let G=Q?q.toJSONSchema(Q):{type:"object",properties:{}},K=String(Y?.bus??"EVENT_BUS");return[...J||Y?[w3({id:"ON_MCP_CONFIGURATION",description:"MCP Configuration On Change",inputSchema:q.object({state:Q??q.unknown(),scopes:q.array(q.string()).describe("Array of scopes in format 'KEY::SCOPE' (e.g., 'GMAIL::GetCurrentUser')")}),outputSchema:q.object({}),execute:async(W)=>{let Z=W.context.state;await J?.(W.runtimeContext.env,{state:Z,scopes:W.context.scopes});let H=_$4(K,W.runtimeContext.env);if(Y&&Z&&H){let F=W.runtimeContext.env.MESH_REQUEST_CONTEXT?.connectionId,$=Jl.subscriptions(Y?.handlers??{},Z,F);if(await H.EVENT_SYNC_SUBSCRIPTIONS({subscriptions:$}),F){let V=$.filter((B)=>B.eventType.startsWith("cron/")&&B.publisher===F);await Promise.all(V.map(async(B)=>{let U=Jl.parseCron(B.eventType);if(U){let[,z]=U;await H.EVENT_PUBLISH({type:B.eventType,cron:z})}}))}}return Promise.resolve({})}})]:[],...Y?.handlers?[w3({id:"ON_EVENTS",description:"Receive and process CloudEvents from the event bus. Returns per-event or batch results.",inputSchema:sm,outputSchema:tm,execute:async(W)=>{let Z=W.runtimeContext.env,H=Z.MESH_REQUEST_CONTEXT?.state,F=Z.MESH_REQUEST_CONTEXT?.connectionId;return Jl.execute(Y.handlers,W.context.events,Z,H,F)}})]:[],w3({id:"MCP_CONFIGURATION",description:"MCP Configuration",inputSchema:q.object({}),outputSchema:q.object({stateSchema:q.unknown(),scopes:q.array(q.string()).optional()}),execute:()=>{return Promise.resolve({stateSchema:G,scopes:[...X??[],...Y?[`${K}::EVENT_SYNC_SUBSCRIPTIONS`]:[]]})}})]},EA0=(Y)=>{let Q=async(G)=>{await Y.before?.(G);let K=new _z({name:"@deco/mcp-api",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}}),Z=await(typeof Y.tools==="function"?Y.tools:async(B)=>{if(typeof Y.tools==="function")return await Y.tools(B);return await Promise.all(Y.tools?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);Z.push(...v$4(Y));for(let B of Z)K.registerTool(B.id,{_meta:{streamable:YK1(B),...B._meta??{}},description:B.description,annotations:B.annotations,inputSchema:B.inputSchema&&"shape"in B.inputSchema?B.inputSchema.shape:q.object({}).shape,outputSchema:YK1(B)?q.object({bytes:q.record(q.string(),q.number())}).shape:B.outputSchema&&typeof B.outputSchema==="object"&&("shape"in B.outputSchema)?B.outputSchema.shape:void 0},async(U)=>{let z=await B.execute({context:U,runtimeContext:lC()});if(YK1(B)&&z instanceof Response)return{structuredContent:{streamable:!0,status:z.status,statusText:z.statusText},content:[{type:"text",text:`Streaming response: ${z.status} ${z.statusText}`}]};return{structuredContent:z,content:[{type:"text",text:JSON.stringify(z)}]}});let F=await(typeof Y.prompts==="function"?Y.prompts:async(B)=>{if(typeof Y.prompts==="function")return await Y.prompts(B);return await Promise.all(Y.prompts?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);for(let B of F)K.registerPrompt(B.name,{title:B.title,description:B.description,argsSchema:B.argsSchema?B.argsSchema:q.object({}).shape},async(U)=>{return await B.execute({args:U,runtimeContext:lC()})});let V=await(typeof Y.resources==="function"?Y.resources:async(B)=>{if(typeof Y.resources==="function")return await Y.resources(B);return await Promise.all(Y.resources?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);for(let B of V)K.resource(B.name,B.uri,{description:B.description,mimeType:B.mimeType},async(U)=>{let z=await B.read({uri:U,runtimeContext:lC()}),O={uri:z.uri};if(z.mimeType)O.mimeType=z.mimeType;if(z.text!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,text:z.text}]};else if(z.blob!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,blob:z.blob}]};return{contents:[{uri:z.uri,mimeType:z.mimeType,text:""}]}});return{server:K,tools:Z,prompts:F,resources:V}};return{fetch:async(G,K)=>{let{server:W}=await Q(K),Z=new tZ1;await W.connect(Z);try{let H=await Z.handleRequest(G),F=H.headers.get("content-type");if(!(F?.includes("text/event-stream")||F?.includes("application/json-rpc"))){console.debug("[MCP Transport] Closing transport for non-streaming response");try{await Z.close?.()}catch{}}else console.debug("[MCP Transport] Keeping transport open for streaming response (Content-Type: %s)",F);return H}catch(H){console.debug("[MCP Transport] Closing transport due to error:",H instanceof Error?H.message:H);try{await Z.close?.()}catch{}throw H}},callTool:async({toolCallId:G,toolCallInput:K})=>{let W=PC.getStore();if(!W)throw Error("Missing state, did you forget to call State.bind?");let Z=W?.env,{tools:H}=await Q(Z),$=H.find((V)=>V.id===G)?.execute;if(!$)throw Error(`Tool ${G} not found or does not have an execute function`);return $({context:K,runtimeContext:lC()})}}};var Gl=S(()=>{Yl();Tk();LA0();y1();eZ1();aZ1();eZ1()});var k$4=({env:Y,server:Q,url:X})=>{Y.SELF=new Proxy({},{get:(J,G)=>{if(G==="toJSON")return null;return async(K)=>{return await Q.callTool({toolCallId:G,toolCallInput:K})}}}),Y.IS_LOCAL=(X?.startsWith("http://localhost")||X?.startsWith("http://127.0.0.1"))??!1},TA0=(Y)=>()=>{return{...Y??{}}},y$4=({env:Y,server:Q,tokenOrContext:X,url:J,authToken:G})=>{let K=Y,W=G?G.split(" ")[1]:void 0,Z;if(typeof X==="string"){let H=k8(X),F=H.metadata??{};Z={authorization:W,state:H.state??F.state??{},token:X,meshUrl:H.meshUrl??F.meshUrl,connectionId:H.connectionId??F.connectionId,organizationId:H.organizationId??F.organizationId,ensureAuthenticated:TA0(H.user??H.sub)},console.log("[EventBus:Debug] withBindings decoded",{meshUrl:Z.meshUrl??"NONE",connectionId:Z.connectionId??"NONE",organizationId:Z.organizationId??"NONE",stateKeys:Z.state?Object.keys(Z.state):[],hasAuth:!!Z.authorization})}else if(typeof X==="object"){Z=X;let H=k8(X.token),F=H.metadata??{},$=H.appName;Z.authorization??=W,Z.callerApp=$,Z.connectionId??=H.connectionId??F.connectionId,Z.ensureAuthenticated=TA0(H.user??H.sub)}else Z={state:{},authorization:W,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return K.MESH_REQUEST_CONTEXT=Z,Z.state=pw0(Z),k$4({env:K,server:Q,url:J}),K},f$4,CA0=(Y)=>{let Q=EA0(Y),X=Y.cors??f$4,J=Y.oauth,G=J?tw0(J):null,K=async(W,Z,H)=>{let F=new URL(W.url);if(G){if(F.pathname==="/.well-known/oauth-protected-resource"||F.pathname==="/mcp/.well-known/oauth-protected-resource")return G.handleProtectedResourceMetadata(W);if(F.pathname==="/.well-known/oauth-authorization-server")return G.handleAuthorizationServerMetadata(W);if(F.pathname==="/authorize")return G.handleAuthorize(W);if(F.pathname==="/oauth/callback")return G.handleOAuthCallback(W);if(F.pathname==="/token"&&W.method==="POST")return G.handleToken(W);if((F.pathname==="/register"||F.pathname==="/mcp/register")&&W.method==="POST")return G.handleClientRegistration(W)}if(F.pathname==="/mcp"){if(W.method==="GET")return new Response("Method not allowed",{status:405});if(G&&!G.hasAuth(W)){let $=W.clone();try{if((await $.json())?.method!=="tools/list")return G.createUnauthorizedResponse(W)}catch{return G.createUnauthorizedResponse(W)}}return Q.fetch(W,Z,H)}if(F.pathname.startsWith("/mcp/call-tool")){let $=F.pathname.split("/").pop();if(!$)return new Response("Not found",{status:404});let V=await W.json(),B=await Q.callTool({toolCallId:$,toolCallInput:V});if(B instanceof Response)return B;return new Response(JSON.stringify(B),{headers:{"Content-Type":"application/json"}})}return Y.fetch?.(W,Z,H)||new Response("Not found",{status:404})};return{fetch:async(W,Z,H)=>{if(new URL(W.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(X!==!1&&W.method==="OPTIONS")return nw0(W,X??{});let F=y$4({authToken:W.headers.get("authorization")??null,env:{...process.env,...Z},server:Q,tokenOrContext:W.headers.get("x-mesh-token")??void 0,url:W.url}),$=await PC.run({req:W,env:F,ctx:H},async()=>await K(W,F,H));if(X!==!1)return iw0($,W,X??{});return $}}};var RA0=S(()=>{OX();om();aw0();aZ1();Gl();Gl();om();cZ1();f$4={origin:(Y)=>{if(Y.includes("localhost")||Y.includes("127.0.0.1"))return Y;return Y},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function Wl(Y){return Buffer.from(String(Y),"utf8").toString("base64")}function Zl(Y){if(!Y)return null;try{let Q=Buffer.from(Y,"base64").toString("utf8"),X=Number.parseInt(Q,10);return Number.isNaN(X)||X<0?null:X}catch{return null}}function GQ(Y){if(!Y?.length)return[];return Array.from(new Set(Y.map((Q)=>Q.trim()).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase())))}function kB(Y){if(!Y)return[];return GQ(Y.split(","))}function Kl(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}function Hl(Y){return Y?.["mcp.mesh"]??{}}function Fl(Y){return Y.length?Y.join(","):null}function b$4(Y,Q){if(!Q?.length)return;let X=Y;for(let J of Q){if(X===null||X===void 0)return;if(typeof X!=="object")return;X=X[J]}return X}function h$4(Y,Q,X){if(!Q)return!1;if(Q==="eq")return Y===X;if(Q==="contains"||Q==="like"){let J=String(Y??"").toLowerCase(),G=String(X??"").toLowerCase();return J.includes(G)}if(Q==="in"){if(!Array.isArray(X))return!1;return X.includes(Y)}if(Q==="gt")return Number(Y)>Number(X);if(Q==="gte")return Number(Y)>=Number(X);if(Q==="lt")return Number(Y)<Number(X);if(Q==="lte")return Number(Y)<=Number(X);return!1}function dC(Y,Q){if(!Q)return!0;if(Array.isArray(Q.conditions)&&Q.conditions.length){if(Q.operator==="and")return Q.conditions.every((X)=>dC(Y,X));if(Q.operator==="or")return Q.conditions.some((X)=>dC(Y,X));if(Q.operator==="not")return!Q.conditions.some((X)=>dC(Y,X))}return h$4(b$4(Y,Q.field),Q.operator,Q.value)}class pC{db;constructor(Y){this.db=Y}async create(Y){let Q=new Date().toISOString(),X=Y._meta??{},J=Hl(X),G=GQ(J.tags),K=GQ(J.categories),W={id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:JSON.stringify(X),tags:Fl(G),categories:Fl(K),is_public:Y.is_public?1:0,is_unlisted:Y.is_unlisted?1:0,created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("private_registry_item").values(W).execute();let Z=await this.findById(Y.organization_id,Y.id);if(!Z)throw Error(`Failed to create registry item "${Y.id}"`);return Z}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName(Y,Q){let X=await this.findById(Y,Q);if(X)return X;let J=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("title","=",Q).executeTakeFirst();return J?this.deserialize(J):null}async update(Y,Q,X){let J=await this.findById(Y,Q);if(!J)throw Error(`Registry item not found: ${Q}`);let G=X._meta??J._meta??{},K=Hl(G),W=GQ(K.tags),Z=GQ(K.categories),H={updated_at:new Date().toISOString()};if(X.title!==void 0)H.title=X.title;if(X.description!==void 0)H.description=X.description;if(X.server!==void 0)H.server_json=JSON.stringify(X.server);if(X._meta!==void 0)H.meta_json=JSON.stringify(X._meta);if(X._meta!==void 0)H.tags=Fl(W),H.categories=Fl(Z);if(X.is_public!==void 0)H.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)H.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(H).where("organization_id","=",Y).where("id","=",Q).execute();let F=await this.findById(Y,Q);if(!F)throw Error(`Registry item not found after update: ${Q}`);return F}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",Y).where("id","=",Q).execute(),X}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).orderBy("created_at","desc");if(!Q.includeUnlisted)X=X.where("is_unlisted","=",0);let G=(await X.execute()).map((z)=>this.deserialize(z)),K=GQ(Q.tags),W=GQ(Q.categories),Z=G.filter((z)=>{let O=Hl(z._meta),M=GQ(O.tags),w=GQ(O.categories),P=K.length===0||K.every((E)=>M.includes(E)),j=W.length===0||W.every((E)=>w.includes(E)),C=dC(z,Q.where);return P&&j&&C}),F=Zl(Q.cursor)??Q.offset??0,$=Q.limit??24,V=Z.slice(F,F+$),B=F+$<Z.length,U=B?Wl(F+$):void 0;return{items:V,totalCount:Z.length,hasMore:B,nextCursor:U}}async listPublic(Y,Q={}){let J=(await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("is_public","=",1).where("is_unlisted","=",0).orderBy("created_at","desc").execute()).map((U)=>this.deserialize(U)),G=GQ(Q.tags),K=GQ(Q.categories),W=J.filter((U)=>{let z=Hl(U._meta),O=GQ(z.tags),M=GQ(z.categories),w=G.length===0||G.every((C)=>O.includes(C)),P=K.length===0||K.every((C)=>M.includes(C)),j=dC(U,Q.where);return w&&P&&j}),H=Zl(Q.cursor)??Q.offset??0,F=Q.limit??24,$=W.slice(H,H+F),V=H+F<W.length,B=V?Wl(H+F):void 0;return{items:$,totalCount:W.length,hasMore:V,nextCursor:B}}async getFilters(Y,Q){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",Y);if(Q?.publicOnly)X=X.where("is_public","=",1);if(!Q?.includeUnlisted)X=X.where("is_unlisted","=",0);let J=await X.execute(),G=new Map,K=new Map;for(let Z of J){for(let H of kB(Z.tags))G.set(H,(G.get(H)??0)+1);for(let H of kB(Z.categories))K.set(H,(K.get(H)??0)+1)}let W=(Z)=>Array.from(Z.entries()).map(([H,F])=>({value:H,count:F})).sort((H,F)=>H.value.localeCompare(F.value));return{tags:W(G),categories:W(K)}}async search(Y,Q={},X){let J=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",Y).orderBy("created_at","desc");if(X?.publicOnly)J=J.where("is_public","=",1);if(!X?.includeUnlisted)J=J.where("is_unlisted","=",0);let G=await J.execute(),K=Q.query?.trim().toLowerCase(),W=GQ(Q.tags),Z=GQ(Q.categories),H=G.filter((M)=>{if(K){let w=Kl(M.server_json,{}),j=Kl(M.meta_json,{})?.["mcp.mesh"]?.short_description??"";if(![M.id,M.title,M.description??"",w.name??"",w.description??"",j].join(" ").toLowerCase().includes(K))return!1}if(W.length>0){let w=GQ(kB(M.tags));if(!W.every((P)=>w.includes(P)))return!1}if(Z.length>0){let w=GQ(kB(M.categories));if(!Z.every((P)=>w.includes(P)))return!1}return!0}),$=Zl(Q.cursor)??0,V=Q.limit??20,B=H.slice($,$+V),U=$+V<H.length,z=U?Wl($+V):void 0;return{items:B.map((M)=>({id:M.id,title:M.title,tags:kB(M.tags),categories:kB(M.categories),is_public:M.is_public===1,is_unlisted:M.is_unlisted===1})),totalCount:H.length,hasMore:U,nextCursor:z}}deserialize(Y){let Q=Kl(Y.server_json,{}),X=Kl(Y.meta_json,{});return{id:Y.id,name:typeof Q.name==="string"?Q.name:void 0,title:Y.title,description:Y.description,_meta:X,server:Q,is_public:Y.is_public===1,is_unlisted:Y.is_unlisted===1,created_at:Y.created_at,updated_at:Y.updated_at,...Y.created_by?{created_by:Y.created_by}:{}}}}var QK1=()=>{};var $l,x$4,Vl,pG,XK1,g$4,G$,rL,uX,yB,JK1,IA0,GK1,jA0,WK1,SA0,ZK1,_A0,oL,u$4,cC,m$4,ql,KK1,vA0,kA0,HK1,yA0,fA0,bA0,hA0,xA0,gA0,uA0,mA0,l$4,FK1,lA0,dA0,$K1,pA0;var v9=S(()=>{gX();y1();$l=q.object({name:q.string(),title:q.string().optional(),description:q.string().optional(),version:q.string().optional(),websiteUrl:q.string().optional(),icons:q.array(q.object({src:q.string()})).optional(),remotes:q.array(q.object({type:q.string().optional(),url:q.string().optional(),name:q.string().optional(),title:q.string().optional(),description:q.string().optional()})).optional(),packages:q.array(q.object({identifier:q.string(),version:q.string().optional()})).optional(),repository:q.object({url:q.string().optional(),source:q.string().optional(),subfolder:q.string().optional()}).optional()}),x$4=q.object({name:q.string(),description:q.string().nullable().optional()}),Vl=q.object({"mcp.mesh":q.object({verified:q.boolean().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),friendly_name:q.string().nullable().optional(),short_description:q.string().max(160).nullable().optional(),owner:q.string().nullable().optional(),readme:q.string().max(50000).nullable().optional(),readme_url:q.string().url().nullable().optional(),has_remote:q.boolean().optional(),has_oauth:q.boolean().optional(),tools:q.array(x$4).optional()}).optional()}).catchall(q.unknown()),pG=q.object({id:q.string(),name:q.string().optional(),title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,is_public:q.boolean().optional(),created_at:q.string(),updated_at:q.string(),created_by:q.string().optional()}),XK1=q.object({id:q.string(),title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,is_public:q.boolean().optional()}),g$4=q.object({title:q.string().optional(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l.optional(),is_public:q.boolean().optional()}),G$=dG.extend({tags:q.array(q.string()).optional().describe("Filter by tags (AND semantics)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND semantics)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("List registry items with optional filtering and pagination."),rL=q.object({items:q.array(pG),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),uX=q.object({id:q.string().optional().describe("Registry item ID"),name:q.string().optional().describe("Registry item name (alias for id)")}).refine((Y)=>Y.id||Y.name,{message:"At least one of 'id' or 'name' is required"}).describe("Get a registry item by ID or name."),yB=q.object({item:pG.nullable()}),JK1=q.object({data:XK1}),IA0=q.object({item:pG}),GK1=q.object({items:q.array(XK1).min(1)}),jA0=q.object({created:q.number(),errors:q.array(q.object({id:q.string(),error:q.string()}))}),WK1=q.object({id:q.string(),data:g$4}),SA0=q.object({item:pG}),ZK1=q.object({id:q.string()}),_A0=q.object({item:pG}),oL=q.object({tags:q.array(q.object({value:q.string(),count:q.number()})),categories:q.array(q.object({value:q.string(),count:q.number()}))}),u$4=q.enum(["description","short_description","tags","categories","readme"]),cC=q.object({query:q.string().optional().describe("Free-text search across id, title, description, server name"),tags:q.array(q.string()).optional().describe("Filter by tags (AND)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND)"),limit:q.number().int().min(1).max(100).optional().describe("Max results (default 20)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("Lightweight search returning minimal fields (id, title, tags, categories, is_public)."),m$4=q.object({id:q.string(),title:q.string(),tags:q.array(q.string()),categories:q.array(q.string()),is_public:q.boolean()}),ql=q.object({items:q.array(m$4),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),KK1=q.object({type:u$4.describe("Which content to generate"),llmConnectionId:q.string().describe("Connection ID of a language model"),modelId:q.string().describe("Model ID to use"),context:q.object({name:q.string().optional(),provider:q.string().optional(),url:q.string().optional(),owner:q.string().optional(),repositoryUrl:q.string().optional(),description:q.string().optional(),shortDescription:q.string().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),availableTags:q.array(q.string()).optional(),availableCategories:q.array(q.string()).optional(),tools:q.array(q.object({name:q.string(),description:q.string().nullable().optional()})).optional()})}),vA0=q.object({result:q.string().optional(),items:q.array(q.string()).optional()}),kA0=q.enum(["pending","approved","rejected"]),HK1=q.object({id:q.string(),organization_id:q.string(),requested_id:q.string().nullable().optional(),status:kA0,title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,requester_name:q.string().nullable().optional(),requester_email:q.string().nullable().optional(),reviewer_notes:q.string().nullable().optional(),created_at:q.string(),updated_at:q.string()}),yA0=q.object({status:kA0.optional(),limit:q.number().int().min(1).max(200).optional(),offset:q.number().int().min(0).optional(),sortBy:q.enum(["created_at","title"]).optional(),sortDirection:q.enum(["asc","desc"]).optional()}),fA0=q.object({items:q.array(HK1),totalCount:q.number()}),bA0=q.object({id:q.string(),status:q.enum(["approved","rejected"]),reviewerNotes:q.string().nullable().optional()}),hA0=q.object({item:HK1}),xA0=q.object({pending:q.number()}),gA0=q.object({id:q.string()}),uA0=q.object({item:HK1.nullable()}),mA0=q.object({data:XK1,requester:q.object({name:q.string().optional(),email:q.string().email().optional()}).optional()}),l$4=q.object({id:q.string(),name:q.string(),prefix:q.string(),createdAt:q.string()}),FK1=q.object({name:q.string().min(1).max(64).describe("A descriptive name for this key")}),lA0=q.object({id:q.string(),name:q.string(),prefix:q.string(),key:q.string().describe("The full API key \u2014 shown only once!"),createdAt:q.string()}),dA0=q.object({items:q.array(l$4)}),$K1=q.object({keyId:q.string()}),pA0=q.object({success:q.boolean(),keyId:q.string()})});function d$4(Y,Q){let X=w3({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",inputSchema:G$,outputSchema:rL,execute:async({context:Z})=>{return await Y.listPublic(Q,{limit:Z.limit,offset:Z.offset,cursor:Z.cursor,tags:Z.tags,categories:Z.categories,where:Z.where})}}),J=w3({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",inputSchema:uX,outputSchema:yB,execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{item:null};let F=await Y.findByIdOrName(Q,H);if(F&&F.is_public)return{item:F};return{item:null}}}),G=w3({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",inputSchema:uX,outputSchema:q.object({versions:q.array(yB.shape.item)}),execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{versions:[]};let F=await Y.findByIdOrName(Q,H);if(F&&F.is_public)return{versions:[F]};return{versions:[]}}}),K=w3({id:"COLLECTION_REGISTRY_APP_SEARCH",description:"Search public registry items returning minimal data (id, title, tags, categories, is_public). Use this instead of LIST when you need to find items efficiently without loading full details.",inputSchema:cC,outputSchema:ql,execute:async({context:Z})=>{return await Y.search(Q,Z,{publicOnly:!0})}}),W=w3({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",inputSchema:q.object({}),outputSchema:oL,execute:async()=>{return await Y.getFilters(Q,{publicOnly:!0})}});return[X,K,J,G,W]}function VK1(Y,Q){let X=Q.db,J=new pC(X);Y.all("/org/:orgSlug/registry/*",async(G)=>{let K=G.req.param("orgSlug");console.log(`[Public Registry MCP] Request for org slug: ${K}, path: ${G.req.path}`);let W=await X.selectFrom("organization").select(["id","slug","name"]).where("slug","=",K).executeTakeFirst();if(console.log("[Public Registry MCP] Found org:",W),!W)return console.log(`[Public Registry MCP] Organization not found: ${K}`),G.json({error:"Organization not found"},404);let Z=d$4(J,W.id),H=CA0({tools:()=>Z}),F=new URL(G.req.url),$=G.req.path.replace(`/org/${K}/registry`,""),V=new URL($||"/",F.origin);F.searchParams.forEach((z,O)=>{V.searchParams.set(O,z)}),console.log(`[Public Registry MCP] Rewriting ${F.pathname} to ${V.pathname}`);let B=new Request(V.toString(),{method:G.req.method,headers:G.req.raw.headers,body:G.req.method!=="GET"&&G.req.method!=="HEAD"?G.req.raw.body:void 0}),U={organizationId:W.id,db:X,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await H.fetch(B,U,G)})}var cA0=S(()=>{RA0();Gl();y1();QK1();v9()});import{randomUUID as p$4}from"crypto";function nA0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class nC{db;constructor(Y){this.db=Y}async createOrUpdate(Y){let Q=new Date().toISOString(),X=await this.findPendingByRequestedId(Y.organization_id,Y.requested_id);if(X){let W={title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,updated_at:Q};await this.db.updateTable("private_registry_publish_request").set(W).where("organization_id","=",Y.organization_id).where("id","=",X.id).execute();let Z=await this.findById(Y.organization_id,X.id);if(!Z)throw Error("Failed to update publish request");return Z}let J=p$4(),G={id:J,organization_id:Y.organization_id,requested_id:Y.requested_id,status:"pending",title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,reviewer_notes:null,created_at:Q,updated_at:Q};await this.db.insertInto("private_registry_publish_request").values(G).execute();let K=await this.findById(Y.organization_id,J);if(!K)throw Error("Failed to create publish request");return K}async findPendingByRequestedId(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("requested_id","=",Q).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_publish_request").select((F)=>F.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0),W=Q.sortBy??"created_at",Z=Q.sortDirection??"desc";if(W==="title")X=X.orderBy("title",Z);else X=X.orderBy("created_at",Z);return{items:(await X.limit(Q.limit??24).offset(Q.offset??0).execute()).map((F)=>this.deserialize(F)),totalCount:K}}async updateStatus(Y,Q,X,J){let G={status:X,updated_at:new Date().toISOString(),reviewer_notes:J??null};await this.db.updateTable("private_registry_publish_request").set(G).where("organization_id","=",Y).where("id","=",Q).execute();let K=await this.findById(Y,Q);if(!K)throw Error(`Publish request not found: ${Q}`);return K}async countPending(Y){let Q=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).where("status","=","pending").executeTakeFirst();return Number(Q?.count??0)}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",Y).where("id","=",Q).execute(),X}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,requested_id:Y.requested_id??null,status:Y.status,title:Y.title,description:Y.description,_meta:nA0(Y.meta_json,{}),server:nA0(Y.server_json,{name:""}),requester_name:Y.requester_name,requester_email:Y.requester_email,reviewer_notes:Y.reviewer_notes,created_at:Y.created_at,updated_at:Y.updated_at}}}var qK1=()=>{};import{randomUUID as c$4}from"crypto";async function iA0(Y){let X=new TextEncoder().encode(Y),J=await crypto.subtle.digest("SHA-256",X);return Array.from(new Uint8Array(J)).map((K)=>K.toString(16).padStart(2,"0")).join("")}function n$4(){let Y=new Uint8Array(32);return crypto.getRandomValues(Y),`prk_${Array.from(Y).map((X)=>X.toString(16).padStart(2,"0")).join("")}`}class iC{db;constructor(Y){this.db=Y}async generate(Y,Q){let X=c$4(),J=n$4(),G=await iA0(J),K=J.slice(0,12),W=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:Y,name:Q,key_hash:G,prefix:K,created_at:W}).execute(),{entity:{id:X,organization_id:Y,name:Q,prefix:K,created_at:W},key:J}}async list(Y){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",Y).orderBy("created_at","desc").execute()}async revoke(Y,Q){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",Y).where("id","=",Q).execute()).length>0}async validate(Y,Q){let X=await iA0(Q),J=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",Y).where("key_hash","=",X).executeTakeFirst();return Boolean(J)}async hasKeys(Y){let Q=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).executeTakeFirst();return Number(Q?.count??0)>0}}var BK1=()=>{};import{sql as i$4}from"kysely";import{randomUUID as aA0}from"crypto";async function r$4(Y){let Q=new Date().toISOString(),X=aA0(),J=h9.SELF(Y.organizationId),G="registry.publish_request.created",K={requestId:Y.request.id,requestedId:Y.request.requested_id,title:Y.request.title,status:Y.request.status,createdAt:Y.request.created_at,requester:{name:Y.request.requester_name,email:Y.request.requester_email}};await Y.db.insertInto("events").values({id:X,organization_id:Y.organizationId,type:"registry.publish_request.created",source:J,specversion:"1.0",subject:Y.request.id,time:Q,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(K),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute();let W=await Y.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((Z)=>Z.or([Z("publisher","is",null),Z("publisher","=",J)])).execute();if(W.length>0)await Y.db.insertInto("event_deliveries").values(W.map((Z)=>({id:aA0(),event_id:X,subscription_id:Z.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Q}))).execute();try{await i$4`SELECT pg_notify('mesh_events', ${X})`.execute(Y.db)}catch{}}async function o$4(Y,Q){let J=(await Y.selectFrom("organization").select(["id"]).where("id","=",Q).execute())[0];if(J?.id)return J.id;return(await Y.selectFrom("organization").select(["id"]).where("slug","=",Q).execute())[0]?.id??null}async function s$4(Y,Q){let X=await Y.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",_Z).execute();for(let J of X){let G=J.settings,K=typeof G==="string"?(()=>{try{return JSON.parse(G)}catch{return{}}})():G??{};if(K.acceptPublishRequests===!0){let W=K.rateLimitWindow==="minute"?"minute":"hour",Z=K.rateLimitMax,H=typeof Z==="number"&&Number.isFinite(Z)&&Z>=1?Math.floor(Z):oA0;return{acceptPublishRequests:!0,requireApiToken:K.requireApiToken===!0,rateLimitEnabled:K.rateLimitEnabled===void 0?rA0:K.rateLimitEnabled===!0,rateLimitWindow:W,rateLimitMax:H}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:rA0,rateLimitWindow:a$4,rateLimitMax:oA0}}async function t$4(Y,Q,X){let J=X==="minute"?60000:3600000,G=new Date(Date.now()-J).toISOString(),K=await Y.selectFrom("private_registry_publish_request").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",Q).where("created_at",">=",G).executeTakeFirst();return Number(K?.count??0)}async function e$4(Y,Q,X,J){let G=await Y.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Q).where((K)=>K.or([K("id","=",X),K("title","=",J)])).executeTakeFirst();return G?{id:String(G.id),title:String(G.title)}:null}function UK1(Y,Q){let{db:X,db:J}=Q,G=new nC(J),K=new iC(J);Y.post("/org/:orgRef/registry/publish-request",async(W)=>{let Z=W.req.param("orgRef"),H=await o$4(X,Z);if(!H)return W.json({error:"Organization not found"},404);let F=await s$4(X,H);if(!F.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if(F.requireApiToken){let z=W.req.header("Authorization"),O=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!O)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await K.validate(H,O))return W.json({error:"Invalid API key"},401)}if(F.rateLimitEnabled){if(await t$4(J,H,F.rateLimitWindow)>=F.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:F.rateLimitWindow==="minute"?60:3600},429)}let $;try{$=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let V=mA0.safeParse($);if(!V.success)return W.json({error:"Invalid publish request payload",details:q.treeifyError(V.error)},400);let B=await e$4(J,H,V.data.data.id,V.data.data.title);if(B)return W.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:B},409);let U=await G.createOrUpdate({organization_id:H,requested_id:V.data.data.id,title:V.data.data.title,description:V.data.data.description??null,_meta:V.data.data._meta,server:V.data.data.server,requester_name:V.data.requester?.name??null,requester_email:V.data.requester?.email??null});try{await r$4({db:X,organizationId:H,request:U})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return W.json({id:U.id,requested_id:U.requested_id,status:U.status},201)})}var rA0=!0,a$4="hour",oA0=100;var sA0=S(()=>{zY();y1();jB();qK1();BK1();v9()});var tA0=S(()=>{cA0();sA0()});function eA0(Y){zK1=Y}function Y6(){if(!zK1)throw Error(`Plugin storage not initialized. Make sure the "${_Z}" plugin is enabled.`);return zK1}async function YV4(Y){if(!Y.organization)throw Error("Organization context required");return await Y.access.check(),Y}function N6(Y,Q){return async(X,J)=>{let G=await YV4(J);return Q(X,G)}}function QV4(Y){if(!Y)return{};if(typeof Y==="string")try{return JSON.parse(Y)}catch{return{}}if(typeof Y==="object")return Y;return{}}async function aC(Y,Q){let J=(await Y.db.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",_Z).execute()).map((K)=>QV4(K.settings)),G={acceptPublishRequests:J.some((K)=>K.acceptPublishRequests===!0),requireApiToken:J.some((K)=>K.requireApiToken===!0),storePrivateOnly:J.some((K)=>K.storePrivateOnly===!0)};if(G.acceptPublishRequests||G.requireApiToken||G.storePrivateOnly)return G;for(let K of J)if(Object.keys(K).length>0)return K;return{}}var zK1=null;var X8=S(()=>{jB()});import{randomUUID as YP0}from"crypto";function QP0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class DK1{db;constructor(Y){this.db=Y}async create(Y){let Q=YP0(),X=new Date().toISOString(),J={id:Q,organization_id:Y.organization_id,status:Y.status??"pending",config_snapshot:Y.config_snapshot?JSON.stringify(Y.config_snapshot):null,total_items:Y.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:Y.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error(`Failed to create monitor run ${Q}`);return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserializeRun(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_monitor_run").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Q.limit??24).offset(Q.offset??0).execute()).map((Z)=>this.deserializeRun(Z)),totalCount:K}}async update(Y,Q,X){let J={};if(X.total_items!==void 0)J.total_items=X.total_items;if(X.status!==void 0)J.status=X.status;if(X.tested_items!==void 0)J.tested_items=X.tested_items;if(X.passed_items!==void 0)J.passed_items=X.passed_items;if(X.failed_items!==void 0)J.failed_items=X.failed_items;if(X.skipped_items!==void 0)J.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)J.current_item_id=X.current_item_id;if(X.started_at!==void 0)J.started_at=X.started_at;if(X.finished_at!==void 0)J.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor run not found: ${Q}`);return G}deserializeRun(Y){return{id:Y.id,organization_id:Y.organization_id,status:Y.status,config_snapshot:QP0(Y.config_snapshot,null),total_items:Number(Y.total_items??0),tested_items:Number(Y.tested_items??0),passed_items:Number(Y.passed_items??0),failed_items:Number(Y.failed_items??0),skipped_items:Number(Y.skipped_items??0),current_item_id:Y.current_item_id,started_at:Y.started_at,finished_at:Y.finished_at,created_at:Y.created_at}}}class OK1{db;constructor(Y){this.db=Y}async create(Y){let Q=YP0(),X=new Date().toISOString(),J={id:Q,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message??null,connection_ok:Y.connection_ok?1:0,tools_listed:Y.tools_listed?1:0,tool_results:Y.tool_results?JSON.stringify(Y.tool_results):null,agent_summary:Y.agent_summary??null,duration_ms:Y.duration_ms??0,action_taken:Y.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error("Failed to create test result");return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async listByRun(Y,Q,X={}){let J=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("run_id","=",Q),G=this.db.selectFrom("private_registry_monitor_result").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",Y).where("run_id","=",Q);if(X.status)J=J.where("status","=",X.status),G=G.where("status","=",X.status);let K=await G.executeTakeFirst(),W=Number(K?.count??0);return{items:(await J.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:W}}async update(Y,Q,X){let J={};if(X.status!==void 0)J.status=X.status;if(X.error_message!==void 0)J.error_message=X.error_message;if(X.connection_ok!==void 0)J.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)J.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)J.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)J.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)J.duration_ms=X.duration_ms;if(X.action_taken!==void 0)J.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor result not found: ${Q}`);return G}deserialize(Y){return{id:Y.id,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message,connection_ok:Y.connection_ok===1,tools_listed:Y.tools_listed===1,tool_results:QP0(Y.tool_results,[]),agent_summary:Y.agent_summary,duration_ms:Number(Y.duration_ms??0),action_taken:Y.action_taken,tested_at:Y.tested_at}}}var XP0=()=>{};import{randomUUID as XV4}from"crypto";class LK1{db;constructor(Y){this.db=Y}async findByItemId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("item_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("connection_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async upsert(Y){let Q=await this.findByItemId(Y.organization_id,Y.item_id),X=new Date().toISOString();if(!Q){let G={id:XV4(),organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(G).execute()}else{let G={connection_id:Y.connection_id,auth_status:Y.auth_status??Q.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(G).where("organization_id","=",Y.organization_id).where("item_id","=",Y.item_id).execute()}let J=await this.findByItemId(Y.organization_id,Y.item_id);if(!J)throw Error("Failed to save monitor connection");return J}async updateAuthStatus(Y,Q,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",Y).where("item_id","=",Q).execute(),this.findByItemId(Y,Q)}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status,created_at:Y.created_at,updated_at:Y.updated_at}}}var JP0=()=>{};function GP0(Y){let Q=Y.db,X={items:new pC(Q),publishRequests:new nC(Q),publishApiKeys:new iC(Q),monitorRuns:new DK1(Q),monitorResults:new OK1(Q),monitorConnections:new LK1(Q)};return eA0(X),X}var WP0=S(()=>{X8();QK1();qK1();BK1();XP0();JP0()});var ZP0;var KP0=S(()=>{v9();X8();ZP0={name:"REGISTRY_ITEM_BULK_CREATE",description:"Create many private registry items at once",inputSchema:GK1,outputSchema:jA0,handler:N6(GK1,async(Y,Q)=>{let X=Y6(),J=[],G=0;for(let K of Y.items)try{await X.items.create({...K,organization_id:Q.organization.id,created_by:Q.auth.user?.id??null}),G+=1}catch(W){J.push({id:K.id,error:W instanceof Error?W.message:"Unknown error"})}return{created:G,errors:J}})}});function JV4(Y){return Array.from(new Set(Y.map((Q)=>Q.trim().toLowerCase()).filter((Q)=>Q.length>0)))}function GV4(Y){let X=Y.structuredContent?.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1214
|
+
`,Y.enqueue(Q.encode(G)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,Q){try{let X=Y.headers.get("accept");if(!X?.includes("application/json")||!X.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(Q?.parsedBody!==void 0)K=Q.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((M)=>oX.parse(M));else W=[oX.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(pr);if(Z){if(this._initialized&&this.sessionId!==void 0)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(W.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!Z){let M=this.validateSession(Y);if(M)return M;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(UW)){for(let M of W)this.onmessage?.(M,{authInfo:Q?.authInfo,requestInfo:G});return new Response(null,{status:202})}let F=crypto.randomUUID(),$=W.find((M)=>pr(M)),V=$?$.params.protocolVersion:Y.headers.get("mcp-protocol-version")??Qz1;if(this._enableJsonResponse)return new Promise((M)=>{this._streamMapping.set(F,{resolveJson:M,cleanup:()=>{this._streamMapping.delete(F)}});for(let w of W)if(UW(w))this._requestToStreamMapping.set(w.id,F);for(let w of W)this.onmessage?.(w,{authInfo:Q?.authInfo,requestInfo:G})});let B=new TextEncoder,U,z=new ReadableStream({start:(M)=>{U=M},cancel:()=>{this._streamMapping.delete(F)}}),O={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)O["mcp-session-id"]=this.sessionId;for(let M of W)if(UW(M))this._streamMapping.set(F,{controller:U,encoder:B,cleanup:()=>{this._streamMapping.delete(F);try{U.close()}catch{}}}),this._requestToStreamMapping.set(M.id,F);await this.writePrimingEvent(U,B,F,V);for(let M of W){let w,P;if(UW(M)&&this._eventStore&&V>="2025-11-25")w=()=>{this.closeSSEStream(M.id)},P=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(M,{authInfo:Q?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:P})}return new Response(z,{status:200,headers:O})}catch(X){return this.onerror?.(X),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(X)})}}async handleDeleteRequest(Y){let Q=this.validateSession(Y);if(Q)return Q;let X=this.validateProtocolVersion(Y);if(X)return X;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let Q=Y.headers.get("mcp-session-id");if(!Q)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(Q!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let Q=Y.headers.get("mcp-protocol-version");if(Q!==null&&!ZV.includes(Q))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${Q} (supported versions: ${ZV.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let Q=this._requestToStreamMapping.get(Y);if(!Q)return;let X=this._streamMapping.get(Q);if(X)X.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,Q){let X=Q?.relatedRequestId;if(e7(Y)||Wz(Y))X=Y.id;if(X===void 0){if(e7(Y)||Wz(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(X);if(!J)throw Error(`No connection established for request ID: ${String(X)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(e7(Y)||Wz(Y)){this._requestResponseMap.set(X,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(X)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map((F)=>this._requestResponseMap.get(F));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var LA0=S(()=>{jY()});var MA0="SELF",Xl=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},wA0=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},NA0="::",AA0=(Y)=>{let Q=Y.indexOf(NA0);if(Q===-1)return null;let X=Y.substring(0,Q),J=Y.substring(Q+NA0.length);return[X,J]},E$4=(Y)=>{if(!Y.startsWith("cron/"))return null;let Q=Y.substring(5),X=Q.indexOf("/");if(X===-1)return null;let J=Q.substring(0,X),G=Q.substring(X+1);return[J,G]},PA0=(Y)=>{if(Xl(Y))return[];return Object.keys(Y)},T$4=(Y,Q)=>{if(Xl(Y))return Y.events;let X=Y[Q];if(!X)return[];if(wA0(X))return X.events;return Object.keys(X)},Ql=(Y,Q,X)=>{if(Y===MA0){if(!X)return console.warn("[Event] SELF binding used but no connectionId available"),null;return X}let J=Q[Y];if(!iZ1(J))return console.warn(`[Event] Binding "${Y}" not found in state`),null;return J.value},C$4=(Y,Q,X)=>{let J=Q;if(Xl(Y)){let K=[];for(let W of Y.events){let Z=AA0(W);if(!Z){console.warn(`[Event] Global handler event "${W}" must be prefixed with BINDING:: (e.g., "SELF::${W}" or "DATABASE::${W}")`);continue}let[H,F]=Z,$=Ql(H,J,X);if(!$)continue;K.push({eventType:F,publisher:$})}return K}let G=[];for(let K of PA0(Y)){let W=Ql(K,J,X);if(!W)continue;let Z=T$4(Y,K);for(let H of Z)G.push({eventType:H,publisher:W})}return G},R$4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.source,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},I$4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.type,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},j$4=(Y)=>{let Q={},X={},J=!1,G=0,K=[];for(let W of Y){if(W.results)Object.assign(X,W.results);if(W.success===!1){if(J=!0,W.error)K.push(W.error)}if(W.processedCount!==void 0)G+=W.processedCount}if(Object.keys(X).length>0)Q.results=X;if(Q.success=!J,K.length>0)Q.error=K.join("; ");if(G>0)Q.processedCount=G;return Q},S$4=async(Y,Q,X,J,G)=>{let K=J;if(Xl(Y)){let $=new Set;for(let B of Y.events){let U=AA0(B);if(!U)continue;let[z,O]=U,M=Ql(z,K,G);if(!M)continue;$.add(`${M}:${O}`)}let V=Q.filter((B)=>{let U=`${B.source}:${B.type}`;return $.has(U)});if(V.length===0)return{success:!0};try{return await Y.handler({events:V},X)}catch(B){return{success:!1,error:B instanceof Error?B.message:String(B)}}}let W=new Map;for(let $ of PA0(Y)){let V=Ql($,K,G);if(V)W.set(V,$)}let Z=R$4(Q),H=[];for(let[$,V]of Z){let B=W.get($);if(!B)continue;let U=Y[B];if(!U)continue;if(wA0(U)){H.push((async()=>{try{return await U.handler({events:V},X)}catch(M){let w={};for(let P of V)w[P.id]={success:!1,error:M instanceof Error?M.message:String(M)};return{results:w}}})());continue}let z=U,O=I$4(V);for(let[M,w]of O){let P=z[M];if(!P)continue;H.push((async()=>{try{let j=await P({events:w},X),C={};for(let E of w)C[E.id]=j;return{results:C}}catch(j){let C={};for(let E of w)C[E.id]={success:!1,error:j instanceof Error?j.message:String(j)};return{results:C}}})())}}let F=await Promise.all(H);if(F.length===0)return{success:!0};return j$4(F)},Jl;var eZ1=S(()=>{om();Jl={subscriptions:C$4,execute:S$4,parseCron:E$4}});function w3(Y){return{...Y,execute:(Q)=>{return Y.execute({...Q,runtimeContext:lC(Q.runtimeContext)})}}}function YK1(Y){return Y&&"streamable"in Y&&Y.streamable===!0}var lC=(Y)=>{let Q=PC.getStore();if(!Q){if(Y)return Y;throw Error("Missing context, did you forget to call State.bind?")}return Q},_$4=(Y,Q)=>{let X=Q;return typeof X[Y]<"u"?X[Y]:Q?.MESH_REQUEST_CONTEXT?.state?.[Y]},v$4=({events:Y,configuration:{state:Q,scopes:X,onChange:J}={}}={})=>{let G=Q?q.toJSONSchema(Q):{type:"object",properties:{}},K=String(Y?.bus??"EVENT_BUS");return[...J||Y?[w3({id:"ON_MCP_CONFIGURATION",description:"MCP Configuration On Change",inputSchema:q.object({state:Q??q.unknown(),scopes:q.array(q.string()).describe("Array of scopes in format 'KEY::SCOPE' (e.g., 'GMAIL::GetCurrentUser')")}),outputSchema:q.object({}),execute:async(W)=>{let Z=W.context.state;await J?.(W.runtimeContext.env,{state:Z,scopes:W.context.scopes});let H=_$4(K,W.runtimeContext.env);if(Y&&Z&&H){let F=W.runtimeContext.env.MESH_REQUEST_CONTEXT?.connectionId,$=Jl.subscriptions(Y?.handlers??{},Z,F);if(await H.EVENT_SYNC_SUBSCRIPTIONS({subscriptions:$}),F){let V=$.filter((B)=>B.eventType.startsWith("cron/")&&B.publisher===F);await Promise.all(V.map(async(B)=>{let U=Jl.parseCron(B.eventType);if(U){let[,z]=U;await H.EVENT_PUBLISH({type:B.eventType,cron:z})}}))}}return Promise.resolve({})}})]:[],...Y?.handlers?[w3({id:"ON_EVENTS",description:"Receive and process CloudEvents from the event bus. Returns per-event or batch results.",inputSchema:sm,outputSchema:tm,execute:async(W)=>{let Z=W.runtimeContext.env,H=Z.MESH_REQUEST_CONTEXT?.state,F=Z.MESH_REQUEST_CONTEXT?.connectionId;return Jl.execute(Y.handlers,W.context.events,Z,H,F)}})]:[],w3({id:"MCP_CONFIGURATION",description:"MCP Configuration",inputSchema:q.object({}),outputSchema:q.object({stateSchema:q.unknown(),scopes:q.array(q.string()).optional()}),execute:()=>{return Promise.resolve({stateSchema:G,scopes:[...X??[],...Y?[`${K}::EVENT_SYNC_SUBSCRIPTIONS`]:[]]})}})]},EA0=(Y)=>{let Q=async(G)=>{await Y.before?.(G);let K=new _z({name:"@deco/mcp-api",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}}),Z=await(typeof Y.tools==="function"?Y.tools:async(B)=>{if(typeof Y.tools==="function")return await Y.tools(B);return await Promise.all(Y.tools?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);Z.push(...v$4(Y));for(let B of Z)K.registerTool(B.id,{_meta:{streamable:YK1(B),...B._meta??{}},description:B.description,annotations:B.annotations,inputSchema:B.inputSchema&&"shape"in B.inputSchema?B.inputSchema.shape:q.object({}).shape,outputSchema:YK1(B)?q.object({bytes:q.record(q.string(),q.number())}).shape:B.outputSchema&&typeof B.outputSchema==="object"&&("shape"in B.outputSchema)?B.outputSchema.shape:void 0},async(U)=>{let z=await B.execute({context:U,runtimeContext:lC()});if(YK1(B)&&z instanceof Response)return{structuredContent:{streamable:!0,status:z.status,statusText:z.statusText},content:[{type:"text",text:`Streaming response: ${z.status} ${z.statusText}`}]};return{structuredContent:z,content:[{type:"text",text:JSON.stringify(z)}]}});let F=await(typeof Y.prompts==="function"?Y.prompts:async(B)=>{if(typeof Y.prompts==="function")return await Y.prompts(B);return await Promise.all(Y.prompts?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);for(let B of F)K.registerPrompt(B.name,{title:B.title,description:B.description,argsSchema:B.argsSchema?B.argsSchema:q.object({}).shape},async(U)=>{return await B.execute({args:U,runtimeContext:lC()})});let V=await(typeof Y.resources==="function"?Y.resources:async(B)=>{if(typeof Y.resources==="function")return await Y.resources(B);return await Promise.all(Y.resources?.flatMap(async(U)=>{let O=await U(B);if(Array.isArray(O))return O;return[O]})??[]).then((U)=>U.flat())})(G);for(let B of V)K.resource(B.name,B.uri,{description:B.description,mimeType:B.mimeType},async(U)=>{let z=await B.read({uri:U,runtimeContext:lC()}),O={uri:z.uri};if(z.mimeType)O.mimeType=z.mimeType;if(z.text!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,text:z.text}]};else if(z.blob!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,blob:z.blob}]};return{contents:[{uri:z.uri,mimeType:z.mimeType,text:""}]}});return{server:K,tools:Z,prompts:F,resources:V}};return{fetch:async(G,K)=>{let{server:W}=await Q(K),Z=new tZ1;await W.connect(Z);try{let H=await Z.handleRequest(G),F=H.headers.get("content-type");if(!(F?.includes("text/event-stream")||F?.includes("application/json-rpc"))){console.debug("[MCP Transport] Closing transport for non-streaming response");try{await Z.close?.()}catch{}}else console.debug("[MCP Transport] Keeping transport open for streaming response (Content-Type: %s)",F);return H}catch(H){console.debug("[MCP Transport] Closing transport due to error:",H instanceof Error?H.message:H);try{await Z.close?.()}catch{}throw H}},callTool:async({toolCallId:G,toolCallInput:K})=>{let W=PC.getStore();if(!W)throw Error("Missing state, did you forget to call State.bind?");let Z=W?.env,{tools:H}=await Q(Z),$=H.find((V)=>V.id===G)?.execute;if(!$)throw Error(`Tool ${G} not found or does not have an execute function`);return $({context:K,runtimeContext:lC()})}}};var Gl=S(()=>{Yl();Tk();LA0();y1();eZ1();aZ1();eZ1()});var k$4=({env:Y,server:Q,url:X})=>{Y.SELF=new Proxy({},{get:(J,G)=>{if(G==="toJSON")return null;return async(K)=>{return await Q.callTool({toolCallId:G,toolCallInput:K})}}}),Y.IS_LOCAL=(X?.startsWith("http://localhost")||X?.startsWith("http://127.0.0.1"))??!1},TA0=(Y)=>()=>{return{...Y??{}}},y$4=({env:Y,server:Q,tokenOrContext:X,url:J,authToken:G})=>{let K=Y,W=G?G.split(" ")[1]:void 0,Z;if(typeof X==="string"){let H=k8(X),F=H.metadata??{};Z={authorization:W,state:H.state??F.state??{},token:X,meshUrl:H.meshUrl??F.meshUrl,connectionId:H.connectionId??F.connectionId,organizationId:H.organizationId??F.organizationId,ensureAuthenticated:TA0(H.user??H.sub)}}else if(typeof X==="object"){Z=X;let H=k8(X.token),F=H.metadata??{},$=H.appName;Z.authorization??=W,Z.callerApp=$,Z.connectionId??=H.connectionId??F.connectionId,Z.ensureAuthenticated=TA0(H.user??H.sub)}else Z={state:{},authorization:W,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return K.MESH_REQUEST_CONTEXT=Z,Z.state=pw0(Z),k$4({env:K,server:Q,url:J}),K},f$4,CA0=(Y)=>{let Q=EA0(Y),X=Y.cors??f$4,J=Y.oauth,G=J?tw0(J):null,K=async(W,Z,H)=>{let F=new URL(W.url);if(G){if(F.pathname==="/.well-known/oauth-protected-resource"||F.pathname==="/mcp/.well-known/oauth-protected-resource")return G.handleProtectedResourceMetadata(W);if(F.pathname==="/.well-known/oauth-authorization-server")return G.handleAuthorizationServerMetadata(W);if(F.pathname==="/authorize")return G.handleAuthorize(W);if(F.pathname==="/oauth/callback")return G.handleOAuthCallback(W);if(F.pathname==="/token"&&W.method==="POST")return G.handleToken(W);if((F.pathname==="/register"||F.pathname==="/mcp/register")&&W.method==="POST")return G.handleClientRegistration(W)}if(F.pathname==="/mcp"){if(W.method==="GET")return new Response("Method not allowed",{status:405});if(G&&!G.hasAuth(W)){let $=W.clone();try{if((await $.json())?.method!=="tools/list")return G.createUnauthorizedResponse(W)}catch{return G.createUnauthorizedResponse(W)}}return Q.fetch(W,Z,H)}if(F.pathname.startsWith("/mcp/call-tool")){let $=F.pathname.split("/").pop();if(!$)return new Response("Not found",{status:404});let V=await W.json(),B=await Q.callTool({toolCallId:$,toolCallInput:V});if(B instanceof Response)return B;return new Response(JSON.stringify(B),{headers:{"Content-Type":"application/json"}})}return Y.fetch?.(W,Z,H)||new Response("Not found",{status:404})};return{fetch:async(W,Z,H)=>{if(new URL(W.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(X!==!1&&W.method==="OPTIONS")return nw0(W,X??{});let F=y$4({authToken:W.headers.get("authorization")??null,env:{...process.env,...Z},server:Q,tokenOrContext:W.headers.get("x-mesh-token")??void 0,url:W.url}),$=await PC.run({req:W,env:F,ctx:H},async()=>await K(W,F,H));if(X!==!1)return iw0($,W,X??{});return $}}};var RA0=S(()=>{OX();om();aw0();aZ1();Gl();Gl();om();cZ1();f$4={origin:(Y)=>{if(Y.includes("localhost")||Y.includes("127.0.0.1"))return Y;return Y},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function Wl(Y){return Buffer.from(String(Y),"utf8").toString("base64")}function Zl(Y){if(!Y)return null;try{let Q=Buffer.from(Y,"base64").toString("utf8"),X=Number.parseInt(Q,10);return Number.isNaN(X)||X<0?null:X}catch{return null}}function GQ(Y){if(!Y?.length)return[];return Array.from(new Set(Y.map((Q)=>Q.trim()).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase())))}function kB(Y){if(!Y)return[];return GQ(Y.split(","))}function Kl(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}function Hl(Y){return Y?.["mcp.mesh"]??{}}function Fl(Y){return Y.length?Y.join(","):null}function b$4(Y,Q){if(!Q?.length)return;let X=Y;for(let J of Q){if(X===null||X===void 0)return;if(typeof X!=="object")return;X=X[J]}return X}function h$4(Y,Q,X){if(!Q)return!1;if(Q==="eq")return Y===X;if(Q==="contains"||Q==="like"){let J=String(Y??"").toLowerCase(),G=String(X??"").toLowerCase();return J.includes(G)}if(Q==="in"){if(!Array.isArray(X))return!1;return X.includes(Y)}if(Q==="gt")return Number(Y)>Number(X);if(Q==="gte")return Number(Y)>=Number(X);if(Q==="lt")return Number(Y)<Number(X);if(Q==="lte")return Number(Y)<=Number(X);return!1}function dC(Y,Q){if(!Q)return!0;if(Array.isArray(Q.conditions)&&Q.conditions.length){if(Q.operator==="and")return Q.conditions.every((X)=>dC(Y,X));if(Q.operator==="or")return Q.conditions.some((X)=>dC(Y,X));if(Q.operator==="not")return!Q.conditions.some((X)=>dC(Y,X))}return h$4(b$4(Y,Q.field),Q.operator,Q.value)}class pC{db;constructor(Y){this.db=Y}async create(Y){let Q=new Date().toISOString(),X=Y._meta??{},J=Hl(X),G=GQ(J.tags),K=GQ(J.categories),W={id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:JSON.stringify(X),tags:Fl(G),categories:Fl(K),is_public:Y.is_public?1:0,is_unlisted:Y.is_unlisted?1:0,created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("private_registry_item").values(W).execute();let Z=await this.findById(Y.organization_id,Y.id);if(!Z)throw Error(`Failed to create registry item "${Y.id}"`);return Z}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName(Y,Q){let X=await this.findById(Y,Q);if(X)return X;let J=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("title","=",Q).executeTakeFirst();return J?this.deserialize(J):null}async update(Y,Q,X){let J=await this.findById(Y,Q);if(!J)throw Error(`Registry item not found: ${Q}`);let G=X._meta??J._meta??{},K=Hl(G),W=GQ(K.tags),Z=GQ(K.categories),H={updated_at:new Date().toISOString()};if(X.title!==void 0)H.title=X.title;if(X.description!==void 0)H.description=X.description;if(X.server!==void 0)H.server_json=JSON.stringify(X.server);if(X._meta!==void 0)H.meta_json=JSON.stringify(X._meta);if(X._meta!==void 0)H.tags=Fl(W),H.categories=Fl(Z);if(X.is_public!==void 0)H.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)H.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(H).where("organization_id","=",Y).where("id","=",Q).execute();let F=await this.findById(Y,Q);if(!F)throw Error(`Registry item not found after update: ${Q}`);return F}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",Y).where("id","=",Q).execute(),X}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).orderBy("created_at","desc");if(!Q.includeUnlisted)X=X.where("is_unlisted","=",0);let G=(await X.execute()).map((z)=>this.deserialize(z)),K=GQ(Q.tags),W=GQ(Q.categories),Z=G.filter((z)=>{let O=Hl(z._meta),M=GQ(O.tags),w=GQ(O.categories),P=K.length===0||K.every((E)=>M.includes(E)),j=W.length===0||W.every((E)=>w.includes(E)),C=dC(z,Q.where);return P&&j&&C}),F=Zl(Q.cursor)??Q.offset??0,$=Q.limit??24,V=Z.slice(F,F+$),B=F+$<Z.length,U=B?Wl(F+$):void 0;return{items:V,totalCount:Z.length,hasMore:B,nextCursor:U}}async listPublic(Y,Q={}){let J=(await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("is_public","=",1).where("is_unlisted","=",0).orderBy("created_at","desc").execute()).map((U)=>this.deserialize(U)),G=GQ(Q.tags),K=GQ(Q.categories),W=J.filter((U)=>{let z=Hl(U._meta),O=GQ(z.tags),M=GQ(z.categories),w=G.length===0||G.every((C)=>O.includes(C)),P=K.length===0||K.every((C)=>M.includes(C)),j=dC(U,Q.where);return w&&P&&j}),H=Zl(Q.cursor)??Q.offset??0,F=Q.limit??24,$=W.slice(H,H+F),V=H+F<W.length,B=V?Wl(H+F):void 0;return{items:$,totalCount:W.length,hasMore:V,nextCursor:B}}async getFilters(Y,Q){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",Y);if(Q?.publicOnly)X=X.where("is_public","=",1);if(!Q?.includeUnlisted)X=X.where("is_unlisted","=",0);let J=await X.execute(),G=new Map,K=new Map;for(let Z of J){for(let H of kB(Z.tags))G.set(H,(G.get(H)??0)+1);for(let H of kB(Z.categories))K.set(H,(K.get(H)??0)+1)}let W=(Z)=>Array.from(Z.entries()).map(([H,F])=>({value:H,count:F})).sort((H,F)=>H.value.localeCompare(F.value));return{tags:W(G),categories:W(K)}}async search(Y,Q={},X){let J=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",Y).orderBy("created_at","desc");if(X?.publicOnly)J=J.where("is_public","=",1);if(!X?.includeUnlisted)J=J.where("is_unlisted","=",0);let G=await J.execute(),K=Q.query?.trim().toLowerCase(),W=GQ(Q.tags),Z=GQ(Q.categories),H=G.filter((M)=>{if(K){let w=Kl(M.server_json,{}),j=Kl(M.meta_json,{})?.["mcp.mesh"]?.short_description??"";if(![M.id,M.title,M.description??"",w.name??"",w.description??"",j].join(" ").toLowerCase().includes(K))return!1}if(W.length>0){let w=GQ(kB(M.tags));if(!W.every((P)=>w.includes(P)))return!1}if(Z.length>0){let w=GQ(kB(M.categories));if(!Z.every((P)=>w.includes(P)))return!1}return!0}),$=Zl(Q.cursor)??0,V=Q.limit??20,B=H.slice($,$+V),U=$+V<H.length,z=U?Wl($+V):void 0;return{items:B.map((M)=>({id:M.id,title:M.title,tags:kB(M.tags),categories:kB(M.categories),is_public:M.is_public===1,is_unlisted:M.is_unlisted===1})),totalCount:H.length,hasMore:U,nextCursor:z}}deserialize(Y){let Q=Kl(Y.server_json,{}),X=Kl(Y.meta_json,{});return{id:Y.id,name:typeof Q.name==="string"?Q.name:void 0,title:Y.title,description:Y.description,_meta:X,server:Q,is_public:Y.is_public===1,is_unlisted:Y.is_unlisted===1,created_at:Y.created_at,updated_at:Y.updated_at,...Y.created_by?{created_by:Y.created_by}:{}}}}var QK1=()=>{};var $l,x$4,Vl,pG,XK1,g$4,G$,rL,uX,yB,JK1,IA0,GK1,jA0,WK1,SA0,ZK1,_A0,oL,u$4,cC,m$4,ql,KK1,vA0,kA0,HK1,yA0,fA0,bA0,hA0,xA0,gA0,uA0,mA0,l$4,FK1,lA0,dA0,$K1,pA0;var v9=S(()=>{gX();y1();$l=q.object({name:q.string(),title:q.string().optional(),description:q.string().optional(),version:q.string().optional(),websiteUrl:q.string().optional(),icons:q.array(q.object({src:q.string()})).optional(),remotes:q.array(q.object({type:q.string().optional(),url:q.string().optional(),name:q.string().optional(),title:q.string().optional(),description:q.string().optional()})).optional(),packages:q.array(q.object({identifier:q.string(),version:q.string().optional()})).optional(),repository:q.object({url:q.string().optional(),source:q.string().optional(),subfolder:q.string().optional()}).optional()}),x$4=q.object({name:q.string(),description:q.string().nullable().optional()}),Vl=q.object({"mcp.mesh":q.object({verified:q.boolean().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),friendly_name:q.string().nullable().optional(),short_description:q.string().max(160).nullable().optional(),owner:q.string().nullable().optional(),readme:q.string().max(50000).nullable().optional(),readme_url:q.string().url().nullable().optional(),has_remote:q.boolean().optional(),has_oauth:q.boolean().optional(),tools:q.array(x$4).optional()}).optional()}).catchall(q.unknown()),pG=q.object({id:q.string(),name:q.string().optional(),title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,is_public:q.boolean().optional(),created_at:q.string(),updated_at:q.string(),created_by:q.string().optional()}),XK1=q.object({id:q.string(),title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,is_public:q.boolean().optional()}),g$4=q.object({title:q.string().optional(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l.optional(),is_public:q.boolean().optional()}),G$=dG.extend({tags:q.array(q.string()).optional().describe("Filter by tags (AND semantics)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND semantics)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("List registry items with optional filtering and pagination."),rL=q.object({items:q.array(pG),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),uX=q.object({id:q.string().optional().describe("Registry item ID"),name:q.string().optional().describe("Registry item name (alias for id)")}).refine((Y)=>Y.id||Y.name,{message:"At least one of 'id' or 'name' is required"}).describe("Get a registry item by ID or name."),yB=q.object({item:pG.nullable()}),JK1=q.object({data:XK1}),IA0=q.object({item:pG}),GK1=q.object({items:q.array(XK1).min(1)}),jA0=q.object({created:q.number(),errors:q.array(q.object({id:q.string(),error:q.string()}))}),WK1=q.object({id:q.string(),data:g$4}),SA0=q.object({item:pG}),ZK1=q.object({id:q.string()}),_A0=q.object({item:pG}),oL=q.object({tags:q.array(q.object({value:q.string(),count:q.number()})),categories:q.array(q.object({value:q.string(),count:q.number()}))}),u$4=q.enum(["description","short_description","tags","categories","readme"]),cC=q.object({query:q.string().optional().describe("Free-text search across id, title, description, server name"),tags:q.array(q.string()).optional().describe("Filter by tags (AND)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND)"),limit:q.number().int().min(1).max(100).optional().describe("Max results (default 20)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("Lightweight search returning minimal fields (id, title, tags, categories, is_public)."),m$4=q.object({id:q.string(),title:q.string(),tags:q.array(q.string()),categories:q.array(q.string()),is_public:q.boolean()}),ql=q.object({items:q.array(m$4),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),KK1=q.object({type:u$4.describe("Which content to generate"),llmConnectionId:q.string().describe("Connection ID of a language model"),modelId:q.string().describe("Model ID to use"),context:q.object({name:q.string().optional(),provider:q.string().optional(),url:q.string().optional(),owner:q.string().optional(),repositoryUrl:q.string().optional(),description:q.string().optional(),shortDescription:q.string().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),availableTags:q.array(q.string()).optional(),availableCategories:q.array(q.string()).optional(),tools:q.array(q.object({name:q.string(),description:q.string().nullable().optional()})).optional()})}),vA0=q.object({result:q.string().optional(),items:q.array(q.string()).optional()}),kA0=q.enum(["pending","approved","rejected"]),HK1=q.object({id:q.string(),organization_id:q.string(),requested_id:q.string().nullable().optional(),status:kA0,title:q.string(),description:q.string().nullable().optional(),_meta:Vl.optional(),server:$l,requester_name:q.string().nullable().optional(),requester_email:q.string().nullable().optional(),reviewer_notes:q.string().nullable().optional(),created_at:q.string(),updated_at:q.string()}),yA0=q.object({status:kA0.optional(),limit:q.number().int().min(1).max(200).optional(),offset:q.number().int().min(0).optional(),sortBy:q.enum(["created_at","title"]).optional(),sortDirection:q.enum(["asc","desc"]).optional()}),fA0=q.object({items:q.array(HK1),totalCount:q.number()}),bA0=q.object({id:q.string(),status:q.enum(["approved","rejected"]),reviewerNotes:q.string().nullable().optional()}),hA0=q.object({item:HK1}),xA0=q.object({pending:q.number()}),gA0=q.object({id:q.string()}),uA0=q.object({item:HK1.nullable()}),mA0=q.object({data:XK1,requester:q.object({name:q.string().optional(),email:q.string().email().optional()}).optional()}),l$4=q.object({id:q.string(),name:q.string(),prefix:q.string(),createdAt:q.string()}),FK1=q.object({name:q.string().min(1).max(64).describe("A descriptive name for this key")}),lA0=q.object({id:q.string(),name:q.string(),prefix:q.string(),key:q.string().describe("The full API key \u2014 shown only once!"),createdAt:q.string()}),dA0=q.object({items:q.array(l$4)}),$K1=q.object({keyId:q.string()}),pA0=q.object({success:q.boolean(),keyId:q.string()})});function d$4(Y,Q){let X=w3({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",inputSchema:G$,outputSchema:rL,execute:async({context:Z})=>{return await Y.listPublic(Q,{limit:Z.limit,offset:Z.offset,cursor:Z.cursor,tags:Z.tags,categories:Z.categories,where:Z.where})}}),J=w3({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",inputSchema:uX,outputSchema:yB,execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{item:null};let F=await Y.findByIdOrName(Q,H);if(F&&F.is_public)return{item:F};return{item:null}}}),G=w3({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",inputSchema:uX,outputSchema:q.object({versions:q.array(yB.shape.item)}),execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{versions:[]};let F=await Y.findByIdOrName(Q,H);if(F&&F.is_public)return{versions:[F]};return{versions:[]}}}),K=w3({id:"COLLECTION_REGISTRY_APP_SEARCH",description:"Search public registry items returning minimal data (id, title, tags, categories, is_public). Use this instead of LIST when you need to find items efficiently without loading full details.",inputSchema:cC,outputSchema:ql,execute:async({context:Z})=>{return await Y.search(Q,Z,{publicOnly:!0})}}),W=w3({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",inputSchema:q.object({}),outputSchema:oL,execute:async()=>{return await Y.getFilters(Q,{publicOnly:!0})}});return[X,K,J,G,W]}function VK1(Y,Q){let X=Q.db,J=new pC(X);Y.all("/org/:orgSlug/registry/*",async(G)=>{let K=G.req.param("orgSlug");console.log(`[Public Registry MCP] Request for org slug: ${K}, path: ${G.req.path}`);let W=await X.selectFrom("organization").select(["id","slug","name"]).where("slug","=",K).executeTakeFirst();if(console.log("[Public Registry MCP] Found org:",W),!W)return console.log(`[Public Registry MCP] Organization not found: ${K}`),G.json({error:"Organization not found"},404);let Z=d$4(J,W.id),H=CA0({tools:()=>Z}),F=new URL(G.req.url),$=G.req.path.replace(`/org/${K}/registry`,""),V=new URL($||"/",F.origin);F.searchParams.forEach((z,O)=>{V.searchParams.set(O,z)}),console.log(`[Public Registry MCP] Rewriting ${F.pathname} to ${V.pathname}`);let B=new Request(V.toString(),{method:G.req.method,headers:G.req.raw.headers,body:G.req.method!=="GET"&&G.req.method!=="HEAD"?G.req.raw.body:void 0}),U={organizationId:W.id,db:X,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await H.fetch(B,U,G)})}var cA0=S(()=>{RA0();Gl();y1();QK1();v9()});import{randomUUID as p$4}from"crypto";function nA0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class nC{db;constructor(Y){this.db=Y}async createOrUpdate(Y){let Q=new Date().toISOString(),X=await this.findPendingByRequestedId(Y.organization_id,Y.requested_id);if(X){let W={title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,updated_at:Q};await this.db.updateTable("private_registry_publish_request").set(W).where("organization_id","=",Y.organization_id).where("id","=",X.id).execute();let Z=await this.findById(Y.organization_id,X.id);if(!Z)throw Error("Failed to update publish request");return Z}let J=p$4(),G={id:J,organization_id:Y.organization_id,requested_id:Y.requested_id,status:"pending",title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,reviewer_notes:null,created_at:Q,updated_at:Q};await this.db.insertInto("private_registry_publish_request").values(G).execute();let K=await this.findById(Y.organization_id,J);if(!K)throw Error("Failed to create publish request");return K}async findPendingByRequestedId(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("requested_id","=",Q).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_publish_request").select((F)=>F.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0),W=Q.sortBy??"created_at",Z=Q.sortDirection??"desc";if(W==="title")X=X.orderBy("title",Z);else X=X.orderBy("created_at",Z);return{items:(await X.limit(Q.limit??24).offset(Q.offset??0).execute()).map((F)=>this.deserialize(F)),totalCount:K}}async updateStatus(Y,Q,X,J){let G={status:X,updated_at:new Date().toISOString(),reviewer_notes:J??null};await this.db.updateTable("private_registry_publish_request").set(G).where("organization_id","=",Y).where("id","=",Q).execute();let K=await this.findById(Y,Q);if(!K)throw Error(`Publish request not found: ${Q}`);return K}async countPending(Y){let Q=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).where("status","=","pending").executeTakeFirst();return Number(Q?.count??0)}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",Y).where("id","=",Q).execute(),X}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,requested_id:Y.requested_id??null,status:Y.status,title:Y.title,description:Y.description,_meta:nA0(Y.meta_json,{}),server:nA0(Y.server_json,{name:""}),requester_name:Y.requester_name,requester_email:Y.requester_email,reviewer_notes:Y.reviewer_notes,created_at:Y.created_at,updated_at:Y.updated_at}}}var qK1=()=>{};import{randomUUID as c$4}from"crypto";async function iA0(Y){let X=new TextEncoder().encode(Y),J=await crypto.subtle.digest("SHA-256",X);return Array.from(new Uint8Array(J)).map((K)=>K.toString(16).padStart(2,"0")).join("")}function n$4(){let Y=new Uint8Array(32);return crypto.getRandomValues(Y),`prk_${Array.from(Y).map((X)=>X.toString(16).padStart(2,"0")).join("")}`}class iC{db;constructor(Y){this.db=Y}async generate(Y,Q){let X=c$4(),J=n$4(),G=await iA0(J),K=J.slice(0,12),W=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:Y,name:Q,key_hash:G,prefix:K,created_at:W}).execute(),{entity:{id:X,organization_id:Y,name:Q,prefix:K,created_at:W},key:J}}async list(Y){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",Y).orderBy("created_at","desc").execute()}async revoke(Y,Q){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",Y).where("id","=",Q).execute()).length>0}async validate(Y,Q){let X=await iA0(Q),J=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",Y).where("key_hash","=",X).executeTakeFirst();return Boolean(J)}async hasKeys(Y){let Q=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).executeTakeFirst();return Number(Q?.count??0)>0}}var BK1=()=>{};import{sql as i$4}from"kysely";import{randomUUID as aA0}from"crypto";async function r$4(Y){let Q=new Date().toISOString(),X=aA0(),J=h9.SELF(Y.organizationId),G="registry.publish_request.created",K={requestId:Y.request.id,requestedId:Y.request.requested_id,title:Y.request.title,status:Y.request.status,createdAt:Y.request.created_at,requester:{name:Y.request.requester_name,email:Y.request.requester_email}};await Y.db.insertInto("events").values({id:X,organization_id:Y.organizationId,type:"registry.publish_request.created",source:J,specversion:"1.0",subject:Y.request.id,time:Q,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(K),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute();let W=await Y.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((Z)=>Z.or([Z("publisher","is",null),Z("publisher","=",J)])).execute();if(W.length>0)await Y.db.insertInto("event_deliveries").values(W.map((Z)=>({id:aA0(),event_id:X,subscription_id:Z.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Q}))).execute();try{await i$4`SELECT pg_notify('mesh_events', ${X})`.execute(Y.db)}catch{}}async function o$4(Y,Q){let J=(await Y.selectFrom("organization").select(["id"]).where("id","=",Q).execute())[0];if(J?.id)return J.id;return(await Y.selectFrom("organization").select(["id"]).where("slug","=",Q).execute())[0]?.id??null}async function s$4(Y,Q){let X=await Y.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",_Z).execute();for(let J of X){let G=J.settings,K=typeof G==="string"?(()=>{try{return JSON.parse(G)}catch{return{}}})():G??{};if(K.acceptPublishRequests===!0){let W=K.rateLimitWindow==="minute"?"minute":"hour",Z=K.rateLimitMax,H=typeof Z==="number"&&Number.isFinite(Z)&&Z>=1?Math.floor(Z):oA0;return{acceptPublishRequests:!0,requireApiToken:K.requireApiToken===!0,rateLimitEnabled:K.rateLimitEnabled===void 0?rA0:K.rateLimitEnabled===!0,rateLimitWindow:W,rateLimitMax:H}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:rA0,rateLimitWindow:a$4,rateLimitMax:oA0}}async function t$4(Y,Q,X){let J=X==="minute"?60000:3600000,G=new Date(Date.now()-J).toISOString(),K=await Y.selectFrom("private_registry_publish_request").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",Q).where("created_at",">=",G).executeTakeFirst();return Number(K?.count??0)}async function e$4(Y,Q,X,J){let G=await Y.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Q).where((K)=>K.or([K("id","=",X),K("title","=",J)])).executeTakeFirst();return G?{id:String(G.id),title:String(G.title)}:null}function UK1(Y,Q){let{db:X,db:J}=Q,G=new nC(J),K=new iC(J);Y.post("/org/:orgRef/registry/publish-request",async(W)=>{let Z=W.req.param("orgRef"),H=await o$4(X,Z);if(!H)return W.json({error:"Organization not found"},404);let F=await s$4(X,H);if(!F.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if(F.requireApiToken){let z=W.req.header("Authorization"),O=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!O)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await K.validate(H,O))return W.json({error:"Invalid API key"},401)}if(F.rateLimitEnabled){if(await t$4(J,H,F.rateLimitWindow)>=F.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:F.rateLimitWindow==="minute"?60:3600},429)}let $;try{$=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let V=mA0.safeParse($);if(!V.success)return W.json({error:"Invalid publish request payload",details:q.treeifyError(V.error)},400);let B=await e$4(J,H,V.data.data.id,V.data.data.title);if(B)return W.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:B},409);let U=await G.createOrUpdate({organization_id:H,requested_id:V.data.data.id,title:V.data.data.title,description:V.data.data.description??null,_meta:V.data.data._meta,server:V.data.data.server,requester_name:V.data.requester?.name??null,requester_email:V.data.requester?.email??null});try{await r$4({db:X,organizationId:H,request:U})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return W.json({id:U.id,requested_id:U.requested_id,status:U.status},201)})}var rA0=!0,a$4="hour",oA0=100;var sA0=S(()=>{zY();y1();jB();qK1();BK1();v9()});var tA0=S(()=>{cA0();sA0()});function eA0(Y){zK1=Y}function Y6(){if(!zK1)throw Error(`Plugin storage not initialized. Make sure the "${_Z}" plugin is enabled.`);return zK1}async function YV4(Y){if(!Y.organization)throw Error("Organization context required");return await Y.access.check(),Y}function N6(Y,Q){return async(X,J)=>{let G=await YV4(J);return Q(X,G)}}function QV4(Y){if(!Y)return{};if(typeof Y==="string")try{return JSON.parse(Y)}catch{return{}}if(typeof Y==="object")return Y;return{}}async function aC(Y,Q){let J=(await Y.db.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",_Z).execute()).map((K)=>QV4(K.settings)),G={acceptPublishRequests:J.some((K)=>K.acceptPublishRequests===!0),requireApiToken:J.some((K)=>K.requireApiToken===!0),storePrivateOnly:J.some((K)=>K.storePrivateOnly===!0)};if(G.acceptPublishRequests||G.requireApiToken||G.storePrivateOnly)return G;for(let K of J)if(Object.keys(K).length>0)return K;return{}}var zK1=null;var X8=S(()=>{jB()});import{randomUUID as YP0}from"crypto";function QP0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class DK1{db;constructor(Y){this.db=Y}async create(Y){let Q=YP0(),X=new Date().toISOString(),J={id:Q,organization_id:Y.organization_id,status:Y.status??"pending",config_snapshot:Y.config_snapshot?JSON.stringify(Y.config_snapshot):null,total_items:Y.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:Y.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error(`Failed to create monitor run ${Q}`);return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserializeRun(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_monitor_run").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Q.limit??24).offset(Q.offset??0).execute()).map((Z)=>this.deserializeRun(Z)),totalCount:K}}async update(Y,Q,X){let J={};if(X.total_items!==void 0)J.total_items=X.total_items;if(X.status!==void 0)J.status=X.status;if(X.tested_items!==void 0)J.tested_items=X.tested_items;if(X.passed_items!==void 0)J.passed_items=X.passed_items;if(X.failed_items!==void 0)J.failed_items=X.failed_items;if(X.skipped_items!==void 0)J.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)J.current_item_id=X.current_item_id;if(X.started_at!==void 0)J.started_at=X.started_at;if(X.finished_at!==void 0)J.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor run not found: ${Q}`);return G}deserializeRun(Y){return{id:Y.id,organization_id:Y.organization_id,status:Y.status,config_snapshot:QP0(Y.config_snapshot,null),total_items:Number(Y.total_items??0),tested_items:Number(Y.tested_items??0),passed_items:Number(Y.passed_items??0),failed_items:Number(Y.failed_items??0),skipped_items:Number(Y.skipped_items??0),current_item_id:Y.current_item_id,started_at:Y.started_at,finished_at:Y.finished_at,created_at:Y.created_at}}}class OK1{db;constructor(Y){this.db=Y}async create(Y){let Q=YP0(),X=new Date().toISOString(),J={id:Q,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message??null,connection_ok:Y.connection_ok?1:0,tools_listed:Y.tools_listed?1:0,tool_results:Y.tool_results?JSON.stringify(Y.tool_results):null,agent_summary:Y.agent_summary??null,duration_ms:Y.duration_ms??0,action_taken:Y.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error("Failed to create test result");return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async listByRun(Y,Q,X={}){let J=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("run_id","=",Q),G=this.db.selectFrom("private_registry_monitor_result").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",Y).where("run_id","=",Q);if(X.status)J=J.where("status","=",X.status),G=G.where("status","=",X.status);let K=await G.executeTakeFirst(),W=Number(K?.count??0);return{items:(await J.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:W}}async update(Y,Q,X){let J={};if(X.status!==void 0)J.status=X.status;if(X.error_message!==void 0)J.error_message=X.error_message;if(X.connection_ok!==void 0)J.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)J.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)J.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)J.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)J.duration_ms=X.duration_ms;if(X.action_taken!==void 0)J.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor result not found: ${Q}`);return G}deserialize(Y){return{id:Y.id,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message,connection_ok:Y.connection_ok===1,tools_listed:Y.tools_listed===1,tool_results:QP0(Y.tool_results,[]),agent_summary:Y.agent_summary,duration_ms:Number(Y.duration_ms??0),action_taken:Y.action_taken,tested_at:Y.tested_at}}}var XP0=()=>{};import{randomUUID as XV4}from"crypto";class LK1{db;constructor(Y){this.db=Y}async findByItemId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("item_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("connection_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async upsert(Y){let Q=await this.findByItemId(Y.organization_id,Y.item_id),X=new Date().toISOString();if(!Q){let G={id:XV4(),organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(G).execute()}else{let G={connection_id:Y.connection_id,auth_status:Y.auth_status??Q.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(G).where("organization_id","=",Y.organization_id).where("item_id","=",Y.item_id).execute()}let J=await this.findByItemId(Y.organization_id,Y.item_id);if(!J)throw Error("Failed to save monitor connection");return J}async updateAuthStatus(Y,Q,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",Y).where("item_id","=",Q).execute(),this.findByItemId(Y,Q)}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status,created_at:Y.created_at,updated_at:Y.updated_at}}}var JP0=()=>{};function GP0(Y){let Q=Y.db,X={items:new pC(Q),publishRequests:new nC(Q),publishApiKeys:new iC(Q),monitorRuns:new DK1(Q),monitorResults:new OK1(Q),monitorConnections:new LK1(Q)};return eA0(X),X}var WP0=S(()=>{X8();QK1();qK1();BK1();XP0();JP0()});var ZP0;var KP0=S(()=>{v9();X8();ZP0={name:"REGISTRY_ITEM_BULK_CREATE",description:"Create many private registry items at once",inputSchema:GK1,outputSchema:jA0,handler:N6(GK1,async(Y,Q)=>{let X=Y6(),J=[],G=0;for(let K of Y.items)try{await X.items.create({...K,organization_id:Q.organization.id,created_by:Q.auth.user?.id??null}),G+=1}catch(W){J.push({id:K.id,error:W instanceof Error?W.message:"Unknown error"})}return{created:G,errors:J}})}});function JV4(Y){return Array.from(new Set(Y.map((Q)=>Q.trim().toLowerCase()).filter((Q)=>Q.length>0)))}function GV4(Y){let X=Y.structuredContent?.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1215
1215
|
`).trim();if(X)return X;return Y.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1216
1216
|
`).trim()??""}function WV4(Y){let Q=Y.context,X=JSON.stringify({name:Q.name??"",provider:Q.provider??"",url:Q.url??"",owner:Q.owner??"",repositoryUrl:Q.repositoryUrl??"",description:Q.description??"",shortDescription:Q.shortDescription??"",tags:Q.tags??[],categories:Q.categories??[],availableTags:Q.availableTags??[],availableCategories:Q.availableCategories??[],tools:Q.tools??[]},null,2);if(Y.type==="description")return{system:"You are an assistant that writes concise MCP registry descriptions.",user:`Use the context below to write a clear English description for this MCP server.
|
|
1217
1217
|
Rules:
|
|
@@ -1467,8 +1467,8 @@ ${Y.stack}`;return Q}if(typeof Y==="object"&&Y!==null){let Q=Y,X="";if(typeof Q.
|
|
|
1467
1467
|
${Q.stack}`;return X}try{let G=JSON.stringify(Q,null,2);if(G!=="{}"&&G.length<1000){if(typeof Q.stack==="string"&&Q.stack&&Q.stack.length<2000)return`${G}
|
|
1468
1468
|
|
|
1469
1469
|
Stack trace:
|
|
1470
|
-
${Q.stack}`;return G}}catch{}if(typeof Q.toString==="function")try{let G=Q.toString();if(G!=="[object Object]")return G}catch{}let J=Object.keys(Q);if(J.length>0)return`Object with keys: ${J.join(", ")}`;return"[object Object]"}if(typeof Y==="string")return Y;if(typeof Y==="number"||typeof Y==="boolean")return String(Y);if(typeof Y==="function")return`[Function: ${Y.name||"anon"}]`;if(typeof Y==="symbol")return Y.toString();if(typeof Y==="bigint")return Y.toString();try{return String(Y)}catch{return"Unknown value (could not convert to string)"}}function hN(Y,Q){switch(typeof Q){case"string":return Y.newString(Q);case"number":return Y.newNumber(Q);case"boolean":return Q?Y.true:Y.false;case"undefined":return Y.undefined;case"object":{if(Q===null)return Y.null;if(Array.isArray(Q)){let J=Y.newArray();return Q.forEach((G,K)=>{let W=hN(Y,G);try{Y.setProp(J,String(K),W)}finally{W.dispose?.()}}),J}let X=Y.newObject();for(let[J,G]of Object.entries(Q)){let K=hN(Y,G);try{Y.setProp(X,J,K)}finally{K.dispose?.()}}return X}case"function":{let X=`__hostFn_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return Y.newFunction(X,(...G)=>{try{let K=G.map((Z)=>Y.dump(Z)),W=Q(...K);if(W&&typeof W.then==="function"){let Z=Y.newPromise();return W.then((H)=>{try{let F=hN(Y,H);Z.resolve(F),F.dispose()}catch(F){let $=bN(F),V=Y.newString(`Promise resolution error: ${$}`);Z.reject(V),V.dispose()}finally{Y.runtime.executePendingJobs()}}).catch((H)=>{let F=bN(H),$=Y.newString(`Promise rejection: ${F}`);Z.reject($),$.dispose(),Y.runtime.executePendingJobs()}),Z.handle}return hN(Y,W)}catch(K){let W=bN(K);return Y.newString(`HostFunctionError: ${W}`)}finally{G.forEach((K)=>K.dispose())}})}case"bigint":return Y.newString(Q.toString());case"symbol":return Y.newString(Q.toString());default:try{return Y.newString(String(Q))}catch{return Y.undefined}}}var cy0=()=>{};function iy0(Y){let Q=Y.runtime.executePendingJobs(100);try{if("unwrap"in Q&&typeof Q.unwrap==="function")Q.unwrap()}finally{if("dispose"in Q&&typeof Q.dispose==="function")Q.dispose()}}async function ny0(Y,Q,X){let J=Date.now(),G=Y.resolvePromise(Q);while(!0){iy0(Y);let K=await Promise.race([G,b24(0).then(()=>null)]);if(K!==null)return K;if(Date.now()-J>X)throw Error(`Timed out after ${X}ms while awaiting a QuickJS promise`)}}async function sR({tools:Y,code:Q,timeoutMs:X}){let W=[];try{const J=VI(W,await dy0({memoryLimitBytes:33554432,stackSizeBytes:524288}),0);const G=VI(W,J.newContext({interruptAfterMs:X}),0);const K=VI(W,gy0(G),0);try{let $=G.evalCode(Q,"index.mjs",{strip:!0,strict:!0,type:"module"}),V=G.unwrapResult($),B=hN(G,Y);G.setProp(G.global,"tools",B);let U=G.runtime.hasPendingJob()?G.unwrapResult(await ny0(G,V,X)):V;if(U!==V)V.dispose();let z=G.getProp(U,"default"),O=G.typeof(z);if(O!=="function")return z.dispose(),U.dispose(),B.dispose(),{error:`Code must export default a function (tools). Got ${O}. Example: export default async (tools) => { /* ... */ }`,consoleLogs:K.logs};let M=G.callFunction(z,G.undefined,B);B.dispose(),z.dispose(),U.dispose();let w=G.unwrapResult(M),P=await ny0(G,w,X);w.dispose();let j=G.unwrapResult(P);if(G.runtime.hasPendingJob())iy0(G);let C=G.dump(j);return j.dispose(),{returnValue:C,consoleLogs:K.logs}}catch($){return console.log($),{error:bN($),consoleLogs:K.logs}}}catch(Z){var H=Z,F=1}finally{uV1(W,H,F)}}var b24=(Y)=>new Promise((Q)=>setTimeout(Q,Y));var ay0=S(()=>{py0();cy0()});var J$1=S(()=>{ay0()});async function h24(Y,Q){let X=Y.connections.map((K)=>K.connection_id),J=[];for(let K of X){let W=await Q.storage.connections.findById(K);if(W&&W.status==="active")J.push(W)}return J.map((K)=>{let W=Y.connections.find((Z)=>Z.connection_id===K.id);return{connection:K,selectedTools:W?.selected_tools??null,selectedResources:W?.selected_resources??null,selectedPrompts:W?.selected_prompts??null}})}async function ry0(Y,Q){return(await Q.storage.connections.list(Y)).filter((J)=>J.status==="active").map((J)=>({connection:J,selectedTools:null,selectedResources:null,selectedPrompts:null}))}async function x24(Y,Q){let X=new Map;for(let B of Y)X.set(B.connection.id,B);let J=Y.map((B)=>B.connection),G=new Map,K=await Promise.allSettled(J.map(async(B)=>{try{let U=await Q.createMCPProxy(B);return{connection:B,proxy:U}}catch(U){return console.warn(`[code-execution] Failed to create proxy for connection ${B.id}:`,U),null}}));for(let B of K)if(B.status==="fulfilled"&&B.value)G.set(B.value.connection.id,B.value);let W=await Promise.allSettled(Array.from(G.entries()).map(async([B,U])=>{try{let O=(await U.proxy.listTools()).tools,M=X.get(B);if(M?.selectedTools&&M.selectedTools.length>0){let w=new Set(M.selectedTools);O=O.filter((P)=>w.has(P.name))}return{connectionId:B,connectionTitle:U.connection.title,tools:O}}catch(z){return console.error(`[code-execution] Failed to list tools for connection ${B}:`,z),null}})),Z=new Set,H=[],F=new Map;for(let B of W){if(B.status!=="fulfilled"||!B.value)continue;let{connectionId:U,connectionTitle:z,tools:O}=B.value;for(let M of O){if(Z.has(M.name))continue;Z.add(M.name),H.push({...M,_meta:{connectionId:U,connectionTitle:z}}),F.set(M.name,U)}}let $=async(B,U)=>{let z=F.get(B);if(!z)return{content:[{type:"text",text:`Tool not found: ${B}`}],isError:!0};let O=G.get(z);if(!O)return{content:[{type:"text",text:`Connection not found for tool: ${B}`}],isError:!0};return await O.proxy.callTool({name:B,arguments:U})},V=[];for(let[,B]of G)V.push(B.proxy.close().catch(()=>{}));return await Promise.all(V),{tools:H,callTool:$}}async function xN(Y){let Q=B0(Y),X;if(Y.connectionId){let J=await Y.storage.virtualMcps.findById(Y.connectionId,Y.organization?.id);if(J)X=await h24(J,Y);else X=await ry0(Q.id,Y)}else X=await ry0(Q.id,Y);return x24(X,Y)}function g24(Y){return Y.toLowerCase().split(/[\s_\-./]+/).filter((Q)=>Q.length>=2)}function u24(Y,Q){let X=0,J=Q.name.toLowerCase(),G=(Q.description??"").toLowerCase(),K=(Q._meta?.connectionTitle??"").toLowerCase();for(let W of Y){if(J===W)X+=10;else if(J.includes(W))X+=3;if(G.includes(W))X+=2;if(K.includes(W))X+=1}return X}function $p(Y,Q,X){let J=g24(Y);if(J.length===0)return Q.slice(0,X);return Q.map((G)=>({tool:G,score:u24(J,G)})).filter((G)=>G.score>0).sort((G,K)=>K.score-G.score).slice(0,X).map((G)=>G.tool)}function Vp(Y,Q){let X=new Map(Q.map((G)=>[G.name,G]));return{tools:Y.map((G)=>X.get(G)).filter((G)=>G!==void 0).map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??"",inputSchema:G.inputSchema,outputSchema:G.outputSchema})),notFound:Y.filter((G)=>!X.has(G))}}async function qp(Y,Q,X){let J=Object.fromEntries(Q.tools.map((G)=>[G.name,async(K)=>{let W=await Q.callTool(G.name,K??{});if(W.structuredContent&&typeof W.structuredContent==="object")return W.structuredContent;let Z=W.content;if(Z?.[0]?.type==="text"&&Z[0].text)try{return JSON.parse(Z[0].text)}catch{return Z[0].text}return W}]));return sR({code:Y,tools:J,timeoutMs:X})}function tR(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}function M$(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}],isError:!0}}function m3(Y){let Q=new Set(m24);return Y.filter((X)=>!Q.has(X.name))}var m24;var WU=S(()=>{J$1();m24=["CODE_EXECUTION_SEARCH_TOOLS","CODE_EXECUTION_DESCRIBE_TOOLS","CODE_EXECUTION_RUN_CODE"]});var G$1;var oy0=S(()=>{k0();oR();WU();G$1=v1({name:"CODE_EXECUTION_SEARCH_TOOLS",description:"Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling CODE_EXECUTION_DESCRIBE_TOOLS for detailed schemas.",annotations:{title:"Search Tools",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ky0,outputSchema:yy0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q),J=$p(Y.query,X.tools,Y.limit);return{query:Y.query,results:J.map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??""})),totalAvailable:X.tools.length}}})});var W$1;var sy0=S(()=>{k0();oR();WU();W$1=v1({name:"CODE_EXECUTION_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after CODE_EXECUTION_SEARCH_TOOLS to get full input/output schemas before executing code.",annotations:{title:"Describe Tools",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:fy0,outputSchema:by0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q);return Vp(Y.tools,X.tools)}})});var Z$1;var ty0=S(()=>{k0();oR();WU();Z$1=v1({name:"CODE_EXECUTION_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use CODE_EXECUTION_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',annotations:{title:"Run Code",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:hy0,outputSchema:xy0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q);return await qp(Y.code,X,Y.timeoutMs)}})});var ey0=S(()=>{oy0();sy0();ty0();oR()});var d24,p24,K$1;var Yf0=S(()=>{zY();y1();k0();dm();L3();d24=q.object({data:CA.describe("Data for the new connection (id is auto-generated if not provided)")}),p24=q.object({item:P5.describe("The created connection entity")}),K$1=v1({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection in the organization",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:d24,outputSchema:p24,handler:async(Y,Q)=>{o1(Q);let X=B0(Q);await Q.access.check();let J=D9(Q);if(!J)throw Error("User ID required to create connection");let G={...Y.data,organization_id:X.id,created_by:J};if(G.connection_type==="VIRTUAL"){let F=LV(G.connection_url);if(!F)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let $=await Q.storage.virtualMcps.findById(F);if(!$)throw Error(`Virtual MCP not found: ${F}`);if($.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");G.connection_url=NV(F)}let K=await iL({id:`pending-${Date.now()}`,title:G.title,connection_type:G.connection_type,connection_url:G.connection_url,connection_token:G.connection_token,connection_headers:G.connection_headers}).catch(()=>null),W=K?.tools?.length?K.tools:null,Z=K?.scopes?.length?K.scopes:null,H=await Q.storage.connections.create({...G,tools:W,configuration_scopes:Z});return await Q.eventBus.publish(X.id,h9.SELF(X.id),{type:"connection.created",data:H}),{item:H}}})});var c24,n24,Qf0;var Xf0=S(()=>{y1();gX();c24=yZ.extend({avatar:q.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:q.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:q.string().describe("Virtual MCP ID to use for this assistant"),model:q.object({id:q.string().describe("Model ID"),connectionId:q.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),n24=fZ("assistant",c24),Qf0=[...n24]});var eR,l3,Gf0,i24,a24,Wf0,r24,o24,s24,t24,e24,YE4,Zf0,QE4,XE4,JE4,GE4,WE4,ZE4,KE4,HE4,FE4,$E4,in8,VE4,an8,Jf0,qE4,BE4,H$1,rn8;var Kf0=S(()=>{y1();_B();gX();eR=q.lazy(()=>q.union([q.null(),q.string(),q.number(),q.boolean(),q.record(q.string(),eR),q.array(eR)])),l3=q.record(q.string(),q.record(q.string(),eR)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),Gf0=q.object({type:q.literal("text"),text:q.string().describe("The text content"),providerOptions:l3}),i24=q.object({type:q.literal("text"),text:q.string().describe("The text content"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),a24=q.string().describe("File data as URL string"),Wf0=q.object({type:q.literal("file"),filename:q.string().optional().describe("Optional filename of the file"),data:a24,mediaType:q.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:l3}),r24=q.object({type:q.literal("file"),mediaType:q.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:q.string().describe("Generated file data as base64 encoded string")}),o24=q.object({type:q.literal("reasoning"),text:q.string().describe("The reasoning text"),providerOptions:l3}),s24=q.object({type:q.literal("reasoning"),text:q.string().describe("The reasoning text"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),t24=q.object({type:q.literal("tool-call"),toolCallId:q.string().describe("ID of the tool call, used to match with tool result"),toolName:q.string().describe("Name of the tool being called"),input:q.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:q.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:l3}),e24=q.object({type:q.literal("tool-call"),toolCallId:q.string().describe("ID of the tool call"),toolName:q.string().describe("Name of the tool being called"),input:q.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:q.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),YE4=q.union([q.object({type:q.literal("text"),value:q.string()}),q.object({type:q.literal("json"),value:eR}),q.object({type:q.literal("error-text"),value:q.string()}),q.object({type:q.literal("error-json"),value:eR}),q.object({type:q.literal("content"),value:q.array(q.union([q.object({type:q.literal("text"),text:q.string().describe("Text content")}),q.object({type:q.literal("media"),data:q.string().describe("Base-64 encoded media data"),mediaType:q.string().describe("IANA media type")})]))}),q.object({type:q.literal("execution-denied"),reason:q.string().optional()}),q.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),Zf0=q.object({type:q.literal("tool-result"),toolCallId:q.string().describe("ID of the tool call that this result is associated with"),toolName:q.string().describe("Name of the tool that generated this result"),output:YE4.describe("Result of the tool call"),result:q.unknown().describe("Unknown result of the tool call"),providerOptions:l3}),QE4=q.object({type:q.literal("tool-result"),toolCallId:q.string().describe("ID of the tool call that this result is associated with"),toolName:q.string().describe("Name of the tool that generated this result"),result:q.any().describe("Result of the tool call (JSON-serializable)"),isError:q.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:q.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),XE4=q.union([q.object({type:q.literal("source"),sourceType:q.literal("url"),id:q.string().describe("The ID of the source"),url:q.string().describe("The URL of the source"),title:q.string().optional().describe("The title of the source"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),q.object({type:q.literal("source"),sourceType:q.literal("document"),id:q.string().describe("The ID of the source"),mediaType:q.string().describe("IANA media type of the document (e.g., application/pdf)"),title:q.string().describe("The title of the document"),filename:q.string().optional().describe("Optional filename of the document"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")})]),JE4=q.object({role:q.literal("system"),content:q.string().describe("System message content"),providerOptions:l3}),GE4=q.object({role:q.literal("user"),content:q.array(q.union([Gf0,Wf0])).describe("User message content parts (text or file)"),providerOptions:l3}),WE4=q.object({role:q.literal("assistant"),content:q.array(q.union([Gf0,Wf0,o24,t24,Zf0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:l3}),ZE4=q.object({role:q.literal("tool"),content:q.array(Zf0).describe("Tool message content (tool results)"),providerOptions:l3}),KE4=q.union([JE4,GE4,WE4,ZE4]),HE4=q.array(KE4).describe("A list of messages forming the prompt"),FE4=q.object({prompt:HE4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:q.number().optional().describe("Maximum number of tokens to generate"),temperature:q.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:q.number().optional().describe("Nucleus sampling parameter"),topK:q.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:q.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:q.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:q.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:q.array(q.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:q.union([q.object({type:q.literal("text")}),q.object({type:q.literal("json"),schema:q.any().optional().describe("JSON schema that the generated output should conform to"),name:q.string().optional().describe("Name of output that should be generated"),description:q.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:q.array(q.any()).optional().describe("The tools that are available for the model"),toolChoice:q.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:q.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:q.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:q.any().optional().describe("Additional provider-specific options")}),$E4=q.object({content:q.array(q.union([i24,r24,s24,e24,QE4,XE4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:q.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:q.looseObject({inputTokens:q.number().optional(),outputTokens:q.number().optional(),totalTokens:q.number().optional(),reasoningTokens:q.number().optional()}).describe("Usage information for the language model call"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata"),request:q.object({body:q.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:q.object({id:q.string().optional().describe("ID for the generated response"),timestamp:q.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:q.string().optional().describe("The ID of the response model that was used"),headers:q.record(q.string(),q.string()).optional().describe("Response headers"),body:q.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:q.array(q.any()).describe("Warnings for the call, e.g. unsupported settings")}),in8=q.object({stream:q.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:q.object({body:q.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:q.object({headers:q.record(q.string(),q.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),VE4=q.object({supportedUrls:q.record(q.string(),q.array(q.string())).describe("Supported URL patterns by media type for the provider")}),an8=q.object({modelId:q.string().describe("The ID of the model"),logo:q.string().nullable(),description:q.string().nullable(),capabilities:q.array(q.string()),limits:q.object({contextWindow:q.number(),maxOutputTokens:q.number()}).nullable(),costs:q.object({input:q.number(),output:q.number()}).nullable(),provider:q.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),Jf0=q.object({modelId:q.string().describe("The ID of the model"),callOptions:FE4}),qE4=yZ.extend({logo:q.string().nullable(),description:q.string().nullable(),capabilities:q.array(q.string()),limits:q.object({contextWindow:q.number(),maxOutputTokens:q.number()}).nullable(),costs:q.object({input:q.number(),output:q.number()}).nullable(),provider:q.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),BE4=fZ("llm",qE4,{readOnly:!0}),H$1=[{name:"LLM_METADATA",inputSchema:q.object({modelId:q.string().describe("The ID of the model")}),outputSchema:VE4},{name:"LLM_DO_STREAM",inputSchema:Jf0,streamable:!0},{name:"LLM_DO_GENERATE",inputSchema:Jf0,outputSchema:$E4},...BE4],rn8=vZ(H$1)});function gN(){return!1}function Bp(Y,Q){return Y===h9.DEV_ASSETS(Q)}function uN(Y,Q){let X=Bt(Q,Y),J=new Date().toISOString();return{id:X.id??h9.DEV_ASSETS(Y),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:Y,created_by:"system",created_at:J,updated_at:J,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:UE4,bindings:["OBJECT_STORAGE"],status:"active"}}var UE4;var Up=S(()=>{em();zY();y1();UE4=uC.map((Y)=>({name:Y.name,description:`${Y.name} operation for local file storage`,inputSchema:q.toJSONSchema(Y.inputSchema),outputSchema:q.toJSONSchema(Y.outputSchema)}))});function DE4(Y){let Q=[],X=0;while(X<Y.length){let J=Y[X];if(J==="%")Q.push(".*");else if(J==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))Q.push("\\"+J);else Q.push(J);X++}return Q.join("")}function w$(Y){return typeof Y==="string"||typeof Y==="number"}function zp(Y,Q){if("conditions"in Q){let{operator:Z,conditions:H}=Q;switch(Z){case"and":return H.every((F)=>zp(Y,F));case"or":return H.some((F)=>zp(Y,F));case"not":return!H.every((F)=>zp(Y,F));default:return!0}}let{field:X,operator:J,value:G}=Q,K=X.join("."),W=F$1(Y,K);switch(J){case"eq":return W===G;case"gt":return w$(W)&&w$(G)&&W>G;case"gte":return w$(W)&&w$(G)&&W>=G;case"lt":return w$(W)&&w$(G)&&W<G;case"lte":return w$(W)&&w$(G)&&W<=G;case"in":return Array.isArray(G)&&G.includes(W);case"like":if(typeof W!=="string"||typeof G!=="string")return!1;if(G.length>100)return!1;let Z=DE4(G);return new RegExp(`^${Z}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function F$1(Y,Q){let X=Q.split("."),J=Y;for(let G of X){if(J==null||typeof J!=="object")return;J=J[G]}return J}function OE4(Y,Q){return[...Y].sort((X,J)=>{for(let G of Q){let K=G.field.join("."),W=F$1(X,K),Z=F$1(J,K),H=0;if(W==null&&Z==null)continue;if(W==null)H=G.nulls==="first"?-1:1;else if(Z==null)H=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof Z==="string")H=W.localeCompare(Z);else if(typeof W==="number"&&typeof Z==="number")H=W-Z;else H=String(W).localeCompare(String(Z));if(H!==0)return G.direction==="desc"?-H:H}return 0})}var zE4,LE4,NE4,$$1;var Hf0=S(()=>{Yl();Xf0();gX();Kf0();em();zY();y1();k0();Up();L3();zE4={LLM:H$1,ASSISTANTS:Qf0,OBJECT_STORAGE:uC};LE4=dG.extend({binding:q.union([q.object({}).passthrough(),q.string()]).optional(),include_virtual:q.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false.")}),NE4=M3(P5),$$1=v1({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LE4,outputSchema:NE4,handler:async(Y,Q)=>{await Q.access.check();let X=B0(Q),J=Y.binding?typeof Y.binding==="string"?(()=>{let B=zE4[Y.binding.toUpperCase()];if(!B)throw Error(`Unknown binding: ${Y.binding}`);return B})():Y.binding:void 0,G=J?rm(J):void 0,K=await Q.storage.connections.list(X.id,{includeVirtual:Y.include_virtual??!1});if(gN()){let B=AG(),U=h9.DEV_ASSETS(X.id);if(!K.some((z)=>z.id===U)){let z=uN(X.id,B);K.unshift(z)}}let W=G?await Promise.all(K.map(async(B)=>{if(!B.tools||B.tools.length===0)return null;return G.isImplementedBy(B.tools.map((z)=>({name:z.name,inputSchema:z.inputSchema,outputSchema:z.outputSchema})))?B:null})).then((B)=>B.filter((U)=>U!==null)):K;if(Y.where)W=W.filter((B)=>zp(B,Y.where));if(Y.orderBy&&Y.orderBy.length>0)W=OE4(W,Y.orderBy);let Z=W.length,H=Y.offset??0,F=Y.limit??100,$=W.slice(H,H+F),V=H+F<Z;return{items:$,totalCount:Z,hasMore:V}}})});var ME4,V$1;var Ff0=S(()=>{gX();k0();Up();L3();ME4=TC(P5),V$1=v1({name:"COLLECTION_CONNECTIONS_GET",description:"Get connection details by ID",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:EC,outputSchema:ME4,handler:async(Y,Q)=>{let X=B0(Q);if(await Q.access.check(),gN()&&Bp(Y.id,X.id))return{item:uN(X.id,AG())};let J=await Q.storage.connections.findById(Y.id);if(!J||J.organization_id!==X.id)return{item:null};return{item:J}}})});var Dp=(Y,Q)=>{if(Q===null||Q===void 0)return;let X=Y.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),J=Q;for(let G of X){if(J===null||J===void 0||typeof J!=="object")return;J=J[G]}return J};function $f0(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])throw Error(`Invalid scope format: ${Y}. Expected format: "KEY::SCOPE"`);return Q}function wE4(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])return null;return Q}function AE4(Y){if(typeof Y==="object"&&Y!==null&&"value"in Y){let Q=Y.value;if(typeof Q==="string")return Q}return null}function q$1(Y,Q){let X={};if(!Y||!Q)return X;for(let J of Q){if(J==="*"){X["*"]=["*"];continue}let G=wE4(J);if(!G)continue;let[K,W]=G,Z=Dp(K,Y),H=AE4(Z);if(H){if(!X[H])X[H]=[];X[H].push(W)}}return X}function Vf0(Y,Q){let X=q$1(Y,Q);return new Set(Object.keys(X).filter((J)=>J!=="*"))}var B$1=()=>{};import{randomBytes as PE4}from"crypto";function EE4(){if(YI)return YI;let Y=process.env.MESH_JWT_SECRET??t9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)YI=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),YI=new Uint8Array(PE4(32));return YI}async function qf0(Y,Q="5m"){let X=EE4();return await new DX(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Q).sign(X)}var YI=null;var Bf0=S(()=>{OX();Op()});async function Uf0(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let Q=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)Q.set("client_secret",Y.clientSecret);if(Y.scope)Q.set("scope",Y.scope);let X=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Q.toString()});if(!X.ok){let G=await X.text();console.error(`[TokenRefresh] Failed to refresh token: ${X.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${X.status}`}}catch{return{success:!1,error:`Token refresh failed: ${X.status}`}}}let J=await X.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(Q){return console.error("[TokenRefresh] Error refreshing token:",Q),{success:!1,error:Q instanceof Error?Q.message:"Token refresh failed"}}}class QI{db;vault;constructor(Y,Q){this.db=Y;this.vault=Q}async get(Y){let Q=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",Y).executeTakeFirst();if(!Q)return null;return this.decryptToken(Q)}async upsert(Y){let Q=new Date().toISOString(),X=await this.vault.encrypt(Y.accessToken),J=Y.refreshToken?await this.vault.encrypt(Y.refreshToken):null,G=Y.clientSecret?await this.vault.encrypt(Y.clientSecret):null;return await this.db.transaction().execute(async(K)=>{let W=await K.selectFrom("downstream_tokens").select(["id","createdAt"]).where("connectionId","=",Y.connectionId).executeTakeFirst();if(W)return await K.updateTable("downstream_tokens").set({accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,updatedAt:Q}).where("id","=",W.id).execute(),{id:W.id,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:W.createdAt,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint};let Z=Y$("dtok");return await K.insertInto("downstream_tokens").values({id:Z,connectionId:Y.connectionId,accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,createdAt:Q,updatedAt:Q}).execute(),{id:Z,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Q,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint}})}async delete(Y){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",Y).execute()}isExpired(Y,Q=0){if(!Y.expiresAt)return!1;let J=(Y.expiresAt instanceof Date?Y.expiresAt:new Date(Y.expiresAt)).getTime();if(Number.isNaN(J))return!0;return J-Q<Date.now()}async decryptToken(Y){let Q=await this.vault.decrypt(Y.accessToken),X=Y.refreshToken?await this.vault.decrypt(Y.refreshToken):null,J=Y.clientSecret?await this.vault.decrypt(Y.clientSecret):null;return{id:Y.id,connectionId:Y.connectionId,accessToken:Q,refreshToken:X,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Y.createdAt,updatedAt:Y.updatedAt,clientId:Y.clientId,clientSecret:J,tokenEndpoint:Y.tokenEndpoint}}}var U$1=S(()=>{DC()});async function XI(Y,Q,X){let J=Y.id,G=q$1(Y.configuration_state,Y.configuration_scopes);console.log("[EventBus:Debug] buildRequestHeaders",{connectionId:J,superUser:X,ctxUserId:Q.auth.user?.id?.slice(0,8)??"NONE",orgId:Q.organization?.id??"NONE",createdBy:Y.created_by?.slice(0,8)??"NONE",permissionKeys:Object.keys(G),permissionDetail:Object.entries(G).map(([U,z])=>`${U}:[${z.join(",")}]`)});let K=Q.auth.user?.id??Q.auth.apiKey?.userId??(X?Y.created_by:void 0),[W,Z]=K?await qf0({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:Q.baseUrl,connectionId:J,organizationId:Q.organization?.id},permissions:G}).then((U)=>[U,null]).catch((U)=>[null,U]):[null,Error("User ID required to issue configuration token")];if(console.log("[EventBus:Debug] token issued",{connectionId:J,hasToken:!!W,error:Z instanceof Error?Z.message:void 0,userId:K?.slice(0,8)??"NONE",orgInMetadata:Q.organization?.id??"NONE"}),Z)console.error("Failed to issue configuration token:",W);let H=Q.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Q.metadata.wellKnownForwardableHeaders??{},"x-request-id":Q.metadata.requestId},$=null,V=new QI(Q.db,Q.vault),B=await V.get(J);if(console.log("[EventBus:Debug] downstream token",{connectionId:J,hasCachedToken:!!B,hasRefresh:!!B?.refreshToken,expiresAt:B?.expiresAt??"NONE",hasConnectionToken:!!Y.connection_token}),B){let U=!!B.refreshToken&&!!B.tokenEndpoint;if(V.isExpired(B,U?300000:0))if(U){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let O=await Uf0(B);if(O.success&&O.accessToken)await V.upsert({connectionId:J,accessToken:O.accessToken,refreshToken:O.refreshToken??B.refreshToken,scope:O.scope??B.scope,expiresAt:O.expiresIn?new Date(Date.now()+O.expiresIn*1000):null,clientId:B.clientId,clientSecret:B.clientSecret,tokenEndpoint:B.tokenEndpoint}),$=O.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await V.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${O.error}`)}else await V.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else $=B.accessToken}if(!$&&Y.connection_token)$=Y.connection_token;if($)F.Authorization=`Bearer ${$}`;if(W)F["x-mesh-token"]=W;return F}var z$1=S(()=>{B$1();Bf0();U$1()});function zf0(){let Y=new Map;function Q(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;console.log(`[ClientPool] Creating new client for ${G}`);let W=new sX({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(Q,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var Df0=S(()=>{Pz()});function Of0(Y){let Q=new wC({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),X=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return Q.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${X}]\x1B[0m`)}),Q}var Lf0=S(()=>{uZ1()});class JI{innerTransport;constructor(Y){this.innerTransport=Y}async start(){return this.innerTransport.onmessage=(Y)=>{this.handleIncomingMessage(Y)},this.innerTransport.onerror=(Y)=>{this.onerror?.(Y)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(Y){return this.handleOutgoingMessage(Y)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(Y){return this.innerTransport.send(Y)}handleIncomingMessage(Y){this.onmessage?.(Y)}isRequest(Y){return"method"in Y&&Y.method!==void 0}isResponse(Y){return"result"in Y||"error"in Y&&!("method"in Y)}onmessage;onerror;onclose}function GI(Y,...Q){return Q.reduce((X,J)=>J(X),Y)}var Nf0="mcp.mesh";var Mf0,D$1,WI;var O$1=S(()=>{Mf0=class Mf0 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};D$1=class D$1 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};WI=class WI{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,Q,X,J,G,K="self",W){this.userId=Q;this.toolName=X;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new Mf0("Authentication required. Please provide a valid OAuth token or API key.")}let Q=Y.length>0?Y:this.toolName?[this.toolName]:[];if(Q.length===0)throw new D$1("No resources specified for access check");for(let X of Q)if(await this.checkResource(X)){this.grant();return}throw new D$1(`Access denied to: ${Q.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let Q={};if(this.connectionId)Q[this.connectionId]=[Y];return this.boundAuth.hasPermission(Q)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let X=Y[Nf0]?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}});var TE4="mcp.mesh",mN;var wf0=S(()=>{O$1();mN=class mN extends JI{options;cachedToolsMap=null;constructor(Y,Q){super(Y);this.options=Q;if(Q.connection.tools)this.cachedToolsMap=new Map(Q.connection.tools.map((X)=>[X.name,X]))}async handleOutgoingMessage(Y){if(!this.isRequest(Y))return this.innerTransport.send(Y);let Q=Y;if(Q.method==="tools/call")await this.authorizeToolCall(Q),this.stripMetaFromArguments(Q);return this.innerTransport.send(Y)}async authorizeToolCall(Y){if(this.options.superUser)return;let X=Y.params.name,{ctx:J,connection:G}=this.options;if(this.isPublicTool(X))return;if(!J.auth.user?.id&&!J.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let K=async()=>{return this.cachedToolsMap?.get(X)?._meta};await new WI(J.authInstance,J.auth.user?.id??J.auth.apiKey?.userId,X,J.boundAuth,J.auth.user?.role,G.id,K).check(X)}isPublicTool(Y){if(Y.startsWith("MESH_PUBLIC_"))return!0;if(!this.cachedToolsMap)return!1;let Q=this.cachedToolsMap.get(Y);if(!Q?._meta)return!1;return Q._meta[TE4]?.public_tool===!0}stripMetaFromArguments(Y){let Q=Y.params;if(Q.arguments&&"_meta"in Q.arguments){let{_meta:X,...J}=Q.arguments;Q.arguments=J}}}});function Pf0(Y){if(!Y.isError)return;let Q=Y.content;if(!Array.isArray(Q))return;for(let X of Q)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function N$1(Y){if(!Y)return;let Q=Y._meta;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let X=Q.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let J={};for(let[G,K]of Object.entries(X))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function M$1(Y,Q){if(!Y&&!Q)return;if(!Y)return Q;if(!Q)return Y;return{...Q,...Y}}function w$1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let Q=Y,X=Q.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return Q}return{value:Y}}async function CE4(Y,Q){let X=Y.body;if(!X)return{text:"",truncated:!1};let J=X.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>Q){K=!0;let $=Q-(W-H.byteLength);if($>0)Z.push(G.decode(H.slice(0,$),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}function RE4(Y){if(!Y)return;let Q=Y.trimEnd().split(`
|
|
1471
|
-
`);for(let X=Q.length-1;X>=0&&X>=Q.length-5;X--){let J=Q[X]?.trim();if(!J)continue;try{let G=JSON.parse(J);if(G&&typeof G==="object"&&G.type==="finish"){let K={};if(G.usage)K.usage=G.usage;if(G.providerMetadata)K.providerMetadata=G.providerMetadata;if(G.finishReason)K.finishReason=G.finishReason;return Object.keys(K).length>0?K:void 0}}catch{}}return}async function L$1(Y){let{ctx:Q,enabled:X}=Y,J=Y.organizationId??Q.organization?.id;if(!X||!J)return;if(OV(Y.connectionId))return;let G=N$1(Y.request.params.arguments),K=M$1(Q.metadata.properties,G),W=Q.auth.user?.id||Q.auth.apiKey?.userId;if(W)try{let Z=await Q.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await Q.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function Ef0(Y){let{ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),$=Q.organization?.id;if(X&&$){let V=F.clone();(async()=>{try{let{text:B,truncated:U}=await CE4(V,Af0),z=Date.now()-H,O=V.headers.get("content-type")??"",M=B;if(O.includes("application/json"))try{M=B.length?JSON.parse(B):null}catch{M=B}let w=F.status>=400,P=w&&M&&typeof M==="object"&&"error"in M?M.error:void 0,j=typeof P==="string"&&P?P:w&&typeof M==="string"&&M.trim()?M.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():U?`Response body truncated to ${Af0} bytes`:void 0,C=w$1(M),E=RE4(B);if(E)Object.assign(C,E);await L$1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:C,isError:w,errorMessage:j,durationMs:z})}catch(B){let U=Date.now()-H;await L$1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${B.message}`,durationMs:U})}})()}return F}catch(F){let $=F,V=Date.now()-H;throw await L$1({ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:$.message,durationMs:V}),F}}}var Af0=262144;var A$1=S(()=>{zY()});var lN;var Tf0=S(()=>{xh();A$1();lN=class lN extends JI{options;inflightRequests=new Map;constructor(Y,Q){super(Y);this.options=Q}async handleOutgoingMessage(Y){if(this.isRequest(Y)){let Q=Y;this.onRequestStart(Q)}return this.innerTransport.send(Y)}handleIncomingMessage(Y){if(this.isResponse(Y)){let Q=Y;this.onResponseEnd(Q)}this.onmessage?.(Y)}onRequestStart(Y){let{ctx:Q,connectionId:X}=this.options,J,G;if(Y.method==="tools/call"&&Y.params){let W=Y.params;J=W.name,G=W.arguments}let K;if(Y.method==="tools/call"&&J)K=Q.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":J,"request.id":Q.metadata.requestId,"jsonrpc.id":Y.id,"jsonrpc.method":Y.method}});if(Y.id!==null&&Y.id!==void 0)this.inflightRequests.set(Y.id,{startTime:Date.now(),method:Y.method,toolName:J,toolArguments:G,span:K})}onResponseEnd(Y){if(Y.id===null||Y.id===void 0)return;let Q=this.inflightRequests.get(Y.id);if(!Q)return;let{ctx:X,connectionId:J}=this.options,{startTime:G,method:K,toolName:W,toolArguments:Z,span:H}=Q,F=Date.now()-G;if(this.inflightRequests.delete(Y.id),K!=="tools/call"||!W)return;let $="error"in Y,V=$?Y.error:Y.result,B=$?{content:[{type:"text",text:Y.error?.message||"Unknown error"}],isError:!0}:V;if(X.meter.createHistogram("connection.proxy.duration").record(F,{"connection.id":J,"tool.name":W,status:$?"error":"success"}),$)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":J,"tool.name":W,error:Y.error?.message});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":J,"tool.name":W,status:"success"});if(H){if($&&Y.error)H.recordException(Error(Y.error.message)),H.setAttributes({error:!0,"error.code":Y.error.code,"error.message":Y.error.message});H.end()}this.logToDatabase({toolName:W,toolArguments:Z,result:B,duration:F,isError:Boolean($)})}async logToDatabase(Y){let{ctx:Q,connectionId:X,connectionTitle:J,virtualMcpId:G}=this.options,{toolName:K,toolArguments:W,result:Z,duration:H,isError:F}=Y;if(!hh().enabled)return;let V=Q.organization?.id;if(!V)return;let B=Pf0(Z),U=w$1(Z),z=N$1(W),O=M$1(Q.metadata.properties,z);try{await Q.storage.monitoring.log({organizationId:V,connectionId:X,connectionTitle:J,toolName:K,input:W??{},output:U,isError:F,errorMessage:B,durationMs:H,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:G,properties:O})}catch(M){console.error("[MonitoringTransport] Failed to log to database:",M)}}async close(){for(let Y of this.inflightRequests.values())if(Y.span)Y.span.setAttributes({"transport.closed":!0}),Y.span.end();return this.inflightRequests.clear(),super.close()}}});var Cf0=S(()=>{wf0();Tf0()});async function Rf0(Y,Q,X=!1){let J=Y.id,G=Q.connectionId&&Q.connectionId!==J?Q.connectionId:void 0;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let K=Y.connection_headers;if(!NW(K))throw Error("STDIO connection missing parameters");let W=Of0({id:J,name:Y.title,command:K.command,args:K.args,env:K.envVars,cwd:K.cwd});return W=GI(W,(Z)=>new mN(Z,{ctx:Q,connection:Y,superUser:X}),(Z)=>new lN(Z,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),IE4(W,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let K=await XI(Y,Q,X);console.log("[EventBus:Debug] outbound HTTP client",{connectionId:J,url:Y.connection_url,superUser:X,headerKeys:Object.keys(K)});let W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new wH(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=GI(Z,(H)=>new mN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new lN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let K=await XI(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new IB(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=GI(Z,(H)=>new mN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new lN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var IE4;var If0=S(()=>{L3();um();TA();z$1();Df0();Lf0();Cf0();IE4=zf0()});function _f0(Y){if(!Y?._meta)return!1;return typeof Y._meta["mcp.mesh"]?.["tool.fn"]==="string"}function vf0(Y){return Y._meta["mcp.mesh"]["tool.fn"]}var P$1,qa8,pZ,jf0,Sf0;var A$=S(()=>{y1();P$1=q.object({title:q.string().optional(),readOnlyHint:q.boolean().optional(),destructiveHint:q.boolean().optional(),idempotentHint:q.boolean().optional(),openWorldHint:q.boolean().optional()}),qa8=q.object({"tool.fn":q.string().describe("JavaScript ES module code that exports a default async function")}),pZ=q.object({id:q.string().describe("Unique identifier for the virtual tool (auto-generated)"),name:q.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:q.string().optional().describe("Human-readable description of what the tool does"),inputSchema:q.record(q.string(),q.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:q.record(q.string(),q.unknown()).optional().describe("JSON Schema defining the tool's output (optional)"),annotations:P$1.optional().describe("MCP tool annotations"),code:q.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:q.array(q.string()).describe("Connection IDs that this tool depends on (specified by the creator)"),created_at:q.string().describe("When the virtual tool was created"),updated_at:q.string().describe("When the virtual tool was last updated")}),jf0=q.object({name:q.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:q.string().optional().describe("Human-readable description"),inputSchema:q.record(q.string(),q.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:q.record(q.string(),q.unknown()).optional().describe("JSON Schema for output"),annotations:P$1.optional().describe("MCP tool annotations"),code:q.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:q.array(q.string()).optional().describe("Connection IDs that this tool depends on. Creates indirect aggregations to prevent deletion of referenced connections.")}),Sf0=q.object({name:q.string().min(1).max(255).optional().describe("New tool name"),description:q.string().nullable().optional().describe("New description (null to clear)"),inputSchema:q.record(q.string(),q.unknown()).optional().describe("New input schema"),outputSchema:q.record(q.string(),q.unknown()).nullable().optional().describe("New output schema (null to clear)"),annotations:P$1.nullable().optional().describe("New annotations (null to clear)"),code:q.string().optional().describe("New JavaScript code"),connection_dependencies:q.array(q.string()).optional().describe("Connection IDs that this tool depends on. Replaces existing dependencies if provided.")})});function Lp(Y){return(Q)=>{if(Q instanceof w0&&Q.code===C0.MethodNotFound)return Y;throw Q}}var E$1=S(()=>{jY()});class kf0{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,Q){return this.getOrCreatePromise().then(Y,Q)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function Np(Y){return new kf0(Y)}function jE4(Y,Q,X){let J=new sX({name:`lazy-${Y.id}`,version:"1.0.0"},{capabilities:{}}),G=null;function K(){if(!G)G=pN(Y,Q,X).then((H)=>{if(Y.connection_type==="HTTP"||Y.connection_type==="SSE"||Y.connection_type==="Websocket")return C$1(H,Y.id,Y,Q,{superUser:X});return H});return G}if(Y.connection_type!=="VIRTUAL"&&Array.isArray(Y.tools)&&Y.tools.length>0)J.listTools=async()=>({tools:Y.tools.map((H)=>({name:H.name,description:H.description,inputSchema:H.inputSchema,outputSchema:H.outputSchema,annotations:H.annotations,_meta:H._meta}))});else J.listTools=async()=>{return(await K()).listTools()};J.callTool=async(H,F,$)=>{return(await K()).callTool(H,F,$)},J.listResources=async()=>{return(await K()).listResources()},J.listPrompts=async()=>{return(await K()).listPrompts()},J.getPrompt=async(H,F)=>{return(await K()).getPrompt(H,F)},J.readResource=async(H,F)=>{return(await K()).readResource(H,F)},J.callStreamableTool=async(H,F)=>{let $=await K();if("callStreamableTool"in $&&typeof $.callStreamableTool==="function")return $.callStreamableTool(H,F);let V=await $.callTool({name:H,arguments:F});return new Response(JSON.stringify(V),{headers:{"Content-Type":"application/json"}})};let Z=J.close.bind(J);return J.close=async()=>{if(G){let H=await G.catch(()=>null);if(H)await H.close().catch(()=>{})}await Z()},J}function SE4(Y,Q,X=!1){let J=new Map;for(let G of Y)J.set(G.id,jE4(G,Q,X));return J}async function yf0(Y){let Q=[];for(let[,X]of Y)Q.push(X.close().catch(()=>{}));await Promise.all(Q)}var dN;var T$1=S(()=>{R$1();E$1();Pz();J$1();A$();dN=class dN extends sX{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,Q){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=Q;this._selectionMap=new Map;for(let X of Y.virtualMcp.connections)this._selectionMap.set(X.connection_id,X);this._connections=new Map;for(let X of Y.connections)this._connections.set(X.id,X);this._clients=SE4(this.options.connections,this.ctx,this.options.superUser),this._cachedTools=Np(()=>this.loadToolsCache()),this._cachedResources=Np(()=>this.loadCache("resources")),this._cachedPrompts=Np(()=>this.loadCache("prompts"))}async loadToolsCache(){let Y=this._clients,Q=await Promise.all(Array.from(Y.entries()).map(async([W,Z])=>{try{let H=await Z.listTools().then(($)=>$.tools),F=this._selectionMap.get(W);if(F?.selected_tools?.length){let $=new Set(F.selected_tools);H=H.filter((V)=>$.has(V.name))}return{connectionId:W,data:H}}catch(H){return console.error(`[PassthroughClient] Failed to load tools for connection ${W}:`,H),null}})),X=[],J=new Map,G=new Map,K=this.options.virtualTools??[];for(let W of K){if(J.has(W.name))continue;let Z={name:W.name,description:W.description,inputSchema:W.inputSchema,outputSchema:W.outputSchema,annotations:W.annotations,_meta:{connectionId:this.options.virtualMcp.id??"__VIRTUAL__",connectionTitle:this.options.virtualMcp.title}};X.push(Z),J.set(W.name,"__VIRTUAL__"),G.set(W.name,W)}for(let W of Q){if(!W)continue;let{connectionId:Z,data:H}=W,$=this._connections.get(Z)?.title??"";for(let V of H){let B=V.name;if(J.has(B))continue;let U={...V,_meta:{connectionId:Z,connectionTitle:$,...V?._meta}};X.push(U),J.set(B,Z)}}return{data:X,mappings:J,virtualTools:G}}async loadCache(Y){let Q=this._clients,X=await Promise.all(Array.from(Q.entries()).map(async([K,W])=>{try{let Z=Y==="resources"?await W.listResources().catch(Lp({resources:[]})).then(($)=>$.resources):await W.listPrompts().catch(Lp({prompts:[]})).then(($)=>$.prompts),H=this._selectionMap.get(K),F=Y==="resources"?"selected_resources":"selected_prompts";if(H?.[F]?.length){let $=new Set(H[F]);return{connectionId:K,data:Z.filter((V)=>$.has(V.name))}}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of X){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let $ of Z){let V=$.name??$.uri;if(G.has(V))continue;let B={...$,_meta:{connectionId:W,connectionTitle:F,...$?._meta}};J.push(B),G.set(V,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let Q=await this._cachedTools,X=this._clients,J=Q.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};if(J==="__VIRTUAL__")return this.executeVirtualTool(Y.name,Y.arguments??{},Q,X);let G=X.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async executeVirtualTool(Y,Q,X,J){let G=X.virtualTools.get(Y);if(!G)return{content:[{type:"text",text:`Virtual tool not found: ${Y}`}],isError:!0};let K=vf0(G),W={};for(let[Z,H]of X.mappings){if(H==="__VIRTUAL__")continue;let F=J.get(H);if(!F)continue;W[Z]=async($)=>{let V=await F.callTool({name:Z,arguments:$});if(V.structuredContent&&typeof V.structuredContent==="object")return V.structuredContent;let B=V.content;if(B?.[0]?.type==="text"&&B[0].text)try{return JSON.parse(B[0].text)}catch{return B[0].text}return V}}try{let H=`
|
|
1470
|
+
${Q.stack}`;return G}}catch{}if(typeof Q.toString==="function")try{let G=Q.toString();if(G!=="[object Object]")return G}catch{}let J=Object.keys(Q);if(J.length>0)return`Object with keys: ${J.join(", ")}`;return"[object Object]"}if(typeof Y==="string")return Y;if(typeof Y==="number"||typeof Y==="boolean")return String(Y);if(typeof Y==="function")return`[Function: ${Y.name||"anon"}]`;if(typeof Y==="symbol")return Y.toString();if(typeof Y==="bigint")return Y.toString();try{return String(Y)}catch{return"Unknown value (could not convert to string)"}}function hN(Y,Q){switch(typeof Q){case"string":return Y.newString(Q);case"number":return Y.newNumber(Q);case"boolean":return Q?Y.true:Y.false;case"undefined":return Y.undefined;case"object":{if(Q===null)return Y.null;if(Array.isArray(Q)){let J=Y.newArray();return Q.forEach((G,K)=>{let W=hN(Y,G);try{Y.setProp(J,String(K),W)}finally{W.dispose?.()}}),J}let X=Y.newObject();for(let[J,G]of Object.entries(Q)){let K=hN(Y,G);try{Y.setProp(X,J,K)}finally{K.dispose?.()}}return X}case"function":{let X=`__hostFn_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return Y.newFunction(X,(...G)=>{try{let K=G.map((Z)=>Y.dump(Z)),W=Q(...K);if(W&&typeof W.then==="function"){let Z=Y.newPromise();return W.then((H)=>{try{let F=hN(Y,H);Z.resolve(F),F.dispose()}catch(F){let $=bN(F),V=Y.newString(`Promise resolution error: ${$}`);Z.reject(V),V.dispose()}finally{Y.runtime.executePendingJobs()}}).catch((H)=>{let F=bN(H),$=Y.newString(`Promise rejection: ${F}`);Z.reject($),$.dispose(),Y.runtime.executePendingJobs()}),Z.handle}return hN(Y,W)}catch(K){let W=bN(K);return Y.newString(`HostFunctionError: ${W}`)}finally{G.forEach((K)=>K.dispose())}})}case"bigint":return Y.newString(Q.toString());case"symbol":return Y.newString(Q.toString());default:try{return Y.newString(String(Q))}catch{return Y.undefined}}}var cy0=()=>{};function iy0(Y){let Q=Y.runtime.executePendingJobs(100);try{if("unwrap"in Q&&typeof Q.unwrap==="function")Q.unwrap()}finally{if("dispose"in Q&&typeof Q.dispose==="function")Q.dispose()}}async function ny0(Y,Q,X){let J=Date.now(),G=Y.resolvePromise(Q);while(!0){iy0(Y);let K=await Promise.race([G,b24(0).then(()=>null)]);if(K!==null)return K;if(Date.now()-J>X)throw Error(`Timed out after ${X}ms while awaiting a QuickJS promise`)}}async function sR({tools:Y,code:Q,timeoutMs:X}){let W=[];try{const J=VI(W,await dy0({memoryLimitBytes:33554432,stackSizeBytes:524288}),0);const G=VI(W,J.newContext({interruptAfterMs:X}),0);const K=VI(W,gy0(G),0);try{let $=G.evalCode(Q,"index.mjs",{strip:!0,strict:!0,type:"module"}),V=G.unwrapResult($),B=hN(G,Y);G.setProp(G.global,"tools",B);let U=G.runtime.hasPendingJob()?G.unwrapResult(await ny0(G,V,X)):V;if(U!==V)V.dispose();let z=G.getProp(U,"default"),O=G.typeof(z);if(O!=="function")return z.dispose(),U.dispose(),B.dispose(),{error:`Code must export default a function (tools). Got ${O}. Example: export default async (tools) => { /* ... */ }`,consoleLogs:K.logs};let M=G.callFunction(z,G.undefined,B);B.dispose(),z.dispose(),U.dispose();let w=G.unwrapResult(M),P=await ny0(G,w,X);w.dispose();let j=G.unwrapResult(P);if(G.runtime.hasPendingJob())iy0(G);let C=G.dump(j);return j.dispose(),{returnValue:C,consoleLogs:K.logs}}catch($){return console.log($),{error:bN($),consoleLogs:K.logs}}}catch(Z){var H=Z,F=1}finally{uV1(W,H,F)}}var b24=(Y)=>new Promise((Q)=>setTimeout(Q,Y));var ay0=S(()=>{py0();cy0()});var J$1=S(()=>{ay0()});async function h24(Y,Q){let X=Y.connections.map((K)=>K.connection_id),J=[];for(let K of X){let W=await Q.storage.connections.findById(K);if(W&&W.status==="active")J.push(W)}return J.map((K)=>{let W=Y.connections.find((Z)=>Z.connection_id===K.id);return{connection:K,selectedTools:W?.selected_tools??null,selectedResources:W?.selected_resources??null,selectedPrompts:W?.selected_prompts??null}})}async function ry0(Y,Q){return(await Q.storage.connections.list(Y)).filter((J)=>J.status==="active").map((J)=>({connection:J,selectedTools:null,selectedResources:null,selectedPrompts:null}))}async function x24(Y,Q){let X=new Map;for(let B of Y)X.set(B.connection.id,B);let J=Y.map((B)=>B.connection),G=new Map,K=await Promise.allSettled(J.map(async(B)=>{try{let U=await Q.createMCPProxy(B);return{connection:B,proxy:U}}catch(U){return console.warn(`[code-execution] Failed to create proxy for connection ${B.id}:`,U),null}}));for(let B of K)if(B.status==="fulfilled"&&B.value)G.set(B.value.connection.id,B.value);let W=await Promise.allSettled(Array.from(G.entries()).map(async([B,U])=>{try{let O=(await U.proxy.listTools()).tools,M=X.get(B);if(M?.selectedTools&&M.selectedTools.length>0){let w=new Set(M.selectedTools);O=O.filter((P)=>w.has(P.name))}return{connectionId:B,connectionTitle:U.connection.title,tools:O}}catch(z){return console.error(`[code-execution] Failed to list tools for connection ${B}:`,z),null}})),Z=new Set,H=[],F=new Map;for(let B of W){if(B.status!=="fulfilled"||!B.value)continue;let{connectionId:U,connectionTitle:z,tools:O}=B.value;for(let M of O){if(Z.has(M.name))continue;Z.add(M.name),H.push({...M,_meta:{connectionId:U,connectionTitle:z}}),F.set(M.name,U)}}let $=async(B,U)=>{let z=F.get(B);if(!z)return{content:[{type:"text",text:`Tool not found: ${B}`}],isError:!0};let O=G.get(z);if(!O)return{content:[{type:"text",text:`Connection not found for tool: ${B}`}],isError:!0};return await O.proxy.callTool({name:B,arguments:U})},V=[];for(let[,B]of G)V.push(B.proxy.close().catch(()=>{}));return await Promise.all(V),{tools:H,callTool:$}}async function xN(Y){let Q=B0(Y),X;if(Y.connectionId){let J=await Y.storage.virtualMcps.findById(Y.connectionId,Y.organization?.id);if(J)X=await h24(J,Y);else X=await ry0(Q.id,Y)}else X=await ry0(Q.id,Y);return x24(X,Y)}function g24(Y){return Y.toLowerCase().split(/[\s_\-./]+/).filter((Q)=>Q.length>=2)}function u24(Y,Q){let X=0,J=Q.name.toLowerCase(),G=(Q.description??"").toLowerCase(),K=(Q._meta?.connectionTitle??"").toLowerCase();for(let W of Y){if(J===W)X+=10;else if(J.includes(W))X+=3;if(G.includes(W))X+=2;if(K.includes(W))X+=1}return X}function $p(Y,Q,X){let J=g24(Y);if(J.length===0)return Q.slice(0,X);return Q.map((G)=>({tool:G,score:u24(J,G)})).filter((G)=>G.score>0).sort((G,K)=>K.score-G.score).slice(0,X).map((G)=>G.tool)}function Vp(Y,Q){let X=new Map(Q.map((G)=>[G.name,G]));return{tools:Y.map((G)=>X.get(G)).filter((G)=>G!==void 0).map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??"",inputSchema:G.inputSchema,outputSchema:G.outputSchema})),notFound:Y.filter((G)=>!X.has(G))}}async function qp(Y,Q,X){let J=Object.fromEntries(Q.tools.map((G)=>[G.name,async(K)=>{let W=await Q.callTool(G.name,K??{});if(W.structuredContent&&typeof W.structuredContent==="object")return W.structuredContent;let Z=W.content;if(Z?.[0]?.type==="text"&&Z[0].text)try{return JSON.parse(Z[0].text)}catch{return Z[0].text}return W}]));return sR({code:Y,tools:J,timeoutMs:X})}function tR(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}function M$(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}],isError:!0}}function m3(Y){let Q=new Set(m24);return Y.filter((X)=>!Q.has(X.name))}var m24;var WU=S(()=>{J$1();m24=["CODE_EXECUTION_SEARCH_TOOLS","CODE_EXECUTION_DESCRIBE_TOOLS","CODE_EXECUTION_RUN_CODE"]});var G$1;var oy0=S(()=>{k0();oR();WU();G$1=v1({name:"CODE_EXECUTION_SEARCH_TOOLS",description:"Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling CODE_EXECUTION_DESCRIBE_TOOLS for detailed schemas.",annotations:{title:"Search Tools",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ky0,outputSchema:yy0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q),J=$p(Y.query,X.tools,Y.limit);return{query:Y.query,results:J.map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??""})),totalAvailable:X.tools.length}}})});var W$1;var sy0=S(()=>{k0();oR();WU();W$1=v1({name:"CODE_EXECUTION_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after CODE_EXECUTION_SEARCH_TOOLS to get full input/output schemas before executing code.",annotations:{title:"Describe Tools",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:fy0,outputSchema:by0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q);return Vp(Y.tools,X.tools)}})});var Z$1;var ty0=S(()=>{k0();oR();WU();Z$1=v1({name:"CODE_EXECUTION_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use CODE_EXECUTION_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',annotations:{title:"Run Code",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:hy0,outputSchema:xy0,handler:async(Y,Q)=>{o1(Q),B0(Q),await Q.access.check();let X=await xN(Q);return await qp(Y.code,X,Y.timeoutMs)}})});var ey0=S(()=>{oy0();sy0();ty0();oR()});var d24,p24,K$1;var Yf0=S(()=>{zY();y1();k0();dm();L3();d24=q.object({data:CA.describe("Data for the new connection (id is auto-generated if not provided)")}),p24=q.object({item:P5.describe("The created connection entity")}),K$1=v1({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection in the organization",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:d24,outputSchema:p24,handler:async(Y,Q)=>{o1(Q);let X=B0(Q);await Q.access.check();let J=D9(Q);if(!J)throw Error("User ID required to create connection");let G={...Y.data,organization_id:X.id,created_by:J};if(G.connection_type==="VIRTUAL"){let F=LV(G.connection_url);if(!F)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let $=await Q.storage.virtualMcps.findById(F);if(!$)throw Error(`Virtual MCP not found: ${F}`);if($.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");G.connection_url=NV(F)}let K=await iL({id:`pending-${Date.now()}`,title:G.title,connection_type:G.connection_type,connection_url:G.connection_url,connection_token:G.connection_token,connection_headers:G.connection_headers}).catch(()=>null),W=K?.tools?.length?K.tools:null,Z=K?.scopes?.length?K.scopes:null,H=await Q.storage.connections.create({...G,tools:W,configuration_scopes:Z});return await Q.eventBus.publish(X.id,h9.SELF(X.id),{type:"connection.created",data:H}),{item:H}}})});var c24,n24,Qf0;var Xf0=S(()=>{y1();gX();c24=yZ.extend({avatar:q.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:q.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:q.string().describe("Virtual MCP ID to use for this assistant"),model:q.object({id:q.string().describe("Model ID"),connectionId:q.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),n24=fZ("assistant",c24),Qf0=[...n24]});var eR,l3,Gf0,i24,a24,Wf0,r24,o24,s24,t24,e24,YE4,Zf0,QE4,XE4,JE4,GE4,WE4,ZE4,KE4,HE4,FE4,$E4,in8,VE4,an8,Jf0,qE4,BE4,H$1,rn8;var Kf0=S(()=>{y1();_B();gX();eR=q.lazy(()=>q.union([q.null(),q.string(),q.number(),q.boolean(),q.record(q.string(),eR),q.array(eR)])),l3=q.record(q.string(),q.record(q.string(),eR)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),Gf0=q.object({type:q.literal("text"),text:q.string().describe("The text content"),providerOptions:l3}),i24=q.object({type:q.literal("text"),text:q.string().describe("The text content"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),a24=q.string().describe("File data as URL string"),Wf0=q.object({type:q.literal("file"),filename:q.string().optional().describe("Optional filename of the file"),data:a24,mediaType:q.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:l3}),r24=q.object({type:q.literal("file"),mediaType:q.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:q.string().describe("Generated file data as base64 encoded string")}),o24=q.object({type:q.literal("reasoning"),text:q.string().describe("The reasoning text"),providerOptions:l3}),s24=q.object({type:q.literal("reasoning"),text:q.string().describe("The reasoning text"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),t24=q.object({type:q.literal("tool-call"),toolCallId:q.string().describe("ID of the tool call, used to match with tool result"),toolName:q.string().describe("Name of the tool being called"),input:q.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:q.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:l3}),e24=q.object({type:q.literal("tool-call"),toolCallId:q.string().describe("ID of the tool call"),toolName:q.string().describe("Name of the tool being called"),input:q.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:q.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),YE4=q.union([q.object({type:q.literal("text"),value:q.string()}),q.object({type:q.literal("json"),value:eR}),q.object({type:q.literal("error-text"),value:q.string()}),q.object({type:q.literal("error-json"),value:eR}),q.object({type:q.literal("content"),value:q.array(q.union([q.object({type:q.literal("text"),text:q.string().describe("Text content")}),q.object({type:q.literal("media"),data:q.string().describe("Base-64 encoded media data"),mediaType:q.string().describe("IANA media type")})]))}),q.object({type:q.literal("execution-denied"),reason:q.string().optional()}),q.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),Zf0=q.object({type:q.literal("tool-result"),toolCallId:q.string().describe("ID of the tool call that this result is associated with"),toolName:q.string().describe("Name of the tool that generated this result"),output:YE4.describe("Result of the tool call"),result:q.unknown().describe("Unknown result of the tool call"),providerOptions:l3}),QE4=q.object({type:q.literal("tool-result"),toolCallId:q.string().describe("ID of the tool call that this result is associated with"),toolName:q.string().describe("Name of the tool that generated this result"),result:q.any().describe("Result of the tool call (JSON-serializable)"),isError:q.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:q.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),XE4=q.union([q.object({type:q.literal("source"),sourceType:q.literal("url"),id:q.string().describe("The ID of the source"),url:q.string().describe("The URL of the source"),title:q.string().optional().describe("The title of the source"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")}),q.object({type:q.literal("source"),sourceType:q.literal("document"),id:q.string().describe("The ID of the source"),mediaType:q.string().describe("IANA media type of the document (e.g., application/pdf)"),title:q.string().describe("The title of the document"),filename:q.string().optional().describe("Optional filename of the document"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata")})]),JE4=q.object({role:q.literal("system"),content:q.string().describe("System message content"),providerOptions:l3}),GE4=q.object({role:q.literal("user"),content:q.array(q.union([Gf0,Wf0])).describe("User message content parts (text or file)"),providerOptions:l3}),WE4=q.object({role:q.literal("assistant"),content:q.array(q.union([Gf0,Wf0,o24,t24,Zf0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:l3}),ZE4=q.object({role:q.literal("tool"),content:q.array(Zf0).describe("Tool message content (tool results)"),providerOptions:l3}),KE4=q.union([JE4,GE4,WE4,ZE4]),HE4=q.array(KE4).describe("A list of messages forming the prompt"),FE4=q.object({prompt:HE4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:q.number().optional().describe("Maximum number of tokens to generate"),temperature:q.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:q.number().optional().describe("Nucleus sampling parameter"),topK:q.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:q.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:q.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:q.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:q.array(q.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:q.union([q.object({type:q.literal("text")}),q.object({type:q.literal("json"),schema:q.any().optional().describe("JSON schema that the generated output should conform to"),name:q.string().optional().describe("Name of output that should be generated"),description:q.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:q.array(q.any()).optional().describe("The tools that are available for the model"),toolChoice:q.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:q.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:q.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:q.any().optional().describe("Additional provider-specific options")}),$E4=q.object({content:q.array(q.union([i24,r24,s24,e24,QE4,XE4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:q.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:q.looseObject({inputTokens:q.number().optional(),outputTokens:q.number().optional(),totalTokens:q.number().optional(),reasoningTokens:q.number().optional()}).describe("Usage information for the language model call"),providerMetadata:q.any().optional().describe("Additional provider-specific metadata"),request:q.object({body:q.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:q.object({id:q.string().optional().describe("ID for the generated response"),timestamp:q.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:q.string().optional().describe("The ID of the response model that was used"),headers:q.record(q.string(),q.string()).optional().describe("Response headers"),body:q.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:q.array(q.any()).describe("Warnings for the call, e.g. unsupported settings")}),in8=q.object({stream:q.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:q.object({body:q.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:q.object({headers:q.record(q.string(),q.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),VE4=q.object({supportedUrls:q.record(q.string(),q.array(q.string())).describe("Supported URL patterns by media type for the provider")}),an8=q.object({modelId:q.string().describe("The ID of the model"),logo:q.string().nullable(),description:q.string().nullable(),capabilities:q.array(q.string()),limits:q.object({contextWindow:q.number(),maxOutputTokens:q.number()}).nullable(),costs:q.object({input:q.number(),output:q.number()}).nullable(),provider:q.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),Jf0=q.object({modelId:q.string().describe("The ID of the model"),callOptions:FE4}),qE4=yZ.extend({logo:q.string().nullable(),description:q.string().nullable(),capabilities:q.array(q.string()),limits:q.object({contextWindow:q.number(),maxOutputTokens:q.number()}).nullable(),costs:q.object({input:q.number(),output:q.number()}).nullable(),provider:q.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),BE4=fZ("llm",qE4,{readOnly:!0}),H$1=[{name:"LLM_METADATA",inputSchema:q.object({modelId:q.string().describe("The ID of the model")}),outputSchema:VE4},{name:"LLM_DO_STREAM",inputSchema:Jf0,streamable:!0},{name:"LLM_DO_GENERATE",inputSchema:Jf0,outputSchema:$E4},...BE4],rn8=vZ(H$1)});function gN(){return!1}function Bp(Y,Q){return Y===h9.DEV_ASSETS(Q)}function uN(Y,Q){let X=Bt(Q,Y),J=new Date().toISOString();return{id:X.id??h9.DEV_ASSETS(Y),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:Y,created_by:"system",created_at:J,updated_at:J,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:UE4,bindings:["OBJECT_STORAGE"],status:"active"}}var UE4;var Up=S(()=>{em();zY();y1();UE4=uC.map((Y)=>({name:Y.name,description:`${Y.name} operation for local file storage`,inputSchema:q.toJSONSchema(Y.inputSchema),outputSchema:q.toJSONSchema(Y.outputSchema)}))});function DE4(Y){let Q=[],X=0;while(X<Y.length){let J=Y[X];if(J==="%")Q.push(".*");else if(J==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))Q.push("\\"+J);else Q.push(J);X++}return Q.join("")}function w$(Y){return typeof Y==="string"||typeof Y==="number"}function zp(Y,Q){if("conditions"in Q){let{operator:Z,conditions:H}=Q;switch(Z){case"and":return H.every((F)=>zp(Y,F));case"or":return H.some((F)=>zp(Y,F));case"not":return!H.every((F)=>zp(Y,F));default:return!0}}let{field:X,operator:J,value:G}=Q,K=X.join("."),W=F$1(Y,K);switch(J){case"eq":return W===G;case"gt":return w$(W)&&w$(G)&&W>G;case"gte":return w$(W)&&w$(G)&&W>=G;case"lt":return w$(W)&&w$(G)&&W<G;case"lte":return w$(W)&&w$(G)&&W<=G;case"in":return Array.isArray(G)&&G.includes(W);case"like":if(typeof W!=="string"||typeof G!=="string")return!1;if(G.length>100)return!1;let Z=DE4(G);return new RegExp(`^${Z}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function F$1(Y,Q){let X=Q.split("."),J=Y;for(let G of X){if(J==null||typeof J!=="object")return;J=J[G]}return J}function OE4(Y,Q){return[...Y].sort((X,J)=>{for(let G of Q){let K=G.field.join("."),W=F$1(X,K),Z=F$1(J,K),H=0;if(W==null&&Z==null)continue;if(W==null)H=G.nulls==="first"?-1:1;else if(Z==null)H=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof Z==="string")H=W.localeCompare(Z);else if(typeof W==="number"&&typeof Z==="number")H=W-Z;else H=String(W).localeCompare(String(Z));if(H!==0)return G.direction==="desc"?-H:H}return 0})}var zE4,LE4,NE4,$$1;var Hf0=S(()=>{Yl();Xf0();gX();Kf0();em();zY();y1();k0();Up();L3();zE4={LLM:H$1,ASSISTANTS:Qf0,OBJECT_STORAGE:uC};LE4=dG.extend({binding:q.union([q.object({}).passthrough(),q.string()]).optional(),include_virtual:q.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false.")}),NE4=M3(P5),$$1=v1({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LE4,outputSchema:NE4,handler:async(Y,Q)=>{await Q.access.check();let X=B0(Q),J=Y.binding?typeof Y.binding==="string"?(()=>{let B=zE4[Y.binding.toUpperCase()];if(!B)throw Error(`Unknown binding: ${Y.binding}`);return B})():Y.binding:void 0,G=J?rm(J):void 0,K=await Q.storage.connections.list(X.id,{includeVirtual:Y.include_virtual??!1});if(gN()){let B=AG(),U=h9.DEV_ASSETS(X.id);if(!K.some((z)=>z.id===U)){let z=uN(X.id,B);K.unshift(z)}}let W=G?await Promise.all(K.map(async(B)=>{if(!B.tools||B.tools.length===0)return null;return G.isImplementedBy(B.tools.map((z)=>({name:z.name,inputSchema:z.inputSchema,outputSchema:z.outputSchema})))?B:null})).then((B)=>B.filter((U)=>U!==null)):K;if(Y.where)W=W.filter((B)=>zp(B,Y.where));if(Y.orderBy&&Y.orderBy.length>0)W=OE4(W,Y.orderBy);let Z=W.length,H=Y.offset??0,F=Y.limit??100,$=W.slice(H,H+F),V=H+F<Z;return{items:$,totalCount:Z,hasMore:V}}})});var ME4,V$1;var Ff0=S(()=>{gX();k0();Up();L3();ME4=TC(P5),V$1=v1({name:"COLLECTION_CONNECTIONS_GET",description:"Get connection details by ID",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:EC,outputSchema:ME4,handler:async(Y,Q)=>{let X=B0(Q);if(await Q.access.check(),gN()&&Bp(Y.id,X.id))return{item:uN(X.id,AG())};let J=await Q.storage.connections.findById(Y.id);if(!J||J.organization_id!==X.id)return{item:null};return{item:J}}})});var Dp=(Y,Q)=>{if(Q===null||Q===void 0)return;let X=Y.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),J=Q;for(let G of X){if(J===null||J===void 0||typeof J!=="object")return;J=J[G]}return J};function $f0(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])throw Error(`Invalid scope format: ${Y}. Expected format: "KEY::SCOPE"`);return Q}function wE4(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])return null;return Q}function AE4(Y){if(typeof Y==="object"&&Y!==null&&"value"in Y){let Q=Y.value;if(typeof Q==="string")return Q}return null}function q$1(Y,Q){let X={};if(!Y||!Q)return X;for(let J of Q){if(J==="*"){X["*"]=["*"];continue}let G=wE4(J);if(!G)continue;let[K,W]=G,Z=Dp(K,Y),H=AE4(Z);if(H){if(!X[H])X[H]=[];X[H].push(W)}}return X}function Vf0(Y,Q){let X=q$1(Y,Q);return new Set(Object.keys(X).filter((J)=>J!=="*"))}var B$1=()=>{};import{randomBytes as PE4}from"crypto";function EE4(){if(YI)return YI;let Y=process.env.MESH_JWT_SECRET??t9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)YI=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),YI=new Uint8Array(PE4(32));return YI}async function qf0(Y,Q="5m"){let X=EE4();return await new DX(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Q).sign(X)}var YI=null;var Bf0=S(()=>{OX();Op()});async function Uf0(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let Q=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)Q.set("client_secret",Y.clientSecret);if(Y.scope)Q.set("scope",Y.scope);let X=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Q.toString()});if(!X.ok){let G=await X.text();console.error(`[TokenRefresh] Failed to refresh token: ${X.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${X.status}`}}catch{return{success:!1,error:`Token refresh failed: ${X.status}`}}}let J=await X.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(Q){return console.error("[TokenRefresh] Error refreshing token:",Q),{success:!1,error:Q instanceof Error?Q.message:"Token refresh failed"}}}class QI{db;vault;constructor(Y,Q){this.db=Y;this.vault=Q}async get(Y){let Q=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",Y).executeTakeFirst();if(!Q)return null;return this.decryptToken(Q)}async upsert(Y){let Q=new Date().toISOString(),X=await this.vault.encrypt(Y.accessToken),J=Y.refreshToken?await this.vault.encrypt(Y.refreshToken):null,G=Y.clientSecret?await this.vault.encrypt(Y.clientSecret):null;return await this.db.transaction().execute(async(K)=>{let W=await K.selectFrom("downstream_tokens").select(["id","createdAt"]).where("connectionId","=",Y.connectionId).executeTakeFirst();if(W)return await K.updateTable("downstream_tokens").set({accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,updatedAt:Q}).where("id","=",W.id).execute(),{id:W.id,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:W.createdAt,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint};let Z=Y$("dtok");return await K.insertInto("downstream_tokens").values({id:Z,connectionId:Y.connectionId,accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,createdAt:Q,updatedAt:Q}).execute(),{id:Z,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Q,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint}})}async delete(Y){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",Y).execute()}isExpired(Y,Q=0){if(!Y.expiresAt)return!1;let J=(Y.expiresAt instanceof Date?Y.expiresAt:new Date(Y.expiresAt)).getTime();if(Number.isNaN(J))return!0;return J-Q<Date.now()}async decryptToken(Y){let Q=await this.vault.decrypt(Y.accessToken),X=Y.refreshToken?await this.vault.decrypt(Y.refreshToken):null,J=Y.clientSecret?await this.vault.decrypt(Y.clientSecret):null;return{id:Y.id,connectionId:Y.connectionId,accessToken:Q,refreshToken:X,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Y.createdAt,updatedAt:Y.updatedAt,clientId:Y.clientId,clientSecret:J,tokenEndpoint:Y.tokenEndpoint}}}var U$1=S(()=>{DC()});async function XI(Y,Q,X){let J=Y.id,G=q$1(Y.configuration_state,Y.configuration_scopes),K=Q.auth.user?.id??Q.auth.apiKey?.userId??(X?Y.created_by:void 0),[W,Z]=K?await qf0({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:Q.baseUrl,connectionId:J,organizationId:Q.organization?.id},permissions:G}).then((U)=>[U,null]).catch((U)=>[null,U]):[null,Error("User ID required to issue configuration token")];if(Z)console.error("Failed to issue configuration token:",W);let H=Q.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Q.metadata.wellKnownForwardableHeaders??{},"x-request-id":Q.metadata.requestId},$=null,V=new QI(Q.db,Q.vault),B=await V.get(J);if(B){let U=!!B.refreshToken&&!!B.tokenEndpoint;if(V.isExpired(B,U?300000:0))if(U){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let O=await Uf0(B);if(O.success&&O.accessToken)await V.upsert({connectionId:J,accessToken:O.accessToken,refreshToken:O.refreshToken??B.refreshToken,scope:O.scope??B.scope,expiresAt:O.expiresIn?new Date(Date.now()+O.expiresIn*1000):null,clientId:B.clientId,clientSecret:B.clientSecret,tokenEndpoint:B.tokenEndpoint}),$=O.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await V.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${O.error}`)}else await V.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else $=B.accessToken}if(!$&&Y.connection_token)$=Y.connection_token;if($)F.Authorization=`Bearer ${$}`;if(W)F["x-mesh-token"]=W;return F}var z$1=S(()=>{B$1();Bf0();U$1()});function zf0(){let Y=new Map;function Q(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;console.log(`[ClientPool] Creating new client for ${G}`);let W=new sX({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(Q,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var Df0=S(()=>{Pz()});function Of0(Y){let Q=new wC({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),X=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return Q.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${X}]\x1B[0m`)}),Q}var Lf0=S(()=>{uZ1()});class JI{innerTransport;constructor(Y){this.innerTransport=Y}async start(){return this.innerTransport.onmessage=(Y)=>{this.handleIncomingMessage(Y)},this.innerTransport.onerror=(Y)=>{this.onerror?.(Y)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(Y){return this.handleOutgoingMessage(Y)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(Y){return this.innerTransport.send(Y)}handleIncomingMessage(Y){this.onmessage?.(Y)}isRequest(Y){return"method"in Y&&Y.method!==void 0}isResponse(Y){return"result"in Y||"error"in Y&&!("method"in Y)}onmessage;onerror;onclose}function GI(Y,...Q){return Q.reduce((X,J)=>J(X),Y)}var Nf0="mcp.mesh";var Mf0,D$1,WI;var O$1=S(()=>{Mf0=class Mf0 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};D$1=class D$1 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};WI=class WI{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,Q,X,J,G,K="self",W){this.userId=Q;this.toolName=X;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new Mf0("Authentication required. Please provide a valid OAuth token or API key.")}let Q=Y.length>0?Y:this.toolName?[this.toolName]:[];if(Q.length===0)throw new D$1("No resources specified for access check");for(let X of Q)if(await this.checkResource(X)){this.grant();return}throw new D$1(`Access denied to: ${Q.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let Q={};if(this.connectionId)Q[this.connectionId]=[Y];return this.boundAuth.hasPermission(Q)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let X=Y[Nf0]?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}});var TE4="mcp.mesh",mN;var wf0=S(()=>{O$1();mN=class mN extends JI{options;cachedToolsMap=null;constructor(Y,Q){super(Y);this.options=Q;if(Q.connection.tools)this.cachedToolsMap=new Map(Q.connection.tools.map((X)=>[X.name,X]))}async handleOutgoingMessage(Y){if(!this.isRequest(Y))return this.innerTransport.send(Y);let Q=Y;if(Q.method==="tools/call")await this.authorizeToolCall(Q),this.stripMetaFromArguments(Q);return this.innerTransport.send(Y)}async authorizeToolCall(Y){if(this.options.superUser)return;let X=Y.params.name,{ctx:J,connection:G}=this.options;if(this.isPublicTool(X))return;if(!J.auth.user?.id&&!J.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let K=async()=>{return this.cachedToolsMap?.get(X)?._meta};await new WI(J.authInstance,J.auth.user?.id??J.auth.apiKey?.userId,X,J.boundAuth,J.auth.user?.role,G.id,K).check(X)}isPublicTool(Y){if(Y.startsWith("MESH_PUBLIC_"))return!0;if(!this.cachedToolsMap)return!1;let Q=this.cachedToolsMap.get(Y);if(!Q?._meta)return!1;return Q._meta[TE4]?.public_tool===!0}stripMetaFromArguments(Y){let Q=Y.params;if(Q.arguments&&"_meta"in Q.arguments){let{_meta:X,...J}=Q.arguments;Q.arguments=J}}}});function Pf0(Y){if(!Y.isError)return;let Q=Y.content;if(!Array.isArray(Q))return;for(let X of Q)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function N$1(Y){if(!Y)return;let Q=Y._meta;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let X=Q.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let J={};for(let[G,K]of Object.entries(X))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function M$1(Y,Q){if(!Y&&!Q)return;if(!Y)return Q;if(!Q)return Y;return{...Q,...Y}}function w$1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let Q=Y,X=Q.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return Q}return{value:Y}}async function CE4(Y,Q){let X=Y.body;if(!X)return{text:"",truncated:!1};let J=X.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>Q){K=!0;let $=Q-(W-H.byteLength);if($>0)Z.push(G.decode(H.slice(0,$),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}function RE4(Y){if(!Y)return;let Q=Y.trimEnd().split(`
|
|
1471
|
+
`);for(let X=Q.length-1;X>=0&&X>=Q.length-5;X--){let J=Q[X]?.trim();if(!J)continue;try{let G=JSON.parse(J);if(G&&typeof G==="object"&&G.type==="finish"){let K={};if(G.usage)K.usage=G.usage;if(G.providerMetadata)K.providerMetadata=G.providerMetadata;if(G.finishReason)K.finishReason=G.finishReason;return Object.keys(K).length>0?K:void 0}}catch{}}return}async function L$1(Y){let{ctx:Q,enabled:X}=Y,J=Y.organizationId??Q.organization?.id;if(!X||!J)return;if(OV(Y.connectionId))return;let G=N$1(Y.request.params.arguments),K=M$1(Q.metadata.properties,G),W=Q.auth.user?.id||Q.auth.apiKey?.userId;if(W)try{let Z=await Q.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await Q.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function Ef0(Y){let{ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),$=Q.organization?.id;if(X&&$){let V=F.clone();(async()=>{try{let{text:B,truncated:U}=await CE4(V,Af0),z=Date.now()-H,O=V.headers.get("content-type")??"",M=B;if(O.includes("application/json"))try{M=B.length?JSON.parse(B):null}catch{M=B}let w=F.status>=400,P=w&&M&&typeof M==="object"&&"error"in M?M.error:void 0,j=typeof P==="string"&&P?P:w&&typeof M==="string"&&M.trim()?M.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():U?`Response body truncated to ${Af0} bytes`:void 0,C=w$1(M),E=RE4(B);if(E)Object.assign(C,E);await L$1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:C,isError:w,errorMessage:j,durationMs:z})}catch(B){let U=Date.now()-H;await L$1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${B.message}`,durationMs:U})}})()}return F}catch(F){let $=F,V=Date.now()-H;throw await L$1({ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:$.message,durationMs:V}),F}}}var Af0=262144;var A$1=S(()=>{zY()});var lN;var Tf0=S(()=>{xh();A$1();lN=class lN extends JI{options;inflightRequests=new Map;constructor(Y,Q){super(Y);this.options=Q}async handleOutgoingMessage(Y){if(this.isRequest(Y)){let Q=Y;this.onRequestStart(Q)}return this.innerTransport.send(Y)}handleIncomingMessage(Y){if(this.isResponse(Y)){let Q=Y;this.onResponseEnd(Q)}this.onmessage?.(Y)}onRequestStart(Y){let{ctx:Q,connectionId:X}=this.options,J,G;if(Y.method==="tools/call"&&Y.params){let W=Y.params;J=W.name,G=W.arguments}let K;if(Y.method==="tools/call"&&J)K=Q.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":J,"request.id":Q.metadata.requestId,"jsonrpc.id":Y.id,"jsonrpc.method":Y.method}});if(Y.id!==null&&Y.id!==void 0)this.inflightRequests.set(Y.id,{startTime:Date.now(),method:Y.method,toolName:J,toolArguments:G,span:K})}onResponseEnd(Y){if(Y.id===null||Y.id===void 0)return;let Q=this.inflightRequests.get(Y.id);if(!Q)return;let{ctx:X,connectionId:J}=this.options,{startTime:G,method:K,toolName:W,toolArguments:Z,span:H}=Q,F=Date.now()-G;if(this.inflightRequests.delete(Y.id),K!=="tools/call"||!W)return;let $="error"in Y,V=$?Y.error:Y.result,B=$?{content:[{type:"text",text:Y.error?.message||"Unknown error"}],isError:!0}:V;if(X.meter.createHistogram("connection.proxy.duration").record(F,{"connection.id":J,"tool.name":W,status:$?"error":"success"}),$)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":J,"tool.name":W,error:Y.error?.message});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":J,"tool.name":W,status:"success"});if(H){if($&&Y.error)H.recordException(Error(Y.error.message)),H.setAttributes({error:!0,"error.code":Y.error.code,"error.message":Y.error.message});H.end()}this.logToDatabase({toolName:W,toolArguments:Z,result:B,duration:F,isError:Boolean($)})}async logToDatabase(Y){let{ctx:Q,connectionId:X,connectionTitle:J,virtualMcpId:G}=this.options,{toolName:K,toolArguments:W,result:Z,duration:H,isError:F}=Y;if(!hh().enabled)return;let V=Q.organization?.id;if(!V)return;let B=Pf0(Z),U=w$1(Z),z=N$1(W),O=M$1(Q.metadata.properties,z);try{await Q.storage.monitoring.log({organizationId:V,connectionId:X,connectionTitle:J,toolName:K,input:W??{},output:U,isError:F,errorMessage:B,durationMs:H,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:G,properties:O})}catch(M){console.error("[MonitoringTransport] Failed to log to database:",M)}}async close(){for(let Y of this.inflightRequests.values())if(Y.span)Y.span.setAttributes({"transport.closed":!0}),Y.span.end();return this.inflightRequests.clear(),super.close()}}});var Cf0=S(()=>{wf0();Tf0()});async function Rf0(Y,Q,X=!1){let J=Y.id,G=Q.connectionId&&Q.connectionId!==J?Q.connectionId:void 0;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let K=Y.connection_headers;if(!NW(K))throw Error("STDIO connection missing parameters");let W=Of0({id:J,name:Y.title,command:K.command,args:K.args,env:K.envVars,cwd:K.cwd});return W=GI(W,(Z)=>new mN(Z,{ctx:Q,connection:Y,superUser:X}),(Z)=>new lN(Z,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),IE4(W,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let K=await XI(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new wH(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=GI(Z,(H)=>new mN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new lN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let K=await XI(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new IB(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=GI(Z,(H)=>new mN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new lN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var IE4;var If0=S(()=>{L3();um();TA();z$1();Df0();Lf0();Cf0();IE4=zf0()});function _f0(Y){if(!Y?._meta)return!1;return typeof Y._meta["mcp.mesh"]?.["tool.fn"]==="string"}function vf0(Y){return Y._meta["mcp.mesh"]["tool.fn"]}var P$1,qa8,pZ,jf0,Sf0;var A$=S(()=>{y1();P$1=q.object({title:q.string().optional(),readOnlyHint:q.boolean().optional(),destructiveHint:q.boolean().optional(),idempotentHint:q.boolean().optional(),openWorldHint:q.boolean().optional()}),qa8=q.object({"tool.fn":q.string().describe("JavaScript ES module code that exports a default async function")}),pZ=q.object({id:q.string().describe("Unique identifier for the virtual tool (auto-generated)"),name:q.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:q.string().optional().describe("Human-readable description of what the tool does"),inputSchema:q.record(q.string(),q.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:q.record(q.string(),q.unknown()).optional().describe("JSON Schema defining the tool's output (optional)"),annotations:P$1.optional().describe("MCP tool annotations"),code:q.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:q.array(q.string()).describe("Connection IDs that this tool depends on (specified by the creator)"),created_at:q.string().describe("When the virtual tool was created"),updated_at:q.string().describe("When the virtual tool was last updated")}),jf0=q.object({name:q.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:q.string().optional().describe("Human-readable description"),inputSchema:q.record(q.string(),q.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:q.record(q.string(),q.unknown()).optional().describe("JSON Schema for output"),annotations:P$1.optional().describe("MCP tool annotations"),code:q.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:q.array(q.string()).optional().describe("Connection IDs that this tool depends on. Creates indirect aggregations to prevent deletion of referenced connections.")}),Sf0=q.object({name:q.string().min(1).max(255).optional().describe("New tool name"),description:q.string().nullable().optional().describe("New description (null to clear)"),inputSchema:q.record(q.string(),q.unknown()).optional().describe("New input schema"),outputSchema:q.record(q.string(),q.unknown()).nullable().optional().describe("New output schema (null to clear)"),annotations:P$1.nullable().optional().describe("New annotations (null to clear)"),code:q.string().optional().describe("New JavaScript code"),connection_dependencies:q.array(q.string()).optional().describe("Connection IDs that this tool depends on. Replaces existing dependencies if provided.")})});function Lp(Y){return(Q)=>{if(Q instanceof w0&&Q.code===C0.MethodNotFound)return Y;throw Q}}var E$1=S(()=>{jY()});class kf0{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,Q){return this.getOrCreatePromise().then(Y,Q)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function Np(Y){return new kf0(Y)}function jE4(Y,Q,X){let J=new sX({name:`lazy-${Y.id}`,version:"1.0.0"},{capabilities:{}}),G=null;function K(){if(!G)G=pN(Y,Q,X).then((H)=>{if(Y.connection_type==="HTTP"||Y.connection_type==="SSE"||Y.connection_type==="Websocket")return C$1(H,Y.id,Y,Q,{superUser:X});return H});return G}if(Y.connection_type!=="VIRTUAL"&&Array.isArray(Y.tools)&&Y.tools.length>0)J.listTools=async()=>({tools:Y.tools.map((H)=>({name:H.name,description:H.description,inputSchema:H.inputSchema,outputSchema:H.outputSchema,annotations:H.annotations,_meta:H._meta}))});else J.listTools=async()=>{return(await K()).listTools()};J.callTool=async(H,F,$)=>{return(await K()).callTool(H,F,$)},J.listResources=async()=>{return(await K()).listResources()},J.listPrompts=async()=>{return(await K()).listPrompts()},J.getPrompt=async(H,F)=>{return(await K()).getPrompt(H,F)},J.readResource=async(H,F)=>{return(await K()).readResource(H,F)},J.callStreamableTool=async(H,F)=>{let $=await K();if("callStreamableTool"in $&&typeof $.callStreamableTool==="function")return $.callStreamableTool(H,F);let V=await $.callTool({name:H,arguments:F});return new Response(JSON.stringify(V),{headers:{"Content-Type":"application/json"}})};let Z=J.close.bind(J);return J.close=async()=>{if(G){let H=await G.catch(()=>null);if(H)await H.close().catch(()=>{})}await Z()},J}function SE4(Y,Q,X=!1){let J=new Map;for(let G of Y)J.set(G.id,jE4(G,Q,X));return J}async function yf0(Y){let Q=[];for(let[,X]of Y)Q.push(X.close().catch(()=>{}));await Promise.all(Q)}var dN;var T$1=S(()=>{R$1();E$1();Pz();J$1();A$();dN=class dN extends sX{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,Q){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=Q;this._selectionMap=new Map;for(let X of Y.virtualMcp.connections)this._selectionMap.set(X.connection_id,X);this._connections=new Map;for(let X of Y.connections)this._connections.set(X.id,X);this._clients=SE4(this.options.connections,this.ctx,this.options.superUser),this._cachedTools=Np(()=>this.loadToolsCache()),this._cachedResources=Np(()=>this.loadCache("resources")),this._cachedPrompts=Np(()=>this.loadCache("prompts"))}async loadToolsCache(){let Y=this._clients,Q=await Promise.all(Array.from(Y.entries()).map(async([W,Z])=>{try{let H=await Z.listTools().then(($)=>$.tools),F=this._selectionMap.get(W);if(F?.selected_tools?.length){let $=new Set(F.selected_tools);H=H.filter((V)=>$.has(V.name))}return{connectionId:W,data:H}}catch(H){return console.error(`[PassthroughClient] Failed to load tools for connection ${W}:`,H),null}})),X=[],J=new Map,G=new Map,K=this.options.virtualTools??[];for(let W of K){if(J.has(W.name))continue;let Z={name:W.name,description:W.description,inputSchema:W.inputSchema,outputSchema:W.outputSchema,annotations:W.annotations,_meta:{connectionId:this.options.virtualMcp.id??"__VIRTUAL__",connectionTitle:this.options.virtualMcp.title}};X.push(Z),J.set(W.name,"__VIRTUAL__"),G.set(W.name,W)}for(let W of Q){if(!W)continue;let{connectionId:Z,data:H}=W,$=this._connections.get(Z)?.title??"";for(let V of H){let B=V.name;if(J.has(B))continue;let U={...V,_meta:{connectionId:Z,connectionTitle:$,...V?._meta}};X.push(U),J.set(B,Z)}}return{data:X,mappings:J,virtualTools:G}}async loadCache(Y){let Q=this._clients,X=await Promise.all(Array.from(Q.entries()).map(async([K,W])=>{try{let Z=Y==="resources"?await W.listResources().catch(Lp({resources:[]})).then(($)=>$.resources):await W.listPrompts().catch(Lp({prompts:[]})).then(($)=>$.prompts),H=this._selectionMap.get(K),F=Y==="resources"?"selected_resources":"selected_prompts";if(H?.[F]?.length){let $=new Set(H[F]);return{connectionId:K,data:Z.filter((V)=>$.has(V.name))}}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of X){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let $ of Z){let V=$.name??$.uri;if(G.has(V))continue;let B={...$,_meta:{connectionId:W,connectionTitle:F,...$?._meta}};J.push(B),G.set(V,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let Q=await this._cachedTools,X=this._clients,J=Q.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};if(J==="__VIRTUAL__")return this.executeVirtualTool(Y.name,Y.arguments??{},Q,X);let G=X.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async executeVirtualTool(Y,Q,X,J){let G=X.virtualTools.get(Y);if(!G)return{content:[{type:"text",text:`Virtual tool not found: ${Y}`}],isError:!0};let K=vf0(G),W={};for(let[Z,H]of X.mappings){if(H==="__VIRTUAL__")continue;let F=J.get(H);if(!F)continue;W[Z]=async($)=>{let V=await F.callTool({name:Z,arguments:$});if(V.structuredContent&&typeof V.structuredContent==="object")return V.structuredContent;let B=V.content;if(B?.[0]?.type==="text"&&B[0].text)try{return JSON.parse(B[0].text)}catch{return B[0].text}return V}}try{let H=`
|
|
1472
1472
|
const __virtualToolFn = ${K.replace(/^\s*export\s+default\s+/,"").trim()};
|
|
1473
1473
|
export default async (tools) => {
|
|
1474
1474
|
const args = ${JSON.stringify(Q)};
|