decocms 4.297.4 → 4.297.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-SZcDTzHd.js → AlertCircle-_dKQYyLm.js} +1 -1
- package/dist/client/assets/{AreaChart-D3iExEwu.js → AreaChart-Br4AURer.js} +1 -1
- package/dist/client/assets/{ArrowLeft-B4ArFLof.js → ArrowLeft-CTckNarV.js} +1 -1
- package/dist/client/assets/{ArrowUp-CGtK33X4.js → ArrowUp-DI6O-me7.js} +1 -1
- package/dist/client/assets/{Check-BVKnNRxb.js → Check-Dx6Jilyu.js} +1 -1
- package/dist/client/assets/{CheckCircle-CFLPWJqp.js → CheckCircle-D9s0Miro.js} +1 -1
- package/dist/client/assets/{ChevronDown-DPyQprhl.js → ChevronDown-C4geT7hd.js} +1 -1
- package/dist/client/assets/{ChevronRight-BcyhZob9.js → ChevronRight-BrJIIvGQ.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-BTBwlOVK.js → ChevronSelectorVertical-Dd-tJPH5.js} +1 -1
- package/dist/client/assets/{ChevronUp-CRNBMezi.js → ChevronUp-BkSDpS0a.js} +1 -1
- package/dist/client/assets/{Copy01-DgP9zHlK.js → Copy01-DAXdkrcq.js} +1 -1
- package/dist/client/assets/{CreditCard01-BPJwKxBZ.js → CreditCard01-DY2ollJ7.js} +1 -1
- package/dist/client/assets/{DotsVertical-Bdn6WfZr.js → DotsVertical-G8Mz1cUi.js} +1 -1
- package/dist/client/assets/{Download01-Cq-cjzdI.js → Download01-BXb_GLPB.js} +1 -1
- package/dist/client/assets/{Eye-BVXGxbID.js → Eye-opJVAUIw.js} +1 -1
- package/dist/client/assets/{FilterLines-B9MIm8jC.js → FilterLines-BdTkKIdO.js} +1 -1
- package/dist/client/assets/{Globe01-DtvbdjDI.js → Globe01-CcwZYK5w.js} +1 -1
- package/dist/client/assets/{Globe04-BGZGJdIr.js → Globe04-BEpeirqG.js} +1 -1
- package/dist/client/assets/{HardDrive-BkyiKymv.js → HardDrive-BULz-Uit.js} +1 -1
- package/dist/client/assets/{Key01-Dc45dzTC.js → Key01-DjAus05D.js} +1 -1
- package/dist/client/assets/{LinkExternal01-74ZQ5CW3.js → LinkExternal01-Cl9BJIic.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-HRPoF94f.js → LockUnlocked01-DCNThh5w.js} +1 -1
- package/dist/client/assets/{LogOut01-J_j1af_K.js → LogOut01-C8yxFbDK.js} +1 -1
- package/dist/client/assets/{Monitor01-2dFx1783.js → Monitor01-Cws_hyK1.js} +1 -1
- package/dist/client/assets/{Palette-CvIQyY4y.js → Palette-DJquTsKt.js} +1 -1
- package/dist/client/assets/{Play-DBq5ykwL.js → Play-BJig3Hma.js} +1 -1
- package/dist/client/assets/{Plus-D73gXSwq.js → Plus-DplAwTzu.js} +1 -1
- package/dist/client/assets/{SearchLg-D_4EYfC1.js → SearchLg-DKfDlf2B.js} +1 -1
- package/dist/client/assets/{SearchMd-CBFnhOQR.js → SearchMd-WwqLArcb.js} +1 -1
- package/dist/client/assets/{Settings02-DWSzdeAu.js → Settings02-DKqJklo6.js} +1 -1
- package/dist/client/assets/{Share07-BsGHUcGB.js → Share07-BFNMphwZ.js} +1 -1
- package/dist/client/assets/{Shield01-DcQGH2Gk.js → Shield01-DkQ3-Wuh.js} +1 -1
- package/dist/client/assets/{Stars01-CDftv7hW.js → Stars01-WAIDqPTc.js} +1 -1
- package/dist/client/assets/{Stars02-BAeHkghn.js → Stars02-Bz7g2T3T.js} +1 -1
- package/dist/client/assets/{Sun-B0bRqjmA.js → Sun-Bb3k_JiI.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Cf3ElbOx.js → SwitchHorizontal01-D1IHpvoh.js} +1 -1
- package/dist/client/assets/{Tool01-UB4iVZea.js → Tool01-BvO-aJRz.js} +1 -1
- package/dist/client/assets/{Tool02-Depaw8PM.js → Tool02-Um8w3S00.js} +1 -1
- package/dist/client/assets/{Trash01-BRCsH68l.js → Trash01-D1j2us9_.js} +1 -1
- package/dist/client/assets/{TrendUp01-B-LdWREV.js → TrendUp01-D-pYOI27.js} +1 -1
- package/dist/client/assets/{Upload01-DaOD6fZX.js → Upload01-lKTwpNsL.js} +1 -1
- package/dist/client/assets/{User01-CTHIhpQ9.js → User01-CzaJZtDP.js} +1 -1
- package/dist/client/assets/{UserSquare-CDNT9BVl.js → UserSquare-I8KZDiP3.js} +1 -1
- package/dist/client/assets/{Users01-CPm6scUb.js → Users01-Bb1Odrhe.js} +1 -1
- package/dist/client/assets/{Users03-BL8daW46.js → Users03-D_Qzpo0w.js} +1 -1
- package/dist/client/assets/{XCircle-Br-CcVW-.js → XCircle-DWwaGX-T.js} +1 -1
- package/dist/client/assets/{XClose-CND46LC5.js → XClose-BoczrFtB.js} +1 -1
- package/dist/client/assets/{YAxis-9mLWbFny.js → YAxis-Y9IBklIh.js} +1 -1
- package/dist/client/assets/{Zap-BXE1Wm29.js → Zap-C_cEZtR5.js} +1 -1
- package/dist/client/assets/{ZapSquare-BKSoDgYp.js → ZapSquare-CmW3PzOh.js} +1 -1
- package/dist/client/assets/{access-gate-CG0Jl7eK.js → access-gate-Btqq7-3X.js} +1 -1
- package/dist/client/assets/{agent-icon-CYVpijDG.js → agent-icon-Bm0mBNmu.js} +1 -1
- package/dist/client/assets/{agents-list-ISYhEX9o.js → agents-list-Bz-4iej6.js} +1 -1
- package/dist/client/assets/{ai-providers-Dwn6bF6W.js → ai-providers-Ch3me05c.js} +1 -1
- package/dist/client/assets/{alert-dialog-D63fpGRD.js → alert-dialog-DY_67i8D.js} +1 -1
- package/dist/client/assets/{alert-CTVUNdHZ.js → alert-t9hKa1GN.js} +1 -1
- package/dist/client/assets/{api-keys-CxBo7cNM.js → api-keys-V0eYDBvn.js} +1 -1
- package/dist/client/assets/{app-editor-JGUDZERh.js → app-editor-3h5fdupo.js} +1 -1
- package/dist/client/assets/{auth-BRbdWVq4.js → auth-D8BzOPfU.js} +1 -1
- package/dist/client/assets/{auth-catchall-CDs4MkM8.js → auth-catchall-lzuTWWYn.js} +1 -1
- package/dist/client/assets/{auth-entry-CaeorY4u.js → auth-entry-b8Y7eCFF.js} +1 -1
- package/dist/client/assets/{auth-split-layout-3AT5JyFf.js → auth-split-layout-DfWPYe89.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DvRyhelP.js → authenticate-and-persist-oauth-14DQJW7S.js} +1 -1
- package/dist/client/assets/{automation-list-row-D6x5wjy8.js → automation-list-row-BsalfBXm.js} +1 -1
- package/dist/client/assets/{automation-runs-DEt_xznR.js → automation-runs-DE9VSUhn.js} +1 -1
- package/dist/client/assets/{automations-DaCKCCQW.js → automations-BvPtowk4.js} +1 -1
- package/dist/client/assets/{avatar-CCUY6IGp.js → avatar-CYKYYtZa.js} +1 -1
- package/dist/client/assets/{badge-BD5l1Gdh.js → badge-C1elUCLo.js} +1 -1
- package/dist/client/assets/{block-document-DtQz41OQ.js → block-document-CcYvo27W.js} +1 -1
- package/dist/client/assets/{breadcrumb-CszXJnDw.js → breadcrumb-BXE_nF_r.js} +1 -1
- package/dist/client/assets/{buckets-Cw6UyxU7.js → buckets-DA_r918X.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-D_LfiRIJ.js → bulk-category-panel-DM-IOghT.js} +1 -1
- package/dist/client/assets/{capability-load-error-DhEEutMi.js → capability-load-error-BaKYKM-d.js} +1 -1
- package/dist/client/assets/{cards-w5TNNISn.js → cards-CiLBDj3F.js} +1 -1
- package/dist/client/assets/{category-editor-Y3Au0o8z.js → category-editor-BNcSqgPW.js} +1 -1
- package/dist/client/assets/{chart-DT4FL6-7.js → chart-BimnkeiK.js} +1 -1
- package/dist/client/assets/{chat-context-Rb-1CzVr.js → chat-context-z1n7Mvsc.js} +1 -1
- package/dist/client/assets/{checkbox-Cpz_9WIp.js → checkbox-BLQwT4c5.js} +1 -1
- package/dist/client/assets/{choose-editor-CEv8HCqr.js → choose-editor-NuXPws_0.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DDJ0WcP1.js → cli-auth-success-Dofvym4S.js} +1 -1
- package/dist/client/assets/{collection-detail-zSxwXkJC.js → collection-detail-BXt_415y.js} +1 -1
- package/dist/client/assets/{collection-display-button-DtpCzJlS.js → collection-display-button-DOWt7Yw-.js} +1 -1
- package/dist/client/assets/{collection-search-yws9XCIC.js → collection-search-Bn9IJGT5.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CfrpONpV.js → collection-table-wrapper-BvHvi5W2.js} +1 -1
- package/dist/client/assets/{collection-tabs-BdpskJvV.js → collection-tabs-C_Plt4eY.js} +1 -1
- package/dist/client/assets/{command-Bv5rqoSn.js → command-DocuPiQB.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-Czy0tiaP.js → commerce-onboarding-CiTn_n8b.js} +1 -1
- package/dist/client/assets/{config-C8Eimitx.js → config-CFrJB4k3.js} +1 -1
- package/dist/client/assets/{connect-gXRIsW8H.js → connect-Ca21orjk.js} +1 -1
- package/dist/client/assets/{connection-BMFSUcVL.js → connection-DeRdPQfN.js} +1 -1
- package/dist/client/assets/{connection-card-DPYH7bIs.js → connection-card-DJzzmdJa.js} +1 -1
- package/dist/client/assets/{connection-detail-DqEAPL81.js → connection-detail-DtmtoNno.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B1NHeXnr.js → connection-form-helpers-COjxkHTU.js} +1 -1
- package/dist/client/assets/{connections-DF69aH0y.js → connections-PoKXlEr5.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-C90CZsqR.js → decopilot-sse-pool-CIsbpW60.js} +1 -1
- package/dist/client/assets/{dialog-C03fm9Do.js → dialog-D9B8YUq0.js} +1 -1
- package/dist/client/assets/{domain-settings-B_QmK2nR.js → domain-settings-DLt8E7za.js} +1 -1
- package/dist/client/assets/{drawer-BXqSWSdi.js → drawer-IGxCcmhW.js} +1 -1
- package/dist/client/assets/{dropdown-menu-C6BCq19N.js → dropdown-menu-trkRQR5u.js} +1 -1
- package/dist/client/assets/{empty-state-Bf-ZRVHX.js → empty-state-BagbYGYk.js} +1 -1
- package/dist/client/assets/{extract-connection-data-NqlcKtVm.js → extract-connection-data-DTKuu3uW.js} +1 -1
- package/dist/client/assets/{file-explorer-DXYG7PB_.js → file-explorer-svpcOOYu.js} +1 -1
- package/dist/client/assets/{file-type-icon-ClRC6FOm.js → file-type-icon-BImZ4yGz.js} +1 -1
- package/dist/client/assets/{form-DquZkH1v.js → form-DdcrlWMG.js} +1 -1
- package/dist/client/assets/{general-VW0KBHL0.js → general-B0J2mS9n.js} +1 -1
- package/dist/client/assets/{github-repo-picker-T2EIxl75.js → github-repo-picker-BsNgTNpd.js} +1 -1
- package/dist/client/assets/{hooks-7NFenss-.js → hooks-DZlZk47y.js} +1 -1
- package/dist/client/assets/{index-ChFIY0ta.js → index-1ChrX-NZ.js} +1 -1
- package/dist/client/assets/{index-OG-cLGJ3.js → index-BTRn8yLm.js} +3 -3
- package/dist/client/assets/{index-B_nXo7ei.js → index-CKX6jbl4.js} +1 -1
- package/dist/client/assets/{index-yhgDq29i.js → index-CPPVCYTR.js} +1 -1
- package/dist/client/assets/{index-D2WaICIs.js → index-CU8H1ECu.js} +1 -1
- package/dist/client/assets/{index-D5nmXNZX.js → index-Cxp8u-0t.js} +1 -1
- package/dist/client/assets/{index-yfHQcuuf.js → index-DAs7sx9F.js} +1 -1
- package/dist/client/assets/{index-D-oPLNTh.js → index-DhVzPBx8.js} +6 -6
- package/dist/client/assets/{index-DWVtOyc1.js → index-qdSW6F8F.js} +1 -1
- package/dist/client/assets/{index-redirect-BsTcPyLb.js → index-redirect-DENqiKOe.js} +1 -1
- package/dist/client/assets/{infra-billing-D7f3ollk.js → infra-billing-BYssFvIs.js} +1 -1
- package/dist/client/assets/{input-CoQktCJl.js → input-B9Q64Q29.js} +1 -1
- package/dist/client/assets/{integration-icon-68nof6op.js → integration-icon-CqMRHU_a.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-C8S8TSmf.js → invite-member-dialog-Dn4IAUK2.js} +1 -1
- package/dist/client/assets/{label-DpF7DceF.js → label-BrYhPu77.js} +1 -1
- package/dist/client/assets/{layout-Crw9RSGY.js → layout-6imak1bs.js} +1 -1
- package/dist/client/assets/{login-iFLeAxXW.js → login-bZEIHxWO.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BTPTAXqM.js → mcp-oauth-JNMVR7nj.js} +1 -1
- package/dist/client/assets/{members-qf0dPDE9.js → members-BDFlTHSU.js} +1 -1
- package/dist/client/assets/{monaco-editor-d1AOiqqe.js → monaco-editor-DBOIld70.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BAW81GZ7.js → monitoring-stats-row-BTO2RjKc.js} +1 -1
- package/dist/client/assets/{multi-select-B6mqOWpW.js → multi-select-DS1S2iFF.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-C6bSOFfR.js → oauth-callback-ai-provider-DJysmHBZ.js} +1 -1
- package/dist/client/assets/{oauth-callback-CZDAgxdM.js → oauth-callback-sud7yA57.js} +1 -1
- package/dist/client/assets/{onboarding-CPzXf3hP.js → onboarding-B89NhuNo.js} +1 -1
- package/dist/client/assets/{org-layout-DT7eVbOL.js → org-layout-y-wgo3lk.js} +1 -1
- package/dist/client/assets/{organization-choice-BBt12B_8.js → organization-choice-n5LXYsp6.js} +1 -1
- package/dist/client/assets/{orgs-CCQdlPhm.js → orgs-ggeMeO4b.js} +1 -1
- package/dist/client/assets/{page-seo-form-C9E5fQgz.js → page-seo-form-MwfvT2cu.js} +1 -1
- package/dist/client/assets/{popover-DRktyE8k.js → popover-BdLEPYkg.js} +1 -1
- package/dist/client/assets/{post-calendar-iA02LEop.js → post-calendar-BQHzjF2q.js} +1 -1
- package/dist/client/assets/{post-editor-D3dceKpU.js → post-editor-QRl0Sagr.js} +1 -1
- package/dist/client/assets/{primitives-BrTKJcge.js → primitives-6WK_sR50.js} +1 -1
- package/dist/client/assets/{profile-DZidRo8-.js → profile-CeXku40U.js} +1 -1
- package/dist/client/assets/{project-app-view-DidtJbDX.js → project-app-view-Bamps5mp.js} +1 -1
- package/dist/client/assets/{prompts-BRD2JQkA.js → prompts-CSI9UdFJ.js} +1 -1
- package/dist/client/assets/record-editor-Bo-hHNi9.js +1 -0
- package/dist/client/assets/{redirect-editor-B3RxiC5F.js → redirect-editor-XNrrauEJ.js} +1 -1
- package/dist/client/assets/registry-BmqhOmKk.js +2 -0
- package/dist/client/assets/{registry-layout-03XhsFAz.js → registry-layout-BEh7PoWm.js} +1 -1
- package/dist/client/assets/{reports-CcoyBluC.js → reports-BoQbVwsq.js} +1 -1
- package/dist/client/assets/{require-capability-D6mMZMC9.js → require-capability-Dgl1K9kd.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CBmC8H_l.js → required-auth-layout-fHFPe37p.js} +1 -1
- package/dist/client/assets/{reset-password-uWa2ZQKw.js → reset-password-CND6xVOj.js} +1 -1
- package/dist/client/assets/{review-settings-D47Iw2Vj.js → review-settings-bbWlNJ4z.js} +1 -1
- package/dist/client/assets/{roles-Ca7WjJKc.js → roles-Dd7V2wdR.js} +1 -1
- package/dist/client/assets/{scroll-area-AmuYtPaJ.js → scroll-area-B__HV5_s.js} +1 -1
- package/dist/client/assets/{search-input-BCf51g10.js → search-input-QsS8qM0_.js} +1 -1
- package/dist/client/assets/{secrets-SDubcvDc.js → secrets-D27TPpeq.js} +1 -1
- package/dist/client/assets/{sections-editor-rTROLbub.js → sections-editor-_166VgKv.js} +1 -1
- package/dist/client/assets/{select-CFrGFxwx.js → select-DzzbmWa-.js} +1 -1
- package/dist/client/assets/{select-model-B4aqkyp3.js → select-model-WSwYwLFN.js} +1 -1
- package/dist/client/assets/{self-tool-result-q937jpNM.js → self-tool-result-BH7zYU5J.js} +1 -1
- package/dist/client/assets/{seo-editor-DwtFxOUm.js → seo-editor-BQugaBLO.js} +1 -1
- package/dist/client/assets/{settings-layout-jOPqVY02.js → settings-layout-CIovajcW.js} +1 -1
- package/dist/client/assets/{shell-controls-C0ovdkz_.js → shell-controls-BFmzMpcf.js} +1 -1
- package/dist/client/assets/{shell-layout-DbyWkEwW.js → shell-layout-DgzMjG_g.js} +1 -1
- package/dist/client/assets/{spinner-Del5h0VC.js → spinner-Bm_hTWFz.js} +1 -1
- package/dist/client/assets/{sso-wOTZCy-g.js → sso-NnsFLHgi.js} +1 -1
- package/dist/client/assets/{store-CA-87B-H.js → store-mhkHFkpg.js} +1 -1
- package/dist/client/assets/store-registry-CxC5WexV.js +2 -0
- package/dist/client/assets/{super-agent-icon-CqxK-cWE.js → super-agent-icon-7Ukfr6bc.js} +1 -1
- package/dist/client/assets/{switch-D-XeHCY4.js → switch-uKoBYqyg.js} +1 -1
- package/dist/client/assets/{synced-repos-ClMeWJ-b.js → synced-repos-DzxugRrm.js} +1 -1
- package/dist/client/assets/{table-q4lNz4NU.js → table-D-jgMVGz.js} +1 -1
- package/dist/client/assets/{tabs-Cf4wWJQQ.js → tabs-DDIxVoHb.js} +1 -1
- package/dist/client/assets/{task-board-C87qjoys.js → task-board-qKQWRm20.js} +1 -1
- package/dist/client/assets/{tasks-DaXzBW1K.js → tasks-DVMsPLA_.js} +1 -1
- package/dist/client/assets/{textarea-oSE0nXPi.js → textarea-BVnIs1Lw.js} +1 -1
- package/dist/client/assets/{toggle-group-wL3Ae0-d.js → toggle-group-B1ycOPkn.js} +1 -1
- package/dist/client/assets/{toolbar-B4cjYH26.js → toolbar-DrAJ1hMc.js} +1 -1
- package/dist/client/assets/{track-BS8hiYrv.js → track-Ti4l0BMG.js} +1 -1
- package/dist/client/assets/{types-BBGiY_5u.js → types-V8BEN32x.js} +1 -1
- package/dist/client/assets/{use-ai-providers-D2D_qMTE.js → use-ai-providers-VnHj1RvS.js} +1 -1
- package/dist/client/assets/{use-api-keys-I_NXPYmb.js → use-api-keys-CWhEZZIl.js} +1 -1
- package/dist/client/assets/{use-automations-HQapDryZ.js → use-automations-EMCvEash.js} +1 -1
- package/dist/client/assets/{use-autosave-B98jErnm.js → use-autosave-WGhfzLOa.js} +1 -1
- package/dist/client/assets/{use-connection-8Rs00y0x.js → use-connection-08hpR6qS.js} +1 -1
- package/dist/client/assets/{use-copy-4cwy4-LT.js → use-copy--NTZaUPq.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-U77SN8Qt.js → use-create-virtual-mcp-CFZ2nSQA.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-C0rvvRkr.js → use-debounced-autosave-CI3PX6ch.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DNLFihnS.js → use-debounced-value-BeOljBqX.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Ch4qHpo5.js → use-decopilot-events-CLCNDljy.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CeL_ckgK.js → use-delete-connection-Ba6MOgeg.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DUXIITA9.js → use-deployment-admin-CBUm01nq.js} +1 -1
- package/dist/client/assets/{use-destination-route-bPkxA4tB.js → use-destination-route-qnDA60ks.js} +1 -1
- package/dist/client/assets/{use-file-configs-CGiQJdYc.js → use-file-configs-D5W3ysgO.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DL0OQBln.js → use-infinite-scroll-CFHj-DEA.js} +1 -1
- package/dist/client/assets/{use-join-requests-DCt3pFBl.js → use-join-requests-CLmH1kQW.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-4yRgLUMe.js → use-mcp-auth-status-DeG0R3iT.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BWAlgISY.js → use-mcp-client-CLbu-qTW.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-D0n7vAmG.js → use-mcp-tools-BZuie7xe.js} +1 -1
- package/dist/client/assets/{use-members-vu0ptsMx.js → use-members-I61j4Bg0.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DHZ5Fe9d.js → use-navigate-to-agent-BenTIjx1.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-C1Q0xST6.js → use-org-auth-client-CfCWX5xw.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-BCM9o7yp.js → use-org-repo-syncs-JMXTBQ5z.js} +1 -1
- package/dist/client/assets/{use-org-sso-CtTUq6BR.js → use-org-sso-CvRPBMtq.js} +1 -1
- package/dist/client/assets/{use-organization-roles-D-OoD-Ne.js → use-organization-roles-C8et_n2k.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BMYtcpXR.js → use-organization-settings-vq5Gp8qn.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-XVJJmMjD.js → use-panel-navigate-DAo-IaMv.js} +1 -1
- package/dist/client/assets/{use-registry-connections-Cy7w-ULD.js → use-registry-connections-BEAIbWtg.js} +1 -1
- package/dist/client/assets/{use-secrets-2qXibeIA.js → use-secrets-gYiFcE--.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-DChDxOBy.js → use-section-preview-base-tDIjGvnW.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DFyxJKtG.js → use-status-sounds-DfVtBshF.js} +1 -1
- package/dist/client/assets/{use-tags-DC3LcPId.js → use-tags-C7utoOLS.js} +1 -1
- package/dist/client/assets/{use-view-mode-ByEum1TJ.js → use-view-mode-DanQlbJE.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Ccd9LuyW.js → use-virtual-mcp-B6XJTyzc.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-PGfyfehP.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-CVgzVaXm.js +1 -0
- package/dist/client/assets/{users--wzjVmtB.js → users-Z1TG0oPn.js} +1 -1
- package/dist/client/assets/{variant-calendar-C7AvlA7w.js → variant-calendar-BUBtIHZL.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BZzQ-U0A.js → view-mode-toggle-I_KCAKl6.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/record-editor-Bz7Q4Gui.js +0 -1
- package/dist/client/assets/registry-DHLllLlS.js +0 -2
- package/dist/client/assets/store-registry-uj0JlhzS.js +0 -2
- package/dist/client/assets/useInfiniteQuery-BSLzlLhq.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Z2ItFoMM.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1473,7 +1473,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var ip1=L(()=>{tf()});f
|
|
|
1473
1473
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await jy`
|
|
1474
1474
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
1475
1475
|
`.execute($)}}async function ha1($){await Cs8($),await _s8($);let Z=new ya1({db:$,provider:{getMigrations:()=>Promise.resolve(np0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function vs8($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await ml0();let G=Q??F8(),J=async()=>{if(!Z&&!Q)await $O(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ha1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function xs8(){let $=F8(),Z=new ya1({db:$.db,provider:{getMigrations:()=>Promise.resolve(np0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var ca1=L(()=>{ba1();dl0();QQ()});async function E70($){let Z={...process.env},Q=U80($,Z);console.log(nw1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?At1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (RZ0(),TZ0)),{outputs:G,services:J}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (dl0(),Rt1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (QQ(),un1)),{migrateToLatest:F}=await Promise.resolve().then(() => (ca1(),ua1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return pp1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var tp0=L(()=>{tf();Tt1();R$()});var ia1={};Z0(ia1,{updateService:()=>dE,subscribeCliState:()=>ap0,setTuiConsoleIntercepted:()=>j70,setServerUrl:()=>jp,setMigrationsDone:()=>Ep,setDevMode:()=>bs8,resetCliStateForTests:()=>fs8,isTuiConsoleIntercepted:()=>z70,getCliState:()=>rp0,addLogEntry:()=>KO});function la1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ma1(){return{services:la1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function fs8(){mX=ma1()}function wp(){for(let $ of op0)$()}function rp0(){return mX}function ap0($){return op0.add($),()=>op0.delete($)}function dE($){mX={...mX,services:mX.services.map((Z)=>Z.name===$.name?$:Z)},wp()}function Ep(){mX={...mX,migrationsStatus:"done"},wp()}function jp($){mX={...mX,serverUrl:$},wp()}function KO($){let Z=[...mX.logs,$];mX={...mX,logs:Z.length>500?Z.slice(-500):Z},wp()}function bs8(){mX={...mX,services:[...la1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},wp()}function j70($){da1=$}function z70(){return da1}var mX,op0,da1=!1;var iE=L(()=>{mX=ma1();op0=new Set});import{createServer as pa1}from"net";function ys8($){return new Promise((Z)=>{let Q=pa1();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function zp($){if(await ys8($))return $;let Z=await new Promise((Q,X)=>{let Y=pa1();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>Q(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var sp0=()=>{};var $n0={};Z0($n0,{startDevServer:()=>hs8,pipeToLogStore:()=>ep0});import{join as gs8}from"path";function ep0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let G=X.split(`
|
|
1476
|
-
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;KO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)KO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function hs8($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await zp(Number(Y)+1):await zp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await E70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)dE({name:D.name,status:"ready",port:D.port});Ep();let F=gs8(import.meta.dir,"..","..","..","..",".."),N=Q===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ep0(U.stdout),ep0(U.stderr);jp(G),dE({name:"Vite",status:"ready",port:Number(Y)}),dE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (RZ0(),TZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Zn0=L(()=>{tp0();iE();sp0()});var P70;var Qn0=L(()=>{P70={name:"decocms",version:"4.297.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as cs8,Text as na1}from"ink";import{jsx as ls8,jsxs as ta1}from"react/jsx-runtime";function oa1({version:$}){return ta1(cs8,{flexDirection:"column",marginTop:1,children:[nZ0.map((Z,Q)=>ls8(na1,{color:tZ0[Q],children:Z},Q)),ta1(na1,{dimColor:!0,children:[" v",$]})]})}var ra1=L(()=>{Gp()});import{Box as pE,Text as WO}from"ink";import{Spinner as ms8}from"@inkjs/ui";import{jsx as XG,jsxs as zy}from"react/jsx-runtime";function aa1({status:$}){if($==="pending")return XG(ms8,{label:""});return XG(WO,{color:"green",children:"\u2713"})}function ds8($){return`${$.name}: ${$.port||"...."}`}function sa1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return zy(pE,{flexDirection:"column",paddingBottom:1,children:[XG(oa1,{version:P70.version}),XG(pE,{marginBottom:1,children:XG(WO,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(pE,{children:zy(WO,{dimColor:!0,children:["Home: ",Q]})}),zy(pE,{gap:2,children:[$.map((Y)=>zy(pE,{gap:1,children:[XG(WO,{children:ds8(Y)}),XG(aa1,{status:Y.status})]},Y.name)),zy(pE,{gap:1,children:[XG(WO,{children:"Migrations"}),XG(aa1,{status:Z})]})]}),XG(pE,{children:X?zy(WO,{children:["Open in browser: ",XG(WO,{color:"cyan",children:X})]}):XG(WO,{dimColor:!0,children:"Starting..."})})]})}var ea1=L(()=>{Qn0();ra1()});import{Box as is8,Text as Pp}from"ink";import{jsx as Xn0,jsxs as Yn0}from"react/jsx-runtime";function ps8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function $s1({logs:$}){return Xn0(is8,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Xn0(Pp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Yn0(Pp,{children:[Yn0(Pp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xn0(Pp,{color:ps8(Z.status),children:Z.status}),Yn0(Pp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Zs1=()=>{};var Gn0={};Z0(Gn0,{App:()=>os8});import{Box as ns8}from"ink";import{useSyncExternalStore as ts8}from"react";import{jsx as Qs1,jsxs as rs8}from"react/jsx-runtime";function os8({home:$}){let Z=ts8(ap0,rp0);return rs8(ns8,{flexDirection:"column",children:[Qs1(sa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Qs1($s1,{logs:Z.logs})]})}var Jn0=L(()=>{ea1();Zs1();iE()});var d3="thread-gate",BN="decopilot-hosted-harness",ON="decopilot-hosted-harness-sandboxed",wJ="automations",HO="background-tools",nE="task-board-github-reads",tE="jira-push";var Xs1="9";function Ys1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Xs1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Gs1=()=>{};import as8 from"pg";async function Ks1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=ss8}=$,Y=$.log??((W)=>console.log(W)),G=new as8.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Js1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(es8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Js1.toString()])}catch{}await G.end().catch(()=>{})}}var Js1=8314027461559302n,ss8=600000,es8=500;var Ws1=L(()=>{J4()});function $e8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Kn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Hs1(){let $=$e8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Kn0($,"--cpu-prof-dir")??process.cwd(),name:Kn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Kn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Fs1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=uE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),A70=setInterval(()=>void Z().catch(()=>{}),$),A70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(A70)clearInterval(A70)}}var A70;var Ns1=()=>{};import*as Ze8 from"bun:jsc";function Us1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Qe8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=Xe8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Qe8,Xe8;var Bs1=L(()=>{({startSamplingProfiler:Qe8,samplingProfilerStackTraces:Xe8}=Ze8)});function Os1(){Hs1();let $=[Fs1(),_n1(),Us1()];return()=>{for(let Z of $)Z()}}var Ls1=L(()=>{xl0();Ns1();Bs1()});var oE=v((Ds1)=>{Object.defineProperty(Ds1,"__esModule",{value:!0});Ds1.RepublishHeaders=Ds1.DirectMsgHeaders=Ds1.JsHeaders=Ds1.AdvisoryKind=void 0;Ds1.isOrderedPushConsumerOptions=Ye8;Ds1.isPullConsumer=Ge8;Ds1.isPushConsumer=Je8;Ds1.isBoundPushConsumerOptions=Ke8;function Ye8($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Ge8($){return $.isPullConsumer()}function Je8($){return $.isPushConsumer()}function Ke8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ds1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ds1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ds1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ds1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var YG=v((Es1)=>{Object.defineProperty(Es1,"__esModule",{value:!0});Es1.TD=Es1.TE=Es1.Empty=void 0;Es1.encode=De8;Es1.decode=we8;Es1.Empty=new Uint8Array(0);Es1.TE=new TextEncoder;Es1.TD=new TextDecoder;function Le8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function De8(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Es1.TE.encode($[Q]));if(Z.length===0)return Es1.Empty;if(Z.length===1)return Z[0];return Le8(...Z)}function we8($){if(!$||$.length===0)return"";return Es1.TD.decode($)}});var GG=v((Ps1)=>{Object.defineProperty(Ps1,"__esModule",{value:!0});Ps1.errors=Ps1.PermissionViolationError=Ps1.NoRespondersError=Ps1.TimeoutError=Ps1.RequestError=Ps1.ProtocolError=Ps1.ConnectionError=Ps1.DrainingConnectionError=Ps1.ClosedConnectionError=Ps1.AuthorizationError=Ps1.UserAuthenticationExpiredError=Ps1.InvalidOperationError=Ps1.InvalidArgumentError=Ps1.InvalidSubjectError=void 0;class Hn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ps1.InvalidSubjectError=Hn0;class T70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new T70(`${$} ${Z}`,Q)}}Ps1.InvalidArgumentError=T70;class Fn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ps1.InvalidOperationError=Fn0;class R70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new R70($);return null}}Ps1.UserAuthenticationExpiredError=R70;class I70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new I70($);return null}}Ps1.AuthorizationError=I70;class Nn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ps1.ClosedConnectionError=Nn0;class Un0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ps1.DrainingConnectionError=Un0;class Bn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ps1.ConnectionError=Bn0;class On0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ps1.ProtocolError=On0;class Ln0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof q70}}Ps1.RequestError=Ln0;class Dn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ps1.TimeoutError=Dn0;class q70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ps1.NoRespondersError=q70;class M70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new M70($,Q,X,Y)}}Ps1.PermissionViolationError=M70;Ps1.errors={AuthorizationError:I70,ClosedConnectionError:Nn0,ConnectionError:Bn0,DrainingConnectionError:Un0,InvalidArgumentError:T70,InvalidOperationError:Fn0,InvalidSubjectError:Hn0,NoRespondersError:q70,PermissionViolationError:M70,ProtocolError:On0,RequestError:Ln0,TimeoutError:Dn0,UserAuthenticationExpiredError:R70}});var i3=v((qs1)=>{Object.defineProperty(qs1,"__esModule",{value:!0});qs1.SimpleMutex=qs1.Perf=void 0;qs1.extend=xe8;qs1.render=fe8;qs1.timeout=be8;qs1.delay=ye8;qs1.deadline=ge8;qs1.deferred=En0;qs1.debugDeferred=he8;qs1.shuffle=ue8;qs1.collect=ce8;qs1.jitter=Is1;qs1.backoff=le8;qs1.nanos=me8;qs1.millis=de8;qs1.randomToken=ne8;var ve8=YG(),wn0=GG();function xe8($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function fe8($){return ve8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function be8($,Z=!0){let Q=Z?new wn0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new wn0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function ye8($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function ge8($,Z=1000){let Q=En0(),X=setTimeout(()=>{Q.reject(new wn0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function En0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function he8(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function ue8($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function ce8($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class Ts1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}qs1.Perf=Ts1;class Rs1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=En0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}qs1.SimpleMutex=Rs1;function Is1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function le8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return Is1(Q>Z?$[Z]:$[Q])}}}function me8($){return $*1e6}function de8($){return Math.floor($/1e6)}var ie8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",LN=new Uint8Array(62);for(let $=0;$<62;$++)LN[$]=ie8.charCodeAt($);var pe8=218340105584896;function ne8(){let $=Math.floor(Math.random()*pe8),Z=$%62,Q=LN[Z];$=($-Z)/62,Z=$%62;let X=LN[Z];$=($-Z)/62,Z=$%62;let Y=LN[Z];$=($-Z)/62,Z=$%62;let G=LN[Z];$=($-Z)/62,Z=$%62;let J=LN[Z];$=($-Z)/62,Z=$%62;let K=LN[Z];$=($-Z)/62,Z=$%62;let W=LN[Z];$=($-Z)/62;let H=LN[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var xs1=v((_s1)=>{Object.defineProperty(_s1,"__esModule",{value:!0});_s1.nuid=_s1.NuidImpl=void 0;var H04="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",FO=62,k70=12,Ss1=10,Vs1=33,F04=333,ks1=k70+Ss1,zn0=new Uint8Array(FO);for(let $=0;$<FO;$++)zn0[$]=H04.charCodeAt($);var V70=4294967296,Cs1=BigInt(FO)**BigInt(Ss1),Ap=Number(Cs1/(1n<<32n)),jn0=Number(Cs1%(1n<<32n));function N04($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function U04($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else N04($)}class Pn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ks1),this.cbuf=new Uint8Array(k70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ap+1)),this.seqLo=Math.floor(Math.random()*V70);while($++<8&&this.seqHi===Ap&&this.seqLo>=jn0);if(this.seqHi===Ap&&this.seqLo>=jn0)this.seqLo=0;this.inc=Math.random()*(F04-Vs1)+Vs1|0}setPre(){U04(this.cbuf);for(let $=0;$<k70;$++)this.buf[$]=zn0[this.cbuf[$]%FO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ks1-1;Q>=k70;Q--){let X=Math.floor($/FO),G=($-X*FO)*V70+Z,J=Math.floor(G/FO),K=G-J*FO;this.buf[Q]=zn0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=V70)this.seqLo-=V70,this.seqHi+=1;if(this.seqHi>Ap||this.seqHi===Ap&&this.seqLo>=jn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}_s1.NuidImpl=Pn0;_s1.nuid=new Pn0});var gs1=v((bs1)=>{Object.defineProperty(bs1,"__esModule",{value:!0});bs1.nuid=bs1.Nuid=void 0;var fs1=xs1();bs1.Nuid=fs1.NuidImpl;bs1.nuid=fs1.nuid});var C70=v((S70)=>{Object.defineProperty(S70,"__esModule",{value:!0});S70.nuid=S70.Nuid=void 0;var hs1=gs1();Object.defineProperty(S70,"Nuid",{enumerable:!0,get:function(){return hs1.Nuid}});Object.defineProperty(S70,"nuid",{enumerable:!0,get:function(){return hs1.nuid}})});var NO=v((us1)=>{Object.defineProperty(us1,"__esModule",{value:!0});us1.DEFAULT_HOST=us1.DEFAULT_PORT=us1.Match=void 0;us1.syncIterator=E04;us1.createInbox=j04;var D04=C70(),w04=GG();us1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function E04($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function j04($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w04.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${D04.nuid.next()}`}us1.DEFAULT_PORT=4222;us1.DEFAULT_HOST="127.0.0.1"});var Tp=v((ds1)=>{Object.defineProperty(ds1,"__esModule",{value:!0});ds1.DataBuffer=void 0;var ls1=YG();class ms1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ls1.TE.encode($)}static toAscii($){return ls1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ds1.DataBuffer=ms1});var rE=v((ns1)=>{Object.defineProperty(ns1,"__esModule",{value:!0});ns1.LF=ns1.CR=ns1.CRLF=ns1.CR_LF_LEN=ns1.CR_LF=void 0;ns1.setTransportFactory=M04;ns1.defaultPort=V04;ns1.getUrlParseFn=k04;ns1.newTransport=S04;ns1.getResolveFn=C04;ns1.protoLen=ps1;ns1.extractProtocolMessage=_04;var R04=YG(),I04=NO(),q04=Tp(),JG;function M04($){JG=$}function V04(){return JG!==void 0&&JG.defaultPort!==void 0?JG.defaultPort:I04.DEFAULT_PORT}function k04(){return JG!==void 0&&JG.urlParseFn?JG.urlParseFn:void 0}function S04(){if(!JG||typeof JG.factory!=="function")throw Error("transport fn is not set");return JG.factory()}function C04(){return JG!==void 0&&JG.dnsResolveFn?JG.dnsResolveFn:void 0}ns1.CR_LF=`\r
|
|
1476
|
+
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;KO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)KO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function hs8($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await zp(Number(Y)+1):await zp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await E70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)dE({name:D.name,status:"ready",port:D.port});Ep();let F=gs8(import.meta.dir,"..","..","..","..",".."),N=Q===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ep0(U.stdout),ep0(U.stderr);jp(G),dE({name:"Vite",status:"ready",port:Number(Y)}),dE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (RZ0(),TZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Zn0=L(()=>{tp0();iE();sp0()});var P70;var Qn0=L(()=>{P70={name:"decocms",version:"4.297.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as cs8,Text as na1}from"ink";import{jsx as ls8,jsxs as ta1}from"react/jsx-runtime";function oa1({version:$}){return ta1(cs8,{flexDirection:"column",marginTop:1,children:[nZ0.map((Z,Q)=>ls8(na1,{color:tZ0[Q],children:Z},Q)),ta1(na1,{dimColor:!0,children:[" v",$]})]})}var ra1=L(()=>{Gp()});import{Box as pE,Text as WO}from"ink";import{Spinner as ms8}from"@inkjs/ui";import{jsx as XG,jsxs as zy}from"react/jsx-runtime";function aa1({status:$}){if($==="pending")return XG(ms8,{label:""});return XG(WO,{color:"green",children:"\u2713"})}function ds8($){return`${$.name}: ${$.port||"...."}`}function sa1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return zy(pE,{flexDirection:"column",paddingBottom:1,children:[XG(oa1,{version:P70.version}),XG(pE,{marginBottom:1,children:XG(WO,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(pE,{children:zy(WO,{dimColor:!0,children:["Home: ",Q]})}),zy(pE,{gap:2,children:[$.map((Y)=>zy(pE,{gap:1,children:[XG(WO,{children:ds8(Y)}),XG(aa1,{status:Y.status})]},Y.name)),zy(pE,{gap:1,children:[XG(WO,{children:"Migrations"}),XG(aa1,{status:Z})]})]}),XG(pE,{children:X?zy(WO,{children:["Open in browser: ",XG(WO,{color:"cyan",children:X})]}):XG(WO,{dimColor:!0,children:"Starting..."})})]})}var ea1=L(()=>{Qn0();ra1()});import{Box as is8,Text as Pp}from"ink";import{jsx as Xn0,jsxs as Yn0}from"react/jsx-runtime";function ps8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function $s1({logs:$}){return Xn0(is8,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Xn0(Pp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Yn0(Pp,{children:[Yn0(Pp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xn0(Pp,{color:ps8(Z.status),children:Z.status}),Yn0(Pp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Zs1=()=>{};var Gn0={};Z0(Gn0,{App:()=>os8});import{Box as ns8}from"ink";import{useSyncExternalStore as ts8}from"react";import{jsx as Qs1,jsxs as rs8}from"react/jsx-runtime";function os8({home:$}){let Z=ts8(ap0,rp0);return rs8(ns8,{flexDirection:"column",children:[Qs1(sa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Qs1($s1,{logs:Z.logs})]})}var Jn0=L(()=>{ea1();Zs1();iE()});var d3="thread-gate",BN="decopilot-hosted-harness",ON="decopilot-hosted-harness-sandboxed",wJ="automations",HO="background-tools",nE="task-board-github-reads",tE="jira-push";var Xs1="9";function Ys1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Xs1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Gs1=()=>{};import as8 from"pg";async function Ks1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=ss8}=$,Y=$.log??((W)=>console.log(W)),G=new as8.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Js1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(es8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Js1.toString()])}catch{}await G.end().catch(()=>{})}}var Js1=8314027461559302n,ss8=600000,es8=500;var Ws1=L(()=>{J4()});function $e8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Kn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Hs1(){let $=$e8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Kn0($,"--cpu-prof-dir")??process.cwd(),name:Kn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Kn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Fs1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=uE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),A70=setInterval(()=>void Z().catch(()=>{}),$),A70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(A70)clearInterval(A70)}}var A70;var Ns1=()=>{};import*as Ze8 from"bun:jsc";function Us1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Qe8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=Xe8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Qe8,Xe8;var Bs1=L(()=>{({startSamplingProfiler:Qe8,samplingProfilerStackTraces:Xe8}=Ze8)});function Os1(){Hs1();let $=[Fs1(),_n1(),Us1()];return()=>{for(let Z of $)Z()}}var Ls1=L(()=>{xl0();Ns1();Bs1()});var oE=v((Ds1)=>{Object.defineProperty(Ds1,"__esModule",{value:!0});Ds1.RepublishHeaders=Ds1.DirectMsgHeaders=Ds1.JsHeaders=Ds1.AdvisoryKind=void 0;Ds1.isOrderedPushConsumerOptions=Ye8;Ds1.isPullConsumer=Ge8;Ds1.isPushConsumer=Je8;Ds1.isBoundPushConsumerOptions=Ke8;function Ye8($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Ge8($){return $.isPullConsumer()}function Je8($){return $.isPushConsumer()}function Ke8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ds1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ds1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ds1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ds1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var YG=v((Es1)=>{Object.defineProperty(Es1,"__esModule",{value:!0});Es1.TD=Es1.TE=Es1.Empty=void 0;Es1.encode=De8;Es1.decode=we8;Es1.Empty=new Uint8Array(0);Es1.TE=new TextEncoder;Es1.TD=new TextDecoder;function Le8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function De8(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Es1.TE.encode($[Q]));if(Z.length===0)return Es1.Empty;if(Z.length===1)return Z[0];return Le8(...Z)}function we8($){if(!$||$.length===0)return"";return Es1.TD.decode($)}});var GG=v((Ps1)=>{Object.defineProperty(Ps1,"__esModule",{value:!0});Ps1.errors=Ps1.PermissionViolationError=Ps1.NoRespondersError=Ps1.TimeoutError=Ps1.RequestError=Ps1.ProtocolError=Ps1.ConnectionError=Ps1.DrainingConnectionError=Ps1.ClosedConnectionError=Ps1.AuthorizationError=Ps1.UserAuthenticationExpiredError=Ps1.InvalidOperationError=Ps1.InvalidArgumentError=Ps1.InvalidSubjectError=void 0;class Hn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ps1.InvalidSubjectError=Hn0;class T70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new T70(`${$} ${Z}`,Q)}}Ps1.InvalidArgumentError=T70;class Fn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ps1.InvalidOperationError=Fn0;class R70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new R70($);return null}}Ps1.UserAuthenticationExpiredError=R70;class I70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new I70($);return null}}Ps1.AuthorizationError=I70;class Nn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ps1.ClosedConnectionError=Nn0;class Un0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ps1.DrainingConnectionError=Un0;class Bn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ps1.ConnectionError=Bn0;class On0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ps1.ProtocolError=On0;class Ln0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof q70}}Ps1.RequestError=Ln0;class Dn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ps1.TimeoutError=Dn0;class q70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ps1.NoRespondersError=q70;class M70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new M70($,Q,X,Y)}}Ps1.PermissionViolationError=M70;Ps1.errors={AuthorizationError:I70,ClosedConnectionError:Nn0,ConnectionError:Bn0,DrainingConnectionError:Un0,InvalidArgumentError:T70,InvalidOperationError:Fn0,InvalidSubjectError:Hn0,NoRespondersError:q70,PermissionViolationError:M70,ProtocolError:On0,RequestError:Ln0,TimeoutError:Dn0,UserAuthenticationExpiredError:R70}});var i3=v((qs1)=>{Object.defineProperty(qs1,"__esModule",{value:!0});qs1.SimpleMutex=qs1.Perf=void 0;qs1.extend=xe8;qs1.render=fe8;qs1.timeout=be8;qs1.delay=ye8;qs1.deadline=ge8;qs1.deferred=En0;qs1.debugDeferred=he8;qs1.shuffle=ue8;qs1.collect=ce8;qs1.jitter=Is1;qs1.backoff=le8;qs1.nanos=me8;qs1.millis=de8;qs1.randomToken=ne8;var ve8=YG(),wn0=GG();function xe8($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function fe8($){return ve8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function be8($,Z=!0){let Q=Z?new wn0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new wn0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function ye8($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function ge8($,Z=1000){let Q=En0(),X=setTimeout(()=>{Q.reject(new wn0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function En0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function he8(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function ue8($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function ce8($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class Ts1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}qs1.Perf=Ts1;class Rs1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=En0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}qs1.SimpleMutex=Rs1;function Is1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function le8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return Is1(Q>Z?$[Z]:$[Q])}}}function me8($){return $*1e6}function de8($){return Math.floor($/1e6)}var ie8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",LN=new Uint8Array(62);for(let $=0;$<62;$++)LN[$]=ie8.charCodeAt($);var pe8=218340105584896;function ne8(){let $=Math.floor(Math.random()*pe8),Z=$%62,Q=LN[Z];$=($-Z)/62,Z=$%62;let X=LN[Z];$=($-Z)/62,Z=$%62;let Y=LN[Z];$=($-Z)/62,Z=$%62;let G=LN[Z];$=($-Z)/62,Z=$%62;let J=LN[Z];$=($-Z)/62,Z=$%62;let K=LN[Z];$=($-Z)/62,Z=$%62;let W=LN[Z];$=($-Z)/62;let H=LN[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var xs1=v((_s1)=>{Object.defineProperty(_s1,"__esModule",{value:!0});_s1.nuid=_s1.NuidImpl=void 0;var H04="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",FO=62,k70=12,Ss1=10,Vs1=33,F04=333,ks1=k70+Ss1,zn0=new Uint8Array(FO);for(let $=0;$<FO;$++)zn0[$]=H04.charCodeAt($);var V70=4294967296,Cs1=BigInt(FO)**BigInt(Ss1),Ap=Number(Cs1/(1n<<32n)),jn0=Number(Cs1%(1n<<32n));function N04($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function U04($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else N04($)}class Pn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ks1),this.cbuf=new Uint8Array(k70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ap+1)),this.seqLo=Math.floor(Math.random()*V70);while($++<8&&this.seqHi===Ap&&this.seqLo>=jn0);if(this.seqHi===Ap&&this.seqLo>=jn0)this.seqLo=0;this.inc=Math.random()*(F04-Vs1)+Vs1|0}setPre(){U04(this.cbuf);for(let $=0;$<k70;$++)this.buf[$]=zn0[this.cbuf[$]%FO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ks1-1;Q>=k70;Q--){let X=Math.floor($/FO),G=($-X*FO)*V70+Z,J=Math.floor(G/FO),K=G-J*FO;this.buf[Q]=zn0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=V70)this.seqLo-=V70,this.seqHi+=1;if(this.seqHi>Ap||this.seqHi===Ap&&this.seqLo>=jn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}_s1.NuidImpl=Pn0;_s1.nuid=new Pn0});var gs1=v((bs1)=>{Object.defineProperty(bs1,"__esModule",{value:!0});bs1.nuid=bs1.Nuid=void 0;var fs1=xs1();bs1.Nuid=fs1.NuidImpl;bs1.nuid=fs1.nuid});var C70=v((S70)=>{Object.defineProperty(S70,"__esModule",{value:!0});S70.nuid=S70.Nuid=void 0;var hs1=gs1();Object.defineProperty(S70,"Nuid",{enumerable:!0,get:function(){return hs1.Nuid}});Object.defineProperty(S70,"nuid",{enumerable:!0,get:function(){return hs1.nuid}})});var NO=v((us1)=>{Object.defineProperty(us1,"__esModule",{value:!0});us1.DEFAULT_HOST=us1.DEFAULT_PORT=us1.Match=void 0;us1.syncIterator=E04;us1.createInbox=j04;var D04=C70(),w04=GG();us1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function E04($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function j04($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w04.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${D04.nuid.next()}`}us1.DEFAULT_PORT=4222;us1.DEFAULT_HOST="127.0.0.1"});var Tp=v((ds1)=>{Object.defineProperty(ds1,"__esModule",{value:!0});ds1.DataBuffer=void 0;var ls1=YG();class ms1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ls1.TE.encode($)}static toAscii($){return ls1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ds1.DataBuffer=ms1});var rE=v((ns1)=>{Object.defineProperty(ns1,"__esModule",{value:!0});ns1.LF=ns1.CR=ns1.CRLF=ns1.CR_LF_LEN=ns1.CR_LF=void 0;ns1.setTransportFactory=M04;ns1.defaultPort=V04;ns1.getUrlParseFn=k04;ns1.newTransport=S04;ns1.getResolveFn=C04;ns1.protoLen=ps1;ns1.extractProtocolMessage=_04;var R04=YG(),I04=NO(),q04=Tp(),JG;function M04($){JG=$}function V04(){return JG!==void 0&&JG.defaultPort!==void 0?JG.defaultPort:I04.DEFAULT_PORT}function k04(){return JG!==void 0&&JG.urlParseFn?JG.urlParseFn:void 0}function S04(){if(!JG||typeof JG.factory!=="function")throw Error("transport fn is not set");return JG.factory()}function C04(){return JG!==void 0&&JG.dnsResolveFn?JG.dnsResolveFn:void 0}ns1.CR_LF=`\r
|
|
1477
1477
|
`;ns1.CR_LF_LEN=ns1.CR_LF.length;ns1.CRLF=q04.DataBuffer.fromAscii(ns1.CR_LF);ns1.CR=new Uint8Array(ns1.CRLF)[0];ns1.LF=new Uint8Array(ns1.CRLF)[1];function ps1($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===ns1.CR&&$[Q]===ns1.LF)return Q+1}return 0}function _04($){let Z=ps1($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return R04.TD.decode(X)}return""}});var qn0=v((Ze1)=>{Object.defineProperty(Ze1,"__esModule",{value:!0});Ze1.ipV4=ss1;Ze1.isIP=m04;Ze1.parseIP=es1;var Rp=4,aE=16,_70=48,as1=57,os1=65,c04=70,rs1=97,l04=102,In0=16777215;function ss1($,Z,Q,X){let Y=new Uint8Array(aE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function m04($){return es1($)!==void 0}function es1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return $e1($);case":":return d04($)}return}function $e1($){let Z=new Uint8Array(Rp);for(let Q=0;Q<Rp;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:G}=i04($);if(!G||X>255)return;$=$.substring(Y),Z[Q]=X}return ss1(Z[0],Z[1],Z[2],Z[3])}function d04($){let Z=new Uint8Array(aE),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<aE){let{n:Y,c:G,ok:J}=p04($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(Q<0&&X!=aE-Rp)return;if(X+Rp>aE)return;let K=$e1($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=Rp;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<aE){if(Q<0)return;let Y=aE-X;for(let G=X-1;G>=Q;G--)Z[G+Y]=Z[G];for(let G=Q+Y-1;G>=Q;G--)Z[G]=0}else if(Q>=0)return;return Z}function i04($){let Z=0,Q=0;for(Z=0;Z<$.length&&_70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=as1;Z++)if(Q=Q*10+($.charCodeAt(Z)-_70),Q>=In0)return{n:In0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function p04($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(_70<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=as1)Z*=16,Z+=$.charCodeAt(Q)-_70;else if(rs1<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=l04)Z*=16,Z+=$.charCodeAt(Q)-rs1+10;else if(os1<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=c04)Z*=16,Z+=$.charCodeAt(Q)-os1+10;else break;if(Z>=In0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var _n0=v((Xe1)=>{Object.defineProperty(Xe1,"__esModule",{value:!0});Xe1.Servers=Xe1.ServerImpl=void 0;Xe1.isIPV4OrHostname=Qe1;Xe1.hostPort=Cn0;var Mn0=rE(),Vn0=i3(),kn0=qn0(),r04=NO(),a04=GG();function Qe1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Sn0($){return!Qe1($)}function s04($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function Cn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=s04($),Sn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Sn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):r04.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:Q}}class Py{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=Cn0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,kn0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Sn0(X)?"["+X+"]":X}`);G.port=`${this.port}`;let J=new Py(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Vn0.shuffle)(Z);return this.resolves=Z,Z}}Xe1.ServerImpl=Py;class v70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw a04.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Mn0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Cn0(Y),J=Q.get(G);if(J)J.gossiped=!1,X.push(J);else X.push(new Py(Y))}if(this.randomize)(0,Vn0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,kn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Mn0.getUrlParseFn)();$=Q?Q($):$;let X=new Py($,Z);if((0,kn0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return v70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return v70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Mn0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Py(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Vn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}Xe1.Servers=v70});var x70=v((Ke1)=>{Object.defineProperty(Ke1,"__esModule",{value:!0});Ke1.QueuedIteratorImpl=void 0;var vn0=i3(),Ge1=GG();class Je1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,vn0.deferred)(),this.yields=[],this.iterClosed=(0,vn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ge1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ge1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,vn0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Ke1.QueuedIteratorImpl=Je1});var xn0=v((Ne1)=>{Object.defineProperty(Ne1,"__esModule",{value:!0});Ne1.MuxSubscription=void 0;var Q14=NO(),He1=GG();class Fe1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Q14.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new He1.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new He1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ne1.MuxSubscription=Fe1});var fn0=v((Oe1)=>{Object.defineProperty(Oe1,"__esModule",{value:!0});Oe1.Heartbeat=void 0;var X14=i3();class Be1{ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,X14.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Oe1.Heartbeat=Be1});var gn0=v((je1)=>{Object.defineProperty(je1,"__esModule",{value:!0});je1.DenoBuffer=je1.MAX_SIZE=je1.AssertionError=void 0;je1.assert=we1;je1.concat=Ee1;je1.append=G14;je1.readAll=J14;je1.writeAll=K14;var Y14=YG();class bn0 extends Error{constructor($){super($);this.name="AssertionError"}}je1.AssertionError=bn0;function we1($,Z="Assertion failed."){if(!$)throw new bn0(Z)}var De1=32768;je1.MAX_SIZE=4294967294;function f70($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function Ee1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function G14($,Z){return Ee1($,Uint8Array.of(Z))}class yn0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){we1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=f70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Y14.TE.encode($))}write($){let Z=this._grow($.byteLength);return f70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)f70(this._buf.subarray(this._off),this._buf);else if(X+$>je1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,je1.MAX_SIZE));f70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,je1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(De1);while(!0){let X=this.capacity-this.length<De1,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(X)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}je1.DenoBuffer=yn0;function J14($){let Z=new yn0;return Z.readFrom($),Z.bytes()}function K14($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var cn0=v((Re1)=>{Object.defineProperty(Re1,"__esModule",{value:!0});Re1.cc=Re1.State=Re1.Parser=Re1.Kind=void 0;Re1.describe=O14;var hn0=gn0(),un0=YG();Re1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function O14($){let Z,Q="";switch($.kind){case Re1.Kind.MSG:Z="MSG";break;case Re1.Kind.OK:Z="OK";break;case Re1.Kind.ERR:Z="ERR",Q=un0.TD.decode($.data);break;case Re1.Kind.PING:Z="PING";break;case Re1.Kind.PONG:Z="PONG";break;case Re1.Kind.INFO:Z="INFO",Q=un0.TD.decode($.data)}return`${Z}: ${Q}`}function Pe1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Ae1=48,L14=57,Ay=67108864;class Te1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Re1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case Re1.State.OP_START:switch(Q){case Re1.cc.M:case Re1.cc.m:this.state=Re1.State.OP_M,this.hdr=-1,this.ma=Pe1();break;case Re1.cc.H:case Re1.cc.h:this.state=Re1.State.OP_H,this.hdr=0,this.ma=Pe1();break;case Re1.cc.P:case Re1.cc.p:this.state=Re1.State.OP_P;break;case Re1.cc.PLUS:this.state=Re1.State.OP_PLUS;break;case Re1.cc.MINUS:this.state=Re1.State.OP_MINUS;break;case Re1.cc.I:case Re1.cc.i:this.state=Re1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_H:switch(Q){case Re1.cc.M:case Re1.cc.m:this.state=Re1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_M:switch(Q){case Re1.cc.S:case Re1.cc.s:this.state=Re1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MS:switch(Q){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MSG:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MSG_SPC:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.MSG_ARG,this.as=Z}break;case Re1.State.MSG_ARG:switch(Q){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=Re1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case Re1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Re1.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Re1.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Re1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Re1.State.MSG_END;break;case Re1.State.MSG_END:switch(Q){case Re1.cc.NL:this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break;default:continue}break;case Re1.State.OP_PLUS:switch(Q){case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PLUS_O:switch(Q){case Re1.cc.K:case Re1.cc.k:this.state=Re1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PLUS_OK:switch(Q){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.OK}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_MINUS:switch(Q){case Re1.cc.E:case Re1.cc.e:this.state=Re1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_E:switch(Q){case Re1.cc.R:case Re1.cc.r:this.state=Re1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ER:switch(Q){case Re1.cc.R:case Re1.cc.r:this.state=Re1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ERR:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ERR_SPC:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.MINUS_ERR_ARG,this.as=Z}break;case Re1.State.MINUS_ERR_ARG:switch(Q){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Re1.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case Re1.State.OP_P:switch(Q){case Re1.cc.I:case Re1.cc.i:this.state=Re1.State.OP_PI;break;case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PO:switch(Q){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PON:switch(Q){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PONG:switch(Q){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.PONG}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_PI:switch(Q){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PIN:switch(Q){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PING:switch(Q){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.PING}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_I:switch(Q){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_IN:switch(Q){case Re1.cc.F:case Re1.cc.f:this.state=Re1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INF:switch(Q){case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INFO:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INFO_SPC:switch(Q){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.INFO_ARG,this.as=Z}break;case Re1.State.INFO_ARG:switch(Q){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Re1.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Re1.State.MSG_ARG||this.state===Re1.State.MINUS_ERR_ARG||this.state===Re1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new hn0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Re1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new hn0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new hn0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case Re1.cc.SPACE:case Re1.cc.TAB:case Re1.cc.CR:case Re1.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Ay);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Ay);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${un0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case Re1.cc.SPACE:case Re1.cc.TAB:case Re1.cc.CR:case Re1.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Ay),this.ma.size=this.protoParseInt(Z[3],Ay);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Ay),this.ma.size=this.protoParseInt(Z[4],Ay);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<Ae1||$[X]>L14)return-1;Q=Q*10+($[X]-Ae1)}return Z!==void 0&&Q>Z?-1:Q}}Re1.Parser=Te1;Re1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};Re1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var g70=v((qe1)=>{Object.defineProperty(qe1,"__esModule",{value:!0});qe1.MsgHdrsImpl=void 0;qe1.canonicalMIMEHeaderKey=mn0;qe1.headers=E14;var Ie1=YG(),p3=NO(),y70=GG();function mn0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw y70.InvalidArgumentError.format("header",`'${$[U]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;N[U]=B,F=B==45}return String.fromCharCode(...N)}function E14($=0,Z=""){if($===0&&Z!=="")throw y70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw y70.InvalidArgumentError.format("description","is required");return new Ty($,Z)}var ln0="NATS/1.0";class Ty{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),G=[...X].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Ty,X=Ie1.TD.decode($).split(`\r
|
|
1478
1478
|
`),Y=X[0];if(Y!==ln0){let G=Y.replace(ln0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(X.length>=1)X.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=ln0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
1479
1479
|
${Z}: ${Q[X]}`;return`${$}\r
|
|
@@ -2309,7 +2309,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
2309
2309
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
2310
2310
|
</workflows>`,FU$={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:sA4,getId:$Y.USAGE_MANAGER}});function $$1($){return Uz.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function $T4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function vJ0({virtualMcp:$,agentId:Z=$.id,organizationId:Q,ctx:X}){let Y=$$1(Z);if(!Y)return $;let G=await $T4(Y,{orgId:Q,ctx:X}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function xJ0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(Q)=>({label:Q.label,activeForm:Q.activeForm,action:Q.action,completed:await Q.isCompleted(Z),alwaysSuggest:Q.alwaysSuggest})))}async function UU$($,Z,Q){let X={self:y8.SELF($),registry:y8.REGISTRY($),"community-registry":y8.COMMUNITY_REGISTRY($)};await Promise.all(eA4.map((Y)=>Q.delete(`${Y}${$}`))),await Promise.all(Uz.map(async(Y)=>{let G=Y.getId($),J=await Q.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>X[H]);if(J){await Q.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=J.connections.find((N)=>N.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:F?.selected_resources??null,selected_prompts:F?.selected_prompts??null}})});return}await Q.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:G})}))}var eA4,Uz;var ch=L(()=>{g8();rN$();sN$();$U$();GU$();KU$();HU$();NU$();eA4=["studio-task-manager_"],Uz=[YU$,oN$,eN$,JU$,aN$,WU$,FU$]});import{DBOS as fJ0}from"@dbos-inc/dbos-sdk";async function ZT4($){let Z=F8(),Q=new Ag(Z.db);await UU$($.orgId,$.createdBy,Q)}async function QT4($){let Z=F8(),Q=new Ag(Z.db);for(let X of Uz){let Y=X.getId($.orgId),G=await Q.findById(Y,$.orgId);if(!G)continue;let J=X.selectedPrompts?[...X.selectedPrompts]:null;if(G.connections.every((W)=>{let H=W.selected_prompts;if(J===null)return H===null;if(H===null)return!1;if(H.length!==J.length)return!1;return H.every((F,N)=>F===J[N])}))continue;await Q.update(Y,$.createdBy,{connections:G.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:J}))})}}async function XT4($){await fJ0.runStep(()=>ZT4($),{name:"installStudioPack"}),await fJ0.runStep(()=>QT4($),{name:"backfillSelectedPrompts"})}async function Z$1($){await fJ0.startWorkflow(YT4,{workflowID:`install-studio-pack:${GT4}:${$.orgId}`})($)}async function BU$(){let Z=await F8().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),Q=new Map;for(let X of Z)if(!Q.has(X.organizationId))Q.set(X.organizationId,X.userId);await _J0(Array.from(Q),10,async([X,Y])=>{try{await Z$1({orgId:X,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:X},G)}})}var YT4,GT4="v6";var bJ0=L(()=>{QQ();Os0();ch();YT4=fJ0.registerWorkflow(XT4,{name:"installStudioPackWorkflow"})});class uo{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new uo,Z=new uo;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as S8}from"zod";var LU$,OU$=1000,JT4=500,DU$,wU$,EU$,jU$,zU$,PU$,AU$,TU$,RU$,IU$;var lh=L(()=>{LU$=S8.record(S8.string(),S8.array(S8.string())),DU$=S8.record(S8.string(),S8.array(S8.string()).max(JT4)).refine(($)=>Object.keys($).length<=OU$,{message:`Permissions cannot grant more than ${OU$} resources`}),wU$=S8.object({id:S8.string().describe("Unique identifier for the API key"),name:S8.string().describe("Human-readable name for the API key"),userId:S8.string().describe("ID of the user who owns this API key"),permissions:LU$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:S8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:S8.string().datetime().describe("When the API key was created (ISO 8601)")}),EU$=S8.object({name:S8.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:DU$.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:S8.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:S8.record(S8.string(),S8.unknown()).optional().describe("Additional metadata to store with the API key")}),jU$=S8.object({id:S8.string().describe("Unique identifier for the API key"),name:S8.string().describe("Human-readable name for the API key"),key:S8.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:LU$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:S8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:S8.string().datetime().describe("When the API key was created (ISO 8601)")}),zU$=S8.object({}),PU$=S8.object({items:S8.array(wU$).describe("List of API keys (without key values)")}),AU$=S8.object({keyId:S8.string().describe("ID of the API key to update"),name:S8.string().min(1).max(64).optional().describe("New name for the API key"),permissions:DU$.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:S8.record(S8.string(),S8.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),TU$=S8.object({item:wU$.describe("The updated API key (without key value)")}),RU$=S8.object({keyId:S8.string().describe("ID of the API key to delete")}),IU$=S8.object({success:S8.boolean().describe("Whether the deletion was successful"),keyId:S8.string().describe("ID of the deleted API key")})});var Q$1;var qU$=L(()=>{f4();k0();lh();Q$1=c({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EU$,outputSchema:jU$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),X=Q.expiresAt?Q.expiresAt instanceof Date?Q.expiresAt.toISOString():Q.expiresAt:null,Y=Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,G=a0(Z);if(G)h1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:Q.id,key_name:Q.name??$.name,organization_id:Z.organization?.id,has_expiry:!!X}});return{id:Q.id,name:Q.name??$.name,key:Q.key,permissions:Q.permissions??{},expiresAt:X,createdAt:Y}}})});var X$1;var MU$=L(()=>{f4();k0();lh();X$1=c({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:RU$,outputSchema:IU$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)h1.capture({distinctId:Q,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var Y$1;var VU$=L(()=>{k0();lh();Y$1=c({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:zU$,outputSchema:PU$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.list(),X=Z.organization?.id;return{items:(Q??[]).filter((G)=>{return G.metadata?.organization?.id===X}).map((G)=>({id:G.id,name:G.name??"Unnamed Key",userId:G.userId,permissions:G.permissions??{},expiresAt:G.expiresAt?G.expiresAt instanceof Date?G.expiresAt.toISOString():G.expiresAt:null,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});var G$1;var kU$=L(()=>{k0();lh();G$1=c({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:AU$,outputSchema:TU$,handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var SU$=L(()=>{qU$();MU$();VU$();kU$();lh()});function VL($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let Q=WT4.test(Z),X=HT4.test(Z),Y=FT4.test(Z);if(Q&&!X&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=X?Z:`https://${Z}`,J;try{J=new URL(G)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(J.protocol!=="http:"&&J.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=J.hostname.split(".");if(K.length<2||K.some((W)=>!W||!NT4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var WT4,HT4,FT4,NT4;var co=L(()=>{WT4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,HT4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,FT4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,NT4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as UX}from"zod";function UH($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??y0()).reportsInternalApiUrl??UT4).replace(/\/+$/,"")}function _U$($={}){return`${UH($)}/api/v2/mcp`}function Bz($){let Z=$.apiKey??($.settings??y0()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function yJ0($){return new URL($).hostname}function OT4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function LT4($,Z={}){switch($){case"ownership_unverified":{let Q=Z.email?`O e-mail ${Z.email}`:"Este e-mail",X=Z.domain?` ${Z.domain}`:" este site";return`${Q} n\xE3o tem permiss\xE3o para reivindicar${X}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Commerce Discovery. Tente novamente ou fale com o suporte.";default:return $}}async function DT4($){let Z=await lo($);return OT4(Z?.error)?Z.error:"unknown"}async function lo($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function J$1($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,Q=await $.text().catch(()=>"");if(!Q)return Z;try{let X=JSON.parse(Q),Y=typeof X.error==="string"?X.error:typeof X.message==="string"?X.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function xU$($,Z={}){let Q=UH(Z),X=Bz(Z),Y=Z.fetchImpl??fetch,G=yJ0($.siteUrl),J=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}})});if(!K.ok){let H=await DT4(K);throw new vU$(H,{email:$.email,domain:G})}let W=BT4.safeParse(await lo(K));if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function fU$($,Z={}){let Q=UH(Z),X=Bz(Z),Y=Z.fetchImpl??fetch,G=yJ0($.siteUrl),J=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId})});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=CU$.safeParse(await lo(K));return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await J$1(K));let W=CU$.safeParse(await lo(K));if(!W.success||!W.data.binding)throw Error("Commerce Discovery bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function bU$($,Z={}){let Q=UH(Z),X=Bz(Z),Y=Z.fetchImpl??fetch,G=yJ0($.siteUrl),J=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.githubRepo?{github_repo:$.githubRepo}:{}})});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await J$1(K));return{triggered:!0}}async function yU$($,Z={}){let Q=UH(Z),X=Bz(Z),Y=Z.fetchImpl??fetch,G=yJ0($.siteUrl),J=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${X}`}});if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await J$1(K));let W=wT4.safeParse(await lo(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var UT4,BT4,CU$,vU$,wT4;var Oz=L(()=>{g8();R$();UT4=new URL(P7$).origin,BT4=UX.object({token:UX.string().min(1)}),CU$=UX.object({binding:UX.object({resource_id:UX.string(),evidence:UX.string()}).optional(),reason:UX.string().optional(),detail:UX.string().optional()});vU$=class vU$ extends Error{code;constructor($,Z={}){super(LT4($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};wT4=UX.object({providers:UX.record(UX.string(),UX.object({connected:UX.boolean(),via:UX.enum(["oauth","sa"]).nullable(),resource:UX.string().nullable()}))})});import{z as wG}from"zod";var ET4,jT4,K$1;var gU$=L(()=>{co();k0();Oz();ET4=wG.object({siteUrl:wG.string().min(1).describe("Website URL of the store being bound."),provider:wG.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:wG.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),jT4=wG.discriminatedUnion("ok",[wG.object({ok:wG.literal(!0),resourceId:wG.string(),evidence:wG.string()}),wG.object({ok:wG.literal(!1),reason:wG.string(),detail:wG.string()})]),K$1=c({name:"COMMERCE_DISCOVERY_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Commerce Discovery verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Commerce Discovery Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:ET4,outputSchema:jT4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=VL($.siteUrl);if(!X.ok)throw Error(X.error);return fU$({siteUrl:X.value,orgId:Q.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as BH}from"zod";var zT4,PT4,W$1;var hU$=L(()=>{co();k0();Oz();zT4=BH.object({siteUrl:BH.string().min(1).describe("Website URL of the store to inspect.")}),PT4=BH.object({providers:BH.record(BH.string(),BH.object({connected:BH.boolean(),via:BH.enum(["oauth","sa"]).nullable(),resource:BH.string().nullable()})),claimed:BH.boolean().describe("False when the site isn't claimed/upgraded for this org \u2014 providers is then empty because the status is unreadable, NOT because nothing is connected. The UI must warn instead of rendering existing bindings as disconnected.")}),W$1=c({name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Commerce Discovery Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:zT4,outputSchema:PT4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=VL($.siteUrl);if(!X.ok)throw Error(X.error);return yU$({siteUrl:X.value,orgId:Q.id})}})});import{z as mo}from"zod";var AT4,TT4,H$1;var uU$=L(()=>{g8();co();k0();Oz();AT4=mo.object({siteUrl:mo.string().min(1).describe("Website URL to run the diagnostic for.")}),TT4=mo.object({triggered:mo.boolean(),reason:mo.string().optional()}),H$1=c({name:"COMMERCE_DISCOVERY_RUN",description:"Trigger the Commerce Discovery diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:AT4,outputSchema:TT4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=VL($.siteUrl);if(!X.ok)throw Error(X.error);let Y=y8.COMMERCE_DISCOVERY(Q.id),J=(await Z.storage.connections.findById(Y,Q.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return bU$({siteUrl:X.value,orgId:Q.id,githubRepo:K})}})});var kL=L(()=>{lQ0()});import{z as OH}from"zod";async function MT4($,Z,Q,X){let Y=await $.storage.connections.findById(Z,Q);if(Y)return Y;throw X}async function VT4($,Z,Q,X){let Y=await $.storage.virtualMcps.findById(Z,Q);if(Y)return Y;throw X}var F$1,RT4=3600000,IT4,qT4,N$1;var cU$=L(()=>{g8();co();k0();pW();kL();Oz();F$1=KY0,IT4=OH.object({siteUrl:OH.string().min(1).describe("Website URL to configure.")}),qT4=OH.object({connection:YQ,virtualMcp:GQ,reportApp:OH.object({connectionId:OH.string(),virtualMcpId:OH.string(),toolName:OH.literal(F$1)}),created:OH.object({connection:OH.boolean(),virtualMcp:OH.boolean()})});N$1=c({name:"COMMERCE_DISCOVERY_SETUP",description:"Create or return the Commerce Discovery connection and virtual MCP for the current organization.",annotations:{title:"Set Up Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IT4,outputSchema:qT4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let X=a0(Z);if(!X)throw Error("User ID required to set up Commerce Discovery");let Y=VL($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=y8.COMMERCE_DISCOVERY(Q.id),J=HY0(Q.id),K=new URLSearchParams({connection:G,tool:F$1}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(Q.slug??Q.id)}/agents/${J}/app?${K.toString()}`},H=await Z.storage.connections.findById(G,Q.id),F={connection:!1,virtualMcp:!1},N=await xU$({siteUrl:Y.value,orgId:Q.id,orgName:Q.name,...W}),U=_U$();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:Q.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:U,connection_token:N.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:Q.id,siteUrl:Y.value,connectionId:G});try{let w=x7$(Q.id,N.authorizationToken,U);H=await Z.storage.connections.create({...w,metadata:{...w.metadata??{},siteUrl:Y.value},organization_id:Q.id,created_by:X}),F.connection=!0}catch(w){H=await MT4(Z,G,Q.id,w)}}let B=await Z.storage.virtualMcps.findById(J,Q.id);if(!B){console.log("[commerce-discovery] creating virtual MCP",{orgId:Q.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{B=await Z.storage.virtualMcps.create(Q.id,X,f7$(Q.id,H.id),{id:J}),F.virtualMcp=!0}catch(w){B=await VT4(Z,J,Q.id,w)}}if(!B.pinned)B=await Z.storage.virtualMcps.update(B.id,X,{pinned:!0});let O=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",Q.id).executeTakeFirst();if((O?Date.now()-new Date(O.createdAt).getTime():Number.POSITIVE_INFINITY)<RT4){let E=(await Z.storage.organizationSettings.get(Q.id))?.flags,j={};if(E?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(Q.id,{flags:j})}return{connection:H,virtualMcp:B,reportApp:{connectionId:H.id,virtualMcpId:B.id,toolName:F$1},created:F}}})});var lU$=L(()=>{gU$();hU$();uU$();cU$()});var U$1=v((mU$)=>{Object.defineProperty(mU$,"__esModule",{value:!0});mU$.kvPrefix=mU$.KvWatchInclude=void 0;mU$.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};mU$.kvPrefix="KV_"});var ZB$=v((eU$)=>{Object.defineProperty(eU$,"__esModule",{value:!0});eU$.KvStatusImpl=eU$.Bucket=eU$.Kvm=eU$.kvOperationHdr=void 0;eU$.Base64KeyCodec=CT4;eU$.NoopKvCodecs=B$1;eU$.defaultBucketOpts=pU$;eU$.validateKey=nU$;eU$.validateSearchKey=tU$;eU$.hasWildcards=oU$;eU$.validateBucket=gJ0;var t5=KG(),F5=NQ0(),n5=U$1();function CT4(){let $=(Z,Q)=>{let X=[];for(let Y of Z.split("."))switch(Y){case">":case"*":X.push(Y);break;default:X.push(Q(Y));break}return X.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function B$1(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function pU$(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:B$1(),storage:F5.StorageType.File}}eU$.kvOperationHdr="KV-Operation";var iU$="$KV",_T4=/^[-/=.\w]+$/,vT4=/^[-/=.>*\w]+$/,xT4=/^[-\w]+$/;function nU$($){if($.startsWith(".")||$.endsWith(".")||!_T4.test($))throw Error(`invalid key: ${$}`)}function tU$($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!vT4.test($))throw Error(`invalid key: ${$}`)}function oU$($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),Q=!1;for(let X=0;X<Z.length;X++)switch(Z[X]){case"*":Q=!0;break;case">":if(X!==Z.length-1)throw Error(`invalid key: ${$}`);Q=!0;break;default:}return Q}function gJ0($){if(!xT4.test($))throw Error(`invalid bucket name: ${$}`)}class rU${js;constructor($){this.js=(0,F5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:Q,min:X}=this.js.nc.features.get(t5.Feature.JS_KV);if(!Q)return Promise.reject(Error(`kv is only supported on servers ${X} or better`));if(Z.bindOnly)return mh.bind(this.js,$,Z);return mh.create(this.js,$,Z)}list(){let $=(Q)=>{let Y=Q.streams.filter((J)=>{return J.config.name.startsWith(n5.kvPrefix)});Y.forEach((J)=>{J.config.sealed=J.config.sealed||!1,J.config.deny_delete=J.config.deny_delete||!1,J.config.deny_purge=J.config.deny_purge||!1,J.config.allow_rollup_hdrs=J.config.allow_rollup_hdrs||!1});let G="";if(Y.length)G=this.js.nc.info?.cluster??"";return Y.map((J)=>{return new hJ0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new F5.ListerImpl(Z,$,this.js)}}eU$.Kvm=rU$;class mh{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,Q){gJ0($),this.js=Z,this.jsm=Q,this.bucket=$,this.prefix=iU$,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,Q={}){gJ0(Z);let X=await $.jetstreamManager(),Y=new mh(Z,$,X);return await Y.init(Q),Y}static async bind($,Z,Q={}){let X=$.getOptions()?.checkAPI||Q.bindOnly===!1,Y=await $.jetstreamManager(X),G={config:{allow_direct:Q.allow_direct}};gJ0(Z);let J=new mh(Z,$,Y);return G.config.name=Q.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=Q.codec||B$1(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(pU$(),$);this.codec=Z.codec;let Q={};if(this.stream=Q.name=$.streamName??this.bucketName(),Q.retention=F5.RetentionPolicy.Limits,Q.max_msgs_per_subject=Z.history,Z.max_bytes)Q.max_bytes=Z.max_bytes;if(Q.max_msg_size=Z.maxValueSize,Q.storage=Z.storage,$.placement)Q.placement=$.placement;if($.republish)Q.republish=$.republish;if($.description)Q.description=$.description;if($.markerTTL)Q.allow_msg_ttl=!0,Q.subject_delete_marker_ttl=(0,t5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(n5.kvPrefix))H.name=`${n5.kvPrefix}${H.name}`;Q.mirror=H,Q.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let N=Object.assign({},F),U=N.name.startsWith(n5.kvPrefix)?N.name.substring(n5.kvPrefix.length):N.name;if(!N.name.startsWith(n5.kvPrefix))N.name=`${n5.kvPrefix}${N.name}`;if(!F.external&&U!==this.bucket)N.subject_transforms=[{src:`$KV.${U}.>`,dest:`$KV.${this.bucket}.>`}];return N});Q.sources=H,Q.subjects=[this.subjectForBucket()]}else Q.subjects=[this.subjectForBucket()];if($.metadata)Q.metadata=$.metadata;if(typeof $.compression==="boolean")Q.compression=$.compression?F5.StoreCompression.S2:F5.StoreCompression.None;let X=this.js.nc,Y=X.getServerVersion(),G=Y?(0,t5.compare)(Y,(0,t5.parseSemVer)("2.7.2"))>=0:!1;Q.discard=G?F5.DiscardPolicy.New:F5.DiscardPolicy.Old;let{ok:J,min:K}=X.features.get(t5.Feature.JS_ALLOW_DIRECT);if(!J&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:J,Q.allow_direct=$.allow_direct,this.direct=Q.allow_direct,Q.num_replicas=Z.replicas,Z.ttl)Q.max_age=(0,t5.nanos)(Z.ttl);Q.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(Q.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(Q);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let Q=Z.name;if(Q.startsWith(n5.kvPrefix))Q=Q.substring(n5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let X=Z.name.substring(n5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${X}`,this.editPrefix=`${Z.external.api}.$KV.${Q}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${n5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let Q=[];if(Z){if(this.useJsPrefix)Q.push(this.js.apiPrefix);if(this.editPrefix!=="")Q.push(this.editPrefix);else Q.push(this.prefix)}else if(this.prefix)Q.push(this.prefix);return Q.push($),Q.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${iU$}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.encode(Q));break}return Z.join(".")}decodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.decode(Q));break}return Z.join(".")}validateKey=nU$;validateSearchKey=tU$;hasWildcards=oU$;close(){return Promise.resolve()}dataLen($,Z){let Q=Z?Z.get(F5.JsHeaders.MessageSizeHdr)||"":"";if(Q!=="")return parseInt(Q,10);return $.length}smToEntry($){return new aU$(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new sU$(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,Q){let X;try{let G={previousSeq:0},J=await this._put($,Z,G,Q);return Promise.resolve(J)}catch(G){if(X=G,G instanceof F5.JetStreamApiError){let J=G;if(J.code!==F5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==F5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(G)}}let Y=0;try{let G=await this.get($);if(G?.operation==="DEL"||G?.operation==="PURGE")return Y=G!==null?G.revision:0,this._put($,Z,{previousSeq:Y},Q);else return Promise.reject(X)}catch(G){return Promise.reject(G)}}update($,Z,Q,X){if(Q<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:Q,timeout:X})}async _put($,Z,Q={},X){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:Q?.timeout};if(Q.previousSeq!==void 0){let J=(0,t5.headers)();G.headers=J,J.set(F5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`)}if(X)(G.headers||(0,t5.headers)()).set(F5.PubHeaders.MessageTTL,X);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,Q={}){return this._put($,Z,Q)}async get($,Z){let Q=this.encodeKey($);this.validateKey(Q);let X={last_by_subj:this.subjectForKey(Q)};if(Z&&Z.revision>0)X={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),X);else Y=await this.jsm.streams.getMessage(this.bucketName(),X);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==Q)return null;return G}catch(G){throw G}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],Q=await this.history({key:">"});await(async()=>{for await(let J of Q)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),Q.stop();let X=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=X)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),G=await Promise.all(Y);return G.unshift({success:!0,purged:0}),G.reduce((J,K)=>{return J.purged+=K.purged,J})}async _deleteOrPurge($,Z,Q){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,Q);let X=await this.keys($),Y=[];for await(let G of X)if(Y.push(this._doDeleteOrPurge(G,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,Q){let X=this.encodeKey($);this.validateKey(X);let Y=(0,t5.headers)();if(Y.set(eU$.kvOperationHdr,Z),Z==="PURGE"){let G=Q;if(Y.set(F5.JsHeaders.RollupHdr,F5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(F5.PubHeaders.MessageTTL,`${G.ttl}`)}if(Q?.previousSeq)Y.set(F5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`);await this.js.publish(this.subjectForKey(X,!0),t5.Empty,{headers:Y})}_buildCC($,Z,Q={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=F5.DeliverPolicy.LastPerSubject;if(Z===n5.KvWatchInclude.AllHistory)G=F5.DeliverPolicy.All;if(Z===n5.KvWatchInclude.UpdatesOnly)G=F5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:F5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,t5.nanos)(5000)},Q)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",Q={};Q.headers_only=$.headers_only||!1;let X=new t5.QueuedIteratorImpl,Y=()=>{X.stop()},G=this._buildCC(Z,n5.KvWatchInclude.AllHistory,Q),J=await this.js.consumers.getPushConsumer(this.stream,G);if(X._data=J,(await J.info(!0)).num_pending===0)return X.push(Y),X;let W=await J.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(X.push(F),X.received++,H.info.pending===0)X.push(Y)}});return W.closed().then(()=>{X.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":X.push(()=>{X.stop()});break}})().then(),X.iterClosed.then(()=>{W.stop()}),X}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(t5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",Q=new t5.QueuedIteratorImpl,X={};X.headers_only=$.headers_only||!1;let Y=n5.KvWatchInclude.LastValue;if($.include===n5.KvWatchInclude.AllHistory)Y=n5.KvWatchInclude.AllHistory;else if($.include===n5.KvWatchInclude.UpdatesOnly)Y=n5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,X);if(J.name=`KV_WATCHER_${t5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=F5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,F=Y===n5.KvWatchInclude.UpdatesOnly||H===0;Q._data=K;let N=0,U=await K.consume({callback:(B)=>{if(!F)N++,F=N>=H;let O=this.jmToWatchEntry(B,F);if(G&&O.operation==="DEL")return;Q.push(O),Q.received++}});return Q.iterClosed.then(()=>{U.stop()}),U.closed().then(()=>{Q.push(()=>{Q.stop()})}),Q}async keys($=">"){let Z=new t5.QueuedIteratorImpl,Q=this._buildCC($,n5.KvWatchInclude.LastValue,{headers_only:!0}),X=await this.js.consumers.getPushConsumer(this.stream,Q);if((await X.info()).num_pending===0)return Z.stop(),Z;Z._data=X;let G=await X.consume({callback:(J)=>{let K=J.headers?.get(eU$.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(J.subject.substring(this.prefixLen));Z.push(W)}if(J.info.pending===0)G.stop()}});return(async()=>{for await(let J of G.status())switch(J.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),G.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{G.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",Q=this.bucketName(),X=await this.jsm.streams.info(Q);return new hJ0(X,Z)}}eU$.Bucket=mh;class hJ0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(n5.kvPrefix)?this.si.config.name.substring(n5.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,t5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,t5.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==F5.StoreCompression.None;return!1}}eU$.KvStatusImpl=hJ0;class aU${bucket;sm;prefixLen;codec;constructor($,Z,Q,X){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.codec=X}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(eU$.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(F5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(t5.TD.decode(this.value),$)}string(){return t5.TD.decode(this.value)}}class sU${bucket;sm;prefixLen;update;codec;constructor($,Z,Q,X,Y){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.update=X,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,t5.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(eU$.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(F5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(t5.TD.decode(this.value),$)}string(){return t5.TD.decode(this.value)}}});var O$1=v((AK)=>{Object.defineProperty(AK,"__esModule",{value:!0});AK.validateKey=AK.validateBucket=AK.NoopKvCodecs=AK.Kvm=AK.defaultBucketOpts=AK.Bucket=AK.Base64KeyCodec=AK.KvWatchInclude=AK.kvPrefix=void 0;var QB$=U$1();Object.defineProperty(AK,"kvPrefix",{enumerable:!0,get:function(){return QB$.kvPrefix}});Object.defineProperty(AK,"KvWatchInclude",{enumerable:!0,get:function(){return QB$.KvWatchInclude}});var Lz=ZB$();Object.defineProperty(AK,"Base64KeyCodec",{enumerable:!0,get:function(){return Lz.Base64KeyCodec}});Object.defineProperty(AK,"Bucket",{enumerable:!0,get:function(){return Lz.Bucket}});Object.defineProperty(AK,"defaultBucketOpts",{enumerable:!0,get:function(){return Lz.defaultBucketOpts}});Object.defineProperty(AK,"Kvm",{enumerable:!0,get:function(){return Lz.Kvm}});Object.defineProperty(AK,"NoopKvCodecs",{enumerable:!0,get:function(){return Lz.NoopKvCodecs}});Object.defineProperty(AK,"validateBucket",{enumerable:!0,get:function(){return Lz.validateBucket}});Object.defineProperty(AK,"validateKey",{enumerable:!0,get:function(){return Lz.validateKey}})});var L$1=v((SL)=>{Object.defineProperty(SL,"__esModule",{value:!0});SL.NoopKvCodecs=SL.Kvm=SL.defaultBucketOpts=SL.Bucket=SL.Base64KeyCodec=SL.KvWatchInclude=void 0;var iT4=O$1();Object.defineProperty(SL,"KvWatchInclude",{enumerable:!0,get:function(){return iT4.KvWatchInclude}});var po=O$1();Object.defineProperty(SL,"Base64KeyCodec",{enumerable:!0,get:function(){return po.Base64KeyCodec}});Object.defineProperty(SL,"Bucket",{enumerable:!0,get:function(){return po.Bucket}});Object.defineProperty(SL,"defaultBucketOpts",{enumerable:!0,get:function(){return po.defaultBucketOpts}});Object.defineProperty(SL,"Kvm",{enumerable:!0,get:function(){return po.Kvm}});Object.defineProperty(SL,"NoopKvCodecs",{enumerable:!0,get:function(){return po.NoopKvCodecs}})});function uJ0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(Q)=>$.encode(JSON.stringify(Q)),decode:(Q)=>JSON.parse(Z.decode(Q))}}class D$1{options;kv=null;codec=uJ0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new YB$.Kvm($).create(nT4,{storage:XB$.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let Q=await this.kv.get(`${$}.${Z}`);if(!Q?.value?.length)return null;if(Q.operation==="DEL"||Q.operation==="PURGE")return null;return this.codec.decode(Q.value)}catch{return null}}async set($,Z,Q){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(Q))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(Q)=>{try{await this.kv.delete(`${Q}.${$}`)}catch{}}))}teardown(){this.kv=null}}function tT4($,Z,Q){if(Q<=0)return!0;if($===void 0)return!0;return Z-$>=Q}function GB$($){let Z=["tools","resources","prompts"];for(let Q of Z){let X=`${Q}:${$}`;lJ0.delete(X),to.delete(X)}}function cJ0($){return $ instanceof j1&&$.code===V1.MethodNotFound}function oT4($){return $ instanceof j1&&$.code===-32000&&/connection closed/i.test($.message)}async function _L($,Z,Q,X,Y,G=0){if(!X)try{return await Q()}catch(H){if(cJ0(H))return[];return no.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await X.get($,Z);if(K===null)try{let H=await Q();return X.set($,Z,H).catch(()=>{}),lJ0.set(J,Date.now()),no.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(cJ0(H))return X.set($,Z,[]).catch(()=>{}),[];return no.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(no.add(1,{type:$,outcome:"hit",stage:"hit"}),tT4(lJ0.get(J),Date.now(),G)&&!to.has(J)){to.add(J),lJ0.set(J,Date.now());let H=Q().then((F)=>X.set($,Z,F)).catch((F)=>{if(cJ0(F)||oT4(F)){if(cJ0(F))X.set($,Z,[]).catch(()=>{});return}no.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>to.delete(J));Y?.(H)}return K}function w$1($){JB$=$}function O9(){return JB$}var XB$,YB$,no,nT4="DECOCMS_MCP_LISTS",to,lJ0,CL=30000,JB$=null;var GY=L(()=>{U9();x6();XB$=k(Jj(),1),YB$=k(L$1(),1),no=P$.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});to=new Set;P$.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(to.size));lJ0=new Map});async function E$1($,Z,Q){let X=new AbortController,Y,G=new Promise((K,W)=>{Y=setTimeout(()=>{X.abort(),W(new KB$($.id,Q))},Q)}),J=(async()=>{let K=await P5($,Z,!0);try{return(await K.listTools(void 0,{timeout:Q,signal:X.signal})).tools}finally{await K.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,G])}finally{if(Y)clearTimeout(Y)}}var KB$;var WB$=L(()=>{oo();KB$=class KB$ extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});function mJ0($){return(Z)=>{if(Z instanceof j1&&Z.code===V1.MethodNotFound)return $;throw Z}}var HB$=L(()=>{U9()});function dJ0($,Z,Q){let X=vL($,Z,Q,O9()??void 0),Y=zj(X,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:rT4,toolCallTimeoutMs:zg});Y.server.setRequestHandler(RO,async()=>{return await X.listResources().catch(mJ0({resources:[]}))}),Y.server.setRequestHandler(IO,async()=>{return await X.listResourceTemplates().catch(mJ0({resourceTemplates:[]}))}),Y.server.setRequestHandler(qO,async()=>{return await X.listPrompts().catch(mJ0({prompts:[]}))});let G=Y.close.bind(Y);return Y.close=async()=>{await G(),await X.close().catch(()=>{})},Y}var rT4;var FB$=L(()=>{JX();U9();ro();GY();HB$();rT4={tools:{},resources:{},prompts:{}}});var cN=L(()=>{oo();WB$();FB$()});function ao($,Z,Q){if(Z.some((X)=>X!=="*"&&X.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${Q}_self`}}function so($,Z){let Q=new Map;for(let X of Z){if(X==="*")continue;let[Y,G]=bG0(X);if(!aT4.has(G))continue;let J=Bo(Y,$);if(typeof J!=="object"||J===null||!("value"in J))continue;let K=J.value;if(typeof K!=="string")continue;Q.set(`${K}:${G}`,{targetConnectionId:K,scope:G})}return[...Q.values()]}async function eo($,Z,Q,X){for(let J of Z){if(J==="*")continue;let[K]=bG0(J),W=Bo(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=E3$($,Z),G=`${Q}_self`;for(let J of Y){if(J===G)continue;let K=await X.storage.connections.findById(J);if(!K||K.organization_id!==Q)throw Error(`Referenced connection not found: ${J}`);try{await X.access.check(J)}catch(W){throw Error(`Access denied to referenced connection: ${J}. ${W.message}`)}}}var aT4;var j$1=L(()=>{A01();wY0();aT4=new Set([LY0,DY0])});import{z as NB$}from"zod";var sT4,eT4,z$1;var UB$=L(()=>{f4();k0();R$();GY();cN();j$1();ho();pW();sT4=NB$.object({data:fQ0.describe("Data for the new connection (id is auto-generated if not provided)")}),eT4=NB$.object({item:YQ.describe("The created connection entity")}),z$1=c({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:sT4,outputSchema:eT4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create connection");let Y={...$.data,organization_id:Q.id,created_by:X};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===Q.id)throw Error("Connection already exists in organization")}if(Y.connection_type==="VIRTUAL"){let N=cy(Y.connection_url);if(!N)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let U=await Z.storage.virtualMcps.findById(N);if(!U)throw Error(`Virtual MCP not found: ${N}`);if(U.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=ly(N)}if(Y.connection_type==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=await ML({id:`pending-${Date.now()}`,title:Y.title,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:Y.connection_token,connection_headers:Y.connection_headers}).catch(()=>null),J=G?.tools?.length?G.tools:null,K=G?.scopes?.length?G.scopes:Y.configuration_scopes??null,W=Y.configuration_state??null;if(W&&K?.length)ao(W,K,Q.id),await eo(W,K,Q.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?so(W,K):[];if(F.length>0){let N;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:H.id,createdBy:X,grants:F});let{plaintextToken:U,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id});N=B.id,await(await P5(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:H.id,token:U}}})}catch(U){if(N)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id,tokenId:N});throw await Z.storage.connections.delete(H.id),U}}if(J)O9()?.set("tools",H.id,J).catch(()=>{});return h1.capture({distinctId:X,event:"connection_created",groups:{organization:Q.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:Q.id,tools_count:J?.length??0}}),{item:H}}})});import{z as xJ}from"zod/v4";import{z as BB$}from"zod/v4";import{z as iJ0}from"zod/v4";import{z as LH}from"zod/v4";import{z as X24}from"zod/v4";import{z as Dz}from"zod/v4";import{z as DH}from"zod/v4";import{z as oZ}from"zod/v4";import{z as OB$}from"zod/v4";import{z as tJ0}from"zod/v4";import{z as q24}from"zod/v4";import{z as LB$}from"zod/v4";import{z as pJ0}from"zod/v4";import{z as f24}from"zod/v4";function $r($,Z){if($===Z)return!0;if($==null||Z==null)return $===Z;if(typeof $!==typeof Z)return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((Q,X)=>$r(Q,Z[X]))}if(typeof $==="object"&&typeof Z==="object"){let Q=Object.keys($),X=Object.keys(Z);if(Q.length!==X.length)return!1;return Q.every((Y)=>X.includes(Y)&&$r($[Y],Z[Y]))}return!1}function T24(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((Q)=>{if(Z.some((Y)=>$r(Q,Y)))return!1;return Z.push(Q),!0})}}function nJ0($,Z){return $.safeParse(Z).success}function M7($){if(typeof $==="boolean")return $?xJ.any():xJ.never();let Z={};for(let Y of h24)Y.apply(Z,$);let Q=[];if(Z.string!==!1)Q.push(Z.string||xJ.string());if(Z.number!==!1)Q.push(Z.number||xJ.number());if(Z.boolean!==!1)Q.push(Z.boolean||xJ.boolean());if(Z.null!==!1)Q.push(Z.null||xJ.null());if(Z.array!==!1)Q.push(Z.array||xJ.array(xJ.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)Q.push(Z.tuple);if(Z.object!==!1)if(Z.object)Q.push(Z.object);else{let Y=xJ.custom((G)=>{return typeof G==="object"&&G!==null&&!Array.isArray(G)},"Must be an object, not an array");Q.push(Y)}if(Z.file!==!1&&Z.file!==void 0)Q.push(Z.file);let X;if(Q.length===0)X=xJ.never();else if(Q.length===1)X=Q[0];else if(!Object.keys($).some((G)=>G!=="$schema"&&G!=="title"&&G!=="description"))X=xJ.any();else X=xJ.union(Q);for(let Y of u24)X=Y.apply(X,$);return X}var $24=class{apply($,Z){if(!Z.type)return;let Q=Array.isArray(Z.type)?Z.type:[Z.type],X=new Set(Q);if(!X.has("string"))$.string=!1;if(!X.has("number")&&!X.has("integer"))$.number=!1;if(!X.has("boolean"))$.boolean=!1;if(!X.has("null"))$.null=!1;if(!X.has("array"))$.array=!1;if(!X.has("object"))$.object=!1;if(X.has("integer")&&$.number!==!1){let Y=$.number||BB$.number();if(Y instanceof BB$.ZodNumber)$.number=Y.int()}}},Z24=class{apply($,Z){if(Z.const===void 0)return;let Q=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof Q==="string")$.string=iJ0.literal(Q);else if(typeof Q==="number")$.number=iJ0.literal(Q);else if(typeof Q==="boolean")$.boolean=iJ0.literal(Q);else if(Q===null)$.null=iJ0.null();else if(Array.isArray(Q))$.array=void 0;else if(typeof Q==="object")$.object=void 0}},Q24=class{apply($,Z){if(!Z.enum)return;if(Z.enum.length===0){if(!Z.type)$.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1;return}let Q={string:Z.enum.filter((X)=>typeof X==="string"),number:Z.enum.filter((X)=>typeof X==="number"),boolean:Z.enum.filter((X)=>typeof X==="boolean"),null:Z.enum.filter((X)=>X===null),array:Z.enum.filter((X)=>Array.isArray(X)),object:Z.enum.filter((X)=>typeof X==="object"&&X!==null&&!Array.isArray(X))};$.string=this.createTypeSchema(Q.string,"string"),$.number=this.createTypeSchema(Q.number,"number"),$.boolean=this.createTypeSchema(Q.boolean,"boolean"),$.null=Q.null.length>0?LH.null():!1,$.array=Q.array.length>0?void 0:!1,$.object=Q.object.length>0?void 0:!1}createTypeSchema($,Z){if($.length===0)return!1;if($.length===1)return LH.literal($[0]);if(Z==="string")return LH.enum($);if(Z==="number"){let[Q,X,...Y]=$;return LH.union([LH.literal(Q),LH.literal(X),...Y.map((G)=>LH.literal(G))])}if(Z==="boolean")return LH.union([LH.literal(!0),LH.literal(!1)]);return!1}},Y24=class{apply($,Z){let Q=Z;if(Q.type==="string"&&Q.format==="binary"&&Q.contentEncoding==="binary"){let X=X24.file();if(Q.minLength!==void 0)X=X.min(Q.minLength);if(Q.maxLength!==void 0)X=X.max(Q.maxLength);if(Q.contentMediaType!==void 0)X=X.mime(Q.contentMediaType);$.file=X,$.string=!1}}},G24=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minLength!==void 0||Q.maxLength!==void 0||Q.pattern!==void 0)){if($.string===void 0)$.string=Dz.string()}}},J24=class{apply($,Z){let Q=Z;if(Q.minLength===void 0)return;if($.string!==!1){let X=$.string||Dz.string();if(X instanceof Dz.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length>=Q.minLength},{message:`String must be at least ${Q.minLength} characters long`})}}},K24=class{apply($,Z){let Q=Z;if(Q.maxLength===void 0)return;if($.string!==!1){let X=$.string||Dz.string();if(X instanceof Dz.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length<=Q.maxLength},{message:`String must be at most ${Q.maxLength} characters long`})}}},W24=class{apply($,Z){let Q=Z;if(!Q.pattern)return;if($.string!==!1){let X=$.string||Dz.string();if(X instanceof Dz.ZodString){let Y=new RegExp(Q.pattern);$.string=X.regex(Y)}}}},H24=class{apply($,Z){let Q=Z;if(Q.minimum===void 0)return;if($.number!==!1){let X=$.number||DH.number();if(X instanceof DH.ZodNumber)$.number=X.min(Q.minimum)}}},F24=class{apply($,Z){let Q=Z;if(Q.maximum===void 0)return;if($.number!==!1){let X=$.number||DH.number();if(X instanceof DH.ZodNumber)$.number=X.max(Q.maximum)}}},N24=class{apply($,Z){let Q=Z;if(Q.exclusiveMinimum===void 0)return;if($.number!==!1){let X=$.number||DH.number();if(X instanceof DH.ZodNumber)if(typeof Q.exclusiveMinimum==="number")$.number=X.gt(Q.exclusiveMinimum);else $.number=!1}}},U24=class{apply($,Z){let Q=Z;if(Q.exclusiveMaximum===void 0)return;if($.number!==!1){let X=$.number||DH.number();if(X instanceof DH.ZodNumber)if(typeof Q.exclusiveMaximum==="number")$.number=X.lt(Q.exclusiveMaximum);else $.number=!1}}},B24=class{apply($,Z){let Q=Z;if(Q.multipleOf===void 0)return;if($.number!==!1){let X=$.number||DH.number();if(X instanceof DH.ZodNumber)$.number=X.refine((Y)=>{if(Q.multipleOf===0)return!1;let G=Y/Q.multipleOf,J=Math.round(G),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(Q.multipleOf)*Number.EPSILON*10);return Math.abs(G-J)<=K/Math.abs(Q.multipleOf)},{message:`Must be a multiple of ${Q.multipleOf}`})}}},O24=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minItems!==void 0||Q.maxItems!==void 0||Q.items!==void 0||Q.prefixItems!==void 0)){if($.array===void 0)$.array=oZ.array(oZ.any())}}},L24=class{apply($,Z){let Q=Z;if(Q.minItems===void 0)return;if($.array!==!1)$.array=($.array||oZ.array(oZ.any())).min(Q.minItems)}},D24=class{apply($,Z){let Q=Z;if(Q.maxItems===void 0)return;if($.array!==!1)$.array=($.array||oZ.array(oZ.any())).max(Q.maxItems)}},w24=class{apply($,Z){let Q=Z;if($.array===!1)return;if(Array.isArray(Q.items))$.array=$.array||oZ.array(oZ.any());else if(Q.items&&typeof Q.items!=="boolean"&&!Q.prefixItems){let X=M7(Q.items),Y=oZ.array(X);if($.array&&$.array instanceof oZ.ZodArray){let G=$.array._def;if(G.checks)G.checks.forEach((J)=>{if(J._zod&&J._zod.def){let K=J._zod.def;if(K.check==="min_length"&&K.minimum!==void 0)Y=Y.min(K.minimum);else if(K.check==="max_length"&&K.maximum!==void 0)Y=Y.max(K.maximum)}})}$.array=Y}else if(typeof Q.items==="boolean"&&Q.items===!1)if(!Q.prefixItems)$.array=oZ.array(oZ.any()).max(0);else $.array=$.array||oZ.array(oZ.any());else if(typeof Q.items==="boolean"&&Q.items===!0)$.array=$.array||oZ.array(oZ.any());else if(Q.prefixItems)$.array=$.array||oZ.array(oZ.any())}},E24=class{apply($,Z){if(Z.type!=="array")return;let Q=Z;if(!Array.isArray(Q.items))return;if($.array===!1)return;let X=Q.items.map((G)=>M7(G)),Y;if(X.length===0)Y=OB$.tuple([]);else Y=OB$.tuple(X);if(Q.minItems!==void 0&&Q.minItems>X.length)Y=!1;if(Q.maxItems!==void 0&&Q.maxItems<X.length)Y=!1;$.tuple=Y,$.array=!1}},j24=class{apply($,Z){let Q=Z;if($.object===!1)return;if(Q.properties||Q.required||Q.additionalProperties!==void 0)$.object=$.object||tJ0.object({}).passthrough()}},z24=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.maxProperties!==void 0||Q.minProperties!==void 0)){if($.object===void 0)$.object=tJ0.object({}).passthrough()}}},P24=class{apply($,Z){let Q=Z;if(Q.maxProperties===void 0)return;if($.object!==!1){let X=$.object||tJ0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length<=Q.maxProperties,{message:`Object must have at most ${Q.maxProperties} properties`})}}},A24=class{apply($,Z){let Q=Z;if(Q.minProperties===void 0)return;if($.object!==!1){let X=$.object||tJ0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length>=Q.minProperties,{message:`Object must have at least ${Q.minProperties} properties`})}}},R24=class{apply($,Z){if(!Z.not)return $;let Q=M7(Z.not);return $.refine((X)=>!nJ0(Q,X),{message:"Value must not match the 'not' schema"})}},I24=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(T24(),{message:"Array items must be unique"})}},M24=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((X)=>M7(X)).reduce((X,Y)=>q24.intersection(X,Y),$)}},V24=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let Q=Z.anyOf.length===1?M7(Z.anyOf[0]):LB$.union([M7(Z.anyOf[0]),M7(Z.anyOf[1]),...Z.anyOf.slice(2).map((X)=>M7(X))]);return LB$.intersection($,Q)}},k24=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let Q=Z.oneOf.map((X)=>M7(X));return $.refine((X)=>{let Y=0;for(let G of Q)if(G.safeParse(X).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},S24=class{apply($,Z){let Q=Z;if(Q.prefixItems&&Array.isArray(Q.prefixItems)){let Y=Q.prefixItems.map((G)=>M7(G));return $.refine((G)=>{if(!Array.isArray(G))return!0;for(let J=0;J<Math.min(G.length,Y.length);J++)if(!nJ0(Y[J],G[J]))return!1;if(G.length>Y.length){if(typeof Q.items==="boolean"&&Q.items===!1)return!1;else if(Q.items&&typeof Q.items==="object"&&!Array.isArray(Q.items)){let J=M7(Q.items);for(let K=Y.length;K<G.length;K++)if(!nJ0(J,G[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},C24=class{apply($,Z){let Q=Z;if(!Q.properties&&!Q.required&&Q.additionalProperties!==!1)return $;if($ instanceof pJ0.ZodObject||$ instanceof pJ0.ZodRecord){let X={};if(Q.properties){for(let[Y,G]of Object.entries(Q.properties))if(G!==void 0)X[Y]=M7(G)}if(Q.required&&Array.isArray(Q.required)){let Y=new Set(Q.required);for(let G of Object.keys(X))if(!Y.has(G))X[G]=X[G].optional()}else for(let Y of Object.keys(X))X[Y]=X[Y].optional();if(Q.additionalProperties===!1)return pJ0.object(X);else return pJ0.object(X).passthrough()}return $.refine((X)=>{if(typeof X!=="object"||X===null||Array.isArray(X))return!0;if(Q.properties){for(let[Y,G]of Object.entries(Q.properties))if(G!==void 0){if(Object.getOwnPropertyDescriptor(X,Y)!==void 0){if(!M7(G).safeParse(X[Y]).success)return!1}}}if(Q.required&&Array.isArray(Q.required)){for(let Y of Q.required)if(Object.getOwnPropertyDescriptor(X,Y)===void 0)return!1}if(Q.additionalProperties===!1&&Q.properties){let Y=new Set(Object.keys(Q.properties));for(let G in X)if(!Y.has(G))return!1}return!0},{message:"Object constraints validation failed"})}},_24=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let Q=Z.enum.filter((X)=>Array.isArray(X)||typeof X==="object"&&X!==null);if(Q.length===0)return $;return $.refine((X)=>{if(typeof X!=="object"||X===null)return!0;return Q.some((Y)=>$r(X,Y))},{message:"Value must match one of the enum values"})}},v24=class{apply($,Z){if(Z.const===void 0)return $;let Q=Z.const;if(typeof Q!=="object"||Q===null)return $;return $.refine((X)=>$r(X,Q),{message:"Value must equal the const value"})}},x24=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},b24=class{apply($,Z){var Q;let X=Z;if(!((Q=X.required)==null?void 0:Q.includes("__proto__"))||Z.type!==void 0)return $;return f24.any().refine((Y)=>this.validateRequired(Y,X.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((Q)=>Object.prototype.hasOwnProperty.call($,Q))}},y24=class{apply($,Z){var Q;let X=Z;if(X.contains===void 0)return $;let Y=M7(X.contains),G=(Q=X.minContains)!=null?Q:1,J=X.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(nJ0(Y,H))W++;if(W<G)return!1;if(J!==void 0&&W>J)return!1;return!0},{message:"Array must contain required items matching the schema"})}},g24=class{apply($,Z){let{default:Q}=Z;if(Q===void 0)return $;if(!$.safeParse(Q).success)return $;return $.default(Q)}},h24,u24;var DB$=L(()=>{h24=[new Z24,new Q24,new $24,new Y24,new G24,new O24,new z24,new J24,new K24,new W24,new H24,new F24,new N24,new U24,new B24,new E24,new L24,new D24,new w24,new P24,new A24,new j24],u24=[new b24,new _24,new v24,new M24,new V24,new k24,new S24,new C24,new y24,new R24,new I24,new g24,new x24]});class P$1{constructor($){this._url=$}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{this._socket=new WebSocket(this._url,c24),this._socket.onerror=(Q)=>{let X="error"in Q?Q.error:Error(`WebSocket error: ${JSON.stringify(Q)}`);Z(X),this.onerror?.(X)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(Q)=>{let X;try{X=NG.parse(JSON.parse(Q.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(X)}})}async close(){this._socket?.close()}send($){return new Promise((Z,Q)=>{if(!this._socket){Q(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var c24="mcp";var wB$=L(()=>{U9()});function l24($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let Q=Z?.params?.protocolVersion;if(!Q)return null;return{type:"emit",message:{result:{protocolVersion:Q,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Z.jsonrpc??"2.0",id:Z.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var oJ0;var A$1=L(()=>{Ng();oJ0=class oJ0 extends eW{constructor($,Z){super($,Z)}send($,Z){let Q=l24($);if(Q?.type==="emit")return this.onmessage?.(Q.message),Promise.resolve();if(Q?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var EB$,jB$=async($,Z,Q)=>{let X=m24($.connection,Z,Q);if(!X)throw Error("Unknown MCP connection type");let Y=new EB$({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(X),{client:Y}},m24=($,Z,Q)=>{if($.type==="Websocket")return new P$1(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...Q??{},..."headers"in $?$.headers||{}:{}};if($.type==="SSE"){let G={requestInit:{headers:Y,signal:Z}};if($.token)G.eventSourceInit={fetch:(J,K)=>{return fetch(J,{...K,headers:{...Y,Accept:"text/event-stream"},signal:Z})}};return new _N(new URL($.url),G)}return new oJ0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var zB$=L(()=>{aW();dn();wB$();U9();JX();A$1();EB$=class EB$ extends p9{constructor($,Z){super($,{jsonSchemaValidator:z5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},Gn,Z)}}});function i24($,Z){if(wz.set($,Z),wz.size>d24){let Q=wz.keys().next().value;if(Q!==void 0)wz.delete(Q)}}function TB$($){let Z=(Q)=>{if("connection"in $)return jB$({connection:$.connection},void 0,Q);return $.client};return new Proxy({},{get(Q,X){if(X==="toJSON")return null;if(typeof X!=="string")throw Error("Name must be a string");if(X==="listTools")return K;async function Y(W,H=X){let F=$?.debugId?.(),N=F?{"x-trace-debug-id":F}:void 0,{client:U}=await Z(N),{structuredContent:B,isError:O,content:D}=await U.callTool({name:String(H),arguments:W});if(O){let E=D?.[0]?.text,j=typeof E==="string"?PB$(E):null,z=j?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(j.code,j.message,j.traceId):null;if(z)throw z;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(B??D)}`)}if(B!==void 0)return B;let w=D?.[0]?.text;return typeof w==="string"?PB$(w):void 0}async function G(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function J(){if(!("connection"in $))return G();let W=$.connection,H=JSON.stringify(W);try{if(!wz.has(H))i24(H,G());return await wz.get(H)}catch(F){console.error("Failed to list tools",F),wz.delete(H);return}}async function K(){return(await J()??[]).map((H)=>AB$(H,Y))}return Y.asTool=async()=>{let H=(await J()??[]).find((F)=>F.name===X);if(!H)throw Error(`Tool ${X} not found`);return AB$(H,Y)},Y}})}var PB$=($)=>{try{return JSON.parse($)}catch{return $}},d24=500,wz,AB$=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?M7($.inputSchema):void 0,outputSchema:$.outputSchema?M7($.outputSchema):void 0,execute:(Q)=>{return Z(Q.context,$.name)}}};var RB$=L(()=>{DB$();zB$();wz=new Map});function xL($){return TB$($)}var dh;var T$1=L(()=>{RB$();dh=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(Q)=>xL({connection:Q});if(Z==="forClient")return(Q)=>xL({client:Q});return globalThis[Z]}})});function rJ0($){return{isImplementedBy:(Z)=>{for(let Q of $){let X=typeof Q.name==="string"?new RegExp(`^${Q.name}$`):Q.name,Y=Z.find((G)=>X.test(G.name));if(!Y&&Q.opt)continue;if(!Y)return!1}return!0}}}var wH=($)=>{return{...rJ0($),forClient:(Z)=>{return xL({client:Z})},forConnection:(Z)=>{return xL({connection:Z})}}};var Ez=L(()=>{T$1()});import{z as o5}from"zod";var IB$,aJ0,qB$,sJ0,MB$,p24;var VB$=L(()=>{Ez();IB$=o5.object({specversion:o5.literal("1.0").describe("CloudEvents specification version"),id:o5.string().describe("Unique identifier for this event (UUID recommended)"),source:o5.string().describe("Connection ID of the event publisher"),type:o5.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:o5.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:o5.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:o5.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:o5.string().url().optional().describe("URI to the schema for the data attribute"),data:o5.unknown().optional().describe("Event payload (any JSON value)")}),aJ0=o5.object({events:o5.array(IB$).min(1).describe("Batch of CloudEvents to process")}),qB$=o5.object({success:o5.boolean().optional().describe("Whether this event was processed successfully"),error:o5.string().optional().describe("Error message for this event"),retryAfter:o5.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),sJ0=o5.object({success:o5.boolean().optional().describe("Batch success - applies to events not in results"),error:o5.string().optional().describe("Batch error message - applies to events not in results"),processedCount:o5.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:o5.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:o5.record(o5.string(),qB$).optional().describe("Per-event results keyed by event ID")}),MB$=[{name:"ON_EVENTS",inputSchema:aJ0,outputSchema:sJ0}],p24=wH(MB$)});import{z as r5}from"zod";var kB$,SB$,CB$,_B$,vB$,xB$,eJ0,R$1;var I$1=L(()=>{Ez();kB$=r5.object({type:r5.literal("string"),enum:r5.array(r5.string()).optional(),description:r5.string().optional()}),SB$=r5.object({type:r5.string(),description:r5.string(),paramsSchema:r5.record(r5.string(),kB$)}),CB$=r5.object({}),_B$=r5.object({triggers:r5.array(SB$)}),vB$=r5.object({type:r5.string(),params:r5.record(r5.string(),r5.string()),enabled:r5.boolean(),callbackUrl:r5.url().optional(),callbackToken:r5.string().min(1).optional()}),xB$=r5.object({success:r5.boolean()}),eJ0=[{name:"TRIGGER_LIST",inputSchema:CB$,outputSchema:_B$},{name:"TRIGGER_CONFIGURE",inputSchema:vB$,outputSchema:xB$}],R$1=wH(eJ0)});import{z as _$}from"zod";var n24,t24,o24,r24,a24,s24,e24,$R4,ZR4,QR4,XR4,YR4,jz;var Zr=L(()=>{n24=_$.object({prefix:_$.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:_$.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:_$.string().optional().describe("Token for pagination from previous response"),delimiter:_$.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),t24=_$.object({objects:_$.array(_$.object({key:_$.string().describe("Object key/path"),size:_$.number().describe("Object size in bytes"),lastModified:_$.string().describe("Last modified timestamp"),etag:_$.string().describe("Entity tag for the object")})),nextContinuationToken:_$.string().optional().describe("Token for fetching next page of results"),isTruncated:_$.boolean().describe("Whether there are more results available"),commonPrefixes:_$.array(_$.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),o24=_$.object({key:_$.string().describe("Object key/path to get metadata for")}),r24=_$.object({contentType:_$.string().optional().describe("MIME type of the object"),contentLength:_$.number().describe("Size of the object in bytes"),lastModified:_$.string().describe("Last modified timestamp"),etag:_$.string().describe("Entity tag for the object"),metadata:_$.record(_$.string(),_$.string()).optional().describe("Custom metadata key-value pairs")}),a24=_$.object({key:_$.string().describe("Object key/path to generate URL for"),expiresIn:_$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),s24=_$.object({url:_$.string().describe("Presigned URL for downloading the object"),expiresIn:_$.number().describe("Expiration time in seconds that was used")}),e24=_$.object({key:_$.string().describe("Object key/path for the upload"),expiresIn:_$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:_$.string().optional().describe("MIME type for the object being uploaded")}),$R4=_$.object({url:_$.string().describe("Presigned URL for uploading the object"),expiresIn:_$.number().describe("Expiration time in seconds that was used")}),ZR4=_$.object({key:_$.string().describe("Object key/path to delete")}),QR4=_$.object({success:_$.boolean().describe("Whether the deletion was successful"),key:_$.string().describe("The key that was deleted")}),XR4=_$.object({keys:_$.array(_$.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),YR4=_$.object({deleted:_$.array(_$.string()).describe("Array of successfully deleted keys"),errors:_$.array(_$.object({key:_$.string(),message:_$.string()})).describe("Array of errors for failed deletions")}),jz=[{name:"LIST_OBJECTS",inputSchema:n24,outputSchema:t24},{name:"GET_OBJECT_METADATA",inputSchema:o24,outputSchema:r24},{name:"GET_PRESIGNED_URL",inputSchema:a24,outputSchema:s24},{name:"PUT_PRESIGNED_URL",inputSchema:e24,outputSchema:$R4},{name:"DELETE_OBJECT",inputSchema:ZR4,outputSchema:QR4},{name:"DELETE_OBJECTS",inputSchema:XR4,outputSchema:YR4}]});import{z as R6}from"zod";var fB$,bB$,yB$,Qr,$30,Z30,Q30,X30,GR4;var q$1=L(()=>{Ez();fB$=R6.object({primary:R6.string().optional().describe("Primary brand color (hex)"),secondary:R6.string().optional().describe("Secondary brand color (hex)"),accent:R6.string().optional().describe("Accent / highlight color (hex)"),background:R6.string().optional().describe("Background color (hex)"),foreground:R6.string().optional().describe("Foreground / text color (hex)")}),bB$=R6.object({heading:R6.string().optional().describe("Font family for headings"),body:R6.string().optional().describe("Font family for body text"),code:R6.string().optional().describe("Font family for code / monospace")}),yB$=R6.object({logo:R6.string().optional().describe("Logo URL"),favicon:R6.string().optional().describe("Favicon URL"),ogImage:R6.string().optional().describe("Open Graph image URL")}),Qr=R6.object({id:R6.string(),name:R6.string().describe("Brand / company name"),domain:R6.string().optional().describe("Company domain (e.g. example.com)"),colors:fB$.optional().describe("Semantic color palette"),fonts:bB$.optional().describe("Font families by role"),assets:yB$.optional().describe("Visual identity assets"),overview:R6.string().optional().describe("Company overview / description"),tagline:R6.string().optional().describe("Brand tagline"),tone:R6.string().optional().describe("Tone of voice description"),metadata:R6.record(R6.string(),R6.unknown()).optional().describe("Extra design tokens and metadata")}),$30=R6.object({id:R6.string().optional().describe("Brand ID. Omit to get the default brand.")}),Z30=R6.object({}),Q30=R6.object({items:R6.array(Qr)}),X30=[{name:"BRAND_GET",inputSchema:$30,outputSchema:Qr},{name:"BRAND_LIST",inputSchema:Z30,outputSchema:Q30,opt:!0}],GR4=wH(X30)});var M$1=L(()=>{Ez();VB$();I$1();Zr();q$1()});import{z as R8}from"zod";function lN($){return R8.object({items:R8.array($).describe("Array of collection items"),totalCount:R8.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:R8.boolean().optional().describe("Whether there are more items available")})}function Yr($){return R8.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function WR4($){return R8.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function HR4($){return R8.object({item:$.describe("The created entity with generated id")})}function FR4($){return R8.object({id:R8.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function NR4($){return R8.object({item:$.describe("The updated entity")})}function Jr($){return R8.object({item:$.describe("The deleted entity")})}function G30($,Z,Q){let X=$.toUpperCase(),Y=Q?.readOnly??!1,G=[{name:`COLLECTION_${X}_LIST`,inputSchema:TK,outputSchema:lN(Z)},{name:`COLLECTION_${X}_GET`,inputSchema:Xr,outputSchema:Yr(Z)}];if(!Y)G.push({name:`COLLECTION_${X}_CREATE`,inputSchema:WR4(Z),outputSchema:HR4(Z),opt:!0},{name:`COLLECTION_${X}_UPDATE`,inputSchema:FR4(Z),outputSchema:NR4(Z),opt:!0},{name:`COLLECTION_${X}_DELETE`,inputSchema:Gr,outputSchema:Jr(Z),opt:!0});return G}var Y30,JR4,gB$,KR4,TK,Xr,Gr;var fJ=L(()=>{Y30=R8.object({id:R8.string().describe("Unique identifier for the entity"),title:R8.string().describe("Human-readable title for the entity"),description:R8.string().nullish().describe("Description of the entity"),created_at:R8.string().datetime(),updated_at:R8.string().datetime(),created_by:R8.string().optional(),updated_by:R8.string().optional()}),JR4=R8.object({field:R8.array(R8.string()),operator:R8.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:R8.unknown()}),gB$=R8.lazy(()=>R8.union([JR4,R8.object({operator:R8.enum(["and","or","not"]),conditions:R8.array(gB$)})])),KR4=R8.object({field:R8.array(R8.string()),direction:R8.enum(["asc","desc"]),nulls:R8.enum(["first","last"]).optional()}),TK=R8.object({where:gB$.optional().describe("Filter expression"),orderBy:R8.array(KR4).optional().describe("Sort expressions"),limit:R8.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:R8.number().int().min(0).optional().describe("Number of items to skip")});Xr=R8.object({id:R8.string().describe("ID of the entity to retrieve")});Gr=R8.object({id:R8.string().describe("ID of the entity to delete")})});import{z as ih}from"zod";var UR4,BR4,hB$;var uB$=L(()=>{fJ();UR4=Y30.extend({avatar:ih.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:ih.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:ih.string().describe("Virtual MCP ID to use for this assistant"),model:ih.object({id:ih.string().describe("Model ID"),connectionId:ih.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),BR4=G30("assistant",UR4),hB$=[...BR4]});import{z as U0}from"zod";var Kr,mN,lB$,OR4,LR4,mB$,DR4,wR4,ER4,jR4,zR4,PR4,dB$,AR4,TR4,RR4,IR4,qR4,MR4,VR4,kR4,SR4,CR4,pu5,_R4,nu5,cB$,vR4,xR4,J30,tu5;var iB$=L(()=>{Ez();fJ();Kr=U0.lazy(()=>U0.union([U0.null(),U0.string(),U0.number(),U0.boolean(),U0.record(U0.string(),Kr),U0.array(Kr)])),mN=U0.record(U0.string(),U0.record(U0.string(),Kr)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),lB$=U0.object({type:U0.literal("text"),text:U0.string().describe("The text content"),providerOptions:mN}),OR4=U0.object({type:U0.literal("text"),text:U0.string().describe("The text content"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),LR4=U0.string().describe("File data as URL string"),mB$=U0.object({type:U0.literal("file"),filename:U0.string().optional().describe("Optional filename of the file"),data:LR4,mediaType:U0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:mN}),DR4=U0.object({type:U0.literal("file"),mediaType:U0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:U0.string().describe("Generated file data as base64 encoded string")}),wR4=U0.object({type:U0.literal("reasoning"),text:U0.string().describe("The reasoning text"),providerOptions:mN}),ER4=U0.object({type:U0.literal("reasoning"),text:U0.string().describe("The reasoning text"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),jR4=U0.object({type:U0.literal("tool-call"),toolCallId:U0.string().describe("ID of the tool call, used to match with tool result"),toolName:U0.string().describe("Name of the tool being called"),input:U0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:U0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:mN}),zR4=U0.object({type:U0.literal("tool-call"),toolCallId:U0.string().describe("ID of the tool call"),toolName:U0.string().describe("Name of the tool being called"),input:U0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:U0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),PR4=U0.union([U0.object({type:U0.literal("text"),value:U0.string()}),U0.object({type:U0.literal("json"),value:Kr}),U0.object({type:U0.literal("error-text"),value:U0.string()}),U0.object({type:U0.literal("error-json"),value:Kr}),U0.object({type:U0.literal("content"),value:U0.array(U0.union([U0.object({type:U0.literal("text"),text:U0.string().describe("Text content")}),U0.object({type:U0.literal("media"),data:U0.string().describe("Base-64 encoded media data"),mediaType:U0.string().describe("IANA media type")})]))}),U0.object({type:U0.literal("execution-denied"),reason:U0.string().optional()}),U0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),dB$=U0.object({type:U0.literal("tool-result"),toolCallId:U0.string().describe("ID of the tool call that this result is associated with"),toolName:U0.string().describe("Name of the tool that generated this result"),output:PR4.describe("Result of the tool call"),result:U0.unknown().describe("Unknown result of the tool call"),providerOptions:mN}),AR4=U0.object({type:U0.literal("tool-result"),toolCallId:U0.string().describe("ID of the tool call that this result is associated with"),toolName:U0.string().describe("Name of the tool that generated this result"),result:U0.any().describe("Result of the tool call (JSON-serializable)"),isError:U0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:U0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),TR4=U0.union([U0.object({type:U0.literal("source"),sourceType:U0.literal("url"),id:U0.string().describe("The ID of the source"),url:U0.string().describe("The URL of the source"),title:U0.string().optional().describe("The title of the source"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")}),U0.object({type:U0.literal("source"),sourceType:U0.literal("document"),id:U0.string().describe("The ID of the source"),mediaType:U0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:U0.string().describe("The title of the document"),filename:U0.string().optional().describe("Optional filename of the document"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata")})]),RR4=U0.object({role:U0.literal("system"),content:U0.string().describe("System message content"),providerOptions:mN}),IR4=U0.object({role:U0.literal("user"),content:U0.array(U0.union([lB$,mB$])).describe("User message content parts (text or file)"),providerOptions:mN}),qR4=U0.object({role:U0.literal("assistant"),content:U0.array(U0.union([lB$,mB$,wR4,jR4,dB$])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:mN}),MR4=U0.object({role:U0.literal("tool"),content:U0.array(dB$).describe("Tool message content (tool results)"),providerOptions:mN}),VR4=U0.union([RR4,IR4,qR4,MR4]),kR4=U0.array(VR4).describe("A list of messages forming the prompt"),SR4=U0.object({prompt:kR4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:U0.number().optional().describe("Maximum number of tokens to generate"),temperature:U0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:U0.number().optional().describe("Nucleus sampling parameter"),topK:U0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:U0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:U0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:U0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:U0.array(U0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:U0.union([U0.object({type:U0.literal("text")}),U0.object({type:U0.literal("json"),schema:U0.any().optional().describe("JSON schema that the generated output should conform to"),name:U0.string().optional().describe("Name of output that should be generated"),description:U0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:U0.array(U0.any()).optional().describe("The tools that are available for the model"),toolChoice:U0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:U0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:U0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:U0.any().optional().describe("Additional provider-specific options")}),CR4=U0.object({content:U0.array(U0.union([OR4,DR4,ER4,zR4,AR4,TR4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:U0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:U0.looseObject({inputTokens:U0.number().optional(),outputTokens:U0.number().optional(),totalTokens:U0.number().optional(),reasoningTokens:U0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:U0.any().optional().describe("Additional provider-specific metadata"),request:U0.object({body:U0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:U0.object({id:U0.string().optional().describe("ID for the generated response"),timestamp:U0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:U0.string().optional().describe("The ID of the response model that was used"),headers:U0.record(U0.string(),U0.string()).optional().describe("Response headers"),body:U0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:U0.array(U0.any()).describe("Warnings for the call, e.g. unsupported settings")}),pu5=U0.object({stream:U0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:U0.object({body:U0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:U0.object({headers:U0.record(U0.string(),U0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),_R4=U0.object({supportedUrls:U0.record(U0.string(),U0.array(U0.string())).describe("Supported URL patterns by media type for the provider")}),nu5=U0.object({modelId:U0.string().describe("The ID of the model"),logo:U0.string().nullable(),description:U0.string().nullable(),capabilities:U0.array(U0.string()),limits:U0.object({contextWindow:U0.number(),maxOutputTokens:U0.number()}).nullable(),costs:U0.object({input:U0.number(),output:U0.number()}).nullable(),provider:U0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),cB$=U0.object({modelId:U0.string().describe("The ID of the model"),callOptions:SR4}),vR4=Y30.extend({logo:U0.string().nullable(),description:U0.string().nullable(),capabilities:U0.array(U0.string()),limits:U0.object({contextWindow:U0.number(),maxOutputTokens:U0.number()}).nullable(),costs:U0.object({input:U0.number(),output:U0.number()}).nullable(),provider:U0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),xR4=G30("llm",vR4,{readOnly:!0}),J30=[{name:"LLM_METADATA",inputSchema:U0.object({modelId:U0.string().describe("The ID of the model")}),outputSchema:_R4},{name:"LLM_DO_STREAM",inputSchema:cB$},{name:"LLM_DO_GENERATE",inputSchema:cB$,outputSchema:CR4},...xR4],tu5=wH(J30)});import{z as zz}from"zod";var fR4,pB$;var nB$=L(()=>{fR4=zz.object({scopes:zz.array(zz.string()).describe("List of scopes available"),stateSchema:zz.record(zz.string(),zz.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),pB$=[{name:"MCP_CONFIGURATION",inputSchema:zz.object({}),outputSchema:fR4}]});import{z as a5}from"zod";var bR4,yR4,tB$;var oB$=L(()=>{bR4=a5.object({}).strict(),yR4=a5.object({billing:a5.object({mode:a5.enum(["prepaid","postpaid"]),limitPeriod:a5.enum(["daily","weekly","monthly"]).nullable()}),limit:a5.object({total:a5.number().nullable(),remaining:a5.number().nullable(),reset:a5.string().nullable()}),usage:a5.object({total:a5.number(),daily:a5.number(),weekly:a5.number(),monthly:a5.number()}),alert:a5.object({enabled:a5.boolean(),threshold_usd:a5.number(),email:a5.string().nullable()}),connectionId:a5.string()}),tB$=[{name:"GATEWAY_USAGE",inputSchema:bR4,outputSchema:yR4},{name:"GATEWAY_SET_LIMIT",inputSchema:a5.object({}),outputSchema:a5.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:a5.object({}),outputSchema:a5.object({}),opt:!0}]});import{z as rB$}from"zod";function bJ(){return aQ()===null}function K30($,Z){return $===y8.DEV_ASSETS(Z)}function ph($,Z){let Q=I7$(Z,$),X=new Date().toISOString();return{id:Q.id??y8.DEV_ASSETS($),title:Q.title,description:Q.description??null,icon:Q.icon??null,app_name:Q.app_name??null,app_id:Q.app_id??null,organization_id:$,created_by:"system",created_at:X,updated_at:X,connection_type:Q.connection_type,connection_url:Q.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:Q.metadata??null,tools:gR4,bindings:["OBJECT_STORAGE"],status:"active"}}var gR4;var nh=L(()=>{QO();Zr();g8();gR4=jz.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:rB$.toJSONSchema($.inputSchema),outputSchema:rB$.toJSONSchema($.outputSchema)}))});function aB$($,Z){return $||Z===0}function sB$($,Z,Q,X,Y){let G=Z?Y+1:Y,J=$.slice(0,Q),K=X+Q<G;return{items:J,totalCount:G,hasMore:K}}function eB$($,Z,Q){if(!Q)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function hR4($,Z){if(Z.length===0)return;let[Q,...X]=Z,Y=Q==="slug"?mO($):$[Q];for(let G of X){if(Y===null||typeof Y!=="object")return;Y=Y[G]}return Y}function uR4($){let Q=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${Q}$`,"i")}function cR4($,Z,Q){if($===void 0)return!0;switch(Z){case"eq":return Q===null?$===null:$===Q;case"gt":return $>Q;case"gte":return $>=Q;case"lt":return $<Q;case"lte":return $<=Q;case"in":return Array.isArray(Q)&&Q.includes($);case"like":return typeof $==="string"&&uR4(String(Q)).test($);case"contains":return String($).toLowerCase().includes(String(Q).toLowerCase());default:return!0}}function Wr($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:X,conditions:Y}=Z;if(Y.length===0)return!0;switch(X){case"and":return Y.every((G)=>Wr($,G));case"or":return Y.some((G)=>Wr($,G));case"not":return!Y.every((G)=>Wr($,G));default:return!0}}let Q=hR4($,Z.field);return cR4(Q,Z.operator,Z.value)}var $O$=L(()=>{UY0()});import{z as fL}from"zod";var lR4=8,mR4,dR4,iR4,pR4,V$1;var ZO$=L(()=>{M$1();uB$();fJ();iB$();nB$();Zr();oB$();g8();k0();p5();GY();cN();nh();pW();UY0();$O$();mR4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:fL.object({})}],dR4={LLM:J30,LLMS:J30,ASSISTANTS:hB$,MCP:pB$,OBJECT_STORAGE:jz,AI_GATEWAY_BILLING:tB$,TRIGGER:eJ0,REGISTRY:mR4,BRAND:X30},iR4=TK.extend({binding:fL.union([fL.array(fL.object({}).passthrough()),fL.object({}).passthrough(),fL.string()]).optional(),include_virtual:fL.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:fL.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),pR4=lN(YQ),V$1=c({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:iR4,outputSchema:pR4,handler:async($,Z)=>{await Z.access.check();let Q=a(Z),X=$.binding?typeof $.binding==="string"?(()=>{let E=dR4[$.binding.toUpperCase()];if(!E)throw Error(`Unknown binding: ${$.binding}`);return E})():$.binding:void 0,Y=X?rJ0(X):void 0,G=!!Y,J=$.limit??100,K=$.offset??0,W=v5(),H=y8.DEV_ASSETS(Q.id),F=ph(Q.id,W),N=(!$.slug||mO(F)===$.slug)&&Wr(F,$.where),U=bJ()&&!G&&N,{sqlOffset:B,sqlLimit:O}=eB$(K,J,U),{items:D,totalCount:w}=await Z.storage.connections.list(Q.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:G?void 0:O,offset:G?void 0:B});if(Y){let E=O9(),j=y8.SELF(Q.id);await _J0(D,lR4,async(z)=>{if(z.tools!==null)return;let A=z.id===j?async()=>{let{listManagementTools:I}=await Promise.resolve().then(() => (bL(),W30));return I(Z)}:()=>E$1(z,Z,BY0),P=await _L("tools",z.id,A,E,(I)=>Z.pendingRevalidations.push(I),CL);if(P!==null)z.tools=P})}if(bJ()&&aB$(G,K)&&N&&!D.some((E)=>E.id===H))D.unshift(F);if(G){let E=(await Promise.all(D.map(async(P)=>{if(!P.tools||P.tools.length===0)return null;return Y.isImplementedBy(P.tools.map((q)=>({name:q.name,inputSchema:q.inputSchema,outputSchema:q.outputSchema})))?P:null}))).filter((P)=>P!==null),j=E.length,z=E.slice(K,K+J),A=K+J<j;return{items:z,totalCount:j,hasMore:A}}return sB$(D,U,J,K,w)}})});var nR4,k$1;var QO$=L(()=>{fJ();g8();k0();p5();GY();cN();nh();pW();nR4=Yr(YQ),k$1=c({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:Xr,outputSchema:nR4,handler:async($,Z)=>{let Q=a(Z);if(await Z.access.check(),bJ()&&K30($.id,Q.id))return{item:ph(Q.id,v5())};let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)return{item:null};if(X.tools===null){let Y=y8.SELF(Q.id),G=X.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (bL(),W30));return K(Z)}:async()=>{let K=await P5(X,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},J=await _L("tools",X.id,G,O9(),(K)=>Z.pendingRevalidations.push(K),CL);if(J!==null)X.tools=J}return{item:X}}})});class a6{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",$).executeTakeFirst();if(!Z)return null;return this.decryptToken(Z)}async upsert($){let Z=new Date().toISOString(),Q=await this.vault.encrypt($.accessToken),X=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null,G=$.expiresAt?.toISOString()??null,J=await this.db.insertInto("downstream_tokens").values({id:o$("dtok"),connectionId:$.connectionId,accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z})).returning(["id","createdAt"]).executeTakeFirstOrThrow();return{id:J.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:J.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint}}async delete($){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let X=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(X))return!0;return X-Z<Date.now()}async decryptToken($){let Z=await this.vault.decrypt($.accessToken),Q=$.refreshToken?await this.vault.decrypt($.refreshToken):null,X=$.clientSecret?await this.vault.decrypt($.clientSecret):null;return{id:$.id,connectionId:$.connectionId,accessToken:Z,refreshToken:Q,scope:$.scope,expiresAt:$.expiresAt,createdAt:$.createdAt,updatedAt:$.updatedAt,clientId:$.clientId,clientSecret:X,tokenEndpoint:$.tokenEndpoint}}}var yJ=L(()=>{dZ()});function th(...$){if(aR4)console.log("[mcp-read-cache]",...$)}function sR4($){return $.kind==="org"?"org":`u:${$.userId}`}function S$1($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(S$1).join(",")}]`;return`{${Object.keys($).sort().map((Q)=>`${JSON.stringify(Q)}:${S$1($[Q])}`).join(",")}}`}class N30{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=tR4,Z=oR4,Q=()=>Date.now(),X=rR4){this.config=$;this.maxEntries=Z;this.now=Q;this.maxTotalBytes=X}stats(){return{entries:this.store.size,bytes:this.totalBytes}}deleteKey($){let Z=this.store.get($);if(Z)this.store.delete($),this.totalBytes-=Z.bytes}key($,Z,Q,X){return`${Z}:${sR4(Q)}:${$}:${S$1(X)}`}storeSet($,Z,Q,X){let Y;try{Y=JSON.stringify(Z).length}catch{th("SKIP non-serializable",$);return}if(Y>X){th("SKIP oversize",$,`${Y}b > cap ${X}b`);return}this.deleteKey($);while(this.store.size>0&&(this.store.size>=this.maxEntries||this.totalBytes+Y>this.maxTotalBytes)){let G=this.store.keys().next().value;if(G===void 0)break;this.deleteKey(G)}this.store.set($,{value:Z,storedAt:Q,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:Q,scope:X,params:Y,fetchLive:G,shouldCache:J,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,Q,X,Y),F=this.now(),N=this.store.get(H),U=N?F-N.storedAt:1/0;if(!N||U>W.maxStaleMs){H30.add(1,{type:Z,outcome:"miss"}),th(N?"EXPIRED":"MISS",H);let B=await G();if(J?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else th("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,N),U>W.revalidateAfterMs&&!this.revalidating.has(H)){H30.add(1,{type:Z,outcome:"stale"}),th("STALE \u2192 serve + revalidate",H,`age=${U}ms`),this.revalidating.add(H);let B=G().then((O)=>{if(J?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{H30.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else H30.add(1,{type:Z,outcome:"hit"}),th("HIT",H,`age=${U}ms`);return N.value}invalidate($){let Z=`${$}:`;for(let Q of[...this.store.keys()])if(Q.startsWith(Z))this.deleteKey(Q)}}function _$1(){return y0().mcpCacheEnabled}function U30(){return _$1()?C$1:null}var H30,F30=1024,XO$,tR4,oR4=2000,rR4,aR4,C$1;var Hr=L(()=>{x6();R$();H30=P$.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),XO$=F30*F30,tR4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*F30},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*XO$},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*F30}},rR4=256*XO$,aR4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;C$1=new N30;P$.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(C$1.stats().entries));P$.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(C$1.stats().bytes))});function JO$($){U30()?.invalidate($),GB$($)}function oh($){JO$($);let Z=v$1?.();if(!Z)return;try{Z.publish(YO$,eR4.encode(JSON.stringify({connectionId:$,originId:GO$})))}catch(Q){console.warn("[McpCacheInvalidation] publish failed (non-critical):",Q)}}function KO$($){if(v$1=$,Fr)return;let Z=$();if(!Z)return;Fr=Z.subscribe(YO$),(async()=>{for await(let Q of Fr)try{let X=JSON.parse($I4.decode(Q.data));if(X.originId===GO$)continue;JO$(X.connectionId)}catch{}})().catch(console.error)}function WO$(){Fr?.unsubscribe(),Fr=null,v$1=void 0}var YO$="studio.mcp-cache.invalidate",GO$,eR4,$I4,v$1,Fr=null;var Nr=L(()=>{Hr();GY();GO$=crypto.randomUUID(),eR4=new TextEncoder,$I4=new TextDecoder});import{z as x$1}from"zod";function QI4($){let Z={...$};for(let Q of ZI4)delete Z[Q];return Z}function XI4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function JI4($,Z){return $.length===Z.length&&$.every((Q,X)=>Q===Z[X])}var ZI4,YI4,GI4,f$1;var HO$=L(()=>{cN();yJ();k0();R$();GY();Nr();j$1();ho();pW();ZI4=["id","organization_id","created_by","created_at"];YI4=x$1.object({id:x$1.string().describe("ID of the connection to update"),data:bQ0.describe("Partial connection data to update")}),GI4=x$1.object({item:YQ.describe("The updated connection entity")});f$1=c({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:YI4,outputSchema:GI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to update connection");let{id:Y}=$,G=QI4($.data),J=G.configuration_state!==void 0||G.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==Q.id)throw Error("Connection not found in organization");let W=G.connection_type??K.connection_type,H=XI4(G,K.connection_url);if(W==="VIRTUAL"){let f=cy(H);if(!f)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let b=await Z.storage.virtualMcps.findById(f);if(!b)throw Error(`Virtual MCP not found: ${f}`);if(b.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=ly(f)}let F=G.configuration_state??K.configuration_state??{},N=G.configuration_scopes??K.configuration_scopes??[];if(J){if(G.configuration_state!==void 0)F=G.configuration_state??{};else if(F===null||F===void 0)F={};if(G.configuration_scopes!==void 0)N=G.configuration_scopes??[];if(N.length>0){let f=F;ao(f,N,Q.id),await eo(f,N,Q.id,Z)}}if(W==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let U=G.connection_token??K.connection_token;if(!U)try{let b=await new a6(Z.db,Z.vault).get(Y);if(b?.accessToken)U=b.accessToken}catch{}let B=await ML({id:K.id,title:G.title??K.title,connection_type:W,connection_url:H,connection_token:U,connection_headers:G.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,D=!1;if(G.configuration_scopes===void 0&&B?.scopes?.length)D=!JI4(N,B.scopes),N=B.scopes;if(ao(F,N,Q.id),D&&N.length>0)await eo(F,N,Q.id,Z);let w=J||D,E=w?so(F,N):[],j=w?so(K.configuration_state??{},K.configuration_scopes??[]):[],z=K.configuration_state,A=z==null||Object.keys(z).length===0,P,I,q=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:j})}catch(f){console.error("Failed to restore credential grants after credential vault mutation failed",f)}},M={...G,connection_url:H,tools:null,configuration_state:F,configuration_scopes:N,updated_by:X},S={...K,...M};if(w)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:E}),E.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:Q.id,subjectConnectionId:Y})){let{plaintextToken:b,record:l}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:Y});I=l.id,P={baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:Y,token:b}}}}catch(f){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:I});throw await q(),f}if(w&&F&&N)try{await(await P5(S,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:N,firstRun:A,...P?{vault:P}:{}}})}catch(f){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",f),I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:I});if(E.length>0)throw await q(),f}let m;try{m=await Z.storage.connections.update(Y,M)}catch(f){if(w){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:I});await q()}throw f}if(O)O9()?.set("tools",Y,O).catch(()=>{});return oh(Y),{item:m}}})});import{z as KI4}from"zod";var WI4,b$1;var FO$=L(()=>{fJ();f4();k0();GY();Nr();pW();WI4=Gr.extend({force:KI4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),b$1=c({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:WI4,outputSchema:Jr(YQ),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=await Z.storage.connections.findById($.id);if(!X)throw Error(`Connection not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error("Connection not found in organization");if(X.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let G=await Z.storage.virtualMcps.listByConnectionId(Q.id,$.id);if(G.length>0)if($.force)await Z.storage.virtualMcps.removeConnectionReferences($.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:G.map((W)=>W.title)}));await Z.storage.connections.delete($.id);let J=await Z.storage.organizationSettings.get(Q.id);if(J?.registry_config){let{registries:W,blockedMcps:H}=J.registry_config;if($.id in W){let{[$.id]:F,...N}=W;await Z.storage.organizationSettings.upsert(Q.id,{registry_config:{registries:N,blockedMcps:H}})}}O9()?.invalidate($.id).catch(()=>{}),oh($.id);let K=a0(Z);if(K)h1.capture({distinctId:K,event:"connection_deleted",groups:{organization:Q.id},properties:{connection_id:X.id,connection_type:X.connection_type,app_name:X.app_name??null,organization_id:Q.id,forced:$.force??!1}});return{item:X}}})});import{z as rh}from"zod";var y$1;var NO$=L(()=>{k0();y$1=c({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:rh.object({id:rh.string()}),outputSchema:rh.object({id:rh.string(),healthy:rh.boolean(),latencyMs:rh.number()}),handler:async($,Z)=>{let Q=a(Z);await Z.access.check();let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var UO$=L(()=>{UB$();ZO$();QO$();HO$();FO$();NO$()});import{sql as b4}from"kysely";import{z as EH}from"zod";function BO$($){if($===null||$===void 0)return"NULL";if(typeof $==="number")return String($);if(typeof $==="boolean")return $?"TRUE":"FALSE";if(typeof $==="string")return`'${$.replace(/'/g,"''")}'`;if($ instanceof Date)return`'${$.toISOString()}'`;return`'${JSON.stringify($).replace(/'/g,"''")}'`}function NI4($,Z){let Q=$;for(let Y=Z.length;Y>=1;Y--){let G=`$${Y}`;if(Q.includes(G))Q=Q.replaceAll(G,BO$(Z[Y-1]))}let X=[];for(let Y=0;Y<Q.length;Y++)if(Q[Y]==="?")X.push(Y);for(let Y=Math.min(X.length,Z.length)-1;Y>=0;Y--){let G=X[Y],J=BO$(Z[Y]);Q=Q.slice(0,G)+J+Q.slice(G+1)}return Q}function OO$($){return $.replace(/-/g,"_")}function BI4($){return`app_${OO$($)}`}function OI4($){return`app_role_${OO$($)}`}function LI4($){if($ instanceof Error){let Z=$.message.toLowerCase(),Q=$.code;return Q==="3F000"||Q==="42704"||Q==="22023"||Z.includes("schema")&&Z.includes("does not exist")||Z.includes("role")&&Z.includes("does not exist")}return!1}async function DI4($,Z,Q){if(await b4`CREATE SCHEMA IF NOT EXISTS ${b4.id(Z)}`.execute($),!(await b4`
|
|
2311
2311
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${Q}) as exists
|
|
2312
|
-
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(Q)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(Q)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(Q)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(Q)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(Q)}`.execute($)}async function wI4($,Z,Q,X){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(Q)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(X).execute(Y)})}catch(Y){if(LI4(Y))return await DI4($,Z,Q),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(Q)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(X).execute(G)});throw Y}}var FI4,UI4,LO$;var DO$=L(()=>{k0();FI4=EH.object({results:EH.array(EH.unknown()).optional(),success:EH.boolean().optional()});UI4=EH.object({sql:EH.string().describe("The SQL query to run"),params:EH.array(EH.any()).describe("The parameters to pass to the SQL query").optional()});LO$=c({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:UI4,outputSchema:EH.object({result:EH.array(FI4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=NI4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let X=BI4(Z.connectionId),Y=OI4(Z.connectionId);return{result:[{results:(await wI4(Z.db,X,Y,Q)).rows,success:!0}]}}})});function B30($){let Z=$.access.getRole();if(!NQ(Z))throw new yN("Only organization owners and admins can change org-wide pin status")}var g$1=L(()=>{XY();sj()});async function O30($,Z,Q){let X=[...new Set(Q)],Y=await Promise.all(X.map((J)=>$.storage.connections.findById(J,Z))),G=X.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function dN($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function L30($){let Z=2166136261;for(let Q=0;Q<$.length;Q++)Z=Math.imul(Z^$.charCodeAt(Q),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function Ur($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function Br($,Z){if(!Z)return $;let Q=`${L30(Z)}_`;return $.startsWith(Q)?$.slice(Q.length):$}function jI4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var ah;var wO$=L(()=>{aW();ah=class ah extends p9{static MAX_PAGES_PER_CLIENT=1000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$;for(let Q of Object.keys($)){let X=L30(Q);if(this.slugToKey.has(X))throw Error(`GatewayClient: duplicate namespace code "${X}" from keys "${this.slugToKey.get(X)}" and "${Q}"`);this.slugToKey.set(X,Q)}}namespace($,Z){return`${L30($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let X=$.slice(0,Z),Y=this.slugToKey.get(X);if(Y)return[Y,$.slice(Z+1)]}let{tools:Q}=await this.listTools();for(let X of Q){let Y=Ur(X._meta);if(!Y)continue;if(Br(X.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve tool "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}async resolvePromptTarget($){let Z=$.indexOf("_");if(Z!==-1){let X=$.slice(0,Z),Y=this.slugToKey.get(X);if(Y)return[Y,$.slice(Z+1)]}let{prompts:Q}=await this.listPrompts();for(let X of Q){let Y=Ur(X._meta);if(!Y)continue;if(Br(X.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve prompt "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let Q=this.clients[$];if(!Q)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let X=Q.client,Y;try{Y=typeof X==="function"?Promise.resolve(X()):Promise.resolve(X)}catch(J){return Promise.reject(J)}let G=Y.catch((J)=>{throw this.resolvedClients.delete($),J});return this.resolvedClients.set($,G),G}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,Q){try{let X=await this.resolveClient($);return await Z(X)}catch(X){return console.warn(`GatewayClient: skipping ${Q} from client "${$}" \u2014 ${X?.message??X}`),[]}}async paginate($,Z,Q){let X=[],Y,G=0;do{let J=await Q(Y);X.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<ah.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${ah.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return X}fetchAllTools($,Z){return this.paginate(Z,"tools",async(Q)=>{let X=await $.listTools(Q?{cursor:Q}:void 0);return{items:X.tools,nextCursor:X.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(Q)=>{let X=await $.listResources(Q?{cursor:Q}:void 0);return{items:X.resources,nextCursor:X.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(Q)=>{let X=await $.listResourceTemplates(Q?{cursor:Q}:void 0);return{items:X.resourceTemplates,nextCursor:X.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(Q)=>{let X=await $.listPrompts(Q?{cursor:Q}:void 0);return{items:X.prompts,nextCursor:X.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,Q]of Object.entries(this.clients)){let X=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=Q.tools,G=Y?new Set(Y):null;for(let J of X){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],Q=new Map;for(let[X,Y]of Object.entries(this.clients)){let G=await this.listFromClient(X,(W)=>this.fetchAllResources(W,X),"resources"),J=Y.resources,K=J?new Set(J):null;for(let W of G){if(K&&!K.has(W.uri)&&!(W.name&&K.has(W.name)))continue;if($.has(W.uri)){console.warn(`GatewayClient: duplicate resource "${W.uri}" from client "${X}" \u2014 skipping`);continue}$.add(W.uri),Q.set(W.uri,X),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:X}})}}return this.resourceRouteMap=Q,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[Q,X]of Object.entries(this.clients)){let Y=await this.listFromClient(Q,(G)=>this.fetchAllResourceTemplates(G,Q),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${Q}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:Q}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,Q]of Object.entries(this.clients)){let X=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=Q.prompts,G=Y?new Set(Y):null;for(let J of X){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??jI4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,Q){let[X,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(X)).callTool({...$,name:Y},Z,Q)}async readResource($,Z){let Q=await this.resolveResourceRoute($.uri);return(await this.resolveClient(Q)).readResource($)}async getPrompt($,Z){let[Q,X]=await this.resolvePromptTarget($.name);return(await this.resolveClient(Q)).getPrompt({...$,name:X})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((Q)=>Q.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var D30=L(()=>{wO$()});function u$1($){return dN($)}function PI4($,Z){let Q=dN(Z)||"prompt";return`${String($).padStart(zI4,"0")}-${Q}`}async function c$1($,Z,Q){try{await $.delete(w30,u$1(Z),{actor:Q})}catch(X){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:X})}}async function E30($,Z,Q,X){let Y=u$1(Z);await c$1($,Z,Q),await Promise.all(X.slice(0,h$1).map(async(G,J)=>{let K=PI4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(w30,`${Y}/${K}.json`,JSON.stringify(W),{actor:Q,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function EO$($,Z){let Q=u$1(Z),X;try{X=await $.listDir(w30,Q)}catch{return[]}let Y=X.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,h$1),G=[];for(let J of Y)try{let K=await $.read(w30,J.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")G.push(W)}catch{}return G}var w30="agent-prompts",h$1=20,zI4;var Or=L(()=>{D30();zI4=String(h$1-1).length});function sh($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as PO$}from"zod";function AI4(){let $=jO$[Math.floor(Math.random()*jO$.length)];return`icon://${zO$[Math.floor(Math.random()*zO$.length)]}?color=${$}`}var jO$,zO$,TI4,RI4,l$1;var AO$=L(()=>{k0();kL();g$1();Or();jO$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],zO$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];TI4=PO$.object({data:gQ0.describe("Data for the new virtual MCP")}),RI4=PO$.object({item:GQ.describe("The created virtual MCP entity")}),l$1=c({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:TI4,outputSchema:RI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)B30(Z);let{prompts:Y,metadata:G,...J}=$.data,K=sh(G);if(J.connections.length>0)await O30(Z,Q.id,J.connections.map((F)=>F.connection_id));let W={...J,metadata:K,icon:J.icon??AI4()},H=await Z.storage.virtualMcps.create(Q.id,X,W);if(Y?.length&&Z.orgFs&&H.id)await E30(Z.orgFs,H.id,X,Y);return{item:H}}})});function II4($){let Z=[],Q=0;while(Q<$.length){let X=$[Q];if(X==="%")Z.push(".*");else if(X==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(X))Z.push("\\"+X);else Z.push(X);Q++}return Z.join("")}function yL($){return typeof $==="string"||typeof $==="number"}function m$1($,Z){let Q=Z.split("."),X=$;for(let Y of Q){if(X==null||typeof X!=="object")return;X=X[Y]}return X}function qI4($,Z){return $.connections.some((Q)=>Q.connection_id===Z)}function j30($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>j30($,H));case"or":return W.some((H)=>j30($,H));case"not":return!W.every((H)=>j30($,H));default:return!0}}let{field:Q,operator:X,value:Y}=Z,G=Q.join(".");if(G==="connection_id"){if(X!=="eq"||typeof Y!=="string")return!1;return qI4($,Y)}let J=m$1($,G);switch(X){case"eq":return J===Y;case"gt":return yL(J)&&yL(Y)&&J>Y;case"gte":return yL(J)&&yL(Y)&&J>=Y;case"lt":return yL(J)&&yL(Y)&&J<Y;case"lte":return yL(J)&&yL(Y)&&J<=Y;case"in":return Array.isArray(Y)&&Y.includes(J);case"like":if(typeof J!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;let K=II4(Y);return new RegExp(`^${K}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Y!=="string")return!1;return J.toLowerCase().includes(Y.toLowerCase());default:return!0}}function MI4($,Z){return[...$].sort((Q,X)=>{for(let Y of Z){let G=Y.field.join("."),J=m$1(Q,G),K=m$1(X,G),W=0;if(J==null&&K==null)continue;if(J==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof K==="string")W=J.localeCompare(K);else if(typeof J==="number"&&typeof K==="number")W=J-K;else W=String(J).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var VI4,kI4,d$1;var TO$=L(()=>{fJ();k0();kL();VI4=TK,kI4=lN(GQ),d$1=c({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VI4,outputSchema:kI4,handler:async($,Z)=>{await Z.access.check();let Q=a(Z),X=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,J=X?await Z.storage.virtualMcps.listByConnectionId(Q.id,X):await Z.storage.virtualMcps.list(Q.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((U)=>j30(U,$.where));if($.orderBy&&$.orderBy.length>0)J=MI4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),N=W+H<K;return{items:F,totalCount:K,hasMore:N}}})});import{z as i$1}from"zod";var SI4,CI4,p$1;var RO$=L(()=>{k0();kL();SI4=i$1.object({id:i$1.string().describe("ID of the virtual MCP to retrieve")}),CI4=i$1.object({item:GQ.nullable().describe("The retrieved virtual MCP, or null if not found")}),p$1=c({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:SI4,outputSchema:CI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=await Z.storage.virtualMcps.findById($.id);if(X&&X.organization_id!==Q.id)return{item:null};if(!X)return{item:null};return{item:X}}})});function gJ($){return n$1.test($)}function IO$($){let Z=(Q)=>typeof Q==="string"?Q.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var n$1;var gL=L(()=>{n$1=/^[a-z0-9][a-z0-9-]{0,59}$/});function qO$($){let{nextTitle:Z,currentTitle:Q,currentSiteSlug:X}=$;if(X?.trim())return null;if(Z===void 0||Z===Q)return null;let Y=Q?.trim().toLowerCase()??"";return gJ(Y)?Y:null}var MO$=L(()=>{gL()});import{z as t$1}from"zod";var _I4,vI4,o$1;var VO$=L(()=>{k0();Or();kL();g$1();MO$();_I4=t$1.object({id:t$1.string().describe("ID of the virtual MCP to update"),data:hQ0.describe("Partial virtual MCP data to update")}),vI4=t$1.object({item:GQ.describe("The updated virtual MCP entity")}),o$1=c({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_I4,outputSchema:vI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:J,...K}=$.data,W=sh(J);if(W&&Y.metadata)W={...Y.metadata,...W};else if(W===null&&Y.metadata?.sandboxMap)W={sandboxMap:Y.metadata.sandboxMap};let H={...K,...J!==void 0?{metadata:W}:{}},F=qO$({nextTitle:H.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(F)H.metadata={...Y.metadata,...H.metadata,siteSlug:F};if(H.pinned!==void 0&&H.pinned!==Y.pinned)B30(Z);if(H.connections?.length)await O30(Z,Q.id,H.connections.map((U)=>U.connection_id));let N=await Z.storage.virtualMcps.update($.id,X,H);if(G!==void 0&&Z.orgFs)await E30(Z.orgFs,$.id,X,G);return{item:N}}})});function xI4($){if(!$)return!1;let Z=a$1.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function SO$($){let Z={...$};for(let Q of a$1)Z[Q]="read";return Z}async function CO$($,Z){let Q={...Z};for(;;){let X=await $(Q);if(!X.isError)return{result:X,grantedPermissions:Q};let Y=X.content?.find((W)=>W.type==="text")?.text,G=a$1.find((W)=>(W in Q));if(!G||!xI4(Y))return{result:X,grantedPermissions:Q};let{[G]:J,...K}=Q;Q=K}}function fI4($){if(!$||typeof $!=="object"||Array.isArray($))return kO$;let Z=$;if(Object.values(Z).some((Q)=>typeof Q!=="string"))return kO$;return Z}function bI4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function y5($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let Q=bI4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:Q,owner:Z.owner,repo:Z.repo,permissions:fI4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Pz($){return $.metadata?.orgShared===!0}function _O$($){let Z=new Set,Q=[];for(let X of $??[]){if(X.status!=="active")continue;let Y=y5(X);if(Y===null)continue;let G=r$1(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),Q.push(`${Y.owner}/${Y.repo}`)}return Q}function z30($,Z,Q){let X=r$1(Z,Q),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=y5(G);return J!==null&&r$1(J.owner,J.repo)===X});return Y.find(Pz)??Y[0]??null}var kO$,a$1,r$1=($,Z)=>`${$}/${Z}`.toLowerCase();var JY=L(()=>{kO$={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},a$1=["deployments","checks"]});function vO$($){return qJ($)!==null||WY0($)!==null}var xO$=L(()=>{g8()});import{z as s$1}from"zod";var yI4,gI4,e$1;var fO$=L(()=>{JY();yJ();k0();Or();kL();xO$();yI4=s$1.object({id:s$1.string().describe("ID of the virtual MCP to delete")}),gI4=s$1.object({item:GQ.describe("The deleted virtual MCP entity")}),e$1=c({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:yI4,outputSchema:gI4,handler:async($,Z)=>{s(Z);let Q=a(Z);if(await Z.access.check(),vO$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let X=await Z.storage.virtualMcps.findById($.id);if(!X)throw Error(`Virtual MCP not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(Q.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(Q.id,{main_agent_id:null})}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:$.id,error:G.message})}if(Z.orgFs)await c$1(Z.orgFs,$.id,a0(Z)??"system");let Y=X.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,Q.id),J=G&&(Pz(G)||(await Z.storage.virtualMcps.listByConnectionId(Q.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&y5(G)&&!J){let W=await new a6(Z.db,Z.vault).get(Y);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(Y)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Y,error:G.message})}return{item:X}}})});import{z as KY}from"zod";var hI4,$81;var bO$=L(()=>{k0();hI4=KY.object({id:KY.string(),virtualMcpId:KY.string(),pluginId:KY.string(),connectionId:KY.string().nullable(),settings:KY.record(KY.string(),KY.unknown()).nullable(),createdAt:KY.string(),updatedAt:KY.string()}),$81=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:KY.object({virtualMcpId:KY.string().describe("Virtual MCP ID"),pluginId:KY.string().describe("Plugin ID")}),outputSchema:KY.object({config:hI4.nullable()}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y}=$,G=await Z.storage.connections.findById(X);if(!G||G.organization_id!==Q.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(X,Y);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as rZ}from"zod";var uI4,Z81;var yO$=L(()=>{k0();nh();p5();uI4=rZ.object({id:rZ.string(),virtualMcpId:rZ.string(),pluginId:rZ.string(),connectionId:rZ.string().nullable(),settings:rZ.record(rZ.string(),rZ.unknown()).nullable(),createdAt:rZ.string(),updatedAt:rZ.string()}),Z81=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:rZ.object({virtualMcpId:rZ.string().describe("Virtual MCP ID"),pluginId:rZ.string().describe("Plugin ID"),connectionId:rZ.string().nullable().optional().describe("MCP connection to bind"),settings:rZ.record(rZ.string(),rZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:rZ.object({config:uI4}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y,connectionId:G,settings:J}=$,K=a0(Z),W=await Z.storage.connections.findById(X);if(!W)throw Error(`Connection not found: ${X}`);if(W.organization_id!==Q.id)throw Error(`Connection not found: ${X}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${X}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==Q.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&bJ()&&K30(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=ph(W.organization_id,v5());await Z.storage.connections.create({...N,organization_id:W.organization_id,created_by:K})}else if(G&&!H)throw Error(`Connection not found: ${G}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(X,Y,{connectionId:G,settings:J});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});import{z as BX}from"zod";var cI4,Q81;var gO$=L(()=>{k0();kL();cI4=BX.object({connectionId:BX.string(),toolName:BX.string(),label:BX.string(),icon:BX.string().nullable().optional()}),Q81=c({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:BX.object({virtualMcpId:BX.string().describe("Virtual MCP ID"),pinnedViews:BX.array(cI4).describe("Pinned views to set for the virtual MCP sidebar"),layout:BX.object({defaultMainView:BX.object({type:BX.string(),id:BX.string().optional(),toolName:BX.string().optional()}).nullable().optional(),chatDefaultOpen:BX.boolean().nullable().optional()}).optional()}),outputSchema:BX.object({item:GQ.nullable()}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pinnedViews:Y,layout:G}=$,J=a0(Z),K=await Z.storage.virtualMcps.findById(X);if(!K)throw Error(`Virtual MCP not found: ${X}`);if(K.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${X}`);let W=K.metadata?.ui??{},H={...W,pinnedViews:Y.length>0?Y:null,layout:G??W.layout??null};return{item:await Z.storage.virtualMcps.update(X,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as iN}from"zod";var lI4,mI4,X81;var hO$=L(()=>{k0();lI4=iN.object({ids:iN.array(iN.string()).max(1000).describe("Virtual MCP ids to look up")}),mI4=iN.object({items:iN.array(iN.object({id:iN.string(),last_used_at:iN.string().optional(),last_used_by:iN.string().optional()}))}),X81=c({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lI4,outputSchema:mI4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let Q=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((X)=>({id:X,last_used_at:Q.get(X)?.last_used_at,last_used_by:Q.get(X)?.last_used_by}))}}})});var uO$=L(()=>{AO$();TO$();RO$();VO$();fO$();bO$();yO$();gO$();hO$()});import{z as OQ}from"zod";var Y81;var cO$=L(()=>{x6();k0();Y81=c({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OQ.object({startDate:OQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:OQ.array(OQ.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:OQ.array(OQ.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:OQ.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:OQ.object({cells:OQ.array(OQ.object({virtualMcpId:OQ.string().nullable(),toolName:OQ.string(),calls:OQ.number(),errors:OQ.number(),outputSize:OQ.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let Q=a(Z);return await Z.access.check(),await lX(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as A5}from"zod";var G81;var lO$=L(()=>{x6();k0();G81=c({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:A5.object({id:A5.string().describe("Log ID to fetch")}),outputSchema:A5.object({log:A5.object({id:A5.string().optional(),organizationId:A5.string(),connectionId:A5.string(),toolName:A5.string(),input:A5.record(A5.string(),A5.unknown()),output:A5.record(A5.string(),A5.unknown()),isError:A5.boolean(),errorMessage:A5.string().nullish(),durationMs:A5.number(),timestamp:A5.string(),userId:A5.string().nullish(),requestId:A5.string(),userAgent:A5.string().nullish(),virtualMcpId:A5.string().nullish(),properties:A5.record(A5.string(),A5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await lX();let Q=a(Z),X=await Z.storage.monitoring.getById(Q.id,$.id);if(!X)return{log:null};return{log:{...X,timestamp:X.timestamp instanceof Date?X.timestamp.toISOString():X.timestamp}}}})});import{z as j8}from"zod";var iI4,J81;var mO$=L(()=>{x6();k0();iI4=j8.object({id:j8.string().optional().describe("Unique log identifier"),organizationId:j8.string().describe("Organization ID"),connectionId:j8.string().describe("Connection ID"),toolName:j8.string().describe("Name of the tool that was called"),isError:j8.boolean().describe("Whether the call resulted in an error"),errorMessage:j8.string().nullish().describe("Error message if applicable"),durationMs:j8.number().describe("Call duration in milliseconds"),timestamp:j8.string().describe("ISO 8601 timestamp of the call"),userId:j8.string().nullish().describe("User who triggered the call"),requestId:j8.string().describe("Unique request identifier"),userAgent:j8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:j8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:j8.record(j8.string(),j8.string()).nullish().describe("Custom key-value metadata attached to the log")}),J81=c({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j8.object({connectionId:j8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:j8.array(j8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:j8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:j8.string().optional().describe("Filter by tool name"),isError:j8.boolean().optional().describe("Filter by error status"),startDate:j8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:j8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:j8.number().default(20).describe("Maximum number of results"),offset:j8.number().default(0).describe("Offset for pagination"),properties:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:j8.array(j8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:j8.record(j8.string(),j8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:j8.object({logs:j8.array(iI4).describe("Array of monitoring logs"),total:j8.number().describe("Total number of logs matching filters"),offset:j8.number().describe("Current offset for pagination"),limit:j8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await lX();let Q=a(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:Q.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},J=await Z.storage.monitoring.query(G);return{logs:J.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:J.total,offset:$.offset,limit:$.limit}}})});import{z as F$}from"zod";var K81;var dO$=L(()=>{x6();k0();K81=c({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F$.object({startDate:F$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:F$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:F$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:F$.array(F$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:F$.array(F$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:F$.array(F$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:F$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:F$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:F$.array(F$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:F$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:F$.object({totalCalls:F$.number().describe("Total number of tool calls"),errorRate:F$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:F$.number().describe("Average call duration in milliseconds"),errorRatePercent:F$.string().optional().describe("Error rate as a percentage string"),totalErrors:F$.number().optional().describe("Total number of errors"),p50DurationMs:F$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:F$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:F$.array(F$.object({connectionId:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avgDurationMs:F$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:F$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:F$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:F$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:F$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:F$.array(F$.object({toolName:F$.string(),connectionId:F$.string().nullable(),calls:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:F$.array(F$.object({timestamp:F$.string(),toolName:F$.string(),calls:F$.number(),errors:F$.number(),avg:F$.number(),p95:F$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:F$.array(F$.object({timestamp:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avg:F$.number(),p50:F$.number(),p95:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),totalTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let Q=a(Z);if(await Z.access.check(),await lX(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:Q.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let G=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:G.topTools,topToolsTimeseries:G.timeseries}}let X=await Z.storage.monitoring.getStats({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...X,errorRatePercent:(X.errorRate*100).toFixed(2)}}})});import{z as OX}from"zod";var W81;var iO$=L(()=>{x6();k0();W81=c({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OX.object({threadIds:OX.array(OX.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:OX.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:OX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:OX.object({items:OX.array(OX.object({threadId:OX.string(),calls:OX.number(),inputTokens:OX.number(),outputTokens:OX.number(),totalTokens:OX.number(),costUsd:OX.number()}))}),handler:async($,Z)=>{let Q=a(Z);return await Z.access.check(),await lX(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:Q.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var pO$=L(()=>{cO$();lO$();mO$();dO$();iO$()});function P30($){return typeof $==="string"&&nI4.has($.trim().toLowerCase())}var nI4;var H81=L(()=>{nI4=new Set([".well-known","_admin","api","auth","choose-editor","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as EG}from"zod";var F81;var nO$=L(()=>{k0();H81();F81=c({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EG.object({slug:EG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!P30($),"Slug is reserved by Studio"),name:EG.string().min(1).max(255),description:EG.string().optional()}),outputSchema:EG.object({id:EG.string(),name:EG.string(),slug:EG.string(),logo:EG.string().nullable().optional(),metadata:EG.any().optional(),createdAt:EG.string().datetime().describe("ISO 8601 timestamp"),members:EG.array(EG.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create organization");let X=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:Q});if(!X)throw Error("Failed to create organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as jH}from"zod";var N81;var tO$=L(()=>{k0();N81=c({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:jH.object({}),outputSchema:jH.object({organizations:jH.array(jH.object({id:jH.string(),name:jH.string(),slug:jH.string(),logo:jH.string().nullable().optional(),metadata:jH.any().optional(),createdAt:jH.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((X)=>({...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}))}}})});import{z as hJ}from"zod";var U81;var oO$=L(()=>{k0();U81=c({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:hJ.object({}),outputSchema:hJ.object({id:hJ.string(),name:hJ.string(),slug:hJ.string(),logo:hJ.string().nullable().optional(),metadata:hJ.any().optional(),createdAt:hJ.string().datetime().describe("ISO 8601 timestamp"),members:hJ.array(hJ.any()).optional(),invitations:hJ.array(hJ.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.boundAuth.organization.get(Q);if(!X)throw Error("No active organization found");let Y=new Date,G=X.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...X,invitations:G,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as RK}from"zod";var B81;var rO$=L(()=>{k0();B81=c({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:RK.object({id:RK.string(),name:RK.string().min(1).max(255).optional(),description:RK.string().optional()}),outputSchema:RK.object({id:RK.string(),name:RK.string(),slug:RK.string(),logo:RK.string().nullable().optional(),metadata:RK.any().optional(),createdAt:RK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q={};if($.name)Q.name=$.name;if($.description!==void 0)Q.metadata={description:$.description};let X=await Z.boundAuth.organization.update({organizationId:$.id,data:Q});if(!X)throw Error("Failed to update organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as Lr}from"zod";var O81;var aO$=L(()=>{k0();O81=c({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Lr.object({id:Lr.string()}),outputSchema:Lr.object({success:Lr.boolean(),id:Lr.string()}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.get($.id);return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...Q?.metadata,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as X$}from"zod";function LX($,Z){let Q=$?.[Z];return tI4.has(Z)?Q!==!1:Q===!0}var Dr,wr,pN,sO$,hL,Er,jr,zr,Pr,tI4,uL;var wZ=L(()=>{Dr=X$.object({title:X$.string(),url:X$.string(),icon:X$.string()}),wr=X$.object({registries:X$.record(X$.string(),X$.object({enabled:X$.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:X$.array(X$.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),pN=X$.object({keyId:X$.string(),modelId:X$.string(),title:X$.string().optional()}).nullable(),sO$=X$.enum(["fast","smart","thinking","image","web_search","deep_research"]),hL=X$.enum(["fast","smart","thinking"]),Er=X$.object({tiers:X$.object({fast:pN,smart:pN,thinking:pN,image:pN,web_search:pN,deep_research:pN})}),jr=X$.object({tiers:X$.object({fast:pN.optional(),smart:pN.optional(),thinking:pN.optional()})}),zr=X$.object({ids:X$.array(X$.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),Pr=X$.object({demo_mode:X$.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:X$.boolean().optional().describe("Curated commerce (reports) look: hides agent navigation, the home Customize button, and the Settings/Automations tabs. Defaulted on for orgs created by commerce onboarding."),org_board_columns:X$.boolean().optional().describe("The task board's columns are this org's own, mirrored from its tracker, rather than the set Studio ships. Off means the canonical lanes, which is the only board most orgs want."),reviewer_enabled:X$.boolean().optional().describe("Run the Reviewer on a task's pull request once it's In Review \u2014 it reviews the code with the repo's stack-appropriate skills, fixes what it finds on the PR's own branch, then exercises the change on the deploy preview and approves or hands the card to a human."),qa_agent_enabled:X$.boolean().optional().describe("Deprecated: see reviewer_enabled."),code_reviewer_enabled:X$.boolean().optional().describe("Deprecated: see reviewer_enabled."),auto_merge:X$.boolean().optional().describe("When the Reviewer approves a task's pull request, merge it automatically instead of leaving the merge to a human. If the merge is blocked by a conflict with the base branch, hand the PR back to the Super Agent to resolve the conflict (check out the branch, merge the base, push) so it can then merge."),cheap_reviewer_model:X$.boolean().optional().describe("Run the Reviewer on a cheaper model than the Super Agent that wrote the code. On by default \u2014 turning it off trades cost for some review depth."),coding_agent_org_mcps:X$.boolean().optional().describe("Give a coding-agent run (the claude-code harness in a sandbox) every MCP connection in the org as its own MCP server, on top of the narrow task-run surface it always gets. Off by default: each connection is one more server the agent connects to at session start, and all of their tools land in its context."),coding_agents_claude_code:X$.boolean().optional().describe("Run chats on a Code Agent (an agent imported from a GitHub repo) with the claude-code harness inside its sandbox, instead of hosted Decopilot. Off by default: it changes the runtime of every such chat, and claude-code flushes whole turns rather than streaming tokens."),auto_assign_report_tasks_to_super_agent:X$.boolean().optional().describe("When a report import creates a task board item without an assignee, delegate it to the Super Agent automatically instead of leaving it unassigned."),delivery_lanes_enabled:X$.boolean().optional().describe("Board lanes for shipping: Approved, Merged and Post-deploy Validation sit between In Review and Done, and a merged pull request lands on Merged instead of Done. For teams whose release process continues after the merge. Off by default \u2014 with it off the board and the state machine behave exactly as if the lanes did not exist."),cms_auto_fresh_branch:X$.boolean().optional().describe("When a user opens the CMS on a branch whose last commit is older than the staleness window (2 days), move the session to a freshly minted branch cut from the default branch. The stale branch is left intact on GitHub. Off by default.")}),tI4=new Set(["reviewer_enabled","cheap_reviewer_model"]);uL=X$.object({id:X$.string().describe("Brand context ID"),name:X$.string().describe("Company name"),domain:X$.string().describe("Company domain (e.g. example.com)"),overview:X$.string().describe("Company overview / description"),logo:X$.string().nullable().optional().describe("Logo URL"),favicon:X$.string().nullable().optional().describe("Favicon URL"),ogImage:X$.string().nullable().optional().describe("OG image URL"),fonts:X$.object({heading:X$.string().optional().describe("Font family for headings"),body:X$.string().optional().describe("Font family for body text"),code:X$.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:X$.object({primary:X$.string().optional().describe("Primary brand color (hex)"),secondary:X$.string().optional().describe("Secondary brand color (hex)"),accent:X$.string().optional().describe("Accent / highlight color (hex)"),background:X$.string().optional().describe("Background color (hex)"),foreground:X$.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:X$.array(X$.record(X$.string(),X$.unknown())).nullable().optional().describe("Brand images"),metadata:X$.record(X$.string(),X$.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:X$.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:X$.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as nN}from"zod";var L81;var eO$=L(()=>{k0();wZ();L81=c({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:nN.object({}),outputSchema:nN.object({organizationId:nN.string(),sidebar_items:nN.array(Dr).nullable().optional(),enabled_plugins:nN.array(nN.string()).nullable().optional(),registry_config:wr.nullable().optional(),simple_mode:Er.nullable().optional(),default_home_agents:zr.nullable().optional(),flags:Pr.nullable().optional(),main_agent_id:nN.string().nullable().optional(),createdAt:nN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:nN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.organizationSettings.get(Q);if(!X)return{organizationId:Q};return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as WY}from"zod";var D81;var $L$=L(()=>{k0();wZ();D81=c({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:WY.object({organizationId:WY.string(),sidebar_items:WY.array(Dr).optional(),enabled_plugins:WY.array(WY.string()).optional(),registry_config:wr.optional(),simple_mode:Er.optional(),default_home_agents:zr.optional(),flags:Pr.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:WY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:WY.object({organizationId:WY.string(),sidebar_items:WY.array(Dr).nullable().optional(),enabled_plugins:WY.array(WY.string()).nullable().optional(),registry_config:wr.nullable().optional(),simple_mode:Er.nullable().optional(),default_home_agents:zr.nullable().optional(),flags:Pr.nullable().optional(),main_agent_id:WY.string().nullable().optional(),createdAt:WY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:WY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),a(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let X=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags,main_agent_id:$.main_agent_id});return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as IK}from"zod";var ZL$,w81,E81;var QL$=L(()=>{k0();wZ();ZL$=uL.extend({organizationId:IK.string(),archivedAt:IK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:IK.string().describe("ISO 8601 timestamp"),updatedAt:IK.string().describe("ISO 8601 timestamp")}),w81=c({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IK.object({includeArchived:IK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:IK.object({items:IK.array(ZL$)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),E81=c({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IK.object({id:IK.string().describe("Brand context ID")}),outputSchema:ZL$.extend({organizationId:IK.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.get($.id,Q);if(!X)throw Error("Brand context not found");return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as Az}from"zod";var XL$,j81,z81,P81;var YL$=L(()=>{k0();wZ();XL$=uL.extend({organizationId:Az.string(),createdAt:Az.string().describe("ISO 8601 timestamp"),updatedAt:Az.string().describe("ISO 8601 timestamp")}),j81=c({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:uL.omit({id:!0}),outputSchema:XL$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.create(Q,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}}),z81=c({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uL.partial().required({id:!0}),outputSchema:XL$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,Q);let J=await Z.storage.brandContext.update(Y,Q,{name:G.name,domain:G.domain,overview:G.overview,logo:G.logo!==void 0?G.logo??null:void 0,favicon:G.favicon!==void 0?G.favicon??null:void 0,ogImage:G.ogImage!==void 0?G.ogImage??null:void 0,fonts:G.fonts!==void 0?G.fonts??null:void 0,colors:G.colors!==void 0?G.colors??null:void 0,images:G.images!==void 0?G.images??null:void 0,metadata:G.metadata!==void 0?G.metadata??null:void 0,archivedAt:G.archivedAt!==void 0?G.archivedAt??null:void 0,isDefault:G.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),P81=c({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Az.object({id:Az.string().describe("Brand context ID")}),outputSchema:Az.object({success:Az.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,Q,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function A30($,Z,Q){let X=$.trim();if(!X.startsWith("http"))X=`https://${X}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:X,formats:["branding"]})});if(!Y.ok){let U=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${U.slice(0,200)}`)}let G=await Y.json();if(!G.success||!G.data?.branding)return null;let J=G.data.branding,K=G.data.metadata??{},W=aI4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((U)=>U.trim()).filter(Boolean)?.slice().sort((U,B)=>U.length-B.length)[0]??K.ogSiteName??Q??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function aI4($,Z){let Q=$.images??{},X=$.colors??{},Y={};for(let[F,N]of Object.entries(X))if(typeof N==="string"&&N&&oI4.has(F))Y[F]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,N]of Object.entries(K))if(typeof N==="string"&&N){let U=rI4[F.toLowerCase()];if(U&&!G[U])G[U]=N}let W=$.fonts;if(Array.isArray(W))for(let F of W){let N=F.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:Q.logo??null,favicon:Q.favicon??null,ogImage:Q.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var oI4,rI4;var A81=L(()=>{oI4=new Set(["primary","secondary","accent","background","foreground"]),rI4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as T30}from"zod";var sI4,T81;var GL$=L(()=>{k0();A81();wZ();sI4=uL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:T30.boolean()}),T81=c({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:T30.object({domain:T30.string().describe("Website domain to extract brand from"),brandId:T30.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:sI4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=Z.firecrawlApiKey;if(!X)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await A30($.domain,X,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let G={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},J=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,Q))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,Q,G)})():await Z.storage.brandContext.create(Q,G);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function JL$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let Q=Object.fromEntries(Object.entries(Z).filter(([X])=>X!=="tagline"&&X!=="tone"));return Object.keys(Q).length>0?Q:void 0})()}}var R81,I81;var KL$=L(()=>{q$1();k0();R81=c({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:$30,outputSchema:Qr,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=$.id?await Z.storage.brandContext.get($.id,Q):await Z.storage.brandContext.getDefault(Q);if(!X)throw Error($.id?"Brand not found":"No default brand configured");return JL$(X)}}),I81=c({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Z30,outputSchema:Q30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q)).map(JL$)}}})});import{resolveTxt as eI4}from"dns/promises";function q81($){return`${$q4}.${$.toLowerCase()}`}function WL$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function HL$($,Z,Q=eI4){if(!Z)return!1;try{return(await Q(q81($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var $q4="_deco-verify";var FL$=()=>{};import{z as g5}from"zod";function cL($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?q81($.domain):null,recordValue:Z?$.verificationToken:null}}function Qq4($){let Z=$.toLowerCase().trim();if(!Zq4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(qK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var Zq4,M81,R30,V81,k81,S81,C81,_81;var NL$=L(()=>{jG();FL$();k0();Zq4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,M81=g5.enum(["off","auto","request"]),R30=g5.object({id:g5.string(),domain:g5.string(),joinMode:M81,verificationStatus:g5.enum(["pending","verified"]),verificationMethod:g5.enum(["email","dns"]).nullable(),verifiedAt:g5.string().nullable(),recordName:g5.string().nullable(),recordValue:g5.string().nullable()});V81=c({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({}),outputSchema:g5.object({domains:g5.array(R30)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(Q.id)).map(cL)}}}),k81=c({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({domain:g5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:M81.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:R30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=Qq4($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===X,K=await Z.storage.organizationDomains.getByOrgAndDomain(Q.id,X);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return cL(H)}return cL(K)}let W=J?await Z.storage.organizationDomains.add(Q.id,X,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(Q.id,X,{joinMode:"off",verificationStatus:"pending",verificationToken:WL$()});return cL(W)}}),S81=c({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({id:g5.string(),joinMode:M81}),outputSchema:R30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if($.joinMode!=="off"&&X.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return cL(Y)}}),C81=c({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:g5.object({id:g5.string()}),outputSchema:g5.object({verified:g5.boolean(),domain:R30}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if(X.verificationStatus==="verified")return{verified:!0,domain:cL(X)};if(!X.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await HL$(X.domain,X.verificationToken))return{verified:!1,domain:cL(X)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:cL(G)}}}),_81=c({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({id:g5.string()}),outputSchema:g5.object({success:g5.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function lL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as C9}from"zod";var Xq4,v81,x81,f81;var UL$=L(()=>{k0();f4();Xq4=C9.object({id:C9.string(),userId:C9.string(),status:C9.enum(["pending","approved","denied"]),createdAt:C9.string(),user:C9.object({id:C9.string(),name:C9.string(),email:C9.string(),image:C9.string().nullable()}).nullable()}),v81=c({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({}),outputSchema:C9.object({requests:C9.array(Xq4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(Q.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),x81=c({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({requestId:C9.string()}),outputSchema:C9.object({success:C9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(!await Z.storage.organizationJoinRequests.decide(X.id,"approved",Y??X.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:Q.id,userId:X.userId,role:["user"]})}catch(J){if(!lL(J))throw J}if(Y)h1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}}),f81=c({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({requestId:C9.string()}),outputSchema:C9.object({success:C9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(await Z.storage.organizationJoinRequests.decide(X.id,"denied",Y??X.userId)&&Y)h1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}})});import{z as HY}from"zod";var b81;var BL$=L(()=>{f4();k0();XY();b81=c({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:HY.object({organizationId:HY.string().optional(),userId:HY.string(),role:HY.array(HY.string())}),outputSchema:HY.object({id:HY.string(),organizationId:HY.string(),userId:HY.string(),role:HY.union([HY.string(),HY.array(HY.string())]),createdAt:HY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!CG0(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:Q,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_added",groups:{organization:Q},properties:{organization_id:Q,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as eh}from"zod";var y81;var OL$=L(()=>{f4();k0();y81=c({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eh.object({organizationId:eh.string().optional(),memberIdOrEmail:eh.string()}),outputSchema:eh.object({success:eh.boolean(),memberIdOrEmail:eh.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.removeMember({organizationId:Q,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(X.member.userId,Q);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:Q},properties:{organization_id:Q,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as LQ}from"zod";var g81;var LL$=L(()=>{k0();g81=c({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LQ.object({limit:LQ.number().int().min(1).max(1000).optional(),offset:LQ.number().int().min(0).optional()}),outputSchema:LQ.object({members:LQ.array(LQ.object({id:LQ.string(),organizationId:LQ.string(),userId:LQ.string(),role:LQ.string(),createdAt:LQ.string().datetime().describe("ISO 8601 timestamp"),user:LQ.object({id:LQ.string(),name:LQ.string(),email:LQ.string(),image:LQ.string().optional()}).optional()}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:Q,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as aZ}from"zod";var h81;var DL$=L(()=>{f4();k0();XY();h81=c({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:aZ.object({organizationId:aZ.string().optional(),memberId:aZ.string(),role:aZ.array(aZ.string())}),outputSchema:aZ.object({id:aZ.string(),organizationId:aZ.string(),userId:aZ.string(),role:aZ.union([aZ.string(),aZ.array(aZ.string())]),createdAt:aZ.string().datetime().describe("ISO 8601 timestamp"),user:aZ.object({email:aZ.string(),name:aZ.string(),image:aZ.string().optional()})}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!CG0(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:Q,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,Q);let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:Q},properties:{organization_id:Q,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function wL$(){if(Ar&&Date.now()-Ar.fetchedAt<600000)return Ar.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),Q=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(Q)||Q<=0)throw Error("Invalid rate");return Ar={rate:Q,fetchedAt:Date.now()},Q}catch{return Ar?.rate??5.5}}function EL$($,Z,Q){if(Z==="brl")return Math.round($/Q);return $}var Ar=null;function u81($,Z="",Q=new URLSearchParams){for(let[X,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${X}]`:X;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)u81(J,`${G}[${K}]`,Q);else Q.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")u81(Y,G,Q);else Q.append(G,String(Y))}return Q}async function Tr($,Z){let Q=y0().stripeSecretKey;if(!Q)throw new zG(503,"billing is not configured");let X=Z?.params?u81(Z.params).toString():void 0,Y=await fetch(`${Yq4}${$}`,{method:Z?.method??(X?"POST":"GET"),headers:{Authorization:`Bearer ${Q}`,...X&&{"Content-Type":"application/x-www-form-urlencoded"}},body:X,signal:AbortSignal.timeout(Gq4)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new zG(Y.status,J)}return G}function jL$($){return{billing_address_collection:"required",custom_fields:[{key:Jq4,label:{type:"custom",custom:"CPF / CNPJ"},type:"text",optional:!1,text:{minimum_length:Kq4,maximum_length:Wq4}}],...$&&{customer_update:{address:"auto",name:"auto"}}}}async function zL$($){let Z=y0().stripeOrgPriceId;if(!Z)throw new zG(503,"billing is not configured");let Q=await Tr("/checkout/sessions",{params:{mode:"subscription",...jL$(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!Q.url)throw new zG(500,"checkout session lacks url");return{url:Q.url}}function Hq4($,Z){return Math.round($*(1+Z/100))}async function PL$($){let Z=Hq4($.amountCents,$.feePercent),Q=EL$($.amountCents,$.currency,await wL$()),X=y0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:Q},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await Tr("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...jL$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...X?{product:X}:{product_data:{name:G}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!J.url)throw new zG(500,"checkout session lacks url");return{url:J.url}}async function I30($){let Z=await Tr("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new zG(500,"portal session lacks url");return{url:Z.url}}async function q30($){return Tr(`/subscriptions/${encodeURIComponent($)}`)}async function AL$($){await Tr(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var Yq4="https://api.stripe.com/v1",zG,Gq4=15000,Jq4="taxid",Kq4=11,Wq4=18;var Tz=L(()=>{R$();zG=class zG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});function mL($,Z){let Q=`/${encodeURIComponent($)}/settings`;return Z?`${Q}/${Z}`:Q}import{z as c81}from"zod";var l81;var TL$=L(()=>{Tz();p5();k0();f4();l81=c({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:c81.object({}),outputSchema:c81.object({url:c81.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id,X=Z.organization?.slug;if(!Q||!X)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(Q);if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let G=`${m9()}${mL(X,"members")}`,{url:J}=await zL$({organizationId:Q,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return LG({event:"subscription_checkout_started",organizationId:Q,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as m81}from"zod";var d81;var RL$=L(()=>{Tz();p5();k0();d81=c({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:m81.object({}),outputSchema:m81.object({url:m81.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);if(!Q.slug)throw Error("Organization context required");let X=await Z.storage.organizationBilling.getBilling(Q.id);if(!X?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await I30({customerId:X.stripeCustomerId,returnUrl:`${m9()}${mL(Q.slug,"members")}`})}catch(Y){if(Y instanceof zG)throw Error(Y.message);throw Y}}})});function M30($){return i81[$%i81.length]??Fq4}function FY($){return $.createdBy==="system"}function Uq4($){if($?.reviewer_enabled===void 0&&$?.qa_agent_enabled===!1&&$?.code_reviewer_enabled===!1)return!1;return LX($,"reviewer_enabled")}function tN($){return Uq4($)?zH:[]}function Bq4($){return LX($,"delivery_lanes_enabled")}function AH($){return Bq4($)?"merged":"done"}function iL($,Z){if(!$)return!1;return[PH[Z],...Nq4].some((Q)=>$.startsWith(`${Q}:`))}function oN($,Z){if(Z)return new Date(Z).getTime();let Q=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Q=Math.max(Q,new Date(X.occurredAt).getTime())}return Q}function pL($,Z){let Q=oN($,Z.cycleStartedAt),X=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<Q)continue;let G=Y.data??{};if(G.reviewer!=="reviewer")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;X.set("reviewer","approved")}else X.set("reviewer","changes_requested")}return X}function dL($,Z,Q){if(Z.length===0)return!1;let X=pL($,Q);return Z.every((Y)=>X.get(Y)==="approved")}function qL$($,Z,Q){return dL($,Z,Q)&&!dL($,Z,{...Q,verifiedOnly:!0})}function ML$($){let Z=null;for(let Q of $){if(Q.action!=="review_approved"&&Q.action!=="review_changes_requested")continue;let X=new Date(Q.occurredAt).getTime();if(Z&&X<Z.at)continue;let Y=Q.data?.notes;Z={at:X,notes:Q.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}var G8="super-agent",i81,Fq4,Rr='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',IL$,p81="chore",zH,PH,Nq4,Ir="NO VISUAL SURFACE",V30,k30,VL$="task-board.item.updated",kL$="task-board.item.deleted";var h6=L(()=>{wZ();i81=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],Fq4=i81[0];IL$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",zH=["reviewer"],PH={reviewer:"Reviewer"},Nq4=["QA Agent","Code Reviewer"];V30=["triage","todo","in_progress","in_review","approved","merged","post_deploy_validation","done","archived"],k30=["approved","merged","post_deploy_validation"]});function n81($){return $==="trial"?"trial":"subscription"}function qr($,Z,Q,X={}){LG({event:Z,organizationId:Q.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:Q.id,...X}})}function t81($){return $?.status==="active"||$?.status==="past_due"}function S30($,Z){if(t81($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function Mr(){let $=y0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function nL(){return{...Mr(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function $u($,Z,Q=Mr()){if(!Q.enforced||!FY(Z))return;let X=await $.storage.organizationBilling.taskClaim(Z.id);if(X&&X.runCount>=Q.maxRunsPerTask)throw qr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new DX("runs_exhausted");if(X&&X.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=S30(Y,Q);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw qr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:n81(G.periodKey),limit:G.limit}),new DX(G.exhaustedReason)}async function SL$($,Z,Q=Mr()){if(!Q.enforced||!FY(Z))return"skipped";let X=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=S30(X,Q),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,Q.maxRunsPerTask);if(G==="exhausted")throw qr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:n81(Y.periodKey),limit:Y.limit}),new DX(Y.exhaustedReason);if(G==="runs_exhausted")throw qr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new DX("runs_exhausted");if(G==="claimed")qr($,"task_quota_claimed",Z,{billing_mode:n81(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function CL$($,Z,Q,X){if(X==="skipped")return;await $.rollbackTaskClaim(Z,Q,{releaseSlot:X==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function _L$($,Z){let Q=await $.storage.organizationBilling.taskClaim(Z);return!!Q&&Q.state!=="released"}async function vL$($,Z,Q){if(await $.releaseTaskClaim(Z,Q).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))LG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:Q}})}var Oq4="[SUBSCRIPTION_REQUIRED]",Lq4,DX;var uJ=L(()=>{h6();f4();R$();Lq4={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};DX=class DX extends Error{reason;constructor($){super(`${Oq4} ${Lq4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as rN}from"zod";var o81;var xL$=L(()=>{k0();uJ();o81=c({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:rN.object({}),outputSchema:rN.object({enforced:rN.boolean(),billingStatus:rN.string(),subscribed:rN.boolean(),hasBillingAccount:rN.boolean(),used:rN.number(),limit:rN.number(),currentPeriodEnd:rN.string().datetime().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=Mr(),Y=await Z.storage.organizationBilling.getBilling(Q.id),G=S30(Y,X),J=await Z.storage.organizationBilling.countTaskClaims(Q.id,G.periodKey);return{enforced:X.enforced,billingStatus:Y?.status??"none",subscribed:t81(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var fL$=L(()=>{nO$();tO$();oO$();rO$();aO$();eO$();$L$();QL$();YL$();GL$();KL$();NL$();UL$();BL$();OL$();LL$();DL$();TL$();RL$();xL$()});function TH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function C30($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(C30);if(typeof $==="object")return Object.entries($).every(([Z,Q])=>typeof Z==="string"&&(Q===void 0||C30(Q)));return!1}function r81($){return Array.isArray($)&&$.every(C30)}function Vr($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,Q])=>typeof Z==="string"&&(Q===void 0||C30(Q)))}var FD$="vercel.ai.error",wq4,bL$,yL$,W1,ND$="AI_APICallError",UD$,Eq4,gL$,hL$,H4,BD$="AI_EmptyResponseBodyError",OD$,jq4,uL$,cL$,_30,LD$="AI_InvalidArgumentError",DD$,zq4,lL$,mL$,tL,wD$="AI_InvalidPromptError",ED$,Pq4,dL$,iL$,cJ,jD$="AI_InvalidResponseDataError",zD$,Aq4,pL$,nL$,Zu,PD$="AI_JSONParseError",AD$,Tq4,tL$,oL$,aN,TD$="AI_LoadAPIKeyError",RD$,Rq4,rL$,aL$,Rz,ID$="AI_LoadSettingError",qD$,Iq4,sL$,eL$,MD$,VD$="AI_NoContentGeneratedError",kD$,qq4,$D$,ZD$,SD$,CD$="AI_NoSuchModelError",_D$,Mq4,QD$,XD$,s5,vD$="AI_TooManyEmbeddingValuesForCallError",xD$,Vq4,YD$,GD$,Qu,fD$="AI_TypeValidationError",bD$,kq4,JD$,KD$,T5,yD$="AI_UnsupportedFunctionalityError",gD$,Sq4,WD$,HD$,y4;var $$=L(()=>{wq4=Symbol.for(FD$),W1=class $ extends(yL$=Error,bL$=wq4,yL$){constructor({name:Z,message:Q,cause:X}){super(Q);this[bL$]=!0,this.name=Z,this.cause=X}static isInstance(Z){return $.hasMarker(Z,FD$)}static hasMarker(Z,Q){let X=Symbol.for(Q);return Z!=null&&typeof Z==="object"&&X in Z&&typeof Z[X]==="boolean"&&Z[X]===!0}},UD$=`vercel.ai.error.${ND$}`,Eq4=Symbol.for(UD$),H4=class extends(hL$=W1,gL$=Eq4,hL$){constructor({message:$,url:Z,requestBodyValues:Q,statusCode:X,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=X!=null&&(X===408||X===409||X===429||X>=500),data:W}){super({name:ND$,message:$,cause:J});this[gL$]=!0,this.url=Z,this.requestBodyValues=Q,this.statusCode=X,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return W1.hasMarker($,UD$)}},OD$=`vercel.ai.error.${BD$}`,jq4=Symbol.for(OD$),_30=class extends(cL$=W1,uL$=jq4,cL$){constructor({message:$="Empty response body"}={}){super({name:BD$,message:$});this[uL$]=!0}static isInstance($){return W1.hasMarker($,OD$)}};DD$=`vercel.ai.error.${LD$}`,zq4=Symbol.for(DD$),tL=class extends(mL$=W1,lL$=zq4,mL$){constructor({message:$,cause:Z,argument:Q}){super({name:LD$,message:$,cause:Z});this[lL$]=!0,this.argument=Q}static isInstance($){return W1.hasMarker($,DD$)}},ED$=`vercel.ai.error.${wD$}`,Pq4=Symbol.for(ED$),cJ=class extends(iL$=W1,dL$=Pq4,iL$){constructor({prompt:$,message:Z,cause:Q}){super({name:wD$,message:`Invalid prompt: ${Z}`,cause:Q});this[dL$]=!0,this.prompt=$}static isInstance($){return W1.hasMarker($,ED$)}},zD$=`vercel.ai.error.${jD$}`,Aq4=Symbol.for(zD$),Zu=class extends(nL$=W1,pL$=Aq4,nL$){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:jD$,message:Z});this[pL$]=!0,this.data=$}static isInstance($){return W1.hasMarker($,zD$)}},AD$=`vercel.ai.error.${PD$}`,Tq4=Symbol.for(AD$),aN=class extends(oL$=W1,tL$=Tq4,oL$){constructor({text:$,cause:Z}){super({name:PD$,message:`JSON parsing failed: Text: ${$}.
|
|
2312
|
+
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(Q)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(Q)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(Q)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(Q)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(Q)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(Q)}`.execute($)}async function wI4($,Z,Q,X){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(Q)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(X).execute(Y)})}catch(Y){if(LI4(Y))return await DI4($,Z,Q),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(Q)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(X).execute(G)});throw Y}}var FI4,UI4,LO$;var DO$=L(()=>{k0();FI4=EH.object({results:EH.array(EH.unknown()).optional(),success:EH.boolean().optional()});UI4=EH.object({sql:EH.string().describe("The SQL query to run"),params:EH.array(EH.unknown()).describe("The parameters to pass to the SQL query").optional()});LO$=c({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:UI4,outputSchema:EH.object({result:EH.array(FI4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=NI4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let X=BI4(Z.connectionId),Y=OI4(Z.connectionId);return{result:[{results:(await wI4(Z.db,X,Y,Q)).rows,success:!0}]}}})});function B30($){let Z=$.access.getRole();if(!NQ(Z))throw new yN("Only organization owners and admins can change org-wide pin status")}var g$1=L(()=>{XY();sj()});async function O30($,Z,Q){let X=[...new Set(Q)],Y=await Promise.all(X.map((J)=>$.storage.connections.findById(J,Z))),G=X.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function dN($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function L30($){let Z=2166136261;for(let Q=0;Q<$.length;Q++)Z=Math.imul(Z^$.charCodeAt(Q),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function Ur($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function Br($,Z){if(!Z)return $;let Q=`${L30(Z)}_`;return $.startsWith(Q)?$.slice(Q.length):$}function jI4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var ah;var wO$=L(()=>{aW();ah=class ah extends p9{static MAX_PAGES_PER_CLIENT=1000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$;for(let Q of Object.keys($)){let X=L30(Q);if(this.slugToKey.has(X))throw Error(`GatewayClient: duplicate namespace code "${X}" from keys "${this.slugToKey.get(X)}" and "${Q}"`);this.slugToKey.set(X,Q)}}namespace($,Z){return`${L30($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let X=$.slice(0,Z),Y=this.slugToKey.get(X);if(Y)return[Y,$.slice(Z+1)]}let{tools:Q}=await this.listTools();for(let X of Q){let Y=Ur(X._meta);if(!Y)continue;if(Br(X.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve tool "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}async resolvePromptTarget($){let Z=$.indexOf("_");if(Z!==-1){let X=$.slice(0,Z),Y=this.slugToKey.get(X);if(Y)return[Y,$.slice(Z+1)]}let{prompts:Q}=await this.listPrompts();for(let X of Q){let Y=Ur(X._meta);if(!Y)continue;if(Br(X.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve prompt "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let Q=this.clients[$];if(!Q)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let X=Q.client,Y;try{Y=typeof X==="function"?Promise.resolve(X()):Promise.resolve(X)}catch(J){return Promise.reject(J)}let G=Y.catch((J)=>{throw this.resolvedClients.delete($),J});return this.resolvedClients.set($,G),G}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,Q){try{let X=await this.resolveClient($);return await Z(X)}catch(X){return console.warn(`GatewayClient: skipping ${Q} from client "${$}" \u2014 ${X?.message??X}`),[]}}async paginate($,Z,Q){let X=[],Y,G=0;do{let J=await Q(Y);X.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<ah.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${ah.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return X}fetchAllTools($,Z){return this.paginate(Z,"tools",async(Q)=>{let X=await $.listTools(Q?{cursor:Q}:void 0);return{items:X.tools,nextCursor:X.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(Q)=>{let X=await $.listResources(Q?{cursor:Q}:void 0);return{items:X.resources,nextCursor:X.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(Q)=>{let X=await $.listResourceTemplates(Q?{cursor:Q}:void 0);return{items:X.resourceTemplates,nextCursor:X.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(Q)=>{let X=await $.listPrompts(Q?{cursor:Q}:void 0);return{items:X.prompts,nextCursor:X.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,Q]of Object.entries(this.clients)){let X=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=Q.tools,G=Y?new Set(Y):null;for(let J of X){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],Q=new Map;for(let[X,Y]of Object.entries(this.clients)){let G=await this.listFromClient(X,(W)=>this.fetchAllResources(W,X),"resources"),J=Y.resources,K=J?new Set(J):null;for(let W of G){if(K&&!K.has(W.uri)&&!(W.name&&K.has(W.name)))continue;if($.has(W.uri)){console.warn(`GatewayClient: duplicate resource "${W.uri}" from client "${X}" \u2014 skipping`);continue}$.add(W.uri),Q.set(W.uri,X),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:X}})}}return this.resourceRouteMap=Q,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[Q,X]of Object.entries(this.clients)){let Y=await this.listFromClient(Q,(G)=>this.fetchAllResourceTemplates(G,Q),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${Q}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:Q}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,Q]of Object.entries(this.clients)){let X=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=Q.prompts,G=Y?new Set(Y):null;for(let J of X){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??jI4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,Q){let[X,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(X)).callTool({...$,name:Y},Z,Q)}async readResource($,Z){let Q=await this.resolveResourceRoute($.uri);return(await this.resolveClient(Q)).readResource($)}async getPrompt($,Z){let[Q,X]=await this.resolvePromptTarget($.name);return(await this.resolveClient(Q)).getPrompt({...$,name:X})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((Q)=>Q.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var D30=L(()=>{wO$()});function u$1($){return dN($)}function PI4($,Z){let Q=dN(Z)||"prompt";return`${String($).padStart(zI4,"0")}-${Q}`}async function c$1($,Z,Q){try{await $.delete(w30,u$1(Z),{actor:Q})}catch(X){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:X})}}async function E30($,Z,Q,X){let Y=u$1(Z);await c$1($,Z,Q),await Promise.all(X.slice(0,h$1).map(async(G,J)=>{let K=PI4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(w30,`${Y}/${K}.json`,JSON.stringify(W),{actor:Q,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function EO$($,Z){let Q=u$1(Z),X;try{X=await $.listDir(w30,Q)}catch{return[]}let Y=X.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,h$1),G=[];for(let J of Y)try{let K=await $.read(w30,J.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")G.push(W)}catch{}return G}var w30="agent-prompts",h$1=20,zI4;var Or=L(()=>{D30();zI4=String(h$1-1).length});function sh($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as PO$}from"zod";function AI4(){let $=jO$[Math.floor(Math.random()*jO$.length)];return`icon://${zO$[Math.floor(Math.random()*zO$.length)]}?color=${$}`}var jO$,zO$,TI4,RI4,l$1;var AO$=L(()=>{k0();kL();g$1();Or();jO$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],zO$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];TI4=PO$.object({data:gQ0.describe("Data for the new virtual MCP")}),RI4=PO$.object({item:GQ.describe("The created virtual MCP entity")}),l$1=c({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:TI4,outputSchema:RI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)B30(Z);let{prompts:Y,metadata:G,...J}=$.data,K=sh(G);if(J.connections.length>0)await O30(Z,Q.id,J.connections.map((F)=>F.connection_id));let W={...J,metadata:K,icon:J.icon??AI4()},H=await Z.storage.virtualMcps.create(Q.id,X,W);if(Y?.length&&Z.orgFs&&H.id)await E30(Z.orgFs,H.id,X,Y);return{item:H}}})});function II4($){let Z=[],Q=0;while(Q<$.length){let X=$[Q];if(X==="%")Z.push(".*");else if(X==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(X))Z.push("\\"+X);else Z.push(X);Q++}return Z.join("")}function yL($){return typeof $==="string"||typeof $==="number"}function m$1($,Z){let Q=Z.split("."),X=$;for(let Y of Q){if(X==null||typeof X!=="object")return;X=X[Y]}return X}function qI4($,Z){return $.connections.some((Q)=>Q.connection_id===Z)}function j30($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>j30($,H));case"or":return W.some((H)=>j30($,H));case"not":return!W.every((H)=>j30($,H));default:return!0}}let{field:Q,operator:X,value:Y}=Z,G=Q.join(".");if(G==="connection_id"){if(X!=="eq"||typeof Y!=="string")return!1;return qI4($,Y)}let J=m$1($,G);switch(X){case"eq":return J===Y;case"gt":return yL(J)&&yL(Y)&&J>Y;case"gte":return yL(J)&&yL(Y)&&J>=Y;case"lt":return yL(J)&&yL(Y)&&J<Y;case"lte":return yL(J)&&yL(Y)&&J<=Y;case"in":return Array.isArray(Y)&&Y.includes(J);case"like":if(typeof J!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;let K=II4(Y);return new RegExp(`^${K}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Y!=="string")return!1;return J.toLowerCase().includes(Y.toLowerCase());default:return!0}}function MI4($,Z){return[...$].sort((Q,X)=>{for(let Y of Z){let G=Y.field.join("."),J=m$1(Q,G),K=m$1(X,G),W=0;if(J==null&&K==null)continue;if(J==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof K==="string")W=J.localeCompare(K);else if(typeof J==="number"&&typeof K==="number")W=J-K;else W=String(J).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var VI4,kI4,d$1;var TO$=L(()=>{fJ();k0();kL();VI4=TK,kI4=lN(GQ),d$1=c({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VI4,outputSchema:kI4,handler:async($,Z)=>{await Z.access.check();let Q=a(Z),X=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,J=X?await Z.storage.virtualMcps.listByConnectionId(Q.id,X):await Z.storage.virtualMcps.list(Q.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((U)=>j30(U,$.where));if($.orderBy&&$.orderBy.length>0)J=MI4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),N=W+H<K;return{items:F,totalCount:K,hasMore:N}}})});import{z as i$1}from"zod";var SI4,CI4,p$1;var RO$=L(()=>{k0();kL();SI4=i$1.object({id:i$1.string().describe("ID of the virtual MCP to retrieve")}),CI4=i$1.object({item:GQ.nullable().describe("The retrieved virtual MCP, or null if not found")}),p$1=c({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:SI4,outputSchema:CI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=await Z.storage.virtualMcps.findById($.id);if(X&&X.organization_id!==Q.id)return{item:null};if(!X)return{item:null};return{item:X}}})});function gJ($){return n$1.test($)}function IO$($){let Z=(Q)=>typeof Q==="string"?Q.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var n$1;var gL=L(()=>{n$1=/^[a-z0-9][a-z0-9-]{0,59}$/});function qO$($){let{nextTitle:Z,currentTitle:Q,currentSiteSlug:X}=$;if(X?.trim())return null;if(Z===void 0||Z===Q)return null;let Y=Q?.trim().toLowerCase()??"";return gJ(Y)?Y:null}var MO$=L(()=>{gL()});import{z as t$1}from"zod";var _I4,vI4,o$1;var VO$=L(()=>{k0();Or();kL();g$1();MO$();_I4=t$1.object({id:t$1.string().describe("ID of the virtual MCP to update"),data:hQ0.describe("Partial virtual MCP data to update")}),vI4=t$1.object({item:GQ.describe("The updated virtual MCP entity")}),o$1=c({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_I4,outputSchema:vI4,handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:J,...K}=$.data,W=sh(J);if(W&&Y.metadata)W={...Y.metadata,...W};else if(W===null&&Y.metadata?.sandboxMap)W={sandboxMap:Y.metadata.sandboxMap};let H={...K,...J!==void 0?{metadata:W}:{}},F=qO$({nextTitle:H.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(F)H.metadata={...Y.metadata,...H.metadata,siteSlug:F};if(H.pinned!==void 0&&H.pinned!==Y.pinned)B30(Z);if(H.connections?.length)await O30(Z,Q.id,H.connections.map((U)=>U.connection_id));let N=await Z.storage.virtualMcps.update($.id,X,H);if(G!==void 0&&Z.orgFs)await E30(Z.orgFs,$.id,X,G);return{item:N}}})});function xI4($){if(!$)return!1;let Z=a$1.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function SO$($){let Z={...$};for(let Q of a$1)Z[Q]="read";return Z}async function CO$($,Z){let Q={...Z};for(;;){let X=await $(Q);if(!X.isError)return{result:X,grantedPermissions:Q};let Y=X.content?.find((W)=>W.type==="text")?.text,G=a$1.find((W)=>(W in Q));if(!G||!xI4(Y))return{result:X,grantedPermissions:Q};let{[G]:J,...K}=Q;Q=K}}function fI4($){if(!$||typeof $!=="object"||Array.isArray($))return kO$;let Z=$;if(Object.values(Z).some((Q)=>typeof Q!=="string"))return kO$;return Z}function bI4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function y5($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let Q=bI4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:Q,owner:Z.owner,repo:Z.repo,permissions:fI4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Pz($){return $.metadata?.orgShared===!0}function _O$($){let Z=new Set,Q=[];for(let X of $??[]){if(X.status!=="active")continue;let Y=y5(X);if(Y===null)continue;let G=r$1(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),Q.push(`${Y.owner}/${Y.repo}`)}return Q}function z30($,Z,Q){let X=r$1(Z,Q),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=y5(G);return J!==null&&r$1(J.owner,J.repo)===X});return Y.find(Pz)??Y[0]??null}var kO$,a$1,r$1=($,Z)=>`${$}/${Z}`.toLowerCase();var JY=L(()=>{kO$={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},a$1=["deployments","checks"]});function vO$($){return qJ($)!==null||WY0($)!==null}var xO$=L(()=>{g8()});import{z as s$1}from"zod";var yI4,gI4,e$1;var fO$=L(()=>{JY();yJ();k0();Or();kL();xO$();yI4=s$1.object({id:s$1.string().describe("ID of the virtual MCP to delete")}),gI4=s$1.object({item:GQ.describe("The deleted virtual MCP entity")}),e$1=c({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:yI4,outputSchema:gI4,handler:async($,Z)=>{s(Z);let Q=a(Z);if(await Z.access.check(),vO$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let X=await Z.storage.virtualMcps.findById($.id);if(!X)throw Error(`Virtual MCP not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(Q.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(Q.id,{main_agent_id:null})}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:$.id,error:G.message})}if(Z.orgFs)await c$1(Z.orgFs,$.id,a0(Z)??"system");let Y=X.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,Q.id),J=G&&(Pz(G)||(await Z.storage.virtualMcps.listByConnectionId(Q.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&y5(G)&&!J){let W=await new a6(Z.db,Z.vault).get(Y);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(Y)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Y,error:G.message})}return{item:X}}})});import{z as KY}from"zod";var hI4,$81;var bO$=L(()=>{k0();hI4=KY.object({id:KY.string(),virtualMcpId:KY.string(),pluginId:KY.string(),connectionId:KY.string().nullable(),settings:KY.record(KY.string(),KY.unknown()).nullable(),createdAt:KY.string(),updatedAt:KY.string()}),$81=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:KY.object({virtualMcpId:KY.string().describe("Virtual MCP ID"),pluginId:KY.string().describe("Plugin ID")}),outputSchema:KY.object({config:hI4.nullable()}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y}=$,G=await Z.storage.connections.findById(X);if(!G||G.organization_id!==Q.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(X,Y);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as rZ}from"zod";var uI4,Z81;var yO$=L(()=>{k0();nh();p5();uI4=rZ.object({id:rZ.string(),virtualMcpId:rZ.string(),pluginId:rZ.string(),connectionId:rZ.string().nullable(),settings:rZ.record(rZ.string(),rZ.unknown()).nullable(),createdAt:rZ.string(),updatedAt:rZ.string()}),Z81=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:rZ.object({virtualMcpId:rZ.string().describe("Virtual MCP ID"),pluginId:rZ.string().describe("Plugin ID"),connectionId:rZ.string().nullable().optional().describe("MCP connection to bind"),settings:rZ.record(rZ.string(),rZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:rZ.object({config:uI4}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y,connectionId:G,settings:J}=$,K=a0(Z),W=await Z.storage.connections.findById(X);if(!W)throw Error(`Connection not found: ${X}`);if(W.organization_id!==Q.id)throw Error(`Connection not found: ${X}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${X}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==Q.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&bJ()&&K30(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=ph(W.organization_id,v5());await Z.storage.connections.create({...N,organization_id:W.organization_id,created_by:K})}else if(G&&!H)throw Error(`Connection not found: ${G}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(X,Y,{connectionId:G,settings:J});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});import{z as BX}from"zod";var cI4,Q81;var gO$=L(()=>{k0();kL();cI4=BX.object({connectionId:BX.string(),toolName:BX.string(),label:BX.string(),icon:BX.string().nullable().optional()}),Q81=c({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:BX.object({virtualMcpId:BX.string().describe("Virtual MCP ID"),pinnedViews:BX.array(cI4).describe("Pinned views to set for the virtual MCP sidebar"),layout:BX.object({defaultMainView:BX.object({type:BX.string(),id:BX.string().optional(),toolName:BX.string().optional()}).nullable().optional(),chatDefaultOpen:BX.boolean().nullable().optional()}).optional()}),outputSchema:BX.object({item:GQ.nullable()}),handler:async($,Z)=>{s(Z);let Q=a(Z);await Z.access.check();let{virtualMcpId:X,pinnedViews:Y,layout:G}=$,J=a0(Z),K=await Z.storage.virtualMcps.findById(X);if(!K)throw Error(`Virtual MCP not found: ${X}`);if(K.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${X}`);let W=K.metadata?.ui??{},H={...W,pinnedViews:Y.length>0?Y:null,layout:G??W.layout??null};return{item:await Z.storage.virtualMcps.update(X,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as iN}from"zod";var lI4,mI4,X81;var hO$=L(()=>{k0();lI4=iN.object({ids:iN.array(iN.string()).max(1000).describe("Virtual MCP ids to look up")}),mI4=iN.object({items:iN.array(iN.object({id:iN.string(),last_used_at:iN.string().optional(),last_used_by:iN.string().optional()}))}),X81=c({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:lI4,outputSchema:mI4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let Q=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((X)=>({id:X,last_used_at:Q.get(X)?.last_used_at,last_used_by:Q.get(X)?.last_used_by}))}}})});var uO$=L(()=>{AO$();TO$();RO$();VO$();fO$();bO$();yO$();gO$();hO$()});import{z as OQ}from"zod";var Y81;var cO$=L(()=>{x6();k0();Y81=c({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OQ.object({startDate:OQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:OQ.array(OQ.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:OQ.array(OQ.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:OQ.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:OQ.object({cells:OQ.array(OQ.object({virtualMcpId:OQ.string().nullable(),toolName:OQ.string(),calls:OQ.number(),errors:OQ.number(),outputSize:OQ.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let Q=a(Z);return await Z.access.check(),await lX(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as A5}from"zod";var G81;var lO$=L(()=>{x6();k0();G81=c({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:A5.object({id:A5.string().describe("Log ID to fetch")}),outputSchema:A5.object({log:A5.object({id:A5.string().optional(),organizationId:A5.string(),connectionId:A5.string(),toolName:A5.string(),input:A5.record(A5.string(),A5.unknown()),output:A5.record(A5.string(),A5.unknown()),isError:A5.boolean(),errorMessage:A5.string().nullish(),durationMs:A5.number(),timestamp:A5.string(),userId:A5.string().nullish(),requestId:A5.string(),userAgent:A5.string().nullish(),virtualMcpId:A5.string().nullish(),properties:A5.record(A5.string(),A5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await lX();let Q=a(Z),X=await Z.storage.monitoring.getById(Q.id,$.id);if(!X)return{log:null};return{log:{...X,timestamp:X.timestamp instanceof Date?X.timestamp.toISOString():X.timestamp}}}})});import{z as j8}from"zod";var iI4,J81;var mO$=L(()=>{x6();k0();iI4=j8.object({id:j8.string().optional().describe("Unique log identifier"),organizationId:j8.string().describe("Organization ID"),connectionId:j8.string().describe("Connection ID"),toolName:j8.string().describe("Name of the tool that was called"),isError:j8.boolean().describe("Whether the call resulted in an error"),errorMessage:j8.string().nullish().describe("Error message if applicable"),durationMs:j8.number().describe("Call duration in milliseconds"),timestamp:j8.string().describe("ISO 8601 timestamp of the call"),userId:j8.string().nullish().describe("User who triggered the call"),requestId:j8.string().describe("Unique request identifier"),userAgent:j8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:j8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:j8.record(j8.string(),j8.string()).nullish().describe("Custom key-value metadata attached to the log")}),J81=c({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j8.object({connectionId:j8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:j8.array(j8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:j8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:j8.string().optional().describe("Filter by tool name"),isError:j8.boolean().optional().describe("Filter by error status"),startDate:j8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:j8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:j8.number().default(20).describe("Maximum number of results"),offset:j8.number().default(0).describe("Offset for pagination"),properties:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:j8.array(j8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:j8.record(j8.string(),j8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:j8.object({logs:j8.array(iI4).describe("Array of monitoring logs"),total:j8.number().describe("Total number of logs matching filters"),offset:j8.number().describe("Current offset for pagination"),limit:j8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await lX();let Q=a(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:Q.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},J=await Z.storage.monitoring.query(G);return{logs:J.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:J.total,offset:$.offset,limit:$.limit}}})});import{z as F$}from"zod";var K81;var dO$=L(()=>{x6();k0();K81=c({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F$.object({startDate:F$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:F$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:F$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:F$.array(F$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:F$.array(F$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:F$.array(F$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:F$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:F$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:F$.array(F$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:F$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:F$.object({totalCalls:F$.number().describe("Total number of tool calls"),errorRate:F$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:F$.number().describe("Average call duration in milliseconds"),errorRatePercent:F$.string().optional().describe("Error rate as a percentage string"),totalErrors:F$.number().optional().describe("Total number of errors"),p50DurationMs:F$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:F$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:F$.array(F$.object({connectionId:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avgDurationMs:F$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:F$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:F$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:F$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:F$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:F$.array(F$.object({toolName:F$.string(),connectionId:F$.string().nullable(),calls:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:F$.array(F$.object({timestamp:F$.string(),toolName:F$.string(),calls:F$.number(),errors:F$.number(),avg:F$.number(),p95:F$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:F$.array(F$.object({timestamp:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avg:F$.number(),p50:F$.number(),p95:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),totalTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let Q=a(Z);if(await Z.access.check(),await lX(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:Q.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let G=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:G.topTools,topToolsTimeseries:G.timeseries}}let X=await Z.storage.monitoring.getStats({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...X,errorRatePercent:(X.errorRate*100).toFixed(2)}}})});import{z as OX}from"zod";var W81;var iO$=L(()=>{x6();k0();W81=c({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:OX.object({threadIds:OX.array(OX.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:OX.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:OX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:OX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:OX.object({items:OX.array(OX.object({threadId:OX.string(),calls:OX.number(),inputTokens:OX.number(),outputTokens:OX.number(),totalTokens:OX.number(),costUsd:OX.number()}))}),handler:async($,Z)=>{let Q=a(Z);return await Z.access.check(),await lX(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:Q.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var pO$=L(()=>{cO$();lO$();mO$();dO$();iO$()});function P30($){return typeof $==="string"&&nI4.has($.trim().toLowerCase())}var nI4;var H81=L(()=>{nI4=new Set([".well-known","_admin","api","auth","choose-editor","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as EG}from"zod";var F81;var nO$=L(()=>{k0();H81();F81=c({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EG.object({slug:EG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!P30($),"Slug is reserved by Studio"),name:EG.string().min(1).max(255),description:EG.string().optional()}),outputSchema:EG.object({id:EG.string(),name:EG.string(),slug:EG.string(),logo:EG.string().nullable().optional(),metadata:EG.any().optional(),createdAt:EG.string().datetime().describe("ISO 8601 timestamp"),members:EG.array(EG.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create organization");let X=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:Q});if(!X)throw Error("Failed to create organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as jH}from"zod";var N81;var tO$=L(()=>{k0();N81=c({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:jH.object({}),outputSchema:jH.object({organizations:jH.array(jH.object({id:jH.string(),name:jH.string(),slug:jH.string(),logo:jH.string().nullable().optional(),metadata:jH.any().optional(),createdAt:jH.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((X)=>({...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}))}}})});import{z as hJ}from"zod";var U81;var oO$=L(()=>{k0();U81=c({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:hJ.object({}),outputSchema:hJ.object({id:hJ.string(),name:hJ.string(),slug:hJ.string(),logo:hJ.string().nullable().optional(),metadata:hJ.any().optional(),createdAt:hJ.string().datetime().describe("ISO 8601 timestamp"),members:hJ.array(hJ.any()).optional(),invitations:hJ.array(hJ.any()).optional()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.boundAuth.organization.get(Q);if(!X)throw Error("No active organization found");let Y=new Date,G=X.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...X,invitations:G,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as RK}from"zod";var B81;var rO$=L(()=>{k0();B81=c({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:RK.object({id:RK.string(),name:RK.string().min(1).max(255).optional(),description:RK.string().optional()}),outputSchema:RK.object({id:RK.string(),name:RK.string(),slug:RK.string(),logo:RK.string().nullable().optional(),metadata:RK.any().optional(),createdAt:RK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q={};if($.name)Q.name=$.name;if($.description!==void 0)Q.metadata={description:$.description};let X=await Z.boundAuth.organization.update({organizationId:$.id,data:Q});if(!X)throw Error("Failed to update organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as Lr}from"zod";var O81;var aO$=L(()=>{k0();O81=c({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Lr.object({id:Lr.string()}),outputSchema:Lr.object({success:Lr.boolean(),id:Lr.string()}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.get($.id);return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...Q?.metadata,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as X$}from"zod";function LX($,Z){let Q=$?.[Z];return tI4.has(Z)?Q!==!1:Q===!0}var Dr,wr,pN,sO$,hL,Er,jr,zr,Pr,tI4,uL;var wZ=L(()=>{Dr=X$.object({title:X$.string(),url:X$.string(),icon:X$.string()}),wr=X$.object({registries:X$.record(X$.string(),X$.object({enabled:X$.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:X$.array(X$.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),pN=X$.object({keyId:X$.string(),modelId:X$.string(),title:X$.string().optional()}).nullable(),sO$=X$.enum(["fast","smart","thinking","image","web_search","deep_research"]),hL=X$.enum(["fast","smart","thinking"]),Er=X$.object({tiers:X$.object({fast:pN,smart:pN,thinking:pN,image:pN,web_search:pN,deep_research:pN})}),jr=X$.object({tiers:X$.object({fast:pN.optional(),smart:pN.optional(),thinking:pN.optional()})}),zr=X$.object({ids:X$.array(X$.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),Pr=X$.object({demo_mode:X$.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:X$.boolean().optional().describe("Curated commerce (reports) look: hides agent navigation, the home Customize button, and the Settings/Automations tabs. Defaulted on for orgs created by commerce onboarding."),org_board_columns:X$.boolean().optional().describe("The task board's columns are this org's own, mirrored from its tracker, rather than the set Studio ships. Off means the canonical lanes, which is the only board most orgs want."),reviewer_enabled:X$.boolean().optional().describe("Run the Reviewer on a task's pull request once it's In Review \u2014 it reviews the code with the repo's stack-appropriate skills, fixes what it finds on the PR's own branch, then exercises the change on the deploy preview and approves or hands the card to a human."),qa_agent_enabled:X$.boolean().optional().describe("Deprecated: see reviewer_enabled."),code_reviewer_enabled:X$.boolean().optional().describe("Deprecated: see reviewer_enabled."),auto_merge:X$.boolean().optional().describe("When the Reviewer approves a task's pull request, merge it automatically instead of leaving the merge to a human. If the merge is blocked by a conflict with the base branch, hand the PR back to the Super Agent to resolve the conflict (check out the branch, merge the base, push) so it can then merge."),cheap_reviewer_model:X$.boolean().optional().describe("Run the Reviewer on a cheaper model than the Super Agent that wrote the code. On by default \u2014 turning it off trades cost for some review depth."),coding_agent_org_mcps:X$.boolean().optional().describe("Give a coding-agent run (the claude-code harness in a sandbox) every MCP connection in the org as its own MCP server, on top of the narrow task-run surface it always gets. Off by default: each connection is one more server the agent connects to at session start, and all of their tools land in its context."),coding_agents_claude_code:X$.boolean().optional().describe("Run chats on a Code Agent (an agent imported from a GitHub repo) with the claude-code harness inside its sandbox, instead of hosted Decopilot. Off by default: it changes the runtime of every such chat, and claude-code flushes whole turns rather than streaming tokens."),auto_assign_report_tasks_to_super_agent:X$.boolean().optional().describe("When a report import creates a task board item without an assignee, delegate it to the Super Agent automatically instead of leaving it unassigned."),delivery_lanes_enabled:X$.boolean().optional().describe("Board lanes for shipping: Approved, Merged and Post-deploy Validation sit between In Review and Done, and a merged pull request lands on Merged instead of Done. For teams whose release process continues after the merge. Off by default \u2014 with it off the board and the state machine behave exactly as if the lanes did not exist."),cms_auto_fresh_branch:X$.boolean().optional().describe("When a user opens the CMS on a branch whose last commit is older than the staleness window (2 days), move the session to a freshly minted branch cut from the default branch. The stale branch is left intact on GitHub. Off by default.")}),tI4=new Set(["reviewer_enabled","cheap_reviewer_model"]);uL=X$.object({id:X$.string().describe("Brand context ID"),name:X$.string().describe("Company name"),domain:X$.string().describe("Company domain (e.g. example.com)"),overview:X$.string().describe("Company overview / description"),logo:X$.string().nullable().optional().describe("Logo URL"),favicon:X$.string().nullable().optional().describe("Favicon URL"),ogImage:X$.string().nullable().optional().describe("OG image URL"),fonts:X$.object({heading:X$.string().optional().describe("Font family for headings"),body:X$.string().optional().describe("Font family for body text"),code:X$.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:X$.object({primary:X$.string().optional().describe("Primary brand color (hex)"),secondary:X$.string().optional().describe("Secondary brand color (hex)"),accent:X$.string().optional().describe("Accent / highlight color (hex)"),background:X$.string().optional().describe("Background color (hex)"),foreground:X$.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:X$.array(X$.record(X$.string(),X$.unknown())).nullable().optional().describe("Brand images"),metadata:X$.record(X$.string(),X$.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:X$.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:X$.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as nN}from"zod";var L81;var eO$=L(()=>{k0();wZ();L81=c({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:nN.object({}),outputSchema:nN.object({organizationId:nN.string(),sidebar_items:nN.array(Dr).nullable().optional(),enabled_plugins:nN.array(nN.string()).nullable().optional(),registry_config:wr.nullable().optional(),simple_mode:Er.nullable().optional(),default_home_agents:zr.nullable().optional(),flags:Pr.nullable().optional(),main_agent_id:nN.string().nullable().optional(),createdAt:nN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:nN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.organizationSettings.get(Q);if(!X)return{organizationId:Q};return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as WY}from"zod";var D81;var $L$=L(()=>{k0();wZ();D81=c({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:WY.object({organizationId:WY.string(),sidebar_items:WY.array(Dr).optional(),enabled_plugins:WY.array(WY.string()).optional(),registry_config:wr.optional(),simple_mode:Er.optional(),default_home_agents:zr.optional(),flags:Pr.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:WY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:WY.object({organizationId:WY.string(),sidebar_items:WY.array(Dr).nullable().optional(),enabled_plugins:WY.array(WY.string()).nullable().optional(),registry_config:wr.nullable().optional(),simple_mode:Er.nullable().optional(),default_home_agents:zr.nullable().optional(),flags:Pr.nullable().optional(),main_agent_id:WY.string().nullable().optional(),createdAt:WY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:WY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(s(Z),await Z.access.check(),a(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let X=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags,main_agent_id:$.main_agent_id});return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as IK}from"zod";var ZL$,w81,E81;var QL$=L(()=>{k0();wZ();ZL$=uL.extend({organizationId:IK.string(),archivedAt:IK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:IK.string().describe("ISO 8601 timestamp"),updatedAt:IK.string().describe("ISO 8601 timestamp")}),w81=c({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IK.object({includeArchived:IK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:IK.object({items:IK.array(ZL$)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),E81=c({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IK.object({id:IK.string().describe("Brand context ID")}),outputSchema:ZL$.extend({organizationId:IK.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.get($.id,Q);if(!X)throw Error("Brand context not found");return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as Az}from"zod";var XL$,j81,z81,P81;var YL$=L(()=>{k0();wZ();XL$=uL.extend({organizationId:Az.string(),createdAt:Az.string().describe("ISO 8601 timestamp"),updatedAt:Az.string().describe("ISO 8601 timestamp")}),j81=c({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:uL.omit({id:!0}),outputSchema:XL$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.create(Q,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}}),z81=c({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uL.partial().required({id:!0}),outputSchema:XL$,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,Q);let J=await Z.storage.brandContext.update(Y,Q,{name:G.name,domain:G.domain,overview:G.overview,logo:G.logo!==void 0?G.logo??null:void 0,favicon:G.favicon!==void 0?G.favicon??null:void 0,ogImage:G.ogImage!==void 0?G.ogImage??null:void 0,fonts:G.fonts!==void 0?G.fonts??null:void 0,colors:G.colors!==void 0?G.colors??null:void 0,images:G.images!==void 0?G.images??null:void 0,metadata:G.metadata!==void 0?G.metadata??null:void 0,archivedAt:G.archivedAt!==void 0?G.archivedAt??null:void 0,isDefault:G.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),P81=c({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Az.object({id:Az.string().describe("Brand context ID")}),outputSchema:Az.object({success:Az.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,Q,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function A30($,Z,Q){let X=$.trim();if(!X.startsWith("http"))X=`https://${X}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:X,formats:["branding"]})});if(!Y.ok){let U=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${U.slice(0,200)}`)}let G=await Y.json();if(!G.success||!G.data?.branding)return null;let J=G.data.branding,K=G.data.metadata??{},W=aI4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((U)=>U.trim()).filter(Boolean)?.slice().sort((U,B)=>U.length-B.length)[0]??K.ogSiteName??Q??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function aI4($,Z){let Q=$.images??{},X=$.colors??{},Y={};for(let[F,N]of Object.entries(X))if(typeof N==="string"&&N&&oI4.has(F))Y[F]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,N]of Object.entries(K))if(typeof N==="string"&&N){let U=rI4[F.toLowerCase()];if(U&&!G[U])G[U]=N}let W=$.fonts;if(Array.isArray(W))for(let F of W){let N=F.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:Q.logo??null,favicon:Q.favicon??null,ogImage:Q.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var oI4,rI4;var A81=L(()=>{oI4=new Set(["primary","secondary","accent","background","foreground"]),rI4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as T30}from"zod";var sI4,T81;var GL$=L(()=>{k0();A81();wZ();sI4=uL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:T30.boolean()}),T81=c({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:T30.object({domain:T30.string().describe("Website domain to extract brand from"),brandId:T30.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:sI4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=Z.firecrawlApiKey;if(!X)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await A30($.domain,X,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let G={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},J=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,Q))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,Q,G)})():await Z.storage.brandContext.create(Q,G);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function JL$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let Q=Object.fromEntries(Object.entries(Z).filter(([X])=>X!=="tagline"&&X!=="tone"));return Object.keys(Q).length>0?Q:void 0})()}}var R81,I81;var KL$=L(()=>{q$1();k0();R81=c({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:$30,outputSchema:Qr,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=$.id?await Z.storage.brandContext.get($.id,Q):await Z.storage.brandContext.getDefault(Q);if(!X)throw Error($.id?"Brand not found":"No default brand configured");return JL$(X)}}),I81=c({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Z30,outputSchema:Q30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q)).map(JL$)}}})});import{resolveTxt as eI4}from"dns/promises";function q81($){return`${$q4}.${$.toLowerCase()}`}function WL$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function HL$($,Z,Q=eI4){if(!Z)return!1;try{return(await Q(q81($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var $q4="_deco-verify";var FL$=()=>{};import{z as g5}from"zod";function cL($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?q81($.domain):null,recordValue:Z?$.verificationToken:null}}function Qq4($){let Z=$.toLowerCase().trim();if(!Zq4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(qK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var Zq4,M81,R30,V81,k81,S81,C81,_81;var NL$=L(()=>{jG();FL$();k0();Zq4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,M81=g5.enum(["off","auto","request"]),R30=g5.object({id:g5.string(),domain:g5.string(),joinMode:M81,verificationStatus:g5.enum(["pending","verified"]),verificationMethod:g5.enum(["email","dns"]).nullable(),verifiedAt:g5.string().nullable(),recordName:g5.string().nullable(),recordValue:g5.string().nullable()});V81=c({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({}),outputSchema:g5.object({domains:g5.array(R30)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(Q.id)).map(cL)}}}),k81=c({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({domain:g5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:M81.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:R30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=Qq4($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===X,K=await Z.storage.organizationDomains.getByOrgAndDomain(Q.id,X);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return cL(H)}return cL(K)}let W=J?await Z.storage.organizationDomains.add(Q.id,X,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(Q.id,X,{joinMode:"off",verificationStatus:"pending",verificationToken:WL$()});return cL(W)}}),S81=c({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({id:g5.string(),joinMode:M81}),outputSchema:R30,handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if($.joinMode!=="off"&&X.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return cL(Y)}}),C81=c({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:g5.object({id:g5.string()}),outputSchema:g5.object({verified:g5.boolean(),domain:R30}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if(X.verificationStatus==="verified")return{verified:!0,domain:cL(X)};if(!X.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await HL$(X.domain,X.verificationToken))return{verified:!1,domain:cL(X)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:cL(G)}}}),_81=c({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:g5.object({id:g5.string()}),outputSchema:g5.object({success:g5.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function lL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as C9}from"zod";var Xq4,v81,x81,f81;var UL$=L(()=>{k0();f4();Xq4=C9.object({id:C9.string(),userId:C9.string(),status:C9.enum(["pending","approved","denied"]),createdAt:C9.string(),user:C9.object({id:C9.string(),name:C9.string(),email:C9.string(),image:C9.string().nullable()}).nullable()}),v81=c({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({}),outputSchema:C9.object({requests:C9.array(Xq4)}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(Q.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),x81=c({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({requestId:C9.string()}),outputSchema:C9.object({success:C9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(!await Z.storage.organizationJoinRequests.decide(X.id,"approved",Y??X.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:Q.id,userId:X.userId,role:["user"]})}catch(J){if(!lL(J))throw J}if(Y)h1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}}),f81=c({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:C9.object({requestId:C9.string()}),outputSchema:C9.object({success:C9.boolean()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(await Z.storage.organizationJoinRequests.decide(X.id,"denied",Y??X.userId)&&Y)h1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}})});import{z as HY}from"zod";var b81;var BL$=L(()=>{f4();k0();XY();b81=c({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:HY.object({organizationId:HY.string().optional(),userId:HY.string(),role:HY.array(HY.string())}),outputSchema:HY.object({id:HY.string(),organizationId:HY.string(),userId:HY.string(),role:HY.union([HY.string(),HY.array(HY.string())]),createdAt:HY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!CG0(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:Q,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_added",groups:{organization:Q},properties:{organization_id:Q,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as eh}from"zod";var y81;var OL$=L(()=>{f4();k0();y81=c({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eh.object({organizationId:eh.string().optional(),memberIdOrEmail:eh.string()}),outputSchema:eh.object({success:eh.boolean(),memberIdOrEmail:eh.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.removeMember({organizationId:Q,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(X.member.userId,Q);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:Q},properties:{organization_id:Q,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as LQ}from"zod";var g81;var LL$=L(()=>{k0();g81=c({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LQ.object({limit:LQ.number().int().min(1).max(1000).optional(),offset:LQ.number().int().min(0).optional()}),outputSchema:LQ.object({members:LQ.array(LQ.object({id:LQ.string(),organizationId:LQ.string(),userId:LQ.string(),role:LQ.string(),createdAt:LQ.string().datetime().describe("ISO 8601 timestamp"),user:LQ.object({id:LQ.string(),name:LQ.string(),email:LQ.string(),image:LQ.string().optional()}).optional()}))}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:Q,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as aZ}from"zod";var h81;var DL$=L(()=>{f4();k0();XY();h81=c({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:aZ.object({organizationId:aZ.string().optional(),memberId:aZ.string(),role:aZ.array(aZ.string())}),outputSchema:aZ.object({id:aZ.string(),organizationId:aZ.string(),userId:aZ.string(),role:aZ.union([aZ.string(),aZ.array(aZ.string())]),createdAt:aZ.string().datetime().describe("ISO 8601 timestamp"),user:aZ.object({email:aZ.string(),name:aZ.string(),image:aZ.string().optional()})}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!CG0(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:Q,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,Q);let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:Q},properties:{organization_id:Q,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function wL$(){if(Ar&&Date.now()-Ar.fetchedAt<600000)return Ar.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),Q=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(Q)||Q<=0)throw Error("Invalid rate");return Ar={rate:Q,fetchedAt:Date.now()},Q}catch{return Ar?.rate??5.5}}function EL$($,Z,Q){if(Z==="brl")return Math.round($/Q);return $}var Ar=null;function u81($,Z="",Q=new URLSearchParams){for(let[X,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${X}]`:X;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)u81(J,`${G}[${K}]`,Q);else Q.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")u81(Y,G,Q);else Q.append(G,String(Y))}return Q}async function Tr($,Z){let Q=y0().stripeSecretKey;if(!Q)throw new zG(503,"billing is not configured");let X=Z?.params?u81(Z.params).toString():void 0,Y=await fetch(`${Yq4}${$}`,{method:Z?.method??(X?"POST":"GET"),headers:{Authorization:`Bearer ${Q}`,...X&&{"Content-Type":"application/x-www-form-urlencoded"}},body:X,signal:AbortSignal.timeout(Gq4)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new zG(Y.status,J)}return G}function jL$($){return{billing_address_collection:"required",custom_fields:[{key:Jq4,label:{type:"custom",custom:"CPF / CNPJ"},type:"text",optional:!1,text:{minimum_length:Kq4,maximum_length:Wq4}}],...$&&{customer_update:{address:"auto",name:"auto"}}}}async function zL$($){let Z=y0().stripeOrgPriceId;if(!Z)throw new zG(503,"billing is not configured");let Q=await Tr("/checkout/sessions",{params:{mode:"subscription",...jL$(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!Q.url)throw new zG(500,"checkout session lacks url");return{url:Q.url}}function Hq4($,Z){return Math.round($*(1+Z/100))}async function PL$($){let Z=Hq4($.amountCents,$.feePercent),Q=EL$($.amountCents,$.currency,await wL$()),X=y0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:Q},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await Tr("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...jL$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...X?{product:X}:{product_data:{name:G}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!J.url)throw new zG(500,"checkout session lacks url");return{url:J.url}}async function I30($){let Z=await Tr("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new zG(500,"portal session lacks url");return{url:Z.url}}async function q30($){return Tr(`/subscriptions/${encodeURIComponent($)}`)}async function AL$($){await Tr(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var Yq4="https://api.stripe.com/v1",zG,Gq4=15000,Jq4="taxid",Kq4=11,Wq4=18;var Tz=L(()=>{R$();zG=class zG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});function mL($,Z){let Q=`/${encodeURIComponent($)}/settings`;return Z?`${Q}/${Z}`:Q}import{z as c81}from"zod";var l81;var TL$=L(()=>{Tz();p5();k0();f4();l81=c({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:c81.object({}),outputSchema:c81.object({url:c81.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=Z.organization?.id,X=Z.organization?.slug;if(!Q||!X)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(Q);if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let G=`${m9()}${mL(X,"members")}`,{url:J}=await zL$({organizationId:Q,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return LG({event:"subscription_checkout_started",organizationId:Q,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as m81}from"zod";var d81;var RL$=L(()=>{Tz();p5();k0();d81=c({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:m81.object({}),outputSchema:m81.object({url:m81.string()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z);if(!Q.slug)throw Error("Organization context required");let X=await Z.storage.organizationBilling.getBilling(Q.id);if(!X?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await I30({customerId:X.stripeCustomerId,returnUrl:`${m9()}${mL(Q.slug,"members")}`})}catch(Y){if(Y instanceof zG)throw Error(Y.message);throw Y}}})});function M30($){return i81[$%i81.length]??Fq4}function FY($){return $.createdBy==="system"}function Uq4($){if($?.reviewer_enabled===void 0&&$?.qa_agent_enabled===!1&&$?.code_reviewer_enabled===!1)return!1;return LX($,"reviewer_enabled")}function tN($){return Uq4($)?zH:[]}function Bq4($){return LX($,"delivery_lanes_enabled")}function AH($){return Bq4($)?"merged":"done"}function iL($,Z){if(!$)return!1;return[PH[Z],...Nq4].some((Q)=>$.startsWith(`${Q}:`))}function oN($,Z){if(Z)return new Date(Z).getTime();let Q=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Q=Math.max(Q,new Date(X.occurredAt).getTime())}return Q}function pL($,Z){let Q=oN($,Z.cycleStartedAt),X=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<Q)continue;let G=Y.data??{};if(G.reviewer!=="reviewer")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;X.set("reviewer","approved")}else X.set("reviewer","changes_requested")}return X}function dL($,Z,Q){if(Z.length===0)return!1;let X=pL($,Q);return Z.every((Y)=>X.get(Y)==="approved")}function qL$($,Z,Q){return dL($,Z,Q)&&!dL($,Z,{...Q,verifiedOnly:!0})}function ML$($){let Z=null;for(let Q of $){if(Q.action!=="review_approved"&&Q.action!=="review_changes_requested")continue;let X=new Date(Q.occurredAt).getTime();if(Z&&X<Z.at)continue;let Y=Q.data?.notes;Z={at:X,notes:Q.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}var G8="super-agent",i81,Fq4,Rr='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',IL$,p81="chore",zH,PH,Nq4,Ir="NO VISUAL SURFACE",V30,k30,VL$="task-board.item.updated",kL$="task-board.item.deleted";var h6=L(()=>{wZ();i81=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],Fq4=i81[0];IL$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",zH=["reviewer"],PH={reviewer:"Reviewer"},Nq4=["QA Agent","Code Reviewer"];V30=["triage","todo","in_progress","in_review","approved","merged","post_deploy_validation","done","archived"],k30=["approved","merged","post_deploy_validation"]});function n81($){return $==="trial"?"trial":"subscription"}function qr($,Z,Q,X={}){LG({event:Z,organizationId:Q.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:Q.id,...X}})}function t81($){return $?.status==="active"||$?.status==="past_due"}function S30($,Z){if(t81($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function Mr(){let $=y0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function nL(){return{...Mr(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function $u($,Z,Q=Mr()){if(!Q.enforced||!FY(Z))return;let X=await $.storage.organizationBilling.taskClaim(Z.id);if(X&&X.runCount>=Q.maxRunsPerTask)throw qr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new DX("runs_exhausted");if(X&&X.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=S30(Y,Q);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw qr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:n81(G.periodKey),limit:G.limit}),new DX(G.exhaustedReason)}async function SL$($,Z,Q=Mr()){if(!Q.enforced||!FY(Z))return"skipped";let X=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=S30(X,Q),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,Q.maxRunsPerTask);if(G==="exhausted")throw qr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:n81(Y.periodKey),limit:Y.limit}),new DX(Y.exhaustedReason);if(G==="runs_exhausted")throw qr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new DX("runs_exhausted");if(G==="claimed")qr($,"task_quota_claimed",Z,{billing_mode:n81(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function CL$($,Z,Q,X){if(X==="skipped")return;await $.rollbackTaskClaim(Z,Q,{releaseSlot:X==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function _L$($,Z){let Q=await $.storage.organizationBilling.taskClaim(Z);return!!Q&&Q.state!=="released"}async function vL$($,Z,Q){if(await $.releaseTaskClaim(Z,Q).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))LG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:Q}})}var Oq4="[SUBSCRIPTION_REQUIRED]",Lq4,DX;var uJ=L(()=>{h6();f4();R$();Lq4={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};DX=class DX extends Error{reason;constructor($){super(`${Oq4} ${Lq4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as rN}from"zod";var o81;var xL$=L(()=>{k0();uJ();o81=c({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:rN.object({}),outputSchema:rN.object({enforced:rN.boolean(),billingStatus:rN.string(),subscribed:rN.boolean(),hasBillingAccount:rN.boolean(),used:rN.number(),limit:rN.number(),currentPeriodEnd:rN.string().datetime().nullable()}),handler:async($,Z)=>{s(Z),await Z.access.check();let Q=a(Z),X=Mr(),Y=await Z.storage.organizationBilling.getBilling(Q.id),G=S30(Y,X),J=await Z.storage.organizationBilling.countTaskClaims(Q.id,G.periodKey);return{enforced:X.enforced,billingStatus:Y?.status??"none",subscribed:t81(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var fL$=L(()=>{nO$();tO$();oO$();rO$();aO$();eO$();$L$();QL$();YL$();GL$();KL$();NL$();UL$();BL$();OL$();LL$();DL$();TL$();RL$();xL$()});function TH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function C30($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(C30);if(typeof $==="object")return Object.entries($).every(([Z,Q])=>typeof Z==="string"&&(Q===void 0||C30(Q)));return!1}function r81($){return Array.isArray($)&&$.every(C30)}function Vr($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,Q])=>typeof Z==="string"&&(Q===void 0||C30(Q)))}var FD$="vercel.ai.error",wq4,bL$,yL$,W1,ND$="AI_APICallError",UD$,Eq4,gL$,hL$,H4,BD$="AI_EmptyResponseBodyError",OD$,jq4,uL$,cL$,_30,LD$="AI_InvalidArgumentError",DD$,zq4,lL$,mL$,tL,wD$="AI_InvalidPromptError",ED$,Pq4,dL$,iL$,cJ,jD$="AI_InvalidResponseDataError",zD$,Aq4,pL$,nL$,Zu,PD$="AI_JSONParseError",AD$,Tq4,tL$,oL$,aN,TD$="AI_LoadAPIKeyError",RD$,Rq4,rL$,aL$,Rz,ID$="AI_LoadSettingError",qD$,Iq4,sL$,eL$,MD$,VD$="AI_NoContentGeneratedError",kD$,qq4,$D$,ZD$,SD$,CD$="AI_NoSuchModelError",_D$,Mq4,QD$,XD$,s5,vD$="AI_TooManyEmbeddingValuesForCallError",xD$,Vq4,YD$,GD$,Qu,fD$="AI_TypeValidationError",bD$,kq4,JD$,KD$,T5,yD$="AI_UnsupportedFunctionalityError",gD$,Sq4,WD$,HD$,y4;var $$=L(()=>{wq4=Symbol.for(FD$),W1=class $ extends(yL$=Error,bL$=wq4,yL$){constructor({name:Z,message:Q,cause:X}){super(Q);this[bL$]=!0,this.name=Z,this.cause=X}static isInstance(Z){return $.hasMarker(Z,FD$)}static hasMarker(Z,Q){let X=Symbol.for(Q);return Z!=null&&typeof Z==="object"&&X in Z&&typeof Z[X]==="boolean"&&Z[X]===!0}},UD$=`vercel.ai.error.${ND$}`,Eq4=Symbol.for(UD$),H4=class extends(hL$=W1,gL$=Eq4,hL$){constructor({message:$,url:Z,requestBodyValues:Q,statusCode:X,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=X!=null&&(X===408||X===409||X===429||X>=500),data:W}){super({name:ND$,message:$,cause:J});this[gL$]=!0,this.url=Z,this.requestBodyValues=Q,this.statusCode=X,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return W1.hasMarker($,UD$)}},OD$=`vercel.ai.error.${BD$}`,jq4=Symbol.for(OD$),_30=class extends(cL$=W1,uL$=jq4,cL$){constructor({message:$="Empty response body"}={}){super({name:BD$,message:$});this[uL$]=!0}static isInstance($){return W1.hasMarker($,OD$)}};DD$=`vercel.ai.error.${LD$}`,zq4=Symbol.for(DD$),tL=class extends(mL$=W1,lL$=zq4,mL$){constructor({message:$,cause:Z,argument:Q}){super({name:LD$,message:$,cause:Z});this[lL$]=!0,this.argument=Q}static isInstance($){return W1.hasMarker($,DD$)}},ED$=`vercel.ai.error.${wD$}`,Pq4=Symbol.for(ED$),cJ=class extends(iL$=W1,dL$=Pq4,iL$){constructor({prompt:$,message:Z,cause:Q}){super({name:wD$,message:`Invalid prompt: ${Z}`,cause:Q});this[dL$]=!0,this.prompt=$}static isInstance($){return W1.hasMarker($,ED$)}},zD$=`vercel.ai.error.${jD$}`,Aq4=Symbol.for(zD$),Zu=class extends(nL$=W1,pL$=Aq4,nL$){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:jD$,message:Z});this[pL$]=!0,this.data=$}static isInstance($){return W1.hasMarker($,zD$)}},AD$=`vercel.ai.error.${PD$}`,Tq4=Symbol.for(AD$),aN=class extends(oL$=W1,tL$=Tq4,oL$){constructor({text:$,cause:Z}){super({name:PD$,message:`JSON parsing failed: Text: ${$}.
|
|
2313
2313
|
Error message: ${TH(Z)}`,cause:Z});this[tL$]=!0,this.text=$}static isInstance($){return W1.hasMarker($,AD$)}},RD$=`vercel.ai.error.${TD$}`,Rq4=Symbol.for(RD$),Rz=class extends(aL$=W1,rL$=Rq4,aL$){constructor({message:$}){super({name:TD$,message:$});this[rL$]=!0}static isInstance($){return W1.hasMarker($,RD$)}},qD$=`vercel.ai.error.${ID$}`,Iq4=Symbol.for(qD$),MD$=class extends(eL$=W1,sL$=Iq4,eL$){constructor({message:$}){super({name:ID$,message:$});this[sL$]=!0}static isInstance($){return W1.hasMarker($,qD$)}},kD$=`vercel.ai.error.${VD$}`,qq4=Symbol.for(kD$),SD$=class extends(ZD$=W1,$D$=qq4,ZD$){constructor({message:$="No content generated."}={}){super({name:VD$,message:$});this[$D$]=!0}static isInstance($){return W1.hasMarker($,kD$)}},_D$=`vercel.ai.error.${CD$}`,Mq4=Symbol.for(_D$),s5=class extends(XD$=W1,QD$=Mq4,XD$){constructor({errorName:$=CD$,modelId:Z,modelType:Q,message:X=`No such ${Q}: ${Z}`}){super({name:$,message:X});this[QD$]=!0,this.modelId=Z,this.modelType=Q}static isInstance($){return W1.hasMarker($,_D$)}},xD$=`vercel.ai.error.${vD$}`,Vq4=Symbol.for(xD$),Qu=class extends(GD$=W1,YD$=Vq4,GD$){constructor($){super({name:vD$,message:`Too many values for a single embedding call. The ${$.provider} model "${$.modelId}" can only embed up to ${$.maxEmbeddingsPerCall} values per call, but ${$.values.length} values were provided.`});this[YD$]=!0,this.provider=$.provider,this.modelId=$.modelId,this.maxEmbeddingsPerCall=$.maxEmbeddingsPerCall,this.values=$.values}static isInstance($){return W1.hasMarker($,xD$)}},bD$=`vercel.ai.error.${fD$}`,kq4=Symbol.for(bD$),T5=class $ extends(KD$=W1,JD$=kq4,KD$){constructor({value:Z,cause:Q,context:X}){let Y="Type validation failed";if(X==null?void 0:X.field)Y+=` for ${X.field}`;if((X==null?void 0:X.entityName)||(X==null?void 0:X.entityId)){Y+=" (";let G=[];if(X.entityName)G.push(X.entityName);if(X.entityId)G.push(`id: "${X.entityId}"`);Y+=G.join(", "),Y+=")"}super({name:fD$,message:`${Y}: Value: ${JSON.stringify(Z)}.
|
|
2314
2314
|
Error message: ${TH(Q)}`,cause:Q});this[JD$]=!0,this.value=Z,this.context=X}static isInstance(Z){return W1.hasMarker(Z,bD$)}static wrap({value:Z,cause:Q,context:X}){var Y,G,J;if($.isInstance(Q)&&Q.value===Z&&((Y=Q.context)==null?void 0:Y.field)===(X==null?void 0:X.field)&&((G=Q.context)==null?void 0:G.entityName)===(X==null?void 0:X.entityName)&&((J=Q.context)==null?void 0:J.entityId)===(X==null?void 0:X.entityId))return Q;return new $({value:Z,cause:Q,context:X})}},gD$=`vercel.ai.error.${yD$}`,Sq4=Symbol.for(gD$),y4=class extends(HD$=W1,WD$=Sq4,HD$){constructor({functionality:$,message:Z=`'${$}' functionality not supported.`}){super({name:yD$,message:Z});this[WD$]=!0,this.functionality=$}static isInstance($){return W1.hasMarker($,gD$)}}});import*as b30 from"zod/v4";import{ZodFirstPartyTypeKind as E4}from"zod/v3";import{ZodFirstPartyTypeKind as tq4}from"zod/v3";import{ZodFirstPartyTypeKind as v30}from"zod/v3";function $8(...$){return $.reduce((Z,Q)=>({...Z,...Q!=null?Q:{}}),{})}function x30({tools:$=[],providerToolNames:Z,resolveProviderToolName:Q}){var X;let Y={},G={};for(let J of $)if(J.type==="provider"){let K=(X=Q==null?void 0:Q(J))!=null?X:(J.id in Z)?Z[J.id]:void 0;if(K==null)continue;Y[J.name]=K,G[K]=J.name}return{toProviderToolName:(J)=>{var K;return(K=Y[J])!=null?K:J},toCustomToolName:(J)=>{var K;return(K=G[J])!=null?K:J}}}async function UY($,Z){if($==null)return Promise.resolve();let Q=Z==null?void 0:Z.abortSignal;return new Promise((X,Y)=>{if(Q==null?void 0:Q.aborted){Y(hD$());return}let G=setTimeout(()=>{J(),X()},$),J=()=>{clearTimeout(G),Q==null||Q.removeEventListener("abort",K)},K=()=>{J(),Y(hD$())};Q==null||Q.addEventListener("abort",K)})}function hD$(){return new DOMException("Delay was aborted","AbortError")}function Xu($){return Object.fromEntries([...$.headers])}function _9($){let Z=$.replace(/-/g,"+").replace(/_/g,"/"),Q=_q4(Z);return Uint8Array.from(Q,(X)=>X.codePointAt(0))}function OY($){let Z="";for(let Q=0;Q<$.length;Q++)Z+=String.fromCodePoint($[Q]);return Cq4(Z)}function jZ($){return $ instanceof Uint8Array?OY($):$}function iD$($,Z={}){let{useArrayBrackets:Q=!0}=Z,X=new FormData;for(let[Y,G]of Object.entries($)){if(G==null)continue;if(Array.isArray(G)){if(G.length===1){X.append(Y,G[0]);continue}let J=Q?`${Y}[]`:Y;for(let K of G)X.append(J,K);continue}X.append(Y,G)}return X}async function kr($){var Z;try{await((Z=$.body)==null?void 0:Z.cancel())}catch(Q){}}function xq4($=globalThis){return $.window!=null}function fq4($){let Z;try{Z=new URL($)}catch(X){throw new EZ({url:$,message:`Invalid URL: ${$}`})}if(Z.protocol==="data:")return;if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw new EZ({url:$,message:`URL scheme must be http, https, or data, got ${Z.protocol}`});let Q=Z.hostname.toLowerCase().replace(/\.+$/,"");if(!Q)throw new EZ({url:$,message:"URL must have a hostname"});if(Q==="localhost"||Q.endsWith(".local")||Q.endsWith(".localhost"))throw new EZ({url:$,message:`URL with hostname ${Q} is not allowed`});if(Q.startsWith("[")&&Q.endsWith("]")){let X=Q.slice(1,-1);if(yq4(X))throw new EZ({url:$,message:`URL with IPv6 address ${Q} is not allowed`});return}if(tD$(Q)){if(oD$(Q))throw new EZ({url:$,message:`URL with IP address ${Q} is not allowed`});return}}function tD$($){let Z=$.split(".");if(Z.length!==4)return!1;return Z.every((Q)=>{let X=Number(Q);return Number.isInteger(X)&&X>=0&&X<=255&&String(X)===Q})}function oD$($){let Z=$.split(".").map(Number),[Q,X,Y]=Z;if(Q===0)return!0;if(Q===10)return!0;if(Q===100&&X>=64&&X<=127)return!0;if(Q===127)return!0;if(Q===169&&X===254)return!0;if(Q===172&&X>=16&&X<=31)return!0;if(Q===192&&X===0&&Y===0)return!0;if(Q===192&&X===168)return!0;if(Q===198&&(X===18||X===19))return!0;if(Q>=240)return!0;return!1}function bq4($){let Z=$.toLowerCase(),Q=Z.indexOf("%");if(Q!==-1)Z=Z.slice(0,Q);let X=Z.split("::");if(X.length>2)return null;let Y=(J)=>{if(J==="")return[];let K=[],W=J.split(":");for(let H=0;H<W.length;H++){let F=W[H];if(F.includes(".")){if(H!==W.length-1||!tD$(F))return null;let[N,U,B,O]=F.split(".").map(Number);K.push(N<<8|U,B<<8|O);continue}if(!/^[0-9a-f]{1,4}$/.test(F))return null;K.push(parseInt(F,16))}return K},G=Y(X[0]);if(G===null)return null;if(X.length===2){let J=Y(X[1]);if(J===null)return null;let K=8-G.length-J.length;if(K<0)return null;return[...G,...Array(K).fill(0),...J]}return G.length===8?G:null}function yq4($){let Z=bq4($);if(Z===null)return!0;let Q=(Y)=>Z.slice(0,Y).every((G)=>G===0);if(Q(7)&&(Z[7]===0||Z[7]===1))return!0;if((Z[0]&65024)===64512)return!0;if((Z[0]&65472)===65152)return!0;if((Z[0]&65472)===65216)return!0;if((Z[0]&65280)===65280)return!0;if(Q(6)||Q(5)&&Z[5]===65535||Q(4)&&Z[4]===65535&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===0&&Z[3]===0&&Z[4]===0&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===1){let Y=Z[6]>>8&255,G=Z[6]&255,J=Z[7]>>8&255,K=Z[7]&255;return oD$(`${Y}.${G}.${J}.${K}`)}return!1}async function Z41({url:$,headers:Z,abortSignal:Q,maxRedirects:X=gq4}){let Y={signal:Q};if(Z!==void 0)Y.headers=Z;let G=$;for(let J=0;J<=X;J++){fq4(G);let K=await fetch(G,{...Y,redirect:"manual"});if(K.type==="opaqueredirect"){if(!xq4())throw new EZ({url:$,message:`Redirect from ${G} could not be validated and was blocked`});return await fetch(G,{...Y,redirect:"follow"})}let W=K.headers.get("location");if(K.status>=300&&K.status<400&&W){await kr(K),G=new URL(W,G).toString();continue}return K}throw new EZ({url:$,message:`Too many redirects (max ${X})`})}async function Q41({response:$,url:Z,maxBytes:Q=f30}){let X=$.headers.get("content-length");if(X!=null){let F=parseInt(X,10);if(!isNaN(F)&&F>Q)throw await kr($),new EZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${Q} bytes (Content-Length: ${F}).`})}let Y=$.body;if(Y==null)return new Uint8Array(0);let G=Y.getReader(),J=[],K=0;try{while(!0){let{done:F,value:N}=await G.read();if(F)break;if(K+=N.length,K>Q)throw new EZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${Q} bytes.`});J.push(N)}}finally{try{await G.cancel()}finally{G.releaseLock()}}let W=new Uint8Array(K),H=0;for(let F of J)W.set(F,H),H+=F.length;return W}async function X41($,Z){var Q,X;try{let Y=await Z41({url:$,abortSignal:Z==null?void 0:Z.abortSignal});if(!Y.ok)throw await kr(Y),new EZ({url:$,statusCode:Y.status,statusText:Y.statusText});let G=await Q41({response:Y,url:$,maxBytes:(Q=Z==null?void 0:Z.maxBytes)!=null?Q:f30}),J=(X=Y.headers.get("content-type"))!=null?X:void 0;return new Blob([G],J?{type:J}:void 0)}catch(Y){if(EZ.isInstance(Y))throw Y;throw new EZ({url:$,cause:Y})}}function Yu($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function NY($){return($ instanceof Error||$ instanceof DOMException)&&($.name==="AbortError"||$.name==="ResponseAborted"||$.name==="TimeoutError")}function cq4($){if(!($ instanceof Error))return!1;let Z=$.code;if(typeof Z==="string"&&uq4.includes(Z))return!0;return!1}function rD$({error:$,url:Z,requestBodyValues:Q}){if(NY($))return $;if($ instanceof TypeError&&hq4.includes($.message.toLowerCase())){let X=$.cause;if(X!=null)return new H4({message:`Cannot connect to API: ${X.message}`,cause:X,url:Z,requestBodyValues:Q,isRetryable:!0})}if(cq4($))return new H4({message:`Cannot connect to API: ${$.message}`,cause:$,url:Z,requestBodyValues:Q,isRetryable:!0});return $}function oL($=globalThis){var Z,Q,X;if($.window)return"runtime/browser";if((Z=$.navigator)==null?void 0:Z.userAgent)return`runtime/${$.navigator.userAgent.toLowerCase()}`;if((X=(Q=$.process)==null?void 0:Q.versions)==null?void 0:X.node)return`runtime/node.js/${$.process.version.substring(0)}`;if($.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function rL($){if($==null)return{};let Z={};if($ instanceof Headers)$.forEach((Q,X)=>{Z[X.toLowerCase()]=Q});else{if(!Array.isArray($))$=Object.entries($);for(let[Q,X]of $)if(X!=null)Z[Q.toLowerCase()]=X}return Z}function e4($,...Z){let Q=new Headers(rL($)),X=Q.get("user-agent")||"";return Q.set("user-agent",[X,...Z].filter(Boolean).join(" ")),Object.fromEntries(Q.entries())}function qz($){return $!=null}function sD$($,Z){try{return new URL($).origin===new URL(Z).origin}catch(Q){return!1}}function eD$({mediaType:$,url:Z,supportedUrls:Q}){return Z=Z.toLowerCase(),$=$.toLowerCase(),Object.entries(Q).map(([X,Y])=>{let G=X.toLowerCase();return G==="*"||G==="*/*"?{mediaTypePrefix:"",regexes:Y}:{mediaTypePrefix:G.replace(/\*/,""),regexes:Y}}).filter(({mediaTypePrefix:X})=>$.startsWith(X)).flatMap(({regexes:X})=>X).some((X)=>X.test(Z))}function Gu({apiKey:$,environmentVariableName:Z,apiKeyParameterName:Q="apiKey",description:X}){if(typeof $==="string")return $;if($!=null)throw new Rz({message:`${X} API key must be a string.`});if(typeof process>"u")throw new Rz({message:`${X} API key is missing. Pass it using the '${Q}' parameter. Environment variables are not supported in this environment.`});if($=process.env[Z],$==null)throw new Rz({message:`${X} API key is missing. Pass it using the '${Q}' parameter or the ${Z} environment variable.`});if(typeof $!=="string")throw new Rz({message:`${X} API key must be a string. The value of the ${Z} environment variable is not a string.`});return $}function RH({settingValue:$,environmentVariableName:Z}){if(typeof $==="string")return $;if($!=null||typeof process>"u")return;if($=process.env[Z],$==null||typeof $!=="string")return;return $}function $w$($){var Z;let[Q,X=""]=$.toLowerCase().split("/");return(Z={mpeg:"mp3","x-wav":"wav",opus:"ogg",mp4:"m4a","x-m4a":"m4a"}[X])!=null?Z:X}function lD$($){let Z=JSON.parse($);if(Z===null||typeof Z!=="object")return Z;if(mq4.test($)===!1&&dq4.test($)===!1)return Z;return iq4(Z)}function iq4($){let Z=[$];while(Z.length){let Q=Z;Z=[];for(let X of Q){if(Object.prototype.hasOwnProperty.call(X,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(X,"constructor")&&X.constructor!==null&&typeof X.constructor==="object"&&Object.prototype.hasOwnProperty.call(X.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let Y in X){let G=X[Y];if(G&&typeof G==="object")Z.push(G)}}}return $}function Y41($){let{stackTraceLimit:Z}=Error;try{Error.stackTraceLimit=0}catch(Q){return lD$($)}try{return lD$($)}finally{Error.stackTraceLimit=Z}}function G41($){if($.type==="object"||Array.isArray($.type)&&$.type.includes("object")){$.additionalProperties=!1;let{properties:Q}=$;if(Q!=null)for(let X of Object.keys(Q))Q[X]=Iz(Q[X])}if($.items!=null)$.items=Array.isArray($.items)?$.items.map(Iz):Iz($.items);if($.anyOf!=null)$.anyOf=$.anyOf.map(Iz);if($.allOf!=null)$.allOf=$.allOf.map(Iz);if($.oneOf!=null)$.oneOf=$.oneOf.map(Iz);let{definitions:Z}=$;if(Z!=null)for(let Q of Object.keys(Z))Z[Q]=Iz(Z[Q]);return $}function Iz($){if(typeof $==="boolean")return $;return G41($)}function PG(){return{}}function oq4($,Z){var Q,X,Y;let G={type:"array"};if(((Q=$.type)==null?void 0:Q._def)&&((Y=(X=$.type)==null?void 0:X._def)==null?void 0:Y.typeName)!==tq4.ZodAny)G.items=I6($.type._def,{...Z,currentPath:[...Z.currentPath,"items"]});if($.minLength)G.minItems=$.minLength.value;if($.maxLength)G.maxItems=$.maxLength.value;if($.exactLength)G.minItems=$.exactLength.value,G.maxItems=$.exactLength.value;return G}function rq4($){let Z={type:"integer",format:"int64"};if(!$.checks)return Z;for(let Q of $.checks)switch(Q.kind){case"min":if(Q.inclusive)Z.minimum=Q.value;else Z.exclusiveMinimum=Q.value;break;case"max":if(Q.inclusive)Z.maximum=Q.value;else Z.exclusiveMaximum=Q.value;break;case"multipleOf":Z.multipleOf=Q.value;break}return Z}function aq4(){return{type:"boolean"}}function Zw$($,Z){return I6($.type._def,Z)}function Qw$($,Z,Q){let X=Q!=null?Q:Z.dateStrategy;if(Array.isArray(X))return{anyOf:X.map((Y,G)=>Qw$($,Z,Y))};switch(X){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return eq4($)}}function $M4($,Z){return{...I6($.innerType._def,Z),default:$.defaultValue()}}function ZM4($,Z){return Z.effectStrategy==="input"?I6($.schema._def,Z):PG()}function QM4($){return{type:"string",enum:Array.from($.values)}}function YM4($,Z){let Q=[I6($.left._def,{...Z,currentPath:[...Z.currentPath,"allOf","0"]}),I6($.right._def,{...Z,currentPath:[...Z.currentPath,"allOf","1"]})].filter((Y)=>!!Y),X=[];return Q.forEach((Y)=>{if(XM4(Y))X.push(...Y.allOf);else{let G=Y;if("additionalProperties"in Y&&Y.additionalProperties===!1){let{additionalProperties:J,...K}=Y;G=K}X.push(G)}}),X.length?{allOf:X}:void 0}function GM4($){let Z=typeof $.value;if(Z!=="bigint"&&Z!=="number"&&Z!=="boolean"&&Z!=="string")return{type:Array.isArray($.value)?"array":"object"};return{type:Z==="bigint"?"integer":Z,const:$.value}}function Xw$($,Z){let Q={type:"string"};if($.checks)for(let X of $.checks)switch(X.kind){case"min":Q.minLength=typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value;break;case"max":Q.maxLength=typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value;break;case"email":switch(Z.emailStrategy){case"format:email":VK(Q,"email",X.message,Z);break;case"format:idn-email":VK(Q,"idn-email",X.message,Z);break;case"pattern:zod":wX(Q,MK.email,X.message,Z);break}break;case"url":VK(Q,"uri",X.message,Z);break;case"uuid":VK(Q,"uuid",X.message,Z);break;case"regex":wX(Q,X.regex,X.message,Z);break;case"cuid":wX(Q,MK.cuid,X.message,Z);break;case"cuid2":wX(Q,MK.cuid2,X.message,Z);break;case"startsWith":wX(Q,RegExp(`^${s81(X.value,Z)}`),X.message,Z);break;case"endsWith":wX(Q,RegExp(`${s81(X.value,Z)}$`),X.message,Z);break;case"datetime":VK(Q,"date-time",X.message,Z);break;case"date":VK(Q,"date",X.message,Z);break;case"time":VK(Q,"time",X.message,Z);break;case"duration":VK(Q,"duration",X.message,Z);break;case"length":Q.minLength=typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value,Q.maxLength=typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value;break;case"includes":{wX(Q,RegExp(s81(X.value,Z)),X.message,Z);break}case"ip":{if(X.version!=="v6")VK(Q,"ipv4",X.message,Z);if(X.version!=="v4")VK(Q,"ipv6",X.message,Z);break}case"base64url":wX(Q,MK.base64url,X.message,Z);break;case"jwt":wX(Q,MK.jwt,X.message,Z);break;case"cidr":{if(X.version!=="v6")wX(Q,MK.ipv4Cidr,X.message,Z);if(X.version!=="v4")wX(Q,MK.ipv6Cidr,X.message,Z);break}case"emoji":wX(Q,MK.emoji(),X.message,Z);break;case"ulid":{wX(Q,MK.ulid,X.message,Z);break}case"base64":{switch(Z.base64Strategy){case"format:binary":{VK(Q,"binary",X.message,Z);break}case"contentEncoding:base64":{Q.contentEncoding="base64";break}case"pattern:zod":{wX(Q,MK.base64,X.message,Z);break}}break}case"nanoid":wX(Q,MK.nanoid,X.message,Z);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return Q}function s81($,Z){return Z.patternStrategy==="escape"?KM4($):$}function KM4($){let Z="";for(let Q=0;Q<$.length;Q++){if(!JM4.has($[Q]))Z+="\\";Z+=$[Q]}return Z}function VK($,Z,Q,X){var Y;if($.format||((Y=$.anyOf)==null?void 0:Y.some((G)=>G.format))){if(!$.anyOf)$.anyOf=[];if($.format)$.anyOf.push({format:$.format}),delete $.format;$.anyOf.push({format:Z,...Q&&X.errorMessages&&{errorMessage:{format:Q}}})}else $.format=Z}function wX($,Z,Q,X){var Y;if($.pattern||((Y=$.allOf)==null?void 0:Y.some((G)=>G.pattern))){if(!$.allOf)$.allOf=[];if($.pattern)$.allOf.push({pattern:$.pattern}),delete $.pattern;$.allOf.push({pattern:dD$(Z,X),...Q&&X.errorMessages&&{errorMessage:{pattern:Q}}})}else $.pattern=dD$(Z,X)}function dD$($,Z){var Q;if(!Z.applyRegexFlags||!$.flags)return $.source;let X={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},Y=X.i?$.source.toLowerCase():$.source,G="",J=!1,K=!1,W=!1;for(let H=0;H<Y.length;H++){if(J){G+=Y[H],J=!1;continue}if(X.i){if(K){if(Y[H].match(/[a-z]/)){if(W)G+=Y[H],G+=`${Y[H-2]}-${Y[H]}`.toUpperCase(),W=!1;else if(Y[H+1]==="-"&&((Q=Y[H+2])==null?void 0:Q.match(/[a-z]/)))G+=Y[H],W=!0;else G+=`${Y[H]}${Y[H].toUpperCase()}`;continue}}else if(Y[H].match(/[a-z]/)){G+=`[${Y[H]}${Y[H].toUpperCase()}]`;continue}}if(X.m){if(Y[H]==="^"){G+=`(^|(?<=[\r
|
|
2315
2315
|
]))`;continue}else if(Y[H]==="$"){G+=`($|(?=[\r
|