@decocms/mesh 2.8.1 → 2.8.2

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.
Files changed (106) hide show
  1. package/dist/client/assets/{AlertCircle-Dq394GOj.js → AlertCircle-CEZnzBK4.js} +1 -1
  2. package/dist/client/assets/{ArrowLeft-Cy4AhM24.js → ArrowLeft-YNVHoaqm.js} +1 -1
  3. package/dist/client/assets/{ChevronDown-CmpF3JPN.js → ChevronDown-CmCEYd2s.js} +1 -1
  4. package/dist/client/assets/{Clock-CsUnrq_y.js → Clock-85E4NFdS.js} +1 -1
  5. package/dist/client/assets/{Copy01-CeZXAIR1.js → Copy01-BBFg9jKB.js} +1 -1
  6. package/dist/client/assets/{DotsHorizontal-BJYMZ_bT.js → DotsHorizontal-DJyv3R-C.js} +1 -1
  7. package/dist/client/assets/{DotsVertical--VBBwSd_.js → DotsVertical-B2qEmOww.js} +1 -1
  8. package/dist/client/assets/{File06-B3H2JkAs.js → File06-DO-M7k7I.js} +1 -1
  9. package/dist/client/assets/{FilterLines-CgywcFf-.js → FilterLines-9cG6s1wL.js} +1 -1
  10. package/dist/client/assets/{FlipBackward-YL5zje2G.js → FlipBackward-BE61TB2y.js} +1 -1
  11. package/dist/client/assets/{GitBranch01-B_llM8fW.js → GitBranch01-C1dZmKCI.js} +1 -1
  12. package/dist/client/assets/{Grid01-Cxk17PdB.js → Grid01-B2ejilI6.js} +1 -1
  13. package/dist/client/assets/{Inbox01-D4NF7IbV.js → Inbox01-B__BrgQP.js} +1 -1
  14. package/dist/client/assets/{InfoCircle-DhjyjETW.js → InfoCircle-Bb6yXfW4.js} +1 -1
  15. package/dist/client/assets/{Key01-BkL_aoS3.js → Key01-HK8q2f9G.js} +1 -1
  16. package/dist/client/assets/{LinkExternal01-Ba2KQ_mb.js → LinkExternal01-CjgaR4cl.js} +1 -1
  17. package/dist/client/assets/{Loading01-DiWXzgA5.js → Loading01-cH23qZPY.js} +1 -1
  18. package/dist/client/assets/{Lock01-DgI3hntm.js → Lock01-CV7o5W_u.js} +1 -1
  19. package/dist/client/assets/{Play-CL14Rg1E.js → Play-DOmYDSaf.js} +1 -1
  20. package/dist/client/assets/{Plus-BWImneTG.js → Plus-C3sMzSb2.js} +1 -1
  21. package/dist/client/assets/{Terminal-CQt5F5YW.js → Terminal-B_oPipdw.js} +1 -1
  22. package/dist/client/assets/{Trash01-BvRWVRVk.js → Trash01-BOhK9CaY.js} +1 -1
  23. package/dist/client/assets/{X-DFkdjEJ_.js → X-Di2SR_nX.js} +1 -1
  24. package/dist/client/assets/{XClose-BGvlobN4.js → XClose-D4FDIiiz.js} +1 -1
  25. package/dist/client/assets/{alert-dialog-Bo0wCHTm.js → alert-dialog-BCer35jC.js} +1 -1
  26. package/dist/client/assets/{auth-Bn2kG2C_.js → auth-DNL1eAzM.js} +1 -1
  27. package/dist/client/assets/{auth-catchall-Dw01-6hX.js → auth-catchall-CNdj2VJz.js} +1 -1
  28. package/dist/client/assets/{avatar-BwmT_HCo.js → avatar-D_QIlSd5.js} +1 -1
  29. package/dist/client/assets/{badge-DShTaqk1.js → badge-DCqUYVs1.js} +1 -1
  30. package/dist/client/assets/{card-XACXpswn.js → card-DDmjO8CR.js} +1 -1
  31. package/dist/client/assets/{checkbox-Zx2Kj0MJ.js → checkbox-BS_G5ImZ.js} +1 -1
  32. package/dist/client/assets/{collection-detail-CKqS5X46.js → collection-detail-DRasnD9L.js} +1 -1
  33. package/dist/client/assets/{collection-display-button-DV6veU5b.js → collection-display-button-CBDNG6XS.js} +1 -1
  34. package/dist/client/assets/{collection-header-CQEHu0Vm.js → collection-header-Cuit0QLN.js} +1 -1
  35. package/dist/client/assets/{collection-page-DfGICiNY.js → collection-page-DxiA3ghM.js} +1 -1
  36. package/dist/client/assets/{collection-search-DIntm-5W.js → collection-search-BxG7OTzn.js} +1 -1
  37. package/dist/client/assets/{collection-tab-8GGRvmhO.js → collection-tab-6VzVkwAS.js} +1 -1
  38. package/dist/client/assets/{collection-table-wrapper-BRXa6W9R.js → collection-table-wrapper-DPx6-uyv.js} +1 -1
  39. package/dist/client/assets/{connection-card-VJb0odHn.js → connection-card-Bg0hUMHn.js} +1 -1
  40. package/dist/client/assets/{connection-detail-D2jlGrQl.js → connection-detail-DRj9DRTu.js} +1 -1
  41. package/dist/client/assets/{connections-DhCYl5sj.js → connections-CT-Nb4fc.js} +1 -1
  42. package/dist/client/assets/constants-oNAwRDlk.js +1 -0
  43. package/dist/client/assets/{create-organization-dialog-mrlE4rym.js → create-organization-dialog-CC0rYuMf.js} +1 -1
  44. package/dist/client/assets/{dialog-BGoXDX0_.js → dialog-zdGaBxwi.js} +1 -1
  45. package/dist/client/assets/{dropdown-menu-4ZllijNh.js → dropdown-menu-C3Qw1eKg.js} +1 -1
  46. package/dist/client/assets/{empty-state-C3ZsBFjJ.js → empty-state-BD1JzJGu.js} +1 -1
  47. package/dist/client/assets/{env-vars-editor-DgV8E-ii.js → env-vars-editor-3MawTyRU.js} +1 -1
  48. package/dist/client/assets/{error-boundary-Dku9jcSQ.js → error-boundary-BGesyhaJ.js} +1 -1
  49. package/dist/client/assets/{extract-connection-data-BG3d1jBl.js → extract-connection-data-D2APHbQ5.js} +1 -1
  50. package/dist/client/assets/{form-CEFZ3Pjo.js → form-DbjhNzLy.js} +1 -1
  51. package/dist/client/assets/{gateway-detail-D1EDkZCK.js → gateway-detail-DURa2jZI.js} +1 -1
  52. package/dist/client/assets/{gateways-DMTv1ova.js → gateways-BTBrtb0Q.js} +1 -1
  53. package/dist/client/assets/{home-OQcy0joO.js → home-Bs5Ig8ua.js} +1 -1
  54. package/dist/client/assets/{index-Bp_cCr-y.js → index-6LdznHai.js} +1 -1
  55. package/dist/client/assets/{index-hiFGh_VX.js → index-Bfp4h1_X.js} +1 -1
  56. package/dist/client/assets/{index-DXyyF4Kh.js → index-C4Akli_y.js} +2 -2
  57. package/dist/client/assets/{index-Cw2tgmiQ.js → index-ISUndXQ9.js} +3 -3
  58. package/dist/client/assets/{input-rmH5DIfC.js → input-DotiBI6p.js} +1 -1
  59. package/dist/client/assets/{layout-CZ09RD83.js → layout-DsjrzSQc.js} +1 -1
  60. package/dist/client/assets/{lazy-highlighter-B6E7Xc6t.js → lazy-highlighter-Dw4_yzWC.js} +1 -1
  61. package/dist/client/assets/{localstorage-keys-CfUvCV28.js → localstorage-keys-Cbw-i0xB.js} +1 -1
  62. package/dist/client/assets/{login-DE_zGqKN.js → login-BsMqTksB.js} +1 -1
  63. package/dist/client/assets/{mcp-oauth-DgTE8-Le.js → mcp-oauth-B88skAsS.js} +1 -1
  64. package/dist/client/assets/{mcp-server-detail-BXjm6S5M.js → mcp-server-detail-B5xXFQ9d.js} +1 -1
  65. package/dist/client/assets/{members-DiKpQyqm.js → members-7V6nzBom.js} +1 -1
  66. package/dist/client/assets/{monaco-editor-CgmyVbSt.js → monaco-editor-CvpUgIrR.js} +1 -1
  67. package/dist/client/assets/{monitoring-DABfw2L2.js → monitoring-BbF_WXiI.js} +1 -1
  68. package/dist/client/assets/{oauth-callback-CLVMkaxX.js → oauth-callback-PquX-RwH.js} +1 -1
  69. package/dist/client/assets/{page-yVx5IrV0.js → page-BhtFLe7G.js} +1 -1
  70. package/dist/client/assets/{page-BB7B3mZl.js → page-DUKQV4B-.js} +1 -1
  71. package/dist/client/assets/{pin-to-sidebar-button-DpBpp5xE.js → pin-to-sidebar-button-BSWGT8FU.js} +1 -1
  72. package/dist/client/assets/{popover-CdZf1a6e.js → popover-CaWduoVd.js} +1 -1
  73. package/dist/client/assets/{project-context-provider-CiKTLK5w.js → project-context-provider-CjwpGeXi.js} +1 -1
  74. package/dist/client/assets/{resizable-B5HlicxS.js → resizable-BAI48t1E.js} +1 -1
  75. package/dist/client/assets/{resource-tabs-D4f0A0M5.js → resource-tabs-BRFCSYqq.js} +1 -1
  76. package/dist/client/assets/{select-DkyEajFr.js → select-Ddz2YDMz.js} +1 -1
  77. package/dist/client/assets/{settings-C9bDN2OV.js → settings-KKz6f4k7.js} +1 -1
  78. package/dist/client/assets/{shell-layout-Db7MZzNn.js → shell-layout-DPg95Lcz.js} +1 -1
  79. package/dist/client/assets/{spinner-DHB4L2Fs.js → spinner-uWjdkCaT.js} +1 -1
  80. package/dist/client/assets/{switch-C52IsWgN.js → switch-CHifjljt.js} +1 -1
  81. package/dist/client/assets/{textarea-CC9tejXR.js → textarea-D4LPxHHZ.js} +1 -1
  82. package/dist/client/assets/{thread-history-popover-CiRrI2DA.js → thread-history-popover-N7ee3Fom.js} +2 -2
  83. package/dist/client/assets/{tools-list-gZ7R3Pii.js → tools-list-D2G7Q2Ei.js} +1 -1
  84. package/dist/client/assets/{use-binding-DK1a3_Qy.js → use-binding-BEnmwZa_.js} +1 -1
  85. package/dist/client/assets/{use-connection-BjQ7rQpy.js → use-connection-DRGfApkr.js} +1 -1
  86. package/dist/client/assets/{use-connection-resources-BwfqTIS2.js → use-connection-resources-DaAINPef.js} +1 -1
  87. package/dist/client/assets/{use-gateway-DV-fzrfg.js → use-gateway-BLvEfmJw.js} +1 -1
  88. package/dist/client/assets/{use-gateway-system-prompt-Bp36i1V_.js → use-gateway-system-prompt-CCBqlzxU.js} +1 -1
  89. package/dist/client/assets/{use-list-state-DndBNJy3.js → use-list-state-CB2CSejS.js} +1 -1
  90. package/dist/client/assets/{use-mcp-BF6NYpCZ.js → use-mcp-CNznMUGm.js} +1 -1
  91. package/dist/client/assets/{use-members-DLvSDcRE.js → use-members-D--4LRKi.js} +1 -1
  92. package/dist/client/assets/{use-mobile-m2kl2-uH.js → use-mobile-CjWnbjwQ.js} +1 -1
  93. package/dist/client/assets/{use-organization-settings-Bmp2ntDK.js → use-organization-settings-BchwsUUI.js} +1 -1
  94. package/dist/client/assets/{use-tool-call-DZ0ZbMPs.js → use-tool-call-DKS5g1oj.js} +1 -1
  95. package/dist/client/assets/{useQueries-DPsMIoOD.js → useQueries-BTessZmq.js} +1 -1
  96. package/dist/client/assets/useQuery-B-W0X26_.js +1 -0
  97. package/dist/client/assets/{value-BpB2LzX8.js → value-DFK3h8tC.js} +1 -1
  98. package/dist/client/assets/{view-mode-toggle-xLI4kETG.js → view-mode-toggle-BWDHvHnZ.js} +1 -1
  99. package/dist/client/assets/{workflow-BYSB48K6.js → workflow-DCCuzPym.js} +1 -1
  100. package/dist/client/index.html +1 -1
  101. package/dist/server/cli.js +2 -2
  102. package/dist/server/migrate.js +1 -1
  103. package/dist/server/server.js +2 -2
  104. package/package.json +1 -1
  105. package/dist/client/assets/constants-CDSKdq1h.js +0 -1
  106. package/dist/client/assets/useQuery-oHrwmpwH.js +0 -1
@@ -1048,7 +1048,7 @@ Please refer to the documentation here: https://better-auth.com/docs/plugins/org
1048
1048
  </script>
1049
1049
  <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference" ${J}></script>
1050
1050
  </body>
1051
- </html>`},Yd=(Q)=>{let X=Q?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:R0("/open-api/generate-schema",{method:"GET"},async(Y)=>{let J=await t$0(Y.context,Y.context.options);return Y.json(J)}),openAPIReference:R0(X,{method:"GET",metadata:{isAction:!1}},async(Y)=>{if(Q?.disableDefaultReference)throw new p("NOT_FOUND");let J=await t$0(Y.context,Y.context.options);return new Response(WT4(J,Q?.theme,Q?.nonce),{headers:{"Content-Type":"text/html"}})})}}};HQ();z5();A8();K9();e0();var cs6=g6(async()=>{return{}}),ns6=g6({use:[c1]},async(Q)=>{return{session:Q.context.session}}),is6=z1({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var as6=Number.POSITIVE_INFINITY;var QH0=M(),KT4=W4(["pending","accepted","rejected","canceled"]).default("pending"),rs6=m({id:M().default(h8),name:M(),slug:M(),logo:M().nullish().optional(),metadata:l0(M(),i6()).or(M().transform((Q)=>JSON.parse(Q))).optional(),createdAt:f4()}),os6=m({id:M().default(h8),organizationId:M(),userId:E4.string(),role:QH0,createdAt:f4().default(()=>new Date)}),ss6=m({id:M().default(h8),organizationId:M(),email:M(),role:QH0,status:KT4,teamId:M().nullish(),inviterId:M(),expiresAt:f4(),createdAt:f4().default(()=>new Date)}),ts6=m({id:M().default(h8),name:M().min(1),organizationId:M(),createdAt:f4(),updatedAt:f4().optional()}),es6=m({id:M().default(h8),teamId:M(),userId:M(),createdAt:f4().default(()=>new Date)}),Qt6=m({id:M().default(h8),organizationId:M(),role:M(),permission:l0(M(),N0(M())),createdAt:f4().default(()=>new Date),updatedAt:f4().optional()}),e$0=["admin","member","owner"],Xt6=x4([W4(e$0),N0(W4(e$0))]);a1();A8();K9();var qt6=z1({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});a1();FQ();A8();K9();X9();v1();var $T4=z1({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});A8();K9();var HT4=z1({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var rF={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as XH0,readFileSync as YH0}from"fs";var _j={emailAndPassword:{enabled:!0}},JH0=process.env.CONFIG_PATH||"./config.json",GH0=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function FT4(){if(XH0(JH0))try{let Q=YH0(JH0,"utf-8"),X=JSON.parse(Q);return{auth:_j,monitoring:rF,...X}}catch{return{auth:_j,monitoring:rF}}if(XH0(GH0))try{let Q=YH0(GH0,"utf-8");return{auth:JSON.parse(Q),monitoring:rF}}catch{return{auth:_j,monitoring:rF}}return{auth:_j,monitoring:rF}}var Jd=FT4();import{existsSync as sK6,mkdirSync as tK6}from"fs";import{Kysely as yi0,PostgresDialect as bi0,sql as _i0}from"kysely";import{BunWorkerDialect as fi0}from"kysely-bun-worker";import*as hi0 from"path";var cY=n1(yd(),1),F41=cY.default.Client,xd=cY.default.Pool,q41=cY.default.Connection,V41=cY.default.types,z41=cY.default.Query,U41=cY.default.DatabaseError,B41=cY.default.escapeIdentifier,D41=cY.default.escapeLiteral,N41=cY.default.Result,O41=cY.default.TypeOverrides,L41=cY.default.defaults;var eR=n1(G4(),1),Ri0=n1(Li0(),1),Si0=n1(Ci0(),1),vi0=n1(wo(),1),rK6=new Si0.PrometheusExporter({preventServerStart:!0}),oK6=new Ri0.NodeSDK({serviceName:"mcp-mesh",traceExporter:new vi0.OTLPTraceExporter({url:process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_ENDPOINT||"http://localhost:4318/v1/traces"}),metricReader:rK6});oK6.start();var YK1=eR.trace.getTracer("mcp-mesh","1.0.0"),ki0=eR.metrics.getMeter("mcp-mesh","1.0.0");var eK6=ki0.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),Q36=1000,xi0=(Q)=>{let X={"db.statement":Q.query.sql,"db.status":Q.level==="error"?"error":"success"};if(Q.queryDurationMillis>Q36)console.error("Slow query detected:",{durationMs:Q.queryDurationMillis,sql:Q.query.sql,params:Q.query.parameters});if(eK6.record(Q.queryDurationMillis,X),Q.level==="error")console.error("Query failed:",{durationMs:Q.queryDurationMillis,error:Q.error,sql:Q.query.sql})},gi0={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function X36(Q){let X=new xd({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...gi0}),Y=new bi0({pool:X});return{type:"postgres",db:new yi0({dialect:Y,log:xi0}),pool:X}}function ui0(Q){if(Q===":memory:")return":memory:";if(Q.includes("://"))return new URL(Q).pathname;return Q}function mi0(Q){if(Q!==":memory:"&&Q!=="/"&&Q){let X=Q.substring(0,Q.lastIndexOf("/"));if(X&&X!=="/"&&!sK6(X))try{tK6(X,{recursive:!0})}catch{return console.warn(`Failed to create directory ${X}, using in-memory database`),":memory:"}}return Q}function Y36(Q){let X=ui0(Q.connectionString);X=mi0(X);let Y=new fi0({url:X||":memory:"}),J=new yi0({dialect:Y,log:xi0});if(X!==":memory:"&&Q.options?.enableWAL!==!1)_i0`PRAGMA journal_mode = WAL;`.execute(J).catch(()=>{});if(X!==":memory:"){let G=Q.options?.busyTimeout||5000;_i0`PRAGMA busy_timeout = ${G};`.execute(J).catch(()=>{})}return{type:"sqlite",db:J}}function li0(Q){let X=Q||"file:./data/mesh.db";if(X===":memory:")return{type:"sqlite",connectionString:":memory:"};X=X.startsWith("/")?`file://${X}`:X;let Y=URL.canParse(X)?new URL(X):null,J=Y?.protocol.replace(":","")??X.split("://")[0];switch(J){case"postgres":case"postgresql":return{type:"postgres",connectionString:X};case"sqlite":case"file":if(!Y?.pathname)throw Error("Invalid database URL: "+X);return{type:"sqlite",connectionString:Y.pathname};default:throw Error(`Unsupported database protocol: ${J}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function ao(){return process.env.DATABASE_URL||`file:${hi0.join(process.cwd(),"data/mesh.db")}`}function di0(Q){let X=li0(Q);if(X.type==="postgres")return new bi0({pool:new xd({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...gi0})});let Y=ui0(X.connectionString);return Y=mi0(Y),new fi0({url:Y||":memory:"})}function J36(Q){let X=li0(Q);if(X.type==="postgres")return X36(X);return Y36(X)}async function pi0(Q){if(await Q.db.destroy(),Q.type==="postgres"&&!Q.pool.ended)await Q.pool.end()}var io=null;function cO(){if(!io)io=J36(ao());return io}class ro{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:Q,from:X,subject:Y,html:J})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class oo{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:Q}]}],from:{email:X},subject:Y,content:[{type:"text/html",value:J}]})});if(!G.ok){let Z=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${Z}`)}}}var G36=(Q)=>{let X=new ro(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},W36=(Q)=>{let X=new oo(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},Z36={resend:G36,sendgrid:W36};function QS(Q){let X=Z36[Q.provider];if(!X)throw Error(`Unknown email provider: ${Q.provider}`);return X(Q)}function XS(Q,X){return Q.find((Y)=>Y.id===X)}var ci0=(Q,X)=>{let Y=XS(X,Q.emailProviderId);if(!Y)throw Error(`Email provider with id '${Q.emailProviderId}' not found`);let J=QS(Y);return{sendMagicLink:async({email:G,url:Z})=>{await J({to:G,subject:"Magic Link",html:`<p>Click <a href="${Z}">here</a> to login</p>`})}}};JS();import{createCipheriv as K36,createDecipheriv as $36,randomBytes as ri0}from"crypto";var oi0="aes-256-gcm",nO=16,si0=16,ti0=32;class so{key;constructor(Q){if(Buffer.from(Q,"base64").length===ti0)this.key=Buffer.from(Q,"base64");else{let X=z0("crypto");this.key=X.createHash("sha256").update(Q).digest()}}async encrypt(Q){let X=ri0(nO),Y=K36(oi0,this.key,X),J=Y.update(Q,"utf8");J=Buffer.concat([J,Y.final()]);let G=Y.getAuthTag();return Buffer.concat([X,G,J]).toString("base64")}async decrypt(Q){let X=Buffer.from(Q,"base64"),Y=X.subarray(0,nO),J=X.subarray(nO,nO+si0),G=X.subarray(nO+si0),Z=$36(oi0,this.key,Y);Z.setAuthTag(J);let W=Z.update(G);return W=Buffer.concat([W,Z.final()]),W.toString("utf8")}static generateKey(){return ri0(ti0).toString("base64")}}_Z();GS();var B36=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class to{db;vault;constructor(Q,X){this.db=Q;this.vault=X}async create(Q){let X=Q.id??zG("conn"),Y=new Date().toISOString(),J=await this.findById(X);if(J){if(J.organization_id!==Q.organization_id)throw Error("Connection ID already exists");return this.update(X,Q)}let G=await this.serializeConnection({...Q,id:Q.id??X,status:"active",created_at:Y,updated_at:Y});await this.db.insertInto("connections").values(G).execute();let Z=await this.findById(X);if(!Z)throw Error(`Failed to create connection with id: ${X}`);return Z}async findById(Q,X){let Y=this.db.selectFrom("connections").selectAll().where("id","=",Q);if(X)Y=Y.where("organization_id","=",X);let J=await Y.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Q){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).execute();return Promise.all(X.map((Y)=>this.deserializeConnection(Y)))}async update(Q,X){if(Object.keys(X).length===0){let G=await this.findById(Q);if(!G)throw Error("Connection not found");return G}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Y).where("id","=",Q).execute();let J=await this.findById(Q);if(!J)throw Error("Connection not found after update");return J}async delete(Q){await this.db.deleteFrom("connections").where("id","=",Q).execute()}async testConnection(Q,X){let Y=await this.findById(Q);if(!Y)throw Error("Connection not found");let J=Date.now();if(Y.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-J};if(!Y.connection_url)return{healthy:!1,latencyMs:Date.now()-J};try{let G=Y.connection_headers,Z=await fetch(Y.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...Y.connection_token&&{Authorization:`Bearer ${Y.connection_token}`},...G?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:Z.ok||Z.status===404,latencyMs:Date.now()-J}}catch{return{healthy:!1,latencyMs:Date.now()-J}}}async serializeConnection(Q){let X={};for(let[Y,J]of Object.entries(Q)){if(J===void 0)continue;if(Y==="connection_token"&&J)X[Y]=await this.vault.encrypt(J);else if(Y==="configuration_state"&&J){let G=JSON.stringify(J);X[Y]=await this.vault.encrypt(G)}else if(Y==="connection_headers"&&J){let G=J;if(iO(G)&&G.envVars){let Z={};for(let[W,K]of Object.entries(G.envVars))Z[W]=await this.vault.encrypt(K);X[Y]=JSON.stringify({...G,envVars:Z})}else X[Y]=JSON.stringify(G)}else if(B36.includes(Y))X[Y]=J?JSON.stringify(J):null;else X[Y]=J}return X}async deserializeConnection(Q){let X=null;if(Q.connection_token)try{X=await this.vault.decrypt(Q.connection_token)}catch(Z){console.error("Failed to decrypt connection token:",Z)}let Y=null;if(Q.configuration_state)try{let Z=await this.vault.decrypt(Q.configuration_state);Y=JSON.parse(Z)}catch(Z){console.error("Failed to decrypt configuration state:",Z)}let J=null;if(Q.connection_headers)try{let Z=JSON.parse(Q.connection_headers);if(iO(Z)&&Z.envVars){let W={};for(let[K,$]of Object.entries(Z.envVars))try{W[K]=await this.vault.decrypt($)}catch{W[K]=$}J={...Z,envVars:W}}else J=Z}catch(Z){console.error("Failed to parse connection_headers:",Z)}let G=(Z)=>{if(Z===null)return null;if(typeof Z==="string")try{return JSON.parse(Z)}catch{return null}return Z};return{id:Q.id,organization_id:Q.organization_id,created_by:Q.created_by,title:Q.title,description:Q.description,icon:Q.icon,app_name:Q.app_name,app_id:Q.app_id,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:X,connection_headers:J,oauth_config:G(Q.oauth_config),configuration_state:Y,configuration_scopes:G(Q.configuration_scopes),metadata:G(Q.metadata),tools:G(Q.tools),bindings:G(Q.bindings),status:Q.status,created_at:Q.created_at,updated_at:Q.updated_at}}}GS();class eo{db;constructor(Q){this.db=Q}async create(Q,X,Y){let J=zG("gw"),G=new Date().toISOString();if(Y.isDefault)return await this.db.transaction().execute(async(W)=>{if(await W.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:X}).where("organization_id","=",Q).where("is_default","=",1).execute(),await W.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:1,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await W.insertInto("gateway_connections").values(Y.connections.map(($)=>({id:zG("gwc"),gateway_id:J,connection_id:$.connectionId,selected_tools:$.selectedTools?JSON.stringify($.selectedTools):null,selected_resources:$.selectedResources?JSON.stringify($.selectedResources):null,selected_prompts:$.selectedPrompts?JSON.stringify($.selectedPrompts):null,created_at:G}))).execute();let K=await this.findByIdInternal(W,J);if(!K)throw Error(`Failed to create gateway with id: ${J}`);return K});if(await this.db.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:0,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((W)=>({id:zG("gwc"),gateway_id:J,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:G}))).execute();let Z=await this.findById(J);if(!Z)throw Error(`Failed to create gateway with id: ${J}`);return Z}async findById(Q){return this.findByIdInternal(this.db,Q)}async findByIdInternal(Q,X){let Y=await Q.selectFrom("gateways").selectAll().where("id","=",X).executeTakeFirst();if(!Y)return null;let J=await Q.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X).execute();return this.deserializeGatewayWithConnections(Y,J)}async list(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).execute(),Y=X.map((Z)=>Z.id);if(Y.length===0)return[];let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Y).execute(),G=new Map;for(let Z of J){let W=G.get(Z.gateway_id)??[];W.push(Z),G.set(Z.gateway_id,W)}return X.map((Z)=>this.deserializeGatewayWithConnections(Z,G.get(Z.id)??[]))}async listByConnectionId(Q,X){let J=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",X).execute()).map(($)=>$.gateway_id);if(J.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",J).where("organization_id","=",Q).execute();if(G.length===0)return[];let Z=G.map(($)=>$.id),W=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Z).execute(),K=new Map;for(let $ of W){let H=K.get($.gateway_id)??[];H.push($),K.set($.gateway_id,H)}return G.map(($)=>this.deserializeGatewayWithConnections($,K.get($.id)??[]))}async update(Q,X,Y){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Y.title!==void 0)G.title=Y.title;if(Y.description!==void 0)G.description=Y.description;if(Y.toolSelectionStrategy!==void 0)G.tool_selection_strategy=Y.toolSelectionStrategy;if(Y.toolSelectionMode!==void 0)G.tool_selection_mode=Y.toolSelectionMode;if(Y.icon!==void 0)G.icon=Y.icon;if(Y.status!==void 0)G.status=Y.status;if(Y.isDefault===!1)G.is_default=0;if(Y.isDefault===!0)G.is_default=1;if(Y.isDefault===!0){let W=await this.findById(Q);if(!W)throw Error(`Gateway not found: ${Q}`);await this.db.transaction().execute(async(K)=>{if(await K.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",W.organizationId).where("is_default","=",1).execute(),await K.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await K.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await K.insertInto("gateway_connections").values(Y.connections.map(($)=>({id:zG("gwc"),gateway_id:Q,connection_id:$.connectionId,selected_tools:$.selectedTools?JSON.stringify($.selectedTools):null,selected_resources:$.selectedResources?JSON.stringify($.selectedResources):null,selected_prompts:$.selectedPrompts?JSON.stringify($.selectedPrompts):null,created_at:J}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((W)=>({id:zG("gwc"),gateway_id:Q,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:J}))).execute()}let Z=await this.findById(Q);if(!Z)throw Error("Gateway not found after update");return Z}async delete(Q){await this.db.deleteFrom("gateways").where("id","=",Q).execute()}async getDefaultByOrgId(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).where("is_default","=",1).executeTakeFirst();if(!X)return null;let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X.id).execute();return this.deserializeGatewayWithConnections(X,Y)}async getDefaultByOrgSlug(Q){let X=await this.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst();if(!X)return null;return this.getDefaultByOrgId(X.id)}async setDefault(Q,X){let Y=await this.findById(Q);if(!Y)throw Error(`Gateway not found: ${Q}`);let J=new Date().toISOString();await this.db.transaction().execute(async(Z)=>{await Z.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Y.organizationId).where("is_default","=",1).execute(),await Z.updateTable("gateways").set({is_default:1,updated_at:J,updated_by:X}).where("id","=",Q).execute()});let G=await this.findById(Q);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(Q,X){return{...this.deserializeGateway(Q),connections:X.map((J)=>({connectionId:J.connection_id,selectedTools:this.parseJson(J.selected_tools),selectedResources:this.parseJson(J.selected_resources),selectedPrompts:this.parseJson(J.selected_prompts)}))}}deserializeGateway(Q){return{id:Q.id,organizationId:Q.organization_id,title:Q.title,description:Q.description,toolSelectionStrategy:this.parseToolSelectionStrategy(Q.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(Q.tool_selection_mode),icon:Q.icon,status:Q.status,isDefault:Q.is_default===1,createdAt:Q.created_at,updatedAt:Q.updated_at,createdBy:Q.created_by,updatedBy:Q.updated_by}}parseToolSelectionStrategy(Q){if(Q==="smart_tool_selection")return"smart_tool_selection";if(Q==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(Q){if(Q==="exclusion")return"exclusion";return"inclusion"}parseJson(Q){if(Q===null)return null;if(typeof Q==="string")try{return JSON.parse(Q)}catch{return null}return Q}}Xk();e0();function ZM6(Q){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (O14(),N14));return X.map((Y)=>{return{name:Y.name,inputSchema:w.toJSONSchema(Y.inputSchema,{unrepresentable:"any"}),outputSchema:Y.outputSchema?w.toJSONSchema(Y.outputSchema,{unrepresentable:"any"}):void 0,description:Y.description}})},data:ai0(process.env.BASE_URL||"http://localhost:3000")},{data:ii0()},{data:ni0(Q)}]}async function L14(Q,X){try{let Y=cO(),J=new so(process.env.ENCRYPTION_KEY||""),G=new to(Y.db,J),Z=new eo(Y.db),W=ZM6(Q),K=[];await Promise.all(W.map(async($)=>{let H=null;if($.permissions)H=(await Wz.api.createApiKey({body:{name:`${$.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:$.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Q},purpose:"default-org-connections"}}}))?.key;let F=await $.getTools?.()??await eV({id:"pending",title:$.data.title,connection_type:$.data.connection_type,connection_url:$.data.connection_url,connection_token:$.data.connection_token,connection_headers:$.data.connection_headers}).catch(()=>null),q=$.data.id?$.data.id.startsWith(`${Q}_`)?$.data.id:`${Q}_${$.data.id}`:void 0,V=await G.create({...$.data,id:q,tools:F,organization_id:Q,created_by:X,connection_token:$.data.connection_token??H});K.push(V.id)})),await Z.create(Q,X,{title:"Organization Agent",description:"Use all organization connections into a single agent",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:K.map(($)=>({connectionId:$}))})}catch(Y){console.error("Error creating default MCP connections:",Y)}}var w14=["owner","admin"];var KM6=(Q)=>{return{defaultSSO:[{domain:Q.domain,providerId:Q.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Q.MS_CLIENT_ID,clientSecret:Q.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Q.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},M14=(Q)=>{if(Q.providerId==="microsoft")return KM6(Q);throw Error(`Unsupported provider: ${Q.providerId}`)};function $M6(Q){return Q.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var P14=["labs","agent","studio","workspace","systems","core","cloud","works"],T14=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function HM6(){let Q=Math.floor(Math.random()*T14.length),X=Math.floor(Math.random()*P14.length),Y=T14[Q]??"deco",J=P14[X]??"studio";return`${Y}-${J}`}var FM6=Object.values(zx()).map((Q)=>Q.map((X)=>X.name)).flat(),qM6={...Lj,self:["*",...FM6]},Fk=c5(qM6),VM6=Fk.newRole({self:["*"],...hD.statements}),zM6=Fk.newRole({self:["*"],...hD.statements}),UM6=Fk.newRole({self:["*"],...hD.statements}),A14=Object.values(zx()).map((Q)=>Q.map((X)=>`self:${X.name}`)).flat(),qY=Jd.auth,E14=void 0;if(qY.inviteEmailProviderId&&qY.emailProviders&&qY.emailProviders.length>0){let Q=XS(qY.emailProviders,qY.inviteEmailProviderId);if(Q){let X=QS(Q);E14=async(Y)=>{let J=Y.inviter.user?.name||Y.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${Y.invitation.id}`;await X({to:Y.email,subject:`Invitation to join ${Y.organization.name}`,html:`
1051
+ </html>`},Yd=(Q)=>{let X=Q?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:R0("/open-api/generate-schema",{method:"GET"},async(Y)=>{let J=await t$0(Y.context,Y.context.options);return Y.json(J)}),openAPIReference:R0(X,{method:"GET",metadata:{isAction:!1}},async(Y)=>{if(Q?.disableDefaultReference)throw new p("NOT_FOUND");let J=await t$0(Y.context,Y.context.options);return new Response(WT4(J,Q?.theme,Q?.nonce),{headers:{"Content-Type":"text/html"}})})}}};HQ();z5();A8();K9();e0();var cs6=g6(async()=>{return{}}),ns6=g6({use:[c1]},async(Q)=>{return{session:Q.context.session}}),is6=z1({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var as6=Number.POSITIVE_INFINITY;var QH0=M(),KT4=W4(["pending","accepted","rejected","canceled"]).default("pending"),rs6=m({id:M().default(h8),name:M(),slug:M(),logo:M().nullish().optional(),metadata:l0(M(),i6()).or(M().transform((Q)=>JSON.parse(Q))).optional(),createdAt:f4()}),os6=m({id:M().default(h8),organizationId:M(),userId:E4.string(),role:QH0,createdAt:f4().default(()=>new Date)}),ss6=m({id:M().default(h8),organizationId:M(),email:M(),role:QH0,status:KT4,teamId:M().nullish(),inviterId:M(),expiresAt:f4(),createdAt:f4().default(()=>new Date)}),ts6=m({id:M().default(h8),name:M().min(1),organizationId:M(),createdAt:f4(),updatedAt:f4().optional()}),es6=m({id:M().default(h8),teamId:M(),userId:M(),createdAt:f4().default(()=>new Date)}),Qt6=m({id:M().default(h8),organizationId:M(),role:M(),permission:l0(M(),N0(M())),createdAt:f4().default(()=>new Date),updatedAt:f4().optional()}),e$0=["admin","member","owner"],Xt6=x4([W4(e$0),N0(W4(e$0))]);a1();A8();K9();var qt6=z1({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});a1();FQ();A8();K9();X9();v1();var $T4=z1({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});A8();K9();var HT4=z1({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var rF={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as XH0,readFileSync as YH0}from"fs";var _j={emailAndPassword:{enabled:!0}},JH0=process.env.CONFIG_PATH||"./config.json",GH0=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function FT4(){if(XH0(JH0))try{let Q=YH0(JH0,"utf-8"),X=JSON.parse(Q);return{auth:_j,monitoring:rF,...X}}catch{return{auth:_j,monitoring:rF}}if(XH0(GH0))try{let Q=YH0(GH0,"utf-8");return{auth:JSON.parse(Q),monitoring:rF}}catch{return{auth:_j,monitoring:rF}}return{auth:_j,monitoring:rF}}var Jd=FT4();import{existsSync as sK6,mkdirSync as tK6}from"fs";import{Kysely as yi0,PostgresDialect as bi0,sql as _i0}from"kysely";import{BunWorkerDialect as fi0}from"kysely-bun-worker";import*as hi0 from"path";var cY=n1(yd(),1),F41=cY.default.Client,xd=cY.default.Pool,q41=cY.default.Connection,V41=cY.default.types,z41=cY.default.Query,U41=cY.default.DatabaseError,B41=cY.default.escapeIdentifier,D41=cY.default.escapeLiteral,N41=cY.default.Result,O41=cY.default.TypeOverrides,L41=cY.default.defaults;var eR=n1(G4(),1),Ri0=n1(Li0(),1),Si0=n1(Ci0(),1),vi0=n1(wo(),1),rK6=new Si0.PrometheusExporter({preventServerStart:!0}),oK6=new Ri0.NodeSDK({serviceName:"mcp-mesh",traceExporter:new vi0.OTLPTraceExporter({url:process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_ENDPOINT||"http://localhost:4318/v1/traces"}),metricReader:rK6});oK6.start();var YK1=eR.trace.getTracer("mcp-mesh","1.0.0"),ki0=eR.metrics.getMeter("mcp-mesh","1.0.0");var eK6=ki0.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),Q36=400,xi0=(Q)=>{let X={"db.statement":Q.query.sql,"db.status":Q.level==="error"?"error":"success"};if(Q.queryDurationMillis>Q36)console.error("Slow query detected:",{durationMs:Q.queryDurationMillis,sql:Q.query.sql,params:Q.query.parameters});if(eK6.record(Q.queryDurationMillis,X),Q.level==="error")console.error("Query failed:",{durationMs:Q.queryDurationMillis,error:Q.error,sql:Q.query.sql})},gi0={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function X36(Q){let X=new xd({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...gi0}),Y=new bi0({pool:X});return{type:"postgres",db:new yi0({dialect:Y,log:xi0}),pool:X}}function ui0(Q){if(Q===":memory:")return":memory:";if(Q.includes("://"))return new URL(Q).pathname;return Q}function mi0(Q){if(Q!==":memory:"&&Q!=="/"&&Q){let X=Q.substring(0,Q.lastIndexOf("/"));if(X&&X!=="/"&&!sK6(X))try{tK6(X,{recursive:!0})}catch{return console.warn(`Failed to create directory ${X}, using in-memory database`),":memory:"}}return Q}function Y36(Q){let X=ui0(Q.connectionString);X=mi0(X);let Y=new fi0({url:X||":memory:"}),J=new yi0({dialect:Y,log:xi0});if(X!==":memory:"&&Q.options?.enableWAL!==!1)_i0`PRAGMA journal_mode = WAL;`.execute(J).catch(()=>{});if(X!==":memory:"){let G=Q.options?.busyTimeout||5000;_i0`PRAGMA busy_timeout = ${G};`.execute(J).catch(()=>{})}return{type:"sqlite",db:J}}function li0(Q){let X=Q||"file:./data/mesh.db";if(X===":memory:")return{type:"sqlite",connectionString:":memory:"};X=X.startsWith("/")?`file://${X}`:X;let Y=URL.canParse(X)?new URL(X):null,J=Y?.protocol.replace(":","")??X.split("://")[0];switch(J){case"postgres":case"postgresql":return{type:"postgres",connectionString:X};case"sqlite":case"file":if(!Y?.pathname)throw Error("Invalid database URL: "+X);return{type:"sqlite",connectionString:Y.pathname};default:throw Error(`Unsupported database protocol: ${J}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function ao(){return process.env.DATABASE_URL||`file:${hi0.join(process.cwd(),"data/mesh.db")}`}function di0(Q){let X=li0(Q);if(X.type==="postgres")return new bi0({pool:new xd({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...gi0})});let Y=ui0(X.connectionString);return Y=mi0(Y),new fi0({url:Y||":memory:"})}function J36(Q){let X=li0(Q);if(X.type==="postgres")return X36(X);return Y36(X)}async function pi0(Q){if(await Q.db.destroy(),Q.type==="postgres"&&!Q.pool.ended)await Q.pool.end()}var io=null;function cO(){if(!io)io=J36(ao());return io}class ro{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:Q,from:X,subject:Y,html:J})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class oo{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:Q}]}],from:{email:X},subject:Y,content:[{type:"text/html",value:J}]})});if(!G.ok){let Z=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${Z}`)}}}var G36=(Q)=>{let X=new ro(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},W36=(Q)=>{let X=new oo(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},Z36={resend:G36,sendgrid:W36};function QS(Q){let X=Z36[Q.provider];if(!X)throw Error(`Unknown email provider: ${Q.provider}`);return X(Q)}function XS(Q,X){return Q.find((Y)=>Y.id===X)}var ci0=(Q,X)=>{let Y=XS(X,Q.emailProviderId);if(!Y)throw Error(`Email provider with id '${Q.emailProviderId}' not found`);let J=QS(Y);return{sendMagicLink:async({email:G,url:Z})=>{await J({to:G,subject:"Magic Link",html:`<p>Click <a href="${Z}">here</a> to login</p>`})}}};JS();import{createCipheriv as K36,createDecipheriv as $36,randomBytes as ri0}from"crypto";var oi0="aes-256-gcm",nO=16,si0=16,ti0=32;class so{key;constructor(Q){if(Buffer.from(Q,"base64").length===ti0)this.key=Buffer.from(Q,"base64");else{let X=z0("crypto");this.key=X.createHash("sha256").update(Q).digest()}}async encrypt(Q){let X=ri0(nO),Y=K36(oi0,this.key,X),J=Y.update(Q,"utf8");J=Buffer.concat([J,Y.final()]);let G=Y.getAuthTag();return Buffer.concat([X,G,J]).toString("base64")}async decrypt(Q){let X=Buffer.from(Q,"base64"),Y=X.subarray(0,nO),J=X.subarray(nO,nO+si0),G=X.subarray(nO+si0),Z=$36(oi0,this.key,Y);Z.setAuthTag(J);let W=Z.update(G);return W=Buffer.concat([W,Z.final()]),W.toString("utf8")}static generateKey(){return ri0(ti0).toString("base64")}}_Z();GS();var B36=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class to{db;vault;constructor(Q,X){this.db=Q;this.vault=X}async create(Q){let X=Q.id??zG("conn"),Y=new Date().toISOString(),J=await this.findById(X);if(J){if(J.organization_id!==Q.organization_id)throw Error("Connection ID already exists");return this.update(X,Q)}let G=await this.serializeConnection({...Q,id:Q.id??X,status:"active",created_at:Y,updated_at:Y});await this.db.insertInto("connections").values(G).execute();let Z=await this.findById(X);if(!Z)throw Error(`Failed to create connection with id: ${X}`);return Z}async findById(Q,X){let Y=this.db.selectFrom("connections").selectAll().where("id","=",Q);if(X)Y=Y.where("organization_id","=",X);let J=await Y.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Q){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).execute();return Promise.all(X.map((Y)=>this.deserializeConnection(Y)))}async update(Q,X){if(Object.keys(X).length===0){let G=await this.findById(Q);if(!G)throw Error("Connection not found");return G}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Y).where("id","=",Q).execute();let J=await this.findById(Q);if(!J)throw Error("Connection not found after update");return J}async delete(Q){await this.db.deleteFrom("connections").where("id","=",Q).execute()}async testConnection(Q,X){let Y=await this.findById(Q);if(!Y)throw Error("Connection not found");let J=Date.now();if(Y.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-J};if(!Y.connection_url)return{healthy:!1,latencyMs:Date.now()-J};try{let G=Y.connection_headers,Z=await fetch(Y.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...Y.connection_token&&{Authorization:`Bearer ${Y.connection_token}`},...G?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:Z.ok||Z.status===404,latencyMs:Date.now()-J}}catch{return{healthy:!1,latencyMs:Date.now()-J}}}async serializeConnection(Q){let X={};for(let[Y,J]of Object.entries(Q)){if(J===void 0)continue;if(Y==="connection_token"&&J)X[Y]=await this.vault.encrypt(J);else if(Y==="configuration_state"&&J){let G=JSON.stringify(J);X[Y]=await this.vault.encrypt(G)}else if(Y==="connection_headers"&&J){let G=J;if(iO(G)&&G.envVars){let Z={};for(let[W,K]of Object.entries(G.envVars))Z[W]=await this.vault.encrypt(K);X[Y]=JSON.stringify({...G,envVars:Z})}else X[Y]=JSON.stringify(G)}else if(B36.includes(Y))X[Y]=J?JSON.stringify(J):null;else X[Y]=J}return X}async deserializeConnection(Q){let X=null;if(Q.connection_token)try{X=await this.vault.decrypt(Q.connection_token)}catch(Z){console.error("Failed to decrypt connection token:",Z)}let Y=null;if(Q.configuration_state)try{let Z=await this.vault.decrypt(Q.configuration_state);Y=JSON.parse(Z)}catch(Z){console.error("Failed to decrypt configuration state:",Z)}let J=null;if(Q.connection_headers)try{let Z=JSON.parse(Q.connection_headers);if(iO(Z)&&Z.envVars){let W={};for(let[K,$]of Object.entries(Z.envVars))try{W[K]=await this.vault.decrypt($)}catch{W[K]=$}J={...Z,envVars:W}}else J=Z}catch(Z){console.error("Failed to parse connection_headers:",Z)}let G=(Z)=>{if(Z===null)return null;if(typeof Z==="string")try{return JSON.parse(Z)}catch{return null}return Z};return{id:Q.id,organization_id:Q.organization_id,created_by:Q.created_by,title:Q.title,description:Q.description,icon:Q.icon,app_name:Q.app_name,app_id:Q.app_id,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:X,connection_headers:J,oauth_config:G(Q.oauth_config),configuration_state:Y,configuration_scopes:G(Q.configuration_scopes),metadata:G(Q.metadata),tools:G(Q.tools),bindings:G(Q.bindings),status:Q.status,created_at:Q.created_at,updated_at:Q.updated_at}}}GS();class eo{db;constructor(Q){this.db=Q}async create(Q,X,Y){let J=zG("gw"),G=new Date().toISOString();if(Y.isDefault)return await this.db.transaction().execute(async(W)=>{if(await W.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:X}).where("organization_id","=",Q).where("is_default","=",1).execute(),await W.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:1,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await W.insertInto("gateway_connections").values(Y.connections.map(($)=>({id:zG("gwc"),gateway_id:J,connection_id:$.connectionId,selected_tools:$.selectedTools?JSON.stringify($.selectedTools):null,selected_resources:$.selectedResources?JSON.stringify($.selectedResources):null,selected_prompts:$.selectedPrompts?JSON.stringify($.selectedPrompts):null,created_at:G}))).execute();let K=await this.findByIdInternal(W,J);if(!K)throw Error(`Failed to create gateway with id: ${J}`);return K});if(await this.db.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:0,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((W)=>({id:zG("gwc"),gateway_id:J,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:G}))).execute();let Z=await this.findById(J);if(!Z)throw Error(`Failed to create gateway with id: ${J}`);return Z}async findById(Q){return this.findByIdInternal(this.db,Q)}async findByIdInternal(Q,X){let Y=await Q.selectFrom("gateways").selectAll().where("id","=",X).executeTakeFirst();if(!Y)return null;let J=await Q.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X).execute();return this.deserializeGatewayWithConnections(Y,J)}async list(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).execute(),Y=X.map((Z)=>Z.id);if(Y.length===0)return[];let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Y).execute(),G=new Map;for(let Z of J){let W=G.get(Z.gateway_id)??[];W.push(Z),G.set(Z.gateway_id,W)}return X.map((Z)=>this.deserializeGatewayWithConnections(Z,G.get(Z.id)??[]))}async listByConnectionId(Q,X){let J=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",X).execute()).map(($)=>$.gateway_id);if(J.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",J).where("organization_id","=",Q).execute();if(G.length===0)return[];let Z=G.map(($)=>$.id),W=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Z).execute(),K=new Map;for(let $ of W){let H=K.get($.gateway_id)??[];H.push($),K.set($.gateway_id,H)}return G.map(($)=>this.deserializeGatewayWithConnections($,K.get($.id)??[]))}async update(Q,X,Y){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Y.title!==void 0)G.title=Y.title;if(Y.description!==void 0)G.description=Y.description;if(Y.toolSelectionStrategy!==void 0)G.tool_selection_strategy=Y.toolSelectionStrategy;if(Y.toolSelectionMode!==void 0)G.tool_selection_mode=Y.toolSelectionMode;if(Y.icon!==void 0)G.icon=Y.icon;if(Y.status!==void 0)G.status=Y.status;if(Y.isDefault===!1)G.is_default=0;if(Y.isDefault===!0)G.is_default=1;if(Y.isDefault===!0){let W=await this.findById(Q);if(!W)throw Error(`Gateway not found: ${Q}`);await this.db.transaction().execute(async(K)=>{if(await K.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",W.organizationId).where("is_default","=",1).execute(),await K.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await K.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await K.insertInto("gateway_connections").values(Y.connections.map(($)=>({id:zG("gwc"),gateway_id:Q,connection_id:$.connectionId,selected_tools:$.selectedTools?JSON.stringify($.selectedTools):null,selected_resources:$.selectedResources?JSON.stringify($.selectedResources):null,selected_prompts:$.selectedPrompts?JSON.stringify($.selectedPrompts):null,created_at:J}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((W)=>({id:zG("gwc"),gateway_id:Q,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:J}))).execute()}let Z=await this.findById(Q);if(!Z)throw Error("Gateway not found after update");return Z}async delete(Q){await this.db.deleteFrom("gateways").where("id","=",Q).execute()}async getDefaultByOrgId(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).where("is_default","=",1).executeTakeFirst();if(!X)return null;let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X.id).execute();return this.deserializeGatewayWithConnections(X,Y)}async getDefaultByOrgSlug(Q){let X=await this.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst();if(!X)return null;return this.getDefaultByOrgId(X.id)}async setDefault(Q,X){let Y=await this.findById(Q);if(!Y)throw Error(`Gateway not found: ${Q}`);let J=new Date().toISOString();await this.db.transaction().execute(async(Z)=>{await Z.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Y.organizationId).where("is_default","=",1).execute(),await Z.updateTable("gateways").set({is_default:1,updated_at:J,updated_by:X}).where("id","=",Q).execute()});let G=await this.findById(Q);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(Q,X){return{...this.deserializeGateway(Q),connections:X.map((J)=>({connectionId:J.connection_id,selectedTools:this.parseJson(J.selected_tools),selectedResources:this.parseJson(J.selected_resources),selectedPrompts:this.parseJson(J.selected_prompts)}))}}deserializeGateway(Q){return{id:Q.id,organizationId:Q.organization_id,title:Q.title,description:Q.description,toolSelectionStrategy:this.parseToolSelectionStrategy(Q.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(Q.tool_selection_mode),icon:Q.icon,status:Q.status,isDefault:Q.is_default===1,createdAt:Q.created_at,updatedAt:Q.updated_at,createdBy:Q.created_by,updatedBy:Q.updated_by}}parseToolSelectionStrategy(Q){if(Q==="smart_tool_selection")return"smart_tool_selection";if(Q==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(Q){if(Q==="exclusion")return"exclusion";return"inclusion"}parseJson(Q){if(Q===null)return null;if(typeof Q==="string")try{return JSON.parse(Q)}catch{return null}return Q}}Xk();e0();function ZM6(Q){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (O14(),N14));return X.map((Y)=>{return{name:Y.name,inputSchema:w.toJSONSchema(Y.inputSchema,{unrepresentable:"any"}),outputSchema:Y.outputSchema?w.toJSONSchema(Y.outputSchema,{unrepresentable:"any"}):void 0,description:Y.description}})},data:ai0(process.env.BASE_URL||"http://localhost:3000")},{data:ii0()},{data:ni0(Q)}]}async function L14(Q,X){try{let Y=cO(),J=new so(process.env.ENCRYPTION_KEY||""),G=new to(Y.db,J),Z=new eo(Y.db),W=ZM6(Q),K=[];await Promise.all(W.map(async($)=>{let H=null;if($.permissions)H=(await Wz.api.createApiKey({body:{name:`${$.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:$.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Q},purpose:"default-org-connections"}}}))?.key;let F=await $.getTools?.()??await eV({id:"pending",title:$.data.title,connection_type:$.data.connection_type,connection_url:$.data.connection_url,connection_token:$.data.connection_token,connection_headers:$.data.connection_headers}).catch(()=>null),q=$.data.id?$.data.id.startsWith(`${Q}_`)?$.data.id:`${Q}_${$.data.id}`:void 0,V=await G.create({...$.data,id:q,tools:F,organization_id:Q,created_by:X,connection_token:$.data.connection_token??H});K.push(V.id)})),await Z.create(Q,X,{title:"Organization Agent",description:"Use all organization connections into a single agent",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:K.map(($)=>({connectionId:$}))})}catch(Y){console.error("Error creating default MCP connections:",Y)}}var w14=["owner","admin"];var KM6=(Q)=>{return{defaultSSO:[{domain:Q.domain,providerId:Q.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Q.MS_CLIENT_ID,clientSecret:Q.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Q.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},M14=(Q)=>{if(Q.providerId==="microsoft")return KM6(Q);throw Error(`Unsupported provider: ${Q.providerId}`)};function $M6(Q){return Q.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var P14=["labs","agent","studio","workspace","systems","core","cloud","works"],T14=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function HM6(){let Q=Math.floor(Math.random()*T14.length),X=Math.floor(Math.random()*P14.length),Y=T14[Q]??"deco",J=P14[X]??"studio";return`${Y}-${J}`}var FM6=Object.values(zx()).map((Q)=>Q.map((X)=>X.name)).flat(),qM6={...Lj,self:["*",...FM6]},Fk=c5(qM6),VM6=Fk.newRole({self:["*"],...hD.statements}),zM6=Fk.newRole({self:["*"],...hD.statements}),UM6=Fk.newRole({self:["*"],...hD.statements}),A14=Object.values(zx()).map((Q)=>Q.map((X)=>`self:${X.name}`)).flat(),qY=Jd.auth,E14=void 0;if(qY.inviteEmailProviderId&&qY.emailProviders&&qY.emailProviders.length>0){let Q=XS(qY.emailProviders,qY.inviteEmailProviderId);if(Q){let X=QS(Q);E14=async(Y)=>{let J=Y.inviter.user?.name||Y.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${Y.invitation.id}`;await X({to:Y.email,subject:`Invitation to join ${Y.organization.name}`,html:`
1052
1052
  <h2>You've been invited!</h2>
1053
1053
  <p>${J} has invited you to join <strong>${Y.organization.name}</strong>.</p>
1054
1054
  <p><a href="${G}">Click here to accept the invitation</a></p>
@@ -1032,7 +1032,7 @@ Please refer to the documentation here: https://better-auth.com/docs/plugins/org
1032
1032
  </script>
1033
1033
  <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference" ${J}></script>
1034
1034
  </body>
1035
- </html>`},Ye=(Q)=>{let X=Q?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:f0("/open-api/generate-schema",{method:"GET"},async(Y)=>{let J=await Cr0(Y.context,Y.context.options);return Y.json(J)}),openAPIReference:f0(X,{method:"GET",metadata:{isAction:!1}},async(Y)=>{if(Q?.disableDefaultReference)throw new n("NOT_FOUND");let J=await Cr0(Y.context,Y.context.options);return new Response(nq6(J,Q?.theme,Q?.nonce),{headers:{"Content-Type":"text/html"}})})}}};FX();kG();d8();hQ();G1();var Ow4=a6(async()=>{return{}}),Lw4=a6({use:[X8]},async(Q)=>{return{session:Q.context.session}}),ww4=T4({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var Mw4=Number.POSITIVE_INFINITY;var Rr0=P(),aq6=F1(["pending","accepted","rejected","canceled"]).default("pending"),Pw4=d({id:P().default(QQ),name:P(),slug:P(),logo:P().nullish().optional(),metadata:c0(P(),G4()).or(P().transform((Q)=>JSON.parse(Q))).optional(),createdAt:n1()}),Tw4=d({id:P().default(QQ),organizationId:P(),userId:v1.string(),role:Rr0,createdAt:n1().default(()=>new Date)}),Aw4=d({id:P().default(QQ),organizationId:P(),email:P(),role:Rr0,status:aq6,teamId:P().nullish(),inviterId:P(),expiresAt:n1(),createdAt:n1().default(()=>new Date)}),Ew4=d({id:P().default(QQ),name:P().min(1),organizationId:P(),createdAt:n1(),updatedAt:n1().optional()}),jw4=d({id:P().default(QQ),teamId:P(),userId:P(),createdAt:n1().default(()=>new Date)}),Cw4=d({id:P().default(QQ),organizationId:P(),role:P(),permission:c0(P(),M0(P())),createdAt:n1().default(()=>new Date),updatedAt:n1().optional()}),Ir0=["admin","member","owner"],Iw4=o1([F1(Ir0),M0(F1(Ir0))]);q8();d8();hQ();var xw4=T4({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});q8();VX();d8();hQ();vQ();c4();var rq6=T4({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});d8();hQ();var oq6=T4({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var v3={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as Sr0,readFileSync as vr0}from"fs";var Hk={emailAndPassword:{enabled:!0}},kr0=process.env.CONFIG_PATH||"./config.json",_r0=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function sq6(){if(Sr0(kr0))try{let Q=vr0(kr0,"utf-8"),X=JSON.parse(Q);return{auth:Hk,monitoring:v3,...X}}catch{return{auth:Hk,monitoring:v3}}if(Sr0(_r0))try{let Q=vr0(_r0,"utf-8");return{auth:JSON.parse(Q),monitoring:v3}}catch{return{auth:Hk,monitoring:v3}}return{auth:Hk,monitoring:v3}}var Iw=sq6();function yr0(){return{...v3,...Iw.monitoring}}function br0(){return Iw.theme}import{existsSync as lD6,mkdirSync as dD6}from"fs";import{Kysely as Yt0,PostgresDialect as Jt0,sql as Xt0}from"kysely";import{BunWorkerDialect as Gt0}from"kysely-bun-worker";import*as Wt0 from"path";var SJ=m6(_e(),1),bT4=SJ.default.Client,he=SJ.default.Pool,fT4=SJ.default.Connection,hT4=SJ.default.types,xT4=SJ.default.Query,gT4=SJ.default.DatabaseError,uT4=SJ.default.escapeIdentifier,mT4=SJ.default.escapeLiteral,lT4=SJ.default.Result,dT4=SJ.default.TypeOverrides,pT4=SJ.default.defaults;var pD6=cE.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),cD6=1000,Zt0=(Q)=>{let X={"db.statement":Q.query.sql,"db.status":Q.level==="error"?"error":"success"};if(Q.queryDurationMillis>cD6)console.error("Slow query detected:",{durationMs:Q.queryDurationMillis,sql:Q.query.sql,params:Q.query.parameters});if(pD6.record(Q.queryDurationMillis,X),Q.level==="error")console.error("Query failed:",{durationMs:Q.queryDurationMillis,error:Q.error,sql:Q.query.sql})},$t0={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function nD6(Q){let X=new he({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...$t0}),Y=new Jt0({pool:X});return{type:"postgres",db:new Yt0({dialect:Y,log:Zt0}),pool:X}}function Kt0(Q){if(Q===":memory:")return":memory:";if(Q.includes("://"))return new URL(Q).pathname;return Q}function Ht0(Q){if(Q!==":memory:"&&Q!=="/"&&Q){let X=Q.substring(0,Q.lastIndexOf("/"));if(X&&X!=="/"&&!lD6(X))try{dD6(X,{recursive:!0})}catch{return console.warn(`Failed to create directory ${X}, using in-memory database`),":memory:"}}return Q}function iD6(Q){let X=Kt0(Q.connectionString);X=Ht0(X);let Y=new Gt0({url:X||":memory:"}),J=new Yt0({dialect:Y,log:Zt0});if(X!==":memory:"&&Q.options?.enableWAL!==!1)Xt0`PRAGMA journal_mode = WAL;`.execute(J).catch(()=>{});if(X!==":memory:"){let G=Q.options?.busyTimeout||5000;Xt0`PRAGMA busy_timeout = ${G};`.execute(J).catch(()=>{})}return{type:"sqlite",db:J}}function Ft0(Q){let X=Q||"file:./data/mesh.db";if(X===":memory:")return{type:"sqlite",connectionString:":memory:"};X=X.startsWith("/")?`file://${X}`:X;let Y=URL.canParse(X)?new URL(X):null,J=Y?.protocol.replace(":","")??X.split("://")[0];switch(J){case"postgres":case"postgresql":return{type:"postgres",connectionString:X};case"sqlite":case"file":if(!Y?.pathname)throw Error("Invalid database URL: "+X);return{type:"sqlite",connectionString:Y.pathname};default:throw Error(`Unsupported database protocol: ${J}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function ge(){return process.env.DATABASE_URL||`file:${Wt0.join(process.cwd(),"data/mesh.db")}`}function Vt0(Q){let X=Ft0(Q);if(X.type==="postgres")return new Jt0({pool:new he({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...$t0})});let Y=Kt0(X.connectionString);return Y=Ht0(Y),new Gt0({url:Y||":memory:"})}function aD6(Q){let X=Ft0(Q);if(X.type==="postgres")return nD6(X);return iD6(X)}var xe=null;function Mk(){if(!xe)xe=aD6(ge());return xe}class ue{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:Q,from:X,subject:Y,html:J})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class me{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:Q}]}],from:{email:X},subject:Y,content:[{type:"text/html",value:J}]})});if(!G.ok){let W=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${W}`)}}}var rD6=(Q)=>{let X=new ue(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},oD6=(Q)=>{let X=new me(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},sD6={resend:rD6,sendgrid:oD6};function Pk(Q){let X=sD6[Q.provider];if(!X)throw Error(`Unknown email provider: ${Q.provider}`);return X(Q)}function Tk(Q,X){return Q.find((Y)=>Y.id===X)}var qt0=(Q,X)=>{let Y=Tk(X,Q.emailProviderId);if(!Y)throw Error(`Email provider with id '${Q.emailProviderId}' not found`);let J=Pk(Y);return{sendMagicLink:async({email:G,url:W})=>{await J({to:G,subject:"Magic Link",html:`<p>Click <a href="${W}">here</a> to login</p>`})}}};y3();import{createCipheriv as tD6,createDecipheriv as eD6,randomBytes as Ot0}from"crypto";var Lt0="aes-256-gcm",gw=16,wt0=16,Mt0=32;class uw{key;constructor(Q){if(Buffer.from(Q,"base64").length===Mt0)this.key=Buffer.from(Q,"base64");else{let X=U0("crypto");this.key=X.createHash("sha256").update(Q).digest()}}async encrypt(Q){let X=Ot0(gw),Y=tD6(Lt0,this.key,X),J=Y.update(Q,"utf8");J=Buffer.concat([J,Y.final()]);let G=Y.getAuthTag();return Buffer.concat([X,G,J]).toString("base64")}async decrypt(Q){let X=Buffer.from(Q,"base64"),Y=X.subarray(0,gw),J=X.subarray(gw,gw+wt0),G=X.subarray(gw+wt0),W=eD6(Lt0,this.key,Y);W.setAuthTag(J);let Z=W.update(G);return Z=Buffer.concat([Z,W.final()]),Z.toString("utf8")}static generateKey(){return Ot0(Mt0).toString("base64")}}O7();mw();var ZN6=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class lw{db;vault;constructor(Q,X){this.db=Q;this.vault=X}async create(Q){let X=Q.id??kJ("conn"),Y=new Date().toISOString(),J=await this.findById(X);if(J){if(J.organization_id!==Q.organization_id)throw Error("Connection ID already exists");return this.update(X,Q)}let G=await this.serializeConnection({...Q,id:Q.id??X,status:"active",created_at:Y,updated_at:Y});await this.db.insertInto("connections").values(G).execute();let W=await this.findById(X);if(!W)throw Error(`Failed to create connection with id: ${X}`);return W}async findById(Q,X){let Y=this.db.selectFrom("connections").selectAll().where("id","=",Q);if(X)Y=Y.where("organization_id","=",X);let J=await Y.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Q){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).execute();return Promise.all(X.map((Y)=>this.deserializeConnection(Y)))}async update(Q,X){if(Object.keys(X).length===0){let G=await this.findById(Q);if(!G)throw Error("Connection not found");return G}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Y).where("id","=",Q).execute();let J=await this.findById(Q);if(!J)throw Error("Connection not found after update");return J}async delete(Q){await this.db.deleteFrom("connections").where("id","=",Q).execute()}async testConnection(Q,X){let Y=await this.findById(Q);if(!Y)throw Error("Connection not found");let J=Date.now();if(Y.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-J};if(!Y.connection_url)return{healthy:!1,latencyMs:Date.now()-J};try{let G=Y.connection_headers,W=await fetch(Y.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...Y.connection_token&&{Authorization:`Bearer ${Y.connection_token}`},...G?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:W.ok||W.status===404,latencyMs:Date.now()-J}}catch{return{healthy:!1,latencyMs:Date.now()-J}}}async serializeConnection(Q){let X={};for(let[Y,J]of Object.entries(Q)){if(J===void 0)continue;if(Y==="connection_token"&&J)X[Y]=await this.vault.encrypt(J);else if(Y==="configuration_state"&&J){let G=JSON.stringify(J);X[Y]=await this.vault.encrypt(G)}else if(Y==="connection_headers"&&J){let G=J;if(b3(G)&&G.envVars){let W={};for(let[Z,$]of Object.entries(G.envVars))W[Z]=await this.vault.encrypt($);X[Y]=JSON.stringify({...G,envVars:W})}else X[Y]=JSON.stringify(G)}else if(ZN6.includes(Y))X[Y]=J?JSON.stringify(J):null;else X[Y]=J}return X}async deserializeConnection(Q){let X=null;if(Q.connection_token)try{X=await this.vault.decrypt(Q.connection_token)}catch(W){console.error("Failed to decrypt connection token:",W)}let Y=null;if(Q.configuration_state)try{let W=await this.vault.decrypt(Q.configuration_state);Y=JSON.parse(W)}catch(W){console.error("Failed to decrypt configuration state:",W)}let J=null;if(Q.connection_headers)try{let W=JSON.parse(Q.connection_headers);if(b3(W)&&W.envVars){let Z={};for(let[$,K]of Object.entries(W.envVars))try{Z[$]=await this.vault.decrypt(K)}catch{Z[$]=K}J={...W,envVars:Z}}else J=W}catch(W){console.error("Failed to parse connection_headers:",W)}let G=(W)=>{if(W===null)return null;if(typeof W==="string")try{return JSON.parse(W)}catch{return null}return W};return{id:Q.id,organization_id:Q.organization_id,created_by:Q.created_by,title:Q.title,description:Q.description,icon:Q.icon,app_name:Q.app_name,app_id:Q.app_id,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:X,connection_headers:J,oauth_config:G(Q.oauth_config),configuration_state:Y,configuration_scopes:G(Q.configuration_scopes),metadata:G(Q.metadata),tools:G(Q.tools),bindings:G(Q.bindings),status:Q.status,created_at:Q.created_at,updated_at:Q.updated_at}}}mw();class dw{db;constructor(Q){this.db=Q}async create(Q,X,Y){let J=kJ("gw"),G=new Date().toISOString();if(Y.isDefault)return await this.db.transaction().execute(async(Z)=>{if(await Z.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:X}).where("organization_id","=",Q).where("is_default","=",1).execute(),await Z.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:1,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await Z.insertInto("gateway_connections").values(Y.connections.map((K)=>({id:kJ("gwc"),gateway_id:J,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:G}))).execute();let $=await this.findByIdInternal(Z,J);if(!$)throw Error(`Failed to create gateway with id: ${J}`);return $});if(await this.db.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:0,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((Z)=>({id:kJ("gwc"),gateway_id:J,connection_id:Z.connectionId,selected_tools:Z.selectedTools?JSON.stringify(Z.selectedTools):null,selected_resources:Z.selectedResources?JSON.stringify(Z.selectedResources):null,selected_prompts:Z.selectedPrompts?JSON.stringify(Z.selectedPrompts):null,created_at:G}))).execute();let W=await this.findById(J);if(!W)throw Error(`Failed to create gateway with id: ${J}`);return W}async findById(Q){return this.findByIdInternal(this.db,Q)}async findByIdInternal(Q,X){let Y=await Q.selectFrom("gateways").selectAll().where("id","=",X).executeTakeFirst();if(!Y)return null;let J=await Q.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X).execute();return this.deserializeGatewayWithConnections(Y,J)}async list(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).execute(),Y=X.map((W)=>W.id);if(Y.length===0)return[];let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Y).execute(),G=new Map;for(let W of J){let Z=G.get(W.gateway_id)??[];Z.push(W),G.set(W.gateway_id,Z)}return X.map((W)=>this.deserializeGatewayWithConnections(W,G.get(W.id)??[]))}async listByConnectionId(Q,X){let J=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",X).execute()).map((K)=>K.gateway_id);if(J.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",J).where("organization_id","=",Q).execute();if(G.length===0)return[];let W=G.map((K)=>K.id),Z=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",W).execute(),$=new Map;for(let K of Z){let H=$.get(K.gateway_id)??[];H.push(K),$.set(K.gateway_id,H)}return G.map((K)=>this.deserializeGatewayWithConnections(K,$.get(K.id)??[]))}async update(Q,X,Y){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Y.title!==void 0)G.title=Y.title;if(Y.description!==void 0)G.description=Y.description;if(Y.toolSelectionStrategy!==void 0)G.tool_selection_strategy=Y.toolSelectionStrategy;if(Y.toolSelectionMode!==void 0)G.tool_selection_mode=Y.toolSelectionMode;if(Y.icon!==void 0)G.icon=Y.icon;if(Y.status!==void 0)G.status=Y.status;if(Y.isDefault===!1)G.is_default=0;if(Y.isDefault===!0)G.is_default=1;if(Y.isDefault===!0){let Z=await this.findById(Q);if(!Z)throw Error(`Gateway not found: ${Q}`);await this.db.transaction().execute(async($)=>{if(await $.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Z.organizationId).where("is_default","=",1).execute(),await $.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await $.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await $.insertInto("gateway_connections").values(Y.connections.map((K)=>({id:kJ("gwc"),gateway_id:Q,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:J}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((Z)=>({id:kJ("gwc"),gateway_id:Q,connection_id:Z.connectionId,selected_tools:Z.selectedTools?JSON.stringify(Z.selectedTools):null,selected_resources:Z.selectedResources?JSON.stringify(Z.selectedResources):null,selected_prompts:Z.selectedPrompts?JSON.stringify(Z.selectedPrompts):null,created_at:J}))).execute()}let W=await this.findById(Q);if(!W)throw Error("Gateway not found after update");return W}async delete(Q){await this.db.deleteFrom("gateways").where("id","=",Q).execute()}async getDefaultByOrgId(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).where("is_default","=",1).executeTakeFirst();if(!X)return null;let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X.id).execute();return this.deserializeGatewayWithConnections(X,Y)}async getDefaultByOrgSlug(Q){let X=await this.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst();if(!X)return null;return this.getDefaultByOrgId(X.id)}async setDefault(Q,X){let Y=await this.findById(Q);if(!Y)throw Error(`Gateway not found: ${Q}`);let J=new Date().toISOString();await this.db.transaction().execute(async(W)=>{await W.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Y.organizationId).where("is_default","=",1).execute(),await W.updateTable("gateways").set({is_default:1,updated_at:J,updated_by:X}).where("id","=",Q).execute()});let G=await this.findById(Q);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(Q,X){return{...this.deserializeGateway(Q),connections:X.map((J)=>({connectionId:J.connection_id,selectedTools:this.parseJson(J.selected_tools),selectedResources:this.parseJson(J.selected_resources),selectedPrompts:this.parseJson(J.selected_prompts)}))}}deserializeGateway(Q){return{id:Q.id,organizationId:Q.organization_id,title:Q.title,description:Q.description,toolSelectionStrategy:this.parseToolSelectionStrategy(Q.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(Q.tool_selection_mode),icon:Q.icon,status:Q.status,isDefault:Q.is_default===1,createdAt:Q.created_at,updatedAt:Q.updated_at,createdBy:Q.created_by,updatedBy:Q.updated_by}}parseToolSelectionStrategy(Q){if(Q==="smart_tool_selection")return"smart_tool_selection";if(Q==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(Q){if(Q==="exclusion")return"exclusion";return"inclusion"}parseJson(Q){if(Q===null)return null;if(typeof Q==="string")try{return JSON.parse(Q)}catch{return null}return Q}}By();G1();function aR6(Q){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (r40(),_X1));return X.map((Y)=>{return{name:Y.name,inputSchema:N.toJSONSchema(Y.inputSchema,{unrepresentable:"any"}),outputSchema:Y.outputSchema?N.toJSONSchema(Y.outputSchema,{unrepresentable:"any"}):void 0,description:Y.description}})},data:Nt0(process.env.BASE_URL||"http://localhost:3000")},{data:Dt0()},{data:Bt0(Q)}]}async function yX1(Q,X){try{let Y=Mk(),J=new uw(process.env.ENCRYPTION_KEY||""),G=new lw(Y.db,J),W=new dw(Y.db),Z=aR6(Q),$=[];await Promise.all(Z.map(async(K)=>{let H=null;if(K.permissions)H=(await h7.api.createApiKey({body:{name:`${K.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:K.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Q},purpose:"default-org-connections"}}}))?.key;let F=await K.getTools?.()??await IU({id:"pending",title:K.data.title,connection_type:K.data.connection_type,connection_url:K.data.connection_url,connection_token:K.data.connection_token,connection_headers:K.data.connection_headers}).catch(()=>null),V=K.data.id?K.data.id.startsWith(`${Q}_`)?K.data.id:`${Q}_${K.data.id}`:void 0,q=await G.create({...K.data,id:V,tools:F,organization_id:Q,created_by:X,connection_token:K.data.connection_token??H});$.push(q.id)})),await W.create(Q,X,{title:"Organization Agent",description:"Use all organization connections into a single agent",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:$.map((K)=>({connectionId:K}))})}catch(Y){console.error("Error creating default MCP connections:",Y)}}var o40=["owner","admin","user"],bX1=["owner","admin"];var rR6=(Q)=>{return{defaultSSO:[{domain:Q.domain,providerId:Q.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Q.MS_CLIENT_ID,clientSecret:Q.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Q.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},fX1=(Q)=>{if(Q.providerId==="microsoft")return rR6(Q);throw Error(`Unsupported provider: ${Q.providerId}`)};function oR6(Q){return Q.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var hX1=["labs","agent","studio","workspace","systems","core","cloud","works"],xX1=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function sR6(){let Q=Math.floor(Math.random()*xX1.length),X=Math.floor(Math.random()*hX1.length),Y=xX1[Q]??"deco",J=hX1[X]??"studio";return`${Y}-${J}`}var tR6=Object.values(cD()).map((Q)=>Q.map((X)=>X.name)).flat(),eR6={...rv,self:["*",...tR6]},Iy=nG(eR6),QS6=Iy.newRole({self:["*"],...ww.statements}),XS6=Iy.newRole({self:["*"],...ww.statements}),YS6=Iy.newRole({self:["*"],...ww.statements}),gX1=Object.values(cD()).map((Q)=>Q.map((X)=>`self:${X.name}`)).flat(),a8=Iw.auth,uX1=void 0;if(a8.inviteEmailProviderId&&a8.emailProviders&&a8.emailProviders.length>0){let Q=Tk(a8.emailProviders,a8.inviteEmailProviderId);if(Q){let X=Pk(Q);uX1=async(Y)=>{let J=Y.inviter.user?.name||Y.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${Y.invitation.id}`;await X({to:Y.email,subject:`Invitation to join ${Y.organization.name}`,html:`
1035
+ </html>`},Ye=(Q)=>{let X=Q?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:f0("/open-api/generate-schema",{method:"GET"},async(Y)=>{let J=await Cr0(Y.context,Y.context.options);return Y.json(J)}),openAPIReference:f0(X,{method:"GET",metadata:{isAction:!1}},async(Y)=>{if(Q?.disableDefaultReference)throw new n("NOT_FOUND");let J=await Cr0(Y.context,Y.context.options);return new Response(nq6(J,Q?.theme,Q?.nonce),{headers:{"Content-Type":"text/html"}})})}}};FX();kG();d8();hQ();G1();var Ow4=a6(async()=>{return{}}),Lw4=a6({use:[X8]},async(Q)=>{return{session:Q.context.session}}),ww4=T4({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var Mw4=Number.POSITIVE_INFINITY;var Rr0=P(),aq6=F1(["pending","accepted","rejected","canceled"]).default("pending"),Pw4=d({id:P().default(QQ),name:P(),slug:P(),logo:P().nullish().optional(),metadata:c0(P(),G4()).or(P().transform((Q)=>JSON.parse(Q))).optional(),createdAt:n1()}),Tw4=d({id:P().default(QQ),organizationId:P(),userId:v1.string(),role:Rr0,createdAt:n1().default(()=>new Date)}),Aw4=d({id:P().default(QQ),organizationId:P(),email:P(),role:Rr0,status:aq6,teamId:P().nullish(),inviterId:P(),expiresAt:n1(),createdAt:n1().default(()=>new Date)}),Ew4=d({id:P().default(QQ),name:P().min(1),organizationId:P(),createdAt:n1(),updatedAt:n1().optional()}),jw4=d({id:P().default(QQ),teamId:P(),userId:P(),createdAt:n1().default(()=>new Date)}),Cw4=d({id:P().default(QQ),organizationId:P(),role:P(),permission:c0(P(),M0(P())),createdAt:n1().default(()=>new Date),updatedAt:n1().optional()}),Ir0=["admin","member","owner"],Iw4=o1([F1(Ir0),M0(F1(Ir0))]);q8();d8();hQ();var xw4=T4({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});q8();VX();d8();hQ();vQ();c4();var rq6=T4({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});d8();hQ();var oq6=T4({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var v3={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as Sr0,readFileSync as vr0}from"fs";var Hk={emailAndPassword:{enabled:!0}},kr0=process.env.CONFIG_PATH||"./config.json",_r0=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function sq6(){if(Sr0(kr0))try{let Q=vr0(kr0,"utf-8"),X=JSON.parse(Q);return{auth:Hk,monitoring:v3,...X}}catch{return{auth:Hk,monitoring:v3}}if(Sr0(_r0))try{let Q=vr0(_r0,"utf-8");return{auth:JSON.parse(Q),monitoring:v3}}catch{return{auth:Hk,monitoring:v3}}return{auth:Hk,monitoring:v3}}var Iw=sq6();function yr0(){return{...v3,...Iw.monitoring}}function br0(){return Iw.theme}import{existsSync as lD6,mkdirSync as dD6}from"fs";import{Kysely as Yt0,PostgresDialect as Jt0,sql as Xt0}from"kysely";import{BunWorkerDialect as Gt0}from"kysely-bun-worker";import*as Wt0 from"path";var SJ=m6(_e(),1),bT4=SJ.default.Client,he=SJ.default.Pool,fT4=SJ.default.Connection,hT4=SJ.default.types,xT4=SJ.default.Query,gT4=SJ.default.DatabaseError,uT4=SJ.default.escapeIdentifier,mT4=SJ.default.escapeLiteral,lT4=SJ.default.Result,dT4=SJ.default.TypeOverrides,pT4=SJ.default.defaults;var pD6=cE.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),cD6=400,Zt0=(Q)=>{let X={"db.statement":Q.query.sql,"db.status":Q.level==="error"?"error":"success"};if(Q.queryDurationMillis>cD6)console.error("Slow query detected:",{durationMs:Q.queryDurationMillis,sql:Q.query.sql,params:Q.query.parameters});if(pD6.record(Q.queryDurationMillis,X),Q.level==="error")console.error("Query failed:",{durationMs:Q.queryDurationMillis,error:Q.error,sql:Q.query.sql})},$t0={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function nD6(Q){let X=new he({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...$t0}),Y=new Jt0({pool:X});return{type:"postgres",db:new Yt0({dialect:Y,log:Zt0}),pool:X}}function Kt0(Q){if(Q===":memory:")return":memory:";if(Q.includes("://"))return new URL(Q).pathname;return Q}function Ht0(Q){if(Q!==":memory:"&&Q!=="/"&&Q){let X=Q.substring(0,Q.lastIndexOf("/"));if(X&&X!=="/"&&!lD6(X))try{dD6(X,{recursive:!0})}catch{return console.warn(`Failed to create directory ${X}, using in-memory database`),":memory:"}}return Q}function iD6(Q){let X=Kt0(Q.connectionString);X=Ht0(X);let Y=new Gt0({url:X||":memory:"}),J=new Yt0({dialect:Y,log:Zt0});if(X!==":memory:"&&Q.options?.enableWAL!==!1)Xt0`PRAGMA journal_mode = WAL;`.execute(J).catch(()=>{});if(X!==":memory:"){let G=Q.options?.busyTimeout||5000;Xt0`PRAGMA busy_timeout = ${G};`.execute(J).catch(()=>{})}return{type:"sqlite",db:J}}function Ft0(Q){let X=Q||"file:./data/mesh.db";if(X===":memory:")return{type:"sqlite",connectionString:":memory:"};X=X.startsWith("/")?`file://${X}`:X;let Y=URL.canParse(X)?new URL(X):null,J=Y?.protocol.replace(":","")??X.split("://")[0];switch(J){case"postgres":case"postgresql":return{type:"postgres",connectionString:X};case"sqlite":case"file":if(!Y?.pathname)throw Error("Invalid database URL: "+X);return{type:"sqlite",connectionString:Y.pathname};default:throw Error(`Unsupported database protocol: ${J}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function ge(){return process.env.DATABASE_URL||`file:${Wt0.join(process.cwd(),"data/mesh.db")}`}function Vt0(Q){let X=Ft0(Q);if(X.type==="postgres")return new Jt0({pool:new he({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1,...$t0})});let Y=Kt0(X.connectionString);return Y=Ht0(Y),new Gt0({url:Y||":memory:"})}function aD6(Q){let X=Ft0(Q);if(X.type==="postgres")return nD6(X);return iD6(X)}var xe=null;function Mk(){if(!xe)xe=aD6(ge());return xe}class ue{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:Q,from:X,subject:Y,html:J})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class me{apiKey;constructor(Q){this.apiKey=Q}async sendEmail({to:Q,from:X,subject:Y,html:J}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:Q}]}],from:{email:X},subject:Y,content:[{type:"text/html",value:J}]})});if(!G.ok){let W=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${W}`)}}}var rD6=(Q)=>{let X=new ue(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},oD6=(Q)=>{let X=new me(Q.config.apiKey);return async({to:Y,subject:J,html:G})=>{await X.sendEmail({to:Y,from:Q.config.fromEmail,subject:J,html:G})}},sD6={resend:rD6,sendgrid:oD6};function Pk(Q){let X=sD6[Q.provider];if(!X)throw Error(`Unknown email provider: ${Q.provider}`);return X(Q)}function Tk(Q,X){return Q.find((Y)=>Y.id===X)}var qt0=(Q,X)=>{let Y=Tk(X,Q.emailProviderId);if(!Y)throw Error(`Email provider with id '${Q.emailProviderId}' not found`);let J=Pk(Y);return{sendMagicLink:async({email:G,url:W})=>{await J({to:G,subject:"Magic Link",html:`<p>Click <a href="${W}">here</a> to login</p>`})}}};y3();import{createCipheriv as tD6,createDecipheriv as eD6,randomBytes as Ot0}from"crypto";var Lt0="aes-256-gcm",gw=16,wt0=16,Mt0=32;class uw{key;constructor(Q){if(Buffer.from(Q,"base64").length===Mt0)this.key=Buffer.from(Q,"base64");else{let X=U0("crypto");this.key=X.createHash("sha256").update(Q).digest()}}async encrypt(Q){let X=Ot0(gw),Y=tD6(Lt0,this.key,X),J=Y.update(Q,"utf8");J=Buffer.concat([J,Y.final()]);let G=Y.getAuthTag();return Buffer.concat([X,G,J]).toString("base64")}async decrypt(Q){let X=Buffer.from(Q,"base64"),Y=X.subarray(0,gw),J=X.subarray(gw,gw+wt0),G=X.subarray(gw+wt0),W=eD6(Lt0,this.key,Y);W.setAuthTag(J);let Z=W.update(G);return Z=Buffer.concat([Z,W.final()]),Z.toString("utf8")}static generateKey(){return Ot0(Mt0).toString("base64")}}O7();mw();var ZN6=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class lw{db;vault;constructor(Q,X){this.db=Q;this.vault=X}async create(Q){let X=Q.id??kJ("conn"),Y=new Date().toISOString(),J=await this.findById(X);if(J){if(J.organization_id!==Q.organization_id)throw Error("Connection ID already exists");return this.update(X,Q)}let G=await this.serializeConnection({...Q,id:Q.id??X,status:"active",created_at:Y,updated_at:Y});await this.db.insertInto("connections").values(G).execute();let W=await this.findById(X);if(!W)throw Error(`Failed to create connection with id: ${X}`);return W}async findById(Q,X){let Y=this.db.selectFrom("connections").selectAll().where("id","=",Q);if(X)Y=Y.where("organization_id","=",X);let J=await Y.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Q){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).execute();return Promise.all(X.map((Y)=>this.deserializeConnection(Y)))}async update(Q,X){if(Object.keys(X).length===0){let G=await this.findById(Q);if(!G)throw Error("Connection not found");return G}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Y).where("id","=",Q).execute();let J=await this.findById(Q);if(!J)throw Error("Connection not found after update");return J}async delete(Q){await this.db.deleteFrom("connections").where("id","=",Q).execute()}async testConnection(Q,X){let Y=await this.findById(Q);if(!Y)throw Error("Connection not found");let J=Date.now();if(Y.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-J};if(!Y.connection_url)return{healthy:!1,latencyMs:Date.now()-J};try{let G=Y.connection_headers,W=await fetch(Y.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...Y.connection_token&&{Authorization:`Bearer ${Y.connection_token}`},...G?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:W.ok||W.status===404,latencyMs:Date.now()-J}}catch{return{healthy:!1,latencyMs:Date.now()-J}}}async serializeConnection(Q){let X={};for(let[Y,J]of Object.entries(Q)){if(J===void 0)continue;if(Y==="connection_token"&&J)X[Y]=await this.vault.encrypt(J);else if(Y==="configuration_state"&&J){let G=JSON.stringify(J);X[Y]=await this.vault.encrypt(G)}else if(Y==="connection_headers"&&J){let G=J;if(b3(G)&&G.envVars){let W={};for(let[Z,$]of Object.entries(G.envVars))W[Z]=await this.vault.encrypt($);X[Y]=JSON.stringify({...G,envVars:W})}else X[Y]=JSON.stringify(G)}else if(ZN6.includes(Y))X[Y]=J?JSON.stringify(J):null;else X[Y]=J}return X}async deserializeConnection(Q){let X=null;if(Q.connection_token)try{X=await this.vault.decrypt(Q.connection_token)}catch(W){console.error("Failed to decrypt connection token:",W)}let Y=null;if(Q.configuration_state)try{let W=await this.vault.decrypt(Q.configuration_state);Y=JSON.parse(W)}catch(W){console.error("Failed to decrypt configuration state:",W)}let J=null;if(Q.connection_headers)try{let W=JSON.parse(Q.connection_headers);if(b3(W)&&W.envVars){let Z={};for(let[$,K]of Object.entries(W.envVars))try{Z[$]=await this.vault.decrypt(K)}catch{Z[$]=K}J={...W,envVars:Z}}else J=W}catch(W){console.error("Failed to parse connection_headers:",W)}let G=(W)=>{if(W===null)return null;if(typeof W==="string")try{return JSON.parse(W)}catch{return null}return W};return{id:Q.id,organization_id:Q.organization_id,created_by:Q.created_by,title:Q.title,description:Q.description,icon:Q.icon,app_name:Q.app_name,app_id:Q.app_id,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:X,connection_headers:J,oauth_config:G(Q.oauth_config),configuration_state:Y,configuration_scopes:G(Q.configuration_scopes),metadata:G(Q.metadata),tools:G(Q.tools),bindings:G(Q.bindings),status:Q.status,created_at:Q.created_at,updated_at:Q.updated_at}}}mw();class dw{db;constructor(Q){this.db=Q}async create(Q,X,Y){let J=kJ("gw"),G=new Date().toISOString();if(Y.isDefault)return await this.db.transaction().execute(async(Z)=>{if(await Z.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:X}).where("organization_id","=",Q).where("is_default","=",1).execute(),await Z.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:1,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await Z.insertInto("gateway_connections").values(Y.connections.map((K)=>({id:kJ("gwc"),gateway_id:J,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:G}))).execute();let $=await this.findByIdInternal(Z,J);if(!$)throw Error(`Failed to create gateway with id: ${J}`);return $});if(await this.db.insertInto("gateways").values({id:J,organization_id:Q,title:Y.title,description:Y.description??null,tool_selection_strategy:Y.toolSelectionStrategy??"passthrough",tool_selection_mode:Y.toolSelectionMode??"inclusion",icon:Y.icon??null,status:Y.status??"active",is_default:0,created_at:G,updated_at:G,created_by:X,updated_by:null}).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((Z)=>({id:kJ("gwc"),gateway_id:J,connection_id:Z.connectionId,selected_tools:Z.selectedTools?JSON.stringify(Z.selectedTools):null,selected_resources:Z.selectedResources?JSON.stringify(Z.selectedResources):null,selected_prompts:Z.selectedPrompts?JSON.stringify(Z.selectedPrompts):null,created_at:G}))).execute();let W=await this.findById(J);if(!W)throw Error(`Failed to create gateway with id: ${J}`);return W}async findById(Q){return this.findByIdInternal(this.db,Q)}async findByIdInternal(Q,X){let Y=await Q.selectFrom("gateways").selectAll().where("id","=",X).executeTakeFirst();if(!Y)return null;let J=await Q.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X).execute();return this.deserializeGatewayWithConnections(Y,J)}async list(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).execute(),Y=X.map((W)=>W.id);if(Y.length===0)return[];let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",Y).execute(),G=new Map;for(let W of J){let Z=G.get(W.gateway_id)??[];Z.push(W),G.set(W.gateway_id,Z)}return X.map((W)=>this.deserializeGatewayWithConnections(W,G.get(W.id)??[]))}async listByConnectionId(Q,X){let J=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",X).execute()).map((K)=>K.gateway_id);if(J.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",J).where("organization_id","=",Q).execute();if(G.length===0)return[];let W=G.map((K)=>K.id),Z=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",W).execute(),$=new Map;for(let K of Z){let H=$.get(K.gateway_id)??[];H.push(K),$.set(K.gateway_id,H)}return G.map((K)=>this.deserializeGatewayWithConnections(K,$.get(K.id)??[]))}async update(Q,X,Y){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Y.title!==void 0)G.title=Y.title;if(Y.description!==void 0)G.description=Y.description;if(Y.toolSelectionStrategy!==void 0)G.tool_selection_strategy=Y.toolSelectionStrategy;if(Y.toolSelectionMode!==void 0)G.tool_selection_mode=Y.toolSelectionMode;if(Y.icon!==void 0)G.icon=Y.icon;if(Y.status!==void 0)G.status=Y.status;if(Y.isDefault===!1)G.is_default=0;if(Y.isDefault===!0)G.is_default=1;if(Y.isDefault===!0){let Z=await this.findById(Q);if(!Z)throw Error(`Gateway not found: ${Q}`);await this.db.transaction().execute(async($)=>{if(await $.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Z.organizationId).where("is_default","=",1).execute(),await $.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await $.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await $.insertInto("gateway_connections").values(Y.connections.map((K)=>({id:kJ("gwc"),gateway_id:Q,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:J}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",Q).execute(),Y.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",Q).execute(),Y.connections.length>0)await this.db.insertInto("gateway_connections").values(Y.connections.map((Z)=>({id:kJ("gwc"),gateway_id:Q,connection_id:Z.connectionId,selected_tools:Z.selectedTools?JSON.stringify(Z.selectedTools):null,selected_resources:Z.selectedResources?JSON.stringify(Z.selectedResources):null,selected_prompts:Z.selectedPrompts?JSON.stringify(Z.selectedPrompts):null,created_at:J}))).execute()}let W=await this.findById(Q);if(!W)throw Error("Gateway not found after update");return W}async delete(Q){await this.db.deleteFrom("gateways").where("id","=",Q).execute()}async getDefaultByOrgId(Q){let X=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",Q).where("is_default","=",1).executeTakeFirst();if(!X)return null;let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",X.id).execute();return this.deserializeGatewayWithConnections(X,Y)}async getDefaultByOrgSlug(Q){let X=await this.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst();if(!X)return null;return this.getDefaultByOrgId(X.id)}async setDefault(Q,X){let Y=await this.findById(Q);if(!Y)throw Error(`Gateway not found: ${Q}`);let J=new Date().toISOString();await this.db.transaction().execute(async(W)=>{await W.updateTable("gateways").set({is_default:0,updated_at:J,updated_by:X}).where("organization_id","=",Y.organizationId).where("is_default","=",1).execute(),await W.updateTable("gateways").set({is_default:1,updated_at:J,updated_by:X}).where("id","=",Q).execute()});let G=await this.findById(Q);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(Q,X){return{...this.deserializeGateway(Q),connections:X.map((J)=>({connectionId:J.connection_id,selectedTools:this.parseJson(J.selected_tools),selectedResources:this.parseJson(J.selected_resources),selectedPrompts:this.parseJson(J.selected_prompts)}))}}deserializeGateway(Q){return{id:Q.id,organizationId:Q.organization_id,title:Q.title,description:Q.description,toolSelectionStrategy:this.parseToolSelectionStrategy(Q.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(Q.tool_selection_mode),icon:Q.icon,status:Q.status,isDefault:Q.is_default===1,createdAt:Q.created_at,updatedAt:Q.updated_at,createdBy:Q.created_by,updatedBy:Q.updated_by}}parseToolSelectionStrategy(Q){if(Q==="smart_tool_selection")return"smart_tool_selection";if(Q==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(Q){if(Q==="exclusion")return"exclusion";return"inclusion"}parseJson(Q){if(Q===null)return null;if(typeof Q==="string")try{return JSON.parse(Q)}catch{return null}return Q}}By();G1();function aR6(Q){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (r40(),_X1));return X.map((Y)=>{return{name:Y.name,inputSchema:N.toJSONSchema(Y.inputSchema,{unrepresentable:"any"}),outputSchema:Y.outputSchema?N.toJSONSchema(Y.outputSchema,{unrepresentable:"any"}):void 0,description:Y.description}})},data:Nt0(process.env.BASE_URL||"http://localhost:3000")},{data:Dt0()},{data:Bt0(Q)}]}async function yX1(Q,X){try{let Y=Mk(),J=new uw(process.env.ENCRYPTION_KEY||""),G=new lw(Y.db,J),W=new dw(Y.db),Z=aR6(Q),$=[];await Promise.all(Z.map(async(K)=>{let H=null;if(K.permissions)H=(await h7.api.createApiKey({body:{name:`${K.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:K.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Q},purpose:"default-org-connections"}}}))?.key;let F=await K.getTools?.()??await IU({id:"pending",title:K.data.title,connection_type:K.data.connection_type,connection_url:K.data.connection_url,connection_token:K.data.connection_token,connection_headers:K.data.connection_headers}).catch(()=>null),V=K.data.id?K.data.id.startsWith(`${Q}_`)?K.data.id:`${Q}_${K.data.id}`:void 0,q=await G.create({...K.data,id:V,tools:F,organization_id:Q,created_by:X,connection_token:K.data.connection_token??H});$.push(q.id)})),await W.create(Q,X,{title:"Organization Agent",description:"Use all organization connections into a single agent",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:$.map((K)=>({connectionId:K}))})}catch(Y){console.error("Error creating default MCP connections:",Y)}}var o40=["owner","admin","user"],bX1=["owner","admin"];var rR6=(Q)=>{return{defaultSSO:[{domain:Q.domain,providerId:Q.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Q.MS_CLIENT_ID,clientSecret:Q.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Q.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Q.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},fX1=(Q)=>{if(Q.providerId==="microsoft")return rR6(Q);throw Error(`Unsupported provider: ${Q.providerId}`)};function oR6(Q){return Q.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var hX1=["labs","agent","studio","workspace","systems","core","cloud","works"],xX1=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function sR6(){let Q=Math.floor(Math.random()*xX1.length),X=Math.floor(Math.random()*hX1.length),Y=xX1[Q]??"deco",J=hX1[X]??"studio";return`${Y}-${J}`}var tR6=Object.values(cD()).map((Q)=>Q.map((X)=>X.name)).flat(),eR6={...rv,self:["*",...tR6]},Iy=nG(eR6),QS6=Iy.newRole({self:["*"],...ww.statements}),XS6=Iy.newRole({self:["*"],...ww.statements}),YS6=Iy.newRole({self:["*"],...ww.statements}),gX1=Object.values(cD()).map((Q)=>Q.map((X)=>`self:${X.name}`)).flat(),a8=Iw.auth,uX1=void 0;if(a8.inviteEmailProviderId&&a8.emailProviders&&a8.emailProviders.length>0){let Q=Tk(a8.emailProviders,a8.inviteEmailProviderId);if(Q){let X=Pk(Q);uX1=async(Y)=>{let J=Y.inviter.user?.name||Y.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${Y.invitation.id}`;await X({to:Y.email,subject:`Invitation to join ${Y.organization.name}`,html:`
1036
1036
  <h2>You've been invited!</h2>
1037
1037
  <p>${J} has invited you to join <strong>${Y.organization.name}</strong>.</p>
1038
1038
  <p><a href="${G}">Click here to accept the invitation</a></p>
@@ -1062,7 +1062,7 @@ Create an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys
1062
1062
  Provide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.
1063
1063
 
1064
1064
  Option 2 - OIDC token:
1065
- Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;return new Q({message:Z,statusCode:G,cause:W})}},QW1="GatewayInvalidRequestError",Wy6=`vercel.ai.gateway.error.${QW1}`,yG1=Symbol.for(Wy6),bG1,fG1,Zy6=class extends(fG1=hY,bG1=yG1,fG1){constructor({message:Q="Invalid request",statusCode:X=400,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[bG1]=!0,this.name=QW1,this.type="invalid_request_error"}static isInstance(Q){return hY.hasMarker(Q)&&yG1 in Q}},XW1="GatewayRateLimitError",$y6=`vercel.ai.gateway.error.${XW1}`,hG1=Symbol.for($y6),xG1,gG1,Ky6=class extends(gG1=hY,xG1=hG1,gG1){constructor({message:Q="Rate limit exceeded",statusCode:X=429,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[xG1]=!0,this.name=XW1,this.type="rate_limit_exceeded"}static isInstance(Q){return hY.hasMarker(Q)&&hG1 in Q}},YW1="GatewayModelNotFoundError",Hy6=`vercel.ai.gateway.error.${YW1}`,uG1=Symbol.for(Hy6),Fy6=dQ(()=>JQ(N.object({modelId:N.string()}))),mG1,lG1,Vy6=class extends(lG1=hY,mG1=uG1,lG1){constructor({message:Q="Model not found",statusCode:X=404,modelId:Y,cause:J}={}){super({message:Q,statusCode:X,cause:J});this[mG1]=!0,this.name=YW1,this.type="model_not_found",this.modelId=Y}static isInstance(Q){return hY.hasMarker(Q)&&uG1 in Q}},JW1="GatewayInternalServerError",qy6=`vercel.ai.gateway.error.${JW1}`,dG1=Symbol.for(qy6),pG1,cG1,nG1=class extends(cG1=hY,pG1=dG1,cG1){constructor({message:Q="Internal server error",statusCode:X=500,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[pG1]=!0,this.name=JW1,this.type="internal_server_error"}static isInstance(Q){return hY.hasMarker(Q)&&dG1 in Q}},GW1="GatewayResponseError",zy6=`vercel.ai.gateway.error.${GW1}`,iG1=Symbol.for(zy6),aG1,rG1,Uy6=class extends(rG1=hY,aG1=iG1,rG1){constructor({message:Q="Invalid response from Gateway",statusCode:X=502,response:Y,validationError:J,cause:G}={}){super({message:Q,statusCode:X,cause:G});this[aG1]=!0,this.name=GW1,this.type="response_error",this.response=Y,this.validationError=J}static isInstance(Q){return hY.hasMarker(Q)&&iG1 in Q}};async function oG1({response:Q,statusCode:X,defaultMessage:Y="Gateway request failed",cause:J,authMethod:G}){let W=await wX({value:Q,schema:By6});if(!W.success)return new Uy6({message:`Invalid error response format: ${Y}`,statusCode:X,response:Q,validationError:W.error,cause:J});let Z=W.value,$=Z.error.type,K=Z.error.message;switch($){case"authentication_error":return ey.createContextualError({apiKeyProvided:G==="api-key",oidcTokenProvided:G==="oidc",statusCode:X,cause:J});case"invalid_request_error":return new Zy6({message:K,statusCode:X,cause:J});case"rate_limit_exceeded":return new Ky6({message:K,statusCode:X,cause:J});case"model_not_found":{let H=await wX({value:Z.error.param,schema:Fy6});return new Vy6({message:K,statusCode:X,modelId:H.success?H.value.modelId:void 0,cause:J})}case"internal_server_error":return new nG1({message:K,statusCode:X,cause:J});default:return new nG1({message:K,statusCode:X,cause:J})}}var By6=dQ(()=>JQ(N.object({error:N.object({message:N.string(),type:N.string().nullish(),param:N.unknown().nullish(),code:N.union([N.string(),N.number()]).nullish()})})));function QK(Q,X){var Y;if(hY.isInstance(Q))return Q;if(r8.isInstance(Q))return oG1({response:Dy6(Q),statusCode:(Y=Q.statusCode)!=null?Y:500,defaultMessage:"Gateway request failed",cause:Q,authMethod:X});return oG1({response:{},statusCode:500,defaultMessage:Q instanceof Error?`Gateway request failed: ${Q.message}`:"Unknown Gateway error",cause:Q,authMethod:X})}function Dy6(Q){if(Q.data!==void 0)return Q.data;if(Q.responseBody!=null)try{return JSON.parse(Q.responseBody)}catch(X){return Q.responseBody}return{}}var WW1="ai-gateway-auth-method";async function dU(Q){let X=await wX({value:Q[WW1],schema:Ny6});return X.success?X.value:void 0}var Ny6=dQ(()=>JQ(N.union([N.literal("api-key"),N.literal("oidc")]))),sG1=class{constructor(Q){this.config=Q}async getAvailableModels(){try{let{value:Q}=await k80({url:`${this.config.baseURL}/config`,headers:await N9(this.config.headers()),successfulResponseHandler:m7(Oy6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(X)=>X}),fetch:this.config.fetch});return Q}catch(Q){throw await QK(Q)}}async getCredits(){try{let Q=new URL(this.config.baseURL),{value:X}=await k80({url:`${Q.origin}/v1/credits`,headers:await N9(this.config.headers()),successfulResponseHandler:m7(Ly6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(Y)=>Y}),fetch:this.config.fetch});return X}catch(Q){throw await QK(Q)}}},Oy6=dQ(()=>JQ(N.object({models:N.array(N.object({id:N.string(),name:N.string(),description:N.string().nullish(),pricing:N.object({input:N.string(),output:N.string(),input_cache_read:N.string().nullish(),input_cache_write:N.string().nullish()}).transform(({input:Q,output:X,input_cache_read:Y,input_cache_write:J})=>({input:Q,output:X,...Y?{cachedInputTokens:Y}:{},...J?{cacheCreationInputTokens:J}:{}})).nullish(),specification:N.object({specificationVersion:N.literal("v3"),provider:N.string(),modelId:N.string()}),modelType:N.enum(["language","embedding","image"]).nullish()}))}))),Ly6=dQ(()=>JQ(N.object({balance:N.string(),total_used:N.string()}).transform(({balance:Q,total_used:X})=>({balance:Q,totalUsed:X})))),wy6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.supportedUrls={"*/*":[/.*/]}}get provider(){return this.config.provider}async getArgs(Q){let{abortSignal:X,...Y}=Q;return{args:this.maybeEncodeFileParts(Y),warnings:[]}}async doGenerate(Q){let{args:X,warnings:Y}=await this.getArgs(Q),{abortSignal:J}=Q,G=await N9(this.config.headers());try{let{responseHeaders:W,value:Z,rawValue:$}=await KF({url:this.getUrl(),headers:WF(G,Q.headers,this.getModelConfigHeaders(this.modelId,!1),await N9(this.config.o11yHeaders)),body:X,successfulResponseHandler:m7(N.any()),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(K)=>K}),...J&&{abortSignal:J},fetch:this.config.fetch});return{...Z,request:{body:X},response:{headers:W,body:$},warnings:Y}}catch(W){throw await QK(W,await dU(G))}}async doStream(Q){let{args:X,warnings:Y}=await this.getArgs(Q),{abortSignal:J}=Q,G=await N9(this.config.headers());try{let{value:W,responseHeaders:Z}=await KF({url:this.getUrl(),headers:WF(G,Q.headers,this.getModelConfigHeaders(this.modelId,!0),await N9(this.config.o11yHeaders)),body:X,successfulResponseHandler:c51(N.any()),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:($)=>$}),...J&&{abortSignal:J},fetch:this.config.fetch});return{stream:W.pipeThrough(new TransformStream({start($){if(Y.length>0)$.enqueue({type:"stream-start",warnings:Y})},transform($,K){if($.success){let H=$.value;if(H.type==="raw"&&!Q.includeRawChunks)return;if(H.type==="response-metadata"&&H.timestamp&&typeof H.timestamp==="string")H.timestamp=new Date(H.timestamp);K.enqueue(H)}else K.error($.error)}})),request:{body:X},response:{headers:Z}}}catch(W){throw await QK(W,await dU(G))}}isFilePart(Q){return Q&&typeof Q==="object"&&"type"in Q&&Q.type==="file"}maybeEncodeFileParts(Q){for(let X of Q.prompt)for(let Y of X.content)if(this.isFilePart(Y)){let J=Y;if(J.data instanceof Uint8Array){let G=Uint8Array.from(J.data),W=Buffer.from(G).toString("base64");J.data=new URL(`data:${J.mediaType||"application/octet-stream"};base64,${W}`)}}return Q}getUrl(){return`${this.config.baseURL}/language-model`}getModelConfigHeaders(Q,X){return{"ai-language-model-specification-version":"3","ai-language-model-id":Q,"ai-language-model-streaming":String(X)}}},My6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0}get provider(){return this.config.provider}async doEmbed({values:Q,headers:X,abortSignal:Y,providerOptions:J}){var G;let W=await N9(this.config.headers());try{let{responseHeaders:Z,value:$,rawValue:K}=await KF({url:this.getUrl(),headers:WF(W,X!=null?X:{},this.getModelConfigHeaders(),await N9(this.config.o11yHeaders)),body:{values:Q,...J?{providerOptions:J}:{}},successfulResponseHandler:m7(Py6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(H)=>H}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{embeddings:$.embeddings,usage:(G=$.usage)!=null?G:void 0,providerMetadata:$.providerMetadata,response:{headers:Z,body:K},warnings:[]}}catch(Z){throw await QK(Z,await dU(W))}}getUrl(){return`${this.config.baseURL}/embedding-model`}getModelConfigHeaders(){return{"ai-embedding-model-specification-version":"3","ai-model-id":this.modelId}}},Py6=dQ(()=>JQ(N.object({embeddings:N.array(N.array(N.number())),usage:N.object({tokens:N.number()}).nullish(),providerMetadata:N.record(N.string(),N.record(N.string(),N.unknown())).optional()}))),Ty6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.maxImagesPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:Q,n:X,size:Y,aspectRatio:J,seed:G,files:W,mask:Z,providerOptions:$,headers:K,abortSignal:H}){var F;let V=await N9(this.config.headers());try{let{responseHeaders:q,value:z,rawValue:B}=await KF({url:this.getUrl(),headers:WF(V,K!=null?K:{},this.getModelConfigHeaders(),await N9(this.config.o11yHeaders)),body:{prompt:Q,n:X,...Y&&{size:Y},...J&&{aspectRatio:J},...G&&{seed:G},...$&&{providerOptions:$},...W&&{files:W.map((D)=>tG1(D))},...Z&&{mask:tG1(Z)}},successfulResponseHandler:m7(Ey6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(D)=>D}),...H&&{abortSignal:H},fetch:this.config.fetch});return{images:z.images,warnings:(F=z.warnings)!=null?F:[],providerMetadata:z.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:q}}}catch(q){throw QK(q,await dU(V))}}getUrl(){return`${this.config.baseURL}/image-model`}getModelConfigHeaders(){return{"ai-image-model-specification-version":"3","ai-model-id":this.modelId}}};function tG1(Q){if(Q.type==="file"&&Q.data instanceof Uint8Array)return{...Q,data:$F(Q.data)};return Q}var Ay6=N.object({images:N.array(N.unknown()).optional()}).catchall(N.unknown()),Ey6=N.object({images:N.array(N.string()),warnings:N.array(N.object({type:N.literal("other"),message:N.string()})).optional(),providerMetadata:N.record(N.string(),Ay6).optional()}),jy6=dQ(()=>JQ(N.object({query:N.union([N.string(),N.array(N.string())]).describe("Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."),max_results:N.number().optional().describe("Maximum number of search results to return (1-20, default: 10)"),max_tokens_per_page:N.number().optional().describe("Maximum number of tokens to extract per search result page (256-2048, default: 1024)"),country:N.string().optional().describe("Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')"),search_domain_filter:N.array(N.string()).optional().describe("List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']"),search_language_filter:N.array(N.string()).optional().describe("List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']"),search_after_date:N.string().optional().describe("Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."),search_before_date:N.string().optional().describe("Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."),search_recency_filter:N.enum(["day","week","month","year"]).optional().describe("Filter results by relative time period. Cannot be used with search_after_date or search_before_date.")}))),Cy6=dQ(()=>JQ(N.union([N.object({results:N.array(N.object({title:N.string(),url:N.string(),snippet:N.string(),date:N.string().optional(),lastUpdated:N.string().optional()})),id:N.string()}),N.object({error:N.enum(["api_error","rate_limit","timeout","invalid_input","unknown"]),statusCode:N.number().optional(),message:N.string()})]))),Iy6=p51({id:"gateway.perplexity_search",inputSchema:jy6,outputSchema:Cy6}),Ry6=(Q={})=>Iy6(Q),Sy6={perplexitySearch:Ry6};async function vy6(){var Q;return(Q=ZW1.getContext().headers)==null?void 0:Q["x-vercel-id"]}var ky6="3.0.11",_y6="0.0.1";function yy6(Q={}){var X,Y;let J=null,G=null,W=(X=Q.metadataCacheRefreshMillis)!=null?X:300000,Z=0,$=(Y=n51(Q.baseURL))!=null?Y:"https://ai-gateway.vercel.sh/v3/ai",K=async()=>{try{let D=await by6(Q);return t$({Authorization:`Bearer ${D.token}`,"ai-gateway-protocol-version":_y6,[WW1]:D.authMethod,...Q.headers},`ai-sdk/gateway/${ky6}`)}catch(D){throw ey.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:D})}},H=()=>{let D=EP({settingValue:void 0,environmentVariableName:"VERCEL_DEPLOYMENT_ID"}),L=EP({settingValue:void 0,environmentVariableName:"VERCEL_ENV"}),M=EP({settingValue:void 0,environmentVariableName:"VERCEL_REGION"});return async()=>{let C=await vy6();return{...D&&{"ai-o11y-deployment-id":D},...L&&{"ai-o11y-environment":L},...M&&{"ai-o11y-region":M},...C&&{"ai-o11y-request-id":C}}}},F=(D)=>{return new wy6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})},V=async()=>{var D,L,M;let C=(M=(L=(D=Q._internal)==null?void 0:D.currentDate)==null?void 0:L.call(D).getTime())!=null?M:Date.now();if(!J||C-Z>W)Z=C,J=new sG1({baseURL:$,headers:K,fetch:Q.fetch}).getAvailableModels().then((A)=>{return G=A,A}).catch(async(A)=>{throw await QK(A,await dU(await K()))});return G?Promise.resolve(G):J},q=async()=>{return new sG1({baseURL:$,headers:K,fetch:Q.fetch}).getCredits().catch(async(D)=>{throw await QK(D,await dU(await K()))})},z=function(D){if(new.target)throw Error("The Gateway Provider model function cannot be called with the new keyword.");return F(D)};z.specificationVersion="v3",z.getAvailableModels=V,z.getCredits=q,z.imageModel=(D)=>{return new Ty6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})},z.languageModel=F;let B=(D)=>{return new My6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})};return z.embeddingModel=B,z.textEmbeddingModel=B,z.tools=Sy6,z}var KW1=yy6();async function by6(Q){let X=EP({settingValue:Q.apiKey,environmentVariableName:"AI_GATEWAY_API_KEY"});if(X)return{token:X,authMethod:"api-key"};return{token:await $W1.getVercelOidcToken(),authMethod:"oidc"}}r6();r6();r6();r6();r6();r6();var $71=m6(Z1(),1),YQ0=m6(Z1(),1);r6();r6();var fy6=Object.defineProperty,hy6=(Q,X)=>{for(var Y in X)fy6(Q,Y,{get:X[Y],enumerable:!0})},NW1="AI_InvalidArgumentError",OW1=`vercel.ai.error.${NW1}`,xy6=Symbol.for(OW1),LW1,KW=class extends L1{constructor({parameter:Q,value:X,message:Y}){super({name:NW1,message:`Invalid argument for parameter ${Q}: ${Y}`});this[LW1]=!0,this.parameter=Q,this.value=X}static isInstance(Q){return L1.hasMarker(Q,OW1)}};LW1=xy6;var gy6="AI_InvalidStreamPartError",uy6=`vercel.ai.error.${gy6}`,my6=Symbol.for(uy6),ly6;ly6=my6;var wW1="AI_InvalidToolApprovalError",MW1=`vercel.ai.error.${wW1}`,dy6=Symbol.for(MW1),PW1,py6=class extends L1{constructor({approvalId:Q}){super({name:wW1,message:`Tool approval response references unknown approvalId: "${Q}". No matching tool-approval-request found in message history.`});this[PW1]=!0,this.approvalId=Q}static isInstance(Q){return L1.hasMarker(Q,MW1)}};PW1=dy6;var TW1="AI_InvalidToolInputError",AW1=`vercel.ai.error.${TW1}`,cy6=Symbol.for(AW1),EW1,$Q0=class extends L1{constructor({toolInput:Q,toolName:X,cause:Y,message:J=`Invalid input for tool ${X}: ${_5(Y)}`}){super({name:TW1,message:J,cause:Y});this[EW1]=!0,this.toolInput=Q,this.toolName=X}static isInstance(Q){return L1.hasMarker(Q,AW1)}};EW1=cy6;var jW1="AI_ToolCallNotFoundForApprovalError",CW1=`vercel.ai.error.${jW1}`,ny6=Symbol.for(CW1),IW1,RW1=class extends L1{constructor({toolCallId:Q,approvalId:X}){super({name:jW1,message:`Tool call "${Q}" not found for approval request "${X}".`});this[IW1]=!0,this.toolCallId=Q,this.approvalId=X}static isInstance(Q){return L1.hasMarker(Q,CW1)}};IW1=ny6;var iy6="AI_NoImageGeneratedError",ay6=`vercel.ai.error.${iy6}`,ry6=Symbol.for(ay6),oy6;oy6=ry6;var SW1="AI_NoObjectGeneratedError",vW1=`vercel.ai.error.${SW1}`,sy6=Symbol.for(vW1),kW1,XK=class extends L1{constructor({message:Q="No object generated.",cause:X,text:Y,response:J,usage:G,finishReason:W}){super({name:SW1,message:Q,cause:X});this[kW1]=!0,this.text=Y,this.response=J,this.usage=G,this.finishReason=W}static isInstance(Q){return L1.hasMarker(Q,vW1)}};kW1=sy6;var _W1="AI_NoOutputGeneratedError",yW1=`vercel.ai.error.${_W1}`,ty6=Symbol.for(yW1),bW1,ey6=class extends L1{constructor({message:Q="No output generated.",cause:X}={}){super({name:_W1,message:Q,cause:X});this[bW1]=!0}static isInstance(Q){return L1.hasMarker(Q,yW1)}};bW1=ty6;var fW1="AI_NoSuchToolError",hW1=`vercel.ai.error.${fW1}`,Qb6=Symbol.for(hW1),xW1,QQ0=class extends L1{constructor({toolName:Q,availableTools:X=void 0,message:Y=`Model tried to call unavailable tool '${Q}'. ${X===void 0?"No tools are available.":`Available tools: ${X.join(", ")}.`}`}){super({name:fW1,message:Y});this[xW1]=!0,this.toolName=Q,this.availableTools=X}static isInstance(Q){return L1.hasMarker(Q,hW1)}};xW1=Qb6;var gW1="AI_ToolCallRepairError",uW1=`vercel.ai.error.${gW1}`,Xb6=Symbol.for(uW1),mW1,Yb6=class extends L1{constructor({cause:Q,originalError:X,message:Y=`Error repairing tool call: ${_5(Q)}`}){super({name:gW1,message:Y,cause:Q});this[mW1]=!0,this.originalError=X}static isInstance(Q){return L1.hasMarker(Q,uW1)}};mW1=Xb6;var Jb6=class extends L1{constructor(Q){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${Q.version} for provider "${Q.provider}" and model "${Q.modelId}". AI SDK 5 only supports models that implement specification version "v2".`});this.version=Q.version,this.provider=Q.provider,this.modelId=Q.modelId}},Gb6="AI_InvalidDataContentError",Wb6=`vercel.ai.error.${Gb6}`,Zb6=Symbol.for(Wb6),$b6;$b6=Zb6;var lW1="AI_InvalidMessageRoleError",dW1=`vercel.ai.error.${lW1}`,Kb6=Symbol.for(dW1),pW1,Hb6=class extends L1{constructor({role:Q,message:X=`Invalid message role: '${Q}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:lW1,message:X});this[pW1]=!0,this.role=Q}static isInstance(Q){return L1.hasMarker(Q,dW1)}};pW1=Kb6;var cW1="AI_MessageConversionError",nW1=`vercel.ai.error.${cW1}`,Fb6=Symbol.for(nW1),iW1,Vb6=class extends L1{constructor({originalMessage:Q,message:X}){super({name:cW1,message:X});this[iW1]=!0,this.originalMessage=Q}static isInstance(Q){return L1.hasMarker(Q,nW1)}};iW1=Fb6;var aW1="AI_RetryError",rW1=`vercel.ai.error.${aW1}`,qb6=Symbol.for(rW1),oW1,HW1=class extends L1{constructor({message:Q,reason:X,errors:Y}){super({name:aW1,message:Q});this[oW1]=!0,this.reason=X,this.errors=Y,this.lastError=Y[Y.length-1]}static isInstance(Q){return L1.hasMarker(Q,rW1)}};oW1=qb6;function zb6({warning:Q,provider:X,model:Y}){let J=`AI SDK Warning (${X} / ${Y}):`;switch(Q.type){case"unsupported":{let G=`${J} The feature "${Q.feature}" is not supported.`;if(Q.details)G+=` ${Q.details}`;return G}case"compatibility":{let G=`${J} The feature "${Q.feature}" is used in a compatibility mode.`;if(Q.details)G+=` ${Q.details}`;return G}case"other":return`${J} ${Q.message}`;default:return`${J} ${JSON.stringify(Q,null,2)}`}}var Ub6="AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.",FW1=!1,sW1=(Q)=>{if(Q.warnings.length===0)return;let X=globalThis.AI_SDK_LOG_WARNINGS;if(X===!1)return;if(typeof X==="function"){X(Q);return}if(!FW1)FW1=!0,console.info(Ub6);for(let Y of Q.warnings)console.warn(zb6({warning:Y,provider:Q.provider,model:Q.model}))};function Bb6({provider:Q,modelId:X}){sW1({warnings:[{type:"compatibility",feature:"specificationVersion",details:"Using v2 specification compatibility mode. Some features may not be available."}],provider:Q,model:X})}function Db6(Q){if(Q.specificationVersion==="v3")return Q;return Bb6({provider:Q.provider,modelId:Q.modelId}),new Proxy(Q,{get(X,Y){switch(Y){case"specificationVersion":return"v3";case"doGenerate":return async(...J)=>{let G=await X.doGenerate(...J);return{...G,finishReason:tW1(G.finishReason),usage:eW1(G.usage)}};case"doStream":return async(...J)=>{let G=await X.doStream(...J);return{...G,stream:Nb6(G.stream)}};default:return X[Y]}}})}function Nb6(Q){return Q.pipeThrough(new TransformStream({transform(X,Y){switch(X.type){case"finish":Y.enqueue({...X,finishReason:tW1(X.finishReason),usage:eW1(X.usage)});break;default:Y.enqueue(X);break}}}))}function tW1(Q){return{unified:Q==="unknown"?"other":Q,raw:void 0}}function eW1(Q){return{inputTokens:{total:Q.inputTokens,noCache:void 0,cacheRead:Q.cachedInputTokens,cacheWrite:void 0},outputTokens:{total:Q.outputTokens,text:void 0,reasoning:Q.reasoningTokens}}}function Q71(Q){if(typeof Q!=="string"){if(Q.specificationVersion!=="v3"&&Q.specificationVersion!=="v2"){let X=Q;throw new Jb6({version:X.specificationVersion,provider:X.provider,modelId:X.modelId})}return Db6(Q)}return Ob6().languageModel(Q)}function Ob6(){var Q;return(Q=globalThis.AI_SDK_DEFAULT_PROVIDER)!=null?Q:KW1}function X71(Q){if(Q==null)return;if(typeof Q==="number")return Q;return Q.totalMs}function Lb6(Q){if(Q==null||typeof Q==="number")return;return Q.stepMs}function wb6(Q){if(Q==null||typeof Q==="number")return;return Q.chunkMs}var Mb6=[{mediaType:"image/gif",bytesPrefix:[71,73,70]},{mediaType:"image/png",bytesPrefix:[137,80,78,71]},{mediaType:"image/jpeg",bytesPrefix:[255,216]},{mediaType:"image/webp",bytesPrefix:[82,73,70,70,null,null,null,null,87,69,66,80]},{mediaType:"image/bmp",bytesPrefix:[66,77]},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0]},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42]},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102]},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99]}];var Pb6=(Q)=>{let X=typeof Q==="string"?uU(Q):Q,Y=(X[6]&127)<<21|(X[7]&127)<<14|(X[8]&127)<<7|X[9]&127;return X.slice(Y+10)};function Tb6(Q){return typeof Q==="string"&&Q.startsWith("SUQz")||typeof Q!=="string"&&Q.length>10&&Q[0]===73&&Q[1]===68&&Q[2]===51?Pb6(Q):Q}function Ab6({data:Q,signatures:X}){let Y=Tb6(Q),J=typeof Y==="string"?uU(Y.substring(0,Math.min(Y.length,24))):Y;for(let G of X)if(J.length>=G.bytesPrefix.length&&G.bytesPrefix.every((W,Z)=>W===null||J[Z]===W))return G.mediaType;return}var Eb6="6.0.28",jb6=async({url:Q})=>{var X;let Y=Q.toString();try{let J=await fetch(Y,{headers:t$({},`ai-sdk/${Eb6}`,ny())});if(!J.ok)throw new cy({url:Y,statusCode:J.status,statusText:J.statusText});return{data:new Uint8Array(await J.arrayBuffer()),mediaType:(X=J.headers.get("content-type"))!=null?X:void 0}}catch(J){if(cy.isInstance(J))throw J;throw new cy({url:Y,cause:J})}},Cb6=(Q=jb6)=>(X)=>Promise.all(X.map(async(Y)=>Y.isUrlSupportedByModel?null:Q(Y)));function Ib6(Q){try{let[X,Y]=Q.split(",");return{mediaType:X.split(";")[0].split(":")[1],base64Content:Y}}catch(X){return{mediaType:void 0,base64Content:void 0}}}var Y71=N.union([N.string(),N.instanceof(Uint8Array),N.instanceof(ArrayBuffer),N.custom((Q)=>{var X,Y;return(Y=(X=globalThis.Buffer)==null?void 0:X.isBuffer(Q))!=null?Y:!1},{message:"Must be a Buffer"})]);function J71(Q){if(Q instanceof Uint8Array)return{data:Q,mediaType:void 0};if(Q instanceof ArrayBuffer)return{data:new Uint8Array(Q),mediaType:void 0};if(typeof Q==="string")try{Q=new URL(Q)}catch(X){}if(Q instanceof URL&&Q.protocol==="data:"){let{mediaType:X,base64Content:Y}=Ib6(Q.toString());if(X==null||Y==null)throw new L1({name:"InvalidDataContentError",message:`Invalid data URL format in content ${Q.toString()}`});return{data:Y,mediaType:X}}return{data:Q,mediaType:void 0}}function Rb6(Q){if(typeof Q==="string")return Q;if(Q instanceof ArrayBuffer)return $F(new Uint8Array(Q));return $F(Q)}function Xb(Q){return Q===void 0?[]:Array.isArray(Q)?Q:[Q]}async function Sb6({prompt:Q,supportedUrls:X,download:Y=Cb6()}){let J=await kb6(Q.messages,Y,X),G=[...Q.system!=null?typeof Q.system==="string"?[{role:"system",content:Q.system}]:Xb(Q.system).map((Z)=>({role:"system",content:Z.content,providerOptions:Z.providerOptions})):[],...Q.messages.map((Z)=>vb6({message:Z,downloadedAssets:J}))],W=[];for(let Z of G){if(Z.role!=="tool"){W.push(Z);continue}let $=W.at(-1);if(($==null?void 0:$.role)==="tool")$.content.push(...Z.content);else W.push(Z)}return W}function vb6({message:Q,downloadedAssets:X}){let Y=Q.role;switch(Y){case"system":return{role:"system",content:Q.content,providerOptions:Q.providerOptions};case"user":{if(typeof Q.content==="string")return{role:"user",content:[{type:"text",text:Q.content}],providerOptions:Q.providerOptions};return{role:"user",content:Q.content.map((J)=>_b6(J,X)).filter((J)=>J.type!=="text"||J.text!==""),providerOptions:Q.providerOptions}}case"assistant":{if(typeof Q.content==="string")return{role:"assistant",content:[{type:"text",text:Q.content}],providerOptions:Q.providerOptions};return{role:"assistant",content:Q.content.filter((J)=>J.type!=="text"||J.text!==""||J.providerOptions!=null).filter((J)=>J.type!=="tool-approval-request").map((J)=>{let G=J.providerOptions;switch(J.type){case"file":{let{data:W,mediaType:Z}=J71(J.data);return{type:"file",data:W,filename:J.filename,mediaType:Z!=null?Z:J.mediaType,providerOptions:G}}case"reasoning":return{type:"reasoning",text:J.text,providerOptions:G};case"text":return{type:"text",text:J.text,providerOptions:G};case"tool-call":return{type:"tool-call",toolCallId:J.toolCallId,toolName:J.toolName,input:J.input,providerExecuted:J.providerExecuted,providerOptions:G};case"tool-result":return{type:"tool-result",toolCallId:J.toolCallId,toolName:J.toolName,output:VW1(J.output),providerOptions:G}}}),providerOptions:Q.providerOptions}}case"tool":return{role:"tool",content:Q.content.filter((J)=>J.type!=="tool-approval-response"||J.providerExecuted).map((J)=>{switch(J.type){case"tool-result":return{type:"tool-result",toolCallId:J.toolCallId,toolName:J.toolName,output:VW1(J.output),providerOptions:J.providerOptions};case"tool-approval-response":return{type:"tool-approval-response",approvalId:J.approvalId,approved:J.approved,reason:J.reason}}}),providerOptions:Q.providerOptions};default:throw new Hb6({role:Y})}}async function kb6(Q,X,Y){let J=Q.filter((W)=>W.role==="user").map((W)=>W.content).filter((W)=>Array.isArray(W)).flat().filter((W)=>W.type==="image"||W.type==="file").map((W)=>{var Z;let $=(Z=W.mediaType)!=null?Z:W.type==="image"?"image/*":void 0,K=W.type==="image"?W.image:W.data;if(typeof K==="string")try{K=new URL(K)}catch(H){}return{mediaType:$,data:K}}).filter((W)=>W.data instanceof URL).map((W)=>({url:W.data,isUrlSupportedByModel:W.mediaType!=null&&f51({url:W.data.toString(),mediaType:W.mediaType,supportedUrls:Y})})),G=await X(J);return Object.fromEntries(G.map((W,Z)=>W==null?null:[J[Z].url.toString(),{data:W.data,mediaType:W.mediaType}]).filter((W)=>W!=null))}function _b6(Q,X){var Y;if(Q.type==="text")return{type:"text",text:Q.text,providerOptions:Q.providerOptions};let J,G=Q.type;switch(G){case"image":J=Q.image;break;case"file":J=Q.data;break;default:throw Error(`Unsupported part type: ${G}`)}let{data:W,mediaType:Z}=J71(J),$=Z!=null?Z:Q.mediaType,K=W;if(K instanceof URL){let H=X[K.toString()];if(H)K=H.data,$!=null||($=H.mediaType)}switch(G){case"image":{if(K instanceof Uint8Array||typeof K==="string")$=(Y=Ab6({data:K,signatures:Mb6}))!=null?Y:$;return{type:"file",mediaType:$!=null?$:"image/*",filename:void 0,data:K,providerOptions:Q.providerOptions}}case"file":{if($==null)throw Error("Media type is missing for file part");return{type:"file",mediaType:$,filename:Q.filename,data:K,providerOptions:Q.providerOptions}}}}function VW1(Q){if(Q.type!=="content")return Q;return{type:"content",value:Q.value.map((X)=>{if(X.type!=="media")return X;if(X.mediaType.startsWith("image/"))return{type:"image-data",data:X.data,mediaType:X.mediaType};return{type:"file-data",data:X.data,mediaType:X.mediaType}})}}async function cU({toolCallId:Q,input:X,output:Y,tool:J,errorMode:G}){if(G==="text")return{type:"error-text",value:_5(Y)};else if(G==="json")return{type:"error-json",value:qW1(Y)};if(J==null?void 0:J.toModelOutput)return await J.toModelOutput({toolCallId:Q,input:X,output:Y});return typeof Y==="string"?{type:"text",value:Y}:{type:"json",value:qW1(Y)}}function qW1(Q){return Q===void 0?null:Q}function yb6({maxOutputTokens:Q,temperature:X,topP:Y,topK:J,presencePenalty:G,frequencyPenalty:W,seed:Z,stopSequences:$}){if(Q!=null){if(!Number.isInteger(Q))throw new KW({parameter:"maxOutputTokens",value:Q,message:"maxOutputTokens must be an integer"});if(Q<1)throw new KW({parameter:"maxOutputTokens",value:Q,message:"maxOutputTokens must be >= 1"})}if(X!=null){if(typeof X!=="number")throw new KW({parameter:"temperature",value:X,message:"temperature must be a number"})}if(Y!=null){if(typeof Y!=="number")throw new KW({parameter:"topP",value:Y,message:"topP must be a number"})}if(J!=null){if(typeof J!=="number")throw new KW({parameter:"topK",value:J,message:"topK must be a number"})}if(G!=null){if(typeof G!=="number")throw new KW({parameter:"presencePenalty",value:G,message:"presencePenalty must be a number"})}if(W!=null){if(typeof W!=="number")throw new KW({parameter:"frequencyPenalty",value:W,message:"frequencyPenalty must be a number"})}if(Z!=null){if(!Number.isInteger(Z))throw new KW({parameter:"seed",value:Z,message:"seed must be an integer"})}return{maxOutputTokens:Q,temperature:X,topP:Y,topK:J,presencePenalty:G,frequencyPenalty:W,stopSequences:$,seed:Z}}function bb6(Q){return Q!=null&&Object.keys(Q).length>0}async function fb6({tools:Q,toolChoice:X,activeTools:Y}){if(!bb6(Q))return{tools:void 0,toolChoice:void 0};let J=Y!=null?Object.entries(Q).filter(([W])=>Y.includes(W)):Object.entries(Q),G=[];for(let[W,Z]of J){let $=Z.type;switch($){case void 0:case"dynamic":case"function":G.push({type:"function",name:W,description:Z.description,inputSchema:await ZW(Z.inputSchema).jsonSchema,...Z.inputExamples!=null?{inputExamples:Z.inputExamples}:{},providerOptions:Z.providerOptions,...Z.strict!=null?{strict:Z.strict}:{}});break;case"provider":G.push({type:"provider",name:W,id:Z.id,args:Z.args});break;default:throw Error(`Unsupported tool type: ${$}`)}}return{tools:G,toolChoice:X==null?{type:"auto"}:typeof X==="string"?{type:X}:{type:"tool",toolName:X.toolName}}}var _P=N.lazy(()=>N.union([N.null(),N.string(),N.number(),N.boolean(),N.record(N.string(),_P.optional()),N.array(_P)])),i1=N.record(N.string(),N.record(N.string(),_P.optional())),G71=N.object({type:N.literal("text"),text:N.string(),providerOptions:i1.optional()}),hb6=N.object({type:N.literal("image"),image:N.union([Y71,N.instanceof(URL)]),mediaType:N.string().optional(),providerOptions:i1.optional()}),W71=N.object({type:N.literal("file"),data:N.union([Y71,N.instanceof(URL)]),filename:N.string().optional(),mediaType:N.string(),providerOptions:i1.optional()}),xb6=N.object({type:N.literal("reasoning"),text:N.string(),providerOptions:i1.optional()}),gb6=N.object({type:N.literal("tool-call"),toolCallId:N.string(),toolName:N.string(),input:N.unknown(),providerOptions:i1.optional(),providerExecuted:N.boolean().optional()}),ub6=N.discriminatedUnion("type",[N.object({type:N.literal("text"),value:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("json"),value:_P,providerOptions:i1.optional()}),N.object({type:N.literal("execution-denied"),reason:N.string().optional(),providerOptions:i1.optional()}),N.object({type:N.literal("error-text"),value:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("error-json"),value:_P,providerOptions:i1.optional()}),N.object({type:N.literal("content"),value:N.array(N.union([N.object({type:N.literal("text"),text:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("media"),data:N.string(),mediaType:N.string()}),N.object({type:N.literal("file-data"),data:N.string(),mediaType:N.string(),filename:N.string().optional(),providerOptions:i1.optional()}),N.object({type:N.literal("file-url"),url:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("file-id"),fileId:N.union([N.string(),N.record(N.string(),N.string())]),providerOptions:i1.optional()}),N.object({type:N.literal("image-data"),data:N.string(),mediaType:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("image-url"),url:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("image-file-id"),fileId:N.union([N.string(),N.record(N.string(),N.string())]),providerOptions:i1.optional()}),N.object({type:N.literal("custom"),providerOptions:i1.optional()})]))})]),Z71=N.object({type:N.literal("tool-result"),toolCallId:N.string(),toolName:N.string(),output:ub6,providerOptions:i1.optional()}),mb6=N.object({type:N.literal("tool-approval-request"),approvalId:N.string(),toolCallId:N.string()}),lb6=N.object({type:N.literal("tool-approval-response"),approvalId:N.string(),approved:N.boolean(),reason:N.string().optional()}),db6=N.object({role:N.literal("system"),content:N.string(),providerOptions:i1.optional()}),pb6=N.object({role:N.literal("user"),content:N.union([N.string(),N.array(N.union([G71,hb6,W71]))]),providerOptions:i1.optional()}),cb6=N.object({role:N.literal("assistant"),content:N.union([N.string(),N.array(N.union([G71,W71,xb6,gb6,Z71,mb6]))]),providerOptions:i1.optional()}),nb6=N.object({role:N.literal("tool"),content:N.array(N.union([Z71,lb6])),providerOptions:i1.optional()}),ib6=N.union([db6,pb6,cb6,nb6]);async function ab6(Q){if(Q.prompt==null&&Q.messages==null)throw new JF({prompt:Q,message:"prompt or messages must be defined"});if(Q.prompt!=null&&Q.messages!=null)throw new JF({prompt:Q,message:"prompt and messages cannot be defined at the same time"});if(Q.system!=null&&typeof Q.system!=="string"&&!Xb(Q.system).every((J)=>typeof J==="object"&&J!==null&&("role"in J)&&J.role==="system"))throw new JF({prompt:Q,message:"system must be a string, SystemModelMessage, or array of SystemModelMessage"});let X;if(Q.prompt!=null&&typeof Q.prompt==="string")X=[{role:"user",content:Q.prompt}];else if(Q.prompt!=null&&Array.isArray(Q.prompt))X=Q.prompt;else if(Q.messages!=null)X=Q.messages;else throw new JF({prompt:Q,message:"prompt or messages must be defined"});if(X.length===0)throw new JF({prompt:Q,message:"messages must not be empty"});let Y=await wX({value:X,schema:N.array(ib6)});if(!Y.success)throw new JF({prompt:Q,message:"The messages do not match the ModelMessage[] schema.",cause:Y.error});return{messages:X,system:Q.system}}function rb6(Q){if(!ey.isInstance(Q))return Q;let X=(process==null?void 0:"production")==="production",Y="https://ai-sdk.dev/unauthenticated-ai-gateway";if(X)return new L1({name:"GatewayError",message:`Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${Y}`});return Object.assign(Error(`\x1B[1m\x1B[31mUnauthenticated request to AI Gateway.\x1B[0m
1065
+ Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;return new Q({message:Z,statusCode:G,cause:W})}},QW1="GatewayInvalidRequestError",Wy6=`vercel.ai.gateway.error.${QW1}`,yG1=Symbol.for(Wy6),bG1,fG1,Zy6=class extends(fG1=hY,bG1=yG1,fG1){constructor({message:Q="Invalid request",statusCode:X=400,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[bG1]=!0,this.name=QW1,this.type="invalid_request_error"}static isInstance(Q){return hY.hasMarker(Q)&&yG1 in Q}},XW1="GatewayRateLimitError",$y6=`vercel.ai.gateway.error.${XW1}`,hG1=Symbol.for($y6),xG1,gG1,Ky6=class extends(gG1=hY,xG1=hG1,gG1){constructor({message:Q="Rate limit exceeded",statusCode:X=429,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[xG1]=!0,this.name=XW1,this.type="rate_limit_exceeded"}static isInstance(Q){return hY.hasMarker(Q)&&hG1 in Q}},YW1="GatewayModelNotFoundError",Hy6=`vercel.ai.gateway.error.${YW1}`,uG1=Symbol.for(Hy6),Fy6=dQ(()=>JQ(N.object({modelId:N.string()}))),mG1,lG1,Vy6=class extends(lG1=hY,mG1=uG1,lG1){constructor({message:Q="Model not found",statusCode:X=404,modelId:Y,cause:J}={}){super({message:Q,statusCode:X,cause:J});this[mG1]=!0,this.name=YW1,this.type="model_not_found",this.modelId=Y}static isInstance(Q){return hY.hasMarker(Q)&&uG1 in Q}},JW1="GatewayInternalServerError",qy6=`vercel.ai.gateway.error.${JW1}`,dG1=Symbol.for(qy6),pG1,cG1,nG1=class extends(cG1=hY,pG1=dG1,cG1){constructor({message:Q="Internal server error",statusCode:X=500,cause:Y}={}){super({message:Q,statusCode:X,cause:Y});this[pG1]=!0,this.name=JW1,this.type="internal_server_error"}static isInstance(Q){return hY.hasMarker(Q)&&dG1 in Q}},GW1="GatewayResponseError",zy6=`vercel.ai.gateway.error.${GW1}`,iG1=Symbol.for(zy6),aG1,rG1,Uy6=class extends(rG1=hY,aG1=iG1,rG1){constructor({message:Q="Invalid response from Gateway",statusCode:X=502,response:Y,validationError:J,cause:G}={}){super({message:Q,statusCode:X,cause:G});this[aG1]=!0,this.name=GW1,this.type="response_error",this.response=Y,this.validationError=J}static isInstance(Q){return hY.hasMarker(Q)&&iG1 in Q}};async function oG1({response:Q,statusCode:X,defaultMessage:Y="Gateway request failed",cause:J,authMethod:G}){let W=await wX({value:Q,schema:By6});if(!W.success)return new Uy6({message:`Invalid error response format: ${Y}`,statusCode:X,response:Q,validationError:W.error,cause:J});let Z=W.value,$=Z.error.type,K=Z.error.message;switch($){case"authentication_error":return ey.createContextualError({apiKeyProvided:G==="api-key",oidcTokenProvided:G==="oidc",statusCode:X,cause:J});case"invalid_request_error":return new Zy6({message:K,statusCode:X,cause:J});case"rate_limit_exceeded":return new Ky6({message:K,statusCode:X,cause:J});case"model_not_found":{let H=await wX({value:Z.error.param,schema:Fy6});return new Vy6({message:K,statusCode:X,modelId:H.success?H.value.modelId:void 0,cause:J})}case"internal_server_error":return new nG1({message:K,statusCode:X,cause:J});default:return new nG1({message:K,statusCode:X,cause:J})}}var By6=dQ(()=>JQ(N.object({error:N.object({message:N.string(),type:N.string().nullish(),param:N.unknown().nullish(),code:N.union([N.string(),N.number()]).nullish()})})));function QK(Q,X){var Y;if(hY.isInstance(Q))return Q;if(r8.isInstance(Q))return oG1({response:Dy6(Q),statusCode:(Y=Q.statusCode)!=null?Y:500,defaultMessage:"Gateway request failed",cause:Q,authMethod:X});return oG1({response:{},statusCode:500,defaultMessage:Q instanceof Error?`Gateway request failed: ${Q.message}`:"Unknown Gateway error",cause:Q,authMethod:X})}function Dy6(Q){if(Q.data!==void 0)return Q.data;if(Q.responseBody!=null)try{return JSON.parse(Q.responseBody)}catch(X){return Q.responseBody}return{}}var WW1="ai-gateway-auth-method";async function dU(Q){let X=await wX({value:Q[WW1],schema:Ny6});return X.success?X.value:void 0}var Ny6=dQ(()=>JQ(N.union([N.literal("api-key"),N.literal("oidc")]))),sG1=class{constructor(Q){this.config=Q}async getAvailableModels(){try{let{value:Q}=await k80({url:`${this.config.baseURL}/config`,headers:await N9(this.config.headers()),successfulResponseHandler:m7(Oy6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(X)=>X}),fetch:this.config.fetch});return Q}catch(Q){throw await QK(Q)}}async getCredits(){try{let Q=new URL(this.config.baseURL),{value:X}=await k80({url:`${Q.origin}/v1/credits`,headers:await N9(this.config.headers()),successfulResponseHandler:m7(Ly6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(Y)=>Y}),fetch:this.config.fetch});return X}catch(Q){throw await QK(Q)}}},Oy6=dQ(()=>JQ(N.object({models:N.array(N.object({id:N.string(),name:N.string(),description:N.string().nullish(),pricing:N.object({input:N.string(),output:N.string(),input_cache_read:N.string().nullish(),input_cache_write:N.string().nullish()}).transform(({input:Q,output:X,input_cache_read:Y,input_cache_write:J})=>({input:Q,output:X,...Y?{cachedInputTokens:Y}:{},...J?{cacheCreationInputTokens:J}:{}})).nullish(),specification:N.object({specificationVersion:N.literal("v3"),provider:N.string(),modelId:N.string()}),modelType:N.enum(["language","embedding","image"]).nullish()}))}))),Ly6=dQ(()=>JQ(N.object({balance:N.string(),total_used:N.string()}).transform(({balance:Q,total_used:X})=>({balance:Q,totalUsed:X})))),wy6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.supportedUrls={"*/*":[/.*/]}}get provider(){return this.config.provider}async getArgs(Q){let{abortSignal:X,...Y}=Q;return{args:this.maybeEncodeFileParts(Y),warnings:[]}}async doGenerate(Q){let{args:X,warnings:Y}=await this.getArgs(Q),{abortSignal:J}=Q,G=await N9(this.config.headers());try{let{responseHeaders:W,value:Z,rawValue:$}=await KF({url:this.getUrl(),headers:WF(G,Q.headers,this.getModelConfigHeaders(this.modelId,!1),await N9(this.config.o11yHeaders)),body:X,successfulResponseHandler:m7(N.any()),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(K)=>K}),...J&&{abortSignal:J},fetch:this.config.fetch});return{...Z,request:{body:X},response:{headers:W,body:$},warnings:Y}}catch(W){throw await QK(W,await dU(G))}}async doStream(Q){let{args:X,warnings:Y}=await this.getArgs(Q),{abortSignal:J}=Q,G=await N9(this.config.headers());try{let{value:W,responseHeaders:Z}=await KF({url:this.getUrl(),headers:WF(G,Q.headers,this.getModelConfigHeaders(this.modelId,!0),await N9(this.config.o11yHeaders)),body:X,successfulResponseHandler:c51(N.any()),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:($)=>$}),...J&&{abortSignal:J},fetch:this.config.fetch});return{stream:W.pipeThrough(new TransformStream({start($){if(Y.length>0)$.enqueue({type:"stream-start",warnings:Y})},transform($,K){if($.success){let H=$.value;if(H.type==="raw"&&!Q.includeRawChunks)return;if(H.type==="response-metadata"&&H.timestamp&&typeof H.timestamp==="string")H.timestamp=new Date(H.timestamp);K.enqueue(H)}else K.error($.error)}})),request:{body:X},response:{headers:Z}}}catch(W){throw await QK(W,await dU(G))}}isFilePart(Q){return Q&&typeof Q==="object"&&"type"in Q&&Q.type==="file"}maybeEncodeFileParts(Q){for(let X of Q.prompt)for(let Y of X.content)if(this.isFilePart(Y)){let J=Y;if(J.data instanceof Uint8Array){let G=Uint8Array.from(J.data),W=Buffer.from(G).toString("base64");J.data=new URL(`data:${J.mediaType||"application/octet-stream"};base64,${W}`)}}return Q}getUrl(){return`${this.config.baseURL}/language-model`}getModelConfigHeaders(Q,X){return{"ai-language-model-specification-version":"3","ai-language-model-id":Q,"ai-language-model-streaming":String(X)}}},My6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0}get provider(){return this.config.provider}async doEmbed({values:Q,headers:X,abortSignal:Y,providerOptions:J}){var G;let W=await N9(this.config.headers());try{let{responseHeaders:Z,value:$,rawValue:K}=await KF({url:this.getUrl(),headers:WF(W,X!=null?X:{},this.getModelConfigHeaders(),await N9(this.config.o11yHeaders)),body:{values:Q,...J?{providerOptions:J}:{}},successfulResponseHandler:m7(Py6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(H)=>H}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{embeddings:$.embeddings,usage:(G=$.usage)!=null?G:void 0,providerMetadata:$.providerMetadata,response:{headers:Z,body:K},warnings:[]}}catch(Z){throw await QK(Z,await dU(W))}}getUrl(){return`${this.config.baseURL}/embedding-model`}getModelConfigHeaders(){return{"ai-embedding-model-specification-version":"3","ai-model-id":this.modelId}}},Py6=dQ(()=>JQ(N.object({embeddings:N.array(N.array(N.number())),usage:N.object({tokens:N.number()}).nullish(),providerMetadata:N.record(N.string(),N.record(N.string(),N.unknown())).optional()}))),Ty6=class{constructor(Q,X){this.modelId=Q,this.config=X,this.specificationVersion="v3",this.maxImagesPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:Q,n:X,size:Y,aspectRatio:J,seed:G,files:W,mask:Z,providerOptions:$,headers:K,abortSignal:H}){var F;let V=await N9(this.config.headers());try{let{responseHeaders:q,value:z,rawValue:B}=await KF({url:this.getUrl(),headers:WF(V,K!=null?K:{},this.getModelConfigHeaders(),await N9(this.config.o11yHeaders)),body:{prompt:Q,n:X,...Y&&{size:Y},...J&&{aspectRatio:J},...G&&{seed:G},...$&&{providerOptions:$},...W&&{files:W.map((D)=>tG1(D))},...Z&&{mask:tG1(Z)}},successfulResponseHandler:m7(Ey6),failedResponseHandler:$W({errorSchema:N.any(),errorToMessage:(D)=>D}),...H&&{abortSignal:H},fetch:this.config.fetch});return{images:z.images,warnings:(F=z.warnings)!=null?F:[],providerMetadata:z.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:q}}}catch(q){throw QK(q,await dU(V))}}getUrl(){return`${this.config.baseURL}/image-model`}getModelConfigHeaders(){return{"ai-image-model-specification-version":"3","ai-model-id":this.modelId}}};function tG1(Q){if(Q.type==="file"&&Q.data instanceof Uint8Array)return{...Q,data:$F(Q.data)};return Q}var Ay6=N.object({images:N.array(N.unknown()).optional()}).catchall(N.unknown()),Ey6=N.object({images:N.array(N.string()),warnings:N.array(N.object({type:N.literal("other"),message:N.string()})).optional(),providerMetadata:N.record(N.string(),Ay6).optional()}),jy6=dQ(()=>JQ(N.object({query:N.union([N.string(),N.array(N.string())]).describe("Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."),max_results:N.number().optional().describe("Maximum number of search results to return (1-20, default: 10)"),max_tokens_per_page:N.number().optional().describe("Maximum number of tokens to extract per search result page (256-2048, default: 1024)"),country:N.string().optional().describe("Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')"),search_domain_filter:N.array(N.string()).optional().describe("List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']"),search_language_filter:N.array(N.string()).optional().describe("List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']"),search_after_date:N.string().optional().describe("Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."),search_before_date:N.string().optional().describe("Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."),search_recency_filter:N.enum(["day","week","month","year"]).optional().describe("Filter results by relative time period. Cannot be used with search_after_date or search_before_date.")}))),Cy6=dQ(()=>JQ(N.union([N.object({results:N.array(N.object({title:N.string(),url:N.string(),snippet:N.string(),date:N.string().optional(),lastUpdated:N.string().optional()})),id:N.string()}),N.object({error:N.enum(["api_error","rate_limit","timeout","invalid_input","unknown"]),statusCode:N.number().optional(),message:N.string()})]))),Iy6=p51({id:"gateway.perplexity_search",inputSchema:jy6,outputSchema:Cy6}),Ry6=(Q={})=>Iy6(Q),Sy6={perplexitySearch:Ry6};async function vy6(){var Q;return(Q=ZW1.getContext().headers)==null?void 0:Q["x-vercel-id"]}var ky6="3.0.11",_y6="0.0.1";function yy6(Q={}){var X,Y;let J=null,G=null,W=(X=Q.metadataCacheRefreshMillis)!=null?X:300000,Z=0,$=(Y=n51(Q.baseURL))!=null?Y:"https://ai-gateway.vercel.sh/v3/ai",K=async()=>{try{let D=await by6(Q);return t$({Authorization:`Bearer ${D.token}`,"ai-gateway-protocol-version":_y6,[WW1]:D.authMethod,...Q.headers},`ai-sdk/gateway/${ky6}`)}catch(D){throw ey.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:D})}},H=()=>{let D=EP({settingValue:void 0,environmentVariableName:"VERCEL_DEPLOYMENT_ID"}),L=EP({settingValue:void 0,environmentVariableName:"VERCEL_ENV"}),M=EP({settingValue:void 0,environmentVariableName:"VERCEL_REGION"});return async()=>{let C=await vy6();return{...D&&{"ai-o11y-deployment-id":D},...L&&{"ai-o11y-environment":L},...M&&{"ai-o11y-region":M},...C&&{"ai-o11y-request-id":C}}}},F=(D)=>{return new wy6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})},V=async()=>{var D,L,M;let C=(M=(L=(D=Q._internal)==null?void 0:D.currentDate)==null?void 0:L.call(D).getTime())!=null?M:Date.now();if(!J||C-Z>W)Z=C,J=new sG1({baseURL:$,headers:K,fetch:Q.fetch}).getAvailableModels().then((A)=>{return G=A,A}).catch(async(A)=>{throw await QK(A,await dU(await K()))});return G?Promise.resolve(G):J},q=async()=>{return new sG1({baseURL:$,headers:K,fetch:Q.fetch}).getCredits().catch(async(D)=>{throw await QK(D,await dU(await K()))})},z=function(D){if(new.target)throw Error("The Gateway Provider model function cannot be called with the new keyword.");return F(D)};z.specificationVersion="v3",z.getAvailableModels=V,z.getCredits=q,z.imageModel=(D)=>{return new Ty6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})},z.languageModel=F;let B=(D)=>{return new My6(D,{provider:"gateway",baseURL:$,headers:K,fetch:Q.fetch,o11yHeaders:H()})};return z.embeddingModel=B,z.textEmbeddingModel=B,z.tools=Sy6,z}var KW1=yy6();async function by6(Q){let X=EP({settingValue:Q.apiKey,environmentVariableName:"AI_GATEWAY_API_KEY"});if(X)return{token:X,authMethod:"api-key"};return{token:await $W1.getVercelOidcToken(),authMethod:"oidc"}}r6();r6();r6();r6();r6();r6();var $71=m6(Z1(),1),YQ0=m6(Z1(),1);r6();r6();var fy6=Object.defineProperty,hy6=(Q,X)=>{for(var Y in X)fy6(Q,Y,{get:X[Y],enumerable:!0})},NW1="AI_InvalidArgumentError",OW1=`vercel.ai.error.${NW1}`,xy6=Symbol.for(OW1),LW1,KW=class extends L1{constructor({parameter:Q,value:X,message:Y}){super({name:NW1,message:`Invalid argument for parameter ${Q}: ${Y}`});this[LW1]=!0,this.parameter=Q,this.value=X}static isInstance(Q){return L1.hasMarker(Q,OW1)}};LW1=xy6;var gy6="AI_InvalidStreamPartError",uy6=`vercel.ai.error.${gy6}`,my6=Symbol.for(uy6),ly6;ly6=my6;var wW1="AI_InvalidToolApprovalError",MW1=`vercel.ai.error.${wW1}`,dy6=Symbol.for(MW1),PW1,py6=class extends L1{constructor({approvalId:Q}){super({name:wW1,message:`Tool approval response references unknown approvalId: "${Q}". No matching tool-approval-request found in message history.`});this[PW1]=!0,this.approvalId=Q}static isInstance(Q){return L1.hasMarker(Q,MW1)}};PW1=dy6;var TW1="AI_InvalidToolInputError",AW1=`vercel.ai.error.${TW1}`,cy6=Symbol.for(AW1),EW1,$Q0=class extends L1{constructor({toolInput:Q,toolName:X,cause:Y,message:J=`Invalid input for tool ${X}: ${_5(Y)}`}){super({name:TW1,message:J,cause:Y});this[EW1]=!0,this.toolInput=Q,this.toolName=X}static isInstance(Q){return L1.hasMarker(Q,AW1)}};EW1=cy6;var jW1="AI_ToolCallNotFoundForApprovalError",CW1=`vercel.ai.error.${jW1}`,ny6=Symbol.for(CW1),IW1,RW1=class extends L1{constructor({toolCallId:Q,approvalId:X}){super({name:jW1,message:`Tool call "${Q}" not found for approval request "${X}".`});this[IW1]=!0,this.toolCallId=Q,this.approvalId=X}static isInstance(Q){return L1.hasMarker(Q,CW1)}};IW1=ny6;var iy6="AI_NoImageGeneratedError",ay6=`vercel.ai.error.${iy6}`,ry6=Symbol.for(ay6),oy6;oy6=ry6;var SW1="AI_NoObjectGeneratedError",vW1=`vercel.ai.error.${SW1}`,sy6=Symbol.for(vW1),kW1,XK=class extends L1{constructor({message:Q="No object generated.",cause:X,text:Y,response:J,usage:G,finishReason:W}){super({name:SW1,message:Q,cause:X});this[kW1]=!0,this.text=Y,this.response=J,this.usage=G,this.finishReason=W}static isInstance(Q){return L1.hasMarker(Q,vW1)}};kW1=sy6;var _W1="AI_NoOutputGeneratedError",yW1=`vercel.ai.error.${_W1}`,ty6=Symbol.for(yW1),bW1,ey6=class extends L1{constructor({message:Q="No output generated.",cause:X}={}){super({name:_W1,message:Q,cause:X});this[bW1]=!0}static isInstance(Q){return L1.hasMarker(Q,yW1)}};bW1=ty6;var fW1="AI_NoSuchToolError",hW1=`vercel.ai.error.${fW1}`,Qb6=Symbol.for(hW1),xW1,QQ0=class extends L1{constructor({toolName:Q,availableTools:X=void 0,message:Y=`Model tried to call unavailable tool '${Q}'. ${X===void 0?"No tools are available.":`Available tools: ${X.join(", ")}.`}`}){super({name:fW1,message:Y});this[xW1]=!0,this.toolName=Q,this.availableTools=X}static isInstance(Q){return L1.hasMarker(Q,hW1)}};xW1=Qb6;var gW1="AI_ToolCallRepairError",uW1=`vercel.ai.error.${gW1}`,Xb6=Symbol.for(uW1),mW1,Yb6=class extends L1{constructor({cause:Q,originalError:X,message:Y=`Error repairing tool call: ${_5(Q)}`}){super({name:gW1,message:Y,cause:Q});this[mW1]=!0,this.originalError=X}static isInstance(Q){return L1.hasMarker(Q,uW1)}};mW1=Xb6;var Jb6=class extends L1{constructor(Q){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${Q.version} for provider "${Q.provider}" and model "${Q.modelId}". AI SDK 5 only supports models that implement specification version "v2".`});this.version=Q.version,this.provider=Q.provider,this.modelId=Q.modelId}},Gb6="AI_InvalidDataContentError",Wb6=`vercel.ai.error.${Gb6}`,Zb6=Symbol.for(Wb6),$b6;$b6=Zb6;var lW1="AI_InvalidMessageRoleError",dW1=`vercel.ai.error.${lW1}`,Kb6=Symbol.for(dW1),pW1,Hb6=class extends L1{constructor({role:Q,message:X=`Invalid message role: '${Q}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:lW1,message:X});this[pW1]=!0,this.role=Q}static isInstance(Q){return L1.hasMarker(Q,dW1)}};pW1=Kb6;var cW1="AI_MessageConversionError",nW1=`vercel.ai.error.${cW1}`,Fb6=Symbol.for(nW1),iW1,Vb6=class extends L1{constructor({originalMessage:Q,message:X}){super({name:cW1,message:X});this[iW1]=!0,this.originalMessage=Q}static isInstance(Q){return L1.hasMarker(Q,nW1)}};iW1=Fb6;var aW1="AI_RetryError",rW1=`vercel.ai.error.${aW1}`,qb6=Symbol.for(rW1),oW1,HW1=class extends L1{constructor({message:Q,reason:X,errors:Y}){super({name:aW1,message:Q});this[oW1]=!0,this.reason=X,this.errors=Y,this.lastError=Y[Y.length-1]}static isInstance(Q){return L1.hasMarker(Q,rW1)}};oW1=qb6;function zb6({warning:Q,provider:X,model:Y}){let J=`AI SDK Warning (${X} / ${Y}):`;switch(Q.type){case"unsupported":{let G=`${J} The feature "${Q.feature}" is not supported.`;if(Q.details)G+=` ${Q.details}`;return G}case"compatibility":{let G=`${J} The feature "${Q.feature}" is used in a compatibility mode.`;if(Q.details)G+=` ${Q.details}`;return G}case"other":return`${J} ${Q.message}`;default:return`${J} ${JSON.stringify(Q,null,2)}`}}var Ub6="AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.",FW1=!1,sW1=(Q)=>{if(Q.warnings.length===0)return;let X=globalThis.AI_SDK_LOG_WARNINGS;if(X===!1)return;if(typeof X==="function"){X(Q);return}if(!FW1)FW1=!0,console.info(Ub6);for(let Y of Q.warnings)console.warn(zb6({warning:Y,provider:Q.provider,model:Q.model}))};function Bb6({provider:Q,modelId:X}){sW1({warnings:[{type:"compatibility",feature:"specificationVersion",details:"Using v2 specification compatibility mode. Some features may not be available."}],provider:Q,model:X})}function Db6(Q){if(Q.specificationVersion==="v3")return Q;return Bb6({provider:Q.provider,modelId:Q.modelId}),new Proxy(Q,{get(X,Y){switch(Y){case"specificationVersion":return"v3";case"doGenerate":return async(...J)=>{let G=await X.doGenerate(...J);return{...G,finishReason:tW1(G.finishReason),usage:eW1(G.usage)}};case"doStream":return async(...J)=>{let G=await X.doStream(...J);return{...G,stream:Nb6(G.stream)}};default:return X[Y]}}})}function Nb6(Q){return Q.pipeThrough(new TransformStream({transform(X,Y){switch(X.type){case"finish":Y.enqueue({...X,finishReason:tW1(X.finishReason),usage:eW1(X.usage)});break;default:Y.enqueue(X);break}}}))}function tW1(Q){return{unified:Q==="unknown"?"other":Q,raw:void 0}}function eW1(Q){return{inputTokens:{total:Q.inputTokens,noCache:void 0,cacheRead:Q.cachedInputTokens,cacheWrite:void 0},outputTokens:{total:Q.outputTokens,text:void 0,reasoning:Q.reasoningTokens}}}function Q71(Q){if(typeof Q!=="string"){if(Q.specificationVersion!=="v3"&&Q.specificationVersion!=="v2"){let X=Q;throw new Jb6({version:X.specificationVersion,provider:X.provider,modelId:X.modelId})}return Db6(Q)}return Ob6().languageModel(Q)}function Ob6(){var Q;return(Q=globalThis.AI_SDK_DEFAULT_PROVIDER)!=null?Q:KW1}function X71(Q){if(Q==null)return;if(typeof Q==="number")return Q;return Q.totalMs}function Lb6(Q){if(Q==null||typeof Q==="number")return;return Q.stepMs}function wb6(Q){if(Q==null||typeof Q==="number")return;return Q.chunkMs}var Mb6=[{mediaType:"image/gif",bytesPrefix:[71,73,70]},{mediaType:"image/png",bytesPrefix:[137,80,78,71]},{mediaType:"image/jpeg",bytesPrefix:[255,216]},{mediaType:"image/webp",bytesPrefix:[82,73,70,70,null,null,null,null,87,69,66,80]},{mediaType:"image/bmp",bytesPrefix:[66,77]},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0]},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42]},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102]},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99]}];var Pb6=(Q)=>{let X=typeof Q==="string"?uU(Q):Q,Y=(X[6]&127)<<21|(X[7]&127)<<14|(X[8]&127)<<7|X[9]&127;return X.slice(Y+10)};function Tb6(Q){return typeof Q==="string"&&Q.startsWith("SUQz")||typeof Q!=="string"&&Q.length>10&&Q[0]===73&&Q[1]===68&&Q[2]===51?Pb6(Q):Q}function Ab6({data:Q,signatures:X}){let Y=Tb6(Q),J=typeof Y==="string"?uU(Y.substring(0,Math.min(Y.length,24))):Y;for(let G of X)if(J.length>=G.bytesPrefix.length&&G.bytesPrefix.every((W,Z)=>W===null||J[Z]===W))return G.mediaType;return}var Eb6="6.0.29",jb6=async({url:Q})=>{var X;let Y=Q.toString();try{let J=await fetch(Y,{headers:t$({},`ai-sdk/${Eb6}`,ny())});if(!J.ok)throw new cy({url:Y,statusCode:J.status,statusText:J.statusText});return{data:new Uint8Array(await J.arrayBuffer()),mediaType:(X=J.headers.get("content-type"))!=null?X:void 0}}catch(J){if(cy.isInstance(J))throw J;throw new cy({url:Y,cause:J})}},Cb6=(Q=jb6)=>(X)=>Promise.all(X.map(async(Y)=>Y.isUrlSupportedByModel?null:Q(Y)));function Ib6(Q){try{let[X,Y]=Q.split(",");return{mediaType:X.split(";")[0].split(":")[1],base64Content:Y}}catch(X){return{mediaType:void 0,base64Content:void 0}}}var Y71=N.union([N.string(),N.instanceof(Uint8Array),N.instanceof(ArrayBuffer),N.custom((Q)=>{var X,Y;return(Y=(X=globalThis.Buffer)==null?void 0:X.isBuffer(Q))!=null?Y:!1},{message:"Must be a Buffer"})]);function J71(Q){if(Q instanceof Uint8Array)return{data:Q,mediaType:void 0};if(Q instanceof ArrayBuffer)return{data:new Uint8Array(Q),mediaType:void 0};if(typeof Q==="string")try{Q=new URL(Q)}catch(X){}if(Q instanceof URL&&Q.protocol==="data:"){let{mediaType:X,base64Content:Y}=Ib6(Q.toString());if(X==null||Y==null)throw new L1({name:"InvalidDataContentError",message:`Invalid data URL format in content ${Q.toString()}`});return{data:Y,mediaType:X}}return{data:Q,mediaType:void 0}}function Rb6(Q){if(typeof Q==="string")return Q;if(Q instanceof ArrayBuffer)return $F(new Uint8Array(Q));return $F(Q)}function Xb(Q){return Q===void 0?[]:Array.isArray(Q)?Q:[Q]}async function Sb6({prompt:Q,supportedUrls:X,download:Y=Cb6()}){let J=await kb6(Q.messages,Y,X),G=[...Q.system!=null?typeof Q.system==="string"?[{role:"system",content:Q.system}]:Xb(Q.system).map((Z)=>({role:"system",content:Z.content,providerOptions:Z.providerOptions})):[],...Q.messages.map((Z)=>vb6({message:Z,downloadedAssets:J}))],W=[];for(let Z of G){if(Z.role!=="tool"){W.push(Z);continue}let $=W.at(-1);if(($==null?void 0:$.role)==="tool")$.content.push(...Z.content);else W.push(Z)}return W}function vb6({message:Q,downloadedAssets:X}){let Y=Q.role;switch(Y){case"system":return{role:"system",content:Q.content,providerOptions:Q.providerOptions};case"user":{if(typeof Q.content==="string")return{role:"user",content:[{type:"text",text:Q.content}],providerOptions:Q.providerOptions};return{role:"user",content:Q.content.map((J)=>_b6(J,X)).filter((J)=>J.type!=="text"||J.text!==""),providerOptions:Q.providerOptions}}case"assistant":{if(typeof Q.content==="string")return{role:"assistant",content:[{type:"text",text:Q.content}],providerOptions:Q.providerOptions};return{role:"assistant",content:Q.content.filter((J)=>J.type!=="text"||J.text!==""||J.providerOptions!=null).filter((J)=>J.type!=="tool-approval-request").map((J)=>{let G=J.providerOptions;switch(J.type){case"file":{let{data:W,mediaType:Z}=J71(J.data);return{type:"file",data:W,filename:J.filename,mediaType:Z!=null?Z:J.mediaType,providerOptions:G}}case"reasoning":return{type:"reasoning",text:J.text,providerOptions:G};case"text":return{type:"text",text:J.text,providerOptions:G};case"tool-call":return{type:"tool-call",toolCallId:J.toolCallId,toolName:J.toolName,input:J.input,providerExecuted:J.providerExecuted,providerOptions:G};case"tool-result":return{type:"tool-result",toolCallId:J.toolCallId,toolName:J.toolName,output:VW1(J.output),providerOptions:G}}}),providerOptions:Q.providerOptions}}case"tool":return{role:"tool",content:Q.content.filter((J)=>J.type!=="tool-approval-response"||J.providerExecuted).map((J)=>{switch(J.type){case"tool-result":return{type:"tool-result",toolCallId:J.toolCallId,toolName:J.toolName,output:VW1(J.output),providerOptions:J.providerOptions};case"tool-approval-response":return{type:"tool-approval-response",approvalId:J.approvalId,approved:J.approved,reason:J.reason}}}),providerOptions:Q.providerOptions};default:throw new Hb6({role:Y})}}async function kb6(Q,X,Y){let J=Q.filter((W)=>W.role==="user").map((W)=>W.content).filter((W)=>Array.isArray(W)).flat().filter((W)=>W.type==="image"||W.type==="file").map((W)=>{var Z;let $=(Z=W.mediaType)!=null?Z:W.type==="image"?"image/*":void 0,K=W.type==="image"?W.image:W.data;if(typeof K==="string")try{K=new URL(K)}catch(H){}return{mediaType:$,data:K}}).filter((W)=>W.data instanceof URL).map((W)=>({url:W.data,isUrlSupportedByModel:W.mediaType!=null&&f51({url:W.data.toString(),mediaType:W.mediaType,supportedUrls:Y})})),G=await X(J);return Object.fromEntries(G.map((W,Z)=>W==null?null:[J[Z].url.toString(),{data:W.data,mediaType:W.mediaType}]).filter((W)=>W!=null))}function _b6(Q,X){var Y;if(Q.type==="text")return{type:"text",text:Q.text,providerOptions:Q.providerOptions};let J,G=Q.type;switch(G){case"image":J=Q.image;break;case"file":J=Q.data;break;default:throw Error(`Unsupported part type: ${G}`)}let{data:W,mediaType:Z}=J71(J),$=Z!=null?Z:Q.mediaType,K=W;if(K instanceof URL){let H=X[K.toString()];if(H)K=H.data,$!=null||($=H.mediaType)}switch(G){case"image":{if(K instanceof Uint8Array||typeof K==="string")$=(Y=Ab6({data:K,signatures:Mb6}))!=null?Y:$;return{type:"file",mediaType:$!=null?$:"image/*",filename:void 0,data:K,providerOptions:Q.providerOptions}}case"file":{if($==null)throw Error("Media type is missing for file part");return{type:"file",mediaType:$,filename:Q.filename,data:K,providerOptions:Q.providerOptions}}}}function VW1(Q){if(Q.type!=="content")return Q;return{type:"content",value:Q.value.map((X)=>{if(X.type!=="media")return X;if(X.mediaType.startsWith("image/"))return{type:"image-data",data:X.data,mediaType:X.mediaType};return{type:"file-data",data:X.data,mediaType:X.mediaType}})}}async function cU({toolCallId:Q,input:X,output:Y,tool:J,errorMode:G}){if(G==="text")return{type:"error-text",value:_5(Y)};else if(G==="json")return{type:"error-json",value:qW1(Y)};if(J==null?void 0:J.toModelOutput)return await J.toModelOutput({toolCallId:Q,input:X,output:Y});return typeof Y==="string"?{type:"text",value:Y}:{type:"json",value:qW1(Y)}}function qW1(Q){return Q===void 0?null:Q}function yb6({maxOutputTokens:Q,temperature:X,topP:Y,topK:J,presencePenalty:G,frequencyPenalty:W,seed:Z,stopSequences:$}){if(Q!=null){if(!Number.isInteger(Q))throw new KW({parameter:"maxOutputTokens",value:Q,message:"maxOutputTokens must be an integer"});if(Q<1)throw new KW({parameter:"maxOutputTokens",value:Q,message:"maxOutputTokens must be >= 1"})}if(X!=null){if(typeof X!=="number")throw new KW({parameter:"temperature",value:X,message:"temperature must be a number"})}if(Y!=null){if(typeof Y!=="number")throw new KW({parameter:"topP",value:Y,message:"topP must be a number"})}if(J!=null){if(typeof J!=="number")throw new KW({parameter:"topK",value:J,message:"topK must be a number"})}if(G!=null){if(typeof G!=="number")throw new KW({parameter:"presencePenalty",value:G,message:"presencePenalty must be a number"})}if(W!=null){if(typeof W!=="number")throw new KW({parameter:"frequencyPenalty",value:W,message:"frequencyPenalty must be a number"})}if(Z!=null){if(!Number.isInteger(Z))throw new KW({parameter:"seed",value:Z,message:"seed must be an integer"})}return{maxOutputTokens:Q,temperature:X,topP:Y,topK:J,presencePenalty:G,frequencyPenalty:W,stopSequences:$,seed:Z}}function bb6(Q){return Q!=null&&Object.keys(Q).length>0}async function fb6({tools:Q,toolChoice:X,activeTools:Y}){if(!bb6(Q))return{tools:void 0,toolChoice:void 0};let J=Y!=null?Object.entries(Q).filter(([W])=>Y.includes(W)):Object.entries(Q),G=[];for(let[W,Z]of J){let $=Z.type;switch($){case void 0:case"dynamic":case"function":G.push({type:"function",name:W,description:Z.description,inputSchema:await ZW(Z.inputSchema).jsonSchema,...Z.inputExamples!=null?{inputExamples:Z.inputExamples}:{},providerOptions:Z.providerOptions,...Z.strict!=null?{strict:Z.strict}:{}});break;case"provider":G.push({type:"provider",name:W,id:Z.id,args:Z.args});break;default:throw Error(`Unsupported tool type: ${$}`)}}return{tools:G,toolChoice:X==null?{type:"auto"}:typeof X==="string"?{type:X}:{type:"tool",toolName:X.toolName}}}var _P=N.lazy(()=>N.union([N.null(),N.string(),N.number(),N.boolean(),N.record(N.string(),_P.optional()),N.array(_P)])),i1=N.record(N.string(),N.record(N.string(),_P.optional())),G71=N.object({type:N.literal("text"),text:N.string(),providerOptions:i1.optional()}),hb6=N.object({type:N.literal("image"),image:N.union([Y71,N.instanceof(URL)]),mediaType:N.string().optional(),providerOptions:i1.optional()}),W71=N.object({type:N.literal("file"),data:N.union([Y71,N.instanceof(URL)]),filename:N.string().optional(),mediaType:N.string(),providerOptions:i1.optional()}),xb6=N.object({type:N.literal("reasoning"),text:N.string(),providerOptions:i1.optional()}),gb6=N.object({type:N.literal("tool-call"),toolCallId:N.string(),toolName:N.string(),input:N.unknown(),providerOptions:i1.optional(),providerExecuted:N.boolean().optional()}),ub6=N.discriminatedUnion("type",[N.object({type:N.literal("text"),value:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("json"),value:_P,providerOptions:i1.optional()}),N.object({type:N.literal("execution-denied"),reason:N.string().optional(),providerOptions:i1.optional()}),N.object({type:N.literal("error-text"),value:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("error-json"),value:_P,providerOptions:i1.optional()}),N.object({type:N.literal("content"),value:N.array(N.union([N.object({type:N.literal("text"),text:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("media"),data:N.string(),mediaType:N.string()}),N.object({type:N.literal("file-data"),data:N.string(),mediaType:N.string(),filename:N.string().optional(),providerOptions:i1.optional()}),N.object({type:N.literal("file-url"),url:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("file-id"),fileId:N.union([N.string(),N.record(N.string(),N.string())]),providerOptions:i1.optional()}),N.object({type:N.literal("image-data"),data:N.string(),mediaType:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("image-url"),url:N.string(),providerOptions:i1.optional()}),N.object({type:N.literal("image-file-id"),fileId:N.union([N.string(),N.record(N.string(),N.string())]),providerOptions:i1.optional()}),N.object({type:N.literal("custom"),providerOptions:i1.optional()})]))})]),Z71=N.object({type:N.literal("tool-result"),toolCallId:N.string(),toolName:N.string(),output:ub6,providerOptions:i1.optional()}),mb6=N.object({type:N.literal("tool-approval-request"),approvalId:N.string(),toolCallId:N.string()}),lb6=N.object({type:N.literal("tool-approval-response"),approvalId:N.string(),approved:N.boolean(),reason:N.string().optional()}),db6=N.object({role:N.literal("system"),content:N.string(),providerOptions:i1.optional()}),pb6=N.object({role:N.literal("user"),content:N.union([N.string(),N.array(N.union([G71,hb6,W71]))]),providerOptions:i1.optional()}),cb6=N.object({role:N.literal("assistant"),content:N.union([N.string(),N.array(N.union([G71,W71,xb6,gb6,Z71,mb6]))]),providerOptions:i1.optional()}),nb6=N.object({role:N.literal("tool"),content:N.array(N.union([Z71,lb6])),providerOptions:i1.optional()}),ib6=N.union([db6,pb6,cb6,nb6]);async function ab6(Q){if(Q.prompt==null&&Q.messages==null)throw new JF({prompt:Q,message:"prompt or messages must be defined"});if(Q.prompt!=null&&Q.messages!=null)throw new JF({prompt:Q,message:"prompt and messages cannot be defined at the same time"});if(Q.system!=null&&typeof Q.system!=="string"&&!Xb(Q.system).every((J)=>typeof J==="object"&&J!==null&&("role"in J)&&J.role==="system"))throw new JF({prompt:Q,message:"system must be a string, SystemModelMessage, or array of SystemModelMessage"});let X;if(Q.prompt!=null&&typeof Q.prompt==="string")X=[{role:"user",content:Q.prompt}];else if(Q.prompt!=null&&Array.isArray(Q.prompt))X=Q.prompt;else if(Q.messages!=null)X=Q.messages;else throw new JF({prompt:Q,message:"prompt or messages must be defined"});if(X.length===0)throw new JF({prompt:Q,message:"messages must not be empty"});let Y=await wX({value:X,schema:N.array(ib6)});if(!Y.success)throw new JF({prompt:Q,message:"The messages do not match the ModelMessage[] schema.",cause:Y.error});return{messages:X,system:Q.system}}function rb6(Q){if(!ey.isInstance(Q))return Q;let X=(process==null?void 0:"production")==="production",Y="https://ai-sdk.dev/unauthenticated-ai-gateway";if(X)return new L1({name:"GatewayError",message:`Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${Y}`});return Object.assign(Error(`\x1B[1m\x1B[31mUnauthenticated request to AI Gateway.\x1B[0m
1066
1066
 
1067
1067
  To authenticate, set the \x1B[33mAI_GATEWAY_API_KEY\x1B[0m environment variable with your API key.
1068
1068
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decocms/mesh",
3
- "version": "2.8.1",
3
+ "version": "2.8.2",
4
4
  "description": "MCP Mesh - Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- import{B as o}from"./use-binding-DK1a3_Qy.js";import{F as t}from"./index-DXyyF4Kh.js";const s="mcp.mesh",m=t(o,{target:"draft-7"});export{m as B,s as M};
@@ -1 +0,0 @@
1
- import{a2 as u,ao as s}from"./index-DXyyF4Kh.js";function o(e,r){return u(e,s,r)}export{o as u};