decocms 4.260.6 → 4.260.7
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-CgEoD4lZ.js → AlertCircle-DPxLor_N.js} +1 -1
- package/dist/client/assets/{AreaChart-BDTLy8q_.js → AreaChart-CQ8AQeCQ.js} +1 -1
- package/dist/client/assets/{ArrowLeft-J5TzpwHh.js → ArrowLeft-CebARimI.js} +1 -1
- package/dist/client/assets/{ArrowUp-Br9WC54o.js → ArrowUp-BqoaaU8K.js} +1 -1
- package/dist/client/assets/{Check-Dlhcsxlj.js → Check-goUIXyKh.js} +1 -1
- package/dist/client/assets/{CheckCircle-CHouRXdd.js → CheckCircle-CfYLlYpa.js} +1 -1
- package/dist/client/assets/{ChevronDown-Dzd4vauS.js → ChevronDown-CshG0CLE.js} +1 -1
- package/dist/client/assets/{ChevronRight-BdydQji7.js → ChevronRight-DHPEiysZ.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-i6ae783E.js → ChevronSelectorVertical-BSN6L-kf.js} +1 -1
- package/dist/client/assets/{ChevronUp-CSPP29vw.js → ChevronUp-yLSqRFP2.js} +1 -1
- package/dist/client/assets/{Copy01-imf6s21i.js → Copy01-D06Nj471.js} +1 -1
- package/dist/client/assets/{CreditCard01-B5S2uLjO.js → CreditCard01-B1UTUF3S.js} +1 -1
- package/dist/client/assets/{DotsVertical-BdO6PP_i.js → DotsVertical-DQmsQK31.js} +1 -1
- package/dist/client/assets/{Download01-BzQwQB-u.js → Download01-gvaU1x7n.js} +1 -1
- package/dist/client/assets/{Eye-D7by4RCW.js → Eye-EuKR0cdc.js} +1 -1
- package/dist/client/assets/{FilterLines-BOvoXcAH.js → FilterLines-DONN5_Cr.js} +1 -1
- package/dist/client/assets/{Globe01-DscL8aFG.js → Globe01-DasUaQ7o.js} +1 -1
- package/dist/client/assets/{Globe04-85JpCX0d.js → Globe04-D5pYASny.js} +1 -1
- package/dist/client/assets/{HardDrive-ByTdSXM0.js → HardDrive-DLmaCR34.js} +1 -1
- package/dist/client/assets/{Key01-D3Y0iXzU.js → Key01-D0Ze8cKU.js} +1 -1
- package/dist/client/assets/{LinkExternal01-Ddn7evZS.js → LinkExternal01-NXbWBz8j.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-BLJ3VK6H.js → LockUnlocked01-DyiTD5kX.js} +1 -1
- package/dist/client/assets/{LogOut01-B-LkvRlY.js → LogOut01-CoX2zuKq.js} +1 -1
- package/dist/client/assets/{Monitor01-CM-W8WKW.js → Monitor01-Br-Vply-.js} +1 -1
- package/dist/client/assets/{Palette-BV0Y-7Mc.js → Palette-Cr4vdMo1.js} +1 -1
- package/dist/client/assets/{Play-CDlWw-C0.js → Play-ah8BQMUd.js} +1 -1
- package/dist/client/assets/{Plus-D5VDJrCZ.js → Plus-BuARW-kj.js} +1 -1
- package/dist/client/assets/{SearchLg-ovIpohuT.js → SearchLg-CM-HDueP.js} +1 -1
- package/dist/client/assets/{SearchMd-BE28PKZ1.js → SearchMd-v0i-9mb6.js} +1 -1
- package/dist/client/assets/{Settings02-D_tIgZaL.js → Settings02-CZkcys2z.js} +1 -1
- package/dist/client/assets/{Share07-DjzfworK.js → Share07-2DaeVrns.js} +1 -1
- package/dist/client/assets/{Shield01-C_c4ps-0.js → Shield01-DyOH3F5t.js} +1 -1
- package/dist/client/assets/{Stars01-D_WDvLgr.js → Stars01-D7SANbwY.js} +1 -1
- package/dist/client/assets/{Stars02-2QIwNsWt.js → Stars02-vKykI9rT.js} +1 -1
- package/dist/client/assets/{Sun-BkC6jcaw.js → Sun-6sARTz6p.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-VHbc6S7N.js → SwitchHorizontal01-DjswD-Lu.js} +1 -1
- package/dist/client/assets/{Tool01-Cmtn3aZX.js → Tool01-Dt9O1gYs.js} +1 -1
- package/dist/client/assets/{Tool02-CIeYpVYB.js → Tool02-BChNfLOv.js} +1 -1
- package/dist/client/assets/{Trash01-Cyt8FGre.js → Trash01-Bf9HLbXj.js} +1 -1
- package/dist/client/assets/{TrendUp01-Caf2YPh_.js → TrendUp01-D2PIsDRw.js} +1 -1
- package/dist/client/assets/{Upload01-CLcf29aB.js → Upload01-DBzRhz4G.js} +1 -1
- package/dist/client/assets/{User01-DKKGk-bj.js → User01-DDOq4f2P.js} +1 -1
- package/dist/client/assets/{UserSquare-BxJ2lW4C.js → UserSquare-Tef66cIA.js} +1 -1
- package/dist/client/assets/{Users01-Diq2vhlk.js → Users01-C-AEVUNQ.js} +1 -1
- package/dist/client/assets/{Users03-DLUW_LML.js → Users03-3rdNv0Aq.js} +1 -1
- package/dist/client/assets/{XCircle-B13Iv7TG.js → XCircle-PTEWxL9B.js} +1 -1
- package/dist/client/assets/{XClose-Bqy8uFJn.js → XClose-BevPXZGh.js} +1 -1
- package/dist/client/assets/{YAxis-z0pdXPhV.js → YAxis-BNr0lYG_.js} +1 -1
- package/dist/client/assets/{Zap-sdXh7xcV.js → Zap-DYsvHlt6.js} +1 -1
- package/dist/client/assets/{ZapSquare-Cxx2wPBU.js → ZapSquare-tNtUTBa2.js} +1 -1
- package/dist/client/assets/{access-gate-D4EsHOaO.js → access-gate-CIMwdiYc.js} +1 -1
- package/dist/client/assets/{agent-icon-DunxnH8u.js → agent-icon-DNQa0L3Y.js} +1 -1
- package/dist/client/assets/{agents-list-D806oBF4.js → agents-list-BZ4alovn.js} +1 -1
- package/dist/client/assets/{ai-providers-DMZxoI5Q.js → ai-providers-cxOBQS8S.js} +1 -1
- package/dist/client/assets/{alert-DUPboyE6.js → alert-CRQ4uFWW.js} +1 -1
- package/dist/client/assets/{alert-dialog-DtlRsg5m.js → alert-dialog-CKAksQyg.js} +1 -1
- package/dist/client/assets/{api-keys-BXOWoijb.js → api-keys-CrlNakil.js} +1 -1
- package/dist/client/assets/{app-editor-DiKG5lSE.js → app-editor-hiHTVELa.js} +1 -1
- package/dist/client/assets/{auth-DIhHdeRM.js → auth-DdsveUCf.js} +1 -1
- package/dist/client/assets/{auth-catchall-NuUlthkh.js → auth-catchall-nEgO5299.js} +1 -1
- package/dist/client/assets/{auth-entry-muhJoBQ2.js → auth-entry-fEXpHRWt.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BjFINRZ9.js → auth-split-layout-CaZEC7Zm.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BDD2OfUW.js → authenticate-and-persist-oauth-Du7ghXvx.js} +1 -1
- package/dist/client/assets/{automation-list-row-D_5XsIL7.js → automation-list-row-Bp7xqqWe.js} +1 -1
- package/dist/client/assets/{automation-runs-CqNFEMnk.js → automation-runs-BgF6DO74.js} +1 -1
- package/dist/client/assets/{automations-BcWWVfBw.js → automations-CxE0eLXe.js} +1 -1
- package/dist/client/assets/{avatar-ecBvsHkT.js → avatar-Csdlmxjv.js} +1 -1
- package/dist/client/assets/{badge-B1wEdypA.js → badge-CSLr-YWj.js} +1 -1
- package/dist/client/assets/{block-document-CGiGdFmY.js → block-document-B_FdRaFh.js} +1 -1
- package/dist/client/assets/{buckets-DKHC3HW3.js → buckets-CcVeiYaZ.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DuCkYLz6.js → bulk-category-panel-Nx64uZrX.js} +1 -1
- package/dist/client/assets/{capability-load-error-DdDToXLr.js → capability-load-error-C55c4GE8.js} +1 -1
- package/dist/client/assets/{cards-Cqexu080.js → cards-Bp-0ATfZ.js} +1 -1
- package/dist/client/assets/{category-editor-DRbB7v7j.js → category-editor-HPW9FCZF.js} +1 -1
- package/dist/client/assets/{chart-OsJIEUCN.js → chart-CGkKX3le.js} +1 -1
- package/dist/client/assets/{chat-context-B9AtRZpc.js → chat-context-B_j3IM_l.js} +1 -1
- package/dist/client/assets/{checkbox-BiPvcvpS.js → checkbox-DE00eebZ.js} +1 -1
- package/dist/client/assets/{choose-editor-C5gXYcRf.js → choose-editor-BUIws1__.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CCQwbQSi.js → cli-auth-success-yrCz_Z9a.js} +1 -1
- package/dist/client/assets/{collection-detail-D5siYxc8.js → collection-detail-DyAJgn5p.js} +1 -1
- package/dist/client/assets/{collection-display-button-BBtZ-Lbq.js → collection-display-button-0ci5cZSY.js} +1 -1
- package/dist/client/assets/{collection-search-DzSxTblg.js → collection-search-DFBsUG61.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DB4_arec.js → collection-table-wrapper-D7D9JRRE.js} +1 -1
- package/dist/client/assets/{collection-tabs-Cc_kG5CH.js → collection-tabs-CerdExZs.js} +1 -1
- package/dist/client/assets/{command-BYAPX5_p.js → command-HSQBlsqS.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DJuTjWdW.js → commerce-onboarding-DRMB4AUW.js} +1 -1
- package/dist/client/assets/{connect-BTIqLBDn.js → connect-Dd3xNj6G.js} +1 -1
- package/dist/client/assets/{connection-DTV2uY9d.js → connection-Cygc8dVo.js} +1 -1
- package/dist/client/assets/{connection-card-p7T1pUvu.js → connection-card-CI8lW38q.js} +1 -1
- package/dist/client/assets/{connection-detail-COw_a24h.js → connection-detail-D7IHwHcH.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-C1b3zckT.js → connection-form-helpers-D0ZdJOaq.js} +1 -1
- package/dist/client/assets/{connections-C_4vBJec.js → connections-D2CTLrzk.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-pqIBZDfy.js → decopilot-sse-pool-D3aQYIxz.js} +1 -1
- package/dist/client/assets/{dialog-pKdETLR2.js → dialog-DTSI1xNI.js} +1 -1
- package/dist/client/assets/{domain-settings-BUTdQptf.js → domain-settings-DN8rk2gT.js} +1 -1
- package/dist/client/assets/{drawer-n8GvVoc1.js → drawer-BtUlgqvD.js} +1 -1
- package/dist/client/assets/{dropdown-menu-B9v1abrd.js → dropdown-menu-BHP7A1I2.js} +1 -1
- package/dist/client/assets/{empty-state-CYafLC41.js → empty-state-BxsbYIp7.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BT-OVTSx.js → extract-connection-data-D4V_ONCC.js} +1 -1
- package/dist/client/assets/{file-explorer-DFedsU5c.js → file-explorer-WS9yPd_H.js} +1 -1
- package/dist/client/assets/{file-type-icon-CD9Xu9RX.js → file-type-icon-RB13T8PF.js} +1 -1
- package/dist/client/assets/{form-DbJUfPW0.js → form-CRZ4MuCs.js} +1 -1
- package/dist/client/assets/{general-O-luJ_6S.js → general-CMWO9gS8.js} +1 -1
- package/dist/client/assets/{github-repo-picker-D8fE6100.js → github-repo-picker-B9Mr6gvy.js} +1 -1
- package/dist/client/assets/{hooks-nQguIlxx.js → hooks-BBoNrQa_.js} +1 -1
- package/dist/client/assets/{index-C-DhkNwe.js → index-1uLbu33H.js} +1 -1
- package/dist/client/assets/{index-CEcd5XTf.js → index-B_SZfBN6.js} +1 -1
- package/dist/client/assets/{index-CZf46eBu.js → index-BuJjPhKH.js} +1 -1
- package/dist/client/assets/{index-DGbOt3Kz.js → index-CpSoUcDB.js} +1 -1
- package/dist/client/assets/{index-DTbZW3Pm.js → index-DVv1zNSe.js} +4 -4
- package/dist/client/assets/{index-CD59IPb5.js → index-DcKlgJWf.js} +1 -1
- package/dist/client/assets/{index-DsdUFD17.js → index-DuzYwBH0.js} +1 -1
- package/dist/client/assets/{index-CkelgOwY.js → index-XpBhIBWK.js} +49 -49
- package/dist/client/assets/{index-D69h_5BY.js → index-cgIkmy0Q.js} +1 -1
- package/dist/client/assets/{index-Cvd_kl-0.js → index-i-ED7xp7.js} +1 -1
- package/dist/client/assets/{index-redirect-h19IqyDj.js → index-redirect-DNqxKBc_.js} +1 -1
- package/dist/client/assets/{infra-billing-Cy0Y5Tdb.js → infra-billing-BGOiJH70.js} +1 -1
- package/dist/client/assets/{input-B6O7KH1F.js → input-DqFAdini.js} +1 -1
- package/dist/client/assets/{integration-icon-1FUBm8hl.js → integration-icon-BFak0SI8.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CAnx6NLx.js → invite-member-dialog-BJVf4Lit.js} +1 -1
- package/dist/client/assets/{label-DmjS-jq4.js → label-Dkt4oKx0.js} +1 -1
- package/dist/client/assets/{layout-Dbai1XJv.js → layout-DsahlsQM.js} +1 -1
- package/dist/client/assets/{login-oZ39MMN2.js → login-B1o2PzAS.js} +1 -1
- package/dist/client/assets/{mcp-oauth-D5hFkAb5.js → mcp-oauth-BblG8wHV.js} +1 -1
- package/dist/client/assets/{members-CMVkVwld.js → members-B4IZhHPb.js} +1 -1
- package/dist/client/assets/{monaco-editor-wC9OIupS.js → monaco-editor-CUyLtPdQ.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-pYqIqvxk.js → monitoring-stats-row-Cti1EIds.js} +1 -1
- package/dist/client/assets/{multi-select-ByYwYW_r.js → multi-select-CIHJ_e7S.js} +1 -1
- package/dist/client/assets/{oauth-callback-Bl1n_3o7.js → oauth-callback-BJr-QM_r.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CLKgIeKb.js → oauth-callback-ai-provider-CXzrC9Wy.js} +1 -1
- package/dist/client/assets/{onboarding-Dgg-lh5T.js → onboarding-DwhkE1tE.js} +1 -1
- package/dist/client/assets/{org-layout-Dxc9QmlE.js → org-layout-DjF43U9C.js} +1 -1
- package/dist/client/assets/{organization-choice-D6HqsfWi.js → organization-choice-Dc1Mwxy5.js} +1 -1
- package/dist/client/assets/{orgs-3_onE2f-.js → orgs-Bi5i6Jga.js} +1 -1
- package/dist/client/assets/{page-seo-form-B95h0-Vg.js → page-seo-form-C8FrECqq.js} +1 -1
- package/dist/client/assets/{popover-CpCzL0-B.js → popover-CqmhhGtl.js} +1 -1
- package/dist/client/assets/{post-calendar-DzfEXM28.js → post-calendar-xz3jPWdb.js} +1 -1
- package/dist/client/assets/{post-editor-C11Tw-Da.js → post-editor-CwVbahu1.js} +1 -1
- package/dist/client/assets/{primitives-C6nMorsF.js → primitives-B3TtquI6.js} +1 -1
- package/dist/client/assets/{profile-tOx_RyW9.js → profile-kKBQHJie.js} +1 -1
- package/dist/client/assets/{project-app-view-eN1uJf4p.js → project-app-view-DUH9rYTH.js} +1 -1
- package/dist/client/assets/record-editor-Dolt8NW_.js +1 -0
- package/dist/client/assets/{redirect-editor-Z5O_ujG_.js → redirect-editor-Cks5QpBb.js} +1 -1
- package/dist/client/assets/registry-CCqqB3Vu.js +2 -0
- package/dist/client/assets/{registry-layout-qgDfMXKF.js → registry-layout-CGA5Xt6y.js} +1 -1
- package/dist/client/assets/{reports-D-gKWRVw.js → reports-Dbo7_Fhb.js} +1 -1
- package/dist/client/assets/{require-capability-BBUMAtfF.js → require-capability-D6zOzpbR.js} +1 -1
- package/dist/client/assets/{required-auth-layout-B52gn4bl.js → required-auth-layout-DXCBTHmS.js} +1 -1
- package/dist/client/assets/{reset-password-lJTj7K7k.js → reset-password-BnBCanZe.js} +1 -1
- package/dist/client/assets/{roles-DpR4RGRS.js → roles-BFq4gAI3.js} +1 -1
- package/dist/client/assets/{search-input-D_1vfWZE.js → search-input-BYf7i3hi.js} +1 -1
- package/dist/client/assets/{secrets-DL_Sx2xz.js → secrets-DjOW_LsN.js} +1 -1
- package/dist/client/assets/{sections-editor-CqLukB31.js → sections-editor-BMMNLW5_.js} +1 -1
- package/dist/client/assets/{select-By9ivaZI.js → select-B-GGh2_V.js} +1 -1
- package/dist/client/assets/{select-model-HCNJBB_1.js → select-model-BeXvLKYl.js} +1 -1
- package/dist/client/assets/{self-tool-result-DnoAf1ZT.js → self-tool-result-DvDs9N-4.js} +1 -1
- package/dist/client/assets/{seo-editor-CqUDdIcO.js → seo-editor-BpumBeQh.js} +1 -1
- package/dist/client/assets/{settings-layout-BW4yTVMn.js → settings-layout-DVFU0DFs.js} +1 -1
- package/dist/client/assets/{shell-controls-COdSQSVU.js → shell-controls-CGXyrKBX.js} +1 -1
- package/dist/client/assets/{shell-layout-CcPhPnyg.js → shell-layout-BxZc0X-W.js} +1 -1
- package/dist/client/assets/{spinner-1M28tiHf.js → spinner-CVJx70XX.js} +1 -1
- package/dist/client/assets/{sprints-6ljAoSC4.js → sprints-DGN2_Ylt.js} +1 -1
- package/dist/client/assets/{sso-DtLhSO0k.js → sso-DU7cP_hQ.js} +1 -1
- package/dist/client/assets/{store-n9-mJzUO.js → store-DWyak2J1.js} +1 -1
- package/dist/client/assets/store-registry-BKU6i61A.js +2 -0
- package/dist/client/assets/{switch-JLlAZCYJ.js → switch-CmfyUEXs.js} +1 -1
- package/dist/client/assets/{synced-repos-BdReXIoy.js → synced-repos-D0OhuqKp.js} +1 -1
- package/dist/client/assets/{tab-id-vBtt9OYk.js → tab-id-CrGXPqCz.js} +1 -1
- package/dist/client/assets/{table-Ccbmr8s2.js → table-C3fNfG3L.js} +1 -1
- package/dist/client/assets/{tabs-4Il64Rpx.js → tabs-CAOzWXcF.js} +1 -1
- package/dist/client/assets/{task-key-BagLPtBu.js → task-key-CPpkyy9h.js} +1 -1
- package/dist/client/assets/{tasks-BU1JPNBP.js → tasks-wLGCwKEH.js} +1 -1
- package/dist/client/assets/{textarea-BjTo2mGL.js → textarea-Bnsbbz0C.js} +1 -1
- package/dist/client/assets/{toggle-group-C6OpL7DN.js → toggle-group-CFiKQ2ci.js} +1 -1
- package/dist/client/assets/{toolbar-DXgpkFr6.js → toolbar-DyKJS-nc.js} +1 -1
- package/dist/client/assets/{track-B0e0tQsg.js → track-mMdBmn4Q.js} +1 -1
- package/dist/client/assets/{types-BLRK14g-.js → types-CMe4kheB.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BCmRFQig.js → use-ai-providers-DdpG9tV0.js} +1 -1
- package/dist/client/assets/{use-api-keys-BQ54_fNM.js → use-api-keys-DVPztQ5p.js} +1 -1
- package/dist/client/assets/{use-automations-C-F0evvd.js → use-automations-BRSTjiIh.js} +1 -1
- package/dist/client/assets/{use-autosave-BKsuSBva.js → use-autosave-w1T6MwcX.js} +1 -1
- package/dist/client/assets/{use-clock-tick-C8v98GQP.js → use-clock-tick-BDwoTF5M.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-BFUJQ-4o.js → use-commerce-diagnostic-3uST7evt.js} +1 -1
- package/dist/client/assets/{use-connection-BWd9k7zT.js → use-connection-B0HWsSWf.js} +1 -1
- package/dist/client/assets/{use-copy-Cei-KY5b.js → use-copy-D6lko-Ct.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Du6ZmsfB.js → use-create-virtual-mcp-B6x22JQj.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Cdgf9jBK.js → use-debounced-autosave-BWqJCbp3.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BKun_qJz.js → use-debounced-value-zlJQkNCj.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CylrM4gQ.js → use-decopilot-events-CHZQZmLm.js} +1 -1
- package/dist/client/assets/{use-delete-connection-Dpw1Tudk.js → use-delete-connection-JiuVog3X.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DtLJPzEp.js → use-deployment-admin-DfNR9jPj.js} +1 -1
- package/dist/client/assets/{use-file-configs-DvygNfHt.js → use-file-configs-Ceye1Qoj.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Cd2dTawJ.js → use-infinite-scroll-BhqIdVF5.js} +1 -1
- package/dist/client/assets/{use-join-requests-C2YryJTr.js → use-join-requests-Bln02fyA.js} +1 -1
- package/dist/client/assets/{use-mcp-client-Ch7mwMBE.js → use-mcp-client-Hon16yO6.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BIf9b-PX.js → use-mcp-tools-C1LZQoaw.js} +1 -1
- package/dist/client/assets/{use-members-BpvprT06.js → use-members-Cw0HKujz.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-C9QwB03t.js → use-navigate-to-agent-hdxxzq-j.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BaitIh3V.js → use-org-auth-client-C8YjjNNv.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-zEXyO_-l.js → use-org-repo-syncs-C_dTdh9t.js} +1 -1
- package/dist/client/assets/{use-org-sso-CDBfK2Lk.js → use-org-sso-BfwnLC5V.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CcsEOzS8.js → use-organization-roles-DMWAgMno.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BBEfgU6Q.js → use-organization-settings-C3EICgtS.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CvQQSWDS.js → use-registry-connections-DfEduXQX.js} +1 -1
- package/dist/client/assets/{use-secrets-Bm0gt9bn.js → use-secrets-CUyP2P-8.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-B9CSz3sK.js → use-section-preview-base-BbcdED6p.js} +1 -1
- package/dist/client/assets/{use-status-sounds-Bwy7-zCs.js → use-status-sounds-PMPfLxgu.js} +1 -1
- package/dist/client/assets/{use-tags-COCho_Bq.js → use-tags-ClcBaO1e.js} +1 -1
- package/dist/client/assets/{use-view-mode-Lsm7SHCF.js → use-view-mode-97pegvdd.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BR44XYr4.js → use-virtual-mcp-DTFqoUsv.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BrXoWint.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DxKFJSz9.js +1 -0
- package/dist/client/assets/{users-DgYpM4Ml.js → users-czV_D1-k.js} +1 -1
- package/dist/client/assets/{variant-calendar-Dl4Kis9m.js → variant-calendar-BkTP4xqh.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CreTaUJc.js → view-mode-toggle-CRxR1eLS.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +3 -3
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/record-editor-JNc3s2Ti.js +0 -1
- package/dist/client/assets/registry-D8OWXmi_.js +0 -2
- package/dist/client/assets/store-registry-CfScOx3n.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DDGgJ3x1.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-MeRtysP2.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1396,7 +1396,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var En1=L(()=>{_f()});f
|
|
|
1396
1396
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Jy`
|
|
1397
1397
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1398
1398
|
`.execute($)}}async function ur1($){await io6($),await no6($);let Z=new gr1({db:$,provider:{getMigrations:()=>Promise.resolve(wn0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function po6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await xl0();let G=X??W6(),J=async()=>{if(!Z&&!X)await mB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ur1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function to6(){let $=W6(),Z=new gr1({db:$.db,provider:{getMigrations:()=>Promise.resolve(wn0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.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}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var lr1=L(()=>{yr1();fl0();JX()});async function G70($){let Z={...process.env},X=r80($,Z);console.log(sw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?tp1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (BZ0(),NZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (fl0(),rp1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (JX(),Bp1)),{migrateToLatest:F}=await Promise.resolve().then(() => (lr1(),cr1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,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}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return jn1(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 Dn0=L(()=>{_f();op1();_8()});var ir1={};U0(ir1,{updateService:()=>VE,subscribeCliState:()=>zn0,setTuiConsoleIntercepted:()=>J70,setServerUrl:()=>Xn,setMigrationsDone:()=>Zn,setDevMode:()=>ao6,resetCliStateForTests:()=>oo6,isTuiConsoleIntercepted:()=>K70,getCliState:()=>jn0,addLogEntry:()=>oB});function dr1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function oo6(){nQ=dr1()}function ro6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function $n(){for(let $ of En0)$()}function jn0(){return nQ}function zn0($){return En0.add($),()=>En0.delete($)}function VE($){nQ={...nQ,services:nQ.services.map((Z)=>Z.name===$.name?$:Z)},$n()}function Zn(){nQ={...nQ,migrationsStatus:"done"},$n()}function Xn($){nQ={...nQ,serverUrl:$},$n()}function oB($){let Z=[...nQ.logs,$];nQ={...nQ,logs:Z.length>500?Z.slice(-500):Z},$n()}function ao6(){nQ={...nQ,services:[...ro6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},$n()}function J70($){mr1=$}function K70(){return mr1}var nQ,En0,mr1=!1;var kE=L(()=>{nQ=dr1();En0=new Set});import{createServer as nr1}from"net";function so6($){return new Promise((Z)=>{let X=nr1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Qn($){if(await so6($))return $;let Z=await new Promise((X,Q)=>{let Y=nr1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Pn0=()=>{};function Yn($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var An0={};U0(An0,{startDevServer:()=>$r6});import{join as eo6}from"path";function pr1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1399
|
-
`);Q=G.pop()??"";for(let J of G){let K=Yn(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Yn(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)oB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function $r6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Qn(Number(Y)+1):await Qn(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await G70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)VE({name:w.name,status:"ready",port:w.port});Zn();let F=eo6(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=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.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)pr1(N.stdout),pr1(N.stderr);Xn(G),VE({name:"Vite",status:"ready",port:Number(Y)}),VE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(N.kill(w),await N.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (BZ0(),NZ0));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Tn0=L(()=>{Dn0();kE();Pn0()});var W70;var Rn0=L(()=>{W70={name:"decocms",version:"4.260.6",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","@nats-io/jwt":"0.0.10-5","@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 Xr6,Text as tr1}from"ink";import{jsx as Qr6,jsxs as or1}from"react/jsx-runtime";function rr1({version:$}){return or1(Xr6,{flexDirection:"column",marginTop:1,children:[bZ0.map((Z,X)=>Qr6(tr1,{color:yZ0[X],children:Z},X)),or1(tr1,{dimColor:!0,children:[" v",$]})]})}var ar1=L(()=>{di()});import{Box as SE,Text as rB}from"ink";import{Spinner as Yr6}from"@inkjs/ui";import{jsx as XG,jsxs as Ky}from"react/jsx-runtime";function sr1({status:$}){if($==="pending")return XG(Yr6,{label:""});return XG(rB,{color:"green",children:"\u2713"})}function Gr6($){return`${$.name}: ${$.port||"...."}`}function er1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Ky(SE,{flexDirection:"column",paddingBottom:1,children:[XG(rr1,{version:W70.version}),XG(SE,{marginBottom:1,children:XG(rB,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(SE,{children:Ky(rB,{dimColor:!0,children:["Home: ",X]})}),Ky(SE,{gap:2,children:[$.map((Y)=>Ky(SE,{gap:1,children:[XG(rB,{children:Gr6(Y)}),XG(sr1,{status:Y.status})]},Y.name)),Ky(SE,{gap:1,children:[XG(rB,{children:"Migrations"}),XG(sr1,{status:Z})]})]}),XG(SE,{children:Q?Ky(rB,{children:["Open in browser: ",XG(rB,{color:"cyan",children:Q})]}):XG(rB,{dimColor:!0,children:"Starting..."})})]})}var $a1=L(()=>{Rn0();ar1()});import{Box as Jr6,Text as Gn}from"ink";import{jsx as In0,jsxs as qn0}from"react/jsx-runtime";function Kr6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Za1({logs:$}){return In0(Jr6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return In0(Gn,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return qn0(Gn,{children:[qn0(Gn,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),In0(Gn,{color:Kr6(Z.status),children:Z.status}),qn0(Gn,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Xa1=()=>{};var Mn0={};U0(Mn0,{App:()=>Fr6});import{Box as Wr6}from"ink";import{useSyncExternalStore as Hr6}from"react";import{jsx as Qa1,jsxs as Ur6}from"react/jsx-runtime";function Fr6({home:$}){let Z=Hr6(zn0,jn0);return Ur6(Wr6,{flexDirection:"column",children:[Qa1(er1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Qa1(Za1,{logs:Z.logs})]})}var Vn0=L(()=>{$a1();Xa1();kE()});var lJ="thread-gate",YU="decopilot-hosted-harness",GU="decopilot-hosted-harness-sandboxed",B3="automations",aB="background-tools",CE="task-board-github-reads",_E="jira-push";var Ya1="8";function Ga1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ya1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ja1=()=>{};import Nr6 from"pg";async function Wa1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=Br6}=$,Y=$.log??((W)=>console.log(W)),G=new Nr6.Client({connectionString:X});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",[Ka1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await N8(Or6)}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)",[Ka1.toString()])}catch{}await G.end().catch(()=>{})}}var Ka1=8314027461559302n,Br6=600000,Or6=500;var Ha1=L(()=>{N4()});function Lr6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function kn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Fa1(){let $=Lr6();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 Ua1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=RE();if(!X)return;let Q={};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);Q={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:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),H70=setInterval(()=>void Z().catch(()=>{}),$),H70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(H70)clearInterval(H70)}}var H70;var Na1=()=>{};import*as wr6 from"bun:jsc";function Ba1(){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{Dr6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Er6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Dr6,Er6;var Oa1=L(()=>{({startSamplingProfiler:Dr6,samplingProfilerStackTraces:Er6}=wr6)});function La1(){Fa1();let $=[Ua1(),Gp1(),Ba1()];return()=>{for(let Z of $)Z()}}var wa1=L(()=>{Rl0();Na1();Oa1()});var vE=v((Da1)=>{Object.defineProperty(Da1,"__esModule",{value:!0});Da1.RepublishHeaders=Da1.DirectMsgHeaders=Da1.JsHeaders=Da1.AdvisoryKind=void 0;Da1.isOrderedPushConsumerOptions=jr6;Da1.isPullConsumer=zr6;Da1.isPushConsumer=Pr6;Da1.isBoundPushConsumerOptions=Ar6;function jr6($){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 zr6($){return $.isPullConsumer()}function Pr6($){return $.isPushConsumer()}function Ar6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Da1.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"};Da1.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"};Da1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Da1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var QG=v((ja1)=>{Object.defineProperty(ja1,"__esModule",{value:!0});ja1.TD=ja1.TE=ja1.Empty=void 0;ja1.encode=Cr6;ja1.decode=_r6;ja1.Empty=new Uint8Array(0);ja1.TE=new TextEncoder;ja1.TD=new TextDecoder;function Sr6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Cr6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(ja1.TE.encode($[X]));if(Z.length===0)return ja1.Empty;if(Z.length===1)return Z[0];return Sr6(...Z)}function _r6($){if(!$||$.length===0)return"";return ja1.TD.decode($)}});var YG=v((Aa1)=>{Object.defineProperty(Aa1,"__esModule",{value:!0});Aa1.errors=Aa1.PermissionViolationError=Aa1.NoRespondersError=Aa1.TimeoutError=Aa1.RequestError=Aa1.ProtocolError=Aa1.ConnectionError=Aa1.DrainingConnectionError=Aa1.ClosedConnectionError=Aa1.AuthorizationError=Aa1.UserAuthenticationExpiredError=Aa1.InvalidOperationError=Aa1.InvalidArgumentError=Aa1.InvalidSubjectError=void 0;class Cn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Aa1.InvalidSubjectError=Cn0;class F70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new F70(`${$} ${Z}`,X)}}Aa1.InvalidArgumentError=F70;class _n0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Aa1.InvalidOperationError=_n0;class U70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new U70($);return null}}Aa1.UserAuthenticationExpiredError=U70;class N70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new N70($);return null}}Aa1.AuthorizationError=N70;class vn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Aa1.ClosedConnectionError=vn0;class xn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Aa1.DrainingConnectionError=xn0;class fn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Aa1.ConnectionError=fn0;class bn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Aa1.ProtocolError=bn0;class yn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof B70}}Aa1.RequestError=yn0;class gn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Aa1.TimeoutError=gn0;class B70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Aa1.NoRespondersError=B70;class O70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new O70($,X,Q,Y)}}Aa1.PermissionViolationError=O70;Aa1.errors={AuthorizationError:N70,ClosedConnectionError:vn0,ConnectionError:fn0,DrainingConnectionError:xn0,InvalidArgumentError:F70,InvalidOperationError:_n0,InvalidSubjectError:Cn0,NoRespondersError:B70,PermissionViolationError:O70,ProtocolError:bn0,RequestError:yn0,TimeoutError:gn0,UserAuthenticationExpiredError:U70}});var dJ=v((Ma1)=>{Object.defineProperty(Ma1,"__esModule",{value:!0});Ma1.SimpleMutex=Ma1.Perf=void 0;Ma1.extend=or6;Ma1.render=rr6;Ma1.timeout=ar6;Ma1.delay=sr6;Ma1.deadline=er6;Ma1.deferred=un0;Ma1.debugDeferred=$a6;Ma1.shuffle=Za6;Ma1.collect=Xa6;Ma1.jitter=qa1;Ma1.backoff=Qa6;Ma1.nanos=Ya6;Ma1.millis=Ga6;Ma1.randomToken=Wa6;var tr6=QG(),hn0=YG();function or6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rr6($){return tr6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function ar6($,Z=!0){let X=Z?new hn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new hn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sr6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function er6($,Z=1000){let X=un0(),Q=setTimeout(()=>{X.reject(new hn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function un0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $a6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Za6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xa6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ra1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ma1.Perf=Ra1;class Ia1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=un0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ma1.SimpleMutex=Ia1;function qa1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qa6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return qa1(X>Z?$[Z]:$[X])}}}function Ya6($){return $*1e6}function Ga6($){return Math.floor($/1e6)}var Ja6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",JU=new Uint8Array(62);for(let $=0;$<62;$++)JU[$]=Ja6.charCodeAt($);var Ka6=218340105584896;function Wa6(){let $=Math.floor(Math.random()*Ka6),Z=$%62,X=JU[Z];$=($-Z)/62,Z=$%62;let Q=JU[Z];$=($-Z)/62,Z=$%62;let Y=JU[Z];$=($-Z)/62,Z=$%62;let G=JU[Z];$=($-Z)/62,Z=$%62;let J=JU[Z];$=($-Z)/62,Z=$%62;let K=JU[Z];$=($-Z)/62,Z=$%62;let W=JU[Z];$=($-Z)/62;let H=JU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var fa1=v((va1)=>{Object.defineProperty(va1,"__esModule",{value:!0});va1.nuid=va1.NuidImpl=void 0;var Ra6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sB=62,w70=12,Ca1=10,ka1=33,Ia6=333,Sa1=w70+Ca1,ln0=new Uint8Array(sB);for(let $=0;$<sB;$++)ln0[$]=Ra6.charCodeAt($);var L70=4294967296,_a1=BigInt(sB)**BigInt(Ca1),Jn=Number(_a1/(1n<<32n)),cn0=Number(_a1%(1n<<32n));function qa6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ma6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qa6($)}class dn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Sa1),this.cbuf=new Uint8Array(w70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Jn+1)),this.seqLo=Math.floor(Math.random()*L70);while($++<8&&this.seqHi===Jn&&this.seqLo>=cn0);if(this.seqHi===Jn&&this.seqLo>=cn0)this.seqLo=0;this.inc=Math.random()*(Ia6-ka1)+ka1|0}setPre(){Ma6(this.cbuf);for(let $=0;$<w70;$++)this.buf[$]=ln0[this.cbuf[$]%sB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Sa1-1;X>=w70;X--){let Q=Math.floor($/sB),G=($-Q*sB)*L70+Z,J=Math.floor(G/sB),K=G-J*sB;this.buf[X]=ln0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=L70)this.seqLo-=L70,this.seqHi+=1;if(this.seqHi>Jn||this.seqHi===Jn&&this.seqLo>=cn0)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()}}va1.NuidImpl=dn0;va1.nuid=new dn0});var ha1=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.nuid=ya1.Nuid=void 0;var ba1=fa1();ya1.Nuid=ba1.NuidImpl;ya1.nuid=ba1.nuid});var E70=v((D70)=>{Object.defineProperty(D70,"__esModule",{value:!0});D70.nuid=D70.Nuid=void 0;var ua1=ha1();Object.defineProperty(D70,"Nuid",{enumerable:!0,get:function(){return ua1.Nuid}});Object.defineProperty(D70,"nuid",{enumerable:!0,get:function(){return ua1.nuid}})});var eB=v((ca1)=>{Object.defineProperty(ca1,"__esModule",{value:!0});ca1.DEFAULT_HOST=ca1.DEFAULT_PORT=ca1.Match=void 0;ca1.syncIterator=va6;ca1.createInbox=xa6;var Ca6=E70(),_a6=YG();ca1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function va6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function xa6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _a6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ca6.nuid.next()}`}ca1.DEFAULT_PORT=4222;ca1.DEFAULT_HOST="127.0.0.1"});var Kn=v((ia1)=>{Object.defineProperty(ia1,"__esModule",{value:!0});ia1.DataBuffer=void 0;var da1=QG();class ma1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return da1.TE.encode($)}static toAscii($){return da1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}ia1.DataBuffer=ma1});var xE=v((ta1)=>{Object.defineProperty(ta1,"__esModule",{value:!0});ta1.LF=ta1.CR=ta1.CRLF=ta1.CR_LF_LEN=ta1.CR_LF=void 0;ta1.setTransportFactory=la6;ta1.defaultPort=da6;ta1.getUrlParseFn=ma6;ta1.newTransport=ia6;ta1.getResolveFn=na6;ta1.protoLen=pa1;ta1.extractProtocolMessage=pa6;var ha6=QG(),ua6=eB(),ca6=Kn(),GG;function la6($){GG=$}function da6(){return GG!==void 0&&GG.defaultPort!==void 0?GG.defaultPort:ua6.DEFAULT_PORT}function ma6(){return GG!==void 0&&GG.urlParseFn?GG.urlParseFn:void 0}function ia6(){if(!GG||typeof GG.factory!=="function")throw Error("transport fn is not set");return GG.factory()}function na6(){return GG!==void 0&&GG.dnsResolveFn?GG.dnsResolveFn:void 0}ta1.CR_LF=`\r
|
|
1399
|
+
`);Q=G.pop()??"";for(let J of G){let K=Yn(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Yn(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)oB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function $r6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Qn(Number(Y)+1):await Qn(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await G70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)VE({name:w.name,status:"ready",port:w.port});Zn();let F=eo6(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=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.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)pr1(N.stdout),pr1(N.stderr);Xn(G),VE({name:"Vite",status:"ready",port:Number(Y)}),VE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(N.kill(w),await N.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (BZ0(),NZ0));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Tn0=L(()=>{Dn0();kE();Pn0()});var W70;var Rn0=L(()=>{W70={name:"decocms",version:"4.260.7",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","@nats-io/jwt":"0.0.10-5","@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 Xr6,Text as tr1}from"ink";import{jsx as Qr6,jsxs as or1}from"react/jsx-runtime";function rr1({version:$}){return or1(Xr6,{flexDirection:"column",marginTop:1,children:[bZ0.map((Z,X)=>Qr6(tr1,{color:yZ0[X],children:Z},X)),or1(tr1,{dimColor:!0,children:[" v",$]})]})}var ar1=L(()=>{di()});import{Box as SE,Text as rB}from"ink";import{Spinner as Yr6}from"@inkjs/ui";import{jsx as XG,jsxs as Ky}from"react/jsx-runtime";function sr1({status:$}){if($==="pending")return XG(Yr6,{label:""});return XG(rB,{color:"green",children:"\u2713"})}function Gr6($){return`${$.name}: ${$.port||"...."}`}function er1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Ky(SE,{flexDirection:"column",paddingBottom:1,children:[XG(rr1,{version:W70.version}),XG(SE,{marginBottom:1,children:XG(rB,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(SE,{children:Ky(rB,{dimColor:!0,children:["Home: ",X]})}),Ky(SE,{gap:2,children:[$.map((Y)=>Ky(SE,{gap:1,children:[XG(rB,{children:Gr6(Y)}),XG(sr1,{status:Y.status})]},Y.name)),Ky(SE,{gap:1,children:[XG(rB,{children:"Migrations"}),XG(sr1,{status:Z})]})]}),XG(SE,{children:Q?Ky(rB,{children:["Open in browser: ",XG(rB,{color:"cyan",children:Q})]}):XG(rB,{dimColor:!0,children:"Starting..."})})]})}var $a1=L(()=>{Rn0();ar1()});import{Box as Jr6,Text as Gn}from"ink";import{jsx as In0,jsxs as qn0}from"react/jsx-runtime";function Kr6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Za1({logs:$}){return In0(Jr6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return In0(Gn,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return qn0(Gn,{children:[qn0(Gn,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),In0(Gn,{color:Kr6(Z.status),children:Z.status}),qn0(Gn,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Xa1=()=>{};var Mn0={};U0(Mn0,{App:()=>Fr6});import{Box as Wr6}from"ink";import{useSyncExternalStore as Hr6}from"react";import{jsx as Qa1,jsxs as Ur6}from"react/jsx-runtime";function Fr6({home:$}){let Z=Hr6(zn0,jn0);return Ur6(Wr6,{flexDirection:"column",children:[Qa1(er1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Qa1(Za1,{logs:Z.logs})]})}var Vn0=L(()=>{$a1();Xa1();kE()});var lJ="thread-gate",YU="decopilot-hosted-harness",GU="decopilot-hosted-harness-sandboxed",B3="automations",aB="background-tools",CE="task-board-github-reads",_E="jira-push";var Ya1="8";function Ga1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ya1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ja1=()=>{};import Nr6 from"pg";async function Wa1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=Br6}=$,Y=$.log??((W)=>console.log(W)),G=new Nr6.Client({connectionString:X});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",[Ka1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await N8(Or6)}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)",[Ka1.toString()])}catch{}await G.end().catch(()=>{})}}var Ka1=8314027461559302n,Br6=600000,Or6=500;var Ha1=L(()=>{N4()});function Lr6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function kn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Fa1(){let $=Lr6();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 Ua1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=RE();if(!X)return;let Q={};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);Q={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:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),H70=setInterval(()=>void Z().catch(()=>{}),$),H70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(H70)clearInterval(H70)}}var H70;var Na1=()=>{};import*as wr6 from"bun:jsc";function Ba1(){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{Dr6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Er6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Dr6,Er6;var Oa1=L(()=>{({startSamplingProfiler:Dr6,samplingProfilerStackTraces:Er6}=wr6)});function La1(){Fa1();let $=[Ua1(),Gp1(),Ba1()];return()=>{for(let Z of $)Z()}}var wa1=L(()=>{Rl0();Na1();Oa1()});var vE=v((Da1)=>{Object.defineProperty(Da1,"__esModule",{value:!0});Da1.RepublishHeaders=Da1.DirectMsgHeaders=Da1.JsHeaders=Da1.AdvisoryKind=void 0;Da1.isOrderedPushConsumerOptions=jr6;Da1.isPullConsumer=zr6;Da1.isPushConsumer=Pr6;Da1.isBoundPushConsumerOptions=Ar6;function jr6($){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 zr6($){return $.isPullConsumer()}function Pr6($){return $.isPushConsumer()}function Ar6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Da1.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"};Da1.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"};Da1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Da1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var QG=v((ja1)=>{Object.defineProperty(ja1,"__esModule",{value:!0});ja1.TD=ja1.TE=ja1.Empty=void 0;ja1.encode=Cr6;ja1.decode=_r6;ja1.Empty=new Uint8Array(0);ja1.TE=new TextEncoder;ja1.TD=new TextDecoder;function Sr6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Cr6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(ja1.TE.encode($[X]));if(Z.length===0)return ja1.Empty;if(Z.length===1)return Z[0];return Sr6(...Z)}function _r6($){if(!$||$.length===0)return"";return ja1.TD.decode($)}});var YG=v((Aa1)=>{Object.defineProperty(Aa1,"__esModule",{value:!0});Aa1.errors=Aa1.PermissionViolationError=Aa1.NoRespondersError=Aa1.TimeoutError=Aa1.RequestError=Aa1.ProtocolError=Aa1.ConnectionError=Aa1.DrainingConnectionError=Aa1.ClosedConnectionError=Aa1.AuthorizationError=Aa1.UserAuthenticationExpiredError=Aa1.InvalidOperationError=Aa1.InvalidArgumentError=Aa1.InvalidSubjectError=void 0;class Cn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Aa1.InvalidSubjectError=Cn0;class F70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new F70(`${$} ${Z}`,X)}}Aa1.InvalidArgumentError=F70;class _n0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Aa1.InvalidOperationError=_n0;class U70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new U70($);return null}}Aa1.UserAuthenticationExpiredError=U70;class N70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new N70($);return null}}Aa1.AuthorizationError=N70;class vn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Aa1.ClosedConnectionError=vn0;class xn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Aa1.DrainingConnectionError=xn0;class fn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Aa1.ConnectionError=fn0;class bn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Aa1.ProtocolError=bn0;class yn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof B70}}Aa1.RequestError=yn0;class gn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Aa1.TimeoutError=gn0;class B70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Aa1.NoRespondersError=B70;class O70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new O70($,X,Q,Y)}}Aa1.PermissionViolationError=O70;Aa1.errors={AuthorizationError:N70,ClosedConnectionError:vn0,ConnectionError:fn0,DrainingConnectionError:xn0,InvalidArgumentError:F70,InvalidOperationError:_n0,InvalidSubjectError:Cn0,NoRespondersError:B70,PermissionViolationError:O70,ProtocolError:bn0,RequestError:yn0,TimeoutError:gn0,UserAuthenticationExpiredError:U70}});var dJ=v((Ma1)=>{Object.defineProperty(Ma1,"__esModule",{value:!0});Ma1.SimpleMutex=Ma1.Perf=void 0;Ma1.extend=or6;Ma1.render=rr6;Ma1.timeout=ar6;Ma1.delay=sr6;Ma1.deadline=er6;Ma1.deferred=un0;Ma1.debugDeferred=$a6;Ma1.shuffle=Za6;Ma1.collect=Xa6;Ma1.jitter=qa1;Ma1.backoff=Qa6;Ma1.nanos=Ya6;Ma1.millis=Ga6;Ma1.randomToken=Wa6;var tr6=QG(),hn0=YG();function or6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rr6($){return tr6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function ar6($,Z=!0){let X=Z?new hn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new hn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sr6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function er6($,Z=1000){let X=un0(),Q=setTimeout(()=>{X.reject(new hn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function un0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $a6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Za6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xa6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ra1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ma1.Perf=Ra1;class Ia1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=un0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ma1.SimpleMutex=Ia1;function qa1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qa6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return qa1(X>Z?$[Z]:$[X])}}}function Ya6($){return $*1e6}function Ga6($){return Math.floor($/1e6)}var Ja6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",JU=new Uint8Array(62);for(let $=0;$<62;$++)JU[$]=Ja6.charCodeAt($);var Ka6=218340105584896;function Wa6(){let $=Math.floor(Math.random()*Ka6),Z=$%62,X=JU[Z];$=($-Z)/62,Z=$%62;let Q=JU[Z];$=($-Z)/62,Z=$%62;let Y=JU[Z];$=($-Z)/62,Z=$%62;let G=JU[Z];$=($-Z)/62,Z=$%62;let J=JU[Z];$=($-Z)/62,Z=$%62;let K=JU[Z];$=($-Z)/62,Z=$%62;let W=JU[Z];$=($-Z)/62;let H=JU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var fa1=v((va1)=>{Object.defineProperty(va1,"__esModule",{value:!0});va1.nuid=va1.NuidImpl=void 0;var Ra6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sB=62,w70=12,Ca1=10,ka1=33,Ia6=333,Sa1=w70+Ca1,ln0=new Uint8Array(sB);for(let $=0;$<sB;$++)ln0[$]=Ra6.charCodeAt($);var L70=4294967296,_a1=BigInt(sB)**BigInt(Ca1),Jn=Number(_a1/(1n<<32n)),cn0=Number(_a1%(1n<<32n));function qa6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ma6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qa6($)}class dn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Sa1),this.cbuf=new Uint8Array(w70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Jn+1)),this.seqLo=Math.floor(Math.random()*L70);while($++<8&&this.seqHi===Jn&&this.seqLo>=cn0);if(this.seqHi===Jn&&this.seqLo>=cn0)this.seqLo=0;this.inc=Math.random()*(Ia6-ka1)+ka1|0}setPre(){Ma6(this.cbuf);for(let $=0;$<w70;$++)this.buf[$]=ln0[this.cbuf[$]%sB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Sa1-1;X>=w70;X--){let Q=Math.floor($/sB),G=($-Q*sB)*L70+Z,J=Math.floor(G/sB),K=G-J*sB;this.buf[X]=ln0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=L70)this.seqLo-=L70,this.seqHi+=1;if(this.seqHi>Jn||this.seqHi===Jn&&this.seqLo>=cn0)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()}}va1.NuidImpl=dn0;va1.nuid=new dn0});var ha1=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.nuid=ya1.Nuid=void 0;var ba1=fa1();ya1.Nuid=ba1.NuidImpl;ya1.nuid=ba1.nuid});var E70=v((D70)=>{Object.defineProperty(D70,"__esModule",{value:!0});D70.nuid=D70.Nuid=void 0;var ua1=ha1();Object.defineProperty(D70,"Nuid",{enumerable:!0,get:function(){return ua1.Nuid}});Object.defineProperty(D70,"nuid",{enumerable:!0,get:function(){return ua1.nuid}})});var eB=v((ca1)=>{Object.defineProperty(ca1,"__esModule",{value:!0});ca1.DEFAULT_HOST=ca1.DEFAULT_PORT=ca1.Match=void 0;ca1.syncIterator=va6;ca1.createInbox=xa6;var Ca6=E70(),_a6=YG();ca1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function va6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function xa6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _a6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ca6.nuid.next()}`}ca1.DEFAULT_PORT=4222;ca1.DEFAULT_HOST="127.0.0.1"});var Kn=v((ia1)=>{Object.defineProperty(ia1,"__esModule",{value:!0});ia1.DataBuffer=void 0;var da1=QG();class ma1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return da1.TE.encode($)}static toAscii($){return da1.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 X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].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 X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].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}}ia1.DataBuffer=ma1});var xE=v((ta1)=>{Object.defineProperty(ta1,"__esModule",{value:!0});ta1.LF=ta1.CR=ta1.CRLF=ta1.CR_LF_LEN=ta1.CR_LF=void 0;ta1.setTransportFactory=la6;ta1.defaultPort=da6;ta1.getUrlParseFn=ma6;ta1.newTransport=ia6;ta1.getResolveFn=na6;ta1.protoLen=pa1;ta1.extractProtocolMessage=pa6;var ha6=QG(),ua6=eB(),ca6=Kn(),GG;function la6($){GG=$}function da6(){return GG!==void 0&&GG.defaultPort!==void 0?GG.defaultPort:ua6.DEFAULT_PORT}function ma6(){return GG!==void 0&&GG.urlParseFn?GG.urlParseFn:void 0}function ia6(){if(!GG||typeof GG.factory!=="function")throw Error("transport fn is not set");return GG.factory()}function na6(){return GG!==void 0&&GG.dnsResolveFn?GG.dnsResolveFn:void 0}ta1.CR_LF=`\r
|
|
1400
1400
|
`;ta1.CR_LF_LEN=ta1.CR_LF.length;ta1.CRLF=ca6.DataBuffer.fromAscii(ta1.CR_LF);ta1.CR=new Uint8Array(ta1.CRLF)[0];ta1.LF=new Uint8Array(ta1.CRLF)[1];function pa1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===ta1.CR&&$[X]===ta1.LF)return X+1}return 0}function pa6($){let Z=pa1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return ha6.TD.decode(Q)}return""}});var tn0=v((Xs1)=>{Object.defineProperty(Xs1,"__esModule",{value:!0});Xs1.ipV4=ea1;Xs1.isIP=Ys6;Xs1.parseIP=$s1;var Wn=4,fE=16,j70=48,sa1=57,ra1=65,Xs6=70,aa1=97,Qs6=102,pn0=16777215;function ea1($,Z,X,Q){let Y=new Uint8Array(fE);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]=X,Y[15]=Q,Y}function Ys6($){return $s1($)!==void 0}function $s1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Zs1($);case":":return Gs6($)}return}function Zs1($){let Z=new Uint8Array(Wn);for(let X=0;X<Wn;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Js6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return ea1(Z[0],Z[1],Z[2],Z[3])}function Gs6($){let Z=new Uint8Array(fE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<fE){let{n:Y,c:G,ok:J}=Ks6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=fE-Wn)return;if(Q+Wn>fE)return;let K=Zs1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Wn;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<fE){if(X<0)return;let Y=fE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function Js6($){let Z=0,X=0;for(Z=0;Z<$.length&&j70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=sa1;Z++)if(X=X*10+($.charCodeAt(Z)-j70),X>=pn0)return{n:pn0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Ks6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(j70<=$.charCodeAt(X)&&$.charCodeAt(X)<=sa1)Z*=16,Z+=$.charCodeAt(X)-j70;else if(aa1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Qs6)Z*=16,Z+=$.charCodeAt(X)-aa1+10;else if(ra1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Xs6)Z*=16,Z+=$.charCodeAt(X)-ra1+10;else break;if(Z>=pn0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var $p0=v((Ys1)=>{Object.defineProperty(Ys1,"__esModule",{value:!0});Ys1.Servers=Ys1.ServerImpl=void 0;Ys1.isIPV4OrHostname=Qs1;Ys1.hostPort=en0;var on0=xE(),rn0=dJ(),an0=tn0(),Us6=eB(),Ns6=YG();function Qs1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function sn0($){return!Qs1($)}function Bs6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function en0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Bs6($),sn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=sn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Us6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Wy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=en0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.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,an0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${sn0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Wy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,rn0.shuffle)(Z);return this.resolves=Z,Z}}Ys1.ServerImpl=Wy;class z70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Ns6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,on0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=en0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Wy(Y))}if(this.randomize)(0,rn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,an0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,on0.getUrlParseFn)();$=X?X($):$;let Q=new Wy($,Z);if((0,an0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}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 z70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return z70.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 X=[],Q=[],Y=(0,on0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Wy(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);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,rn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Ys1.Servers=z70});var P70=v((Ws1)=>{Object.defineProperty(Ws1,"__esModule",{value:!0});Ws1.QueuedIteratorImpl=void 0;var Zp0=dJ(),Js1=YG();class Ks1{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,Zp0.deferred)(),this.yields=[],this.iterClosed=(0,Zp0.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(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Js1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Js1.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 Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Zp0.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}}Ws1.QueuedIteratorImpl=Ks1});var Xp0=v((Ns1)=>{Object.defineProperty(Ns1,"__esModule",{value:!0});Ns1.MuxSubscription=void 0;var Ds6=eB(),Fs1=YG();class Us1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Ds6.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((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Fs1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Fs1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ns1.MuxSubscription=Us1});var Qp0=v((Ls1)=>{Object.defineProperty(Ls1,"__esModule",{value:!0});Ls1.Heartbeat=void 0;var Es6=dJ();class Os1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,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,Es6.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})}}Ls1.Heartbeat=Os1});var Jp0=v((zs1)=>{Object.defineProperty(zs1,"__esModule",{value:!0});zs1.DenoBuffer=zs1.MAX_SIZE=zs1.AssertionError=void 0;zs1.assert=Es1;zs1.concat=js1;zs1.append=zs6;zs1.readAll=Ps6;zs1.writeAll=As6;var js6=QG();class Yp0 extends Error{constructor($){super($);this.name="AssertionError"}}zs1.AssertionError=Yp0;function Es1($,Z="Assertion failed."){if(!$)throw new Yp0(Z)}var Ds1=32768;zs1.MAX_SIZE=4294967294;function A70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function js1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function zs6($,Z){return js1($,Uint8Array.of(Z))}class Gp0{_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($){Es1($<=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=A70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(js6.TE.encode($))}write($){let Z=this._grow($.byteLength);return A70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)A70(this._buf.subarray(this._off),this._buf);else if(Q+$>zs1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,zs1.MAX_SIZE));A70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,zs1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Ds1);while(!0){let Q=this.capacity-this.length<Ds1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}zs1.DenoBuffer=Gp0;function Ps6($){let Z=new Gp0;return Z.readFrom($),Z.bytes()}function As6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Hp0=v((Is1)=>{Object.defineProperty(Is1,"__esModule",{value:!0});Is1.cc=Is1.State=Is1.Parser=Is1.Kind=void 0;Is1.describe=ks6;var Kp0=Jp0(),Wp0=QG();Is1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function ks6($){let Z,X="";switch($.kind){case Is1.Kind.MSG:Z="MSG";break;case Is1.Kind.OK:Z="OK";break;case Is1.Kind.ERR:Z="ERR",X=Wp0.TD.decode($.data);break;case Is1.Kind.PING:Z="PING";break;case Is1.Kind.PONG:Z="PONG";break;case Is1.Kind.INFO:Z="INFO",X=Wp0.TD.decode($.data)}return`${Z}: ${X}`}function As1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Ts1=48,Ss6=57,Hy=67108864;class Rs1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Is1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Is1.State.OP_START:switch(X){case Is1.cc.M:case Is1.cc.m:this.state=Is1.State.OP_M,this.hdr=-1,this.ma=As1();break;case Is1.cc.H:case Is1.cc.h:this.state=Is1.State.OP_H,this.hdr=0,this.ma=As1();break;case Is1.cc.P:case Is1.cc.p:this.state=Is1.State.OP_P;break;case Is1.cc.PLUS:this.state=Is1.State.OP_PLUS;break;case Is1.cc.MINUS:this.state=Is1.State.OP_MINUS;break;case Is1.cc.I:case Is1.cc.i:this.state=Is1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_H:switch(X){case Is1.cc.M:case Is1.cc.m:this.state=Is1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_M:switch(X){case Is1.cc.S:case Is1.cc.s:this.state=Is1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MS:switch(X){case Is1.cc.G:case Is1.cc.g:this.state=Is1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MSG:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:this.state=Is1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MSG_SPC:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:continue;default:this.state=Is1.State.MSG_ARG,this.as=Z}break;case Is1.State.MSG_ARG:switch(X){case Is1.cc.CR:this.drop=1;break;case Is1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Is1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Is1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Is1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Is1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Is1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Is1.State.MSG_END;break;case Is1.State.MSG_END:switch(X){case Is1.cc.NL:this.drop=0,this.as=Z+1,this.state=Is1.State.OP_START;break;default:continue}break;case Is1.State.OP_PLUS:switch(X){case Is1.cc.O:case Is1.cc.o:this.state=Is1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PLUS_O:switch(X){case Is1.cc.K:case Is1.cc.k:this.state=Is1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PLUS_OK:switch(X){case Is1.cc.NL:this.dispatcher.push({kind:Is1.Kind.OK}),this.drop=0,this.state=Is1.State.OP_START;break}break;case Is1.State.OP_MINUS:switch(X){case Is1.cc.E:case Is1.cc.e:this.state=Is1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MINUS_E:switch(X){case Is1.cc.R:case Is1.cc.r:this.state=Is1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MINUS_ER:switch(X){case Is1.cc.R:case Is1.cc.r:this.state=Is1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MINUS_ERR:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:this.state=Is1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_MINUS_ERR_SPC:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:continue;default:this.state=Is1.State.MINUS_ERR_ARG,this.as=Z}break;case Is1.State.MINUS_ERR_ARG:switch(X){case Is1.cc.CR:this.drop=1;break;case Is1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Is1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Is1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Is1.State.OP_P:switch(X){case Is1.cc.I:case Is1.cc.i:this.state=Is1.State.OP_PI;break;case Is1.cc.O:case Is1.cc.o:this.state=Is1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PO:switch(X){case Is1.cc.N:case Is1.cc.n:this.state=Is1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PON:switch(X){case Is1.cc.G:case Is1.cc.g:this.state=Is1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PONG:switch(X){case Is1.cc.NL:this.dispatcher.push({kind:Is1.Kind.PONG}),this.drop=0,this.state=Is1.State.OP_START;break}break;case Is1.State.OP_PI:switch(X){case Is1.cc.N:case Is1.cc.n:this.state=Is1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PIN:switch(X){case Is1.cc.G:case Is1.cc.g:this.state=Is1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_PING:switch(X){case Is1.cc.NL:this.dispatcher.push({kind:Is1.Kind.PING}),this.drop=0,this.state=Is1.State.OP_START;break}break;case Is1.State.OP_I:switch(X){case Is1.cc.N:case Is1.cc.n:this.state=Is1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_IN:switch(X){case Is1.cc.F:case Is1.cc.f:this.state=Is1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_INF:switch(X){case Is1.cc.O:case Is1.cc.o:this.state=Is1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_INFO:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:this.state=Is1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Is1.State.OP_INFO_SPC:switch(X){case Is1.cc.SPACE:case Is1.cc.TAB:continue;default:this.state=Is1.State.INFO_ARG,this.as=Z}break;case Is1.State.INFO_ARG:switch(X){case Is1.cc.CR:this.drop=1;break;case Is1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Is1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Is1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Is1.State.MSG_ARG||this.state===Is1.State.MINUS_ERR_ARG||this.state===Is1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Kp0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Is1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Kp0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new Kp0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Is1.cc.SPACE:case Is1.cc.TAB:case Is1.cc.CR:case Is1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],Hy);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],Hy);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}: ${Wp0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Is1.cc.SPACE:case Is1.cc.TAB:case Is1.cc.CR:case Is1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));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],Hy),this.ma.size=this.protoParseInt(Z[3],Hy);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],Hy),this.ma.size=this.protoParseInt(Z[4],Hy);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 X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Ts1||$[Q]>Ss6)return-1;X=X*10+($[Q]-Ts1)}return Z!==void 0&&X>Z?-1:X}}Is1.Parser=Rs1;Is1.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};Is1.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 I70=v((Ms1)=>{Object.defineProperty(Ms1,"__esModule",{value:!0});Ms1.MsgHdrsImpl=void 0;Ms1.canonicalMIMEHeaderKey=Up0;Ms1.headers=vs6;var qs1=QG(),mJ=eB(),R70=YG();function Up0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw R70.InvalidArgumentError.format("header",`'${$[N]}' 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;U[N]=B,F=B==45}return String.fromCharCode(...U)}function vs6($=0,Z=""){if($===0&&Z!=="")throw R70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw R70.InvalidArgumentError.format("description","is required");return new Fy($,Z)}var Fp0="NATS/1.0";class Fy{_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,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].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 Fy,Q=qs1.TD.decode($).split(`\r
|
|
1401
1401
|
`),Y=Q[0];if(Y!==Fp0){let G=Y.replace(Fp0,"").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(Q.length>=1)Q.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 $=Fp0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1402
1402
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -1450,7 +1450,7 @@ You are running the brand-context onboarding for the user's organization. Your o
|
|
|
1450
1450
|
4. Do NOT call any other tools in this thread. Do NOT call \`brand_context_setup\` more than once.
|
|
1451
1451
|
|
|
1452
1452
|
If the tool returns an error, surface the error message to the user and ask whether they want to try a different URL.
|
|
1453
|
-
`.trim();vZ8=P3("site-diagnostics_"),pz5=vZ8.is,tz5=vZ8.get,xZ8=P3("commerce-discovery_"),oz5=xZ8.is,aQ0=xZ8.get;VO={AGENT_MANAGER:P3("studio-agent-manager_"),AUTOMATION_MANAGER:P3("studio-automation-manager_"),CONNECTION_MANAGER:P3("studio-connection-manager_"),API_KEY_MANAGER:P3("studio-api-key-manager_"),STORE_MANAGER:P3("studio-store-manager_"),BRAND_MANAGER:P3("studio-brand-manager_"),USAGE_MANAGER:P3("studio-usage-manager_")},QY={AGENT_MANAGER:VO.AGENT_MANAGER.get,AUTOMATION_MANAGER:VO.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:VO.CONNECTION_MANAGER.get,API_KEY_MANAGER:VO.API_KEY_MANAGER.get,STORE_MANAGER:VO.STORE_MANAGER.get,BRAND_MANAGER:VO.BRAND_MANAGER.get,USAGE_MANAGER:VO.USAGE_MANAGER.get}});function uZ8($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function K34($){return uZ8($).includes("deepresearch")}function cZ8($){let Z=uZ8($);if(Z.includes("deepresearch"))return!1;return W34.some((X)=>Z.includes(X))}function H34($){return $.asyncResearch!==!0&&cZ8($.modelId)}function F34($){return $.asyncResearch===!0||K34($.modelId)||cZ8($.modelId)}function Kg($,Z,X,Q){for(let Y of X){let G=$.find((J)=>J.modelId===Y);if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}for(let Y of X){let G=$.find((J)=>J.modelId.includes(Y));if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}if(Q){let Y=$.find(Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}return null}function lZ8($,Z){let X={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Q of $){let Y=Z[Q.id]??[],G=Q.providerId;if(!X.chat.fast)X.chat.fast=Kg(Y,Q.id,Z34[G]??[]);if(!X.chat.smart)X.chat.smart=Kg(Y,Q.id,X34[G]??[]);if(!X.chat.thinking)X.chat.thinking=Kg(Y,Q.id,Q34[G]??[]);if(!X.image)X.image=Kg(Y,Q.id,Y34[G]??[],(J)=>J.capabilities?.includes("image")===!0);if(!X.webSearch)X.webSearch=Kg(Y,Q.id,G34[G]??[],H34);if(!X.deepResearch)X.deepResearch=Kg(Y,Q.id,J34[G]??[],F34)}return X}var Z34,X34,Q34,Y34,G34,J34,W34;var dZ8=L(()=>{Z34={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},X34={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},Q34={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},Y34={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},G34={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},J34={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};W34=["sonar","searchpreview","online"]});function sQ0($){if(!$)return;let Z={};for(let X in $){let Q=$[X];if(typeof Q==="object"&&Q!==null){let Y={};for(let G of U34)if(G in Q)Y[G]=Q[G];Z[X]=Y}}return Object.keys(Z).length>0?Z:void 0}var U34;var mZ8=L(()=>{U34=["usage","cost","model"]});var c6=L(()=>{SX0();hZ8();dZ8();mZ8()});function eQ0($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function kO($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Q=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return eQ0(Q)}catch{return eQ0($.connection_url)}if($.title)return eQ0($.title);return $.id??"unknown"}var $Y0=()=>{};var Wg=300000,ZY0=5000,Sa0=3,Ca0=30000,iZ8=65000,XY0=1000,Hg=3,nZ8=5,pZ8=60000,tZ8=300000,_a0=60000;function oZ8(){if(TU.size<XY0)return;let $=null,Z=1/0;for(let[X,Q]of TU)if(Q.lastFailureAt<Z)Z=Q.lastFailureAt,$=X;if($)TU.delete($)}function rZ8($){let Z=TU.get($);if(!Z)return oZ8(),TU.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=Hg};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=Hg}}function va0($){let Z=TU.get($);if(Z){Z.disabled=!0;return}oZ8(),TU.set($,{consecutiveFailures:Hg,disabled:!0,lastFailureAt:Date.now()})}function aZ8($){return TU.get($)?.disabled??!1}function sZ8($){TU.delete($)}var TU;var eZ8=L(()=>{TU=new Map});import{sql as s8}from"kysely";function Z78($){if($.length===0)return null;let Z=$[0];if($.length===1&&B34.has(Z))return s8.ref(Z);if($.length===2&&$78.has(Z)){let X=$[1];return s8`${s8.ref(Z)}->>${s8.lit(X)}`}if($.length>2&&$78.has(Z)){let X=`{${$.slice(1).join(",")}}`;return s8`${s8.ref(Z)}#>>${s8.lit(X)}`}return null}function X78($){if("conditions"in $){let{operator:G,conditions:J}=$;if(J.length===0)return s8`true`;let K=J.map((W)=>X78(W));switch(G){case"and":return s8`(${s8.join(K,s8` AND `)})`;case"or":return s8`(${s8.join(K,s8` OR `)})`;case"not":return s8`NOT (${s8.join(K,s8` AND `)})`;default:return s8`true`}}let{field:Z,operator:X,value:Q}=$,Y=Z78(Z);if(!Y)return s8`true`;switch(X){case"eq":return Q===null?s8`${Y} IS NULL`:s8`${Y} = ${s8.val(Q)}`;case"gt":return s8`${Y} > ${s8.val(Q)}`;case"gte":return s8`${Y} >= ${s8.val(Q)}`;case"lt":return s8`${Y} < ${s8.val(Q)}`;case"lte":return s8`${Y} <= ${s8.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return s8`false`;return s8`${Y} IN (${s8.join(Q.map((G)=>s8.val(G)))})`;case"like":return s8`${Y} ILIKE ${s8.val(Q)}`;case"contains":{let G=String(Q).replace(/[%_\\]/g,"\\$&");return s8`${Y} ILIKE ${s8.val(`%${G}%`)}`}default:return s8`true`}}class _p{db;vault;constructor($,Z){this.db=$;this.vault=Z}async create($){let Z=$.id??G4("conn"),X=new Date().toISOString(),Q=await this.db.selectFrom("connections").select("organization_id").where("id","=",Z).executeTakeFirst();if(Q){if(Q.organization_id!==$.organization_id)throw Error("Connection ID already exists");return this.update(Z,$)}let Y=kO($),G=await this.serializeConnection({...$,id:$.id??Z,slug:Y,status:"active",created_at:X,updated_at:X}),J=await this.db.insertInto("connections").values(G).returningAll().executeTakeFirst();if(!J)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(J)}async createNew($){let Z=$.id??G4("conn"),X=new Date().toISOString(),Q=kO($),Y=await this.serializeConnection({...$,id:Z,slug:Q,status:"active",created_at:X,updated_at:X}),G;try{G=await this.db.insertInto("connections").values(Y).returningAll().executeTakeFirst()}catch(J){if(J instanceof Error&&(J.message.includes("duplicate key")||J.message.includes("unique constraint")))throw Error("Connection ID already exists");throw J}if(!G)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(G)}async findById($,Z){let X=A3($);if(X)return gZ8(Z??X);let Q=this.db.selectFrom("connections").selectAll().where("id","=",$);if(Z)Q=Q.where("organization_id","=",Z);let Y=await Q.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$);if(!Z?.includeVirtual)X=X.where("connection_type","!=","VIRTUAL");if(Z?.slug)X=X.where("slug","=",Z.slug);if(Z?.where)X=X.where(X78(Z.where));let G=(await this.db.selectFrom(X.as("filtered")).select(s8`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(Z?.orderBy&&Z.orderBy.length>0)for(let W of Z.orderBy){let H=Z78(W.field);if(!H)continue;let F=W.direction==="desc"?s8`desc`:s8`asc`,U=W.nulls==="first"?s8`nulls first`:s8`nulls last`;X=X.orderBy(s8`${H} ${F} ${U}`)}if(Z?.limit)X=X.limit(Z.limit);if(Z?.offset)X=X.offset(Z.offset);let J=await X.execute();return{items:await Promise.all(J.map((W)=>this.deserializeConnection(W))),totalCount:G}}async update($,Z){if(Object.keys(Z).length===0){let J=await this.findById($);if(!J)throw Error("Connection not found");return J}let X={...Z},Q=await this.db.selectFrom("connections").select(["app_name","connection_url","title"]).where("id","=",$).executeTakeFirst();if(Q){let J=(K)=>Z[K]===void 0?Q[K]:Z[K];X.slug=kO({app_name:J("app_name"),connection_url:J("connection_url"),title:J("title"),id:$})}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()}),G=await this.db.updateTable("connections").set(Y).where("id","=",$).returningAll().executeTakeFirst();if(!G)throw Error("Connection not found after update");return this.deserializeConnection(G)}async isReferencedByThread($){return await this.db.selectFrom("threads").select("id").where(s8`metadata -> 'githubRepo' ->> 'connectionId' = ${$}`).limit(1).executeTakeFirst()!==void 0}async delete($){await this.db.deleteFrom("connections").where("id","=",$).execute()}async testConnection($,Z){let X=await this.findById($);if(!X)throw Error("Connection not found");let Q=Date.now();if(X.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!X.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{if(await Gg(X.connection_url))return{healthy:!1,latencyMs:Date.now()-Q};let G=X.connection_headers,J=new AbortController,K=setTimeout(()=>J.abort(),1e4),W;try{W=await Jg()(X.connection_url,{method:"POST",signal:J.signal,headers:{"Content-Type":"application/json",...X.connection_token&&{Authorization:`Bearer ${X.connection_token}`},...G?.headers,...Z},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})})}finally{clearTimeout(K)}return{healthy:W.ok||W.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection($){let Z={};for(let[X,Q]of Object.entries($)){if(Q===void 0)continue;if(X==="tools")continue;if(X==="connection_token"&&Q)Z[X]=await this.vault.encrypt(Q);else if(X==="configuration_state"&&Q){let Y=JSON.stringify(Q);Z[X]=await this.vault.encrypt(Y)}else if(X==="connection_headers"&&Q){let Y=Q;if(mW(Y)&&Y.envVars){let G={};for(let[J,K]of Object.entries(Y.envVars))G[J]=await this.vault.encrypt(K);Z[X]=JSON.stringify({...Y,envVars:G})}else Z[X]=JSON.stringify(Y)}else if(N34.includes(X))Z[X]=Q?JSON.stringify(Q):null;else Z[X]=Q}return Z}async handleDecryptFailures($,Z){let X=`connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title})`;if(aZ8($.id))return;if($.status!=="active"){va0($.id);return}let{thresholdCrossed:Q}=rZ8($.id);if(!Q){for(let{label:Y,error:G}of Z)console.error(`Failed to decrypt ${Y} for ${X}:`,G);return}try{await this.db.updateTable("connections").set({status:"error"}).where("id","=",$.id).execute(),va0($.id),console.error(`Disabled ${X} after ${Hg} consecutive decryption failures.`,Z[0]?.error)}catch(Y){console.error(`Failed to disable ${X} after decryption failures:`,Y)}}async deserializeConnection($){let Z=[],X=null;if($.connection_token)try{X=await this.vault.decrypt($.connection_token)}catch(J){Z.push({label:"connection token",error:J})}let Q=null;if($.configuration_state)try{let J=await this.vault.decrypt($.configuration_state);Q=JSON.parse(J)}catch(J){Z.push({label:"configuration state",error:J})}if(Z.length>0)await this.handleDecryptFailures($,Z);else if($.connection_token||$.configuration_state)sZ8($.id);let Y=null;if($.connection_headers)try{let J=JSON.parse($.connection_headers);if(mW(J)&&J.envVars){let K={};for(let[W,H]of Object.entries(J.envVars))try{K[W]=await this.vault.decrypt(H)}catch{K[W]=H}Y={...J,envVars:K}}else Y=J}catch(J){console.error(`Failed to parse connection_headers for connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title}):`,J)}let G=(J)=>{if(J===null)return null;if(typeof J==="string")try{return JSON.parse(J)}catch{return null}return J};return{id:$.id,organization_id:$.organization_id,created_by:$.created_by,updated_by:$.updated_by??void 0,title:$.title,description:$.description,icon:$.icon,app_name:$.app_name,app_id:$.app_id,slug:$.slug,connection_type:$.connection_type,connection_url:$.connection_url,connection_token:X,connection_headers:Y,oauth_config:G($.oauth_config),configuration_state:Q,configuration_scopes:G($.configuration_scopes),metadata:G($.metadata),tools:null,bindings:G($.bindings),status:$.status,created_at:$.created_at,updated_at:$.updated_at}}}var N34,B34,$78;var xa0=L(()=>{nW();Cp();HQ();c6();$Y0();eZ8();N34=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],B34=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),$78=new Set(["metadata","configuration_scopes","bindings"])});import{createHash as O34,randomBytes as L34,timingSafeEqual as zP5}from"crypto";function D34($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ba0($){return O34("sha256").update($).digest("hex")}function G78($){let Z=fa0.length+1,X=Z+Y78;if(!$.startsWith(`${fa0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!Q78.test(Q)||!Q78.test(Y))return null;return Q}function J78(){let $=D34(L34(w34)),Z=$.slice(0,Y78),X=`${fa0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:ba0(X)}}var fa0="stv",w34=32,Y78=12,Q78;var K78=L(()=>{Q78=/^[A-Za-z0-9_-]+$/});function W78($){return{id:$.id,organizationId:$.organization_id,subjectConnectionId:$.subject_connection_id,tokenHash:$.token_hash,tokenPrefix:$.token_prefix,name:$.name,revokedAt:$.revoked_at,lastUsedAt:$.last_used_at,createdAt:$.created_at,updatedAt:$.updated_at}}class ya0{db;constructor($){this.db=$}async createOrRotateWorkloadToken($){let Z=$.name??"default";return await this.db.transaction().execute(async(Q)=>{if(!await Q.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Subject connection not found in organization");let G=J78(),J=new Date().toISOString();await Q.updateTable("connection_workload_tokens").set({revoked_at:J,updated_at:J}).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",Z).where("revoked_at","is",null).execute();let K=await Q.insertInto("connection_workload_tokens").values({id:G4("cwt"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,token_hash:G.hash,token_prefix:G.prefix,name:Z,revoked_at:null,last_used_at:null,created_at:J,updated_at:J}).returningAll().executeTakeFirstOrThrow();return{plaintextToken:G.plaintext,record:W78(K)}})}async findActiveWorkloadToken($){let Z=await this.db.selectFrom("connection_workload_tokens").selectAll().where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",$.name??"default").where("revoked_at","is",null).executeTakeFirst();return Z?W78(Z):null}async revokeWorkloadToken($){let Z=new Date().toISOString();await this.db.updateTable("connection_workload_tokens").set({revoked_at:Z,updated_at:Z}).where("id","=",$.tokenId).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("revoked_at","is",null).execute()}async authenticateWorkloadToken($){let Z=G78($);if(!Z)return null;let X=ba0($),Q=await this.db.selectFrom("connection_workload_tokens").select(["id","organization_id","subject_connection_id","token_prefix"]).where("token_prefix","=",Z).where("token_hash","=",X).where("revoked_at","is",null).executeTakeFirst();if(!Q)return null;let Y=new Date().toISOString();return await this.db.updateTable("connection_workload_tokens").set({last_used_at:Y,updated_at:Y}).where("id","=",Q.id).execute(),{tokenId:Q.id,tokenPrefix:Q.token_prefix,organizationId:Q.organization_id,subjectConnectionId:Q.subject_connection_id}}async replaceGrantsForSubject($){await this.db.transaction().execute(async(Z)=>{if(!await Z.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Referenced connection not found in organization");let Q=[...new Set($.grants.map((J)=>J.targetConnectionId))];if(Q.length>0){if((await Z.selectFrom("connections").select("id").where("organization_id","=",$.organizationId).where("id","in",Q).execute()).length!==Q.length)throw Error("Referenced connection not found in organization")}if(await Z.deleteFrom("connection_credential_grants").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).execute(),$.grants.length===0)return;let Y=new Date().toISOString(),G=$.grants.map((J)=>({id:G4("ccg"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,target_connection_id:J.targetConnectionId,scope:J.scope,created_by:$.createdBy,created_at:Y,updated_at:Y}));await Z.insertInto("connection_credential_grants").values(G).execute()})}async hasGrant($){return!!await this.db.selectFrom("connection_credential_grants").select("id").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("target_connection_id","=",$.targetConnectionId).where("scope","=",$.scope).executeTakeFirst()}}var QY0="credential:access-token:read",YY0="credential:configuration:read";var GY0=L(()=>{HQ();K78()});class Fg{db;constructor($){this.db=$}async create($,Z,X,Q){let Y=Q?.id??G4("vir"),G=new Date().toISOString();await this.db.transaction().execute(async(K)=>{if(await K.insertInto("connections").values({id:Y,organization_id:$,created_by:Z,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:X.pinned??!1,connection_url:`virtual://${Y}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:G4("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute()});let J=await this.findById(Y);if(!J)throw Error(`Failed to create virtual MCP with id: ${Y}`);return J}async findById($,Z){let X=A3($);if(X)return{...ka0(Z??X),pinned:!1,connections:[]};let Q=rQ0($);if(Q)return{..._Z8(Z??Q),pinned:!1,connections:[]};return this.findByIdInternal(this.db,$)}async findByIdInternal($,Z){let X=await $.selectFrom("connections").selectAll().where("id","=",Z).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let Q=await $.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Z).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,Q)}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$).where("connection_type","=","VIRTUAL");if(Z?.pinnedOnly)X=X.where("pinned","=",!0);let Q=await X.execute(),Y=Q.map((K)=>K.id);if(Y.length===0)return[];let G=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Y).where("dependency_mode","=","direct").execute(),J=new Map;for(let K of G){let W=J.get(K.parent_connection_id)??[];W.push(K),J.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,J.get(K.id)??[]))}async listByIds($,Z){if(Z.length===0)return[];let X=await this.db.selectFrom("connections").selectAll().where("id","in",Z).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(X.length===0)return[];let Q=X.map((J)=>J.id),Y=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).where("dependency_mode","=","direct").execute(),G=new Map;for(let J of Y){let K=G.get(J.parent_connection_id)??[];K.push(J),G.set(J.parent_connection_id,K)}return X.map((J)=>this.deserializeVirtualMCPEntity(J,G.get(J.id)??[]))}async listByConnectionId($,Z){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Z).execute()).map((W)=>W.parent_connection_id);if(Q.length===0)return[];let Y=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(Y.length===0)return[];let G=Y.map((W)=>W.id),J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",G).where("dependency_mode","=","direct").execute(),K=new Map;for(let W of J){let H=K.get(W.parent_connection_id)??[];H.push(W),K.set(W.parent_connection_id,H)}return Y.map((W)=>this.deserializeVirtualMCPEntity(W,K.get(W.id)??[]))}async update($,Z,X){let Q=new Date().toISOString(),Y={updated_at:Q,updated_by:Z};if(X.title!==void 0)Y.title=X.title;if(X.description!==void 0)Y.description=X.description;if(X.icon!==void 0)Y.icon=X.icon;if(X.status!==void 0)Y.status=X.status;if(X.pinned!==void 0)Y.pinned=X.pinned;if(X.metadata!==void 0)Y.metadata=X.metadata?JSON.stringify(X.metadata):null;let G=[];await this.db.transaction().execute(async(K)=>{if(await K.updateTable("connections").set(Y).where("id","=",$).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){let W=await K.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),H=new Set(W.map((U)=>U.child_connection_id));if(await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((U)=>({id:G4("agg"),parent_connection_id:$,child_connection_id:U.connection_id,selected_tools:U.selected_tools?JSON.stringify(U.selected_tools):null,selected_resources:U.selected_resources?JSON.stringify(U.selected_resources):null,selected_prompts:U.selected_prompts?JSON.stringify(U.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let F=new Set(X.connections.map((U)=>U.connection_id));for(let U of H)if(!F.has(U))G.push(U)}});for(let K of G)await this.cleanOrphanedPinnedViews([$],K);let J=await this.findById($);if(!J)throw Error("Virtual MCP not found after update");return J}async delete($){await this.db.transaction().execute(async(Z)=>{await Z.deleteFrom("threads").where("virtual_mcp_id","=",$).execute(),await Z.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).execute(),await Z.deleteFrom("connections").where("id","=",$).where("connection_type","=","VIRTUAL").execute()})}async removeConnectionReferences($){let Z=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",$).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",$).execute(),await this.cleanOrphanedPinnedViews(Z.map((X)=>X.parent_connection_id),$)}async cleanOrphanedPinnedViews($,Z){for(let X of $){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",X).executeTakeFirst();if(!Q?.metadata)continue;let Y;try{Y=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let G=Y?.ui?.pinnedViews;if(!Array.isArray(G))continue;let J=G.filter((H)=>H.connectionId!==Z);if(J.length===G.length)continue;let K=Y.ui??{},W={...Y,ui:{...K,pinnedViews:J.length>0?J:null}};await this.db.updateTable("connections").set({metadata:JSON.stringify(W)}).where("id","=",X).execute()}}deserializeVirtualMCPEntity($,Z){let X=$.created_at instanceof Date?$.created_at.toISOString():$.created_at,Q=$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at,Y=$.status==="active"?"active":"inactive",G=this.parseJson($.metadata),{sandboxMap:J,...K}=G??{},W=J!==void 0?Zo0(J):void 0;return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,icon:$.icon,status:Y,pinned:$.pinned,created_at:X,updated_at:Q,created_by:$.created_by,updated_by:$.updated_by??void 0,metadata:{...K,instructions:G?.instructions??null,...W!==void 0?{sandboxMap:W}:{}},connections:Z.map((H)=>({connection_id:H.child_connection_id,selected_tools:this.parseJson(H.selected_tools),selected_resources:this.parseJson(H.selected_resources),selected_prompts:this.parseJson(H.selected_prompts)}))}}parseJson($){if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $}}function H78($){let Z=new Map,X=(Q,Y)=>{let G=Z.get(Q);if(G)return G;let J=Y();return Z.set(Q,J),J};return new Proxy($,{get(Q,Y,G){if(Y==="list")return(J,K)=>X(`list:${J}:${K?.pinnedOnly?1:0}`,()=>Q.list(J,K));if(Y==="create"||Y==="update"||Y==="delete"||Y==="removeConnectionReferences")return(...J)=>{return Z.clear(),Q[Y](...J)};return Reflect.get(Q,Y,G)}})}var ga0=L(()=>{HQ();c6()});function Hj($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function I8($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function r6($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function j34($){if(!E34.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ha0($){if(!z34.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function da0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${I8(X)}'`).join(", ")}function T34($){let Z=P34.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=A34[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function SO($,Z,X="timestamp"){let{amount:Q,unit:Y}=T34($),J={m:"MINUTE",h:"HOUR",d:"DAY"}[Y];if(Z==="duckdb")return`time_bucket(INTERVAL '${Q} ${J}', CAST(${X} AS TIMESTAMP))`;return`toStartOfInterval(${X}, INTERVAL ${Q} ${J})`}function vp($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=da0(Z);return`JSONExtractString(${$}, ${Q})`}function R34($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=da0(Z);return`JSONExtractFloat(${$}, ${Q})`}function F78($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=da0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function ua0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function ca0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:ua0($.input),output:ua0($.output),isError:$.is_error===1||$.is_error===!0||$.is_error==="1"||typeof $.is_error==="bigint"&&$.is_error===1n,errorMessage:$.error_message!=null?String($.error_message):null,durationMs:Number($.duration_ms??0),timestamp:(()=>{if($.timestamp instanceof Date)return $.timestamp.toISOString();let Z=String($.timestamp??""),X=new Date(Z.includes("T")?Z:Z.replace(" ","T")+"Z");return Number.isNaN(X.getTime())?Z:X.toISOString()})(),userId:$.user_id!=null?String($.user_id):null,requestId:String($.request_id??""),userAgent:$.user_agent!=null?String($.user_agent):null,virtualMcpId:$.virtual_mcp_id!=null?String($.virtual_mcp_id):null,properties:$.properties?ua0($.properties):null}}function O78($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') = '${J}'`);else X.push(`JSONExtractString(properties, '${G}') = '${J}'`)}if($.propertyKeys)for(let Q of $.propertyKeys){let Y=I8(Q);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${Y}') IS NOT NULL AND json_extract_string(properties, '$.${Y}') != ''`);else X.push(`JSONExtractString(properties, '${Y}') IS NOT NULL AND JSONExtractString(properties, '${Y}') != ''`)}if($.propertyPatterns)for(let[Q,Y]of Object.entries($.propertyPatterns)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') ILIKE '${J}'`);else X.push(`JSONExtractString(properties, '${G}') ILIKE '${J}'`)}if($.propertyInValues)for(let[Q,Y]of Object.entries($.propertyInValues)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`list_contains(string_split(json_extract_string(properties, '$.${G}'), ','), '${J}')`);else X.push(`has(splitByChar(',', JSONExtractString(properties, '${G}')), '${J}')`)}return X}function N78($,Z){let X=[];if(R3(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(T3(Z.endDate,$));if(Z.propertyFilters)X.push(...O78(Z.propertyFilters,$));return X}function B78($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) >= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} >= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} >= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function T3($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) <= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} <= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} <= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function R3($,Z,X,Q="timestamp"){if(Z)$.push(B78(Z,X,Q));else if(X==="clickhouse")$.push(B78(new Date(Date.now()-I34),X,Q))}class ma0{engine;sourceFactory;metricEngine;metricSourceFactory;dialect;metricsFromLogs;constructor($,Z,X,Q,Y="clickhouse",G=!1){this.engine=$;this.sourceFactory=Z;this.metricEngine=X;this.metricSourceFactory=Q;this.dialect=Y;this.metricsFromLogs=G}async query($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${I8($.connectionId)}'`);if($.excludeConnectionIds?.length){let N=$.excludeConnectionIds.map((B)=>`'${I8(B)}'`).join(",");X.push(`connection_id NOT IN (${N})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${I8($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${I8($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));if($.propertyFilters)X.push(...O78($.propertyFilters,this.dialect));let Q=1000,Y=Math.min(Math.max(1,Math.floor($.limit??50)),Q),G=Math.max(0,Math.floor($.offset??0)),J=X.join(" AND ");if(this.dialect==="duckdb"){let N=`SELECT ${U78}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,B=await this.engine.query(N);if(B.length===0)return{logs:[],total:0};let O=Number(B[0]._total??0);return{logs:B.map(ca0),total:O}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${U78} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,F]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:F.map(ca0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${I8($)}' AND id = '${I8(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return ca0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`];if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));let Q=`SELECT count(*) AS total_calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1.0 ELSE 0.0 END) / NULLIF(count(*), 0), 0) AS error_rate, coalesce(avg(duration_ms), 0) AS avg_duration_ms FROM ${Z} WHERE ${X.join(" AND ")}`,G=(await this.engine.query(Q))[0]??{};return{totalCalls:Number(G.total_calls??0),errorRate:Number(G.error_rate??0),avgDurationMs:Number(G.avg_duration_ms??0)}}async queryToolCallHeatmap($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`,"type = 'tool_call'"];if($.filters?.virtualMcpIds?.length){let J=$.filters.virtualMcpIds.map((K)=>`'${I8(K)}'`).join(",");X.push(`virtual_mcp_id IN (${J})`)}if($.filters?.excludeConnectionIds?.length){let J=$.filters.excludeConnectionIds.map((K)=>`'${I8(K)}'`).join(",");X.push(`connection_id NOT IN (${J})`)}if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));let Q=Math.min(Math.max(1,Math.floor($.limit??500)),1000),Y=`SELECT virtual_mcp_id, tool_name, count(*) AS calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1 ELSE 0 END), 0) AS errors, coalesce(sum(length(output)), 0) AS output_size FROM ${Z} WHERE ${X.join(" AND ")} GROUP BY virtual_mcp_id, tool_name ORDER BY calls DESC LIMIT ${Q}`;return{cells:(await this.engine.query(Y)).map((J)=>({virtualMcpId:J.virtual_mcp_id?String(J.virtual_mcp_id):null,toolName:String(J.tool_name??""),calls:Number(J.calls??0),errors:Number(J.errors??0),outputSize:Number(J.output_size??0)}))}}async queryLlmUsageStats($){let Z={totalCalls:0,totalErrors:0,avgDurationMs:0,p50DurationMs:0,p95DurationMs:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,topTools:[],timeseries:[]};if(!$.organizationId||!$.connectionId)return Z;let X=this.dialect,Q=X==="clickhouse",Y=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),G=SO($.interval,X,"timestamp"),J=(E)=>`coalesce(${F78("properties",`$.${E}`,X)}, 0)`,K=Q?"count()":"count(*)",W=Q?"countIf(is_error = 1)":"count(*) FILTER (WHERE is_error = 1)",H=(E)=>Q?`quantile(${E})(duration_ms)`:`quantile_cont(duration_ms, ${E})`,F=[`organization_id = '${I8($.organizationId)}'`,`connection_id = '${I8($.connectionId)}'`];if(R3(F,$.startDate,X),$.endDate)F.push(T3($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((j)=>`'${I8(j)}'`).join(",");F.push(`user_id IN (${E})`)}let U=F.join(" AND "),N=Math.min(Math.max(1,Math.floor($.topN??5)),20),B=`${K} AS calls,
|
|
1453
|
+
`.trim();vZ8=P3("site-diagnostics_"),pz5=vZ8.is,tz5=vZ8.get,xZ8=P3("commerce-discovery_"),oz5=xZ8.is,aQ0=xZ8.get;VO={AGENT_MANAGER:P3("studio-agent-manager_"),AUTOMATION_MANAGER:P3("studio-automation-manager_"),CONNECTION_MANAGER:P3("studio-connection-manager_"),API_KEY_MANAGER:P3("studio-api-key-manager_"),STORE_MANAGER:P3("studio-store-manager_"),BRAND_MANAGER:P3("studio-brand-manager_"),USAGE_MANAGER:P3("studio-usage-manager_")},QY={AGENT_MANAGER:VO.AGENT_MANAGER.get,AUTOMATION_MANAGER:VO.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:VO.CONNECTION_MANAGER.get,API_KEY_MANAGER:VO.API_KEY_MANAGER.get,STORE_MANAGER:VO.STORE_MANAGER.get,BRAND_MANAGER:VO.BRAND_MANAGER.get,USAGE_MANAGER:VO.USAGE_MANAGER.get}});function uZ8($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function K34($){return uZ8($).includes("deepresearch")}function cZ8($){let Z=uZ8($);if(Z.includes("deepresearch"))return!1;return W34.some((X)=>Z.includes(X))}function H34($){return $.asyncResearch!==!0&&cZ8($.modelId)}function F34($){return $.asyncResearch===!0||K34($.modelId)||cZ8($.modelId)}function Kg($,Z,X,Q){for(let Y of X){let G=$.find((J)=>J.modelId===Y);if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}for(let Y of X){let G=$.find((J)=>J.modelId.includes(Y));if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}if(Q){let Y=$.find(Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}return null}function lZ8($,Z){let X={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Q of $){let Y=Z[Q.id]??[],G=Q.providerId;if(!X.chat.fast)X.chat.fast=Kg(Y,Q.id,Z34[G]??[]);if(!X.chat.smart)X.chat.smart=Kg(Y,Q.id,X34[G]??[]);if(!X.chat.thinking)X.chat.thinking=Kg(Y,Q.id,Q34[G]??[]);if(!X.image)X.image=Kg(Y,Q.id,Y34[G]??[],(J)=>J.capabilities?.includes("image")===!0);if(!X.webSearch)X.webSearch=Kg(Y,Q.id,G34[G]??[],H34);if(!X.deepResearch)X.deepResearch=Kg(Y,Q.id,J34[G]??[],F34)}return X}var Z34,X34,Q34,Y34,G34,J34,W34;var dZ8=L(()=>{Z34={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},X34={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},Q34={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},Y34={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},G34={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},J34={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};W34=["sonar","searchpreview","online"]});function sQ0($){if(!$)return;let Z={};for(let X in $){let Q=$[X];if(typeof Q==="object"&&Q!==null){let Y={};for(let G of U34)if(G in Q)Y[G]=Q[G];Z[X]=Y}}return Object.keys(Z).length>0?Z:void 0}var U34;var mZ8=L(()=>{U34=["usage","cost","model"]});var c6=L(()=>{SX0();hZ8();dZ8();mZ8()});function eQ0($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function kO($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Q=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return eQ0(Q)}catch{return eQ0($.connection_url)}if($.title)return eQ0($.title);return $.id??"unknown"}var $Y0=()=>{};var Wg=300000,ZY0=5000,Sa0=3,Ca0=30000,iZ8=65000,XY0=1000,Hg=3,nZ8=5,pZ8=60000,tZ8=300000,_a0=60000;function oZ8(){if(TU.size<XY0)return;let $=null,Z=1/0;for(let[X,Q]of TU)if(Q.lastFailureAt<Z)Z=Q.lastFailureAt,$=X;if($)TU.delete($)}function rZ8($){let Z=TU.get($);if(!Z)return oZ8(),TU.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=Hg};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=Hg}}function va0($){let Z=TU.get($);if(Z){Z.disabled=!0;return}oZ8(),TU.set($,{consecutiveFailures:Hg,disabled:!0,lastFailureAt:Date.now()})}function aZ8($){return TU.get($)?.disabled??!1}function sZ8($){TU.delete($)}var TU;var eZ8=L(()=>{TU=new Map});import{sql as s8}from"kysely";function Z78($){if($.length===0)return null;let Z=$[0];if($.length===1&&B34.has(Z))return s8.ref(Z);if($.length===2&&$78.has(Z)){let X=$[1];return s8`${s8.ref(Z)}->>${s8.lit(X)}`}if($.length>2&&$78.has(Z)){let X=`{${$.slice(1).join(",")}}`;return s8`${s8.ref(Z)}#>>${s8.lit(X)}`}return null}function X78($){if("conditions"in $){let{operator:G,conditions:J}=$;if(J.length===0)return s8`true`;let K=J.map((W)=>X78(W));switch(G){case"and":return s8`(${s8.join(K,s8` AND `)})`;case"or":return s8`(${s8.join(K,s8` OR `)})`;case"not":return s8`NOT (${s8.join(K,s8` AND `)})`;default:return s8`true`}}let{field:Z,operator:X,value:Q}=$,Y=Z78(Z);if(!Y)return s8`true`;switch(X){case"eq":return Q===null?s8`${Y} IS NULL`:s8`${Y} = ${s8.val(Q)}`;case"gt":return s8`${Y} > ${s8.val(Q)}`;case"gte":return s8`${Y} >= ${s8.val(Q)}`;case"lt":return s8`${Y} < ${s8.val(Q)}`;case"lte":return s8`${Y} <= ${s8.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return s8`false`;return s8`${Y} IN (${s8.join(Q.map((G)=>s8.val(G)))})`;case"like":return s8`${Y} ILIKE ${s8.val(Q)}`;case"contains":{let G=String(Q).replace(/[%_\\]/g,"\\$&");return s8`${Y} ILIKE ${s8.val(`%${G}%`)}`}default:return s8`true`}}class _p{db;vault;constructor($,Z){this.db=$;this.vault=Z}async create($){let Z=$.id??G4("conn"),X=new Date().toISOString(),Q=await this.db.selectFrom("connections").select("organization_id").where("id","=",Z).executeTakeFirst();if(Q){if(Q.organization_id!==$.organization_id)throw Error("Connection ID already exists");return this.update(Z,$)}let Y=kO($),G=await this.serializeConnection({...$,id:$.id??Z,slug:Y,status:"active",created_at:X,updated_at:X}),J;try{J=await this.db.insertInto("connections").values(G).returningAll().executeTakeFirst()}catch(K){if(K instanceof Error&&(K.message.includes("duplicate key")||K.message.includes("unique constraint")))throw Error("Connection ID already exists");throw K}if(!J)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(J)}async createNew($){let Z=$.id??G4("conn"),X=new Date().toISOString(),Q=kO($),Y=await this.serializeConnection({...$,id:Z,slug:Q,status:"active",created_at:X,updated_at:X}),G;try{G=await this.db.insertInto("connections").values(Y).returningAll().executeTakeFirst()}catch(J){if(J instanceof Error&&(J.message.includes("duplicate key")||J.message.includes("unique constraint")))throw Error("Connection ID already exists");throw J}if(!G)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(G)}async findById($,Z){let X=A3($);if(X)return gZ8(Z??X);let Q=this.db.selectFrom("connections").selectAll().where("id","=",$);if(Z)Q=Q.where("organization_id","=",Z);let Y=await Q.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$);if(!Z?.includeVirtual)X=X.where("connection_type","!=","VIRTUAL");if(Z?.slug)X=X.where("slug","=",Z.slug);if(Z?.where)X=X.where(X78(Z.where));let G=(await this.db.selectFrom(X.as("filtered")).select(s8`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(Z?.orderBy&&Z.orderBy.length>0)for(let W of Z.orderBy){let H=Z78(W.field);if(!H)continue;let F=W.direction==="desc"?s8`desc`:s8`asc`,U=W.nulls==="first"?s8`nulls first`:s8`nulls last`;X=X.orderBy(s8`${H} ${F} ${U}`)}if(Z?.limit)X=X.limit(Z.limit);if(Z?.offset)X=X.offset(Z.offset);let J=await X.execute();return{items:await Promise.all(J.map((W)=>this.deserializeConnection(W))),totalCount:G}}async update($,Z){if(Object.keys(Z).length===0){let J=await this.findById($);if(!J)throw Error("Connection not found");return J}let X={...Z},Q=await this.db.selectFrom("connections").select(["app_name","connection_url","title"]).where("id","=",$).executeTakeFirst();if(Q){let J=(K)=>Z[K]===void 0?Q[K]:Z[K];X.slug=kO({app_name:J("app_name"),connection_url:J("connection_url"),title:J("title"),id:$})}let Y=await this.serializeConnection({...X,updated_at:new Date().toISOString()}),G=await this.db.updateTable("connections").set(Y).where("id","=",$).returningAll().executeTakeFirst();if(!G)throw Error("Connection not found after update");return this.deserializeConnection(G)}async isReferencedByThread($){return await this.db.selectFrom("threads").select("id").where(s8`metadata -> 'githubRepo' ->> 'connectionId' = ${$}`).limit(1).executeTakeFirst()!==void 0}async delete($){await this.db.deleteFrom("connections").where("id","=",$).execute()}async testConnection($,Z){let X=await this.findById($);if(!X)throw Error("Connection not found");let Q=Date.now();if(X.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!X.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{if(await Gg(X.connection_url))return{healthy:!1,latencyMs:Date.now()-Q};let G=X.connection_headers,J=new AbortController,K=setTimeout(()=>J.abort(),1e4),W;try{W=await Jg()(X.connection_url,{method:"POST",signal:J.signal,headers:{"Content-Type":"application/json",...X.connection_token&&{Authorization:`Bearer ${X.connection_token}`},...G?.headers,...Z},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})})}finally{clearTimeout(K)}return{healthy:W.ok||W.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection($){let Z={};for(let[X,Q]of Object.entries($)){if(Q===void 0)continue;if(X==="tools")continue;if(X==="connection_token"&&Q)Z[X]=await this.vault.encrypt(Q);else if(X==="configuration_state"&&Q){let Y=JSON.stringify(Q);Z[X]=await this.vault.encrypt(Y)}else if(X==="connection_headers"&&Q){let Y=Q;if(mW(Y)&&Y.envVars){let G={};for(let[J,K]of Object.entries(Y.envVars))G[J]=await this.vault.encrypt(K);Z[X]=JSON.stringify({...Y,envVars:G})}else Z[X]=JSON.stringify(Y)}else if(N34.includes(X))Z[X]=Q?JSON.stringify(Q):null;else Z[X]=Q}return Z}async handleDecryptFailures($,Z){let X=`connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title})`;if(aZ8($.id))return;if($.status!=="active"){va0($.id);return}let{thresholdCrossed:Q}=rZ8($.id);if(!Q){for(let{label:Y,error:G}of Z)console.error(`Failed to decrypt ${Y} for ${X}:`,G);return}try{await this.db.updateTable("connections").set({status:"error"}).where("id","=",$.id).execute(),va0($.id),console.error(`Disabled ${X} after ${Hg} consecutive decryption failures.`,Z[0]?.error)}catch(Y){console.error(`Failed to disable ${X} after decryption failures:`,Y)}}async deserializeConnection($){let Z=[],X=null;if($.connection_token)try{X=await this.vault.decrypt($.connection_token)}catch(J){Z.push({label:"connection token",error:J})}let Q=null;if($.configuration_state)try{let J=await this.vault.decrypt($.configuration_state);Q=JSON.parse(J)}catch(J){Z.push({label:"configuration state",error:J})}if(Z.length>0)await this.handleDecryptFailures($,Z);else if($.connection_token||$.configuration_state)sZ8($.id);let Y=null;if($.connection_headers)try{let J=JSON.parse($.connection_headers);if(mW(J)&&J.envVars){let K={};for(let[W,H]of Object.entries(J.envVars))try{K[W]=await this.vault.decrypt(H)}catch{K[W]=H}Y={...J,envVars:K}}else Y=J}catch(J){console.error(`Failed to parse connection_headers for connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title}):`,J)}let G=(J)=>{if(J===null)return null;if(typeof J==="string")try{return JSON.parse(J)}catch{return null}return J};return{id:$.id,organization_id:$.organization_id,created_by:$.created_by,updated_by:$.updated_by??void 0,title:$.title,description:$.description,icon:$.icon,app_name:$.app_name,app_id:$.app_id,slug:$.slug,connection_type:$.connection_type,connection_url:$.connection_url,connection_token:X,connection_headers:Y,oauth_config:G($.oauth_config),configuration_state:Q,configuration_scopes:G($.configuration_scopes),metadata:G($.metadata),tools:null,bindings:G($.bindings),status:$.status,created_at:$.created_at,updated_at:$.updated_at}}}var N34,B34,$78;var xa0=L(()=>{nW();Cp();HQ();c6();$Y0();eZ8();N34=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],B34=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),$78=new Set(["metadata","configuration_scopes","bindings"])});import{createHash as O34,randomBytes as L34,timingSafeEqual as zP5}from"crypto";function D34($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ba0($){return O34("sha256").update($).digest("hex")}function G78($){let Z=fa0.length+1,X=Z+Y78;if(!$.startsWith(`${fa0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!Q78.test(Q)||!Q78.test(Y))return null;return Q}function J78(){let $=D34(L34(w34)),Z=$.slice(0,Y78),X=`${fa0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:ba0(X)}}var fa0="stv",w34=32,Y78=12,Q78;var K78=L(()=>{Q78=/^[A-Za-z0-9_-]+$/});function W78($){return{id:$.id,organizationId:$.organization_id,subjectConnectionId:$.subject_connection_id,tokenHash:$.token_hash,tokenPrefix:$.token_prefix,name:$.name,revokedAt:$.revoked_at,lastUsedAt:$.last_used_at,createdAt:$.created_at,updatedAt:$.updated_at}}class ya0{db;constructor($){this.db=$}async createOrRotateWorkloadToken($){let Z=$.name??"default";return await this.db.transaction().execute(async(Q)=>{if(!await Q.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Subject connection not found in organization");let G=J78(),J=new Date().toISOString();await Q.updateTable("connection_workload_tokens").set({revoked_at:J,updated_at:J}).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",Z).where("revoked_at","is",null).execute();let K=await Q.insertInto("connection_workload_tokens").values({id:G4("cwt"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,token_hash:G.hash,token_prefix:G.prefix,name:Z,revoked_at:null,last_used_at:null,created_at:J,updated_at:J}).returningAll().executeTakeFirstOrThrow();return{plaintextToken:G.plaintext,record:W78(K)}})}async findActiveWorkloadToken($){let Z=await this.db.selectFrom("connection_workload_tokens").selectAll().where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",$.name??"default").where("revoked_at","is",null).executeTakeFirst();return Z?W78(Z):null}async revokeWorkloadToken($){let Z=new Date().toISOString();await this.db.updateTable("connection_workload_tokens").set({revoked_at:Z,updated_at:Z}).where("id","=",$.tokenId).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("revoked_at","is",null).execute()}async authenticateWorkloadToken($){let Z=G78($);if(!Z)return null;let X=ba0($),Q=await this.db.selectFrom("connection_workload_tokens").select(["id","organization_id","subject_connection_id","token_prefix"]).where("token_prefix","=",Z).where("token_hash","=",X).where("revoked_at","is",null).executeTakeFirst();if(!Q)return null;let Y=new Date().toISOString();return await this.db.updateTable("connection_workload_tokens").set({last_used_at:Y,updated_at:Y}).where("id","=",Q.id).execute(),{tokenId:Q.id,tokenPrefix:Q.token_prefix,organizationId:Q.organization_id,subjectConnectionId:Q.subject_connection_id}}async replaceGrantsForSubject($){await this.db.transaction().execute(async(Z)=>{if(!await Z.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Referenced connection not found in organization");let Q=[...new Set($.grants.map((J)=>J.targetConnectionId))];if(Q.length>0){if((await Z.selectFrom("connections").select("id").where("organization_id","=",$.organizationId).where("id","in",Q).execute()).length!==Q.length)throw Error("Referenced connection not found in organization")}if(await Z.deleteFrom("connection_credential_grants").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).execute(),$.grants.length===0)return;let Y=new Date().toISOString(),G=$.grants.map((J)=>({id:G4("ccg"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,target_connection_id:J.targetConnectionId,scope:J.scope,created_by:$.createdBy,created_at:Y,updated_at:Y}));await Z.insertInto("connection_credential_grants").values(G).execute()})}async hasGrant($){return!!await this.db.selectFrom("connection_credential_grants").select("id").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("target_connection_id","=",$.targetConnectionId).where("scope","=",$.scope).executeTakeFirst()}}var QY0="credential:access-token:read",YY0="credential:configuration:read";var GY0=L(()=>{HQ();K78()});class Fg{db;constructor($){this.db=$}async create($,Z,X,Q){let Y=Q?.id??G4("vir"),G=new Date().toISOString();await this.db.transaction().execute(async(K)=>{if(await K.insertInto("connections").values({id:Y,organization_id:$,created_by:Z,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:X.pinned??!1,connection_url:`virtual://${Y}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:G4("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute()});let J=await this.findById(Y);if(!J)throw Error(`Failed to create virtual MCP with id: ${Y}`);return J}async findById($,Z){let X=A3($);if(X)return{...ka0(Z??X),pinned:!1,connections:[]};let Q=rQ0($);if(Q)return{..._Z8(Z??Q),pinned:!1,connections:[]};return this.findByIdInternal(this.db,$)}async findByIdInternal($,Z){let X=await $.selectFrom("connections").selectAll().where("id","=",Z).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let Q=await $.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Z).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,Q)}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$).where("connection_type","=","VIRTUAL");if(Z?.pinnedOnly)X=X.where("pinned","=",!0);let Q=await X.execute(),Y=Q.map((K)=>K.id);if(Y.length===0)return[];let G=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Y).where("dependency_mode","=","direct").execute(),J=new Map;for(let K of G){let W=J.get(K.parent_connection_id)??[];W.push(K),J.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,J.get(K.id)??[]))}async listByIds($,Z){if(Z.length===0)return[];let X=await this.db.selectFrom("connections").selectAll().where("id","in",Z).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(X.length===0)return[];let Q=X.map((J)=>J.id),Y=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).where("dependency_mode","=","direct").execute(),G=new Map;for(let J of Y){let K=G.get(J.parent_connection_id)??[];K.push(J),G.set(J.parent_connection_id,K)}return X.map((J)=>this.deserializeVirtualMCPEntity(J,G.get(J.id)??[]))}async listByConnectionId($,Z){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Z).execute()).map((W)=>W.parent_connection_id);if(Q.length===0)return[];let Y=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(Y.length===0)return[];let G=Y.map((W)=>W.id),J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",G).where("dependency_mode","=","direct").execute(),K=new Map;for(let W of J){let H=K.get(W.parent_connection_id)??[];H.push(W),K.set(W.parent_connection_id,H)}return Y.map((W)=>this.deserializeVirtualMCPEntity(W,K.get(W.id)??[]))}async update($,Z,X){let Q=new Date().toISOString(),Y={updated_at:Q,updated_by:Z};if(X.title!==void 0)Y.title=X.title;if(X.description!==void 0)Y.description=X.description;if(X.icon!==void 0)Y.icon=X.icon;if(X.status!==void 0)Y.status=X.status;if(X.pinned!==void 0)Y.pinned=X.pinned;if(X.metadata!==void 0)Y.metadata=X.metadata?JSON.stringify(X.metadata):null;let G=[];await this.db.transaction().execute(async(K)=>{if(await K.updateTable("connections").set(Y).where("id","=",$).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){let W=await K.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),H=new Set(W.map((U)=>U.child_connection_id));if(await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((U)=>({id:G4("agg"),parent_connection_id:$,child_connection_id:U.connection_id,selected_tools:U.selected_tools?JSON.stringify(U.selected_tools):null,selected_resources:U.selected_resources?JSON.stringify(U.selected_resources):null,selected_prompts:U.selected_prompts?JSON.stringify(U.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let F=new Set(X.connections.map((U)=>U.connection_id));for(let U of H)if(!F.has(U))G.push(U)}});for(let K of G)await this.cleanOrphanedPinnedViews([$],K);let J=await this.findById($);if(!J)throw Error("Virtual MCP not found after update");return J}async delete($){await this.db.transaction().execute(async(Z)=>{await Z.deleteFrom("threads").where("virtual_mcp_id","=",$).execute(),await Z.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).execute(),await Z.deleteFrom("connections").where("id","=",$).where("connection_type","=","VIRTUAL").execute()})}async removeConnectionReferences($){let Z=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",$).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",$).execute(),await this.cleanOrphanedPinnedViews(Z.map((X)=>X.parent_connection_id),$)}async cleanOrphanedPinnedViews($,Z){for(let X of $){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",X).executeTakeFirst();if(!Q?.metadata)continue;let Y;try{Y=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let G=Y?.ui?.pinnedViews;if(!Array.isArray(G))continue;let J=G.filter((H)=>H.connectionId!==Z);if(J.length===G.length)continue;let K=Y.ui??{},W={...Y,ui:{...K,pinnedViews:J.length>0?J:null}};await this.db.updateTable("connections").set({metadata:JSON.stringify(W)}).where("id","=",X).execute()}}deserializeVirtualMCPEntity($,Z){let X=$.created_at instanceof Date?$.created_at.toISOString():$.created_at,Q=$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at,Y=$.status==="active"?"active":"inactive",G=this.parseJson($.metadata),{sandboxMap:J,...K}=G??{},W=J!==void 0?Zo0(J):void 0;return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,icon:$.icon,status:Y,pinned:$.pinned,created_at:X,updated_at:Q,created_by:$.created_by,updated_by:$.updated_by??void 0,metadata:{...K,instructions:G?.instructions??null,...W!==void 0?{sandboxMap:W}:{}},connections:Z.map((H)=>({connection_id:H.child_connection_id,selected_tools:this.parseJson(H.selected_tools),selected_resources:this.parseJson(H.selected_resources),selected_prompts:this.parseJson(H.selected_prompts)}))}}parseJson($){if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $}}function H78($){let Z=new Map,X=(Q,Y)=>{let G=Z.get(Q);if(G)return G;let J=Y();return Z.set(Q,J),J};return new Proxy($,{get(Q,Y,G){if(Y==="list")return(J,K)=>X(`list:${J}:${K?.pinnedOnly?1:0}`,()=>Q.list(J,K));if(Y==="create"||Y==="update"||Y==="delete"||Y==="removeConnectionReferences")return(...J)=>{return Z.clear(),Q[Y](...J)};return Reflect.get(Q,Y,G)}})}var ga0=L(()=>{HQ();c6()});function Hj($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function I8($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function r6($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function j34($){if(!E34.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ha0($){if(!z34.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function da0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${I8(X)}'`).join(", ")}function T34($){let Z=P34.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=A34[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function SO($,Z,X="timestamp"){let{amount:Q,unit:Y}=T34($),J={m:"MINUTE",h:"HOUR",d:"DAY"}[Y];if(Z==="duckdb")return`time_bucket(INTERVAL '${Q} ${J}', CAST(${X} AS TIMESTAMP))`;return`toStartOfInterval(${X}, INTERVAL ${Q} ${J})`}function vp($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=da0(Z);return`JSONExtractString(${$}, ${Q})`}function R34($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=da0(Z);return`JSONExtractFloat(${$}, ${Q})`}function F78($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=da0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function ua0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function ca0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:ua0($.input),output:ua0($.output),isError:$.is_error===1||$.is_error===!0||$.is_error==="1"||typeof $.is_error==="bigint"&&$.is_error===1n,errorMessage:$.error_message!=null?String($.error_message):null,durationMs:Number($.duration_ms??0),timestamp:(()=>{if($.timestamp instanceof Date)return $.timestamp.toISOString();let Z=String($.timestamp??""),X=new Date(Z.includes("T")?Z:Z.replace(" ","T")+"Z");return Number.isNaN(X.getTime())?Z:X.toISOString()})(),userId:$.user_id!=null?String($.user_id):null,requestId:String($.request_id??""),userAgent:$.user_agent!=null?String($.user_agent):null,virtualMcpId:$.virtual_mcp_id!=null?String($.virtual_mcp_id):null,properties:$.properties?ua0($.properties):null}}function O78($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') = '${J}'`);else X.push(`JSONExtractString(properties, '${G}') = '${J}'`)}if($.propertyKeys)for(let Q of $.propertyKeys){let Y=I8(Q);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${Y}') IS NOT NULL AND json_extract_string(properties, '$.${Y}') != ''`);else X.push(`JSONExtractString(properties, '${Y}') IS NOT NULL AND JSONExtractString(properties, '${Y}') != ''`)}if($.propertyPatterns)for(let[Q,Y]of Object.entries($.propertyPatterns)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') ILIKE '${J}'`);else X.push(`JSONExtractString(properties, '${G}') ILIKE '${J}'`)}if($.propertyInValues)for(let[Q,Y]of Object.entries($.propertyInValues)){let G=I8(Q),J=I8(Y);if(Z==="duckdb")X.push(`list_contains(string_split(json_extract_string(properties, '$.${G}'), ','), '${J}')`);else X.push(`has(splitByChar(',', JSONExtractString(properties, '${G}')), '${J}')`)}return X}function N78($,Z){let X=[];if(R3(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${I8(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(T3(Z.endDate,$));if(Z.propertyFilters)X.push(...O78(Z.propertyFilters,$));return X}function B78($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) >= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} >= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} >= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function T3($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) <= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} <= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} <= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function R3($,Z,X,Q="timestamp"){if(Z)$.push(B78(Z,X,Q));else if(X==="clickhouse")$.push(B78(new Date(Date.now()-I34),X,Q))}class ma0{engine;sourceFactory;metricEngine;metricSourceFactory;dialect;metricsFromLogs;constructor($,Z,X,Q,Y="clickhouse",G=!1){this.engine=$;this.sourceFactory=Z;this.metricEngine=X;this.metricSourceFactory=Q;this.dialect=Y;this.metricsFromLogs=G}async query($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${I8($.connectionId)}'`);if($.excludeConnectionIds?.length){let N=$.excludeConnectionIds.map((B)=>`'${I8(B)}'`).join(",");X.push(`connection_id NOT IN (${N})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${I8($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${I8($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));if($.propertyFilters)X.push(...O78($.propertyFilters,this.dialect));let Q=1000,Y=Math.min(Math.max(1,Math.floor($.limit??50)),Q),G=Math.max(0,Math.floor($.offset??0)),J=X.join(" AND ");if(this.dialect==="duckdb"){let N=`SELECT ${U78}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,B=await this.engine.query(N);if(B.length===0)return{logs:[],total:0};let O=Number(B[0]._total??0);return{logs:B.map(ca0),total:O}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${U78} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,F]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:F.map(ca0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${I8($)}' AND id = '${I8(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return ca0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`];if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));let Q=`SELECT count(*) AS total_calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1.0 ELSE 0.0 END) / NULLIF(count(*), 0), 0) AS error_rate, coalesce(avg(duration_ms), 0) AS avg_duration_ms FROM ${Z} WHERE ${X.join(" AND ")}`,G=(await this.engine.query(Q))[0]??{};return{totalCalls:Number(G.total_calls??0),errorRate:Number(G.error_rate??0),avgDurationMs:Number(G.avg_duration_ms??0)}}async queryToolCallHeatmap($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${I8($.organizationId)}'`,"type = 'tool_call'"];if($.filters?.virtualMcpIds?.length){let J=$.filters.virtualMcpIds.map((K)=>`'${I8(K)}'`).join(",");X.push(`virtual_mcp_id IN (${J})`)}if($.filters?.excludeConnectionIds?.length){let J=$.filters.excludeConnectionIds.map((K)=>`'${I8(K)}'`).join(",");X.push(`connection_id NOT IN (${J})`)}if(R3(X,$.startDate,this.dialect),$.endDate)X.push(T3($.endDate,this.dialect));let Q=Math.min(Math.max(1,Math.floor($.limit??500)),1000),Y=`SELECT virtual_mcp_id, tool_name, count(*) AS calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1 ELSE 0 END), 0) AS errors, coalesce(sum(length(output)), 0) AS output_size FROM ${Z} WHERE ${X.join(" AND ")} GROUP BY virtual_mcp_id, tool_name ORDER BY calls DESC LIMIT ${Q}`;return{cells:(await this.engine.query(Y)).map((J)=>({virtualMcpId:J.virtual_mcp_id?String(J.virtual_mcp_id):null,toolName:String(J.tool_name??""),calls:Number(J.calls??0),errors:Number(J.errors??0),outputSize:Number(J.output_size??0)}))}}async queryLlmUsageStats($){let Z={totalCalls:0,totalErrors:0,avgDurationMs:0,p50DurationMs:0,p95DurationMs:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,topTools:[],timeseries:[]};if(!$.organizationId||!$.connectionId)return Z;let X=this.dialect,Q=X==="clickhouse",Y=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),G=SO($.interval,X,"timestamp"),J=(E)=>`coalesce(${F78("properties",`$.${E}`,X)}, 0)`,K=Q?"count()":"count(*)",W=Q?"countIf(is_error = 1)":"count(*) FILTER (WHERE is_error = 1)",H=(E)=>Q?`quantile(${E})(duration_ms)`:`quantile_cont(duration_ms, ${E})`,F=[`organization_id = '${I8($.organizationId)}'`,`connection_id = '${I8($.connectionId)}'`];if(R3(F,$.startDate,X),$.endDate)F.push(T3($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((j)=>`'${I8(j)}'`).join(",");F.push(`user_id IN (${E})`)}let U=F.join(" AND "),N=Math.min(Math.max(1,Math.floor($.topN??5)),20),B=`${K} AS calls,
|
|
1454
1454
|
${W} AS errors,
|
|
1455
1455
|
avg(duration_ms) AS avg,
|
|
1456
1456
|
sum(${J("input_tokens")}) AS in_tok,
|
|
@@ -2232,7 +2232,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
2232
2232
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
2233
2233
|
</workflows>`,UU8={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:Dz4,getId:QY.USAGE_MANAGER}});function I11($){return rj.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function jz4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function P30({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=I11(Z);if(!Y)return $;let G=await jz4(Y,{orgId:X,ctx:Q}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function A30($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(X)=>({label:X.label,activeForm:X.activeForm,action:X.action,completed:await X.isCompleted(Z),alwaysSuggest:X.alwaysSuggest})))}async function BU8($,Z,X){let Q={self:u4.SELF($),registry:u4.REGISTRY($),"community-registry":u4.COMMUNITY_REGISTRY($)};await Promise.all(Ez4.map((Y)=>X.delete(`${Y}${$}`))),await Promise.all(rj.map(async(Y)=>{let G=Y.getId($),J=await X.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>Q[H]);if(J){await X.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=J.connections.find((U)=>U.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 X.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 Ez4,rj;var Mh=L(()=>{c6();aF8();eF8();ZU8();JU8();WU8();FU8();NU8();Ez4=["studio-task-manager_"],rj=[GU8,rF8,$U8,KU8,sF8,HU8,UU8]});import{DBOS as T30}from"@dbos-inc/dbos-sdk";async function zz4($){let Z=W6(),X=new Fg(Z.db);await BU8($.orgId,$.createdBy,X)}async function Pz4($){let Z=W6(),X=new Fg(Z.db);for(let Q of rj){let Y=Q.getId($.orgId),G=await X.findById(Y,$.orgId);if(!G)continue;let J=Q.selectedPrompts?[...Q.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,U)=>F===J[U])}))continue;await X.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 Az4($){await T30.runStep(()=>zz4($),{name:"installStudioPack"}),await T30.runStep(()=>Pz4($),{name:"backfillSelectedPrompts"})}async function q11($){await T30.startWorkflow(Tz4,{workflowID:`install-studio-pack:${Rz4}:${$.orgId}`})($)}async function OU8(){let Z=await W6().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),X=new Map;for(let Q of Z)if(!X.has(Q.organizationId))X.set(Q.organizationId,Q.userId);await z30(Array.from(X),10,async([Q,Y])=>{try{await q11({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}})}var Tz4,Rz4="v6";var R30=L(()=>{JX();ga0();Mh();Tz4=T30.registerWorkflow(Az4,{name:"installStudioPackWorkflow"})});class xo{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new xo,Z=new xo;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 L4}from"zod";var I30,LU8,wU8,DU8,EU8,jU8,zU8,PU8,AU8,TU8;var Vh=L(()=>{I30=L4.record(L4.string(),L4.array(L4.string())),LU8=L4.object({id:L4.string().describe("Unique identifier for the API key"),name:L4.string().describe("Human-readable name for the API key"),userId:L4.string().describe("ID of the user who owns this API key"),permissions:I30.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:L4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:L4.string().datetime().describe("When the API key was created (ISO 8601)")}),wU8=L4.object({name:L4.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:I30.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:L4.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:L4.record(L4.string(),L4.unknown()).optional().describe("Additional metadata to store with the API key")}),DU8=L4.object({id:L4.string().describe("Unique identifier for the API key"),name:L4.string().describe("Human-readable name for the API key"),key:L4.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:I30.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:L4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:L4.string().datetime().describe("When the API key was created (ISO 8601)")}),EU8=L4.object({}),jU8=L4.object({items:L4.array(LU8).describe("List of API keys (without key values)")}),zU8=L4.object({keyId:L4.string().describe("ID of the API key to update"),name:L4.string().min(1).max(64).optional().describe("New name for the API key"),permissions:I30.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:L4.record(L4.string(),L4.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),PU8=L4.object({item:LU8.describe("The updated API key (without key value)")}),AU8=L4.object({keyId:L4.string().describe("ID of the API key to delete")}),TU8=L4.object({success:L4.boolean().describe("Whether the deletion was successful"),keyId:L4.string().describe("ID of the deleted API key")})});var M11;var RU8=L(()=>{l4();m0();Vh();M11=m({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:wU8,outputSchema:DU8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),Q=X.expiresAt?X.expiresAt instanceof Date?X.expiresAt.toISOString():X.expiresAt:null,Y=X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,G=w1(Z);if(G)n1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var V11;var IU8=L(()=>{l4();m0();Vh();V11=m({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:AU8,outputSchema:TU8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=w1(Z);if(!X)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)n1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var k11;var qU8=L(()=>{m0();Vh();k11=m({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:EU8,outputSchema:jU8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.list(),Q=Z.organization?.id;return{items:(X??[]).filter((G)=>{return G.metadata?.organization?.id===Q}).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 S11;var MU8=L(()=>{m0();Vh();S11=m({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:zU8,outputSchema:PU8,handler:async($,Z)=>{if(G0(Z),await Z.access.check(),!w1(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 VU8=L(()=>{RU8();IU8();qU8();MU8();Vh()});function wL($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=qz4.test(Z),Q=Mz4.test(Z),Y=Vz4.test(Z);if(X&&!Q&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=Q?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||!kz4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var qz4,Mz4,Vz4,kz4;var fo=L(()=>{qz4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,Mz4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,Vz4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,kz4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as wQ}from"zod";function NH($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??o0()).reportsInternalApiUrl??Sz4).replace(/\/+$/,"")}function SU8($={}){return`${NH($)}/api/v2/mcp`}function aj($){let Z=$.apiKey??($.settings??o0()).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 q30($){return new URL($).hostname}function _z4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function vz4($,Z={}){switch($){case"ownership_unverified":{let X=Z.email?`O e-mail ${Z.email}`:"Este e-mail",Q=Z.domain?` ${Z.domain}`:" este site";return`${X} n\xE3o tem permiss\xE3o para reivindicar${Q}. 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 xz4($){let Z=await bo($);return _z4(Z?.error)?Z.error:"unknown"}async function bo($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function C11($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,X=await $.text().catch(()=>"");if(!X)return Z;try{let Q=JSON.parse(X),Y=typeof Q.error==="string"?Q.error:typeof Q.message==="string"?Q.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function _U8($,Z={}){let X=NH(Z),Q=aj(Z),Y=Z.fetchImpl??fetch,G=q30($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"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 xz4(K);throw new CU8(H,{email:$.email,domain:G})}let W=Cz4.safeParse(await bo(K));if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function vU8($,Z={}){let X=NH(Z),Q=aj(Z),Y=Z.fetchImpl??fetch,G=q30($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"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=kU8.safeParse(await bo(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 C11(K));let W=kU8.safeParse(await bo(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 xU8($,Z={}){let X=NH(Z),Q=aj(Z),Y=Z.fetchImpl??fetch,G=q30($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"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 C11(K));return{triggered:!0}}async function fU8($,Z={}){let X=NH(Z),Q=aj(Z),Y=Z.fetchImpl??fetch,G=q30($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${Q}`}});if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await C11(K));let W=fz4.safeParse(await bo(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var Sz4,Cz4,kU8,CU8,fz4;var sj=L(()=>{c6();_8();Sz4=new URL(AZ8).origin,Cz4=wQ.object({token:wQ.string().min(1)}),kU8=wQ.object({binding:wQ.object({resource_id:wQ.string(),evidence:wQ.string()}).optional(),reason:wQ.string().optional(),detail:wQ.string().optional()});CU8=class CU8 extends Error{code;constructor($,Z={}){super(vz4($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};fz4=wQ.object({providers:wQ.record(wQ.string(),wQ.object({connected:wQ.boolean(),via:wQ.enum(["oauth","sa"]).nullable(),resource:wQ.string().nullable()}))})});import{z as wG}from"zod";var bz4,yz4,_11;var bU8=L(()=>{fo();m0();sj();bz4=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/).")}),yz4=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()})]),_11=m({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:bz4,outputSchema:yz4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=wL($.siteUrl);if(!Q.ok)throw Error(Q.error);return vU8({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as BH}from"zod";var gz4,hz4,v11;var yU8=L(()=>{fo();m0();sj();gz4=BH.object({siteUrl:BH.string().min(1).describe("Website URL of the store to inspect.")}),hz4=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.")}),v11=m({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:gz4,outputSchema:hz4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=wL($.siteUrl);if(!Q.ok)throw Error(Q.error);return fU8({siteUrl:Q.value,orgId:X.id})}})});import{z as yo}from"zod";var uz4,cz4,x11;var gU8=L(()=>{c6();fo();m0();sj();uz4=yo.object({siteUrl:yo.string().min(1).describe("Website URL to run the diagnostic for.")}),cz4=yo.object({triggered:yo.boolean(),reason:yo.string().optional()}),x11=m({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:uz4,outputSchema:cz4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=wL($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=u4.COMMERCE_DISCOVERY(X.id),J=(await Z.storage.connections.findById(Y,X.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return xU8({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var DL=L(()=>{SX0()});import{z as OH}from"zod";async function iz4($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function nz4($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var f11,lz4=3600000,dz4,mz4,b11;var hU8=L(()=>{c6();fo();m0();nW();DL();sj();f11=oQ0,dz4=OH.object({siteUrl:OH.string().min(1).describe("Website URL to configure.")}),mz4=OH.object({connection:WX,virtualMcp:HX,reportApp:OH.object({connectionId:OH.string(),virtualMcpId:OH.string(),toolName:OH.literal(f11)}),created:OH.object({connection:OH.boolean(),virtualMcp:OH.boolean()})});b11=m({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:dz4,outputSchema:mz4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=w1(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=wL($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=u4.COMMERCE_DISCOVERY(X.id),J=aQ0(X.id),K=new URLSearchParams({virtualmcpid:J,main:`app:${G}:${f11}`}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/${crypto.randomUUID()}?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),F={connection:!1,virtualMcp:!1},U=await _U8({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),N=SU8();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:X.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:N,connection_token:U.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:X.id,siteUrl:Y.value,connectionId:G});try{let D=fZ8(X.id,U.authorizationToken,N);H=await Z.storage.connections.create({...D,metadata:{...D.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),F.connection=!0}catch(D){H=await iz4(Z,G,X.id,D)}}let B=await Z.storage.virtualMcps.findById(J,X.id);if(!B){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{B=await Z.storage.virtualMcps.create(X.id,Q,bZ8(X.id,H.id),{id:J}),F.virtualMcp=!0}catch(D){B=await nz4(Z,J,X.id,D)}}if(!B.pinned)B=await Z.storage.virtualMcps.update(B.id,Q,{pinned:!0});let O=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((O?Date.now()-new Date(O.createdAt).getTime():Number.POSITIVE_INFINITY)<lz4){let E=(await Z.storage.organizationSettings.get(X.id))?.flags,j={};if(E?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(X.id,{flags:j})}return{connection:H,virtualMcp:B,reportApp:{connectionId:H.id,virtualMcpId:B.id,toolName:f11},created:F}}})});var uU8=L(()=>{bU8();yU8();gU8();hU8()});var y11=v((cU8)=>{Object.defineProperty(cU8,"__esModule",{value:!0});cU8.kvPrefix=cU8.KvWatchInclude=void 0;cU8.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};cU8.kvPrefix="KV_"});var eU8=v((aU8)=>{Object.defineProperty(aU8,"__esModule",{value:!0});aU8.KvStatusImpl=aU8.Bucket=aU8.Kvm=aU8.kvOperationHdr=void 0;aU8.Base64KeyCodec=oz4;aU8.NoopKvCodecs=g11;aU8.defaultBucketOpts=mU8;aU8.validateKey=iU8;aU8.validateSearchKey=nU8;aU8.hasWildcards=pU8;aU8.validateBucket=M30;var a5=JG(),L5=s70(),r5=y11();function oz4(){let $=(Z,X)=>{let Q=[];for(let Y of Z.split("."))switch(Y){case">":case"*":Q.push(Y);break;default:Q.push(X(Y));break}return Q.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function g11(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function mU8(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:g11(),storage:L5.StorageType.File}}aU8.kvOperationHdr="KV-Operation";var dU8="$KV",rz4=/^[-/=.\w]+$/,az4=/^[-/=.>*\w]+$/,sz4=/^[-\w]+$/;function iU8($){if($.startsWith(".")||$.endsWith(".")||!rz4.test($))throw Error(`invalid key: ${$}`)}function nU8($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!az4.test($))throw Error(`invalid key: ${$}`)}function pU8($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),X=!1;for(let Q=0;Q<Z.length;Q++)switch(Z[Q]){case"*":X=!0;break;case">":if(Q!==Z.length-1)throw Error(`invalid key: ${$}`);X=!0;break;default:}return X}function M30($){if(!sz4.test($))throw Error(`invalid bucket name: ${$}`)}class tU8{js;constructor($){this.js=(0,L5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:X,min:Q}=this.js.nc.features.get(a5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return kh.bind(this.js,$,Z);return kh.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(r5.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 V30(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new L5.ListerImpl(Z,$,this.js)}}aU8.Kvm=tU8;class kh{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){M30($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=dU8,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){M30(Z);let Q=await $.jetstreamManager(),Y=new kh(Z,$,Q);return await Y.init(X),Y}static async bind($,Z,X={}){let Q=$.getOptions()?.checkAPI||X.bindOnly===!1,Y=await $.jetstreamManager(Q),G={config:{allow_direct:X.allow_direct}};M30(Z);let J=new kh(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||g11(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(mU8(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=L5.RetentionPolicy.Limits,X.max_msgs_per_subject=Z.history,Z.max_bytes)X.max_bytes=Z.max_bytes;if(X.max_msg_size=Z.maxValueSize,X.storage=Z.storage,$.placement)X.placement=$.placement;if($.republish)X.republish=$.republish;if($.description)X.description=$.description;if($.markerTTL)X.allow_msg_ttl=!0,X.subject_delete_marker_ttl=(0,a5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(r5.kvPrefix))H.name=`${r5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let U=Object.assign({},F),N=U.name.startsWith(r5.kvPrefix)?U.name.substring(r5.kvPrefix.length):U.name;if(!U.name.startsWith(r5.kvPrefix))U.name=`${r5.kvPrefix}${U.name}`;if(!F.external&&N!==this.bucket)U.subject_transforms=[{src:`$KV.${N}.>`,dest:`$KV.${this.bucket}.>`}];return U});X.sources=H,X.subjects=[this.subjectForBucket()]}else X.subjects=[this.subjectForBucket()];if($.metadata)X.metadata=$.metadata;if(typeof $.compression==="boolean")X.compression=$.compression?L5.StoreCompression.S2:L5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,a5.compare)(Y,(0,a5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?L5.DiscardPolicy.New:L5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(a5.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,X.allow_direct=$.allow_direct,this.direct=X.allow_direct,X.num_replicas=Z.replicas,Z.ttl)X.max_age=(0,a5.nanos)(Z.ttl);X.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(X.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(X);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 X=Z.name;if(X.startsWith(r5.kvPrefix))X=X.substring(r5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(r5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${Q}`,this.editPrefix=`${Z.external.api}.$KV.${X}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${r5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let X=[];if(Z){if(this.useJsPrefix)X.push(this.js.apiPrefix);if(this.editPrefix!=="")X.push(this.editPrefix);else X.push(this.prefix)}else if(this.prefix)X.push(this.prefix);return X.push($),X.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${dU8}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.encode(X));break}return Z.join(".")}decodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.decode(X));break}return Z.join(".")}validateKey=iU8;validateSearchKey=nU8;hasWildcards=pU8;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(L5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new oU8(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new rU8(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,X){let Q;try{let G={previousSeq:0},J=await this._put($,Z,G,X);return Promise.resolve(J)}catch(G){if(Q=G,G instanceof L5.JetStreamApiError){let J=G;if(J.code!==L5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==L5.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},X);else return Promise.reject(Q)}catch(G){return Promise.reject(G)}}update($,Z,X,Q){if(X<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:X,timeout:Q})}async _put($,Z,X={},Q){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:X?.timeout};if(X.previousSeq!==void 0){let J=(0,a5.headers)();G.headers=J,J.set(L5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,a5.headers)()).set(L5.PubHeaders.MessageTTL,Q);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,X={}){return this._put($,Z,X)}async get($,Z){let X=this.encodeKey($);this.validateKey(X);let Q={last_by_subj:this.subjectForKey(X)};if(Z&&Z.revision>0)Q={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),Q);else Y=await this.jsm.streams.getMessage(this.bucketName(),Q);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==X)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=[],X=await this.history({key:">"});await(async()=>{for await(let J of X)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),X.stop();let Q=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=Q)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,X){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,X);let Q=await this.keys($),Y=[];for await(let G of Q)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,X){let Q=this.encodeKey($);this.validateKey(Q);let Y=(0,a5.headers)();if(Y.set(aU8.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(L5.JsHeaders.RollupHdr,L5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(L5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(L5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),a5.Empty,{headers:Y})}_buildCC($,Z,X={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=L5.DeliverPolicy.LastPerSubject;if(Z===r5.KvWatchInclude.AllHistory)G=L5.DeliverPolicy.All;if(Z===r5.KvWatchInclude.UpdatesOnly)G=L5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:L5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,a5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new a5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,r5.KvWatchInclude.AllHistory,X),J=await this.js.consumers.getPushConsumer(this.stream,G);if(Q._data=J,(await J.info(!0)).num_pending===0)return Q.push(Y),Q;let W=await J.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(Q.push(F),Q.received++,H.info.pending===0)Q.push(Y)}});return W.closed().then(()=>{Q.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":Q.push(()=>{Q.stop()});break}})().then(),Q.iterClosed.then(()=>{W.stop()}),Q}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(a5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new a5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=r5.KvWatchInclude.LastValue;if($.include===r5.KvWatchInclude.AllHistory)Y=r5.KvWatchInclude.AllHistory;else if($.include===r5.KvWatchInclude.UpdatesOnly)Y=r5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${a5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=L5.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===r5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let U=0,N=await K.consume({callback:(B)=>{if(!F)U++,F=U>=H;let O=this.jmToWatchEntry(B,F);if(G&&O.operation==="DEL")return;X.push(O),X.received++}});return X.iterClosed.then(()=>{N.stop()}),N.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new a5.QueuedIteratorImpl,X=this._buildCC($,r5.KvWatchInclude.LastValue,{headers_only:!0}),Q=await this.js.consumers.getPushConsumer(this.stream,X);if((await Q.info()).num_pending===0)return Z.stop(),Z;Z._data=Q;let G=await Q.consume({callback:(J)=>{let K=J.headers?.get(aU8.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??"",X=this.bucketName(),Q=await this.jsm.streams.info(X);return new V30(Q,Z)}}aU8.Bucket=kh;class V30{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(r5.kvPrefix)?this.si.config.name.substring(r5.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,a5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,a5.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!==L5.StoreCompression.None;return!1}}aU8.KvStatusImpl=V30;class oU8{bucket;sm;prefixLen;codec;constructor($,Z,X,Q){this.bucket=$,this.prefixLen=Z,this.sm=X,this.codec=Q}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(aU8.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(L5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(a5.TD.decode(this.value),$)}string(){return a5.TD.decode(this.value)}}class rU8{bucket;sm;prefixLen;update;codec;constructor($,Z,X,Q,Y){this.bucket=$,this.prefixLen=Z,this.sm=X,this.update=Q,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,a5.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(aU8.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(L5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(a5.TD.decode(this.value),$)}string(){return a5.TD.decode(this.value)}}});var h11=v((EK)=>{Object.defineProperty(EK,"__esModule",{value:!0});EK.validateKey=EK.validateBucket=EK.NoopKvCodecs=EK.Kvm=EK.defaultBucketOpts=EK.Bucket=EK.Base64KeyCodec=EK.KvWatchInclude=EK.kvPrefix=void 0;var $N8=y11();Object.defineProperty(EK,"kvPrefix",{enumerable:!0,get:function(){return $N8.kvPrefix}});Object.defineProperty(EK,"KvWatchInclude",{enumerable:!0,get:function(){return $N8.KvWatchInclude}});var ej=eU8();Object.defineProperty(EK,"Base64KeyCodec",{enumerable:!0,get:function(){return ej.Base64KeyCodec}});Object.defineProperty(EK,"Bucket",{enumerable:!0,get:function(){return ej.Bucket}});Object.defineProperty(EK,"defaultBucketOpts",{enumerable:!0,get:function(){return ej.defaultBucketOpts}});Object.defineProperty(EK,"Kvm",{enumerable:!0,get:function(){return ej.Kvm}});Object.defineProperty(EK,"NoopKvCodecs",{enumerable:!0,get:function(){return ej.NoopKvCodecs}});Object.defineProperty(EK,"validateBucket",{enumerable:!0,get:function(){return ej.validateBucket}});Object.defineProperty(EK,"validateKey",{enumerable:!0,get:function(){return ej.validateKey}})});var u11=v((EL)=>{Object.defineProperty(EL,"__esModule",{value:!0});EL.NoopKvCodecs=EL.Kvm=EL.defaultBucketOpts=EL.Bucket=EL.Base64KeyCodec=EL.KvWatchInclude=void 0;var HP4=h11();Object.defineProperty(EL,"KvWatchInclude",{enumerable:!0,get:function(){return HP4.KvWatchInclude}});var ho=h11();Object.defineProperty(EL,"Base64KeyCodec",{enumerable:!0,get:function(){return ho.Base64KeyCodec}});Object.defineProperty(EL,"Bucket",{enumerable:!0,get:function(){return ho.Bucket}});Object.defineProperty(EL,"defaultBucketOpts",{enumerable:!0,get:function(){return ho.defaultBucketOpts}});Object.defineProperty(EL,"Kvm",{enumerable:!0,get:function(){return ho.Kvm}});Object.defineProperty(EL,"NoopKvCodecs",{enumerable:!0,get:function(){return ho.NoopKvCodecs}})});function k30(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class l11{options;kv=null;codec=k30();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new XN8.Kvm($).create(UP4,{storage:ZN8.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let X=await this.kv.get(`${$}.${Z}`);if(!X?.value?.length)return null;if(X.operation==="DEL"||X.operation==="PURGE")return null;return this.codec.decode(X.value)}catch{return null}}async set($,Z,X){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(X))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(X)=>{try{await this.kv.delete(`${X}.${$}`)}catch{}}))}teardown(){this.kv=null}}function NP4($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function S30($){return $ instanceof C1&&$.code===y1.MethodNotFound}function BP4($){return $ instanceof C1&&$.code===-32000&&/connection closed/i.test($.message)}async function zL($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(S30(H))return[];return uo.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await Q.get($,Z);if(K===null)try{let H=await X();return Q.set($,Z,H).catch(()=>{}),c11.set(J,Date.now()),uo.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(S30(H))return Q.set($,Z,[]).catch(()=>{}),[];return uo.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(uo.add(1,{type:$,outcome:"hit",stage:"hit"}),NP4(c11.get(J),Date.now(),G)&&!C30.has(J)){C30.add(J),c11.set(J,Date.now());let H=X().then((F)=>Q.set($,Z,F)).catch((F)=>{if(S30(F)||BP4(F)){if(S30(F))Q.set($,Z,[]).catch(()=>{});return}uo.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>C30.delete(J));Y?.(H)}return K}function d11($){QN8=$}function j9(){return QN8}var ZN8,XN8,uo,UP4="DECOCMS_MCP_LISTS",C30,c11,jL=30000,QN8=null;var DG=L(()=>{D9();u$();ZN8=k(mE(),1),XN8=k(u11(),1),uo=R8.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});C30=new Set;R8.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(C30.size));c11=new Map});async function m11($,Z,X){let Q=new AbortController,Y,G=new Promise((K,W)=>{Y=setTimeout(()=>{Q.abort(),W(new YN8($.id,X))},X)}),J=(async()=>{let K=await q5($,Z,!0);try{return(await K.listTools(void 0,{timeout:X,signal:Q.signal})).tools}finally{await K.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,G])}finally{if(Y)clearTimeout(Y)}}var YN8;var GN8=L(()=>{co();YN8=class YN8 extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});function _30($){return(Z)=>{if(Z instanceof C1&&Z.code===y1.MethodNotFound)return $;throw Z}}var JN8=L(()=>{D9()});function v30($,Z,X){let Q=PL($,Z,X,j9()??void 0),Y=Yj(Q,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:OP4,toolCallTimeoutMs:Wg});Y.server.setRequestHandler(NO,async()=>{return await Q.listResources().catch(_30({resources:[]}))}),Y.server.setRequestHandler(BO,async()=>{return await Q.listResourceTemplates().catch(_30({resourceTemplates:[]}))}),Y.server.setRequestHandler(OO,async()=>{return await Q.listPrompts().catch(_30({prompts:[]}))});let G=Y.close.bind(Y);return Y.close=async()=>{await G(),await Q.close().catch(()=>{})},Y}var OP4;var KN8=L(()=>{WQ();D9();lo();DG();JN8();OP4={tools:{},resources:{},prompts:{}}});var xU=L(()=>{co();GN8();KN8()});function mo($,Z,X){if(Z.some((Q)=>Q!=="*"&&Q.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${X}_self`}}function io($,Z){let X=new Map;for(let Q of Z){if(Q==="*")continue;let[Y,G]=RG0(Q);if(!LP4.has(G))continue;let J=et(Y,$);if(typeof J!=="object"||J===null||!("value"in J))continue;let K=J.value;if(typeof K!=="string")continue;X.set(`${K}:${G}`,{targetConnectionId:K,scope:G})}return[...X.values()]}async function no($,Z,X,Q){for(let J of Z){if(J==="*")continue;let[K]=RG0(J),W=et(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=D38($,Z),G=`${X}_self`;for(let J of Y){if(J===G)continue;let K=await Q.storage.connections.findById(J);if(!K||K.organization_id!==X)throw Error(`Referenced connection not found: ${J}`);try{await Q.access.check(J)}catch(W){throw Error(`Access denied to referenced connection: ${J}. ${W.message}`)}}}var LP4;var i11=L(()=>{ne0();GY0();LP4=new Set([QY0,YY0])});import{z as WN8}from"zod";var wP4,DP4,n11;var HN8=L(()=>{l4();m0();_8();DG();xU();i11();vo();nW();wP4=WN8.object({data:AX0.describe("Data for the new connection (id is auto-generated if not provided)")}),DP4=WN8.object({item:WX.describe("The created connection entity")}),n11=m({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:wP4,outputSchema:DP4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)throw Error("User ID required to create connection");let Y={...$.data,organization_id:X.id,created_by:Q};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===X.id)throw Error("Connection already exists in organization")}if(Y.connection_type==="VIRTUAL"){let U=Vy(Y.connection_url);if(!U)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let N=await Z.storage.virtualMcps.findById(U);if(!N)throw Error(`Virtual MCP not found: ${U}`);if(N.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=ky(U)}if(Y.connection_type==="STDIO"&&!o0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=await LL({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)mo(W,K,X.id),await no(W,K,X.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?io(W,K):[];if(F.length>0){let U;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:H.id,createdBy:Q,grants:F});let{plaintextToken:N,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:H.id});U=B.id,await(await q5(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:H.id,token:N}}})}catch(N){if(U)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:H.id,tokenId:U});throw await Z.storage.connections.delete(H.id),N}}if(J)j9()?.set("tools",H.id,J).catch(()=>{});return n1.capture({distinctId:Q,event:"connection_created",groups:{organization:X.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:X.id,tools_count:J?.length??0}}),{item:H}}})});import{z as _3}from"zod/v4";import{z as FN8}from"zod/v4";import{z as x30}from"zod/v4";import{z as LH}from"zod/v4";import{z as PP4}from"zod/v4";import{z as $z}from"zod/v4";import{z as wH}from"zod/v4";import{z as eZ}from"zod/v4";import{z as UN8}from"zod/v4";import{z as y30}from"zod/v4";import{z as mP4}from"zod/v4";import{z as NN8}from"zod/v4";import{z as f30}from"zod/v4";import{z as eP4}from"zod/v4";function po($,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((X,Q)=>po(X,Z[Q]))}if(typeof $==="object"&&typeof Z==="object"){let X=Object.keys($),Q=Object.keys(Z);if(X.length!==Q.length)return!1;return X.every((Y)=>Q.includes(Y)&&po($[Y],Z[Y]))}return!1}function cP4(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((X)=>{if(Z.some((Y)=>po(X,Y)))return!1;return Z.push(X),!0})}}function b30($,Z){return $.safeParse(Z).success}function C7($){if(typeof $==="boolean")return $?_3.any():_3.never();let Z={};for(let Y of QA4)Y.apply(Z,$);let X=[];if(Z.string!==!1)X.push(Z.string||_3.string());if(Z.number!==!1)X.push(Z.number||_3.number());if(Z.boolean!==!1)X.push(Z.boolean||_3.boolean());if(Z.null!==!1)X.push(Z.null||_3.null());if(Z.array!==!1)X.push(Z.array||_3.array(_3.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)X.push(Z.tuple);if(Z.object!==!1)if(Z.object)X.push(Z.object);else{let Y=_3.custom((G)=>{return typeof G==="object"&&G!==null&&!Array.isArray(G)},"Must be an object, not an array");X.push(Y)}if(Z.file!==!1&&Z.file!==void 0)X.push(Z.file);let Q;if(X.length===0)Q=_3.never();else if(X.length===1)Q=X[0];else if(!Object.keys($).some((G)=>G!=="$schema"&&G!=="title"&&G!=="description"))Q=_3.any();else Q=_3.union(X);for(let Y of YA4)Q=Y.apply(Q,$);return Q}var EP4=class{apply($,Z){if(!Z.type)return;let X=Array.isArray(Z.type)?Z.type:[Z.type],Q=new Set(X);if(!Q.has("string"))$.string=!1;if(!Q.has("number")&&!Q.has("integer"))$.number=!1;if(!Q.has("boolean"))$.boolean=!1;if(!Q.has("null"))$.null=!1;if(!Q.has("array"))$.array=!1;if(!Q.has("object"))$.object=!1;if(Q.has("integer")&&$.number!==!1){let Y=$.number||FN8.number();if(Y instanceof FN8.ZodNumber)$.number=Y.int()}}},jP4=class{apply($,Z){if(Z.const===void 0)return;let X=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof X==="string")$.string=x30.literal(X);else if(typeof X==="number")$.number=x30.literal(X);else if(typeof X==="boolean")$.boolean=x30.literal(X);else if(X===null)$.null=x30.null();else if(Array.isArray(X))$.array=void 0;else if(typeof X==="object")$.object=void 0}},zP4=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 X={string:Z.enum.filter((Q)=>typeof Q==="string"),number:Z.enum.filter((Q)=>typeof Q==="number"),boolean:Z.enum.filter((Q)=>typeof Q==="boolean"),null:Z.enum.filter((Q)=>Q===null),array:Z.enum.filter((Q)=>Array.isArray(Q)),object:Z.enum.filter((Q)=>typeof Q==="object"&&Q!==null&&!Array.isArray(Q))};$.string=this.createTypeSchema(X.string,"string"),$.number=this.createTypeSchema(X.number,"number"),$.boolean=this.createTypeSchema(X.boolean,"boolean"),$.null=X.null.length>0?LH.null():!1,$.array=X.array.length>0?void 0:!1,$.object=X.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[X,Q,...Y]=$;return LH.union([LH.literal(X),LH.literal(Q),...Y.map((G)=>LH.literal(G))])}if(Z==="boolean")return LH.union([LH.literal(!0),LH.literal(!1)]);return!1}},AP4=class{apply($,Z){let X=Z;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let Q=PP4.file();if(X.minLength!==void 0)Q=Q.min(X.minLength);if(X.maxLength!==void 0)Q=Q.max(X.maxLength);if(X.contentMediaType!==void 0)Q=Q.mime(X.contentMediaType);$.file=Q,$.string=!1}}},TP4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minLength!==void 0||X.maxLength!==void 0||X.pattern!==void 0)){if($.string===void 0)$.string=$z.string()}}},RP4=class{apply($,Z){let X=Z;if(X.minLength===void 0)return;if($.string!==!1){let Q=$.string||$z.string();if(Q instanceof $z.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},IP4=class{apply($,Z){let X=Z;if(X.maxLength===void 0)return;if($.string!==!1){let Q=$.string||$z.string();if(Q instanceof $z.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},qP4=class{apply($,Z){let X=Z;if(!X.pattern)return;if($.string!==!1){let Q=$.string||$z.string();if(Q instanceof $z.ZodString){let Y=new RegExp(X.pattern);$.string=Q.regex(Y)}}}},MP4=class{apply($,Z){let X=Z;if(X.minimum===void 0)return;if($.number!==!1){let Q=$.number||wH.number();if(Q instanceof wH.ZodNumber)$.number=Q.min(X.minimum)}}},VP4=class{apply($,Z){let X=Z;if(X.maximum===void 0)return;if($.number!==!1){let Q=$.number||wH.number();if(Q instanceof wH.ZodNumber)$.number=Q.max(X.maximum)}}},kP4=class{apply($,Z){let X=Z;if(X.exclusiveMinimum===void 0)return;if($.number!==!1){let Q=$.number||wH.number();if(Q instanceof wH.ZodNumber)if(typeof X.exclusiveMinimum==="number")$.number=Q.gt(X.exclusiveMinimum);else $.number=!1}}},SP4=class{apply($,Z){let X=Z;if(X.exclusiveMaximum===void 0)return;if($.number!==!1){let Q=$.number||wH.number();if(Q instanceof wH.ZodNumber)if(typeof X.exclusiveMaximum==="number")$.number=Q.lt(X.exclusiveMaximum);else $.number=!1}}},CP4=class{apply($,Z){let X=Z;if(X.multipleOf===void 0)return;if($.number!==!1){let Q=$.number||wH.number();if(Q instanceof wH.ZodNumber)$.number=Q.refine((Y)=>{if(X.multipleOf===0)return!1;let G=Y/X.multipleOf,J=Math.round(G),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(X.multipleOf)*Number.EPSILON*10);return Math.abs(G-J)<=K/Math.abs(X.multipleOf)},{message:`Must be a multiple of ${X.multipleOf}`})}}},_P4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minItems!==void 0||X.maxItems!==void 0||X.items!==void 0||X.prefixItems!==void 0)){if($.array===void 0)$.array=eZ.array(eZ.any())}}},vP4=class{apply($,Z){let X=Z;if(X.minItems===void 0)return;if($.array!==!1)$.array=($.array||eZ.array(eZ.any())).min(X.minItems)}},xP4=class{apply($,Z){let X=Z;if(X.maxItems===void 0)return;if($.array!==!1)$.array=($.array||eZ.array(eZ.any())).max(X.maxItems)}},fP4=class{apply($,Z){let X=Z;if($.array===!1)return;if(Array.isArray(X.items))$.array=$.array||eZ.array(eZ.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let Q=C7(X.items),Y=eZ.array(Q);if($.array&&$.array instanceof eZ.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 X.items==="boolean"&&X.items===!1)if(!X.prefixItems)$.array=eZ.array(eZ.any()).max(0);else $.array=$.array||eZ.array(eZ.any());else if(typeof X.items==="boolean"&&X.items===!0)$.array=$.array||eZ.array(eZ.any());else if(X.prefixItems)$.array=$.array||eZ.array(eZ.any())}},bP4=class{apply($,Z){if(Z.type!=="array")return;let X=Z;if(!Array.isArray(X.items))return;if($.array===!1)return;let Q=X.items.map((G)=>C7(G)),Y;if(Q.length===0)Y=UN8.tuple([]);else Y=UN8.tuple(Q);if(X.minItems!==void 0&&X.minItems>Q.length)Y=!1;if(X.maxItems!==void 0&&X.maxItems<Q.length)Y=!1;$.tuple=Y,$.array=!1}},yP4=class{apply($,Z){let X=Z;if($.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)$.object=$.object||y30.object({}).passthrough()}},gP4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if($.object===void 0)$.object=y30.object({}).passthrough()}}},hP4=class{apply($,Z){let X=Z;if(X.maxProperties===void 0)return;if($.object!==!1){let Q=$.object||y30.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},uP4=class{apply($,Z){let X=Z;if(X.minProperties===void 0)return;if($.object!==!1){let Q=$.object||y30.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},lP4=class{apply($,Z){if(!Z.not)return $;let X=C7(Z.not);return $.refine((Q)=>!b30(X,Q),{message:"Value must not match the 'not' schema"})}},dP4=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(cP4(),{message:"Array items must be unique"})}},iP4=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((Q)=>C7(Q)).reduce((Q,Y)=>mP4.intersection(Q,Y),$)}},nP4=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let X=Z.anyOf.length===1?C7(Z.anyOf[0]):NN8.union([C7(Z.anyOf[0]),C7(Z.anyOf[1]),...Z.anyOf.slice(2).map((Q)=>C7(Q))]);return NN8.intersection($,X)}},pP4=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let X=Z.oneOf.map((Q)=>C7(Q));return $.refine((Q)=>{let Y=0;for(let G of X)if(G.safeParse(Q).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},tP4=class{apply($,Z){let X=Z;if(X.prefixItems&&Array.isArray(X.prefixItems)){let Y=X.prefixItems.map((G)=>C7(G));return $.refine((G)=>{if(!Array.isArray(G))return!0;for(let J=0;J<Math.min(G.length,Y.length);J++)if(!b30(Y[J],G[J]))return!1;if(G.length>Y.length){if(typeof X.items==="boolean"&&X.items===!1)return!1;else if(X.items&&typeof X.items==="object"&&!Array.isArray(X.items)){let J=C7(X.items);for(let K=Y.length;K<G.length;K++)if(!b30(J,G[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},oP4=class{apply($,Z){let X=Z;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return $;if($ instanceof f30.ZodObject||$ instanceof f30.ZodRecord){let Q={};if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0)Q[Y]=C7(G)}if(X.required&&Array.isArray(X.required)){let Y=new Set(X.required);for(let G of Object.keys(Q))if(!Y.has(G))Q[G]=Q[G].optional()}else for(let Y of Object.keys(Q))Q[Y]=Q[Y].optional();if(X.additionalProperties===!1)return f30.object(Q);else return f30.object(Q).passthrough()}return $.refine((Q)=>{if(typeof Q!=="object"||Q===null||Array.isArray(Q))return!0;if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0){if(Object.getOwnPropertyDescriptor(Q,Y)!==void 0){if(!C7(G).safeParse(Q[Y]).success)return!1}}}if(X.required&&Array.isArray(X.required)){for(let Y of X.required)if(Object.getOwnPropertyDescriptor(Q,Y)===void 0)return!1}if(X.additionalProperties===!1&&X.properties){let Y=new Set(Object.keys(X.properties));for(let G in Q)if(!Y.has(G))return!1}return!0},{message:"Object constraints validation failed"})}},rP4=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let X=Z.enum.filter((Q)=>Array.isArray(Q)||typeof Q==="object"&&Q!==null);if(X.length===0)return $;return $.refine((Q)=>{if(typeof Q!=="object"||Q===null)return!0;return X.some((Y)=>po(Q,Y))},{message:"Value must match one of the enum values"})}},aP4=class{apply($,Z){if(Z.const===void 0)return $;let X=Z.const;if(typeof X!=="object"||X===null)return $;return $.refine((Q)=>po(Q,X),{message:"Value must equal the const value"})}},sP4=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},$A4=class{apply($,Z){var X;let Q=Z;if(!((X=Q.required)==null?void 0:X.includes("__proto__"))||Z.type!==void 0)return $;return eP4.any().refine((Y)=>this.validateRequired(Y,Q.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((X)=>Object.prototype.hasOwnProperty.call($,X))}},ZA4=class{apply($,Z){var X;let Q=Z;if(Q.contains===void 0)return $;let Y=C7(Q.contains),G=(X=Q.minContains)!=null?X:1,J=Q.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(b30(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"})}},XA4=class{apply($,Z){let{default:X}=Z;if(X===void 0)return $;if(!$.safeParse(X).success)return $;return $.default(X)}},QA4,YA4;var BN8=L(()=>{QA4=[new jP4,new zP4,new EP4,new AP4,new TP4,new _P4,new gP4,new RP4,new IP4,new qP4,new MP4,new VP4,new kP4,new SP4,new CP4,new bP4,new vP4,new xP4,new fP4,new hP4,new uP4,new yP4],YA4=[new $A4,new rP4,new aP4,new iP4,new nP4,new pP4,new tP4,new oP4,new ZA4,new lP4,new dP4,new XA4,new sP4]});class p11{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,GA4),this._socket.onerror=(X)=>{let Q="error"in X?X.error:Error(`WebSocket error: ${JSON.stringify(X)}`);Z(Q),this.onerror?.(Q)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(X)=>{let Q;try{Q=FG.parse(JSON.parse(X.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(Q)}})}async close(){this._socket?.close()}send($){return new Promise((Z,X)=>{if(!this._socket){X(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var GA4="mcp";var ON8=L(()=>{D9()});function JA4($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let X=Z?.params?.protocolVersion;if(!X)return null;return{type:"emit",message:{result:{protocolVersion:X,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc: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 g30;var t11=L(()=>{sy();g30=class g30 extends eW{constructor($,Z){super($,Z)}send($,Z){let X=JA4($);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var LN8,wN8=async($,Z,X)=>{let Q=KA4($.connection,Z,X);if(!Q)throw Error("Unknown MCP connection type");let Y=new LN8({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(Q),{client:Y}},KA4=($,Z,X)=>{if($.type==="Websocket")return new p11(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...X??{},..."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 AU(new URL($.url),G)}return new g30(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var DN8=L(()=>{aW();kp();ON8();D9();WQ();t11();LN8=class LN8 extends $Z{constructor($,Z){super($,{jsonSchemaValidator:I5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},dn,Z)}}});function HA4($,Z){if(Zz.set($,Z),Zz.size>WA4){let X=Zz.keys().next().value;if(X!==void 0)Zz.delete(X)}}function zN8($){let Z=(X)=>{if("connection"in $)return wN8({connection:$.connection},void 0,X);return $.client};return new Proxy({},{get(X,Q){if(Q==="toJSON")return null;if(typeof Q!=="string")throw Error("Name must be a string");if(Q==="listTools")return K;async function Y(W,H=Q){let F=$?.debugId?.(),U=F?{"x-trace-debug-id":F}:void 0,{client:N}=await Z(U),{structuredContent:B,isError:O,content:w}=await N.callTool({name:String(H),arguments:W});if(O){let E=w?.[0]?.text,j=typeof E==="string"?EN8(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??w)}`)}if(B!==void 0)return B;let D=w?.[0]?.text;return typeof D==="string"?EN8(D):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(!Zz.has(H))HA4(H,G());return await Zz.get(H)}catch(F){console.error("Failed to list tools",F),Zz.delete(H);return}}async function K(){return(await J()??[]).map((H)=>jN8(H,Y))}return Y.asTool=async()=>{let H=(await J()??[]).find((F)=>F.name===Q);if(!H)throw Error(`Tool ${Q} not found`);return jN8(H,Y)},Y}})}var EN8=($)=>{try{return JSON.parse($)}catch{return $}},WA4=500,Zz,jN8=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?C7($.inputSchema):void 0,outputSchema:$.outputSchema?C7($.outputSchema):void 0,execute:(X)=>{return Z(X.context,$.name)}}};var PN8=L(()=>{BN8();DN8();Zz=new Map});function AL($){return zN8($)}var Sh;var o11=L(()=>{PN8();Sh=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(X)=>AL({connection:X});if(Z==="forClient")return(X)=>AL({client:X});return globalThis[Z]}})});function h30($){return{isImplementedBy:(Z)=>{for(let X of $){let Q=typeof X.name==="string"?new RegExp(`^${X.name}$`):X.name,Y=Z.find((G)=>Q.test(G.name));if(!Y&&X.opt)continue;if(!Y)return!1}return!0}}}var DH=($)=>{return{...h30($),forClient:(Z)=>{return AL({client:Z})},forConnection:(Z)=>{return AL({connection:Z})}}};var Xz=L(()=>{o11()});import{z as s5}from"zod";var AN8,u30,TN8,c30,RN8,FA4;var IN8=L(()=>{Xz();AN8=s5.object({specversion:s5.literal("1.0").describe("CloudEvents specification version"),id:s5.string().describe("Unique identifier for this event (UUID recommended)"),source:s5.string().describe("Connection ID of the event publisher"),type:s5.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:s5.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:s5.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:s5.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:s5.string().url().optional().describe("URI to the schema for the data attribute"),data:s5.unknown().optional().describe("Event payload (any JSON value)")}),u30=s5.object({events:s5.array(AN8).min(1).describe("Batch of CloudEvents to process")}),TN8=s5.object({success:s5.boolean().optional().describe("Whether this event was processed successfully"),error:s5.string().optional().describe("Error message for this event"),retryAfter:s5.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),c30=s5.object({success:s5.boolean().optional().describe("Batch success - applies to events not in results"),error:s5.string().optional().describe("Batch error message - applies to events not in results"),processedCount:s5.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:s5.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:s5.record(s5.string(),TN8).optional().describe("Per-event results keyed by event ID")}),RN8=[{name:"ON_EVENTS",inputSchema:u30,outputSchema:c30}],FA4=DH(RN8)});import{z as e5}from"zod";var qN8,MN8,VN8,kN8,SN8,CN8,l30,r11;var a11=L(()=>{Xz();qN8=e5.object({type:e5.literal("string"),enum:e5.array(e5.string()).optional(),description:e5.string().optional()}),MN8=e5.object({type:e5.string(),description:e5.string(),paramsSchema:e5.record(e5.string(),qN8)}),VN8=e5.object({}),kN8=e5.object({triggers:e5.array(MN8)}),SN8=e5.object({type:e5.string(),params:e5.record(e5.string(),e5.string()),enabled:e5.boolean(),callbackUrl:e5.url().optional(),callbackToken:e5.string().min(1).optional()}),CN8=e5.object({success:e5.boolean()}),l30=[{name:"TRIGGER_LIST",inputSchema:VN8,outputSchema:kN8},{name:"TRIGGER_CONFIGURE",inputSchema:SN8,outputSchema:CN8}],r11=DH(l30)});import{z as f8}from"zod";var UA4,NA4,BA4,OA4,LA4,wA4,DA4,EA4,jA4,zA4,PA4,AA4,Qz;var to=L(()=>{UA4=f8.object({prefix:f8.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:f8.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:f8.string().optional().describe("Token for pagination from previous response"),delimiter:f8.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),NA4=f8.object({objects:f8.array(f8.object({key:f8.string().describe("Object key/path"),size:f8.number().describe("Object size in bytes"),lastModified:f8.string().describe("Last modified timestamp"),etag:f8.string().describe("Entity tag for the object")})),nextContinuationToken:f8.string().optional().describe("Token for fetching next page of results"),isTruncated:f8.boolean().describe("Whether there are more results available"),commonPrefixes:f8.array(f8.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),BA4=f8.object({key:f8.string().describe("Object key/path to get metadata for")}),OA4=f8.object({contentType:f8.string().optional().describe("MIME type of the object"),contentLength:f8.number().describe("Size of the object in bytes"),lastModified:f8.string().describe("Last modified timestamp"),etag:f8.string().describe("Entity tag for the object"),metadata:f8.record(f8.string(),f8.string()).optional().describe("Custom metadata key-value pairs")}),LA4=f8.object({key:f8.string().describe("Object key/path to generate URL for"),expiresIn:f8.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),wA4=f8.object({url:f8.string().describe("Presigned URL for downloading the object"),expiresIn:f8.number().describe("Expiration time in seconds that was used")}),DA4=f8.object({key:f8.string().describe("Object key/path for the upload"),expiresIn:f8.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:f8.string().optional().describe("MIME type for the object being uploaded")}),EA4=f8.object({url:f8.string().describe("Presigned URL for uploading the object"),expiresIn:f8.number().describe("Expiration time in seconds that was used")}),jA4=f8.object({key:f8.string().describe("Object key/path to delete")}),zA4=f8.object({success:f8.boolean().describe("Whether the deletion was successful"),key:f8.string().describe("The key that was deleted")}),PA4=f8.object({keys:f8.array(f8.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),AA4=f8.object({deleted:f8.array(f8.string()).describe("Array of successfully deleted keys"),errors:f8.array(f8.object({key:f8.string(),message:f8.string()})).describe("Array of errors for failed deletions")}),Qz=[{name:"LIST_OBJECTS",inputSchema:UA4,outputSchema:NA4},{name:"GET_OBJECT_METADATA",inputSchema:BA4,outputSchema:OA4},{name:"GET_PRESIGNED_URL",inputSchema:LA4,outputSchema:wA4},{name:"PUT_PRESIGNED_URL",inputSchema:DA4,outputSchema:EA4},{name:"DELETE_OBJECT",inputSchema:jA4,outputSchema:zA4},{name:"DELETE_OBJECTS",inputSchema:PA4,outputSchema:AA4}]});import{z as k$}from"zod";var _N8,vN8,xN8,oo,d30,m30,i30,n30,TA4;var s11=L(()=>{Xz();_N8=k$.object({primary:k$.string().optional().describe("Primary brand color (hex)"),secondary:k$.string().optional().describe("Secondary brand color (hex)"),accent:k$.string().optional().describe("Accent / highlight color (hex)"),background:k$.string().optional().describe("Background color (hex)"),foreground:k$.string().optional().describe("Foreground / text color (hex)")}),vN8=k$.object({heading:k$.string().optional().describe("Font family for headings"),body:k$.string().optional().describe("Font family for body text"),code:k$.string().optional().describe("Font family for code / monospace")}),xN8=k$.object({logo:k$.string().optional().describe("Logo URL"),favicon:k$.string().optional().describe("Favicon URL"),ogImage:k$.string().optional().describe("Open Graph image URL")}),oo=k$.object({id:k$.string(),name:k$.string().describe("Brand / company name"),domain:k$.string().optional().describe("Company domain (e.g. example.com)"),colors:_N8.optional().describe("Semantic color palette"),fonts:vN8.optional().describe("Font families by role"),assets:xN8.optional().describe("Visual identity assets"),overview:k$.string().optional().describe("Company overview / description"),tagline:k$.string().optional().describe("Brand tagline"),tone:k$.string().optional().describe("Tone of voice description"),metadata:k$.record(k$.string(),k$.unknown()).optional().describe("Extra design tokens and metadata")}),d30=k$.object({id:k$.string().optional().describe("Brand ID. Omit to get the default brand.")}),m30=k$.object({}),i30=k$.object({items:k$.array(oo)}),n30=[{name:"BRAND_GET",inputSchema:d30,outputSchema:oo},{name:"BRAND_LIST",inputSchema:m30,outputSchema:i30,opt:!0}],TA4=DH(n30)});var e11=L(()=>{Xz();IN8();a11();to();s11()});import{z as q6}from"zod";function fU($){return q6.object({items:q6.array($).describe("Array of collection items"),totalCount:q6.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:q6.boolean().optional().describe("Whether there are more items available")})}function ao($){return q6.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function qA4($){return q6.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function MA4($){return q6.object({item:$.describe("The created entity with generated id")})}function VA4($){return q6.object({id:q6.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function kA4($){return q6.object({item:$.describe("The updated entity")})}function eo($){return q6.object({item:$.describe("The deleted entity")})}function t30($,Z,X){let Q=$.toUpperCase(),Y=X?.readOnly??!1,G=[{name:`COLLECTION_${Q}_LIST`,inputSchema:jK,outputSchema:fU(Z)},{name:`COLLECTION_${Q}_GET`,inputSchema:ro,outputSchema:ao(Z)}];if(!Y)G.push({name:`COLLECTION_${Q}_CREATE`,inputSchema:qA4(Z),outputSchema:MA4(Z),opt:!0},{name:`COLLECTION_${Q}_UPDATE`,inputSchema:VA4(Z),outputSchema:kA4(Z),opt:!0},{name:`COLLECTION_${Q}_DELETE`,inputSchema:so,outputSchema:eo(Z),opt:!0});return G}var p30,RA4,fN8,IA4,jK,ro,so;var v3=L(()=>{p30=q6.object({id:q6.string().describe("Unique identifier for the entity"),title:q6.string().describe("Human-readable title for the entity"),description:q6.string().nullish().describe("Description of the entity"),created_at:q6.string().datetime(),updated_at:q6.string().datetime(),created_by:q6.string().optional(),updated_by:q6.string().optional()}),RA4=q6.object({field:q6.array(q6.string()),operator:q6.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:q6.unknown()}),fN8=q6.lazy(()=>q6.union([RA4,q6.object({operator:q6.enum(["and","or","not"]),conditions:q6.array(fN8)})])),IA4=q6.object({field:q6.array(q6.string()),direction:q6.enum(["asc","desc"]),nulls:q6.enum(["first","last"]).optional()}),jK=q6.object({where:fN8.optional().describe("Filter expression"),orderBy:q6.array(IA4).optional().describe("Sort expressions"),limit:q6.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:q6.number().int().min(0).optional().describe("Number of items to skip")});ro=q6.object({id:q6.string().describe("ID of the entity to retrieve")});so=q6.object({id:q6.string().describe("ID of the entity to delete")})});import{z as Ch}from"zod";var SA4,CA4,bN8;var yN8=L(()=>{v3();SA4=p30.extend({avatar:Ch.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:Ch.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:Ch.string().describe("Virtual MCP ID to use for this assistant"),model:Ch.object({id:Ch.string().describe("Model ID"),connectionId:Ch.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),CA4=t30("assistant",SA4),bN8=[...CA4]});import{z as T0}from"zod";var $r,bU,hN8,_A4,vA4,uN8,xA4,fA4,bA4,yA4,gA4,hA4,cN8,uA4,cA4,lA4,dA4,mA4,iA4,nA4,pA4,tA4,oA4,cb5,rA4,lb5,gN8,aA4,sA4,o30,db5;var lN8=L(()=>{Xz();v3();$r=T0.lazy(()=>T0.union([T0.null(),T0.string(),T0.number(),T0.boolean(),T0.record(T0.string(),$r),T0.array($r)])),bU=T0.record(T0.string(),T0.record(T0.string(),$r)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),hN8=T0.object({type:T0.literal("text"),text:T0.string().describe("The text content"),providerOptions:bU}),_A4=T0.object({type:T0.literal("text"),text:T0.string().describe("The text content"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")}),vA4=T0.string().describe("File data as URL string"),uN8=T0.object({type:T0.literal("file"),filename:T0.string().optional().describe("Optional filename of the file"),data:vA4,mediaType:T0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:bU}),xA4=T0.object({type:T0.literal("file"),mediaType:T0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:T0.string().describe("Generated file data as base64 encoded string")}),fA4=T0.object({type:T0.literal("reasoning"),text:T0.string().describe("The reasoning text"),providerOptions:bU}),bA4=T0.object({type:T0.literal("reasoning"),text:T0.string().describe("The reasoning text"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")}),yA4=T0.object({type:T0.literal("tool-call"),toolCallId:T0.string().describe("ID of the tool call, used to match with tool result"),toolName:T0.string().describe("Name of the tool being called"),input:T0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:T0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:bU}),gA4=T0.object({type:T0.literal("tool-call"),toolCallId:T0.string().describe("ID of the tool call"),toolName:T0.string().describe("Name of the tool being called"),input:T0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:T0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")}),hA4=T0.union([T0.object({type:T0.literal("text"),value:T0.string()}),T0.object({type:T0.literal("json"),value:$r}),T0.object({type:T0.literal("error-text"),value:T0.string()}),T0.object({type:T0.literal("error-json"),value:$r}),T0.object({type:T0.literal("content"),value:T0.array(T0.union([T0.object({type:T0.literal("text"),text:T0.string().describe("Text content")}),T0.object({type:T0.literal("media"),data:T0.string().describe("Base-64 encoded media data"),mediaType:T0.string().describe("IANA media type")})]))}),T0.object({type:T0.literal("execution-denied"),reason:T0.string().optional()}),T0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),cN8=T0.object({type:T0.literal("tool-result"),toolCallId:T0.string().describe("ID of the tool call that this result is associated with"),toolName:T0.string().describe("Name of the tool that generated this result"),output:hA4.describe("Result of the tool call"),result:T0.unknown().describe("Unknown result of the tool call"),providerOptions:bU}),uA4=T0.object({type:T0.literal("tool-result"),toolCallId:T0.string().describe("ID of the tool call that this result is associated with"),toolName:T0.string().describe("Name of the tool that generated this result"),result:T0.any().describe("Result of the tool call (JSON-serializable)"),isError:T0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:T0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")}),cA4=T0.union([T0.object({type:T0.literal("source"),sourceType:T0.literal("url"),id:T0.string().describe("The ID of the source"),url:T0.string().describe("The URL of the source"),title:T0.string().optional().describe("The title of the source"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")}),T0.object({type:T0.literal("source"),sourceType:T0.literal("document"),id:T0.string().describe("The ID of the source"),mediaType:T0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:T0.string().describe("The title of the document"),filename:T0.string().optional().describe("Optional filename of the document"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata")})]),lA4=T0.object({role:T0.literal("system"),content:T0.string().describe("System message content"),providerOptions:bU}),dA4=T0.object({role:T0.literal("user"),content:T0.array(T0.union([hN8,uN8])).describe("User message content parts (text or file)"),providerOptions:bU}),mA4=T0.object({role:T0.literal("assistant"),content:T0.array(T0.union([hN8,uN8,fA4,yA4,cN8])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:bU}),iA4=T0.object({role:T0.literal("tool"),content:T0.array(cN8).describe("Tool message content (tool results)"),providerOptions:bU}),nA4=T0.union([lA4,dA4,mA4,iA4]),pA4=T0.array(nA4).describe("A list of messages forming the prompt"),tA4=T0.object({prompt:pA4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:T0.number().optional().describe("Maximum number of tokens to generate"),temperature:T0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:T0.number().optional().describe("Nucleus sampling parameter"),topK:T0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:T0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:T0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:T0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:T0.array(T0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:T0.union([T0.object({type:T0.literal("text")}),T0.object({type:T0.literal("json"),schema:T0.any().optional().describe("JSON schema that the generated output should conform to"),name:T0.string().optional().describe("Name of output that should be generated"),description:T0.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:T0.array(T0.any()).optional().describe("The tools that are available for the model"),toolChoice:T0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:T0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:T0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:T0.any().optional().describe("Additional provider-specific options")}),oA4=T0.object({content:T0.array(T0.union([_A4,xA4,bA4,gA4,uA4,cA4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:T0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:T0.looseObject({inputTokens:T0.number().optional(),outputTokens:T0.number().optional(),totalTokens:T0.number().optional(),reasoningTokens:T0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:T0.any().optional().describe("Additional provider-specific metadata"),request:T0.object({body:T0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:T0.object({id:T0.string().optional().describe("ID for the generated response"),timestamp:T0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:T0.string().optional().describe("The ID of the response model that was used"),headers:T0.record(T0.string(),T0.string()).optional().describe("Response headers"),body:T0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:T0.array(T0.any()).describe("Warnings for the call, e.g. unsupported settings")}),cb5=T0.object({stream:T0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:T0.object({body:T0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:T0.object({headers:T0.record(T0.string(),T0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),rA4=T0.object({supportedUrls:T0.record(T0.string(),T0.array(T0.string())).describe("Supported URL patterns by media type for the provider")}),lb5=T0.object({modelId:T0.string().describe("The ID of the model"),logo:T0.string().nullable(),description:T0.string().nullable(),capabilities:T0.array(T0.string()),limits:T0.object({contextWindow:T0.number(),maxOutputTokens:T0.number()}).nullable(),costs:T0.object({input:T0.number(),output:T0.number()}).nullable(),provider:T0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),gN8=T0.object({modelId:T0.string().describe("The ID of the model"),callOptions:tA4}),aA4=p30.extend({logo:T0.string().nullable(),description:T0.string().nullable(),capabilities:T0.array(T0.string()),limits:T0.object({contextWindow:T0.number(),maxOutputTokens:T0.number()}).nullable(),costs:T0.object({input:T0.number(),output:T0.number()}).nullable(),provider:T0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),sA4=t30("llm",aA4,{readOnly:!0}),o30=[{name:"LLM_METADATA",inputSchema:T0.object({modelId:T0.string().describe("The ID of the model")}),outputSchema:rA4},{name:"LLM_DO_STREAM",inputSchema:gN8},{name:"LLM_DO_GENERATE",inputSchema:gN8,outputSchema:oA4},...sA4],db5=DH(o30)});import{z as Yz}from"zod";var eA4,dN8;var mN8=L(()=>{eA4=Yz.object({scopes:Yz.array(Yz.string()).describe("List of scopes available"),stateSchema:Yz.record(Yz.string(),Yz.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),dN8=[{name:"MCP_CONFIGURATION",inputSchema:Yz.object({}),outputSchema:eA4}]});import{z as $9}from"zod";var $T4,ZT4,iN8;var nN8=L(()=>{$T4=$9.object({}).strict(),ZT4=$9.object({billing:$9.object({mode:$9.enum(["prepaid","postpaid"]),limitPeriod:$9.enum(["daily","weekly","monthly"]).nullable()}),limit:$9.object({total:$9.number().nullable(),remaining:$9.number().nullable(),reset:$9.string().nullable()}),usage:$9.object({total:$9.number(),daily:$9.number(),weekly:$9.number(),monthly:$9.number()}),alert:$9.object({enabled:$9.boolean(),threshold_usd:$9.number(),email:$9.string().nullable()}),connectionId:$9.string()}),iN8=[{name:"GATEWAY_USAGE",inputSchema:$T4,outputSchema:ZT4},{name:"GATEWAY_SET_LIMIT",inputSchema:$9.object({}),outputSchema:$9.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:$9.object({}),outputSchema:$9.object({}),opt:!0}]});import{z as pN8}from"zod";function x3(){return $Q()===null}function r30($,Z){return $===u4.DEV_ASSETS(Z)}function _h($,Z){let X=qZ8(Z,$),Q=new Date().toISOString();return{id:X.id??u4.DEV_ASSETS($),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:$,created_by:"system",created_at:Q,updated_at:Q,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:XT4,bindings:["OBJECT_STORAGE"],status:"active"}}var XT4;var vh=L(()=>{nB();to();c6();XT4=Qz.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:pN8.toJSONSchema($.inputSchema),outputSchema:pN8.toJSONSchema($.outputSchema)}))});function tN8($,Z){return $||Z===0}function oN8($,Z,X,Q,Y){let G=Z?Y+1:Y,J=$.slice(0,X),K=Q+X<G;return{items:J,totalCount:G,hasMore:K}}function rN8($,Z,X){if(!X)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function QT4($,Z){if(Z.length===0)return;let[X,...Q]=Z,Y=X==="slug"?kO($):$[X];for(let G of Q){if(Y===null||typeof Y!=="object")return;Y=Y[G]}return Y}function YT4($){let X=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${X}$`,"i")}function GT4($,Z,X){if($===void 0)return!0;switch(Z){case"eq":return X===null?$===null:$===X;case"gt":return $>X;case"gte":return $>=X;case"lt":return $<X;case"lte":return $<=X;case"in":return Array.isArray(X)&&X.includes($);case"like":return typeof $==="string"&&YT4(String(X)).test($);case"contains":return String($).toLowerCase().includes(String(X).toLowerCase());default:return!0}}function Zr($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:Q,conditions:Y}=Z;if(Y.length===0)return!0;switch(Q){case"and":return Y.every((G)=>Zr($,G));case"or":return Y.some((G)=>Zr($,G));case"not":return!Y.every((G)=>Zr($,G));default:return!0}}let X=QT4($,Z.field);return GT4(X,Z.operator,Z.value)}var aN8=L(()=>{$Y0()});import{z as TL}from"zod";var JT4=8,KT4,WT4,HT4,FT4,$81;var sN8=L(()=>{e11();yN8();v3();lN8();mN8();to();nN8();c6();m0();x9();DG();xU();vh();nW();$Y0();aN8();KT4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:TL.object({})}],WT4={LLM:o30,LLMS:o30,ASSISTANTS:bN8,MCP:dN8,OBJECT_STORAGE:Qz,AI_GATEWAY_BILLING:iN8,TRIGGER:l30,REGISTRY:KT4,BRAND:n30},HT4=jK.extend({binding:TL.union([TL.array(TL.object({}).passthrough()),TL.object({}).passthrough(),TL.string()]).optional(),include_virtual:TL.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:TL.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),FT4=fU(WX),$81=m({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:HT4,outputSchema:FT4,handler:async($,Z)=>{await Z.access.check();let X=X0(Z),Q=$.binding?typeof $.binding==="string"?(()=>{let E=WT4[$.binding.toUpperCase()];if(!E)throw Error(`Unknown binding: ${$.binding}`);return E})():$.binding:void 0,Y=Q?h30(Q):void 0,G=!!Y,J=$.limit??100,K=$.offset??0,W=O9(),H=u4.DEV_ASSETS(X.id),F=_h(X.id,W),U=(!$.slug||kO(F)===$.slug)&&Zr(F,$.where),N=x3()&&!G&&U,{sqlOffset:B,sqlLimit:O}=rN8(K,J,N),{items:w,totalCount:D}=await Z.storage.connections.list(X.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=j9(),j=u4.SELF(X.id);await z30(w,JT4,async(z)=>{if(z.tools!==null)return;let A=z.id===j?async()=>{let{listManagementTools:I}=await Promise.resolve().then(() => (RL(),a30));return I(Z)}:()=>m11(z,Z,ZY0),P=await zL("tools",z.id,A,E,(I)=>Z.pendingRevalidations.push(I),jL);if(P!==null)z.tools=P})}if(x3()&&tN8(G,K)&&U&&!w.some((E)=>E.id===H))w.unshift(F);if(G){let E=(await Promise.all(w.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 oN8(w,N,J,K,D)}})});var UT4,Z81;var eN8=L(()=>{v3();c6();m0();x9();DG();xU();vh();nW();UT4=ao(WX),Z81=m({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:ro,outputSchema:UT4,handler:async($,Z)=>{let X=X0(Z);if(await Z.access.check(),x3()&&r30($.id,X.id))return{item:_h(X.id,O9())};let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)return{item:null};if(Q.tools===null){let Y=u4.SELF(X.id),G=Q.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (RL(),a30));return K(Z)}:async()=>{let K=await q5(Q,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},J=await zL("tools",Q.id,G,j9(),(K)=>Z.pendingRevalidations.push(K),jL);if(J!==null)Q.tools=J}return{item:Q}}})});class X5{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(),X=await this.vault.encrypt($.accessToken),Q=$.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:G4("dtok"),connectionId:$.connectionId,accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:X,refreshToken:Q,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 Q=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(Q))return!0;return Q-Z<Date.now()}async decryptToken($){let Z=await this.vault.decrypt($.accessToken),X=$.refreshToken?await this.vault.decrypt($.refreshToken):null,Q=$.clientSecret?await this.vault.decrypt($.clientSecret):null;return{id:$.id,connectionId:$.connectionId,accessToken:Z,refreshToken:X,scope:$.scope,expiresAt:$.expiresAt,createdAt:$.createdAt,updatedAt:$.updatedAt,clientId:$.clientId,clientSecret:Q,tokenEndpoint:$.tokenEndpoint}}}var f3=L(()=>{HQ()});function xh(...$){if(LT4)console.log("[mcp-read-cache]",...$)}function wT4($){return $.kind==="org"?"org":`u:${$.userId}`}function X81($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(X81).join(",")}]`;return`{${Object.keys($).sort().map((X)=>`${JSON.stringify(X)}:${X81($[X])}`).join(",")}}`}class $J0{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=NT4,Z=BT4,X=()=>Date.now(),Q=OT4){this.config=$;this.maxEntries=Z;this.now=X;this.maxTotalBytes=Q}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,X,Q){return`${Z}:${wT4(X)}:${$}:${X81(Q)}`}storeSet($,Z,X,Q){let Y;try{Y=JSON.stringify(Z).length}catch{xh("SKIP non-serializable",$);return}if(Y>Q){xh("SKIP oversize",$,`${Y}b > cap ${Q}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:X,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:X,scope:Q,params:Y,fetchLive:G,shouldCache:J,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,X,Q,Y),F=this.now(),U=this.store.get(H),N=U?F-U.storedAt:1/0;if(!U||N>W.maxStaleMs){s30.add(1,{type:Z,outcome:"miss"}),xh(U?"EXPIRED":"MISS",H);let B=await G();if(J?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else xh("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,U),N>W.revalidateAfterMs&&!this.revalidating.has(H)){s30.add(1,{type:Z,outcome:"stale"}),xh("STALE \u2192 serve + revalidate",H,`age=${N}ms`),this.revalidating.add(H);let B=G().then((O)=>{if(J?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{s30.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else s30.add(1,{type:Z,outcome:"hit"}),xh("HIT",H,`age=${N}ms`);return U.value}invalidate($){let Z=`${$}:`;for(let X of[...this.store.keys()])if(X.startsWith(Z))this.deleteKey(X)}}function Y81(){return o0().mcpCacheEnabled}function ZJ0(){return Y81()?Q81:null}var s30,e30=1024,$B8,NT4,BT4=2000,OT4,LT4,Q81;var Xr=L(()=>{u$();_8();s30=R8.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),$B8=e30*e30,NT4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*e30},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*$B8},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*e30}},OT4=256*$B8,LT4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;Q81=new $J0;R8.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(Q81.stats().entries));R8.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(Q81.stats().bytes))});function QB8($){ZJ0()?.invalidate($)}function fh($){QB8($);let Z=G81?.();if(!Z)return;try{Z.publish(ZB8,DT4.encode(JSON.stringify({connectionId:$,originId:XB8})))}catch(X){console.warn("[McpCacheInvalidation] publish failed (non-critical):",X)}}function YB8($){if(G81=$,Qr)return;let Z=$();if(!Z)return;Qr=Z.subscribe(ZB8),(async()=>{for await(let X of Qr)try{let Q=JSON.parse(ET4.decode(X.data));if(Q.originId===XB8)continue;QB8(Q.connectionId)}catch{}})().catch(console.error)}function GB8(){Qr?.unsubscribe(),Qr=null,G81=void 0}var ZB8="studio.mcp-cache.invalidate",XB8,DT4,ET4,G81,Qr=null;var Yr=L(()=>{Xr();XB8=crypto.randomUUID(),DT4=new TextEncoder,ET4=new TextDecoder});import{z as J81}from"zod";function zT4($){let Z={...$};for(let X of jT4)delete Z[X];return Z}function PT4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function RT4($,Z){return $.length===Z.length&&$.every((X,Q)=>X===Z[Q])}var jT4,AT4,TT4,K81;var JB8=L(()=>{xU();f3();m0();_8();DG();Yr();i11();vo();nW();jT4=["id","organization_id","created_by","created_at"];AT4=J81.object({id:J81.string().describe("ID of the connection to update"),data:TX0.describe("Partial connection data to update")}),TT4=J81.object({item:WX.describe("The updated connection entity")});K81=m({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:AT4,outputSchema:TT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)throw Error("User ID required to update connection");let{id:Y}=$,G=zT4($.data),J=G.configuration_state!==void 0||G.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==X.id)throw Error("Connection not found in organization");let W=G.connection_type??K.connection_type,H=PT4(G,K.connection_url);if(W==="VIRTUAL"){let f=Vy(H);if(!f)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let y=await Z.storage.virtualMcps.findById(f);if(!y)throw Error(`Virtual MCP not found: ${f}`);if(y.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");H=ky(f)}let F=G.configuration_state??K.configuration_state??{},U=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)U=G.configuration_scopes??[];if(U.length>0){let f=F;mo(f,U,X.id),await no(f,U,X.id,Z)}}if(W==="STDIO"&&!o0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let N=G.connection_token??K.connection_token;if(!N)try{let y=await new X5(Z.db,Z.vault).get(Y);if(y?.accessToken)N=y.accessToken}catch{}let B=await LL({id:K.id,title:G.title??K.title,connection_type:W,connection_url:H,connection_token:N,connection_headers:G.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,w=!1;if(G.configuration_scopes===void 0&&B?.scopes?.length)w=!RT4(U,B.scopes),U=B.scopes;if(mo(F,U,X.id),w&&U.length>0)await no(F,U,X.id,Z);let D=J||w,E=D?io(F,U):[],j=D?io(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:X.id,subjectConnectionId:Y,createdBy:Q,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:U,updated_by:Q},S={...K,...M};if(D)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:E}),E.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:X.id,subjectConnectionId:Y})){let{plaintextToken:y,record:o}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:Y});I=o.id,P={baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:Y,token:y}}}}catch(f){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});throw await q(),f}if(D&&F&&U)try{await(await q5(S,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:U,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:X.id,subjectConnectionId:Y,tokenId:I});if(E.length>0)throw await q(),f}let d;try{d=await Z.storage.connections.update(Y,M)}catch(f){if(D){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});await q()}throw f}if(O)j9()?.set("tools",Y,O).catch(()=>{});return fh(Y),{item:d}}})});import{z as IT4}from"zod";var qT4,W81;var KB8=L(()=>{v3();l4();m0();DG();Yr();nW();qT4=so.extend({force:IT4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),W81=m({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:qT4,outputSchema:eo(WX),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q)throw Error(`Connection not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error("Connection not found in organization");if(Q.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let G=await Z.storage.virtualMcps.listByConnectionId(X.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(X.id);if(J?.registry_config){let{registries:W,blockedMcps:H}=J.registry_config;if($.id in W){let{[$.id]:F,...U}=W;await Z.storage.organizationSettings.upsert(X.id,{registry_config:{registries:U,blockedMcps:H}})}}j9()?.invalidate($.id).catch(()=>{}),fh($.id);let K=w1(Z);if(K)n1.capture({distinctId:K,event:"connection_deleted",groups:{organization:X.id},properties:{connection_id:Q.id,connection_type:Q.connection_type,app_name:Q.app_name??null,organization_id:X.id,forced:$.force??!1}});return{item:Q}}})});import{z as bh}from"zod";var H81;var WB8=L(()=>{m0();H81=m({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:bh.object({id:bh.string()}),outputSchema:bh.object({id:bh.string(),healthy:bh.boolean(),latencyMs:bh.number()}),handler:async($,Z)=>{let X=X0(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var HB8=L(()=>{HN8();sN8();eN8();JB8();KB8();WB8()});import{sql as d4}from"kysely";import{z as EH}from"zod";function FB8($){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 kT4($,Z){let X=$;for(let Y=Z.length;Y>=1;Y--){let G=`$${Y}`;if(X.includes(G))X=X.replaceAll(G,FB8(Z[Y-1]))}let Q=[];for(let Y=0;Y<X.length;Y++)if(X[Y]==="?")Q.push(Y);for(let Y=Math.min(Q.length,Z.length)-1;Y>=0;Y--){let G=Q[Y],J=FB8(Z[Y]);X=X.slice(0,G)+J+X.slice(G+1)}return X}function UB8($){return $.replace(/-/g,"_")}function CT4($){return`app_${UB8($)}`}function _T4($){return`app_role_${UB8($)}`}function vT4($){if($ instanceof Error){let Z=$.message.toLowerCase(),X=$.code;return X==="3F000"||X==="42704"||X==="22023"||Z.includes("schema")&&Z.includes("does not exist")||Z.includes("role")&&Z.includes("does not exist")}return!1}async function xT4($,Z,X){if(await d4`CREATE SCHEMA IF NOT EXISTS ${d4.id(Z)}`.execute($),!(await d4`
|
|
2234
2234
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${X}) as exists
|
|
2235
|
-
`.execute($)).rows[0]?.exists)await d4`CREATE ROLE ${d4.id(X)} NOLOGIN`.execute($);await d4`GRANT ${d4.id(X)} TO CURRENT_USER`.execute($),await d4`GRANT USAGE, CREATE ON SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`GRANT ALL ON ALL TABLES IN SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${d4.id(Z)} GRANT ALL ON TABLES TO ${d4.id(X)}`.execute($),await d4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${d4.id(Z)} GRANT ALL ON SEQUENCES TO ${d4.id(X)}`.execute($),await d4`REVOKE ALL ON SCHEMA public FROM ${d4.id(X)}`.execute($)}async function fT4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await d4`SET LOCAL ROLE ${d4.id(X)}`.execute(Y),await d4`SET LOCAL search_path TO ${d4.id(Z)}`.execute(Y),await d4.raw(Q).execute(Y)})}catch(Y){if(vT4(Y))return await xT4($,Z,X),await $.transaction().execute(async(G)=>{return await d4`SET LOCAL ROLE ${d4.id(X)}`.execute(G),await d4`SET LOCAL search_path TO ${d4.id(Z)}`.execute(G),await d4.raw(Q).execute(G)});throw Y}}var VT4,ST4,NB8;var BB8=L(()=>{m0();VT4=EH.object({results:EH.array(EH.unknown()).optional(),success:EH.boolean().optional()});ST4=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()});NB8=m({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:ST4,outputSchema:EH.object({result:EH.array(VT4)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=kT4($.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 Q=CT4(Z.connectionId),Y=_T4(Z.connectionId);return{result:[{results:(await fT4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function XJ0($){let Z=$.access.getRole();if(!M3(Z))throw new MU("Only organization owners and admins can change org-wide pin status")}var F81=L(()=>{V3();fj()});async function QJ0($,Z,X){let Q=[...new Set(X)],Y=await Promise.all(Q.map((J)=>$.storage.connections.findById(J,Z))),G=Q.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function yU($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function YJ0($){let Z=2166136261;for(let X=0;X<$.length;X++)Z=Math.imul(Z^$.charCodeAt(X),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function Gr($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function Jr($,Z){if(!Z)return $;let X=`${YJ0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function yT4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var yh;var OB8=L(()=>{aW();yh=class yh extends $Z{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 X of Object.keys($)){let Q=YJ0(X);if(this.slugToKey.has(Q))throw Error(`GatewayClient: duplicate namespace code "${Q}" from keys "${this.slugToKey.get(Q)}" and "${X}"`);this.slugToKey.set(Q,X)}}namespace($,Z){return`${YJ0($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{tools:X}=await this.listTools();for(let Q of X){let Y=Gr(Q._meta);if(!Y)continue;if(Jr(Q.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 Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{prompts:X}=await this.listPrompts();for(let Q of X){let Y=Gr(Q._meta);if(!Y)continue;if(Jr(Q.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 X=this.clients[$];if(!X)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Q=X.client,Y;try{Y=typeof Q==="function"?Promise.resolve(Q()):Promise.resolve(Q)}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,X){try{let Q=await this.resolveClient($);return await Z(Q)}catch(Q){return console.warn(`GatewayClient: skipping ${X} from client "${$}" \u2014 ${Q?.message??Q}`),[]}}async paginate($,Z,X){let Q=[],Y,G=0;do{let J=await X(Y);Q.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<yh.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${yh.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Q}fetchAllTools($,Z){return this.paginate(Z,"tools",async(X)=>{let Q=await $.listTools(X?{cursor:X}:void 0);return{items:Q.tools,nextCursor:Q.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(X)=>{let Q=await $.listResources(X?{cursor:X}:void 0);return{items:Q.resources,nextCursor:Q.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(X)=>{let Q=await $.listResourceTemplates(X?{cursor:X}:void 0);return{items:Q.resourceTemplates,nextCursor:Q.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(X)=>{let Q=await $.listPrompts(X?{cursor:X}:void 0);return{items:Q.prompts,nextCursor:Q.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=X.tools,G=Y?new Set(Y):null;for(let J of Q){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=[],X=new Map;for(let[Q,Y]of Object.entries(this.clients)){let G=await this.listFromClient(Q,(W)=>this.fetchAllResources(W,Q),"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 "${Q}" \u2014 skipping`);continue}$.add(W.uri),X.set(W.uri,Q),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:Q}})}}return this.resourceRouteMap=X,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[X,Q]of Object.entries(this.clients)){let Y=await this.listFromClient(X,(G)=>this.fetchAllResourceTemplates(G,X),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=X.prompts,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??yT4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,X){let[Q,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(Q)).callTool({...$,name:Y},Z,X)}async readResource($,Z){let X=await this.resolveResourceRoute($.uri);return(await this.resolveClient(X)).readResource($)}async getPrompt($,Z){let[X,Q]=await this.resolvePromptTarget($.name);return(await this.resolveClient(X)).getPrompt({...$,name:Q})}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((X)=>X.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var GJ0=L(()=>{OB8()});function N81($){return yU($)}function hT4($,Z){let X=yU(Z)||"prompt";return`${String($).padStart(gT4,"0")}-${X}`}async function B81($,Z,X){try{await $.delete(JJ0,N81(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function KJ0($,Z,X,Q){let Y=N81(Z);await B81($,Z,X),await Promise.all(Q.slice(0,U81).map(async(G,J)=>{let K=hT4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(JJ0,`${Y}/${K}.json`,JSON.stringify(W),{actor:X,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function LB8($,Z){let X=N81(Z),Q;try{Q=await $.listDir(JJ0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,U81),G=[];for(let J of Y)try{let K=await $.read(JJ0,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 JJ0="agent-prompts",U81=20,gT4;var Kr=L(()=>{GJ0();gT4=String(U81-1).length});import{z as EB8}from"zod";function uT4(){let $=wB8[Math.floor(Math.random()*wB8.length)];return`icon://${DB8[Math.floor(Math.random()*DB8.length)]}?color=${$}`}var wB8,DB8,cT4,lT4,O81;var jB8=L(()=>{m0();DL();F81();Kr();wB8=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],DB8=["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"];cT4=EB8.object({data:qX0.describe("Data for the new virtual MCP")}),lT4=EB8.object({item:HX.describe("The created virtual MCP entity")}),O81=m({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:cT4,outputSchema:lT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)XJ0(Z);let{prompts:Y,...G}=$.data;if(G.connections.length>0)await QJ0(Z,X.id,G.connections.map((W)=>W.connection_id));let J={...G,icon:G.icon??uT4()},K=await Z.storage.virtualMcps.create(X.id,Q,J);if(Y?.length&&Z.orgFs&&K.id)await KJ0(Z.orgFs,K.id,Q,Y);return{item:K}}})});function dT4($){let Z=[],X=0;while(X<$.length){let Q=$[X];if(Q==="%")Z.push(".*");else if(Q==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Q))Z.push("\\"+Q);else Z.push(Q);X++}return Z.join("")}function IL($){return typeof $==="string"||typeof $==="number"}function L81($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function mT4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function WJ0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>WJ0($,H));case"or":return W.some((H)=>WJ0($,H));case"not":return!W.every((H)=>WJ0($,H));default:return!0}}let{field:X,operator:Q,value:Y}=Z,G=X.join(".");if(G==="connection_id"){if(Q!=="eq"||typeof Y!=="string")return!1;return mT4($,Y)}let J=L81($,G);switch(Q){case"eq":return J===Y;case"gt":return IL(J)&&IL(Y)&&J>Y;case"gte":return IL(J)&&IL(Y)&&J>=Y;case"lt":return IL(J)&&IL(Y)&&J<Y;case"lte":return IL(J)&&IL(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=dT4(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 iT4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=L81(X,G),K=L81(Q,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 nT4,pT4,w81;var zB8=L(()=>{v3();m0();DL();nT4=jK,pT4=fU(HX),w81=m({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:nT4,outputSchema:pT4,handler:async($,Z)=>{await Z.access.check();let X=X0(Z),Q=$.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=Q?await Z.storage.virtualMcps.listByConnectionId(X.id,Q):await Z.storage.virtualMcps.list(X.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((N)=>WJ0(N,$.where));if($.orderBy&&$.orderBy.length>0)J=iT4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),U=W+H<K;return{items:F,totalCount:K,hasMore:U}}})});import{z as D81}from"zod";var tT4,oT4,E81;var PB8=L(()=>{m0();DL();tT4=D81.object({id:D81.string().describe("ID of the virtual MCP to retrieve")}),oT4=D81.object({item:HX.nullable().describe("The retrieved virtual MCP, or null if not found")}),E81=m({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:tT4,outputSchema:oT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=await Z.storage.virtualMcps.findById($.id);if(Q&&Q.organization_id!==X.id)return{item:null};if(!Q)return{item:null};return{item:Q}}})});function b3($){return j81.test($)}function AB8($){let Z=(X)=>typeof X==="string"?X.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var j81;var qL=L(()=>{j81=/^[a-z0-9][a-z0-9-]{0,59}$/});function TB8($){let{nextTitle:Z,currentTitle:X,currentSiteSlug:Q}=$;if(Q?.trim())return null;if(Z===void 0||Z===X)return null;let Y=X?.trim().toLowerCase()??"";return b3(Y)?Y:null}var RB8=L(()=>{qL()});import{z as z81}from"zod";var rT4,aT4,P81;var IB8=L(()=>{m0();Kr();DL();F81();RB8();rT4=z81.object({id:z81.string().describe("ID of the virtual MCP to update"),data:MX0.describe("Partial virtual MCP data to update")}),aT4=z81.object({item:HX.describe("The updated virtual MCP entity")}),P81=m({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:rT4,outputSchema:aT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)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!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,...J}=$.data;if(J.metadata&&Y.metadata)J.metadata={...Y.metadata,...J.metadata};let K=TB8({nextTitle:J.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(K)J.metadata={...Y.metadata,...J.metadata,siteSlug:K};if(J.pinned!==void 0&&J.pinned!==Y.pinned)XJ0(Z);if(J.connections?.length)await QJ0(Z,X.id,J.connections.map((H)=>H.connection_id));let W=await Z.storage.virtualMcps.update($.id,Q,J);if(G!==void 0&&Z.orgFs)await KJ0(Z.orgFs,$.id,Q,G);return{item:W}}})});function sT4($){if(!$)return!1;let Z=T81.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function MB8($){let Z={...$};for(let X of T81)Z[X]="read";return Z}async function VB8($,Z){let X={...Z};for(;;){let Q=await $(X);if(!Q.isError)return{result:Q,grantedPermissions:X};let Y=Q.content?.find((W)=>W.type==="text")?.text,G=T81.find((W)=>(W in X));if(!G||!sT4(Y))return{result:Q,grantedPermissions:X};let{[G]:J,...K}=X;X=K}}function eT4($){if(!$||typeof $!=="object"||Array.isArray($))return qB8;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return qB8;return Z}function $24($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function c5($){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 X=$24(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:eT4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Gz($){return $.metadata?.orgShared===!0}function kB8($){let Z=new Set,X=[];for(let Q of $??[]){if(Q.status!=="active")continue;let Y=c5(Q);if(Y===null)continue;let G=A81(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),X.push(`${Y.owner}/${Y.repo}`)}return X}function HJ0($,Z,X){let Q=A81(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=c5(G);return J!==null&&A81(J.owner,J.repo)===Q});return Y.find(Gz)??Y[0]??null}var qB8,T81,A81=($,Z)=>`${$}/${Z}`.toLowerCase();var KY=L(()=>{qB8={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},T81=["deployments","checks"]});function SB8($){return A3($)!==null||rQ0($)!==null}var CB8=L(()=>{c6()});import{z as R81}from"zod";var Z24,X24,I81;var _B8=L(()=>{KY();f3();m0();Kr();DL();CB8();Z24=R81.object({id:R81.string().describe("ID of the virtual MCP to delete")}),X24=R81.object({item:HX.describe("The deleted virtual MCP entity")}),I81=m({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:Z24,outputSchema:X24,handler:async($,Z)=>{G0(Z);let X=X0(Z);if(await Z.access.check(),SB8($.id))throw Error(`Virtual MCP not found: ${$.id}`);let Q=await Z.storage.virtualMcps.findById($.id);if(!Q)throw Error(`Virtual MCP not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(X.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(X.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 B81(Z.orgFs,$.id,w1(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(Gz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&c5(G)&&!J){let W=await new X5(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:Q}}})});import{z as WY}from"zod";var Q24,q81;var vB8=L(()=>{m0();Q24=WY.object({id:WY.string(),virtualMcpId:WY.string(),pluginId:WY.string(),connectionId:WY.string().nullable(),settings:WY.record(WY.string(),WY.unknown()).nullable(),createdAt:WY.string(),updatedAt:WY.string()}),q81=m({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:WY.object({virtualMcpId:WY.string().describe("Virtual MCP ID"),pluginId:WY.string().describe("Plugin ID")}),outputSchema:WY.object({config:Q24.nullable()}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y}=$,G=await Z.storage.connections.findById(Q);if(!G||G.organization_id!==X.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(Q,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 $7}from"zod";var Y24,M81;var xB8=L(()=>{m0();vh();x9();Y24=$7.object({id:$7.string(),virtualMcpId:$7.string(),pluginId:$7.string(),connectionId:$7.string().nullable(),settings:$7.record($7.string(),$7.unknown()).nullable(),createdAt:$7.string(),updatedAt:$7.string()}),M81=m({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:$7.object({virtualMcpId:$7.string().describe("Virtual MCP ID"),pluginId:$7.string().describe("Plugin ID"),connectionId:$7.string().nullable().optional().describe("MCP connection to bind"),settings:$7.record($7.string(),$7.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:$7.object({config:Y24}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=w1(Z),W=await Z.storage.connections.findById(Q);if(!W)throw Error(`Connection not found: ${Q}`);if(W.organization_id!==X.id)throw Error(`Connection not found: ${Q}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Q}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==X.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&x3()&&r30(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let U=_h(W.organization_id,O9());await Z.storage.connections.create({...U,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(Q,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 DQ}from"zod";var G24,V81;var fB8=L(()=>{m0();DL();G24=DQ.object({connectionId:DQ.string(),toolName:DQ.string(),label:DQ.string(),icon:DQ.string().nullable().optional()}),V81=m({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:DQ.object({virtualMcpId:DQ.string().describe("Virtual MCP ID"),pinnedViews:DQ.array(G24).describe("Pinned views to set for the virtual MCP sidebar"),layout:DQ.object({defaultMainView:DQ.object({type:DQ.string(),id:DQ.string().optional(),toolName:DQ.string().optional()}).nullable().optional(),chatDefaultOpen:DQ.boolean().nullable().optional()}).optional()}),outputSchema:DQ.object({item:HX.nullable()}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=w1(Z),K=await Z.storage.virtualMcps.findById(Q);if(!K)throw Error(`Virtual MCP not found: ${Q}`);if(K.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Q}`);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(Q,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as gU}from"zod";var J24,K24,k81;var bB8=L(()=>{m0();J24=gU.object({ids:gU.array(gU.string()).describe("Virtual MCP ids to look up")}),K24=gU.object({items:gU.array(gU.object({id:gU.string(),last_used_at:gU.string().optional(),last_used_by:gU.string().optional()}))}),k81=m({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:J24,outputSchema:K24,handler:async($,Z)=>{G0(Z),X0(Z),await Z.access.check();let X=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((Q)=>({id:Q,last_used_at:X.get(Q)?.last_used_at,last_used_by:X.get(Q)?.last_used_by}))}}})});var yB8=L(()=>{jB8();zB8();PB8();IB8();_B8();vB8();xB8();fB8();bB8()});import{z as DX}from"zod";var S81;var gB8=L(()=>{u$();m0();S81=m({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:DX.object({startDate:DX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:DX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:DX.array(DX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:DX.array(DX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:DX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:DX.object({cells:DX.array(DX.object({virtualMcpId:DX.string().nullable(),toolName:DX.string(),calls:DX.number(),errors:DX.number(),outputSize:DX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=X0(Z);return await Z.access.check(),await iQ(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:X.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 M5}from"zod";var C81;var hB8=L(()=>{u$();m0();C81=m({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:M5.object({id:M5.string().describe("Log ID to fetch")}),outputSchema:M5.object({log:M5.object({id:M5.string().optional(),organizationId:M5.string(),connectionId:M5.string(),toolName:M5.string(),input:M5.record(M5.string(),M5.unknown()),output:M5.record(M5.string(),M5.unknown()),isError:M5.boolean(),errorMessage:M5.string().nullish(),durationMs:M5.number(),timestamp:M5.string(),userId:M5.string().nullish(),requestId:M5.string(),userAgent:M5.string().nullish(),virtualMcpId:M5.string().nullish(),properties:M5.record(M5.string(),M5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await iQ();let X=X0(Z),Q=await Z.storage.monitoring.getById(X.id,$.id);if(!Q)return{log:null};return{log:{...Q,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp}}}})});import{z as j6}from"zod";var H24,_81;var uB8=L(()=>{u$();m0();H24=j6.object({id:j6.string().optional().describe("Unique log identifier"),organizationId:j6.string().describe("Organization ID"),connectionId:j6.string().describe("Connection ID"),toolName:j6.string().describe("Name of the tool that was called"),isError:j6.boolean().describe("Whether the call resulted in an error"),errorMessage:j6.string().nullish().describe("Error message if applicable"),durationMs:j6.number().describe("Call duration in milliseconds"),timestamp:j6.string().describe("ISO 8601 timestamp of the call"),userId:j6.string().nullish().describe("User who triggered the call"),requestId:j6.string().describe("Unique request identifier"),userAgent:j6.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:j6.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:j6.record(j6.string(),j6.string()).nullish().describe("Custom key-value metadata attached to the log")}),_81=m({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:j6.object({connectionId:j6.string().optional().describe("Filter by connection ID"),excludeConnectionIds:j6.array(j6.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:j6.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:j6.string().optional().describe("Filter by tool name"),isError:j6.boolean().optional().describe("Filter by error status"),startDate:j6.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:j6.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:j6.number().default(20).describe("Maximum number of results"),offset:j6.number().default(0).describe("Offset for pagination"),properties:j6.record(j6.string(),j6.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:j6.array(j6.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:j6.record(j6.string(),j6.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:j6.record(j6.string(),j6.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:j6.object({logs:j6.array(H24).describe("Array of monitoring logs"),total:j6.number().describe("Total number of logs matching filters"),offset:j6.number().describe("Current offset for pagination"),limit:j6.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await iQ();let X=X0(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:X.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 B8}from"zod";var v81;var cB8=L(()=>{u$();m0();v81=m({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:B8.object({startDate:B8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:B8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:B8.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:B8.array(B8.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:B8.array(B8.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:B8.array(B8.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:B8.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:B8.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:B8.array(B8.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:B8.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:B8.object({totalCalls:B8.number().describe("Total number of tool calls"),errorRate:B8.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:B8.number().describe("Average call duration in milliseconds"),errorRatePercent:B8.string().optional().describe("Error rate as a percentage string"),totalErrors:B8.number().optional().describe("Total number of errors"),p50DurationMs:B8.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:B8.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:B8.array(B8.object({connectionId:B8.string(),calls:B8.number(),errors:B8.number(),errorRate:B8.number(),avgDurationMs:B8.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:B8.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:B8.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:B8.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:B8.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:B8.array(B8.object({toolName:B8.string(),connectionId:B8.string().nullable(),calls:B8.number(),inputTokens:B8.number().optional(),outputTokens:B8.number().optional(),costUsd:B8.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:B8.array(B8.object({timestamp:B8.string(),toolName:B8.string(),calls:B8.number(),errors:B8.number(),avg:B8.number(),p95:B8.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:B8.array(B8.object({timestamp:B8.string(),calls:B8.number(),errors:B8.number(),errorRate:B8.number(),avg:B8.number(),p50:B8.number(),p95:B8.number(),inputTokens:B8.number().optional(),outputTokens:B8.number().optional(),totalTokens:B8.number().optional(),costUsd:B8.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=X0(Z);if(await Z.access.check(),await iQ(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:X.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:X.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:X.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 Q=await Z.storage.monitoring.getStats({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...Q,errorRatePercent:(Q.errorRate*100).toFixed(2)}}})});import{z as EQ}from"zod";var x81;var lB8=L(()=>{u$();m0();x81=m({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:EQ.object({threadIds:EQ.array(EQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:EQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:EQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:EQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:EQ.object({items:EQ.array(EQ.object({threadId:EQ.string(),calls:EQ.number(),inputTokens:EQ.number(),outputTokens:EQ.number(),totalTokens:EQ.number(),costUsd:EQ.number()}))}),handler:async($,Z)=>{let X=X0(Z);return await Z.access.check(),await iQ(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:X.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var dB8=L(()=>{gB8();hB8();uB8();cB8();lB8()});function FJ0($){return typeof $==="string"&&U24.has($.trim().toLowerCase())}var U24;var f81=L(()=>{U24=new Set([".well-known","_admin","api","auth","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 b81;var mB8=L(()=>{m0();f81();b81=m({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(($)=>!FJ0($),"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)=>{G0(Z),await Z.access.check();let X=w1(Z);if(!X)throw Error("User ID required to create organization");let Q=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:X});if(!Q)throw Error("Failed to create organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as jH}from"zod";var y81;var iB8=L(()=>{m0();y81=m({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(G0(Z),await Z.access.check(),!w1(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}}})});import{z as y3}from"zod";var g81;var nB8=L(()=>{m0();g81=m({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:y3.object({}),outputSchema:y3.object({id:y3.string(),name:y3.string(),slug:y3.string(),logo:y3.string().nullable().optional(),metadata:y3.any().optional(),createdAt:y3.string().datetime().describe("ISO 8601 timestamp"),members:y3.array(y3.any()).optional(),invitations:y3.array(y3.any()).optional()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as zK}from"zod";var h81;var pB8=L(()=>{m0();h81=m({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:zK.object({id:zK.string(),name:zK.string().min(1).max(255).optional(),description:zK.string().optional()}),outputSchema:zK.object({id:zK.string(),name:zK.string(),slug:zK.string(),logo:zK.string().nullable().optional(),metadata:zK.any().optional(),createdAt:zK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X={};if($.name)X.name=$.name;if($.description)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as Wr}from"zod";var u81;var tB8=L(()=>{m0();u81=m({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Wr.object({id:Wr.string()}),outputSchema:Wr.object({success:Wr.boolean(),id:Wr.string()}),handler:async($,Z)=>{return G0(Z),await Z.access.check(),await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as hU}from"zod";var c81;var oB8=L(()=>{m0();BQ();c81=m({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:hU.object({}),outputSchema:hU.object({organizationId:hU.string(),sidebar_items:hU.array(Eo).nullable().optional(),enabled_plugins:hU.array(hU.string()).nullable().optional(),registry_config:jo.nullable().optional(),simple_mode:zo.nullable().optional(),default_home_agents:Ao.nullable().optional(),flags:Ro.nullable().optional(),main_agent_id:hU.string().nullable().optional(),sprint_config:To.nullable().optional(),createdAt:hU.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:hU.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.organizationSettings.get(X);if(!Q)return{organizationId:X};return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as HY}from"zod";var l81;var rB8=L(()=>{m0();BQ();l81=m({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:HY.object({organizationId:HY.string(),sidebar_items:HY.array(Eo).optional(),enabled_plugins:HY.array(HY.string()).optional(),registry_config:jo.optional(),simple_mode:zo.optional(),default_home_agents:Ao.optional(),flags:Ro.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:HY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear."),sprint_config:To.optional().describe("Task board sprint cadence. Replaced whole (not merged), so pass all three fields.")}),outputSchema:HY.object({organizationId:HY.string(),sidebar_items:HY.array(Eo).nullable().optional(),enabled_plugins:HY.array(HY.string()).nullable().optional(),registry_config:jo.nullable().optional(),simple_mode:zo.nullable().optional(),default_home_agents:Ao.nullable().optional(),flags:Ro.nullable().optional(),main_agent_id:HY.string().nullable().optional(),sprint_config:To.nullable().optional(),createdAt:HY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:HY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(G0(Z),await Z.access.check(),X0(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let Q=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,sprint_config:$.sprint_config});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as PK}from"zod";var aB8,d81,m81;var sB8=L(()=>{m0();BQ();aB8=HL.extend({organizationId:PK.string(),archivedAt:PK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:PK.string().describe("ISO 8601 timestamp"),updatedAt:PK.string().describe("ISO 8601 timestamp")}),d81=m({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:PK.object({includeArchived:PK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:PK.object({items:PK.array(aB8)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X,{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}))}}}),m81=m({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:PK.object({id:PK.string().describe("Brand context ID")}),outputSchema:aB8.extend({organizationId:PK.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.get($.id,X);if(!Q)throw Error("Brand context not found");return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as Jz}from"zod";var eB8,i81,n81,p81;var $O8=L(()=>{m0();BQ();eB8=HL.extend({organizationId:Jz.string(),createdAt:Jz.string().describe("ISO 8601 timestamp"),updatedAt:Jz.string().describe("ISO 8601 timestamp")}),i81=m({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:HL.omit({id:!0}),outputSchema:eB8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.create(X,{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{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}),n81=m({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:HL.partial().required({id:!0}),outputSchema:eB8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,X);let J=await Z.storage.brandContext.update(Y,X,{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=m({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:Jz.object({id:Jz.string().describe("Brand context ID")}),outputSchema:Jz.object({success:Jz.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,X,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function UJ0($,Z,X){let Q=$.trim();if(!Q.startsWith("http"))Q=`https://${Q}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:Q,formats:["branding"]})});if(!Y.ok){let N=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${N.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=O24(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((N)=>N.trim()).filter(Boolean)?.slice().sort((N,B)=>N.length-B.length)[0]??K.ogSiteName??X??$,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 O24($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[F,U]of Object.entries(Q))if(typeof U==="string"&&U&&N24.has(F))Y[F]=U;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,U]of Object.entries(K))if(typeof U==="string"&&U){let N=B24[F.toLowerCase()];if(N&&!G[N])G[N]=U}let W=$.fonts;if(Array.isArray(W))for(let F of W){let U=F.family;if(typeof U==="string"&&U&&!G.body)G.body=U}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:X.logo??null,favicon:X.favicon??null,ogImage:X.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var N24,B24;var t81=L(()=>{N24=new Set(["primary","secondary","accent","background","foreground"]),B24={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as NJ0}from"zod";var L24,o81;var ZO8=L(()=>{m0();t81();BQ();L24=HL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:NJ0.boolean()}),o81=m({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:NJ0.object({domain:NJ0.string().describe("Website domain to extract brand from"),brandId:NJ0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:L24,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)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=Z.firecrawlApiKey;if(!Q)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await UJ0($.domain,Q,$.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,X))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,X,G)})():await Z.storage.brandContext.create(X,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 XO8($){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 X=Object.fromEntries(Object.entries(Z).filter(([Q])=>Q!=="tagline"&&Q!=="tone"));return Object.keys(X).length>0?X:void 0})()}}var r81,a81;var QO8=L(()=>{s11();m0();r81=m({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:d30,outputSchema:oo,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.id?await Z.storage.brandContext.get($.id,X):await Z.storage.brandContext.getDefault(X);if(!Q)throw Error($.id?"Brand not found":"No default brand configured");return XO8(Q)}}),a81=m({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:m30,outputSchema:i30,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X)).map(XO8)}}})});import{resolveTxt as w24}from"dns/promises";function s81($){return`${D24}.${$.toLowerCase()}`}function YO8(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function GO8($,Z,X=w24){if(!Z)return!1;try{return(await X(s81($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var D24="_deco-verify";var JO8=()=>{};import{z as l5}from"zod";function ML($){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?s81($.domain):null,recordValue:Z?$.verificationToken:null}}function j24($){let Z=$.toLowerCase().trim();if(!E24.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(AK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var E24,e81,BJ0,$61,Z61,X61,Q61,Y61;var KO8=L(()=>{jG();JO8();m0();E24=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,e81=l5.enum(["off","auto","request"]),BJ0=l5.object({id:l5.string(),domain:l5.string(),joinMode:e81,verificationStatus:l5.enum(["pending","verified"]),verificationMethod:l5.enum(["email","dns"]).nullable(),verifiedAt:l5.string().nullable(),recordName:l5.string().nullable(),recordValue:l5.string().nullable()});$61=m({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:l5.object({}),outputSchema:l5.object({domains:l5.array(BJ0)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(ML)}}}),Z61=m({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:l5.object({domain:l5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:e81.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:BJ0,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=j24($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===Q,K=await Z.storage.organizationDomains.getByOrgAndDomain(X.id,Q);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return ML(H)}return ML(K)}let W=J?await Z.storage.organizationDomains.add(X.id,Q,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(X.id,Q,{joinMode:"off",verificationStatus:"pending",verificationToken:YO8()});return ML(W)}}),X61=m({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:l5.object({id:l5.string(),joinMode:e81}),outputSchema:BJ0,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if($.joinMode!=="off"&&Q.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return ML(Y)}}),Q61=m({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:l5.object({id:l5.string()}),outputSchema:l5.object({verified:l5.boolean(),domain:BJ0}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if(Q.verificationStatus==="verified")return{verified:!0,domain:ML(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await GO8(Q.domain,Q.verificationToken))return{verified:!1,domain:ML(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:ML(G)}}}),Y61=m({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:l5.object({id:l5.string()}),outputSchema:l5.object({success:l5.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function VL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as h9}from"zod";var z24,G61,J61,K61;var WO8=L(()=>{m0();l4();z24=h9.object({id:h9.string(),userId:h9.string(),status:h9.enum(["pending","approved","denied"]),createdAt:h9.string(),user:h9.object({id:h9.string(),name:h9.string(),email:h9.string(),image:h9.string().nullable()}).nullable()}),G61=m({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:h9.object({}),outputSchema:h9.object({requests:h9.array(z24)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(X.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),J61=m({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:h9.object({requestId:h9.string()}),outputSchema:h9.object({success:h9.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=w1(Z);if(!await Z.storage.organizationJoinRequests.decide(Q.id,"approved",Y??Q.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:X.id,userId:Q.userId,role:["user"]})}catch(J){if(!VL(J))throw J}if(Y)n1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),K61=m({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:h9.object({requestId:h9.string()}),outputSchema:h9.object({success:h9.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=w1(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)n1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as FY}from"zod";var W61;var HO8=L(()=>{l4();m0();V3();W61=m({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:FY.object({organizationId:FY.string().optional(),userId:FY.string(),role:FY.array(FY.string())}),outputSchema:FY.object({id:FY.string(),organizationId:FY.string(),userId:FY.string(),role:FY.union([FY.string(),FY.array(FY.string())]),createdAt:FY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",w1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!jG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:X,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=w1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as gh}from"zod";var H61;var FO8=L(()=>{l4();m0();H61=m({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:gh.object({organizationId:gh.string().optional(),memberIdOrEmail:gh.string()}),outputSchema:gh.object({success:gh.boolean(),memberIdOrEmail:gh.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.removeMember({organizationId:X,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(Q.member.userId,X);let Y=w1(Z);if(Y)n1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as EX}from"zod";var F61;var UO8=L(()=>{m0();F61=m({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:EX.object({limit:EX.number().optional(),offset:EX.number().optional()}),outputSchema:EX.object({members:EX.array(EX.object({id:EX.string(),organizationId:EX.string(),userId:EX.string(),role:EX.string(),createdAt:EX.string().datetime().describe("ISO 8601 timestamp"),user:EX.object({id:EX.string(),name:EX.string(),email:EX.string(),image:EX.string().optional()}).optional()}))}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:X,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as Z7}from"zod";var U61;var NO8=L(()=>{l4();m0();V3();U61=m({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:Z7.object({organizationId:Z7.string().optional(),memberId:Z7.string(),role:Z7.array(Z7.string())}),outputSchema:Z7.object({id:Z7.string(),organizationId:Z7.string(),userId:Z7.string(),role:Z7.union([Z7.string(),Z7.array(Z7.string())]),createdAt:Z7.string().datetime().describe("ISO 8601 timestamp"),user:Z7.object({email:Z7.string(),name:Z7.string(),image:Z7.string().optional()})}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",w1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!jG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:X,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,X);let G=w1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,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 BO8(){if(Hr&&Date.now()-Hr.fetchedAt<600000)return Hr.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),X=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(X)||X<=0)throw Error("Invalid rate");return Hr={rate:X,fetchedAt:Date.now()},X}catch{return Hr?.rate??5.5}}function OO8($,Z,X){if(Z==="brl")return Math.round($/X);return $}var Hr=null;function N61($,Z="",X=new URLSearchParams){for(let[Q,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${Q}]`:Q;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)N61(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")N61(Y,G,X);else X.append(G,String(Y))}return X}async function Fr($,Z){let X=o0().stripeSecretKey;if(!X)throw new zG(503,"billing is not configured");let Q=Z?.params?N61(Z.params).toString():void 0,Y=await fetch(`${P24}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout(A24)}),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 LO8($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function wO8($){let Z=o0().stripeOrgPriceId;if(!Z)throw new zG(503,"billing is not configured");let X=await Fr("/checkout/sessions",{params:{mode:"subscription",...LO8(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!X.url)throw new zG(500,"checkout session lacks url");return{url:X.url}}function T24($,Z){return Math.round($*(1+Z/100))}async function DO8($){let Z=T24($.amountCents,$.feePercent),X=OO8($.amountCents,$.currency,await BO8()),Q=o0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:X},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await Fr("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...LO8($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...Q?{product:Q}:{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 OJ0($){let Z=await Fr("/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 LJ0($){return Fr(`/subscriptions/${encodeURIComponent($)}`)}async function EO8($){await Fr(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var P24="https://api.stripe.com/v1",zG,A24=15000;var Kz=L(()=>{_8();zG=class zG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as B61}from"zod";var O61;var jO8=L(()=>{Kz();x9();m0();l4();O61=m({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:B61.object({}),outputSchema:B61.object({url:B61.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id,Q=Z.organization?.slug;if(!X||!Q)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(X);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=`${iZ()}/${encodeURIComponent(Q)}/members`,{url:J}=await wO8({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return OG({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as L61}from"zod";var w61;var zO8=L(()=>{Kz();x9();m0();w61=m({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:L61.object({}),outputSchema:L61.object({url:L61.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);if(!X.slug)throw Error("Organization context required");let Q=await Z.storage.organizationBilling.getBilling(X.id);if(!Q?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await OJ0({customerId:Q.stripeCustomerId,returnUrl:`${iZ()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof zG)throw Error(Y.message);throw Y}}})});function wJ0($){return D61[$%D61.length]??R24}function UY($){return $.createdBy==="system"}function uU($){return DJ0.filter((Z)=>X30($,I24[Z]))}function uh($,Z){return $?.startsWith(`${hh[Z]}:`)??!1}function cU($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function E61($,Z){let X=cU($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function kL($,Z,X){if(Z.length===0)return!1;let Q=E61($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function AO8($,Z){return kL($,Z)&&!kL($,Z,{verifiedOnly:!0})}function TO8($){let Z=null;for(let X of $){if(X.action!=="review_approved"&&X.action!=="review_changes_requested")continue;let Q=new Date(X.occurredAt).getTime();if(Z&&Q<Z.at)continue;let Y=X.data?.notes;Z={at:Q,notes:X.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}function q24($){let Z=0;for(let X of $){if(X.action!=="assignee_changed")continue;if(X.data?.to!==C6)continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function RO8($,Z=j61){let X=q24($),Q=new Set,Y=0;for(let G of[...$].sort((J,K)=>J.occurredAt.localeCompare(K.occurredAt))){let J=new Date(G.occurredAt).getTime();if(G.action==="status_changed"){if(G.data?.to==="in_review")Y=J;continue}if(G.action==="review_changes_requested"&&J>=X)Q.add(Y)}return Q.size+1>=Z}var C6="super-agent",D61,R24,Ur='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.',PO8,DJ0,hh,I24,j61=5,IO8="task-board.item.updated",qO8="task-board.item.deleted";var z9=L(()=>{BQ();D61=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],R24=D61[0];PO8="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.",DJ0=["qa","code_review"],hh={qa:"QA Agent",code_review:"Code Reviewer"},I24={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function z61($){return $==="trial"?"trial":"subscription"}function Nr($,Z,X,Q={}){OG({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function P61($){return $?.status==="active"||$?.status==="past_due"}function EJ0($,Z){if(P61($))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 Br(){let $=o0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function SL(){return{...Br(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function ch($,Z,X=Br()){if(!X.enforced||!UY(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Nr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new jX("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=EJ0(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Nr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:z61(G.periodKey),limit:G.limit}),new jX(G.exhaustedReason)}async function MO8($,Z,X=Br()){if(!X.enforced||!UY(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=EJ0(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Nr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:z61(Y.periodKey),limit:Y.limit}),new jX(Y.exhaustedReason);if(G==="runs_exhausted")throw Nr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new jX("runs_exhausted");if(G==="claimed")Nr($,"task_quota_claimed",Z,{billing_mode:z61(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function VO8($,Z,X,Q){if(Q==="skipped")return;await $.rollbackTaskClaim(Z,X,{releaseSlot:Q==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function kO8($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function SO8($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))OG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var M24="[SUBSCRIPTION_REQUIRED]",V24,jX;var g3=L(()=>{z9();l4();_8();V24={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"};jX=class jX extends Error{reason;constructor($){super(`${M24} ${V24[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as lU}from"zod";var A61;var CO8=L(()=>{m0();g3();A61=m({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:lU.object({}),outputSchema:lU.object({enforced:lU.boolean(),billingStatus:lU.string(),subscribed:lU.boolean(),hasBillingAccount:lU.boolean(),used:lU.number(),limit:lU.number(),currentPeriodEnd:lU.string().datetime().nullable()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=Br(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=EJ0(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:P61(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var _O8=L(()=>{mB8();iB8();nB8();pB8();tB8();oB8();rB8();sB8();$O8();ZO8();QO8();KO8();WO8();HO8();FO8();UO8();NO8();jO8();zO8();CO8()});function zH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function jJ0($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(jJ0);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||jJ0(X)));return!1}function T61($){return Array.isArray($)&&$.every(jJ0)}function Or($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||jJ0(X)))}var KL8="vercel.ai.error",S24,vO8,xO8,E1,WL8="AI_APICallError",HL8,C24,fO8,bO8,w4,FL8="AI_EmptyResponseBodyError",UL8,_24,yO8,gO8,zJ0,NL8="AI_InvalidArgumentError",BL8,v24,hO8,uO8,CL,OL8="AI_InvalidPromptError",LL8,x24,cO8,lO8,h3,wL8="AI_InvalidResponseDataError",DL8,f24,dO8,mO8,lh,EL8="AI_JSONParseError",jL8,b24,iO8,nO8,dU,zL8="AI_LoadAPIKeyError",PL8,y24,pO8,tO8,Wz,AL8="AI_LoadSettingError",TL8,g24,oO8,rO8,RL8,IL8="AI_NoContentGeneratedError",qL8,h24,aO8,sO8,ML8,VL8="AI_NoSuchModelError",kL8,u24,eO8,$L8,Z9,SL8="AI_TooManyEmbeddingValuesForCallError",CL8,c24,ZL8,XL8,dh,_L8="AI_TypeValidationError",vL8,l24,QL8,YL8,V5,xL8="AI_UnsupportedFunctionalityError",fL8,d24,GL8,JL8,m4;var Y8=L(()=>{S24=Symbol.for(KL8),E1=class $ extends(xO8=Error,vO8=S24,xO8){constructor({name:Z,message:X,cause:Q}){super(X);this[vO8]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,KL8)}static hasMarker(Z,X){let Q=Symbol.for(X);return Z!=null&&typeof Z==="object"&&Q in Z&&typeof Z[Q]==="boolean"&&Z[Q]===!0}},HL8=`vercel.ai.error.${WL8}`,C24=Symbol.for(HL8),w4=class extends(bO8=E1,fO8=C24,bO8){constructor({message:$,url:Z,requestBodyValues:X,statusCode:Q,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:W}){super({name:WL8,message:$,cause:J});this[fO8]=!0,this.url=Z,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return E1.hasMarker($,HL8)}},UL8=`vercel.ai.error.${FL8}`,_24=Symbol.for(UL8),zJ0=class extends(gO8=E1,yO8=_24,gO8){constructor({message:$="Empty response body"}={}){super({name:FL8,message:$});this[yO8]=!0}static isInstance($){return E1.hasMarker($,UL8)}};BL8=`vercel.ai.error.${NL8}`,v24=Symbol.for(BL8),CL=class extends(uO8=E1,hO8=v24,uO8){constructor({message:$,cause:Z,argument:X}){super({name:NL8,message:$,cause:Z});this[hO8]=!0,this.argument=X}static isInstance($){return E1.hasMarker($,BL8)}},LL8=`vercel.ai.error.${OL8}`,x24=Symbol.for(LL8),h3=class extends(lO8=E1,cO8=x24,lO8){constructor({prompt:$,message:Z,cause:X}){super({name:OL8,message:`Invalid prompt: ${Z}`,cause:X});this[cO8]=!0,this.prompt=$}static isInstance($){return E1.hasMarker($,LL8)}},DL8=`vercel.ai.error.${wL8}`,f24=Symbol.for(DL8),lh=class extends(mO8=E1,dO8=f24,mO8){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:wL8,message:Z});this[dO8]=!0,this.data=$}static isInstance($){return E1.hasMarker($,DL8)}},jL8=`vercel.ai.error.${EL8}`,b24=Symbol.for(jL8),dU=class extends(nO8=E1,iO8=b24,nO8){constructor({text:$,cause:Z}){super({name:EL8,message:`JSON parsing failed: Text: ${$}.
|
|
2235
|
+
`.execute($)).rows[0]?.exists)await d4`CREATE ROLE ${d4.id(X)} NOLOGIN`.execute($);await d4`GRANT ${d4.id(X)} TO CURRENT_USER`.execute($),await d4`GRANT USAGE, CREATE ON SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`GRANT ALL ON ALL TABLES IN SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${d4.id(Z)} TO ${d4.id(X)}`.execute($),await d4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${d4.id(Z)} GRANT ALL ON TABLES TO ${d4.id(X)}`.execute($),await d4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${d4.id(Z)} GRANT ALL ON SEQUENCES TO ${d4.id(X)}`.execute($),await d4`REVOKE ALL ON SCHEMA public FROM ${d4.id(X)}`.execute($)}async function fT4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await d4`SET LOCAL ROLE ${d4.id(X)}`.execute(Y),await d4`SET LOCAL search_path TO ${d4.id(Z)}`.execute(Y),await d4.raw(Q).execute(Y)})}catch(Y){if(vT4(Y))return await xT4($,Z,X),await $.transaction().execute(async(G)=>{return await d4`SET LOCAL ROLE ${d4.id(X)}`.execute(G),await d4`SET LOCAL search_path TO ${d4.id(Z)}`.execute(G),await d4.raw(Q).execute(G)});throw Y}}var VT4,ST4,NB8;var BB8=L(()=>{m0();VT4=EH.object({results:EH.array(EH.unknown()).optional(),success:EH.boolean().optional()});ST4=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()});NB8=m({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:ST4,outputSchema:EH.object({result:EH.array(VT4)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=kT4($.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 Q=CT4(Z.connectionId),Y=_T4(Z.connectionId);return{result:[{results:(await fT4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function XJ0($){let Z=$.access.getRole();if(!M3(Z))throw new MU("Only organization owners and admins can change org-wide pin status")}var F81=L(()=>{V3();fj()});async function QJ0($,Z,X){let Q=[...new Set(X)],Y=await Promise.all(Q.map((J)=>$.storage.connections.findById(J,Z))),G=Q.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function yU($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function YJ0($){let Z=2166136261;for(let X=0;X<$.length;X++)Z=Math.imul(Z^$.charCodeAt(X),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function Gr($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function Jr($,Z){if(!Z)return $;let X=`${YJ0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function yT4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var yh;var OB8=L(()=>{aW();yh=class yh extends $Z{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 X of Object.keys($)){let Q=YJ0(X);if(this.slugToKey.has(Q))throw Error(`GatewayClient: duplicate namespace code "${Q}" from keys "${this.slugToKey.get(Q)}" and "${X}"`);this.slugToKey.set(Q,X)}}namespace($,Z){return`${YJ0($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{tools:X}=await this.listTools();for(let Q of X){let Y=Gr(Q._meta);if(!Y)continue;if(Jr(Q.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 Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{prompts:X}=await this.listPrompts();for(let Q of X){let Y=Gr(Q._meta);if(!Y)continue;if(Jr(Q.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 X=this.clients[$];if(!X)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Q=X.client,Y;try{Y=typeof Q==="function"?Promise.resolve(Q()):Promise.resolve(Q)}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,X){try{let Q=await this.resolveClient($);return await Z(Q)}catch(Q){return console.warn(`GatewayClient: skipping ${X} from client "${$}" \u2014 ${Q?.message??Q}`),[]}}async paginate($,Z,X){let Q=[],Y,G=0;do{let J=await X(Y);Q.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<yh.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${yh.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Q}fetchAllTools($,Z){return this.paginate(Z,"tools",async(X)=>{let Q=await $.listTools(X?{cursor:X}:void 0);return{items:Q.tools,nextCursor:Q.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(X)=>{let Q=await $.listResources(X?{cursor:X}:void 0);return{items:Q.resources,nextCursor:Q.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(X)=>{let Q=await $.listResourceTemplates(X?{cursor:X}:void 0);return{items:Q.resourceTemplates,nextCursor:Q.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(X)=>{let Q=await $.listPrompts(X?{cursor:X}:void 0);return{items:Q.prompts,nextCursor:Q.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=X.tools,G=Y?new Set(Y):null;for(let J of Q){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=[],X=new Map;for(let[Q,Y]of Object.entries(this.clients)){let G=await this.listFromClient(Q,(W)=>this.fetchAllResources(W,Q),"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 "${Q}" \u2014 skipping`);continue}$.add(W.uri),X.set(W.uri,Q),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:Q}})}}return this.resourceRouteMap=X,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[X,Q]of Object.entries(this.clients)){let Y=await this.listFromClient(X,(G)=>this.fetchAllResourceTemplates(G,X),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=X.prompts,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??yT4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,X){let[Q,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(Q)).callTool({...$,name:Y},Z,X)}async readResource($,Z){let X=await this.resolveResourceRoute($.uri);return(await this.resolveClient(X)).readResource($)}async getPrompt($,Z){let[X,Q]=await this.resolvePromptTarget($.name);return(await this.resolveClient(X)).getPrompt({...$,name:Q})}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((X)=>X.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var GJ0=L(()=>{OB8()});function N81($){return yU($)}function hT4($,Z){let X=yU(Z)||"prompt";return`${String($).padStart(gT4,"0")}-${X}`}async function B81($,Z,X){try{await $.delete(JJ0,N81(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function KJ0($,Z,X,Q){let Y=N81(Z);await B81($,Z,X),await Promise.all(Q.slice(0,U81).map(async(G,J)=>{let K=hT4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(JJ0,`${Y}/${K}.json`,JSON.stringify(W),{actor:X,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function LB8($,Z){let X=N81(Z),Q;try{Q=await $.listDir(JJ0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,U81),G=[];for(let J of Y)try{let K=await $.read(JJ0,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 JJ0="agent-prompts",U81=20,gT4;var Kr=L(()=>{GJ0();gT4=String(U81-1).length});import{z as EB8}from"zod";function uT4(){let $=wB8[Math.floor(Math.random()*wB8.length)];return`icon://${DB8[Math.floor(Math.random()*DB8.length)]}?color=${$}`}var wB8,DB8,cT4,lT4,O81;var jB8=L(()=>{m0();DL();F81();Kr();wB8=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],DB8=["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"];cT4=EB8.object({data:qX0.describe("Data for the new virtual MCP")}),lT4=EB8.object({item:HX.describe("The created virtual MCP entity")}),O81=m({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:cT4,outputSchema:lT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)XJ0(Z);let{prompts:Y,...G}=$.data;if(G.connections.length>0)await QJ0(Z,X.id,G.connections.map((W)=>W.connection_id));let J={...G,icon:G.icon??uT4()},K=await Z.storage.virtualMcps.create(X.id,Q,J);if(Y?.length&&Z.orgFs&&K.id)await KJ0(Z.orgFs,K.id,Q,Y);return{item:K}}})});function dT4($){let Z=[],X=0;while(X<$.length){let Q=$[X];if(Q==="%")Z.push(".*");else if(Q==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Q))Z.push("\\"+Q);else Z.push(Q);X++}return Z.join("")}function IL($){return typeof $==="string"||typeof $==="number"}function L81($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function mT4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function WJ0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>WJ0($,H));case"or":return W.some((H)=>WJ0($,H));case"not":return!W.every((H)=>WJ0($,H));default:return!0}}let{field:X,operator:Q,value:Y}=Z,G=X.join(".");if(G==="connection_id"){if(Q!=="eq"||typeof Y!=="string")return!1;return mT4($,Y)}let J=L81($,G);switch(Q){case"eq":return J===Y;case"gt":return IL(J)&&IL(Y)&&J>Y;case"gte":return IL(J)&&IL(Y)&&J>=Y;case"lt":return IL(J)&&IL(Y)&&J<Y;case"lte":return IL(J)&&IL(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=dT4(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 iT4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=L81(X,G),K=L81(Q,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 nT4,pT4,w81;var zB8=L(()=>{v3();m0();DL();nT4=jK,pT4=fU(HX),w81=m({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:nT4,outputSchema:pT4,handler:async($,Z)=>{await Z.access.check();let X=X0(Z),Q=$.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=Q?await Z.storage.virtualMcps.listByConnectionId(X.id,Q):await Z.storage.virtualMcps.list(X.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((N)=>WJ0(N,$.where));if($.orderBy&&$.orderBy.length>0)J=iT4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),U=W+H<K;return{items:F,totalCount:K,hasMore:U}}})});import{z as D81}from"zod";var tT4,oT4,E81;var PB8=L(()=>{m0();DL();tT4=D81.object({id:D81.string().describe("ID of the virtual MCP to retrieve")}),oT4=D81.object({item:HX.nullable().describe("The retrieved virtual MCP, or null if not found")}),E81=m({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:tT4,outputSchema:oT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=await Z.storage.virtualMcps.findById($.id);if(Q&&Q.organization_id!==X.id)return{item:null};if(!Q)return{item:null};return{item:Q}}})});function b3($){return j81.test($)}function AB8($){let Z=(X)=>typeof X==="string"?X.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var j81;var qL=L(()=>{j81=/^[a-z0-9][a-z0-9-]{0,59}$/});function TB8($){let{nextTitle:Z,currentTitle:X,currentSiteSlug:Q}=$;if(Q?.trim())return null;if(Z===void 0||Z===X)return null;let Y=X?.trim().toLowerCase()??"";return b3(Y)?Y:null}var RB8=L(()=>{qL()});import{z as z81}from"zod";var rT4,aT4,P81;var IB8=L(()=>{m0();Kr();DL();F81();RB8();rT4=z81.object({id:z81.string().describe("ID of the virtual MCP to update"),data:MX0.describe("Partial virtual MCP data to update")}),aT4=z81.object({item:HX.describe("The updated virtual MCP entity")}),P81=m({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:rT4,outputSchema:aT4,handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let Q=w1(Z);if(!Q)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!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,...J}=$.data;if(J.metadata&&Y.metadata)J.metadata={...Y.metadata,...J.metadata};let K=TB8({nextTitle:J.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(K)J.metadata={...Y.metadata,...J.metadata,siteSlug:K};if(J.pinned!==void 0&&J.pinned!==Y.pinned)XJ0(Z);if(J.connections?.length)await QJ0(Z,X.id,J.connections.map((H)=>H.connection_id));let W=await Z.storage.virtualMcps.update($.id,Q,J);if(G!==void 0&&Z.orgFs)await KJ0(Z.orgFs,$.id,Q,G);return{item:W}}})});function sT4($){if(!$)return!1;let Z=T81.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function MB8($){let Z={...$};for(let X of T81)Z[X]="read";return Z}async function VB8($,Z){let X={...Z};for(;;){let Q=await $(X);if(!Q.isError)return{result:Q,grantedPermissions:X};let Y=Q.content?.find((W)=>W.type==="text")?.text,G=T81.find((W)=>(W in X));if(!G||!sT4(Y))return{result:Q,grantedPermissions:X};let{[G]:J,...K}=X;X=K}}function eT4($){if(!$||typeof $!=="object"||Array.isArray($))return qB8;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return qB8;return Z}function $24($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function c5($){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 X=$24(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:eT4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Gz($){return $.metadata?.orgShared===!0}function kB8($){let Z=new Set,X=[];for(let Q of $??[]){if(Q.status!=="active")continue;let Y=c5(Q);if(Y===null)continue;let G=A81(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),X.push(`${Y.owner}/${Y.repo}`)}return X}function HJ0($,Z,X){let Q=A81(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=c5(G);return J!==null&&A81(J.owner,J.repo)===Q});return Y.find(Gz)??Y[0]??null}var qB8,T81,A81=($,Z)=>`${$}/${Z}`.toLowerCase();var KY=L(()=>{qB8={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},T81=["deployments","checks"]});function SB8($){return A3($)!==null||rQ0($)!==null}var CB8=L(()=>{c6()});import{z as R81}from"zod";var Z24,X24,I81;var _B8=L(()=>{KY();f3();m0();Kr();DL();CB8();Z24=R81.object({id:R81.string().describe("ID of the virtual MCP to delete")}),X24=R81.object({item:HX.describe("The deleted virtual MCP entity")}),I81=m({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:Z24,outputSchema:X24,handler:async($,Z)=>{G0(Z);let X=X0(Z);if(await Z.access.check(),SB8($.id))throw Error(`Virtual MCP not found: ${$.id}`);let Q=await Z.storage.virtualMcps.findById($.id);if(!Q)throw Error(`Virtual MCP not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(X.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(X.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 B81(Z.orgFs,$.id,w1(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(Gz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&c5(G)&&!J){let W=await new X5(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:Q}}})});import{z as WY}from"zod";var Q24,q81;var vB8=L(()=>{m0();Q24=WY.object({id:WY.string(),virtualMcpId:WY.string(),pluginId:WY.string(),connectionId:WY.string().nullable(),settings:WY.record(WY.string(),WY.unknown()).nullable(),createdAt:WY.string(),updatedAt:WY.string()}),q81=m({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:WY.object({virtualMcpId:WY.string().describe("Virtual MCP ID"),pluginId:WY.string().describe("Plugin ID")}),outputSchema:WY.object({config:Q24.nullable()}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y}=$,G=await Z.storage.connections.findById(Q);if(!G||G.organization_id!==X.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(Q,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 $7}from"zod";var Y24,M81;var xB8=L(()=>{m0();vh();x9();Y24=$7.object({id:$7.string(),virtualMcpId:$7.string(),pluginId:$7.string(),connectionId:$7.string().nullable(),settings:$7.record($7.string(),$7.unknown()).nullable(),createdAt:$7.string(),updatedAt:$7.string()}),M81=m({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:$7.object({virtualMcpId:$7.string().describe("Virtual MCP ID"),pluginId:$7.string().describe("Plugin ID"),connectionId:$7.string().nullable().optional().describe("MCP connection to bind"),settings:$7.record($7.string(),$7.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:$7.object({config:Y24}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=w1(Z),W=await Z.storage.connections.findById(Q);if(!W)throw Error(`Connection not found: ${Q}`);if(W.organization_id!==X.id)throw Error(`Connection not found: ${Q}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Q}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==X.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&x3()&&r30(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let U=_h(W.organization_id,O9());await Z.storage.connections.create({...U,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(Q,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 DQ}from"zod";var G24,V81;var fB8=L(()=>{m0();DL();G24=DQ.object({connectionId:DQ.string(),toolName:DQ.string(),label:DQ.string(),icon:DQ.string().nullable().optional()}),V81=m({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:DQ.object({virtualMcpId:DQ.string().describe("Virtual MCP ID"),pinnedViews:DQ.array(G24).describe("Pinned views to set for the virtual MCP sidebar"),layout:DQ.object({defaultMainView:DQ.object({type:DQ.string(),id:DQ.string().optional(),toolName:DQ.string().optional()}).nullable().optional(),chatDefaultOpen:DQ.boolean().nullable().optional()}).optional()}),outputSchema:DQ.object({item:HX.nullable()}),handler:async($,Z)=>{G0(Z);let X=X0(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=w1(Z),K=await Z.storage.virtualMcps.findById(Q);if(!K)throw Error(`Virtual MCP not found: ${Q}`);if(K.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Q}`);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(Q,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as gU}from"zod";var J24,K24,k81;var bB8=L(()=>{m0();J24=gU.object({ids:gU.array(gU.string()).describe("Virtual MCP ids to look up")}),K24=gU.object({items:gU.array(gU.object({id:gU.string(),last_used_at:gU.string().optional(),last_used_by:gU.string().optional()}))}),k81=m({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:J24,outputSchema:K24,handler:async($,Z)=>{G0(Z),X0(Z),await Z.access.check();let X=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((Q)=>({id:Q,last_used_at:X.get(Q)?.last_used_at,last_used_by:X.get(Q)?.last_used_by}))}}})});var yB8=L(()=>{jB8();zB8();PB8();IB8();_B8();vB8();xB8();fB8();bB8()});import{z as DX}from"zod";var S81;var gB8=L(()=>{u$();m0();S81=m({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:DX.object({startDate:DX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:DX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:DX.array(DX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:DX.array(DX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:DX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:DX.object({cells:DX.array(DX.object({virtualMcpId:DX.string().nullable(),toolName:DX.string(),calls:DX.number(),errors:DX.number(),outputSize:DX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=X0(Z);return await Z.access.check(),await iQ(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:X.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 M5}from"zod";var C81;var hB8=L(()=>{u$();m0();C81=m({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:M5.object({id:M5.string().describe("Log ID to fetch")}),outputSchema:M5.object({log:M5.object({id:M5.string().optional(),organizationId:M5.string(),connectionId:M5.string(),toolName:M5.string(),input:M5.record(M5.string(),M5.unknown()),output:M5.record(M5.string(),M5.unknown()),isError:M5.boolean(),errorMessage:M5.string().nullish(),durationMs:M5.number(),timestamp:M5.string(),userId:M5.string().nullish(),requestId:M5.string(),userAgent:M5.string().nullish(),virtualMcpId:M5.string().nullish(),properties:M5.record(M5.string(),M5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await iQ();let X=X0(Z),Q=await Z.storage.monitoring.getById(X.id,$.id);if(!Q)return{log:null};return{log:{...Q,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp}}}})});import{z as j6}from"zod";var H24,_81;var uB8=L(()=>{u$();m0();H24=j6.object({id:j6.string().optional().describe("Unique log identifier"),organizationId:j6.string().describe("Organization ID"),connectionId:j6.string().describe("Connection ID"),toolName:j6.string().describe("Name of the tool that was called"),isError:j6.boolean().describe("Whether the call resulted in an error"),errorMessage:j6.string().nullish().describe("Error message if applicable"),durationMs:j6.number().describe("Call duration in milliseconds"),timestamp:j6.string().describe("ISO 8601 timestamp of the call"),userId:j6.string().nullish().describe("User who triggered the call"),requestId:j6.string().describe("Unique request identifier"),userAgent:j6.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:j6.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:j6.record(j6.string(),j6.string()).nullish().describe("Custom key-value metadata attached to the log")}),_81=m({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:j6.object({connectionId:j6.string().optional().describe("Filter by connection ID"),excludeConnectionIds:j6.array(j6.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:j6.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:j6.string().optional().describe("Filter by tool name"),isError:j6.boolean().optional().describe("Filter by error status"),startDate:j6.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:j6.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:j6.number().default(20).describe("Maximum number of results"),offset:j6.number().default(0).describe("Offset for pagination"),properties:j6.record(j6.string(),j6.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:j6.array(j6.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:j6.record(j6.string(),j6.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:j6.record(j6.string(),j6.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:j6.object({logs:j6.array(H24).describe("Array of monitoring logs"),total:j6.number().describe("Total number of logs matching filters"),offset:j6.number().describe("Current offset for pagination"),limit:j6.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await iQ();let X=X0(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:X.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 B8}from"zod";var v81;var cB8=L(()=>{u$();m0();v81=m({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:B8.object({startDate:B8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:B8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:B8.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:B8.array(B8.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:B8.array(B8.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:B8.array(B8.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:B8.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:B8.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:B8.array(B8.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:B8.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:B8.object({totalCalls:B8.number().describe("Total number of tool calls"),errorRate:B8.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:B8.number().describe("Average call duration in milliseconds"),errorRatePercent:B8.string().optional().describe("Error rate as a percentage string"),totalErrors:B8.number().optional().describe("Total number of errors"),p50DurationMs:B8.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:B8.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:B8.array(B8.object({connectionId:B8.string(),calls:B8.number(),errors:B8.number(),errorRate:B8.number(),avgDurationMs:B8.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:B8.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:B8.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:B8.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:B8.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:B8.array(B8.object({toolName:B8.string(),connectionId:B8.string().nullable(),calls:B8.number(),inputTokens:B8.number().optional(),outputTokens:B8.number().optional(),costUsd:B8.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:B8.array(B8.object({timestamp:B8.string(),toolName:B8.string(),calls:B8.number(),errors:B8.number(),avg:B8.number(),p95:B8.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:B8.array(B8.object({timestamp:B8.string(),calls:B8.number(),errors:B8.number(),errorRate:B8.number(),avg:B8.number(),p50:B8.number(),p95:B8.number(),inputTokens:B8.number().optional(),outputTokens:B8.number().optional(),totalTokens:B8.number().optional(),costUsd:B8.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=X0(Z);if(await Z.access.check(),await iQ(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:X.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:X.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:X.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 Q=await Z.storage.monitoring.getStats({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...Q,errorRatePercent:(Q.errorRate*100).toFixed(2)}}})});import{z as EQ}from"zod";var x81;var lB8=L(()=>{u$();m0();x81=m({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:EQ.object({threadIds:EQ.array(EQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:EQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:EQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:EQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:EQ.object({items:EQ.array(EQ.object({threadId:EQ.string(),calls:EQ.number(),inputTokens:EQ.number(),outputTokens:EQ.number(),totalTokens:EQ.number(),costUsd:EQ.number()}))}),handler:async($,Z)=>{let X=X0(Z);return await Z.access.check(),await iQ(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:X.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var dB8=L(()=>{gB8();hB8();uB8();cB8();lB8()});function FJ0($){return typeof $==="string"&&U24.has($.trim().toLowerCase())}var U24;var f81=L(()=>{U24=new Set([".well-known","_admin","api","auth","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 b81;var mB8=L(()=>{m0();f81();b81=m({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(($)=>!FJ0($),"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)=>{G0(Z),await Z.access.check();let X=w1(Z);if(!X)throw Error("User ID required to create organization");let Q=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:X});if(!Q)throw Error("Failed to create organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as jH}from"zod";var y81;var iB8=L(()=>{m0();y81=m({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(G0(Z),await Z.access.check(),!w1(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}}})});import{z as y3}from"zod";var g81;var nB8=L(()=>{m0();g81=m({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:y3.object({}),outputSchema:y3.object({id:y3.string(),name:y3.string(),slug:y3.string(),logo:y3.string().nullable().optional(),metadata:y3.any().optional(),createdAt:y3.string().datetime().describe("ISO 8601 timestamp"),members:y3.array(y3.any()).optional(),invitations:y3.array(y3.any()).optional()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as zK}from"zod";var h81;var pB8=L(()=>{m0();h81=m({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:zK.object({id:zK.string(),name:zK.string().min(1).max(255).optional(),description:zK.string().optional()}),outputSchema:zK.object({id:zK.string(),name:zK.string(),slug:zK.string(),logo:zK.string().nullable().optional(),metadata:zK.any().optional(),createdAt:zK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X={};if($.name)X.name=$.name;if($.description)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as Wr}from"zod";var u81;var tB8=L(()=>{m0();u81=m({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Wr.object({id:Wr.string()}),outputSchema:Wr.object({success:Wr.boolean(),id:Wr.string()}),handler:async($,Z)=>{return G0(Z),await Z.access.check(),await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as hU}from"zod";var c81;var oB8=L(()=>{m0();BQ();c81=m({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:hU.object({}),outputSchema:hU.object({organizationId:hU.string(),sidebar_items:hU.array(Eo).nullable().optional(),enabled_plugins:hU.array(hU.string()).nullable().optional(),registry_config:jo.nullable().optional(),simple_mode:zo.nullable().optional(),default_home_agents:Ao.nullable().optional(),flags:Ro.nullable().optional(),main_agent_id:hU.string().nullable().optional(),sprint_config:To.nullable().optional(),createdAt:hU.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:hU.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.organizationSettings.get(X);if(!Q)return{organizationId:X};return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as HY}from"zod";var l81;var rB8=L(()=>{m0();BQ();l81=m({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:HY.object({organizationId:HY.string(),sidebar_items:HY.array(Eo).optional(),enabled_plugins:HY.array(HY.string()).optional(),registry_config:jo.optional(),simple_mode:zo.optional(),default_home_agents:Ao.optional(),flags:Ro.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:HY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear."),sprint_config:To.optional().describe("Task board sprint cadence. Replaced whole (not merged), so pass all three fields.")}),outputSchema:HY.object({organizationId:HY.string(),sidebar_items:HY.array(Eo).nullable().optional(),enabled_plugins:HY.array(HY.string()).nullable().optional(),registry_config:jo.nullable().optional(),simple_mode:zo.nullable().optional(),default_home_agents:Ao.nullable().optional(),flags:Ro.nullable().optional(),main_agent_id:HY.string().nullable().optional(),sprint_config:To.nullable().optional(),createdAt:HY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:HY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(G0(Z),await Z.access.check(),X0(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let Q=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,sprint_config:$.sprint_config});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as PK}from"zod";var aB8,d81,m81;var sB8=L(()=>{m0();BQ();aB8=HL.extend({organizationId:PK.string(),archivedAt:PK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:PK.string().describe("ISO 8601 timestamp"),updatedAt:PK.string().describe("ISO 8601 timestamp")}),d81=m({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:PK.object({includeArchived:PK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:PK.object({items:PK.array(aB8)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X,{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}))}}}),m81=m({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:PK.object({id:PK.string().describe("Brand context ID")}),outputSchema:aB8.extend({organizationId:PK.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.get($.id,X);if(!Q)throw Error("Brand context not found");return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as Jz}from"zod";var eB8,i81,n81,p81;var $O8=L(()=>{m0();BQ();eB8=HL.extend({organizationId:Jz.string(),createdAt:Jz.string().describe("ISO 8601 timestamp"),updatedAt:Jz.string().describe("ISO 8601 timestamp")}),i81=m({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:HL.omit({id:!0}),outputSchema:eB8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.create(X,{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{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}),n81=m({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:HL.partial().required({id:!0}),outputSchema:eB8,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,X);let J=await Z.storage.brandContext.update(Y,X,{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=m({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:Jz.object({id:Jz.string().describe("Brand context ID")}),outputSchema:Jz.object({success:Jz.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,X,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function UJ0($,Z,X){let Q=$.trim();if(!Q.startsWith("http"))Q=`https://${Q}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:Q,formats:["branding"]})});if(!Y.ok){let N=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${N.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=O24(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((N)=>N.trim()).filter(Boolean)?.slice().sort((N,B)=>N.length-B.length)[0]??K.ogSiteName??X??$,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 O24($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[F,U]of Object.entries(Q))if(typeof U==="string"&&U&&N24.has(F))Y[F]=U;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,U]of Object.entries(K))if(typeof U==="string"&&U){let N=B24[F.toLowerCase()];if(N&&!G[N])G[N]=U}let W=$.fonts;if(Array.isArray(W))for(let F of W){let U=F.family;if(typeof U==="string"&&U&&!G.body)G.body=U}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:X.logo??null,favicon:X.favicon??null,ogImage:X.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var N24,B24;var t81=L(()=>{N24=new Set(["primary","secondary","accent","background","foreground"]),B24={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as NJ0}from"zod";var L24,o81;var ZO8=L(()=>{m0();t81();BQ();L24=HL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:NJ0.boolean()}),o81=m({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:NJ0.object({domain:NJ0.string().describe("Website domain to extract brand from"),brandId:NJ0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:L24,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)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=Z.firecrawlApiKey;if(!Q)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await UJ0($.domain,Q,$.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,X))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,X,G)})():await Z.storage.brandContext.create(X,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 XO8($){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 X=Object.fromEntries(Object.entries(Z).filter(([Q])=>Q!=="tagline"&&Q!=="tone"));return Object.keys(X).length>0?X:void 0})()}}var r81,a81;var QO8=L(()=>{s11();m0();r81=m({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:d30,outputSchema:oo,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.id?await Z.storage.brandContext.get($.id,X):await Z.storage.brandContext.getDefault(X);if(!Q)throw Error($.id?"Brand not found":"No default brand configured");return XO8(Q)}}),a81=m({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:m30,outputSchema:i30,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X)).map(XO8)}}})});import{resolveTxt as w24}from"dns/promises";function s81($){return`${D24}.${$.toLowerCase()}`}function YO8(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function GO8($,Z,X=w24){if(!Z)return!1;try{return(await X(s81($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var D24="_deco-verify";var JO8=()=>{};import{z as l5}from"zod";function ML($){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?s81($.domain):null,recordValue:Z?$.verificationToken:null}}function j24($){let Z=$.toLowerCase().trim();if(!E24.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(AK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var E24,e81,BJ0,$61,Z61,X61,Q61,Y61;var KO8=L(()=>{jG();JO8();m0();E24=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,e81=l5.enum(["off","auto","request"]),BJ0=l5.object({id:l5.string(),domain:l5.string(),joinMode:e81,verificationStatus:l5.enum(["pending","verified"]),verificationMethod:l5.enum(["email","dns"]).nullable(),verifiedAt:l5.string().nullable(),recordName:l5.string().nullable(),recordValue:l5.string().nullable()});$61=m({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:l5.object({}),outputSchema:l5.object({domains:l5.array(BJ0)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(ML)}}}),Z61=m({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:l5.object({domain:l5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:e81.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:BJ0,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=j24($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===Q,K=await Z.storage.organizationDomains.getByOrgAndDomain(X.id,Q);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return ML(H)}return ML(K)}let W=J?await Z.storage.organizationDomains.add(X.id,Q,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(X.id,Q,{joinMode:"off",verificationStatus:"pending",verificationToken:YO8()});return ML(W)}}),X61=m({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:l5.object({id:l5.string(),joinMode:e81}),outputSchema:BJ0,handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if($.joinMode!=="off"&&Q.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return ML(Y)}}),Q61=m({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:l5.object({id:l5.string()}),outputSchema:l5.object({verified:l5.boolean(),domain:BJ0}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if(Q.verificationStatus==="verified")return{verified:!0,domain:ML(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await GO8(Q.domain,Q.verificationToken))return{verified:!1,domain:ML(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:ML(G)}}}),Y61=m({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:l5.object({id:l5.string()}),outputSchema:l5.object({success:l5.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function VL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as h9}from"zod";var z24,G61,J61,K61;var WO8=L(()=>{m0();l4();z24=h9.object({id:h9.string(),userId:h9.string(),status:h9.enum(["pending","approved","denied"]),createdAt:h9.string(),user:h9.object({id:h9.string(),name:h9.string(),email:h9.string(),image:h9.string().nullable()}).nullable()}),G61=m({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:h9.object({}),outputSchema:h9.object({requests:h9.array(z24)}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(X.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),J61=m({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:h9.object({requestId:h9.string()}),outputSchema:h9.object({success:h9.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=w1(Z);if(!await Z.storage.organizationJoinRequests.decide(Q.id,"approved",Y??Q.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:X.id,userId:Q.userId,role:["user"]})}catch(J){if(!VL(J))throw J}if(Y)n1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),K61=m({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:h9.object({requestId:h9.string()}),outputSchema:h9.object({success:h9.boolean()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=w1(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)n1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as FY}from"zod";var W61;var HO8=L(()=>{l4();m0();V3();W61=m({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:FY.object({organizationId:FY.string().optional(),userId:FY.string(),role:FY.array(FY.string())}),outputSchema:FY.object({id:FY.string(),organizationId:FY.string(),userId:FY.string(),role:FY.union([FY.string(),FY.array(FY.string())]),createdAt:FY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",w1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!jG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:X,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=w1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as gh}from"zod";var H61;var FO8=L(()=>{l4();m0();H61=m({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:gh.object({organizationId:gh.string().optional(),memberIdOrEmail:gh.string()}),outputSchema:gh.object({success:gh.boolean(),memberIdOrEmail:gh.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.removeMember({organizationId:X,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(Q.member.userId,X);let Y=w1(Z);if(Y)n1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as EX}from"zod";var F61;var UO8=L(()=>{m0();F61=m({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:EX.object({limit:EX.number().int().min(1).max(1000).optional(),offset:EX.number().int().min(0).optional()}),outputSchema:EX.object({members:EX.array(EX.object({id:EX.string(),organizationId:EX.string(),userId:EX.string(),role:EX.string(),createdAt:EX.string().datetime().describe("ISO 8601 timestamp"),user:EX.object({id:EX.string(),name:EX.string(),email:EX.string(),image:EX.string().optional()}).optional()}))}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:X,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as Z7}from"zod";var U61;var NO8=L(()=>{l4();m0();V3();U61=m({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:Z7.object({organizationId:Z7.string().optional(),memberId:Z7.string(),role:Z7.array(Z7.string())}),outputSchema:Z7.object({id:Z7.string(),organizationId:Z7.string(),userId:Z7.string(),role:Z7.union([Z7.string(),Z7.array(Z7.string())]),createdAt:Z7.string().datetime().describe("ISO 8601 timestamp"),user:Z7.object({email:Z7.string(),name:Z7.string(),image:Z7.string().optional()})}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",w1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!jG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:X,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,X);let G=w1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,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 BO8(){if(Hr&&Date.now()-Hr.fetchedAt<600000)return Hr.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),X=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(X)||X<=0)throw Error("Invalid rate");return Hr={rate:X,fetchedAt:Date.now()},X}catch{return Hr?.rate??5.5}}function OO8($,Z,X){if(Z==="brl")return Math.round($/X);return $}var Hr=null;function N61($,Z="",X=new URLSearchParams){for(let[Q,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${Q}]`:Q;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)N61(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")N61(Y,G,X);else X.append(G,String(Y))}return X}async function Fr($,Z){let X=o0().stripeSecretKey;if(!X)throw new zG(503,"billing is not configured");let Q=Z?.params?N61(Z.params).toString():void 0,Y=await fetch(`${P24}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout(A24)}),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 LO8($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function wO8($){let Z=o0().stripeOrgPriceId;if(!Z)throw new zG(503,"billing is not configured");let X=await Fr("/checkout/sessions",{params:{mode:"subscription",...LO8(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!X.url)throw new zG(500,"checkout session lacks url");return{url:X.url}}function T24($,Z){return Math.round($*(1+Z/100))}async function DO8($){let Z=T24($.amountCents,$.feePercent),X=OO8($.amountCents,$.currency,await BO8()),Q=o0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:X},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await Fr("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...LO8($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...Q?{product:Q}:{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 OJ0($){let Z=await Fr("/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 LJ0($){return Fr(`/subscriptions/${encodeURIComponent($)}`)}async function EO8($){await Fr(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var P24="https://api.stripe.com/v1",zG,A24=15000;var Kz=L(()=>{_8();zG=class zG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as B61}from"zod";var O61;var jO8=L(()=>{Kz();x9();m0();l4();O61=m({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:B61.object({}),outputSchema:B61.object({url:B61.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=Z.organization?.id,Q=Z.organization?.slug;if(!X||!Q)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(X);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=`${iZ()}/${encodeURIComponent(Q)}/members`,{url:J}=await wO8({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return OG({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as L61}from"zod";var w61;var zO8=L(()=>{Kz();x9();m0();w61=m({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:L61.object({}),outputSchema:L61.object({url:L61.string()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z);if(!X.slug)throw Error("Organization context required");let Q=await Z.storage.organizationBilling.getBilling(X.id);if(!Q?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await OJ0({customerId:Q.stripeCustomerId,returnUrl:`${iZ()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof zG)throw Error(Y.message);throw Y}}})});function wJ0($){return D61[$%D61.length]??R24}function UY($){return $.createdBy==="system"}function uU($){return DJ0.filter((Z)=>X30($,I24[Z]))}function uh($,Z){return $?.startsWith(`${hh[Z]}:`)??!1}function cU($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function E61($,Z){let X=cU($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function kL($,Z,X){if(Z.length===0)return!1;let Q=E61($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function AO8($,Z){return kL($,Z)&&!kL($,Z,{verifiedOnly:!0})}function TO8($){let Z=null;for(let X of $){if(X.action!=="review_approved"&&X.action!=="review_changes_requested")continue;let Q=new Date(X.occurredAt).getTime();if(Z&&Q<Z.at)continue;let Y=X.data?.notes;Z={at:Q,notes:X.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}function q24($){let Z=0;for(let X of $){if(X.action!=="assignee_changed")continue;if(X.data?.to!==C6)continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function RO8($,Z=j61){let X=q24($),Q=new Set,Y=0;for(let G of[...$].sort((J,K)=>J.occurredAt.localeCompare(K.occurredAt))){let J=new Date(G.occurredAt).getTime();if(G.action==="status_changed"){if(G.data?.to==="in_review")Y=J;continue}if(G.action==="review_changes_requested"&&J>=X)Q.add(Y)}return Q.size+1>=Z}var C6="super-agent",D61,R24,Ur='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.',PO8,DJ0,hh,I24,j61=5,IO8="task-board.item.updated",qO8="task-board.item.deleted";var z9=L(()=>{BQ();D61=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],R24=D61[0];PO8="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.",DJ0=["qa","code_review"],hh={qa:"QA Agent",code_review:"Code Reviewer"},I24={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function z61($){return $==="trial"?"trial":"subscription"}function Nr($,Z,X,Q={}){OG({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function P61($){return $?.status==="active"||$?.status==="past_due"}function EJ0($,Z){if(P61($))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 Br(){let $=o0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function SL(){return{...Br(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function ch($,Z,X=Br()){if(!X.enforced||!UY(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Nr($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new jX("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=EJ0(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Nr($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:z61(G.periodKey),limit:G.limit}),new jX(G.exhaustedReason)}async function MO8($,Z,X=Br()){if(!X.enforced||!UY(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=EJ0(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Nr($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:z61(Y.periodKey),limit:Y.limit}),new jX(Y.exhaustedReason);if(G==="runs_exhausted")throw Nr($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new jX("runs_exhausted");if(G==="claimed")Nr($,"task_quota_claimed",Z,{billing_mode:z61(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function VO8($,Z,X,Q){if(Q==="skipped")return;await $.rollbackTaskClaim(Z,X,{releaseSlot:Q==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function kO8($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function SO8($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))OG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var M24="[SUBSCRIPTION_REQUIRED]",V24,jX;var g3=L(()=>{z9();l4();_8();V24={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"};jX=class jX extends Error{reason;constructor($){super(`${M24} ${V24[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as lU}from"zod";var A61;var CO8=L(()=>{m0();g3();A61=m({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:lU.object({}),outputSchema:lU.object({enforced:lU.boolean(),billingStatus:lU.string(),subscribed:lU.boolean(),hasBillingAccount:lU.boolean(),used:lU.number(),limit:lU.number(),currentPeriodEnd:lU.string().datetime().nullable()}),handler:async($,Z)=>{G0(Z),await Z.access.check();let X=X0(Z),Q=Br(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=EJ0(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:P61(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var _O8=L(()=>{mB8();iB8();nB8();pB8();tB8();oB8();rB8();sB8();$O8();ZO8();QO8();KO8();WO8();HO8();FO8();UO8();NO8();jO8();zO8();CO8()});function zH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function jJ0($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(jJ0);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||jJ0(X)));return!1}function T61($){return Array.isArray($)&&$.every(jJ0)}function Or($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||jJ0(X)))}var KL8="vercel.ai.error",S24,vO8,xO8,E1,WL8="AI_APICallError",HL8,C24,fO8,bO8,w4,FL8="AI_EmptyResponseBodyError",UL8,_24,yO8,gO8,zJ0,NL8="AI_InvalidArgumentError",BL8,v24,hO8,uO8,CL,OL8="AI_InvalidPromptError",LL8,x24,cO8,lO8,h3,wL8="AI_InvalidResponseDataError",DL8,f24,dO8,mO8,lh,EL8="AI_JSONParseError",jL8,b24,iO8,nO8,dU,zL8="AI_LoadAPIKeyError",PL8,y24,pO8,tO8,Wz,AL8="AI_LoadSettingError",TL8,g24,oO8,rO8,RL8,IL8="AI_NoContentGeneratedError",qL8,h24,aO8,sO8,ML8,VL8="AI_NoSuchModelError",kL8,u24,eO8,$L8,Z9,SL8="AI_TooManyEmbeddingValuesForCallError",CL8,c24,ZL8,XL8,dh,_L8="AI_TypeValidationError",vL8,l24,QL8,YL8,V5,xL8="AI_UnsupportedFunctionalityError",fL8,d24,GL8,JL8,m4;var Y8=L(()=>{S24=Symbol.for(KL8),E1=class $ extends(xO8=Error,vO8=S24,xO8){constructor({name:Z,message:X,cause:Q}){super(X);this[vO8]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,KL8)}static hasMarker(Z,X){let Q=Symbol.for(X);return Z!=null&&typeof Z==="object"&&Q in Z&&typeof Z[Q]==="boolean"&&Z[Q]===!0}},HL8=`vercel.ai.error.${WL8}`,C24=Symbol.for(HL8),w4=class extends(bO8=E1,fO8=C24,bO8){constructor({message:$,url:Z,requestBodyValues:X,statusCode:Q,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:W}){super({name:WL8,message:$,cause:J});this[fO8]=!0,this.url=Z,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return E1.hasMarker($,HL8)}},UL8=`vercel.ai.error.${FL8}`,_24=Symbol.for(UL8),zJ0=class extends(gO8=E1,yO8=_24,gO8){constructor({message:$="Empty response body"}={}){super({name:FL8,message:$});this[yO8]=!0}static isInstance($){return E1.hasMarker($,UL8)}};BL8=`vercel.ai.error.${NL8}`,v24=Symbol.for(BL8),CL=class extends(uO8=E1,hO8=v24,uO8){constructor({message:$,cause:Z,argument:X}){super({name:NL8,message:$,cause:Z});this[hO8]=!0,this.argument=X}static isInstance($){return E1.hasMarker($,BL8)}},LL8=`vercel.ai.error.${OL8}`,x24=Symbol.for(LL8),h3=class extends(lO8=E1,cO8=x24,lO8){constructor({prompt:$,message:Z,cause:X}){super({name:OL8,message:`Invalid prompt: ${Z}`,cause:X});this[cO8]=!0,this.prompt=$}static isInstance($){return E1.hasMarker($,LL8)}},DL8=`vercel.ai.error.${wL8}`,f24=Symbol.for(DL8),lh=class extends(mO8=E1,dO8=f24,mO8){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:wL8,message:Z});this[dO8]=!0,this.data=$}static isInstance($){return E1.hasMarker($,DL8)}},jL8=`vercel.ai.error.${EL8}`,b24=Symbol.for(jL8),dU=class extends(nO8=E1,iO8=b24,nO8){constructor({text:$,cause:Z}){super({name:EL8,message:`JSON parsing failed: Text: ${$}.
|
|
2236
2236
|
Error message: ${zH(Z)}`,cause:Z});this[iO8]=!0,this.text=$}static isInstance($){return E1.hasMarker($,jL8)}},PL8=`vercel.ai.error.${zL8}`,y24=Symbol.for(PL8),Wz=class extends(tO8=E1,pO8=y24,tO8){constructor({message:$}){super({name:zL8,message:$});this[pO8]=!0}static isInstance($){return E1.hasMarker($,PL8)}},TL8=`vercel.ai.error.${AL8}`,g24=Symbol.for(TL8),RL8=class extends(rO8=E1,oO8=g24,rO8){constructor({message:$}){super({name:AL8,message:$});this[oO8]=!0}static isInstance($){return E1.hasMarker($,TL8)}},qL8=`vercel.ai.error.${IL8}`,h24=Symbol.for(qL8),ML8=class extends(sO8=E1,aO8=h24,sO8){constructor({message:$="No content generated."}={}){super({name:IL8,message:$});this[aO8]=!0}static isInstance($){return E1.hasMarker($,qL8)}},kL8=`vercel.ai.error.${VL8}`,u24=Symbol.for(kL8),Z9=class extends($L8=E1,eO8=u24,$L8){constructor({errorName:$=VL8,modelId:Z,modelType:X,message:Q=`No such ${X}: ${Z}`}){super({name:$,message:Q});this[eO8]=!0,this.modelId=Z,this.modelType=X}static isInstance($){return E1.hasMarker($,kL8)}},CL8=`vercel.ai.error.${SL8}`,c24=Symbol.for(CL8),dh=class extends(XL8=E1,ZL8=c24,XL8){constructor($){super({name:SL8,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[ZL8]=!0,this.provider=$.provider,this.modelId=$.modelId,this.maxEmbeddingsPerCall=$.maxEmbeddingsPerCall,this.values=$.values}static isInstance($){return E1.hasMarker($,CL8)}},vL8=`vercel.ai.error.${_L8}`,l24=Symbol.for(vL8),V5=class $ extends(YL8=E1,QL8=l24,YL8){constructor({value:Z,cause:X,context:Q}){let Y="Type validation failed";if(Q==null?void 0:Q.field)Y+=` for ${Q.field}`;if((Q==null?void 0:Q.entityName)||(Q==null?void 0:Q.entityId)){Y+=" (";let G=[];if(Q.entityName)G.push(Q.entityName);if(Q.entityId)G.push(`id: "${Q.entityId}"`);Y+=G.join(", "),Y+=")"}super({name:_L8,message:`${Y}: Value: ${JSON.stringify(Z)}.
|
|
2237
2237
|
Error message: ${zH(X)}`,cause:X});this[QL8]=!0,this.value=Z,this.context=Q}static isInstance(Z){return E1.hasMarker(Z,vL8)}static wrap({value:Z,cause:X,context:Q}){var Y,G,J;if($.isInstance(X)&&X.value===Z&&((Y=X.context)==null?void 0:Y.field)===(Q==null?void 0:Q.field)&&((G=X.context)==null?void 0:G.entityName)===(Q==null?void 0:Q.entityName)&&((J=X.context)==null?void 0:J.entityId)===(Q==null?void 0:Q.entityId))return X;return new $({value:Z,cause:X,context:Q})}},fL8=`vercel.ai.error.${xL8}`,d24=Symbol.for(fL8),m4=class extends(JL8=E1,GL8=d24,JL8){constructor({functionality:$,message:Z=`'${$}' functionality not supported.`}){super({name:xL8,message:Z});this[GL8]=!0,this.functionality=$}static isInstance($){return E1.hasMarker($,fL8)}}});import*as RJ0 from"zod/v4";import{ZodFirstPartyTypeKind as R4}from"zod/v3";import{ZodFirstPartyTypeKind as KR4}from"zod/v3";import{ZodFirstPartyTypeKind as PJ0}from"zod/v3";function X6(...$){return $.reduce((Z,X)=>({...Z,...X!=null?X:{}}),{})}function AJ0({tools:$=[],providerToolNames:Z,resolveProviderToolName:X}){var Q;let Y={},G={};for(let J of $)if(J.type==="provider"){let K=(Q=X==null?void 0:X(J))!=null?Q:(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 BY($,Z){if($==null)return Promise.resolve();let X=Z==null?void 0:Z.abortSignal;return new Promise((Q,Y)=>{if(X==null?void 0:X.aborted){Y(bL8());return}let G=setTimeout(()=>{J(),Q()},$),J=()=>{clearTimeout(G),X==null||X.removeEventListener("abort",K)},K=()=>{J(),Y(bL8())};X==null||X.addEventListener("abort",K)})}function bL8(){return new DOMException("Delay was aborted","AbortError")}function mh($){return Object.fromEntries([...$.headers])}function u9($){let Z=$.replace(/-/g,"+").replace(/_/g,"/"),X=i24(Z);return Uint8Array.from(X,(Q)=>Q.codePointAt(0))}function LY($){let Z="";for(let X=0;X<$.length;X++)Z+=String.fromCodePoint($[X]);return m24(Z)}function IZ($){return $ instanceof Uint8Array?LY($):$}function lL8($,Z={}){let{useArrayBrackets:X=!0}=Z,Q=new FormData;for(let[Y,G]of Object.entries($)){if(G==null)continue;if(Array.isArray(G)){if(G.length===1){Q.append(Y,G[0]);continue}let J=X?`${Y}[]`:Y;for(let K of G)Q.append(J,K);continue}Q.append(Y,G)}return Q}async function Lr($){var Z;try{await((Z=$.body)==null?void 0:Z.cancel())}catch(X){}}function p24($=globalThis){return $.window!=null}function t24($){let Z;try{Z=new URL($)}catch(Q){throw new RZ({url:$,message:`Invalid URL: ${$}`})}if(Z.protocol==="data:")return;if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw new RZ({url:$,message:`URL scheme must be http, https, or data, got ${Z.protocol}`});let X=Z.hostname.toLowerCase().replace(/\.+$/,"");if(!X)throw new RZ({url:$,message:"URL must have a hostname"});if(X==="localhost"||X.endsWith(".local")||X.endsWith(".localhost"))throw new RZ({url:$,message:`URL with hostname ${X} is not allowed`});if(X.startsWith("[")&&X.endsWith("]")){let Q=X.slice(1,-1);if(r24(Q))throw new RZ({url:$,message:`URL with IPv6 address ${X} is not allowed`});return}if(iL8(X)){if(nL8(X))throw new RZ({url:$,message:`URL with IP address ${X} is not allowed`});return}}function iL8($){let Z=$.split(".");if(Z.length!==4)return!1;return Z.every((X)=>{let Q=Number(X);return Number.isInteger(Q)&&Q>=0&&Q<=255&&String(Q)===X})}function nL8($){let Z=$.split(".").map(Number),[X,Q,Y]=Z;if(X===0)return!0;if(X===10)return!0;if(X===100&&Q>=64&&Q<=127)return!0;if(X===127)return!0;if(X===169&&Q===254)return!0;if(X===172&&Q>=16&&Q<=31)return!0;if(X===192&&Q===0&&Y===0)return!0;if(X===192&&Q===168)return!0;if(X===198&&(Q===18||Q===19))return!0;if(X>=240)return!0;return!1}function o24($){let Z=$.toLowerCase(),X=Z.indexOf("%");if(X!==-1)Z=Z.slice(0,X);let Q=Z.split("::");if(Q.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||!iL8(F))return null;let[U,N,B,O]=F.split(".").map(Number);K.push(U<<8|N,B<<8|O);continue}if(!/^[0-9a-f]{1,4}$/.test(F))return null;K.push(parseInt(F,16))}return K},G=Y(Q[0]);if(G===null)return null;if(Q.length===2){let J=Y(Q[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 r24($){let Z=o24($);if(Z===null)return!0;let X=(Y)=>Z.slice(0,Y).every((G)=>G===0);if(X(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(X(6)||X(5)&&Z[5]===65535||X(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 nL8(`${Y}.${G}.${J}.${K}`)}return!1}async function V61({url:$,headers:Z,abortSignal:X,maxRedirects:Q=a24}){let Y={signal:X};if(Z!==void 0)Y.headers=Z;let G=$;for(let J=0;J<=Q;J++){t24(G);let K=await fetch(G,{...Y,redirect:"manual"});if(K.type==="opaqueredirect"){if(!p24())throw new RZ({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 Lr(K),G=new URL(W,G).toString();continue}return K}throw new RZ({url:$,message:`Too many redirects (max ${Q})`})}async function k61({response:$,url:Z,maxBytes:X=TJ0}){let Q=$.headers.get("content-length");if(Q!=null){let F=parseInt(Q,10);if(!isNaN(F)&&F>X)throw await Lr($),new RZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} 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:U}=await G.read();if(F)break;if(K+=U.length,K>X)throw new RZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} bytes.`});J.push(U)}}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 S61($,Z){var X,Q;try{let Y=await V61({url:$,abortSignal:Z==null?void 0:Z.abortSignal});if(!Y.ok)throw await Lr(Y),new RZ({url:$,statusCode:Y.status,statusText:Y.statusText});let G=await k61({response:Y,url:$,maxBytes:(X=Z==null?void 0:Z.maxBytes)!=null?X:TJ0}),J=(Q=Y.headers.get("content-type"))!=null?Q:void 0;return new Blob([G],J?{type:J}:void 0)}catch(Y){if(RZ.isInstance(Y))throw Y;throw new RZ({url:$,cause:Y})}}function ih($){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 $R4($){if(!($ instanceof Error))return!1;let Z=$.code;if(typeof Z==="string"&&e24.includes(Z))return!0;return!1}function pL8({error:$,url:Z,requestBodyValues:X}){if(NY($))return $;if($ instanceof TypeError&&s24.includes($.message.toLowerCase())){let Q=$.cause;if(Q!=null)return new w4({message:`Cannot connect to API: ${Q.message}`,cause:Q,url:Z,requestBodyValues:X,isRetryable:!0})}if($R4($))return new w4({message:`Cannot connect to API: ${$.message}`,cause:$,url:Z,requestBodyValues:X,isRetryable:!0});return $}function _L($=globalThis){var Z,X,Q;if($.window)return"runtime/browser";if((Z=$.navigator)==null?void 0:Z.userAgent)return`runtime/${$.navigator.userAgent.toLowerCase()}`;if((Q=(X=$.process)==null?void 0:X.versions)==null?void 0:Q.node)return`runtime/node.js/${$.process.version.substring(0)}`;if($.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function vL($){if($==null)return{};let Z={};if($ instanceof Headers)$.forEach((X,Q)=>{Z[Q.toLowerCase()]=X});else{if(!Array.isArray($))$=Object.entries($);for(let[X,Q]of $)if(Q!=null)Z[X.toLowerCase()]=Q}return Z}function J$($,...Z){let X=new Headers(vL($)),Q=X.get("user-agent")||"";return X.set("user-agent",[Q,...Z].filter(Boolean).join(" ")),Object.fromEntries(X.entries())}function Fz($){return $!=null}function oL8($,Z){try{return new URL($).origin===new URL(Z).origin}catch(X){return!1}}function rL8({mediaType:$,url:Z,supportedUrls:X}){return Z=Z.toLowerCase(),$=$.toLowerCase(),Object.entries(X).map(([Q,Y])=>{let G=Q.toLowerCase();return G==="*"||G==="*/*"?{mediaTypePrefix:"",regexes:Y}:{mediaTypePrefix:G.replace(/\*/,""),regexes:Y}}).filter(({mediaTypePrefix:Q})=>$.startsWith(Q)).flatMap(({regexes:Q})=>Q).some((Q)=>Q.test(Z))}function nh({apiKey:$,environmentVariableName:Z,apiKeyParameterName:X="apiKey",description:Q}){if(typeof $==="string")return $;if($!=null)throw new Wz({message:`${Q} API key must be a string.`});if(typeof process>"u")throw new Wz({message:`${Q} API key is missing. Pass it using the '${X}' parameter. Environment variables are not supported in this environment.`});if($=process.env[Z],$==null)throw new Wz({message:`${Q} API key is missing. Pass it using the '${X}' parameter or the ${Z} environment variable.`});if(typeof $!=="string")throw new Wz({message:`${Q} API key must be a string. The value of the ${Z} environment variable is not a string.`});return $}function PH({settingValue:$,environmentVariableName:Z}){if(typeof $==="string")return $;if($!=null||typeof process>"u")return;if($=process.env[Z],$==null||typeof $!=="string")return;return $}function aL8($){var Z;let[X,Q=""]=$.toLowerCase().split("/");return(Z={mpeg:"mp3","x-wav":"wav",opus:"ogg",mp4:"m4a","x-m4a":"m4a"}[Q])!=null?Z:Q}function hL8($){let Z=JSON.parse($);if(Z===null||typeof Z!=="object")return Z;if(XR4.test($)===!1&&QR4.test($)===!1)return Z;return YR4(Z)}function YR4($){let Z=[$];while(Z.length){let X=Z;Z=[];for(let Q of X){if(Object.prototype.hasOwnProperty.call(Q,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(Q,"constructor")&&Q.constructor!==null&&typeof Q.constructor==="object"&&Object.prototype.hasOwnProperty.call(Q.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let Y in Q){let G=Q[Y];if(G&&typeof G==="object")Z.push(G)}}}return $}function C61($){let{stackTraceLimit:Z}=Error;try{Error.stackTraceLimit=0}catch(X){return hL8($)}try{return hL8($)}finally{Error.stackTraceLimit=Z}}function _61($){if($.type==="object"||Array.isArray($.type)&&$.type.includes("object")){$.additionalProperties=!1;let{properties:X}=$;if(X!=null)for(let Q of Object.keys(X))X[Q]=Hz(X[Q])}if($.items!=null)$.items=Array.isArray($.items)?$.items.map(Hz):Hz($.items);if($.anyOf!=null)$.anyOf=$.anyOf.map(Hz);if($.allOf!=null)$.allOf=$.allOf.map(Hz);if($.oneOf!=null)$.oneOf=$.oneOf.map(Hz);let{definitions:Z}=$;if(Z!=null)for(let X of Object.keys(Z))Z[X]=Hz(Z[X]);return $}function Hz($){if(typeof $==="boolean")return $;return _61($)}function PG(){return{}}function WR4($,Z){var X,Q,Y;let G={type:"array"};if(((X=$.type)==null?void 0:X._def)&&((Y=(Q=$.type)==null?void 0:Q._def)==null?void 0:Y.typeName)!==KR4.ZodAny)G.items=S$($.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 HR4($){let Z={type:"integer",format:"int64"};if(!$.checks)return Z;for(let X of $.checks)switch(X.kind){case"min":if(X.inclusive)Z.minimum=X.value;else Z.exclusiveMinimum=X.value;break;case"max":if(X.inclusive)Z.maximum=X.value;else Z.exclusiveMaximum=X.value;break;case"multipleOf":Z.multipleOf=X.value;break}return Z}function FR4(){return{type:"boolean"}}function sL8($,Z){return S$($.type._def,Z)}function eL8($,Z,X){let Q=X!=null?X:Z.dateStrategy;if(Array.isArray(Q))return{anyOf:Q.map((Y,G)=>eL8($,Z,Y))};switch(Q){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return NR4($)}}function BR4($,Z){return{...S$($.innerType._def,Z),default:$.defaultValue()}}function OR4($,Z){return Z.effectStrategy==="input"?S$($.schema._def,Z):PG()}function LR4($){return{type:"string",enum:Array.from($.values)}}function DR4($,Z){let X=[S$($.left._def,{...Z,currentPath:[...Z.currentPath,"allOf","0"]}),S$($.right._def,{...Z,currentPath:[...Z.currentPath,"allOf","1"]})].filter((Y)=>!!Y),Q=[];return X.forEach((Y)=>{if(wR4(Y))Q.push(...Y.allOf);else{let G=Y;if("additionalProperties"in Y&&Y.additionalProperties===!1){let{additionalProperties:J,...K}=Y;G=K}Q.push(G)}}),Q.length?{allOf:Q}:void 0}function ER4($){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 $w8($,Z){let X={type:"string"};if($.checks)for(let Q of $.checks)switch(Q.kind){case"min":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value;break;case"max":X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"email":switch(Z.emailStrategy){case"format:email":RK(X,"email",Q.message,Z);break;case"format:idn-email":RK(X,"idn-email",Q.message,Z);break;case"pattern:zod":jQ(X,TK.email,Q.message,Z);break}break;case"url":RK(X,"uri",Q.message,Z);break;case"uuid":RK(X,"uuid",Q.message,Z);break;case"regex":jQ(X,Q.regex,Q.message,Z);break;case"cuid":jQ(X,TK.cuid,Q.message,Z);break;case"cuid2":jQ(X,TK.cuid2,Q.message,Z);break;case"startsWith":jQ(X,RegExp(`^${I61(Q.value,Z)}`),Q.message,Z);break;case"endsWith":jQ(X,RegExp(`${I61(Q.value,Z)}$`),Q.message,Z);break;case"datetime":RK(X,"date-time",Q.message,Z);break;case"date":RK(X,"date",Q.message,Z);break;case"time":RK(X,"time",Q.message,Z);break;case"duration":RK(X,"duration",Q.message,Z);break;case"length":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value,X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"includes":{jQ(X,RegExp(I61(Q.value,Z)),Q.message,Z);break}case"ip":{if(Q.version!=="v6")RK(X,"ipv4",Q.message,Z);if(Q.version!=="v4")RK(X,"ipv6",Q.message,Z);break}case"base64url":jQ(X,TK.base64url,Q.message,Z);break;case"jwt":jQ(X,TK.jwt,Q.message,Z);break;case"cidr":{if(Q.version!=="v6")jQ(X,TK.ipv4Cidr,Q.message,Z);if(Q.version!=="v4")jQ(X,TK.ipv6Cidr,Q.message,Z);break}case"emoji":jQ(X,TK.emoji(),Q.message,Z);break;case"ulid":{jQ(X,TK.ulid,Q.message,Z);break}case"base64":{switch(Z.base64Strategy){case"format:binary":{RK(X,"binary",Q.message,Z);break}case"contentEncoding:base64":{X.contentEncoding="base64";break}case"pattern:zod":{jQ(X,TK.base64,Q.message,Z);break}}break}case"nanoid":jQ(X,TK.nanoid,Q.message,Z);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return X}function I61($,Z){return Z.patternStrategy==="escape"?zR4($):$}function zR4($){let Z="";for(let X=0;X<$.length;X++){if(!jR4.has($[X]))Z+="\\";Z+=$[X]}return Z}function RK($,Z,X,Q){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,...X&&Q.errorMessages&&{errorMessage:{format:X}}})}else $.format=Z}function jQ($,Z,X,Q){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:cL8(Z,Q),...X&&Q.errorMessages&&{errorMessage:{pattern:X}}})}else $.pattern=cL8(Z,Q)}function cL8($,Z){var X;if(!Z.applyRegexFlags||!$.flags)return $.source;let Q={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},Y=Q.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(Q.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]==="-"&&((X=Y[H+2])==null?void 0:X.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(Q.m){if(Y[H]==="^"){G+=`(^|(?<=[\r
|
|
2238
2238
|
]))`;continue}else if(Y[H]==="$"){G+=`($|(?=[\r
|