decocms 4.357.2 → 4.357.4
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-DLI_y0kQ.js → AlertCircle-CBd9kERr.js} +1 -1
- package/dist/client/assets/{AreaChart-He1fiu83.js → AreaChart-mq1z999O.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BHvdpjN6.js → ArrowLeft-BjRYjvHK.js} +1 -1
- package/dist/client/assets/{ArrowRight-Bj-GI8Ha.js → ArrowRight-Ch_JzAKL.js} +1 -1
- package/dist/client/assets/{ArrowUp-CxQswJ1J.js → ArrowUp-BreiqpEz.js} +1 -1
- package/dist/client/assets/{Check-0QGdBtav.js → Check-DqkacOOo.js} +1 -1
- package/dist/client/assets/{CheckCircle-5uMvqoZP.js → CheckCircle-BTv_HNPs.js} +1 -1
- package/dist/client/assets/{ChevronRight-KK3qfphJ.js → ChevronRight-DzmLWKAo.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-Di4HYY3d.js → ChevronSelectorVertical-D1pSeQIS.js} +1 -1
- package/dist/client/assets/{ChevronUp-Bsn6saD9.js → ChevronUp-DuOOHGIB.js} +1 -1
- package/dist/client/assets/{Copy01-BMRPuGV4.js → Copy01-l2VRotFt.js} +1 -1
- package/dist/client/assets/{CreditCard01-DNen_i5r.js → CreditCard01-BMkeXieC.js} +1 -1
- package/dist/client/assets/{DotsVertical-Dn-MiDeI.js → DotsVertical-DxIFAaFG.js} +1 -1
- package/dist/client/assets/{Download01-CjNeMHjR.js → Download01-BWA6sHtg.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-CHi_lKnk.js → ErrorBarContext-x0zZ8XkO.js} +1 -1
- package/dist/client/assets/{Eye-C1VPVGim.js → Eye-YIGHsl-L.js} +1 -1
- package/dist/client/assets/{GitBranch01-G5fhFibo.js → GitBranch01-BVCazP-u.js} +1 -1
- package/dist/client/assets/{Globe01-Clx3pMu_.js → Globe01-C8MxLRkP.js} +1 -1
- package/dist/client/assets/{HardDrive-Bkv0QB9j.js → HardDrive-BS0obIOG.js} +1 -1
- package/dist/client/assets/{Image01-CZhyMtEF.js → Image01-EbJSXFxN.js} +1 -1
- package/dist/client/assets/{Key01-l9rf_sae.js → Key01-BFkiELTT.js} +1 -1
- package/dist/client/assets/{Link01-pmZ5qfde.js → Link01-C6iFD_1F.js} +1 -1
- package/dist/client/assets/{LinkExternal01-Bi0ckUR6.js → LinkExternal01-DqKHzw9U.js} +1 -1
- package/dist/client/assets/{Monitor01-DQ4DwDZX.js → Monitor01-Cxz_eAVo.js} +1 -1
- package/dist/client/assets/{Package-B9_K7TDa.js → Package-CXlEv3H8.js} +1 -1
- package/dist/client/assets/{Palette-Zdsosz4A.js → Palette-DbewMeGN.js} +1 -1
- package/dist/client/assets/{Play-B2K3VjrI.js → Play-CEPPAIh5.js} +1 -1
- package/dist/client/assets/{Plus-BVBatL9e.js → Plus-DgxBd8rk.js} +1 -1
- package/dist/client/assets/{SearchLg-DgVlNXZH.js → SearchLg-AFAJsxFc.js} +1 -1
- package/dist/client/assets/{SearchMd-BtTKbpV7.js → SearchMd-DeIp0WHu.js} +1 -1
- package/dist/client/assets/{Sector-oMsVtzCI.js → Sector-CXxvJnen.js} +1 -1
- package/dist/client/assets/{Settings02-DQCTSExV.js → Settings02-Dr-zcWez.js} +1 -1
- package/dist/client/assets/{Share07-Dx_n7EOa.js → Share07-fCS-0opG.js} +1 -1
- package/dist/client/assets/{Shield01-Bvpvo2K4.js → Shield01-Co61R0sU.js} +1 -1
- package/dist/client/assets/{Stars01-DhkBdj_U.js → Stars01-C4Zmu7Ep.js} +1 -1
- package/dist/client/assets/{Sun-VtPgnV_v.js → Sun-BWedp7Qb.js} +1 -1
- package/dist/client/assets/{Tool01-BmwTwlfJ.js → Tool01-CCYiLfpn.js} +1 -1
- package/dist/client/assets/{Tool02-CRYhfXhb.js → Tool02-C1pNmKnM.js} +1 -1
- package/dist/client/assets/{Trash01-D31Ecr1x.js → Trash01-DWldj1cf.js} +1 -1
- package/dist/client/assets/{TrendUp01-Caylus7C.js → TrendUp01-CqdHzjJu.js} +1 -1
- package/dist/client/assets/{Upload01-CEjRMsQd.js → Upload01-BECJfTWE.js} +1 -1
- package/dist/client/assets/{User01-vZR-v-xR.js → User01-CTfDcS5e.js} +1 -1
- package/dist/client/assets/{UserSquare-B7TexH1I.js → UserSquare-BMpPM1Vn.js} +1 -1
- package/dist/client/assets/{Users01-C3DEUFYy.js → Users01-C2R2z6TK.js} +1 -1
- package/dist/client/assets/{Users03-D5nR6s0o.js → Users03-jUFurcPA.js} +1 -1
- package/dist/client/assets/{XCircle-C4td4Lhj.js → XCircle-DbggDpQ5.js} +1 -1
- package/dist/client/assets/{XClose-DbuRGbMN.js → XClose-D3lJp_3C.js} +1 -1
- package/dist/client/assets/{Zap-DyQlkdep.js → Zap-C6wi2cLw.js} +1 -1
- package/dist/client/assets/{ZoomOut-CSVII-Bq.js → ZoomOut-B00NO3iw.js} +1 -1
- package/dist/client/assets/{access-gate-gSKKLOGB.js → access-gate-aFqluTVu.js} +1 -1
- package/dist/client/assets/{agent-icon-nBcb3BwE.js → agent-icon-BAqALP_H.js} +1 -1
- package/dist/client/assets/{agents-list-D_wwP_DY.js → agents-list-4yU2K_0F.js} +1 -1
- package/dist/client/assets/{ai-providers-CmlDRHhH.js → ai-providers-ny9nWlU9.js} +1 -1
- package/dist/client/assets/{alert-C9OUQRm7.js → alert-BeXN7wDK.js} +1 -1
- package/dist/client/assets/{alert-dialog-DjjgGJeL.js → alert-dialog-CsEW_ZuO.js} +1 -1
- package/dist/client/assets/{analytics-tab-jIp9vgl6.js → analytics-tab-BX5cJidk.js} +1 -1
- package/dist/client/assets/{api-keys-D_hTubUN.js → api-keys-CMxXjzZz.js} +1 -1
- package/dist/client/assets/api-keys-CaSLwL-s.js +1 -0
- package/dist/client/assets/{app-editor-mebVvufE.js → app-editor-Dxh3NtkV.js} +1 -1
- package/dist/client/assets/{auth-B8Mzm_EX.js → auth-CauVv39M.js} +1 -1
- package/dist/client/assets/{auth-catchall-BrlrtPGW.js → auth-catchall-DcAs8UF7.js} +1 -1
- package/dist/client/assets/{auth-entry-BPPlsuOp.js → auth-entry-D9BTQgv6.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DFtmfJha.js → auth-split-layout-XVrtOA8P.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-COQadTKi.js → authenticate-and-persist-oauth-CgnQlNZ8.js} +1 -1
- package/dist/client/assets/{automation-list-row-CpUaZGVF.js → automation-list-row-C-JbyWG5.js} +1 -1
- package/dist/client/assets/{automation-runs-Bb3CkrSt.js → automation-runs-Bzce-lss.js} +1 -1
- package/dist/client/assets/{automations-C570Rd34.js → automations-qedng0rR.js} +1 -1
- package/dist/client/assets/{autosend-CBht_WWv.js → autosend-SS5aZjSF.js} +1 -1
- package/dist/client/assets/{avatar-BuB9trA8.js → avatar-DXXjOQK5.js} +1 -1
- package/dist/client/assets/{badge-BMwkZ7og.js → badge-BHXGD-K5.js} +1 -1
- package/dist/client/assets/{block-document-J_JsXkzG.js → block-document-xWGFz7hu.js} +1 -1
- package/dist/client/assets/{breadcrumb-DhPILjvE.js → breadcrumb-CLQCquYY.js} +1 -1
- package/dist/client/assets/{buckets-CdXybDIC.js → buckets-Bs-iSQfs.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-6ClVqTlr.js → bulk-category-panel-BoCBqYcl.js} +1 -1
- package/dist/client/assets/{capability-load-error-Cp8uXuck.js → capability-load-error-BTHd06DV.js} +1 -1
- package/dist/client/assets/{cards-6-8Wyhkv.js → cards-Bg8Jxlkr.js} +1 -1
- package/dist/client/assets/{category-editor-BgQA9dNM.js → category-editor-Te8j9aPs.js} +1 -1
- package/dist/client/assets/{cdn-tab-B1sXMhCc.js → cdn-tab-BSrgHBDl.js} +1 -1
- package/dist/client/assets/{chart-CCEGAvV2.js → chart-DqlN_aNX.js} +1 -1
- package/dist/client/assets/{chat-context-Blfv3wym.js → chat-context-B6tUHlAE.js} +1 -1
- package/dist/client/assets/{checkbox-DALxDqxN.js → checkbox-CdLxQJZz.js} +1 -1
- package/dist/client/assets/{choose-editor-qn2lVpAu.js → choose-editor-C-cOJhM2.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BbwNlDLd.js → cli-auth-success-BIEZetIo.js} +1 -1
- package/dist/client/assets/{client-icons-DVPbIzit.js → client-icons-CaXsC6fg.js} +1 -1
- package/dist/client/assets/{collection-detail-DHVhs9Ga.js → collection-detail-B6JpJyBT.js} +1 -1
- package/dist/client/assets/{collection-display-button-Dw8P8MSS.js → collection-display-button-Ds2G7tTD.js} +1 -1
- package/dist/client/assets/{collection-search-Dsxgd7dA.js → collection-search-BEeyUT2p.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Ce76Q2dX.js → collection-table-wrapper-BPX29dVz.js} +1 -1
- package/dist/client/assets/{collection-tabs-2A9_kiub.js → collection-tabs-BFgE8VhE.js} +1 -1
- package/dist/client/assets/{command-CU2f3ZEt.js → command-D6vFPSCI.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-C-jn8m_F.js → commerce-onboarding-DHHRbGQ7.js} +1 -1
- package/dist/client/assets/{connect-DW6bQcKU.js → connect-B6ba4h_O.js} +1 -1
- package/dist/client/assets/{connect-layout-BDyGEFK0.js → connect-layout-tQE9fQwK.js} +1 -1
- package/dist/client/assets/{connection-DXA3joTG.js → connection-XbVIg3WZ.js} +1 -1
- package/dist/client/assets/{connection-card-Dcl4Fay7.js → connection-card-Bq-bNVSb.js} +1 -1
- package/dist/client/assets/{connection-detail-BjdZkUZ4.js → connection-detail-ChtbSdgP.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BOSwNvX9.js → connection-form-helpers-BRqiHsa1.js} +1 -1
- package/dist/client/assets/{connections-8IVVHc_b.js → connections-kdNWqRmk.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BUMA72tj.js → create-organization-dialog-_SPLe5kk.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-CtuHCUcW.js → decopilot-sse-pool-BXVf9Dkw.js} +1 -1
- package/dist/client/assets/{dialog-BF8EEHBt.js → dialog-DDlyX8zJ.js} +1 -1
- package/dist/client/assets/{domain-settings-U88kGZyc.js → domain-settings-coQRiz8e.js} +1 -1
- package/dist/client/assets/{drawer-DxCOSfMO.js → drawer-DwjjcAEk.js} +1 -1
- package/dist/client/assets/{dropdown-menu-Cil9yCsU.js → dropdown-menu-ICXmOu_l.js} +1 -1
- package/dist/client/assets/{e2e-tab-DqkgTFSd.js → e2e-tab-C7m2E4Rd.js} +1 -1
- package/dist/client/assets/{editor-E5N3yCZ8.js → editor-TbLNsIFy.js} +1 -1
- package/dist/client/assets/{empty-state-CANiglei.js → empty-state-D_WbIpYR.js} +1 -1
- package/dist/client/assets/{empty-state-CuLrasEG.js → empty-state-hUIlBR3q.js} +1 -1
- package/dist/client/assets/{extract-connection-data-fJZ_bVa3.js → extract-connection-data-BmQLXIgr.js} +1 -1
- package/dist/client/assets/{file-explorer-B_GN9zEe.js → file-explorer-Bma_J7tg.js} +1 -1
- package/dist/client/assets/{file-type-icon-DP6HmLFy.js → file-type-icon-B1cjMMrB.js} +1 -1
- package/dist/client/assets/{folder-icon-BMW103zr.js → folder-icon-s_xB5zRI.js} +1 -1
- package/dist/client/assets/{form-CmqshIy6.js → form-D6PYqRbd.js} +1 -1
- package/dist/client/assets/{general-_Duuf3bJ.js → general-BPPsQyiV.js} +1 -1
- package/dist/client/assets/{github-icon-2e-2LnS_.js → github-icon-B99drnXh.js} +1 -1
- package/dist/client/assets/{hooks-C6VZL2iB.js → hooks-b4KT4QM3.js} +1 -1
- package/dist/client/assets/{index-LQHBpOE1.js → index-BLnFneGf.js} +1 -1
- package/dist/client/assets/{index-a5mBZaVh.js → index-BOPkC2j-.js} +1 -1
- package/dist/client/assets/index-BXPAtEBq.js +1 -0
- package/dist/client/assets/{index-CsVcwu3N.js → index-Bl_g7jZS.js} +1 -1
- package/dist/client/assets/{index-DQpqPLbf.js → index-BowyqHsG.js} +1 -1
- package/dist/client/assets/{index-VUBQd1QI.js → index-Byx2pRmC.js} +4 -4
- package/dist/client/assets/{index-DR8_g0My.js → index-CsCqMGDA.js} +1 -1
- package/dist/client/assets/{index-DyTxImm_.js → index-DGnV1pVM.js} +1 -1
- package/dist/client/assets/{index-SqEqLylR.js → index-DJNj_4wi.js} +1 -1
- package/dist/client/assets/{index-Bb8aArMr.js → index-Di6eWooH.js} +60 -60
- package/dist/client/assets/{index-C4UI-M__.js → index-PiHaJx_C.js} +1 -1
- package/dist/client/assets/{index-Co6wudo0.js → index-hIfwEZtB.js} +1 -1
- package/dist/client/assets/{index-redirect-CIA3ZXXN.js → index-redirect-DYk-nRVL.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-BbfQOWBF.js → infiniteQueryObserver-f1Mg7m56.js} +1 -1
- package/dist/client/assets/{infra-billing-D2OZ__2N.js → infra-billing-DI5KBT8c.js} +1 -1
- package/dist/client/assets/{input-BGAt3C98.js → input-C_xB1yG3.js} +1 -1
- package/dist/client/assets/{integration-icon-BlDF5_6Y.js → integration-icon-DZ8Y6sMt.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BXl4x_yP.js → invite-member-dialog-CAjrXPwV.js} +1 -1
- package/dist/client/assets/{label-Be-W0W9u.js → label-Blftr3En.js} +1 -1
- package/dist/client/assets/{layout-CbLE6lYS.js → layout-BO7PirZP.js} +1 -1
- package/dist/client/assets/{login-hhey_rUf.js → login-9K2GwDxa.js} +1 -1
- package/dist/client/assets/{markdown-zD6dAvSI.js → markdown-htg7W98G.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-Ds9xwKQt.js → mcp-app-renderer-C4rMJv7P.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BGBOLuhT.js → mcp-oauth-De161Gif.js} +1 -1
- package/dist/client/assets/{members-CENgiCtQ.js → members-AIXa7ftr.js} +1 -1
- package/dist/client/assets/{monaco-editor-DMMM0u_X.js → monaco-editor-D5wA_jK1.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DzyLUriY.js → monitoring-stats-row-Cp6q_jYB.js} +1 -1
- package/dist/client/assets/{multi-select-DMjvMCsJ.js → multi-select-Bx_buGuu.js} +1 -1
- package/dist/client/assets/{oauth-callback-CkKCUZpG.js → oauth-callback-CyzcCrM7.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-e4OumHEl.js → oauth-callback-ai-provider-DtoEmSsC.js} +1 -1
- package/dist/client/assets/{onboarding-G9wYr4oI.js → onboarding-D8AEYxv4.js} +1 -1
- package/dist/client/assets/{org-layout-BmnTp6bM.js → org-layout-BFiiuFZn.js} +1 -1
- package/dist/client/assets/{organization-choice-DSe8R925.js → organization-choice-CpemJcb4.js} +1 -1
- package/dist/client/assets/{orgs-8WgzbPAi.js → orgs-CzixhYYe.js} +1 -1
- package/dist/client/assets/{page-seo-form-DChA5BXz.js → page-seo-form-CVnOe5gs.js} +1 -1
- package/dist/client/assets/{popover-DYhzFl4_.js → popover-Brk4eSJE.js} +1 -1
- package/dist/client/assets/{post-calendar-C8-6lp6T.js → post-calendar-DopvucTb.js} +1 -1
- package/dist/client/assets/{post-editor-7jtKP3Nd.js → post-editor-Yfz-5ovJ.js} +1 -1
- package/dist/client/assets/{primitives-Bn6FpBDX.js → primitives-DsuPOFEy.js} +1 -1
- package/dist/client/assets/{profile-C0_uGzFe.js → profile-Bl0Q_gwt.js} +1 -1
- package/dist/client/assets/{project-app-view-C1SzAIe6.js → project-app-view-DG08ufF_.js} +1 -1
- package/dist/client/assets/{project-icon-ex8R4uHN.js → project-icon-FvFivmfl.js} +1 -1
- package/dist/client/assets/{prompts-DhN7omtV.js → prompts-nGbx68yG.js} +1 -1
- package/dist/client/assets/record-editor-CH3c8ZA9.js +1 -0
- package/dist/client/assets/redirect-editor-CyJ7GG7m.js +1 -0
- package/dist/client/assets/registry-Cvk1zzb3.js +2 -0
- package/dist/client/assets/{registry-layout-DXoZh7sU.js → registry-layout-fiw4zfbz.js} +1 -1
- package/dist/client/assets/{reports-nlk7gGwz.js → reports-CPZEEPeA.js} +1 -1
- package/dist/client/assets/{repositories-DMTTzNIB.js → repositories-BWXMUElK.js} +1 -1
- package/dist/client/assets/{repository-import-picker-DSQ3IIhS.js → repository-import-picker-BV9RnTSy.js} +1 -1
- package/dist/client/assets/{repository-picker-x8SDlmDL.js → repository-picker-BCQoMPuh.js} +1 -1
- package/dist/client/assets/{require-capability-DXnKRjPe.js → require-capability-BR8x5kxT.js} +1 -1
- package/dist/client/assets/{required-auth-layout-OL7D9Vjj.js → required-auth-layout-HH2bVNBU.js} +1 -1
- package/dist/client/assets/{reset-password-DrFO5u8O.js → reset-password-BcmztWBA.js} +1 -1
- package/dist/client/assets/{review-settings-_n8cxUT3.js → review-settings-DsvcuSGL.js} +1 -1
- package/dist/client/assets/{roles-IAbYWFA-.js → roles-COTP94rw.js} +1 -1
- package/dist/client/assets/{schema-DLlmVJMF.js → schema-japUOE_t.js} +1 -1
- package/dist/client/assets/{scroll-area-CyMxSUbK.js → scroll-area-D_kMudvf.js} +1 -1
- package/dist/client/assets/{search-input-C0-8I3qy.js → search-input-BWcQ33a7.js} +1 -1
- package/dist/client/assets/{secrets-_Igxb9YO.js → secrets-BSQjQh0P.js} +1 -1
- package/dist/client/assets/{sections-editor-Ce8Te6oG.js → sections-editor-D-RkJP16.js} +1 -1
- package/dist/client/assets/{select-vif3tL-Q.js → select-Bry_eRAa.js} +1 -1
- package/dist/client/assets/{select-model-Dz3oq-ew.js → select-model-D9FmitIE.js} +1 -1
- package/dist/client/assets/{self-tool-result-BW8IKuXG.js → self-tool-result-BfrV1Xz8.js} +1 -1
- package/dist/client/assets/{seo-editor-DKjhnSnG.js → seo-editor-BrXiaNIN.js} +1 -1
- package/dist/client/assets/settings-layout-Q_3ayXHZ.js +1 -0
- package/dist/client/assets/{settings-sidebar-B3bdWk8d.js → settings-sidebar-D4yrI8rl.js} +1 -1
- package/dist/client/assets/{shell-controls-Bubx5GwM.js → shell-controls-BaxRvMFj.js} +1 -1
- package/dist/client/assets/{shell-layout-DSvk2D7T.js → shell-layout-DFrR6tdX.js} +1 -1
- package/dist/client/assets/{skill-preview-BkPgENnB.js → skill-preview-B5YPdiFy.js} +1 -1
- package/dist/client/assets/{skills-qYGcg9Nn.js → skills-DMaRc3HE.js} +1 -1
- package/dist/client/assets/{sso-eBJbfG6m.js → sso-BW1JmFsY.js} +1 -1
- package/dist/client/assets/{store-mnslcH6m.js → store-DLooIHsR.js} +1 -1
- package/dist/client/assets/store-registry-BGd5ZVU6.js +2 -0
- package/dist/client/assets/{switch-2lRLfiu1.js → switch-CFcBe-39.js} +1 -1
- package/dist/client/assets/{synced-repos-DVkj4GiH.js → synced-repos-D7XkPIWc.js} +1 -1
- package/dist/client/assets/{table-jewwyo1w.js → table-CsCBd0lQ.js} +1 -1
- package/dist/client/assets/{tabs-BH8PaWvJ.js → tabs-CiF_JE3E.js} +1 -1
- package/dist/client/assets/{task-board-owENEs4d.js → task-board-DUw5IESw.js} +1 -1
- package/dist/client/assets/{task-route-BC4fC8dN.js → task-route-B2F1kPjG.js} +1 -1
- package/dist/client/assets/{tasks-aIBQQ7LG.js → tasks-DlhF8s2O.js} +1 -1
- package/dist/client/assets/{textarea-Cz5uCTMx.js → textarea-D7oZSRuU.js} +1 -1
- package/dist/client/assets/{thread-intent-BMOAdgnN.js → thread-intent-D8peSDUi.js} +1 -1
- package/dist/client/assets/{thread-route-B9iW6Km5.js → thread-route-CQ-Toekd.js} +1 -1
- package/dist/client/assets/{toggle-group-BSAI9-Qw.js → toggle-group-C72d71bC.js} +1 -1
- package/dist/client/assets/{toolbar-B8sUwOdc.js → toolbar-JNnsJplx.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-B2-smK0F.js → toolbar-icon-button-BZmPXrm7.js} +1 -1
- package/dist/client/assets/{track-D02qBkjM.js → track-CVU5crkS.js} +1 -1
- package/dist/client/assets/{types-CdPsJIvO.js → types-ZI4hLB92.js} +1 -1
- package/dist/client/assets/{use-ai-providers--rHMvzLz.js → use-ai-providers-BizNuqZ_.js} +1 -1
- package/dist/client/assets/{use-automations-tU3cTt-r.js → use-automations-YKeF0GSq.js} +1 -1
- package/dist/client/assets/{use-autosave-Cmfr4p18.js → use-autosave-D-mlBHqz.js} +1 -1
- package/dist/client/assets/{use-connection-DvJRkFmg.js → use-connection-DyoJ3842.js} +1 -1
- package/dist/client/assets/{use-copy-DXSeoqHy.js → use-copy--zGmPPwD.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BI9fNhQH.js → use-create-virtual-mcp-D0x4cwPb.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-Bg1cUpNf.js → use-date-fns-locale--wtOnXlr.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-XnXTl7ZL.js → use-debounced-autosave-BhTrD5fo.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DzkX22Ii.js → use-debounced-value-jkfC9hMo.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Bz4MAIMA.js → use-decopilot-events-D8v0JTxh.js} +1 -1
- package/dist/client/assets/{use-delete-connection-SFGjjYuE.js → use-delete-connection-DD8d7DNZ.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-h8fv2yVx.js → use-deployment-admin-DIFYfbCd.js} +1 -1
- package/dist/client/assets/{use-destination-route-CdOKevbC.js → use-destination-route-Dumfqkh7.js} +1 -1
- package/dist/client/assets/{use-file-configs-AGW0eECw.js → use-file-configs-D9SysYxD.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-171C8-ng.js → use-infinite-scroll-BcPSZiNZ.js} +1 -1
- package/dist/client/assets/{use-join-requests-ikVE1e0O.js → use-join-requests-BxUq1QXo.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CAqtoHJY.js → use-mcp-auth-status-BLT8d1nh.js} +1 -1
- package/dist/client/assets/{use-mcp-client-C5dhZR3e.js → use-mcp-client-zU4b6By6.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-rgyVkOBD.js → use-mcp-prompts-DdlH2qST.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-dAZWIyiM.js → use-mcp-tools-lB_BBgJh.js} +1 -1
- package/dist/client/assets/{use-members-D32PB5N0.js → use-members-NeCLLrrB.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BThAfwFI.js → use-navigate-to-agent-vf6CPdOT.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-qzjIoS6g.js → use-org-auth-client-B5-qRoTn.js} +1 -1
- package/dist/client/assets/{use-org-notice-sTgCvjfb.js → use-org-notice-DWcI6MY4.js} +1 -1
- package/dist/client/assets/{use-org-sso-CU515a7l.js → use-org-sso-HqaCDMyO.js} +1 -1
- package/dist/client/assets/{use-organization-roles-Bs9JrneR.js → use-organization-roles-DlCblX5Z.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CiTHivvp.js → use-organization-settings-CTeI3cWs.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-CF8aiiM2.js → use-panel-navigate-D3xoeR8G.js} +1 -1
- package/dist/client/assets/{use-registry-connections-Cpiw1HAD.js → use-registry-connections-BVgKKT5B.js} +1 -1
- package/dist/client/assets/{use-secrets-B8ulP8DF.js → use-secrets-Cc8pMQzW.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-RVRWKPML.js → use-section-preview-base-BoNPCZQq.js} +1 -1
- package/dist/client/assets/{use-status-sounds-k-N5cw1Y.js → use-status-sounds-Cw4NWpev.js} +1 -1
- package/dist/client/assets/{use-tags-DAWUpbd7.js → use-tags-yrL3KCY2.js} +1 -1
- package/dist/client/assets/{use-view-mode-BjfgqyMX.js → use-view-mode-D8T6JwXp.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CtjcIygY.js → use-virtual-mcp-xxFiywxX.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CGwSzAR5.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-oataxVbC.js +1 -0
- package/dist/client/assets/{users-9JAHk-lb.js → users-jQKQ0AmQ.js} +1 -1
- package/dist/client/assets/{variant-calendar-DgDQm7Wx.js → variant-calendar-peHOjrOX.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Dlf9dFS2.js → view-mode-toggle-BoDOdBNJ.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/api-keys-4ZdpS7lJ.js +0 -1
- package/dist/client/assets/index-BlF62Qfm.js +0 -1
- package/dist/client/assets/record-editor-qdfO7H0C.js +0 -1
- package/dist/client/assets/redirect-editor-mAfSUxhQ.js +0 -1
- package/dist/client/assets/registry-CYOhx7no.js +0 -2
- package/dist/client/assets/settings-layout-CoN88C9q.js +0 -1
- package/dist/client/assets/store-registry-CiUFu0XV.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DmFEvb15.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BrJU9R66.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1965,7 +1965,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var ra1=D(()=>{yy()});f
|
|
|
1965
1965
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Hh`
|
|
1966
1966
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
1967
1967
|
`.execute($)}}async function O8$($){await C94($),await _94($);let Z=new N8$({db:$,provider:{getMigrations:()=>Promise.resolve(Sr0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function v94($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await $p0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await ZD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await O8$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function x94(){let $=l$(),Z=new N8$({db:$.db,provider:{getMigrations:()=>Promise.resolve(Sr0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var L8$=D(()=>{U8$();Zp0();AQ()});async function eX0($){let Z={...process.env},Q=c60($,Z);console.log(sA1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?Ve1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => ($X0(),eQ0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Zp0(),Se1));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (AQ(),ps1)),{migrateToLatest:F}=await Promise.resolve().then(() => (L8$(),D8$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return aa1(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Cr0=D(()=>{yy();ke1();A$()});var z8$={};e(z8$,{updateService:()=>$z,subscribeCliState:()=>xr0,setTuiConsoleIntercepted:()=>$Y0,setServerUrl:()=>wt,setMigrationsDone:()=>Lt,setDevMode:()=>b94,resetCliStateForTests:()=>f94,isTuiConsoleIntercepted:()=>ZY0,getCliState:()=>vr0,addLogEntry:()=>KD});function w8$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function j8$(){return{services:w8$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function f94(){OY=j8$()}function Dt(){for(let $ of _r0)$()}function vr0(){return OY}function xr0($){return _r0.add($),()=>_r0.delete($)}function $z($){OY={...OY,services:OY.services.map((Z)=>Z.name===$.name?$:Z)},Dt()}function Lt(){OY={...OY,migrationsStatus:"done"},Dt()}function wt($){OY={...OY,serverUrl:$},Dt()}function KD($){let Z=[...OY.logs,$];OY={...OY,logs:Z.length>500?Z.slice(-500):Z},Dt()}function b94(){OY={...OY,services:[...w8$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Dt()}function $Y0($){E8$=$}function ZY0(){return E8$}var OY,_r0,E8$=!1;var Zz=D(()=>{OY=j8$();_r0=new Set});import{createServer as P8$}from"net";function y94($){return new Promise((Z)=>{let Q=P8$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function jt($){if(await y94($))return $;let Z=await new Promise((Q,X)=>{let Y=P8$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var fr0=()=>{};var yr0={};e(yr0,{startDevServer:()=>h94,pipeToLogStore:()=>br0});import{join as g94}from"path";function br0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
|
|
1968
|
-
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;KD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)KD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function h94($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await jt(Number(Y)+1):await jt(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await eX0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)$z({name:L.name,status:"ready",port:L.port});Lt();let F=g94(import.meta.dir,"..","..","..","..",".."),U=Q===!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:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)br0(N.stdout),br0(N.stderr);wt(J),$z({name:"Vite",status:"ready",port:Number(Y)}),$z({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => ($X0(),eQ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var gr0=D(()=>{Cr0();Zz();fr0()});var QY0;var hr0=D(()=>{QY0={name:"decocms",version:"4.357.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as l94,Text as A8$}from"ink";import{jsx as c94,jsxs as T8$}from"react/jsx-runtime";function R8$({version:$}){return T8$(l94,{flexDirection:"column",marginTop:1,children:[RX0.map((Z,Q)=>c94(A8$,{color:qX0[Q],children:Z},Q)),T8$(A8$,{dimColor:!0,children:[" v",$]})]})}var q8$=D(()=>{Zt()});import{Box as Qz,Text as WD}from"ink";import{Spinner as m94}from"@inkjs/ui";import{jsx as CJ,jsxs as Fh}from"react/jsx-runtime";function I8$({status:$}){if($==="pending")return CJ(m94,{label:""});return CJ(WD,{color:"green",children:"\u2713"})}function d94($){return`${$.name}: ${$.port||"...."}`}function M8$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Fh(Qz,{flexDirection:"column",paddingBottom:1,children:[CJ(R8$,{version:QY0.version}),CJ(Qz,{marginBottom:1,children:CJ(WD,{dimColor:!0,children:"\u2500".repeat(80)})}),CJ(Qz,{children:Fh(WD,{dimColor:!0,children:["Home: ",Q]})}),Fh(Qz,{gap:2,children:[$.map((Y)=>Fh(Qz,{gap:1,children:[CJ(WD,{children:d94(Y)}),CJ(I8$,{status:Y.status})]},Y.name)),Fh(Qz,{gap:1,children:[CJ(WD,{children:"Migrations"}),CJ(I8$,{status:Z})]})]}),CJ(Qz,{children:X?Fh(WD,{children:["Open in browser: ",CJ(WD,{color:"cyan",children:X})]}):CJ(WD,{dimColor:!0,children:"Starting..."})})]})}var V8$=D(()=>{hr0();q8$()});import{Box as i94,Text as Et}from"ink";import{jsx as ur0,jsxs as lr0}from"react/jsx-runtime";function p94($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function k8$({logs:$}){return ur0(i94,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ur0(Et,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return lr0(Et,{children:[lr0(Et,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ur0(Et,{color:p94(Z.status),children:Z.status}),lr0(Et,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var S8$=()=>{};var cr0={};e(cr0,{App:()=>o94});import{Box as n94}from"ink";import{useSyncExternalStore as t94}from"react";import{jsx as C8$,jsxs as r94}from"react/jsx-runtime";function o94({home:$}){let Z=t94(xr0,vr0);return r94(n94,{flexDirection:"column",children:[C8$(M8$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),C8$(k8$,{logs:Z.logs})]})}var mr0=D(()=>{V8$();S8$();Zz()});var YG="thread-gate",GN="decopilot-hosted-harness",KN="decopilot-hosted-harness-sandboxed",JG="automations",HD="background-tools",Xz="task-board-github-reads";var _8$="11";function v8$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:_8$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var x8$=()=>{};import a94 from"pg";async function b8$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=s94}=$,Y=$.log??((W)=>console.log(W)),J=new a94.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[f8$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(e94)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[f8$.toString()])}catch{}await J.end().catch(()=>{})}}var f8$=8314027461559302n,s94=600000,e94=500;var y8$=D(()=>{Z8()});function $Z4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function dr0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function g8$(){let $=$Z4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:dr0($,"--cpu-prof-dir")??process.cwd(),name:dr0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(dr0($,"--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 h8$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=rE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),XY0=setInterval(()=>void Z().catch(()=>{}),$),XY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(XY0)clearInterval(XY0)}}var XY0;var u8$=()=>{};import*as ZZ4 from"bun:jsc";function l8$(){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{QZ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=XZ4()?.traces??[]}catch{}if(G>$&&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(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var QZ4,XZ4;var c8$=D(()=>{({startSamplingProfiler:QZ4,samplingProfilerStackTraces:XZ4}=ZZ4)});function m8$(){g8$();let $=[h8$(),gs1(),l8$()];return()=>{for(let Z of $)Z()}}var d8$=D(()=>{pi0();u8$();c8$()});var Yz=v((i8$)=>{Object.defineProperty(i8$,"__esModule",{value:!0});i8$.RepublishHeaders=i8$.DirectMsgHeaders=i8$.JsHeaders=i8$.AdvisoryKind=void 0;i8$.isOrderedPushConsumerOptions=YZ4;i8$.isPullConsumer=JZ4;i8$.isPushConsumer=GZ4;i8$.isBoundPushConsumerOptions=KZ4;function YZ4($){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 JZ4($){return $.isPullConsumer()}function GZ4($){return $.isPushConsumer()}function KZ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}i8$.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"};i8$.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"};i8$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};i8$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var _J=v((n8$)=>{Object.defineProperty(n8$,"__esModule",{value:!0});n8$.TD=n8$.TE=n8$.Empty=void 0;n8$.encode=LZ4;n8$.decode=wZ4;n8$.Empty=new Uint8Array(0);n8$.TE=new TextEncoder;n8$.TD=new TextDecoder;function DZ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function LZ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(n8$.TE.encode($[Q]));if(Z.length===0)return n8$.Empty;if(Z.length===1)return Z[0];return DZ4(...Z)}function wZ4($){if(!$||$.length===0)return"";return n8$.TD.decode($)}});var vJ=v((r8$)=>{Object.defineProperty(r8$,"__esModule",{value:!0});r8$.errors=r8$.PermissionViolationError=r8$.NoRespondersError=r8$.TimeoutError=r8$.RequestError=r8$.ProtocolError=r8$.ConnectionError=r8$.DrainingConnectionError=r8$.ClosedConnectionError=r8$.AuthorizationError=r8$.UserAuthenticationExpiredError=r8$.InvalidOperationError=r8$.InvalidArgumentError=r8$.InvalidSubjectError=void 0;class pr0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}r8$.InvalidSubjectError=pr0;class YY0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new YY0(`${$} ${Z}`,Q)}}r8$.InvalidArgumentError=YY0;class nr0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}r8$.InvalidOperationError=nr0;class JY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new JY0($);return null}}r8$.UserAuthenticationExpiredError=JY0;class GY0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new GY0($);return null}}r8$.AuthorizationError=GY0;class tr0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}r8$.ClosedConnectionError=tr0;class or0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}r8$.DrainingConnectionError=or0;class rr0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}r8$.ConnectionError=rr0;class ar0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}r8$.ProtocolError=ar0;class sr0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof KY0}}r8$.RequestError=sr0;class er0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}r8$.TimeoutError=er0;class KY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}r8$.NoRespondersError=KY0;class WY0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new WY0($,Q,X,Y)}}r8$.PermissionViolationError=WY0;r8$.errors={AuthorizationError:GY0,ClosedConnectionError:tr0,ConnectionError:rr0,DrainingConnectionError:or0,InvalidArgumentError:YY0,InvalidOperationError:nr0,InvalidSubjectError:pr0,NoRespondersError:KY0,PermissionViolationError:WY0,ProtocolError:ar0,RequestError:sr0,TimeoutError:er0,UserAuthenticationExpiredError:JY0}});var CK=v((Z4$)=>{Object.defineProperty(Z4$,"__esModule",{value:!0});Z4$.SimpleMutex=Z4$.Perf=void 0;Z4$.extend=xZ4;Z4$.render=fZ4;Z4$.timeout=bZ4;Z4$.delay=yZ4;Z4$.deadline=gZ4;Z4$.deferred=Za0;Z4$.debugDeferred=hZ4;Z4$.shuffle=uZ4;Z4$.collect=lZ4;Z4$.jitter=$4$;Z4$.backoff=cZ4;Z4$.nanos=mZ4;Z4$.millis=dZ4;Z4$.randomToken=nZ4;var vZ4=_J(),$a0=vJ();function xZ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function fZ4($){return vZ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function bZ4($,Z=!0){let Q=Z?new $a0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new $a0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function yZ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function gZ4($,Z=1000){let Q=Za0(),X=setTimeout(()=>{Q.reject(new $a0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Za0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function hZ4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function uZ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function lZ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class s8${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}Z4$.Perf=s8$;class e8${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Za0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Z4$.SimpleMutex=e8$;function $4$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function cZ4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return $4$(Q>Z?$[Z]:$[Q])}}}function mZ4($){return $*1e6}function dZ4($){return Math.floor($/1e6)}var iZ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",WN=new Uint8Array(62);for(let $=0;$<62;$++)WN[$]=iZ4.charCodeAt($);var pZ4=218340105584896;function nZ4(){let $=Math.floor(Math.random()*pZ4),Z=$%62,Q=WN[Z];$=($-Z)/62,Z=$%62;let X=WN[Z];$=($-Z)/62,Z=$%62;let Y=WN[Z];$=($-Z)/62,Z=$%62;let J=WN[Z];$=($-Z)/62,Z=$%62;let G=WN[Z];$=($-Z)/62,Z=$%62;let K=WN[Z];$=($-Z)/62,Z=$%62;let W=WN[Z];$=($-Z)/62;let H=WN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var H4$=v((K4$)=>{Object.defineProperty(K4$,"__esModule",{value:!0});K4$.nuid=K4$.NuidImpl=void 0;var H74="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",FD=62,FY0=12,J4$=10,X4$=33,F74=333,Y4$=FY0+J4$,Xa0=new Uint8Array(FD);for(let $=0;$<FD;$++)Xa0[$]=H74.charCodeAt($);var HY0=4294967296,G4$=BigInt(FD)**BigInt(J4$),zt=Number(G4$/(1n<<32n)),Qa0=Number(G4$%(1n<<32n));function U74($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function N74($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else U74($)}class Ya0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Y4$),this.cbuf=new Uint8Array(FY0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zt+1)),this.seqLo=Math.floor(Math.random()*HY0);while($++<8&&this.seqHi===zt&&this.seqLo>=Qa0);if(this.seqHi===zt&&this.seqLo>=Qa0)this.seqLo=0;this.inc=Math.random()*(F74-X4$)+X4$|0}setPre(){N74(this.cbuf);for(let $=0;$<FY0;$++)this.buf[$]=Xa0[this.cbuf[$]%FD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=Y4$-1;Q>=FY0;Q--){let X=Math.floor($/FD),J=($-X*FD)*HY0+Z,G=Math.floor(J/FD),K=J-G*FD;this.buf[Q]=Xa0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=HY0)this.seqLo-=HY0,this.seqHi+=1;if(this.seqHi>zt||this.seqHi===zt&&this.seqLo>=Qa0)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()}}K4$.NuidImpl=Ya0;K4$.nuid=new Ya0});var B4$=v((U4$)=>{Object.defineProperty(U4$,"__esModule",{value:!0});U4$.nuid=U4$.Nuid=void 0;var F4$=H4$();U4$.Nuid=F4$.NuidImpl;U4$.nuid=F4$.nuid});var NY0=v((UY0)=>{Object.defineProperty(UY0,"__esModule",{value:!0});UY0.nuid=UY0.Nuid=void 0;var O4$=B4$();Object.defineProperty(UY0,"Nuid",{enumerable:!0,get:function(){return O4$.Nuid}});Object.defineProperty(UY0,"nuid",{enumerable:!0,get:function(){return O4$.nuid}})});var UD=v((D4$)=>{Object.defineProperty(D4$,"__esModule",{value:!0});D4$.DEFAULT_HOST=D4$.DEFAULT_PORT=D4$.Match=void 0;D4$.syncIterator=j74;D4$.createInbox=E74;var L74=NY0(),w74=vJ();D4$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function j74($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function E74($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w74.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${L74.nuid.next()}`}D4$.DEFAULT_PORT=4222;D4$.DEFAULT_HOST="127.0.0.1"});var Pt=v((E4$)=>{Object.defineProperty(E4$,"__esModule",{value:!0});E4$.DataBuffer=void 0;var w4$=_J();class j4${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return w4$.TE.encode($)}static toAscii($){return w4$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}E4$.DataBuffer=j4$});var Jz=v((A4$)=>{Object.defineProperty(A4$,"__esModule",{value:!0});A4$.LF=A4$.CR=A4$.CRLF=A4$.CR_LF_LEN=A4$.CR_LF=void 0;A4$.setTransportFactory=M74;A4$.defaultPort=V74;A4$.getUrlParseFn=k74;A4$.newTransport=S74;A4$.getResolveFn=C74;A4$.protoLen=P4$;A4$.extractProtocolMessage=_74;var R74=_J(),q74=UD(),I74=Pt(),xJ;function M74($){xJ=$}function V74(){return xJ!==void 0&&xJ.defaultPort!==void 0?xJ.defaultPort:q74.DEFAULT_PORT}function k74(){return xJ!==void 0&&xJ.urlParseFn?xJ.urlParseFn:void 0}function S74(){if(!xJ||typeof xJ.factory!=="function")throw Error("transport fn is not set");return xJ.factory()}function C74(){return xJ!==void 0&&xJ.dnsResolveFn?xJ.dnsResolveFn:void 0}A4$.CR_LF=`\r
|
|
1968
|
+
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;KD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)KD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function h94($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await jt(Number(Y)+1):await jt(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await eX0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)$z({name:L.name,status:"ready",port:L.port});Lt();let F=g94(import.meta.dir,"..","..","..","..",".."),U=Q===!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:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)br0(N.stdout),br0(N.stderr);wt(J),$z({name:"Vite",status:"ready",port:Number(Y)}),$z({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => ($X0(),eQ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var gr0=D(()=>{Cr0();Zz();fr0()});var QY0;var hr0=D(()=>{QY0={name:"decocms",version:"4.357.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as l94,Text as A8$}from"ink";import{jsx as c94,jsxs as T8$}from"react/jsx-runtime";function R8$({version:$}){return T8$(l94,{flexDirection:"column",marginTop:1,children:[RX0.map((Z,Q)=>c94(A8$,{color:qX0[Q],children:Z},Q)),T8$(A8$,{dimColor:!0,children:[" v",$]})]})}var q8$=D(()=>{Zt()});import{Box as Qz,Text as WD}from"ink";import{Spinner as m94}from"@inkjs/ui";import{jsx as CJ,jsxs as Fh}from"react/jsx-runtime";function I8$({status:$}){if($==="pending")return CJ(m94,{label:""});return CJ(WD,{color:"green",children:"\u2713"})}function d94($){return`${$.name}: ${$.port||"...."}`}function M8$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Fh(Qz,{flexDirection:"column",paddingBottom:1,children:[CJ(R8$,{version:QY0.version}),CJ(Qz,{marginBottom:1,children:CJ(WD,{dimColor:!0,children:"\u2500".repeat(80)})}),CJ(Qz,{children:Fh(WD,{dimColor:!0,children:["Home: ",Q]})}),Fh(Qz,{gap:2,children:[$.map((Y)=>Fh(Qz,{gap:1,children:[CJ(WD,{children:d94(Y)}),CJ(I8$,{status:Y.status})]},Y.name)),Fh(Qz,{gap:1,children:[CJ(WD,{children:"Migrations"}),CJ(I8$,{status:Z})]})]}),CJ(Qz,{children:X?Fh(WD,{children:["Open in browser: ",CJ(WD,{color:"cyan",children:X})]}):CJ(WD,{dimColor:!0,children:"Starting..."})})]})}var V8$=D(()=>{hr0();q8$()});import{Box as i94,Text as Et}from"ink";import{jsx as ur0,jsxs as lr0}from"react/jsx-runtime";function p94($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function k8$({logs:$}){return ur0(i94,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return ur0(Et,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return lr0(Et,{children:[lr0(Et,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ur0(Et,{color:p94(Z.status),children:Z.status}),lr0(Et,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var S8$=()=>{};var cr0={};e(cr0,{App:()=>o94});import{Box as n94}from"ink";import{useSyncExternalStore as t94}from"react";import{jsx as C8$,jsxs as r94}from"react/jsx-runtime";function o94({home:$}){let Z=t94(xr0,vr0);return r94(n94,{flexDirection:"column",children:[C8$(M8$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),C8$(k8$,{logs:Z.logs})]})}var mr0=D(()=>{V8$();S8$();Zz()});var YG="thread-gate",GN="decopilot-hosted-harness",KN="decopilot-hosted-harness-sandboxed",JG="automations",HD="background-tools",Xz="task-board-github-reads";var _8$="11";function v8$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:_8$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var x8$=()=>{};import a94 from"pg";async function b8$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=s94}=$,Y=$.log??((W)=>console.log(W)),J=new a94.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[f8$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(e94)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[f8$.toString()])}catch{}await J.end().catch(()=>{})}}var f8$=8314027461559302n,s94=600000,e94=500;var y8$=D(()=>{Z8()});function $Z4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function dr0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function g8$(){let $=$Z4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:dr0($,"--cpu-prof-dir")??process.cwd(),name:dr0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(dr0($,"--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 h8$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=rE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),XY0=setInterval(()=>void Z().catch(()=>{}),$),XY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(XY0)clearInterval(XY0)}}var XY0;var u8$=()=>{};import*as ZZ4 from"bun:jsc";function l8$(){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{QZ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=XZ4()?.traces??[]}catch{}if(G>$&&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(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var QZ4,XZ4;var c8$=D(()=>{({startSamplingProfiler:QZ4,samplingProfilerStackTraces:XZ4}=ZZ4)});function m8$(){g8$();let $=[h8$(),gs1(),l8$()];return()=>{for(let Z of $)Z()}}var d8$=D(()=>{pi0();u8$();c8$()});var Yz=v((i8$)=>{Object.defineProperty(i8$,"__esModule",{value:!0});i8$.RepublishHeaders=i8$.DirectMsgHeaders=i8$.JsHeaders=i8$.AdvisoryKind=void 0;i8$.isOrderedPushConsumerOptions=YZ4;i8$.isPullConsumer=JZ4;i8$.isPushConsumer=GZ4;i8$.isBoundPushConsumerOptions=KZ4;function YZ4($){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 JZ4($){return $.isPullConsumer()}function GZ4($){return $.isPushConsumer()}function KZ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}i8$.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"};i8$.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"};i8$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};i8$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var _J=v((n8$)=>{Object.defineProperty(n8$,"__esModule",{value:!0});n8$.TD=n8$.TE=n8$.Empty=void 0;n8$.encode=LZ4;n8$.decode=wZ4;n8$.Empty=new Uint8Array(0);n8$.TE=new TextEncoder;n8$.TD=new TextDecoder;function DZ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function LZ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(n8$.TE.encode($[Q]));if(Z.length===0)return n8$.Empty;if(Z.length===1)return Z[0];return DZ4(...Z)}function wZ4($){if(!$||$.length===0)return"";return n8$.TD.decode($)}});var vJ=v((r8$)=>{Object.defineProperty(r8$,"__esModule",{value:!0});r8$.errors=r8$.PermissionViolationError=r8$.NoRespondersError=r8$.TimeoutError=r8$.RequestError=r8$.ProtocolError=r8$.ConnectionError=r8$.DrainingConnectionError=r8$.ClosedConnectionError=r8$.AuthorizationError=r8$.UserAuthenticationExpiredError=r8$.InvalidOperationError=r8$.InvalidArgumentError=r8$.InvalidSubjectError=void 0;class pr0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}r8$.InvalidSubjectError=pr0;class YY0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new YY0(`${$} ${Z}`,Q)}}r8$.InvalidArgumentError=YY0;class nr0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}r8$.InvalidOperationError=nr0;class JY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new JY0($);return null}}r8$.UserAuthenticationExpiredError=JY0;class GY0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new GY0($);return null}}r8$.AuthorizationError=GY0;class tr0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}r8$.ClosedConnectionError=tr0;class or0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}r8$.DrainingConnectionError=or0;class rr0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}r8$.ConnectionError=rr0;class ar0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}r8$.ProtocolError=ar0;class sr0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof KY0}}r8$.RequestError=sr0;class er0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}r8$.TimeoutError=er0;class KY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}r8$.NoRespondersError=KY0;class WY0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new WY0($,Q,X,Y)}}r8$.PermissionViolationError=WY0;r8$.errors={AuthorizationError:GY0,ClosedConnectionError:tr0,ConnectionError:rr0,DrainingConnectionError:or0,InvalidArgumentError:YY0,InvalidOperationError:nr0,InvalidSubjectError:pr0,NoRespondersError:KY0,PermissionViolationError:WY0,ProtocolError:ar0,RequestError:sr0,TimeoutError:er0,UserAuthenticationExpiredError:JY0}});var CK=v((Z4$)=>{Object.defineProperty(Z4$,"__esModule",{value:!0});Z4$.SimpleMutex=Z4$.Perf=void 0;Z4$.extend=xZ4;Z4$.render=fZ4;Z4$.timeout=bZ4;Z4$.delay=yZ4;Z4$.deadline=gZ4;Z4$.deferred=Za0;Z4$.debugDeferred=hZ4;Z4$.shuffle=uZ4;Z4$.collect=lZ4;Z4$.jitter=$4$;Z4$.backoff=cZ4;Z4$.nanos=mZ4;Z4$.millis=dZ4;Z4$.randomToken=nZ4;var vZ4=_J(),$a0=vJ();function xZ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function fZ4($){return vZ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function bZ4($,Z=!0){let Q=Z?new $a0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new $a0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function yZ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function gZ4($,Z=1000){let Q=Za0(),X=setTimeout(()=>{Q.reject(new $a0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Za0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function hZ4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function uZ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function lZ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class s8${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}Z4$.Perf=s8$;class e8${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Za0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Z4$.SimpleMutex=e8$;function $4$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function cZ4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return $4$(Q>Z?$[Z]:$[Q])}}}function mZ4($){return $*1e6}function dZ4($){return Math.floor($/1e6)}var iZ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",WN=new Uint8Array(62);for(let $=0;$<62;$++)WN[$]=iZ4.charCodeAt($);var pZ4=218340105584896;function nZ4(){let $=Math.floor(Math.random()*pZ4),Z=$%62,Q=WN[Z];$=($-Z)/62,Z=$%62;let X=WN[Z];$=($-Z)/62,Z=$%62;let Y=WN[Z];$=($-Z)/62,Z=$%62;let J=WN[Z];$=($-Z)/62,Z=$%62;let G=WN[Z];$=($-Z)/62,Z=$%62;let K=WN[Z];$=($-Z)/62,Z=$%62;let W=WN[Z];$=($-Z)/62;let H=WN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var H4$=v((K4$)=>{Object.defineProperty(K4$,"__esModule",{value:!0});K4$.nuid=K4$.NuidImpl=void 0;var H74="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",FD=62,FY0=12,J4$=10,X4$=33,F74=333,Y4$=FY0+J4$,Xa0=new Uint8Array(FD);for(let $=0;$<FD;$++)Xa0[$]=H74.charCodeAt($);var HY0=4294967296,G4$=BigInt(FD)**BigInt(J4$),zt=Number(G4$/(1n<<32n)),Qa0=Number(G4$%(1n<<32n));function U74($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function N74($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else U74($)}class Ya0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Y4$),this.cbuf=new Uint8Array(FY0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zt+1)),this.seqLo=Math.floor(Math.random()*HY0);while($++<8&&this.seqHi===zt&&this.seqLo>=Qa0);if(this.seqHi===zt&&this.seqLo>=Qa0)this.seqLo=0;this.inc=Math.random()*(F74-X4$)+X4$|0}setPre(){N74(this.cbuf);for(let $=0;$<FY0;$++)this.buf[$]=Xa0[this.cbuf[$]%FD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=Y4$-1;Q>=FY0;Q--){let X=Math.floor($/FD),J=($-X*FD)*HY0+Z,G=Math.floor(J/FD),K=J-G*FD;this.buf[Q]=Xa0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=HY0)this.seqLo-=HY0,this.seqHi+=1;if(this.seqHi>zt||this.seqHi===zt&&this.seqLo>=Qa0)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()}}K4$.NuidImpl=Ya0;K4$.nuid=new Ya0});var B4$=v((U4$)=>{Object.defineProperty(U4$,"__esModule",{value:!0});U4$.nuid=U4$.Nuid=void 0;var F4$=H4$();U4$.Nuid=F4$.NuidImpl;U4$.nuid=F4$.nuid});var NY0=v((UY0)=>{Object.defineProperty(UY0,"__esModule",{value:!0});UY0.nuid=UY0.Nuid=void 0;var O4$=B4$();Object.defineProperty(UY0,"Nuid",{enumerable:!0,get:function(){return O4$.Nuid}});Object.defineProperty(UY0,"nuid",{enumerable:!0,get:function(){return O4$.nuid}})});var UD=v((D4$)=>{Object.defineProperty(D4$,"__esModule",{value:!0});D4$.DEFAULT_HOST=D4$.DEFAULT_PORT=D4$.Match=void 0;D4$.syncIterator=j74;D4$.createInbox=E74;var L74=NY0(),w74=vJ();D4$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function j74($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function E74($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w74.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${L74.nuid.next()}`}D4$.DEFAULT_PORT=4222;D4$.DEFAULT_HOST="127.0.0.1"});var Pt=v((E4$)=>{Object.defineProperty(E4$,"__esModule",{value:!0});E4$.DataBuffer=void 0;var w4$=_J();class j4${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return w4$.TE.encode($)}static toAscii($){return w4$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}E4$.DataBuffer=j4$});var Jz=v((A4$)=>{Object.defineProperty(A4$,"__esModule",{value:!0});A4$.LF=A4$.CR=A4$.CRLF=A4$.CR_LF_LEN=A4$.CR_LF=void 0;A4$.setTransportFactory=M74;A4$.defaultPort=V74;A4$.getUrlParseFn=k74;A4$.newTransport=S74;A4$.getResolveFn=C74;A4$.protoLen=P4$;A4$.extractProtocolMessage=_74;var R74=_J(),q74=UD(),I74=Pt(),xJ;function M74($){xJ=$}function V74(){return xJ!==void 0&&xJ.defaultPort!==void 0?xJ.defaultPort:q74.DEFAULT_PORT}function k74(){return xJ!==void 0&&xJ.urlParseFn?xJ.urlParseFn:void 0}function S74(){if(!xJ||typeof xJ.factory!=="function")throw Error("transport fn is not set");return xJ.factory()}function C74(){return xJ!==void 0&&xJ.dnsResolveFn?xJ.dnsResolveFn:void 0}A4$.CR_LF=`\r
|
|
1969
1969
|
`;A4$.CR_LF_LEN=A4$.CR_LF.length;A4$.CRLF=I74.DataBuffer.fromAscii(A4$.CR_LF);A4$.CR=new Uint8Array(A4$.CRLF)[0];A4$.LF=new Uint8Array(A4$.CRLF)[1];function P4$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===A4$.CR&&$[Q]===A4$.LF)return Q+1}return 0}function _74($){let Z=P4$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return R74.TD.decode(X)}return""}});var Ha0=v((S4$)=>{Object.defineProperty(S4$,"__esModule",{value:!0});S4$.ipV4=M4$;S4$.isIP=m74;S4$.parseIP=V4$;var At=4,Gz=16,BY0=48,I4$=57,R4$=65,l74=70,q4$=97,c74=102,Wa0=16777215;function M4$($,Z,Q,X){let Y=new Uint8Array(Gz);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function m74($){return V4$($)!==void 0}function V4$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return k4$($);case":":return d74($)}return}function k4$($){let Z=new Uint8Array(At);for(let Q=0;Q<At;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=i74($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return M4$(Z[0],Z[1],Z[2],Z[3])}function d74($){let Z=new Uint8Array(Gz),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<Gz){let{n:Y,c:J,ok:G}=p74($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=Gz-At)return;if(X+At>Gz)return;let K=k4$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=At;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<Gz){if(Q<0)return;let Y=Gz-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function i74($){let Z=0,Q=0;for(Z=0;Z<$.length&&BY0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=I4$;Z++)if(Q=Q*10+($.charCodeAt(Z)-BY0),Q>=Wa0)return{n:Wa0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function p74($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(BY0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=I4$)Z*=16,Z+=$.charCodeAt(Q)-BY0;else if(q4$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=c74)Z*=16,Z+=$.charCodeAt(Q)-q4$+10;else if(R4$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=l74)Z*=16,Z+=$.charCodeAt(Q)-R4$+10;else break;if(Z>=Wa0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Da0=v((_4$)=>{Object.defineProperty(_4$,"__esModule",{value:!0});_4$.Servers=_4$.ServerImpl=void 0;_4$.isIPV4OrHostname=C4$;_4$.hostPort=Oa0;var Fa0=Jz(),Ua0=CK(),Na0=Ha0(),r74=UD(),a74=vJ();function C4$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Ba0($){return!C4$($)}function s74($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function Oa0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=s74($),Ba0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Ba0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):r74.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Uh{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=Oa0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Na0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${Ba0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Uh(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,Ua0.shuffle)(Z);return this.resolves=Z,Z}}_4$.ServerImpl=Uh;class OY0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw a74.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Fa0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=Oa0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Uh(Y))}if(this.randomize)(0,Ua0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Na0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Fa0.getUrlParseFn)();$=Q?Q($):$;let X=new Uh($,Z);if((0,Na0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return OY0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return OY0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Fa0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Uh(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Ua0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}_4$.Servers=OY0});var DY0=v((b4$)=>{Object.defineProperty(b4$,"__esModule",{value:!0});b4$.QueuedIteratorImpl=void 0;var La0=CK(),x4$=vJ();class f4${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,La0.deferred)(),this.yields=[],this.iterClosed=(0,La0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new x4$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new x4$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,La0.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}}b4$.QueuedIteratorImpl=f4$});var wa0=v((u4$)=>{Object.defineProperty(u4$,"__esModule",{value:!0});u4$.MuxSubscription=void 0;var QQ4=UD(),g4$=vJ();class h4${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,QQ4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new g4$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new g4$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}u4$.MuxSubscription=h4$});var ja0=v((m4$)=>{Object.defineProperty(m4$,"__esModule",{value:!0});m4$.Heartbeat=void 0;var XQ4=CK();class c4${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,XQ4.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})}}m4$.Heartbeat=c4$});var Pa0=v((t4$)=>{Object.defineProperty(t4$,"__esModule",{value:!0});t4$.DenoBuffer=t4$.MAX_SIZE=t4$.AssertionError=void 0;t4$.assert=p4$;t4$.concat=n4$;t4$.append=JQ4;t4$.readAll=GQ4;t4$.writeAll=KQ4;var YQ4=_J();class Ea0 extends Error{constructor($){super($);this.name="AssertionError"}}t4$.AssertionError=Ea0;function p4$($,Z="Assertion failed."){if(!$)throw new Ea0(Z)}var i4$=32768;t4$.MAX_SIZE=4294967294;function LY0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function n4$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function JQ4($,Z){return n4$($,Uint8Array.of(Z))}class za0{_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($){p4$($<=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=LY0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(YQ4.TE.encode($))}write($){let Z=this._grow($.byteLength);return LY0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)LY0(this._buf.subarray(this._off),this._buf);else if(X+$>t4$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,t4$.MAX_SIZE));LY0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,t4$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(i4$);while(!0){let X=this.capacity-this.length<i4$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}t4$.DenoBuffer=za0;function GQ4($){let Z=new za0;return Z.readFrom($),Z.bytes()}function KQ4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Ra0=v((e4$)=>{Object.defineProperty(e4$,"__esModule",{value:!0});e4$.cc=e4$.State=e4$.Parser=e4$.Kind=void 0;e4$.describe=OQ4;var Aa0=Pa0(),Ta0=_J();e4$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function OQ4($){let Z,Q="";switch($.kind){case e4$.Kind.MSG:Z="MSG";break;case e4$.Kind.OK:Z="OK";break;case e4$.Kind.ERR:Z="ERR",Q=Ta0.TD.decode($.data);break;case e4$.Kind.PING:Z="PING";break;case e4$.Kind.PONG:Z="PONG";break;case e4$.Kind.INFO:Z="INFO",Q=Ta0.TD.decode($.data)}return`${Z}: ${Q}`}function r4$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var a4$=48,DQ4=57,Nh=67108864;class s4${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=e4$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case e4$.State.OP_START:switch(Q){case e4$.cc.M:case e4$.cc.m:this.state=e4$.State.OP_M,this.hdr=-1,this.ma=r4$();break;case e4$.cc.H:case e4$.cc.h:this.state=e4$.State.OP_H,this.hdr=0,this.ma=r4$();break;case e4$.cc.P:case e4$.cc.p:this.state=e4$.State.OP_P;break;case e4$.cc.PLUS:this.state=e4$.State.OP_PLUS;break;case e4$.cc.MINUS:this.state=e4$.State.OP_MINUS;break;case e4$.cc.I:case e4$.cc.i:this.state=e4$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_H:switch(Q){case e4$.cc.M:case e4$.cc.m:this.state=e4$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_M:switch(Q){case e4$.cc.S:case e4$.cc.s:this.state=e4$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MS:switch(Q){case e4$.cc.G:case e4$.cc.g:this.state=e4$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MSG:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:this.state=e4$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MSG_SPC:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:continue;default:this.state=e4$.State.MSG_ARG,this.as=Z}break;case e4$.State.MSG_ARG:switch(Q){case e4$.cc.CR:this.drop=1;break;case e4$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=e4$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case e4$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:e4$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=e4$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:e4$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=e4$.State.MSG_END;break;case e4$.State.MSG_END:switch(Q){case e4$.cc.NL:this.drop=0,this.as=Z+1,this.state=e4$.State.OP_START;break;default:continue}break;case e4$.State.OP_PLUS:switch(Q){case e4$.cc.O:case e4$.cc.o:this.state=e4$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PLUS_O:switch(Q){case e4$.cc.K:case e4$.cc.k:this.state=e4$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PLUS_OK:switch(Q){case e4$.cc.NL:this.dispatcher.push({kind:e4$.Kind.OK}),this.drop=0,this.state=e4$.State.OP_START;break}break;case e4$.State.OP_MINUS:switch(Q){case e4$.cc.E:case e4$.cc.e:this.state=e4$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MINUS_E:switch(Q){case e4$.cc.R:case e4$.cc.r:this.state=e4$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MINUS_ER:switch(Q){case e4$.cc.R:case e4$.cc.r:this.state=e4$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MINUS_ERR:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:this.state=e4$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_MINUS_ERR_SPC:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:continue;default:this.state=e4$.State.MINUS_ERR_ARG,this.as=Z}break;case e4$.State.MINUS_ERR_ARG:switch(Q){case e4$.cc.CR:this.drop=1;break;case e4$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:e4$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=e4$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case e4$.State.OP_P:switch(Q){case e4$.cc.I:case e4$.cc.i:this.state=e4$.State.OP_PI;break;case e4$.cc.O:case e4$.cc.o:this.state=e4$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PO:switch(Q){case e4$.cc.N:case e4$.cc.n:this.state=e4$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PON:switch(Q){case e4$.cc.G:case e4$.cc.g:this.state=e4$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PONG:switch(Q){case e4$.cc.NL:this.dispatcher.push({kind:e4$.Kind.PONG}),this.drop=0,this.state=e4$.State.OP_START;break}break;case e4$.State.OP_PI:switch(Q){case e4$.cc.N:case e4$.cc.n:this.state=e4$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PIN:switch(Q){case e4$.cc.G:case e4$.cc.g:this.state=e4$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_PING:switch(Q){case e4$.cc.NL:this.dispatcher.push({kind:e4$.Kind.PING}),this.drop=0,this.state=e4$.State.OP_START;break}break;case e4$.State.OP_I:switch(Q){case e4$.cc.N:case e4$.cc.n:this.state=e4$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_IN:switch(Q){case e4$.cc.F:case e4$.cc.f:this.state=e4$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_INF:switch(Q){case e4$.cc.O:case e4$.cc.o:this.state=e4$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_INFO:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:this.state=e4$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case e4$.State.OP_INFO_SPC:switch(Q){case e4$.cc.SPACE:case e4$.cc.TAB:continue;default:this.state=e4$.State.INFO_ARG,this.as=Z}break;case e4$.State.INFO_ARG:switch(Q){case e4$.cc.CR:this.drop=1;break;case e4$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:e4$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=e4$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===e4$.State.MSG_ARG||this.state===e4$.State.MINUS_ERR_ARG||this.state===e4$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Aa0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===e4$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Aa0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new Aa0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case e4$.cc.SPACE:case e4$.cc.TAB:case e4$.cc.CR:case e4$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Nh);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],Nh);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}: ${Ta0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case e4$.cc.SPACE:case e4$.cc.TAB:case e4$.cc.CR:case e4$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Nh),this.ma.size=this.protoParseInt(Z[3],Nh);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],Nh),this.ma.size=this.protoParseInt(Z[4],Nh);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<a4$||$[X]>DQ4)return-1;Q=Q*10+($[X]-a4$)}return Z!==void 0&&Q>Z?-1:Q}}e4$.Parser=s4$;e4$.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};e4$.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 EY0=v((Z6$)=>{Object.defineProperty(Z6$,"__esModule",{value:!0});Z6$.MsgHdrsImpl=void 0;Z6$.canonicalMIMEHeaderKey=Ia0;Z6$.headers=jQ4;var $6$=_J(),_K=UD(),jY0=vJ();function Ia0($){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 jY0.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 jQ4($=0,Z=""){if($===0&&Z!=="")throw jY0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw jY0.InvalidArgumentError.format("description","is required");return new Bh($,Z)}var qa0="NATS/1.0";class Bh{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Bh,X=$6$.TD.decode($).split(`\r
|
|
1970
1970
|
`),Y=X[0];if(Y!==qa0){let J=Y.replace(qa0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=qa0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
1971
1971
|
${Z}: ${Q[X]}`;return`${$}\r
|
|
@@ -4603,7 +4603,7 @@ Hint: Configure a valid Google account email in Monitor Configuration > Contexto
|
|
|
4603
4603
|
|
|
4604
4604
|
`).trim(),N=F.length>0?`Not executed tools (${F.length}/${$.tools.length}): ${F.join(", ")}`:"",B=[U,N].filter((O)=>O.length>0).join(`
|
|
4605
4605
|
|
|
4606
|
-
`);return{toolResults:W,agentSummary:B.length>0?B:null,unexecutedTools:F}}finally{await Z.close?.().catch(()=>{})}}async function bD1($,Z){let Q=$.storage.registry,X=$.organization.id,Y=await Q.monitorConnections.findByItemId(X,Z.id);if(Y){if(await $.storage.connections.findById(Y.connection_id,X))return Y.connection_id}let J=Cl6(Z);if(!J)throw Error(`Registry item ${Z.id} has no remote URL`);if(lD(J))throw Error(`Registry item ${Z.id} targets a private network URL, refusing to create a monitor connection`);let G=kl6($),K=Sl6(Z),W=await $.storage.connections.create({organization_id:X,created_by:G,title:`[MCP Tester] ${Z.title}`,description:`Auto-created monitor connection for ${Z.id}`,app_name:"private-registry-monitor",app_id:`${cb}:monitor`,connection_type:K,connection_url:J,metadata:{monitorConnection:!0,registryItemId:Z.id,pluginId:cb}});return await Q.monitorConnections.upsert({organization_id:X,item_id:Z.id,connection_id:W.id,auth_status:"none"}),W.id}async function ll6($){let Z=$.ctx.storage.registry;switch($.action){case"unlisted":return await Z.items.update($.organizationId,$.item.id,{is_unlisted:!0}),"unlisted";case"remove_public":return await Z.items.update($.organizationId,$.item.id,{is_public:!1}),"removed_public";case"remove_private":case"remove_all":return await Z.items.delete($.organizationId,$.item.id),$.action==="remove_all"?"removed_all":"removed_private";default:return"none"}}async function cl6($){let Z=Date.now();if($.signal.aborted)throw Error("Run cancelled");let Q="passed",X=!1,Y=!1,J=null,G="none",K=null,W=[],H=null,F=async()=>{await $.onProgress?.({status:Q,connectionOk:X,toolsListed:Y,toolResults:[...W],agentSummary:K,errorMessage:J,actionTaken:G,durationMs:Date.now()-Z})};try{let U=await bD1($.ctx,$.item);H=await $.ctx.createMCPProxy(U),X=!0;let B=(await f80(H.listTools?H.listTools():Promise.resolve({tools:[]}),$.monitorConfig.perMcpTimeoutMs,`listTools ${$.item.id}`)).tools??[];if(Y=!0,$.monitorConfig.monitorMode!=="health_check")W.push(...B.map((O)=>fD1(O.name))),await F();if($.monitorConfig.monitorMode==="full_agent"){let O=await ul6({ctx:$.ctx,monitorConfig:$.monitorConfig,item:$.item,proxy:H,tools:B,signal:$.signal,onProgress:async(L)=>{W.length=0,W.push(...UX8({discoveredTools:B,executedResults:L})),Q=L.some((w)=>!w.success)?"failed":"passed",await F()}});if(W.length=0,W.push(...UX8({discoveredTools:B,executedResults:O.toolResults})),K=O.agentSummary,O.toolResults.some((L)=>!L.success))Q="failed";if(O.unexecutedTools.length>0){if(Q="failed",!J)J=`Agent skipped ${O.unexecutedTools.length} tool(s): ${O.unexecutedTools.join(", ")}`}}else if($.monitorConfig.monitorMode!=="health_check"){for(let O=0;O<B.length;O++){let L=B[O];if(!L||$.signal.aborted)throw Error("Run cancelled");let w=Date.now();try{let j={},E=await f80(H.callTool({name:L.name,arguments:j}),$.monitorConfig.perToolTimeoutMs,`tool ${L.name}`),z=!E.isError,P=Date.now()-w;NX8(W,{toolName:L.name,success:z,input:j,durationMs:P,outputPreview:LX8(E.structuredContent??E.content),error:z?null:dS0(E.content?.find((A)=>A.type==="text")?.text?.slice(0,300)??"Tool returned error")}),await F()}catch(j){let E=Date.now()-w,z=j instanceof Error?j.message:String(j);NX8(W,{toolName:L.name,success:!1,durationMs:E,error:dS0(z)}),await F()}}if(W.some((O)=>!O.success))Q="failed"}else for(let O of B)W.push(fD1(O.name));if($.canApplyFailureAction&&Q==="failed"&&$.monitorConfig.onFailure!=="none")G=await ll6({ctx:$.ctx,organizationId:$.organizationId,item:$.item,action:$.monitorConfig.onFailure})}catch(U){if(J=U instanceof Error?U.message:String(U),_l6(U))Q="needs_auth",await $.ctx.storage.registry.monitorConnections.updateAuthStatus($.organizationId,$.item.id,"needs_auth");else Q="error"}finally{await H?.close?.().catch(()=>{})}return{status:Q,connectionOk:X,toolsListed:Y,toolResults:W,agentSummary:K,errorMessage:J,actionTaken:G,durationMs:Date.now()-Z}}async function ml6($){let Z=$.ctx.storage.registry,X=(await Z.items.list($.organizationId,{includeUnlisted:!0})).items.filter((F)=>{if($.monitorConfig.testPublicOnly&&!F.is_public)return!1;if($.monitorConfig.testPrivateOnly&&F.is_public)return!1;return!0}),Y=$.monitorConfig.includePendingRequests?(await Z.publishRequests.list($.organizationId,{status:"pending",limit:500})).items.map((F)=>dl6(F)):[],J=[...X.map((F)=>({item:F,source:"registry_item"})),...Y.map((F)=>({item:F,source:"publish_request"}))];if(J.length===0){await Z.monitorRuns.update($.organizationId,$.runId,{total_items:0,status:"completed",started_at:new Date().toISOString(),finished_at:new Date().toISOString()});return}await Z.monitorRuns.update($.organizationId,$.runId,{total_items:J.length,status:"running",started_at:new Date().toISOString()});let G=0,K=0,W=0,H=0;for(let F=0;F<J.length;F++){let U=J[F],N=U?.item;if(!N||$.signal.aborted){await Z.monitorRuns.update($.organizationId,$.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()});return}await Z.monitorRuns.update($.organizationId,$.runId,{current_item_id:N.id});let B=null,O=async(w)=>{if(!B){B=(await Z.monitorResults.create({run_id:$.runId,organization_id:$.organizationId,item_id:N.id,item_title:N.title,status:w.status,error_message:w.errorMessage,connection_ok:w.connectionOk,tools_listed:w.toolsListed,tool_results:w.toolResults,agent_summary:w.agentSummary,duration_ms:w.durationMs,action_taken:w.actionTaken})).id;return}await Z.monitorResults.update($.organizationId,B,{status:w.status,error_message:w.errorMessage,connection_ok:w.connectionOk,tools_listed:w.toolsListed,tool_results:w.toolResults,agent_summary:w.agentSummary,duration_ms:w.durationMs,action_taken:w.actionTaken})},L=await cl6({ctx:$.ctx,organizationId:$.organizationId,item:N,monitorConfig:$.monitorConfig,signal:$.signal,canApplyFailureAction:U.source==="registry_item",onProgress:O});if(await O({status:L.status,connectionOk:L.connectionOk,toolsListed:L.toolsListed,toolResults:L.toolResults,agentSummary:L.agentSummary,errorMessage:L.errorMessage,actionTaken:L.actionTaken,durationMs:L.durationMs}),G+=1,L.status==="passed")K+=1;else if(L.status==="failed"||L.status==="error")W+=1;else H+=1;await Z.monitorRuns.update($.organizationId,$.runId,{tested_items:G,passed_items:K,failed_items:W,skipped_items:H})}await Z.monitorRuns.update($.organizationId,$.runId,{status:"completed",current_item_id:null,finished_at:new Date().toISOString()})}function dl6($){return{id:`${bj}${$.id}`,title:$.title,description:$.description,_meta:$._meta,server:$.server,is_public:!1,is_unlisted:!0,created_at:$.created_at,updated_at:$.updated_at}}async function il6($,Z){let Q=Vl6($);await Q.access.check();let X=Q.storage.registry,Y=await X.monitorRuns.create({organization_id:Q.organization.id,status:"pending",config_snapshot:Z,started_at:null}),J=new AbortController;return mS0.set(Y.id,J),ml6({ctx:Q,runId:Y.id,organizationId:Q.organization.id,monitorConfig:Z,signal:J.signal}).catch(async(G)=>{await X.monitorRuns.update(Q.organization.id,Y.id,{status:"failed",current_item_id:null,finished_at:new Date().toISOString()}).catch(()=>{}),Ml6(`Run ${Y.id} failed with uncaught error:`,G)}).finally(()=>{mS0.delete(Y.id)}),{run:{id:Y.id}}}var mS0,Rl6="[MONITOR-AGENT]",ql6,Il6="health_check: not called",EX8;var iS0=D(()=>{M0();x4();bz();od();iB();mS0=new Map,ql6=mQ8;EX8=h({name:"REGISTRY_MONITOR_RUN_START",description:"Start an MCP registry monitor run with an isolated set of monitor connections.",inputSchema:oQ8,outputSchema:rQ8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=tQ8($.config??{}),{run:Y}=await il6(Z,X),G=await Z.storage.registry.monitorRuns.findById(Q.id,Y.id);if(!G)throw Error(`Failed to load monitor run ${Y.id}`);return{run:G}}})});var zX8;var PX8=D(()=>{M0();iB();zX8=h({name:"REGISTRY_MONITOR_RUN_LIST",description:"List MCP registry monitor runs",inputSchema:eQ8,outputSchema:$X8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),Z.storage.registry.monitorRuns.list(Q.id,$)}})});var AX8;var TX8=D(()=>{M0();iB();AX8=h({name:"REGISTRY_MONITOR_RUN_GET",description:"Get details for one MCP registry monitor run",inputSchema:ZX8,outputSchema:QX8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),{run:await Z.storage.registry.monitorRuns.findById(Q.id,$.runId)}}})});var RX8;var qX8=D(()=>{M0();iB();iS0();RX8=h({name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel a running MCP registry monitor run",inputSchema:aQ8,outputSchema:sQ8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry;if(!await X.monitorRuns.findById(Q.id,$.runId))throw Error(`Monitor run not found: ${$.runId}`);return DX8($.runId),{run:await X.monitorRuns.update(Q.id,$.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()})}}})});var IX8;var MX8=D(()=>{M0();iB();IX8=h({name:"REGISTRY_MONITOR_RESULT_LIST",description:"List results for a given MCP registry monitor run",inputSchema:XX8,outputSchema:YX8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),Z.storage.registry.monitorResults.listByRun(Q.id,$.runId,{status:$.status,limit:$.limit,offset:$.offset})}})});var VX8;var kX8=D(()=>{M0();iB();od();VX8=h({name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connection mappings for private registry MCP monitor runs, including auth status",inputSchema:JX8,outputSchema:GX8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await X.monitorConnections.list(Q.id);return{items:await Promise.all(Y.map(async(G)=>{let K=await X.items.findById(Q.id,G.item_id);if(!K&&G.item_id.startsWith(bj)){let F=G.item_id.slice(bj.length),U=await X.publishRequests.findById(Q.id,F);if(U)K={id:G.item_id,title:U.title,description:U.description,_meta:U._meta,server:U.server,is_public:!1,is_unlisted:!0,created_at:U.created_at,updated_at:U.updated_at}}let W=K?.server.remotes?.find((F)=>F.url)?.url??null,H=G.item_id.startsWith(bj)?"request":"store";return{mapping:G,item:K,remoteUrl:W,source:H}}))}}})});function pl6($){return{id:`${bj}${$.id}`,title:$.title,description:$.description,_meta:$._meta,server:$.server,is_public:!1,is_unlisted:!0,created_at:$.created_at,updated_at:$.updated_at}}var SX8;var CX8=D(()=>{M0();iB();iS0();od();SX8=h({name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Ensure every registry item has a dedicated monitor connection mapping for MCP monitors",inputSchema:KX8,outputSchema:WX8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=(await X.items.list(Q.id,{includeUnlisted:!0})).items,G=(await X.publishRequests.list(Q.id,{status:"pending",limit:500})).items.map(pl6),K=[...Y,...G],W=await X.monitorConnections.list(Q.id),H=new Set(W.map((U)=>U.item_id)),F=0;for(let U of K){if(!U.server.remotes?.some((N)=>N.url))continue;try{await bD1(Z,U)}catch(N){console.warn(`[REGISTRY_MONITOR_CONNECTION_SYNC] Skipping ${U.id}:`,N instanceof Error?N.message:N);continue}if(!H.has(U.id))F+=1}return{created:F,updated:Math.max(K.length-F,0)}}})});var _X8;var vX8=D(()=>{M0();iB();_X8=h({name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update the auth_status of a monitor connection mapping (by core connection ID)",inputSchema:HX8,outputSchema:FX8,handler:async({connectionId:$,authStatus:Z},Q)=>{let X=t(Q);await Q.access.check();let Y=Q.storage.registry,J=X.id,G=await Y.monitorConnections.findByConnectionId(J,$);if(!G)throw Error(`No monitor connection mapping found for connection ${$}`);return await Y.monitorConnections.updateAuthStatus(J,G.item_id,Z),{success:!0}}})});function nl6($){if(!$)return{};if(typeof $==="string")try{return JSON.parse($)}catch{return{}}if(typeof $==="object")return $;return{}}async function b80($,Z){let X=(await $.db.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",cb).execute()).map((J)=>nl6(J.settings)),Y={acceptPublishRequests:X.some((J)=>J.acceptPublishRequests===!0),requireApiToken:X.some((J)=>J.requireApiToken===!0),storePrivateOnly:X.some((J)=>J.storePrivateOnly===!0)};if(Y.acceptPublishRequests||Y.requireApiToken||Y.storePrivateOnly)return Y;for(let J of X)if(Object.keys(J).length>0)return J;return{}}var xX8=D(()=>{od()});import{z as yD1}from"zod";function tl6($,Z){if(!Z)return $;let Q={field:["is_public"],operator:"eq",value:!1};if(!$)return Q;return{operator:"and",conditions:[$,Q]}}function ol6($){let Z=new Map,Q=new Map;for(let Y of $){let J=fH(Y._meta);for(let G of J?.tags??[])Z.set(G,(Z.get(G)??0)+1);for(let G of J?.categories??[])Q.set(G,(Q.get(G)??0)+1)}let X=(Y)=>Array.from(Y.entries()).map(([J,G])=>({value:J,count:G})).sort((J,G)=>J.value.localeCompare(G.value));return{tags:X(Z),categories:X(Q)}}var fX8,bX8,yX8,gX8;var hX8=D(()=>{M0();g9();xX8();fX8=h({name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry items for Store discovery. Supports private-only mode from plugin settings.",inputSchema:dd,outputSchema:id,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id);return X.items.list(Q.id,{...$,where:tl6($.where,Y.storePrivateOnly===!0)})}}),bX8=h({name:"COLLECTION_REGISTRY_APP_GET",description:"Get a registry item for Store details. Respects private-only mode from plugin settings.",inputSchema:DU,outputSchema:lb,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id),J=$.id??$.name;if(!J)return{item:null};let G=await X.items.findByIdOrName(Q.id,J);if(!G)return{item:null};if(Y.storePrivateOnly&&G.is_public)return{item:null};return{item:G}}}),yX8=h({name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get registry item versions for Store details. Respects private-only mode from plugin settings.",inputSchema:DU,outputSchema:yD1.object({versions:yD1.array(sW)}),handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id),J=$.id??$.name;if(!J)return{versions:[]};let G=await X.items.findByIdOrName(Q.id,J);if(!G)return{versions:[]};if(Y.storePrivateOnly&&G.is_public)return{versions:[]};return{versions:[G]}}}),gX8=h({name:"COLLECTION_REGISTRY_APP_FILTERS",description:"List Store filter facets for registry items. Respects private-only mode from plugin settings.",inputSchema:yD1.object({}),outputSchema:pd,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry;if(!(await b80(Z,Q.id)).storePrivateOnly)return X.items.getFilters(Q.id);let J=await X.items.list(Q.id,{limit:1e4,where:{field:["is_public"],operator:"eq",value:!1}});return ol6(J.items)}})});var uX8;var lX8=D(()=>{HQ8();UQ8();BQ8();DQ8();bz();wQ8();EQ8();PQ8();TQ8();qQ8();VQ8();SQ8();_Q8();xQ8();bQ8();gQ8();uQ8();cQ8();iS0();PX8();TX8();qX8();MX8();kX8();CX8();vX8();hX8();uX8=[fX8,bX8,yX8,gX8,zQ8,AQ8,jQ8,MQ8,NQ8,WQ8,RQ8,OQ8,LQ8,KG$,FQ8,kQ8,CQ8,vQ8,fQ8,yQ8,hQ8,lQ8,EX8,zX8,AX8,RX8,IX8,VX8,SX8,_X8]});import{z as rd}from"zod";var gD1;var cX8=D(()=>{M0();zW();$00();mY();gD1=h({name:"SANDBOX_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:rd.object({virtualMcpId:rd.string().describe("Virtual MCP ID that owns this VM"),branch:rd.string().min(1).describe("Branch whose vm should be deleted (sandboxMap[userId][branch])"),removeWorktree:rd.boolean().optional().default(!1).describe("Also reclaim the sandbox's workspace (local worktree + disk). Ignored by hosted teardown, whose filesystem is already destroyed.")}),outputSchema:rd.object({success:rd.boolean()}),handler:async($,Z)=>{let Q;try{Q=await qb$($,Z)}catch(K){if(K instanceof Error&&K.message==="Virtual MCP not found")return{success:!0};throw K}let{entry:X,userId:Y,sandboxUserId:J}=Q;if(!X)return{success:!0};let G=await JX1(Z);return await Rw(Z.storage.virtualMcps,$.virtualMcpId,Y,J,$.branch),await G.delete(X.sandboxHandle).catch((K)=>console.error(`[SANDBOX_DELETE] ${t7} ${X.sandboxHandle}: ${K instanceof Error?K.message:String(K)}`)),{success:!0}}})});var mX8=D(()=>{Y00();cX8()});import{z as pB}from"zod";function $c6($){try{return JSON.parse($)}catch(Z){throw Error(`GitHub /user/installations returned invalid JSON: ${$.slice(0,300)}`,{cause:Z})}}var sl6="https://api.github.com",el6=15000,hD1;var dX8=D(()=>{M0();VG();SY();KW();bs();al();hD1=h({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:pB.object({connectionId:pB.string().describe("ID of the mcp-github connection to use")}),outputSchema:pB.object({installations:pB.array(pB.object({installationId:pB.number(),login:pB.string(),avatarUrl:pB.string(),type:pB.string()}))}),handler:async($,Z)=>{await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization context required");let X=await Z.storage.connections.findById($.connectionId,Q);if(!X)throw Error("Connection not found");if(F9(X))throw Error("Repo-scoped connections cannot list installations \u2014 use an org-level mcp-github connection");let Y=new f5(Z.db,Z.vault),J=await Y.get($.connectionId);if(!J)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let G=J.accessToken;if(Hw(J)&&Y.isExpired(J,is)){let U=await pS0(J,Y);if(!U)throw Error(_Z);G=U,J=await Y.get($.connectionId)??J}let K=[],W=1,H=100,F=async(U)=>fetch(`${sl6}/user/installations?per_page=${H}&page=${W}`,{headers:{Authorization:`Bearer ${U}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(el6)});while(!0){let U=await F(G);if(U.status===401){let B=await Y.get($.connectionId);if(!B||!Hw(B))throw Error(_Z);let O=await pS0(B,Y);if(!O)throw Error(_Z);if(G=O,U=await F(G),U.status===401)throw Error(_Z)}if(Jw(U.headers,{lane:"rest",operation:"list_user_installations",installation:QZ1}),Xw(U)){await U.body?.cancel().catch(()=>{});let B=U.headers.get("retry-after")!==null?"secondary":"primary";Gw({lane:"rest",operation:"list_user_installations",installation:QZ1,kind:B});let O=Yw(U.headers);throw Error(`GitHub ${B} rate limit reached${O===null?"":`; retry in ${Math.ceil(O/1000)}s`}`)}if(!U.ok)throw await U.body?.cancel().catch(()=>{}),Error(`GitHub /user/installations failed: ${U.status}`);let N=$c6(await U.text());for(let B of N.installations)K.push({installationId:B.id,login:B.account.login,avatarUrl:B.account.avatar_url,type:B.account.type});if(N.installations.length<H)break;W++}return{installations:K}}})});var iX8=D(()=>{dX8()});import{z as uD1}from"zod";function nS0($){return{repositoryId:$.repositoryId,ref:$.repoUrl?NW($.repoUrl):null,connectionId:$.connectionId}}var nB,pX8="No credential for this repository \u2014 link it in Settings \u2192 Repositories";var lD1=D(()=>{r6();nB={repositoryId:uD1.string().optional().describe("Connected repository (REPOSITORY_LINK) to act on"),repoUrl:uD1.string().optional().describe("Any URL of the repository \u2014 its provider and host are read from it"),connectionId:uD1.string().optional().describe("Legacy: a repo-scoped mcp-github connection in this org")}});import{z as eW}from"zod";var cD1;var nX8=D(()=>{M0();N7();lD1();cD1=h({name:"REPOSITORY_SEARCH_BRANCHES",description:"Search a repository's branches by a case-insensitive substring of the branch name, filtered server-side by the provider.",annotations:{title:"Search Repository Branches",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:eW.object({...nB,query:eW.string().describe("Substring to match against branch names. Empty returns the first branches alphabetically."),limit:eW.number().int().min(1).max(100).default(30),cursor:eW.string().nullish().describe("Opaque cursor from a previous call's `nextCursor`, to read the next window")}),outputSchema:eW.object({branches:eW.array(eW.object({name:eW.string(),author:eW.string().nullable()})),totalCount:eW.number(),nextCursor:eW.string().nullable()}),handler:async($,Z)=>{await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization context required");return(await vZ1(Z,Q,nS0($))).searchBranches({query:$.query,limit:$.limit,cursor:$.cursor})}})});import{z as C$}from"zod";function oX8($){let{credentialConnectionId:Z,installationAuthorizedBy:Q,installationRepositoryIds:X,...Y}=$;return{...Y,servable:cs($)}}function mD1($){let{legacyConnectionId:Z,...Q}=$;return Q}async function rX8($,Z,Q){let X=await $.storage.gitProviderAccounts.get(Q,Z);if(!X)throw Error("Git account not found");return X}var Qc6,tX8,aX8,sX8,eX8,$Y8,ZY8,QY8,XY8,YY8;var JY8=D(()=>{ns();r6();M0();N7();nX8();Qc6=C$.object({ref:kP$,externalId:C$.string(),defaultBranch:C$.string().nullable(),webUrl:C$.string(),visibility:C$.enum(["public","private","internal"]),description:C$.string().nullable(),updatedAt:C$.string().nullable()}),tX8=SP$.extend({servable:C$.boolean(),connectedBy:C$.object({name:C$.string()}).nullable()});aX8=h({name:"GIT_PROVIDER_CAPABILITIES",description:"Which git providers this deployment can connect through Studio-owned credentials, and the URLs that start each connect flow.",annotations:{title:"Git provider capabilities",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({}),outputSchema:C$.object({github:C$.object({configured:C$.boolean(),connectPath:C$.string().nullable(),installPath:C$.string().nullable()}),gitlab:C$.object({oauthHosts:C$.array(C$.string()),connectPath:C$.string().nullable()}),bitbucket:C$.object({oauthHosts:C$.array(C$.string()),connectPath:C$.string().nullable()})}),handler:async($,Z)=>{o(Z);let Q=t(Z),X=`/api/${Q.slug??Q.id}/git-providers`,Y=hA$(),J=Y.github.configured;return{github:{configured:J,connectPath:J?`${X}/github/connect`:null,installPath:J?`${X}/github/install`:null},gitlab:{oauthHosts:Y.gitlab.hosts,connectPath:Y.gitlab.configured?`${X}/gitlab/connect`:null},bitbucket:{oauthHosts:Y.bitbucket.hosts,connectPath:Y.bitbucket.configured?`${X}/bitbucket/connect`:null}}}}),sX8=h({name:"GIT_ACCOUNT_LIST",description:"List the git provider accounts connected to this organization.",annotations:{title:"List git accounts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({}),outputSchema:C$.object({accounts:C$.array(tX8)}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{accounts:(await Z.storage.gitProviderAccounts.listByOrg(Q.id)).map(oX8)}}}),eX8=h({name:"GIT_ACCOUNT_CONNECT_TOKEN",description:"Connect a git provider account with an access token: a GitLab personal, project or group token, or a Bitbucket Cloud workspace, project or repository access token. Validates the token against the provider before storing it encrypted. Use this for self-managed GitLab instances (no OAuth application) or when OAuth is not wanted.",annotations:{title:"Connect git account with a token",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({type:Cs.describe("Provider; gitlab and bitbucket accept tokens (GitHub connects through the App)"),host:C$.string().min(1).describe("Provider host, e.g. gitlab.com, gitlab.acme.com or bitbucket.org"),token:C$.string().min(1).describe("Access token with api scope")}),outputSchema:C$.object({account:tX8}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=$.host.trim().toLowerCase();if(!/^[a-z0-9.-]+(:[0-9]+)?$/.test(X))throw Error("host must be a bare hostname, optionally with a port");let Y=await fA$($.type,X,$.token),J=await Z.storage.gitProviderAccounts.upsert({organizationId:Q.id,type:$.type,host:X,authKind:"token",externalAccountId:Y.externalAccountId,login:Y.login,avatarUrl:Y.avatarUrl,createdBy:o0(Z)??null});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:J.id,accessToken:$.token,refreshToken:null,scope:null,expiresAt:null,clientId:null,clientSecret:null,tokenEndpoint:null}),{account:oX8(J)}}}),$Y8=h({name:"GIT_ACCOUNT_DELETE",description:"Disconnect a git provider account. Its repositories stay linked but lose credentials (they become anonymous clones) until linked to another account.",annotations:{title:"Disconnect git account",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({id:C$.string()}),outputSchema:C$.object({deleted:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{deleted:await Z.storage.gitProviderAccounts.delete($.id,Q.id)}}}),ZY8=h({name:"REPOSITORY_LIST",description:"List the repositories linked to this organization.",annotations:{title:"List repositories",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({accountId:C$.string().optional().describe("Only repositories of this account")}),outputSchema:C$.object({repositories:C$.array(t91.extend({usable:C$.boolean()}))}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=await Z.storage.repositories.listByOrg(Q.id,{accountId:$.accountId}),Y=await Nw(Z,Q.id),J=new Set(Y.map((G)=>G.webUrl.toLowerCase()));return{repositories:X.map((G)=>({...mD1(G),usable:J.has(G.webUrl.toLowerCase())}))}}}),QY8=h({name:"REPOSITORY_SEARCH",description:"Search the repositories an account can reach on its provider (not yet linked). Feeds the repository picker.",annotations:{title:"Search provider repositories",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({accountId:C$.string(),query:C$.string().optional(),page:C$.number().int().min(1).optional(),perPage:C$.number().int().min(1).max(100).optional()}),outputSchema:C$.object({repositories:C$.array(Qc6),hasMore:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=await rX8(Z,Q.id,$.accountId);return YA({db:Z.db,vault:Z.vault},X).listRepos({query:$.query,page:$.page,perPage:$.perPage})}}),XY8=h({name:"REPOSITORY_LINK",description:"Link a repository to the organization. With an account, the repository is verified against the provider and its facts (id, default branch, visibility) recorded; without one it is linked as an anonymous public clone.",annotations:{title:"Link repository",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({url:C$.string().min(1).describe("Repository URL (https or ssh), or a bare path like owner/name when accountId is given"),accountId:C$.string().optional().describe("Account whose credentials access the repository")}),outputSchema:C$.object({repository:t91}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=o0(Z)??null;if(!$.accountId){let H=NW($.url);if(!H)throw Error("Could not recognise the repository URL. Use a full https URL from GitHub, GitLab or Bitbucket.");let F=await Z.storage.repositories.upsert({organizationId:Q.id,ref:H,createdBy:X});return{repository:mD1(F)}}let Y=await rX8(Z,Q.id,$.accountId),J=NW($.url,{provider:Y.type,host:Y.host});if(!J)throw Error("Could not recognise the repository URL or path");if(J.host!==Y.host)throw Error(`Repository is on ${J.host} but the account is on ${Y.host}`);let K=await YA({db:Z.db,vault:Z.vault},Y).getRepo(J);if(!K)throw Error(`${J.path} was not found on ${J.host} or the account cannot access it`);let W=await Z.storage.repositories.upsert({organizationId:Q.id,ref:K.ref,accountId:Y.id,externalId:K.externalId,defaultBranch:K.defaultBranch,visibility:K.visibility,createdBy:X});return{repository:mD1(W)}}}),YY8=h({name:"REPOSITORY_DELETE",description:"Unlink a repository from the organization. Agents, tasks and syncs that referenced it keep working off their legacy metadata until relinked.",annotations:{title:"Unlink repository",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({id:C$.string()}),outputSchema:C$.object({deleted:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{deleted:await Z.storage.repositories.delete($.id,Q.id)}}})});import{z as J$}from"zod";async function ad($,Z){let Q=$.organization?.id;if(!Q)throw Error("Organization context required");let X=await ps($,Q,nS0(Z));if(!X)throw Error(pX8);return X}var Yc6,Jc6,tS0,Gc6,GY8,KY8,WY8,HY8,FY8,UY8;var NY8=D(()=>{M0();N7();lD1();Yc6=J$.object({id:J$.string().nullable(),name:J$.string(),state:J$.enum(["queued","running","completed"]),conclusion:J$.enum(["success","failure","neutral","cancelled","skipped","timed_out","action_required"]).nullable(),url:J$.string().nullable(),durationMs:J$.number().nullable(),summary:J$.string().nullable()}),Jc6=J$.object({id:J$.string(),author:J$.string(),body:J$.string(),createdAt:J$.string(),updatedAt:J$.string(),url:J$.string()}),tS0=J$.object({number:J$.number(),url:J$.string(),title:J$.string(),body:J$.string(),state:J$.enum(["open","closed","merged"]),draft:J$.boolean(),mergedAt:J$.string().nullable(),base:J$.string(),head:J$.string(),headSha:J$.string(),headRepoPath:J$.string().nullable(),author:J$.string(),conflicting:J$.boolean().nullable(),checks:J$.enum(["pending","passing","failing"]).nullable(),changedFiles:J$.number().nullable()}),Gc6=tS0.extend({checkRuns:J$.array(Yc6),comments:J$.array(Jc6),unresolvedConversations:J$.number(),reviewBlocked:J$.boolean()}),GY8=h({name:"CHANGE_REQUEST_STATE",description:"Read a branch's change request with its CI runs, review state and comments.",annotations:{title:"Read Change Request State",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,branch:J$.string().describe("Head branch of the change request to read")}),outputSchema:J$.object({changeRequest:Gc6.nullable()}),handler:async($,Z)=>{return await Z.access.check(),{changeRequest:await(await ad(Z,$)).readDetailed({branch:$.branch})}}}),KY8=h({name:"CHANGE_REQUEST_LAST_MERGED",description:"Read the most recently merged change request into a base branch \u2014 in Fast Preview, the last publish.",annotations:{title:"Read Last Merged Change Request",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,base:J$.string().describe("Branch it was merged into")}),outputSchema:J$.object({changeRequest:tS0.nullable()}),handler:async($,Z)=>{return await Z.access.check(),{changeRequest:await(await ad(Z,$)).lastMergedInto($.base)}}}),WY8=h({name:"CHANGE_REQUEST_LIST_OPEN",description:"List a repository's open change requests, most recently updated first.",annotations:{title:"List Open Change Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,limit:J$.number().int().min(1).max(100).default(50)}),outputSchema:J$.object({changeRequests:J$.array(tS0)}),handler:async($,Z)=>{return await Z.access.check(),{changeRequests:await(await ad(Z,$)).listOpen($.limit)}}}),HY8=h({name:"CHANGE_REQUEST_CHECK_LOG",description:"Read one CI run's report \u2014 a GitHub check run's output markdown, or the tail of a GitLab job's trace. Bitbucket commit statuses carry no report, so this answers nothing there.",annotations:{title:"Read CI Run Report",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,checkId:J$.string().describe("Provider id of the run, from its listing")}),outputSchema:J$.object({report:J$.string().nullable()}),handler:async($,Z)=>{return await Z.access.check(),{report:await(await ad(Z,$)).readCheckLog($.checkId)}}}),FY8=h({name:"CHANGE_REQUEST_OPEN",description:"Propose a branch onto another. Returns the branch's existing change request instead of failing when it already has one.",annotations:{title:"Open Change Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,head:J$.string().describe("Branch being proposed"),base:J$.string().describe("Branch it should land on"),title:J$.string(),body:J$.string().optional()}),outputSchema:J$.object({changeRequest:tS0,existed:J$.boolean()}),handler:async($,Z)=>{await Z.access.check();let Q=await ad(Z,$),X=await Q.readForBranch($.head);if(X&&X.state==="open"){if($.body&&$.body!==X.body)await Q.describe(X.number,$.body);return{changeRequest:$.body?{...X,body:$.body}:X,existed:!0}}return{changeRequest:await Q.open({head:$.head,base:$.base,title:$.title,body:$.body}),existed:!1}}}),UY8=h({name:"CHANGE_REQUEST_MERGE",description:"Land a change request. Reports why it could not merge rather than throwing.",annotations:{title:"Merge Change Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,number:J$.number().int().positive(),strategy:J$.enum(["any","squash"]).default("any").describe("`squash` when the result must be one commit; `any` uses whatever the repository allows"),commitTitle:J$.string().optional(),commitMessage:J$.string().optional()}),outputSchema:J$.object({merged:J$.boolean(),reason:J$.enum(["conflict","blocked","rate_limited","not_found","error"]).optional(),detail:J$.string().optional()}),handler:async($,Z)=>{await Z.access.check();let X=await(await ad(Z,$)).merge($.number,{strategy:$.strategy,commitTitle:$.commitTitle,commitMessage:$.commitMessage});return X.merged?{merged:!0}:{merged:!1,reason:X.reason,detail:X.detail}}})});import{z as g4}from"zod";function oS0($){if(!$)return"";return typeof $==="string"?$:$.toISOString()}function dD1($){let Z=$.trim();return Z.length>0?Z:void 0}function iD1($,Z){return $===void 0||$.includes(Z)}var Wc6,Hc6,Fc6,Uc6,Nc6,Bc6,Oc6,pD1;var BY8=D(()=>{M0();Qq0();Wc6=["thread","task","connection"],Hc6=g4.object({type:g4.literal("thread"),id:g4.string(),title:g4.string(),created_at:g4.string(),updated_at:g4.string(),virtual_mcp_id:g4.string().nullable(),run_config:g4.record(g4.string(),g4.unknown()).nullable(),status:g4.string().nullable()}),Fc6=g4.object({type:g4.literal("task"),id:g4.string(),title:g4.string(),created_at:g4.string(),updated_at:g4.string(),key:g4.string().nullable(),status:g4.string().nullable(),repo:g4.string().nullable()}),Uc6=g4.object({type:g4.literal("connection"),id:g4.string(),title:g4.string(),icon:g4.string().nullable(),slug:g4.string().nullable()}),Nc6=g4.discriminatedUnion("type",[Hc6,Fc6,Uc6]),Bc6=g4.object({query:g4.string().max(256).describe("Free-text search query. Empty string returns the most recently updated resources."),limit:g4.number().int().min(1).max(50).optional().describe("Maximum results per resource type (default: 20)."),types:g4.array(g4.enum(Wc6)).optional().describe("Restrict the search to specific resource types. Omit to search across all available types.")}),Oc6=g4.object({items:g4.array(Nc6),totalCount:g4.number()});pD1=h({name:"GLOBAL_SEARCH",description:"Search across organization resources by free-text query. Returns a typed union of matches (currently: threads, task-board cards and MCP connections). New resource types may be added over time without changes to the call shape.",annotations:{title:"Global Search",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Bc6,outputSchema:Oc6,handler:async($,Z)=>{await Z.access.check();let Q=t(Z),X=$.limit??20,Y=iD1($.types,"thread"),J=iD1($.types,"task"),G=iD1($.types,"connection"),K=[],W=0;if(Y){let{threads:H,total:F}=await Z.storage.threads.list(void 0,{limit:X,offset:0,search:dD1($.query),includeArchived:!1});W+=F;for(let U of H)K.push({type:"thread",id:U.id,title:U.title??"",created_at:oS0(U.created_at),updated_at:oS0(U.updated_at),virtual_mcp_id:U.virtual_mcp_id??null,run_config:U.run_config??null,status:uG(U).status})}if(J){let H=await Z.storage.taskBoard.searchByTitle(Q.id,dD1($.query)??"",X);W+=H.length;for(let F of H)K.push({type:"task",id:F.id,title:F.title??"",created_at:oS0(F.createdAt),updated_at:oS0(F.updatedAt),key:Q.slug?sc(Q.slug,F.keySeq):null,status:F.status??null,repo:F.repo??null})}if(G){let H=await Z.storage.connections.searchByTitle(Q.id,dD1($.query)??"",X);W+=H.length;for(let F of H)K.push({type:"connection",id:F.id,title:F.title,icon:F.icon??null,slug:F.slug??null})}return{items:K,totalCount:W}}})});var OY8=D(()=>{BY8()});var dW0={};e(dW0,{toolSubsetMCP:()=>nD1,managementMCP:()=>Rm,managementContextStore:()=>MB,listManagementTools:()=>Lc6,TOOL_BY_NAME:()=>sd,CORE_TOOLS:()=>LY8});import{z as DY8}from"zod";async function Lc6($){let Z=await Rm($),[Q,X]=la.createLinkedPair();await Z.connect(X);let Y=new KZ({name:"tools-hydration",version:"1.0.0"},{jsonSchemaValidator:x5});try{return await Y.connect(Q),(await Y.listTools()).tools}finally{await Y.close().catch(()=>{}),await Z.close().catch(()=>{})}}var LY8,sd,nD1=($,Z)=>{let Q=new lH({name:$,version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:x5});for(let X of Z){let Y=sd.get(X);if(!Y){console.warn(`[${$}] unknown tool "${X}" \u2014 not registered`);continue}let{config:J,handler:G}=V80(Y);Q.registerTool(Y.name,J,G)}return Q},Rm=async($)=>{let Z=new lH({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},jsonSchemaValidator:x5});for(let Y of sd.values()){let{config:J,handler:G}=V80(Y);Z.registerTool(Y.name,J,G)}let Q=VS0();for(let Y of Q){let J=Y.arguments?.length?Object.fromEntries(Y.arguments.map((G)=>{let K=G.required?DY8.string():DY8.string().optional();return[G.name,G.description?K.describe(G.description):K]})):void 0;Z.registerPrompt(Y.name,{title:Y.title,description:Y.description,...J?{argsSchema:J}:{}},(G)=>{return{messages:[{role:"user",content:{type:"text",text:typeof Y.text==="function"?Y.text(G??{}):Y.text}}]}})}if($.organization?.id){let Y=await $.storage.brandContext.list($.organization.id),J=new Set;for(let G of Y){let K=G.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),W=K?`brand-${K}`:`brand-${G.id}`;if(J.has(W))W=`${W}-${G.id.slice(0,8)}`;J.add(W);let H=[`# Brand: ${G.name}`,"",`**Domain:** ${G.domain}`,"","## Overview",G.overview];if(G.colors){let U=Object.entries(G.colors).filter(([,N])=>N);if(U.length>0){H.push("","## Colors");for(let[N,B]of U)H.push(`- **${N}:** ${B}`)}}if(G.fonts){let U=Object.entries(G.fonts).filter(([,N])=>N);if(U.length>0){H.push("","## Fonts");for(let[N,B]of U)H.push(`- ${B} (${N})`)}}if(G.logo)H.push("",`**Logo:** ${G.logo}`);if(G.favicon)H.push(`**Favicon:** ${G.favicon}`);if(G.ogImage)H.push(`**OG Image:** ${G.ogImage}`);if(G.images&&G.images.length>0){H.push("","## Images");for(let U of G.images){let N=Object.entries(U).map(([B,O])=>`${B}: ${O}`).join(", ");H.push(`- ${N}`)}}let F=H.join(`
|
|
4606
|
+
`);return{toolResults:W,agentSummary:B.length>0?B:null,unexecutedTools:F}}finally{await Z.close?.().catch(()=>{})}}async function bD1($,Z){let Q=$.storage.registry,X=$.organization.id,Y=await Q.monitorConnections.findByItemId(X,Z.id);if(Y){if(await $.storage.connections.findById(Y.connection_id,X))return Y.connection_id}let J=Cl6(Z);if(!J)throw Error(`Registry item ${Z.id} has no remote URL`);if(lD(J))throw Error(`Registry item ${Z.id} targets a private network URL, refusing to create a monitor connection`);let G=kl6($),K=Sl6(Z),W=await $.storage.connections.create({organization_id:X,created_by:G,title:`[MCP Tester] ${Z.title}`,description:`Auto-created monitor connection for ${Z.id}`,app_name:"private-registry-monitor",app_id:`${cb}:monitor`,connection_type:K,connection_url:J,metadata:{monitorConnection:!0,registryItemId:Z.id,pluginId:cb}});return await Q.monitorConnections.upsert({organization_id:X,item_id:Z.id,connection_id:W.id,auth_status:"none"}),W.id}async function ll6($){let Z=$.ctx.storage.registry;switch($.action){case"unlisted":return await Z.items.update($.organizationId,$.item.id,{is_unlisted:!0}),"unlisted";case"remove_public":return await Z.items.update($.organizationId,$.item.id,{is_public:!1}),"removed_public";case"remove_private":case"remove_all":return await Z.items.delete($.organizationId,$.item.id),$.action==="remove_all"?"removed_all":"removed_private";default:return"none"}}async function cl6($){let Z=Date.now();if($.signal.aborted)throw Error("Run cancelled");let Q="passed",X=!1,Y=!1,J=null,G="none",K=null,W=[],H=null,F=async()=>{await $.onProgress?.({status:Q,connectionOk:X,toolsListed:Y,toolResults:[...W],agentSummary:K,errorMessage:J,actionTaken:G,durationMs:Date.now()-Z})};try{let U=await bD1($.ctx,$.item);H=await $.ctx.createMCPProxy(U),X=!0;let B=(await f80(H.listTools?H.listTools():Promise.resolve({tools:[]}),$.monitorConfig.perMcpTimeoutMs,`listTools ${$.item.id}`)).tools??[];if(Y=!0,$.monitorConfig.monitorMode!=="health_check")W.push(...B.map((O)=>fD1(O.name))),await F();if($.monitorConfig.monitorMode==="full_agent"){let O=await ul6({ctx:$.ctx,monitorConfig:$.monitorConfig,item:$.item,proxy:H,tools:B,signal:$.signal,onProgress:async(L)=>{W.length=0,W.push(...UX8({discoveredTools:B,executedResults:L})),Q=L.some((w)=>!w.success)?"failed":"passed",await F()}});if(W.length=0,W.push(...UX8({discoveredTools:B,executedResults:O.toolResults})),K=O.agentSummary,O.toolResults.some((L)=>!L.success))Q="failed";if(O.unexecutedTools.length>0){if(Q="failed",!J)J=`Agent skipped ${O.unexecutedTools.length} tool(s): ${O.unexecutedTools.join(", ")}`}}else if($.monitorConfig.monitorMode!=="health_check"){for(let O=0;O<B.length;O++){let L=B[O];if(!L||$.signal.aborted)throw Error("Run cancelled");let w=Date.now();try{let j={},E=await f80(H.callTool({name:L.name,arguments:j}),$.monitorConfig.perToolTimeoutMs,`tool ${L.name}`),z=!E.isError,P=Date.now()-w;NX8(W,{toolName:L.name,success:z,input:j,durationMs:P,outputPreview:LX8(E.structuredContent??E.content),error:z?null:dS0(E.content?.find((A)=>A.type==="text")?.text?.slice(0,300)??"Tool returned error")}),await F()}catch(j){let E=Date.now()-w,z=j instanceof Error?j.message:String(j);NX8(W,{toolName:L.name,success:!1,durationMs:E,error:dS0(z)}),await F()}}if(W.some((O)=>!O.success))Q="failed"}else for(let O of B)W.push(fD1(O.name));if($.canApplyFailureAction&&Q==="failed"&&$.monitorConfig.onFailure!=="none")G=await ll6({ctx:$.ctx,organizationId:$.organizationId,item:$.item,action:$.monitorConfig.onFailure})}catch(U){if(J=U instanceof Error?U.message:String(U),_l6(U))Q="needs_auth",await $.ctx.storage.registry.monitorConnections.updateAuthStatus($.organizationId,$.item.id,"needs_auth");else Q="error"}finally{await H?.close?.().catch(()=>{})}return{status:Q,connectionOk:X,toolsListed:Y,toolResults:W,agentSummary:K,errorMessage:J,actionTaken:G,durationMs:Date.now()-Z}}async function ml6($){let Z=$.ctx.storage.registry,X=(await Z.items.list($.organizationId,{includeUnlisted:!0})).items.filter((F)=>{if($.monitorConfig.testPublicOnly&&!F.is_public)return!1;if($.monitorConfig.testPrivateOnly&&F.is_public)return!1;return!0}),Y=$.monitorConfig.includePendingRequests?(await Z.publishRequests.list($.organizationId,{status:"pending",limit:500})).items.map((F)=>dl6(F)):[],J=[...X.map((F)=>({item:F,source:"registry_item"})),...Y.map((F)=>({item:F,source:"publish_request"}))];if(J.length===0){await Z.monitorRuns.update($.organizationId,$.runId,{total_items:0,status:"completed",started_at:new Date().toISOString(),finished_at:new Date().toISOString()});return}await Z.monitorRuns.update($.organizationId,$.runId,{total_items:J.length,status:"running",started_at:new Date().toISOString()});let G=0,K=0,W=0,H=0;for(let F=0;F<J.length;F++){let U=J[F],N=U?.item;if(!N||$.signal.aborted){await Z.monitorRuns.update($.organizationId,$.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()});return}await Z.monitorRuns.update($.organizationId,$.runId,{current_item_id:N.id});let B=null,O=async(w)=>{if(!B){B=(await Z.monitorResults.create({run_id:$.runId,organization_id:$.organizationId,item_id:N.id,item_title:N.title,status:w.status,error_message:w.errorMessage,connection_ok:w.connectionOk,tools_listed:w.toolsListed,tool_results:w.toolResults,agent_summary:w.agentSummary,duration_ms:w.durationMs,action_taken:w.actionTaken})).id;return}await Z.monitorResults.update($.organizationId,B,{status:w.status,error_message:w.errorMessage,connection_ok:w.connectionOk,tools_listed:w.toolsListed,tool_results:w.toolResults,agent_summary:w.agentSummary,duration_ms:w.durationMs,action_taken:w.actionTaken})},L=await cl6({ctx:$.ctx,organizationId:$.organizationId,item:N,monitorConfig:$.monitorConfig,signal:$.signal,canApplyFailureAction:U.source==="registry_item",onProgress:O});if(await O({status:L.status,connectionOk:L.connectionOk,toolsListed:L.toolsListed,toolResults:L.toolResults,agentSummary:L.agentSummary,errorMessage:L.errorMessage,actionTaken:L.actionTaken,durationMs:L.durationMs}),G+=1,L.status==="passed")K+=1;else if(L.status==="failed"||L.status==="error")W+=1;else H+=1;await Z.monitorRuns.update($.organizationId,$.runId,{tested_items:G,passed_items:K,failed_items:W,skipped_items:H})}await Z.monitorRuns.update($.organizationId,$.runId,{status:"completed",current_item_id:null,finished_at:new Date().toISOString()})}function dl6($){return{id:`${bj}${$.id}`,title:$.title,description:$.description,_meta:$._meta,server:$.server,is_public:!1,is_unlisted:!0,created_at:$.created_at,updated_at:$.updated_at}}async function il6($,Z){let Q=Vl6($);await Q.access.check();let X=Q.storage.registry,Y=await X.monitorRuns.create({organization_id:Q.organization.id,status:"pending",config_snapshot:Z,started_at:null}),J=new AbortController;return mS0.set(Y.id,J),ml6({ctx:Q,runId:Y.id,organizationId:Q.organization.id,monitorConfig:Z,signal:J.signal}).catch(async(G)=>{await X.monitorRuns.update(Q.organization.id,Y.id,{status:"failed",current_item_id:null,finished_at:new Date().toISOString()}).catch(()=>{}),Ml6(`Run ${Y.id} failed with uncaught error:`,G)}).finally(()=>{mS0.delete(Y.id)}),{run:{id:Y.id}}}var mS0,Rl6="[MONITOR-AGENT]",ql6,Il6="health_check: not called",EX8;var iS0=D(()=>{M0();x4();bz();od();iB();mS0=new Map,ql6=mQ8;EX8=h({name:"REGISTRY_MONITOR_RUN_START",description:"Start an MCP registry monitor run with an isolated set of monitor connections.",inputSchema:oQ8,outputSchema:rQ8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=tQ8($.config??{}),{run:Y}=await il6(Z,X),G=await Z.storage.registry.monitorRuns.findById(Q.id,Y.id);if(!G)throw Error(`Failed to load monitor run ${Y.id}`);return{run:G}}})});var zX8;var PX8=D(()=>{M0();iB();zX8=h({name:"REGISTRY_MONITOR_RUN_LIST",description:"List MCP registry monitor runs",inputSchema:eQ8,outputSchema:$X8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),Z.storage.registry.monitorRuns.list(Q.id,$)}})});var AX8;var TX8=D(()=>{M0();iB();AX8=h({name:"REGISTRY_MONITOR_RUN_GET",description:"Get details for one MCP registry monitor run",inputSchema:ZX8,outputSchema:QX8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),{run:await Z.storage.registry.monitorRuns.findById(Q.id,$.runId)}}})});var RX8;var qX8=D(()=>{M0();iB();iS0();RX8=h({name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel a running MCP registry monitor run",inputSchema:aQ8,outputSchema:sQ8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry;if(!await X.monitorRuns.findById(Q.id,$.runId))throw Error(`Monitor run not found: ${$.runId}`);return DX8($.runId),{run:await X.monitorRuns.update(Q.id,$.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()})}}})});var IX8;var MX8=D(()=>{M0();iB();IX8=h({name:"REGISTRY_MONITOR_RESULT_LIST",description:"List results for a given MCP registry monitor run",inputSchema:XX8,outputSchema:YX8,handler:async($,Z)=>{let Q=t(Z);return await Z.access.check(),Z.storage.registry.monitorResults.listByRun(Q.id,$.runId,{status:$.status,limit:$.limit,offset:$.offset})}})});var VX8;var kX8=D(()=>{M0();iB();od();VX8=h({name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connection mappings for private registry MCP monitor runs, including auth status",inputSchema:JX8,outputSchema:GX8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await X.monitorConnections.list(Q.id);return{items:await Promise.all(Y.map(async(G)=>{let K=await X.items.findById(Q.id,G.item_id);if(!K&&G.item_id.startsWith(bj)){let F=G.item_id.slice(bj.length),U=await X.publishRequests.findById(Q.id,F);if(U)K={id:G.item_id,title:U.title,description:U.description,_meta:U._meta,server:U.server,is_public:!1,is_unlisted:!0,created_at:U.created_at,updated_at:U.updated_at}}let W=K?.server.remotes?.find((F)=>F.url)?.url??null,H=G.item_id.startsWith(bj)?"request":"store";return{mapping:G,item:K,remoteUrl:W,source:H}}))}}})});function pl6($){return{id:`${bj}${$.id}`,title:$.title,description:$.description,_meta:$._meta,server:$.server,is_public:!1,is_unlisted:!0,created_at:$.created_at,updated_at:$.updated_at}}var SX8;var CX8=D(()=>{M0();iB();iS0();od();SX8=h({name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Ensure every registry item has a dedicated monitor connection mapping for MCP monitors",inputSchema:KX8,outputSchema:WX8,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=(await X.items.list(Q.id,{includeUnlisted:!0})).items,G=(await X.publishRequests.list(Q.id,{status:"pending",limit:500})).items.map(pl6),K=[...Y,...G],W=await X.monitorConnections.list(Q.id),H=new Set(W.map((U)=>U.item_id)),F=0;for(let U of K){if(!U.server.remotes?.some((N)=>N.url))continue;try{await bD1(Z,U)}catch(N){console.warn(`[REGISTRY_MONITOR_CONNECTION_SYNC] Skipping ${U.id}:`,N instanceof Error?N.message:N);continue}if(!H.has(U.id))F+=1}return{created:F,updated:Math.max(K.length-F,0)}}})});var _X8;var vX8=D(()=>{M0();iB();_X8=h({name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update the auth_status of a monitor connection mapping (by core connection ID)",inputSchema:HX8,outputSchema:FX8,handler:async({connectionId:$,authStatus:Z},Q)=>{let X=t(Q);await Q.access.check();let Y=Q.storage.registry,J=X.id,G=await Y.monitorConnections.findByConnectionId(J,$);if(!G)throw Error(`No monitor connection mapping found for connection ${$}`);return await Y.monitorConnections.updateAuthStatus(J,G.item_id,Z),{success:!0}}})});function nl6($){if(!$)return{};if(typeof $==="string")try{return JSON.parse($)}catch{return{}}if(typeof $==="object")return $;return{}}async function b80($,Z){let X=(await $.db.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",cb).execute()).map((J)=>nl6(J.settings)),Y={acceptPublishRequests:X.some((J)=>J.acceptPublishRequests===!0),requireApiToken:X.some((J)=>J.requireApiToken===!0),storePrivateOnly:X.some((J)=>J.storePrivateOnly===!0)};if(Y.acceptPublishRequests||Y.requireApiToken||Y.storePrivateOnly)return Y;for(let J of X)if(Object.keys(J).length>0)return J;return{}}var xX8=D(()=>{od()});import{z as yD1}from"zod";function tl6($,Z){if(!Z)return $;let Q={field:["is_public"],operator:"eq",value:!1};if(!$)return Q;return{operator:"and",conditions:[$,Q]}}function ol6($){let Z=new Map,Q=new Map;for(let Y of $){let J=fH(Y._meta);for(let G of J?.tags??[])Z.set(G,(Z.get(G)??0)+1);for(let G of J?.categories??[])Q.set(G,(Q.get(G)??0)+1)}let X=(Y)=>Array.from(Y.entries()).map(([J,G])=>({value:J,count:G})).sort((J,G)=>J.value.localeCompare(G.value));return{tags:X(Z),categories:X(Q)}}var fX8,bX8,yX8,gX8;var hX8=D(()=>{M0();g9();xX8();fX8=h({name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry items for Store discovery. Supports private-only mode from plugin settings.",inputSchema:dd,outputSchema:id,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id);return X.items.list(Q.id,{...$,where:tl6($.where,Y.storePrivateOnly===!0)})}}),bX8=h({name:"COLLECTION_REGISTRY_APP_GET",description:"Get a registry item for Store details. Respects private-only mode from plugin settings.",inputSchema:DU,outputSchema:lb,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id),J=$.id??$.name;if(!J)return{item:null};let G=await X.items.findByIdOrName(Q.id,J);if(!G)return{item:null};if(Y.storePrivateOnly&&G.is_public)return{item:null};return{item:G}}}),yX8=h({name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get registry item versions for Store details. Respects private-only mode from plugin settings.",inputSchema:DU,outputSchema:yD1.object({versions:yD1.array(sW)}),handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry,Y=await b80(Z,Q.id),J=$.id??$.name;if(!J)return{versions:[]};let G=await X.items.findByIdOrName(Q.id,J);if(!G)return{versions:[]};if(Y.storePrivateOnly&&G.is_public)return{versions:[]};return{versions:[G]}}}),gX8=h({name:"COLLECTION_REGISTRY_APP_FILTERS",description:"List Store filter facets for registry items. Respects private-only mode from plugin settings.",inputSchema:yD1.object({}),outputSchema:pd,handler:async($,Z)=>{let Q=t(Z);await Z.access.check();let X=Z.storage.registry;if(!(await b80(Z,Q.id)).storePrivateOnly)return X.items.getFilters(Q.id);let J=await X.items.list(Q.id,{limit:1e4,where:{field:["is_public"],operator:"eq",value:!1}});return ol6(J.items)}})});var uX8;var lX8=D(()=>{HQ8();UQ8();BQ8();DQ8();bz();wQ8();EQ8();PQ8();TQ8();qQ8();VQ8();SQ8();_Q8();xQ8();bQ8();gQ8();uQ8();cQ8();iS0();PX8();TX8();qX8();MX8();kX8();CX8();vX8();hX8();uX8=[fX8,bX8,yX8,gX8,zQ8,AQ8,jQ8,MQ8,NQ8,WQ8,RQ8,OQ8,LQ8,KG$,FQ8,kQ8,CQ8,vQ8,fQ8,yQ8,hQ8,lQ8,EX8,zX8,AX8,RX8,IX8,VX8,SX8,_X8]});import{z as rd}from"zod";var gD1;var cX8=D(()=>{M0();zW();$00();mY();gD1=h({name:"SANDBOX_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:rd.object({virtualMcpId:rd.string().describe("Virtual MCP ID that owns this VM"),branch:rd.string().min(1).describe("Branch whose vm should be deleted (sandboxMap[userId][branch])"),removeWorktree:rd.boolean().optional().default(!1).describe("Also reclaim the sandbox's workspace (local worktree + disk). Ignored by hosted teardown, whose filesystem is already destroyed.")}),outputSchema:rd.object({success:rd.boolean()}),handler:async($,Z)=>{let Q;try{Q=await qb$($,Z)}catch(K){if(K instanceof Error&&K.message==="Virtual MCP not found")return{success:!0};throw K}let{entry:X,userId:Y,sandboxUserId:J}=Q;if(!X)return{success:!0};let G=await JX1(Z);return await Rw(Z.storage.virtualMcps,$.virtualMcpId,Y,J,$.branch),await G.delete(X.sandboxHandle).catch((K)=>console.error(`[SANDBOX_DELETE] ${t7} ${X.sandboxHandle}: ${K instanceof Error?K.message:String(K)}`)),{success:!0}}})});var mX8=D(()=>{Y00();cX8()});import{z as pB}from"zod";function $c6($){try{return JSON.parse($)}catch(Z){throw Error(`GitHub /user/installations returned invalid JSON: ${$.slice(0,300)}`,{cause:Z})}}var sl6="https://api.github.com",el6=15000,hD1;var dX8=D(()=>{M0();VG();SY();KW();bs();al();hD1=h({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:pB.object({connectionId:pB.string().describe("ID of the mcp-github connection to use")}),outputSchema:pB.object({installations:pB.array(pB.object({installationId:pB.number(),login:pB.string(),avatarUrl:pB.string(),type:pB.string()}))}),handler:async($,Z)=>{await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization context required");let X=await Z.storage.connections.findById($.connectionId,Q);if(!X)throw Error("Connection not found");if(F9(X))throw Error("Repo-scoped connections cannot list installations \u2014 use an org-level mcp-github connection");let Y=new f5(Z.db,Z.vault),J=await Y.get($.connectionId);if(!J)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let G=J.accessToken;if(Hw(J)&&Y.isExpired(J,is)){let U=await pS0(J,Y);if(!U)throw Error(_Z);G=U,J=await Y.get($.connectionId)??J}let K=[],W=1,H=100,F=async(U)=>fetch(`${sl6}/user/installations?per_page=${H}&page=${W}`,{headers:{Authorization:`Bearer ${U}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(el6)});while(!0){let U=await F(G);if(U.status===401){let B=await Y.get($.connectionId);if(!B||!Hw(B))throw Error(_Z);let O=await pS0(B,Y);if(!O)throw Error(_Z);if(G=O,U=await F(G),U.status===401)throw Error(_Z)}if(Jw(U.headers,{lane:"rest",operation:"list_user_installations",installation:QZ1}),Xw(U)){await U.body?.cancel().catch(()=>{});let B=U.headers.get("retry-after")!==null?"secondary":"primary";Gw({lane:"rest",operation:"list_user_installations",installation:QZ1,kind:B});let O=Yw(U.headers);throw Error(`GitHub ${B} rate limit reached${O===null?"":`; retry in ${Math.ceil(O/1000)}s`}`)}if(!U.ok)throw await U.body?.cancel().catch(()=>{}),Error(`GitHub /user/installations failed: ${U.status}`);let N=$c6(await U.text());for(let B of N.installations)K.push({installationId:B.id,login:B.account.login,avatarUrl:B.account.avatar_url,type:B.account.type});if(N.installations.length<H)break;W++}return{installations:K}}})});var iX8=D(()=>{dX8()});import{z as uD1}from"zod";function nS0($){return{repositoryId:$.repositoryId,ref:$.repoUrl?NW($.repoUrl):null,connectionId:$.connectionId}}var nB,pX8="No credential for this repository \u2014 link it in Settings \u2192 Repositories";var lD1=D(()=>{r6();nB={repositoryId:uD1.string().optional().describe("Connected repository (REPOSITORY_LINK) to act on"),repoUrl:uD1.string().optional().describe("Any URL of the repository \u2014 its provider and host are read from it"),connectionId:uD1.string().optional().describe("Legacy: a repo-scoped mcp-github connection in this org")}});import{z as eW}from"zod";var cD1;var nX8=D(()=>{M0();N7();lD1();cD1=h({name:"REPOSITORY_SEARCH_BRANCHES",description:"Search a repository's branches by a case-insensitive substring of the branch name, filtered server-side by the provider.",annotations:{title:"Search Repository Branches",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:eW.object({...nB,query:eW.string().describe("Substring to match against branch names. Empty returns the first branches alphabetically."),limit:eW.number().int().min(1).max(100).default(30),cursor:eW.string().nullish().describe("Opaque cursor from a previous call's `nextCursor`, to read the next window")}),outputSchema:eW.object({branches:eW.array(eW.object({name:eW.string(),author:eW.string().nullable()})),totalCount:eW.number(),nextCursor:eW.string().nullable()}),handler:async($,Z)=>{await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization context required");return(await vZ1(Z,Q,nS0($))).searchBranches({query:$.query,limit:$.limit,cursor:$.cursor})}})});import{z as C$}from"zod";function oX8($){let{credentialConnectionId:Z,installationAuthorizedBy:Q,installationRepositoryIds:X,...Y}=$;return{...Y,servable:cs($)}}function mD1($){let{legacyConnectionId:Z,...Q}=$;return Q}async function rX8($,Z,Q){let X=await $.storage.gitProviderAccounts.get(Q,Z);if(!X)throw Error("Git account not found");return X}var Qc6,tX8,aX8,sX8,eX8,$Y8,ZY8,QY8,XY8,YY8;var JY8=D(()=>{ns();r6();M0();N7();nX8();Qc6=C$.object({ref:kP$,externalId:C$.string(),defaultBranch:C$.string().nullable(),webUrl:C$.string(),visibility:C$.enum(["public","private","internal"]),description:C$.string().nullable(),updatedAt:C$.string().nullable()}),tX8=SP$.extend({servable:C$.boolean(),connectedBy:C$.object({name:C$.string()}).nullable()});aX8=h({name:"GIT_PROVIDER_CAPABILITIES",description:"Which git providers this deployment can connect through Studio-owned credentials, and the URLs that start each connect flow.",annotations:{title:"Git provider capabilities",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({}),outputSchema:C$.object({github:C$.object({configured:C$.boolean(),connectPath:C$.string().nullable(),installPath:C$.string().nullable()}),gitlab:C$.object({oauthHosts:C$.array(C$.string()),connectPath:C$.string().nullable()}),bitbucket:C$.object({oauthHosts:C$.array(C$.string()),connectPath:C$.string().nullable()})}),handler:async($,Z)=>{o(Z);let Q=t(Z),X=`/api/${Q.slug??Q.id}/git-providers`,Y=hA$(),J=Y.github.configured;return{github:{configured:J,connectPath:J?`${X}/github/connect`:null,installPath:J?`${X}/github/install`:null},gitlab:{oauthHosts:Y.gitlab.hosts,connectPath:Y.gitlab.configured?`${X}/gitlab/connect`:null},bitbucket:{oauthHosts:Y.bitbucket.hosts,connectPath:Y.bitbucket.configured?`${X}/bitbucket/connect`:null}}}}),sX8=h({name:"GIT_ACCOUNT_LIST",description:"List the git provider accounts connected to this organization.",annotations:{title:"List git accounts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({}),outputSchema:C$.object({accounts:C$.array(tX8)}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{accounts:(await Z.storage.gitProviderAccounts.listByOrg(Q.id)).map(oX8)}}}),eX8=h({name:"GIT_ACCOUNT_CONNECT_TOKEN",description:"Connect a git provider account with an access token: a GitLab personal, project or group token, or a Bitbucket Cloud workspace, project or repository access token. Validates the token against the provider before storing it encrypted. Use this for self-managed GitLab instances (no OAuth application) or when OAuth is not wanted.",annotations:{title:"Connect git account with a token",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({type:Cs.describe("Provider; gitlab and bitbucket accept tokens (GitHub connects through the App)"),host:C$.string().min(1).describe("Provider host, e.g. gitlab.com, gitlab.acme.com or bitbucket.org"),token:C$.string().min(1).describe("Access token with api scope")}),outputSchema:C$.object({account:tX8}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=$.host.trim().toLowerCase();if(!/^[a-z0-9.-]+(:[0-9]+)?$/.test(X))throw Error("host must be a bare hostname, optionally with a port");let Y=await fA$($.type,X,$.token),J=await Z.storage.gitProviderAccounts.upsert({organizationId:Q.id,type:$.type,host:X,authKind:"token",externalAccountId:Y.externalAccountId,login:Y.login,avatarUrl:Y.avatarUrl,createdBy:o0(Z)??null});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:J.id,accessToken:$.token,refreshToken:null,scope:null,expiresAt:null,clientId:null,clientSecret:null,tokenEndpoint:null}),{account:oX8(J)}}}),$Y8=h({name:"GIT_ACCOUNT_DELETE",description:"Disconnect a git provider account. Its repositories stay linked but lose credentials (they become anonymous clones) until linked to another account.",annotations:{title:"Disconnect git account",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({id:C$.string()}),outputSchema:C$.object({deleted:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{deleted:await Z.storage.gitProviderAccounts.delete($.id,Q.id)}}}),ZY8=h({name:"REPOSITORY_LIST",description:"List the repositories linked to this organization.",annotations:{title:"List repositories",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({accountId:C$.string().optional().describe("Only repositories of this account")}),outputSchema:C$.object({repositories:C$.array(t91.extend({usable:C$.boolean()}))}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=await Z.storage.repositories.listByOrg(Q.id,{accountId:$.accountId}),Y=await Nw(Z,Q.id),J=new Set(Y.map((G)=>G.webUrl.toLowerCase()));return{repositories:X.map((G)=>({...mD1(G),usable:J.has(G.webUrl.toLowerCase())}))}}}),QY8=h({name:"REPOSITORY_SEARCH",description:"Search the repositories an account can reach on its provider (not yet linked). Feeds the repository picker.",annotations:{title:"Search provider repositories",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({accountId:C$.string(),query:C$.string().optional(),page:C$.number().int().min(1).optional(),perPage:C$.number().int().min(1).max(100).optional()}),outputSchema:C$.object({repositories:C$.array(Qc6),hasMore:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=await rX8(Z,Q.id,$.accountId);return YA({db:Z.db,vault:Z.vault},X).listRepos({query:$.query,page:$.page,perPage:$.perPage})}}),XY8=h({name:"REPOSITORY_LINK",description:"Link a repository to the organization. With an account, the repository is verified against the provider and its facts (id, default branch, visibility) recorded; without one it is linked as an anonymous public clone.",annotations:{title:"Link repository",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({url:C$.string().min(1).describe("Repository URL (https or ssh), or a bare path like owner/name when accountId is given"),accountId:C$.string().optional().describe("Account whose credentials access the repository")}),outputSchema:C$.object({repository:t91}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z),X=o0(Z)??null;if(!$.accountId){let H=NW($.url);if(!H)throw Error("Could not recognise the repository URL. Use a full https URL from GitHub, GitLab or Bitbucket.");let F=await Z.storage.repositories.upsert({organizationId:Q.id,ref:H,createdBy:X});return{repository:mD1(F)}}let Y=await rX8(Z,Q.id,$.accountId),J=NW($.url,{provider:Y.type,host:Y.host});if(!J)throw Error("Could not recognise the repository URL or path");if(J.host!==Y.host)throw Error(`Repository is on ${J.host} but the account is on ${Y.host}`);let K=await YA({db:Z.db,vault:Z.vault},Y).getRepo(J);if(!K)throw Error(`${J.path} was not found on ${J.host} or the account cannot access it`);let W=await Z.storage.repositories.upsert({organizationId:Q.id,ref:K.ref,accountId:Y.id,externalId:K.externalId,defaultBranch:K.defaultBranch,visibility:K.visibility,createdBy:X});return{repository:mD1(W)}}}),YY8=h({name:"REPOSITORY_DELETE",description:"Unlink a repository from the organization. Agents, tasks and syncs that referenced it keep working off their legacy metadata until relinked.",annotations:{title:"Unlink repository",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:C$.object({id:C$.string()}),outputSchema:C$.object({deleted:C$.boolean()}),handler:async($,Z)=>{o(Z),await Z.access.check();let Q=t(Z);return{deleted:await Z.storage.repositories.delete($.id,Q.id)}}})});import{z as J$}from"zod";async function ad($,Z){let Q=$.organization?.id;if(!Q)throw Error("Organization context required");let X=await ps($,Q,nS0(Z));if(!X)throw Error(pX8);return X}var Yc6,Jc6,tS0,Gc6,GY8,KY8,WY8,HY8,FY8,UY8;var NY8=D(()=>{M0();N7();lD1();Yc6=J$.object({id:J$.string().nullable(),name:J$.string(),state:J$.enum(["queued","running","completed"]),conclusion:J$.enum(["success","failure","neutral","cancelled","skipped","timed_out","action_required"]).nullable(),url:J$.string().nullable(),durationMs:J$.number().nullable(),summary:J$.string().nullable()}),Jc6=J$.object({id:J$.string(),author:J$.string(),body:J$.string(),createdAt:J$.string(),updatedAt:J$.string(),url:J$.string()}),tS0=J$.object({number:J$.number(),url:J$.string(),title:J$.string(),body:J$.string(),state:J$.enum(["open","closed","merged"]),draft:J$.boolean(),mergedAt:J$.string().nullable(),base:J$.string(),head:J$.string(),headSha:J$.string(),headRepoPath:J$.string().nullable(),author:J$.string(),conflicting:J$.boolean().nullable(),checks:J$.enum(["pending","passing","failing"]).nullable(),changedFiles:J$.number().nullable()}),Gc6=tS0.extend({checkRuns:J$.array(Yc6),comments:J$.array(Jc6),unresolvedConversations:J$.number(),reviewBlocked:J$.boolean()}),GY8=h({name:"CHANGE_REQUEST_STATE",description:"Read a branch's change request with its CI runs, review state and comments.",annotations:{title:"Read Change Request State",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,branch:J$.string().describe("Head branch of the change request to read")}),outputSchema:J$.object({changeRequest:Gc6.nullable()}),handler:async($,Z)=>{return await Z.access.check(),{changeRequest:await(await ad(Z,$)).readDetailed({branch:$.branch})}}}),KY8=h({name:"CHANGE_REQUEST_LAST_MERGED",description:"Read the most recently merged change request into a base branch \u2014 in Fast Preview, the last publish.",annotations:{title:"Read Last Merged Change Request",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,base:J$.string().describe("Branch it was merged into")}),outputSchema:J$.object({changeRequest:tS0.nullable()}),handler:async($,Z)=>{return await Z.access.check(),{changeRequest:await(await ad(Z,$)).lastMergedInto($.base)}}}),WY8=h({name:"CHANGE_REQUEST_LIST_OPEN",description:"List a repository's open change requests, most recently updated first.",annotations:{title:"List Open Change Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,limit:J$.number().int().min(1).max(100).default(50)}),outputSchema:J$.object({changeRequests:J$.array(tS0)}),handler:async($,Z)=>{return await Z.access.check(),{changeRequests:await(await ad(Z,$)).listOpen($.limit)}}}),HY8=h({name:"CHANGE_REQUEST_CHECK_LOG",description:"Read one CI run's report \u2014 a GitHub check run's output markdown, or the tail of a GitLab job's trace. Bitbucket commit statuses carry no report, so this answers nothing there.",annotations:{title:"Read CI Run Report",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,checkId:J$.string().describe("Provider id of the run, from its listing")}),outputSchema:J$.object({report:J$.string().nullable()}),handler:async($,Z)=>{return await Z.access.check(),{report:await(await ad(Z,$)).readCheckLog($.checkId)}}}),FY8=h({name:"CHANGE_REQUEST_OPEN",description:"Propose a branch onto another. Returns the branch's existing change request instead of failing when it already has one.",annotations:{title:"Open Change Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,head:J$.string().describe("Branch being proposed"),base:J$.string().describe("Branch it should land on"),title:J$.string(),body:J$.string().optional()}),outputSchema:J$.object({changeRequest:tS0,existed:J$.boolean()}),handler:async($,Z)=>{await Z.access.check();let Q=await ad(Z,$),X=await Q.readForBranch($.head);if(X&&X.state==="open"){if($.body&&$.body!==X.body)await Q.describe(X.number,$.body);return{changeRequest:$.body?{...X,body:$.body}:X,existed:!0}}return{changeRequest:await Q.open({head:$.head,base:$.base,title:$.title,body:$.body}),existed:!1}}}),UY8=h({name:"CHANGE_REQUEST_MERGE",description:"Land a change request. Reports why it could not merge rather than throwing.",annotations:{title:"Merge Change Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:J$.object({...nB,number:J$.number().int().positive(),strategy:J$.enum(["any","squash"]).default("any").describe("`squash` when the result must be one commit; `any` uses whatever the repository allows"),commitTitle:J$.string().optional(),commitMessage:J$.string().optional()}),outputSchema:J$.object({merged:J$.boolean(),reason:J$.enum(["conflict","blocked","rate_limited","not_found","error"]).optional(),detail:J$.string().optional()}),handler:async($,Z)=>{await Z.access.check();let X=await(await ad(Z,$)).merge($.number,{strategy:$.strategy,commitTitle:$.commitTitle,commitMessage:$.commitMessage});return X.merged?{merged:!0}:{merged:!1,reason:X.reason,detail:X.detail}}})});import{z as g4}from"zod";function oS0($){if(!$)return"";return typeof $==="string"?$:$.toISOString()}function dD1($){let Z=$.trim();return Z.length>0?Z:void 0}function iD1($,Z){return $===void 0||$.includes(Z)}var Wc6,Hc6,Fc6,Uc6,Nc6,Bc6,Oc6,pD1;var BY8=D(()=>{M0();Qq0();Wc6=["thread","task","connection"],Hc6=g4.object({type:g4.literal("thread"),id:g4.string(),title:g4.string(),created_at:g4.string(),updated_at:g4.string(),virtual_mcp_id:g4.string().nullable(),run_config:g4.record(g4.string(),g4.unknown()).nullable(),status:g4.string().nullable()}),Fc6=g4.object({type:g4.literal("task"),id:g4.string(),title:g4.string(),created_at:g4.string(),updated_at:g4.string(),key:g4.string().nullable(),status:g4.string().nullable(),repo:g4.string().nullable()}),Uc6=g4.object({type:g4.literal("connection"),id:g4.string(),title:g4.string(),icon:g4.string().nullable(),slug:g4.string().nullable()}),Nc6=g4.discriminatedUnion("type",[Hc6,Fc6,Uc6]),Bc6=g4.object({query:g4.string().max(256).describe("Free-text search query. Empty string returns the most recently updated resources."),limit:g4.number().int().min(1).max(50).optional().describe("Maximum results per resource type (default: 20)."),types:g4.array(g4.enum(Wc6)).optional().describe("Restrict the search to specific resource types. Omit to search across all available types.")}),Oc6=g4.object({items:g4.array(Nc6),totalCount:g4.number()});pD1=h({name:"GLOBAL_SEARCH",description:"Search across organization resources by free-text query. Returns a typed union of matches (currently: threads, task-board cards and MCP connections). New resource types may be added over time without changes to the call shape.",annotations:{title:"Global Search",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Bc6,outputSchema:Oc6,handler:async($,Z)=>{await Z.access.check();let Q=t(Z),X=$.limit??20,Y=iD1($.types,"thread"),J=iD1($.types,"task"),G=iD1($.types,"connection"),K=[],W=0,[H,F,U]=await Promise.all([Y?Z.storage.threads.list(void 0,{limit:X,offset:0,search:dD1($.query),includeArchived:!1}):null,J?Z.storage.taskBoard.searchByTitle(Q.id,dD1($.query)??"",X):null,G?Z.storage.connections.searchByTitle(Q.id,dD1($.query)??"",X):null]);if(H){W+=H.total;for(let N of H.threads)K.push({type:"thread",id:N.id,title:N.title??"",created_at:oS0(N.created_at),updated_at:oS0(N.updated_at),virtual_mcp_id:N.virtual_mcp_id??null,run_config:N.run_config??null,status:uG(N).status})}if(F){W+=F.length;for(let N of F)K.push({type:"task",id:N.id,title:N.title??"",created_at:oS0(N.createdAt),updated_at:oS0(N.updatedAt),key:Q.slug?sc(Q.slug,N.keySeq):null,status:N.status??null,repo:N.repo??null})}if(U){W+=U.length;for(let N of U)K.push({type:"connection",id:N.id,title:N.title,icon:N.icon??null,slug:N.slug??null})}return{items:K,totalCount:W}}})});var OY8=D(()=>{BY8()});var dW0={};e(dW0,{toolSubsetMCP:()=>nD1,managementMCP:()=>Rm,managementContextStore:()=>MB,listManagementTools:()=>Lc6,TOOL_BY_NAME:()=>sd,CORE_TOOLS:()=>LY8});import{z as DY8}from"zod";async function Lc6($){let Z=await Rm($),[Q,X]=la.createLinkedPair();await Z.connect(X);let Y=new KZ({name:"tools-hydration",version:"1.0.0"},{jsonSchemaValidator:x5});try{return await Y.connect(Q),(await Y.listTools()).tools}finally{await Y.close().catch(()=>{}),await Z.close().catch(()=>{})}}var LY8,sd,nD1=($,Z)=>{let Q=new lH({name:$,version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:x5});for(let X of Z){let Y=sd.get(X);if(!Y){console.warn(`[${$}] unknown tool "${X}" \u2014 not registered`);continue}let{config:J,handler:G}=V80(Y);Q.registerTool(Y.name,J,G)}return Q},Rm=async($)=>{let Z=new lH({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},jsonSchemaValidator:x5});for(let Y of sd.values()){let{config:J,handler:G}=V80(Y);Z.registerTool(Y.name,J,G)}let Q=VS0();for(let Y of Q){let J=Y.arguments?.length?Object.fromEntries(Y.arguments.map((G)=>{let K=G.required?DY8.string():DY8.string().optional();return[G.name,G.description?K.describe(G.description):K]})):void 0;Z.registerPrompt(Y.name,{title:Y.title,description:Y.description,...J?{argsSchema:J}:{}},(G)=>{return{messages:[{role:"user",content:{type:"text",text:typeof Y.text==="function"?Y.text(G??{}):Y.text}}]}})}if($.organization?.id){let Y=await $.storage.brandContext.list($.organization.id),J=new Set;for(let G of Y){let K=G.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),W=K?`brand-${K}`:`brand-${G.id}`;if(J.has(W))W=`${W}-${G.id.slice(0,8)}`;J.add(W);let H=[`# Brand: ${G.name}`,"",`**Domain:** ${G.domain}`,"","## Overview",G.overview];if(G.colors){let U=Object.entries(G.colors).filter(([,N])=>N);if(U.length>0){H.push("","## Colors");for(let[N,B]of U)H.push(`- **${N}:** ${B}`)}}if(G.fonts){let U=Object.entries(G.fonts).filter(([,N])=>N);if(U.length>0){H.push("","## Fonts");for(let[N,B]of U)H.push(`- ${B} (${N})`)}}if(G.logo)H.push("",`**Logo:** ${G.logo}`);if(G.favicon)H.push(`**Favicon:** ${G.favicon}`);if(G.ogImage)H.push(`**OG Image:** ${G.ogImage}`);if(G.images&&G.images.length>0){H.push("","## Images");for(let U of G.images){let N=Object.entries(U).map(([B,O])=>`${B}: ${O}`).join(", ");H.push(`- ${N}`)}}let F=H.join(`
|
|
4607
4607
|
`);Z.prompt(W,`Brand context for ${G.name}`,()=>({messages:[{role:"user",content:{type:"text",text:F}}]}))}}let X=vZ8();for(let Y of X)Z.resource(Y.name,Y.uri,{description:Y.description,mimeType:Y.mimeType??"text/markdown"},async(J)=>{return{contents:[{uri:typeof J==="string"?J:J.href,mimeType:Y.mimeType??"text/markdown",text:Y.text}]}});return Z};var hL=D(()=>{uH();go();kQ();Lj$();Vj$();Jz$();Hz$();qz$();Cz$();MP$();Zi$();Hi$();Di$();zi$();Kp$();Up$();Do$();Eo$();Ao$();R98();_98();x98();u98();GZ8();LD1();kS0();kS0();J78();lX8();mX8();iX8();JY8();NY8();OY8();LY8=[G91,K91,W91,H91,F91,U91,O91,B91,Qi$,Yi$,Gi$,Ki$,If,Tf,Rf,qf,HK1,FK1,UK1,BK1,OK1,DK1,Af,LK1,zK1,AK1,TK1,RK1,sJ1,VK1,kK1,SK1,CK1,qK1,IK1,OX1,D91,L91,w91,j91,E91,P91,A91,T91,I91,M91,V91,k91,S91,C91,_91,v91,x91,f91,b91,y91,u91,c91,n91,$D1,KD1,WD1,N51,gP,hP,S51,C51,_51,Y51,Q51,$51,Z51,lP,mP,dP,iP,pP,Wz$,$91,Z91,Q91,X91,Y91,o61,a61,s61,r61,PW1,AW1,TW1,gK1,Gf,Kf,uK1,lK1,Wf,vK1,xK1,fK1,bK1,yK1,cK1,mK1,dK1,OW1,DW1,LW1,wW1,jW1,EW1,zW1,nP,tP,oP,e51,AF1,TF1,RF1,qF1,IF1,MF1,VF1,kF1,SF1,CF1,_F1,fF1,bF1,Lo$,wo$,jo$,hF1,uF1,nO1,oO1,rO1,aO1,sO1,eO1,v98,f98,b98,y98,g98,h98,ZZ8,QZ8,XZ8,YZ8,JZ8,ND1,BD1,OD1,DD1,Nf,Bf,Of,Df,yJ1,wD1,jD1,ED1,zD1,PD1,AD1,...uX8,tY1,gD1,hD1,aX8,sX8,eX8,$Y8,ZY8,QY8,XY8,YY8,cD1,GY8,KY8,WY8,HY8,FY8,UY8,pD1],sd=new Map(LY8.map(($)=>[$.name,$]))});import{z as wY8}from"zod";function wc6($){return[{permissions:{self:["*"]},getTools:async()=>{let{CORE_TOOLS:Z}=await Promise.resolve().then(() => (hL(),dW0));return Z.map((Q)=>{return{name:Q.name,inputSchema:wY8.toJSONSchema(Q.inputSchema,{unrepresentable:"any"}),outputSchema:Q.outputSchema?wY8.toJSONSchema(Q.outputSchema,{unrepresentable:"any"}):void 0,description:Q.description}})},data:UG$(w5(),$)},{data:FG$()},{data:HG$($)}]}async function jY8($,Z){try{let Q=l$(),X=k0();await Q.db.insertInto("organization_billing").values({organization_id:$}).onConflict((K)=>K.column("organization_id").doNothing()).execute();let Y=new MX(X.encryptionKey),J=new oo(Q.db,Y),G=wc6($);await Promise.all(G.map(async(K)=>{let W=null;if(K.permissions)W=(await K8.api.createApiKey({body:{name:`${K.data.app_name??crypto.randomUUID()}-mcp`,userId:Z,permissions:K.permissions,rateLimitEnabled:!1,metadata:{organization:{id:$},purpose:"default-org-connections"}}}))?.key;let H=await Cl({id:"pending",title:K.data.title,connection_type:K.data.connection_type,connection_url:K.data.connection_url,connection_token:K.data.connection_token??W,connection_headers:K.data.connection_headers}).catch(()=>null),F=await K.getTools?.()??H?.tools??null,U=H?.scopes?.length?H.scopes:null,N=K.data.id?K.data.id.startsWith(`${$}_`)?K.data.id:`${$}_${K.data.id}`:void 0;await J.create({...K.data,id:N,tools:F,configuration_scopes:U,organization_id:$,created_by:Z,connection_token:K.data.connection_token??W})}));try{await t61({orgId:$,createdBy:Z})}catch(K){console.error("Failed to enqueue studio pack install:",K)}if(X.aiGatewayEnabled&&X.studioProvisionSecretKey&&VL.provisionKey)try{let K=await kH(Z),W=await VL.provisionKey(K,$);await new ha(Q.db,Y).upsert({providerId:"deco",label:"Auto-provisioned",apiKey:W,organizationId:$,createdBy:Z})}catch(K){console.error("Failed to auto-provision Deco AI Gateway key:",K)}}catch(Q){console.error("Error creating default MCP connections:",Q)}}var EY8=D(()=>{f8();UW0();E5();AQ();ED();_61();J$1();BW0();A$();sJ();wW0();jD()});async function zY8($,Z){let Q=x7();if(!Q)return Z;let X=await l$().db.selectFrom("organization").select("slug").where("id","=",$).executeTakeFirst();if(!X?.slug)return Z;return await en({objectStorage:PX(Q,$),baseUrl:w5(),orgSlug:X.slug,prefix:"org-logos"})(Z)??Z}var PY8=D(()=>{AQ();XN();jX0();E5()});function jc6($,Z){let Q=$.email.split("@")[1]?.toLowerCase()??null;return{distinctId:$.id,properties:{$set:{email:$.email,name:$.name,email_verified:$.emailVerified},$set_once:{first_seen_at:Z.toISOString(),signup_email_domain:Q}}}}function tD1($){_1.identify(jc6($,new Date))}var AY8=D(()=>{m4()});import{adminAc as TY8,memberAc as Ec6}from"@decocms/better-auth/plugins/organization/access";function rD1($){let Z=["*",...$];return{user:{self:[...qJ0],...Ec6.statements},admin:{self:Z,...TY8.statements},owner:{self:Z,...TY8.statements}}}function zc6($,Z){for(let[Q,X]of Object.entries(Z)){let Y=$[Q];if(!Y)return!1;for(let J of X)if(!Y.includes(J)&&!Y.includes("*"))return!1}return!0}function RY8($,Z,Q){if(!$)return"fallback";if($.includes(","))return"fallback";if(!fh.includes($))return"fallback";let X=Q[$];if(!X)return"fallback";return zc6(X,Z)?"grant":"deny"}function qY8(){if(!oD1){let $=Object.values(Pz()).flatMap((Z)=>Z.map((Q)=>Q.name));oD1=rD1($)}return oD1}var oD1;var aD1=D(()=>{xh();MQ()});import{decodeJwt as Pc6}from"jose";import{sql as y80}from"kysely";async function Rc6($){let{user:Z,token:Q}=$;if(!Q?.idToken)return;let X;try{X=Pc6(Q.idToken)}catch{return}let{preferred_username:Y,upn:J}=X,G=[Y,J].filter((H)=>typeof H==="string"&&H.length>0&&H.toLowerCase()!==Z.email.toLowerCase()).map((H)=>H.toLowerCase());if(G.length===0)return;let{db:K}=l$(),W=await K.selectFrom("user").selectAll().where("email","in",G).where("id","!=",Z.id).executeTakeFirst();if(!W)return;try{await K.transaction().execute(async(H)=>{await y80`UPDATE "account" SET "userId" = ${W.id} WHERE "userId" = ${Z.id}`.execute(H),await y80`UPDATE "session" SET "userId" = ${W.id} WHERE "userId" = ${Z.id}`.execute(H),await y80`
|
|
4608
4608
|
UPDATE "member" SET "userId" = ${W.id}
|
|
4609
4609
|
WHERE "userId" = ${Z.id}
|
|
@@ -4746,7 +4746,7 @@ ${Z}`}:X)}}var SJ8=D(()=>{q9()});async function Pm6($,Z,Q){if(!$)return!1;let X=
|
|
|
4746
4746
|
AND date >= {since:Date} AND date <= {until:Date}
|
|
4747
4747
|
GROUP BY ${X}
|
|
4748
4748
|
ORDER BY pageviews DESC
|
|
4749
|
-
LIMIT 50`,{slug:$,since:Z,until:Q})).map((J)=>({key:J.key,pageviews:Number(J.pageviews),visitors:Number(J.visitors)}))}async function GK8($){let{since:Z,until:Q}=KK8(90),X=await WK8($,Z,Q);return[...new Set(X.map(TS0))]}async function fC0($){let Z=$.get("studioContext");if(!Tz(Z))return $.json({error:"Unauthorized"},401);let Q=t(Z),X=$.req.param("site");if(!X)return $.json({error:"site is required"},400);let Y=X.toLowerCase();if(!await Z.storage.orgSites.isOwnedBy(Y,Q.id))return $.json({error:"Site not found in organization"},404);return{slug:Y}}var di6,ii6,YK8,HK="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})",ei6,Qp6="https://deco.lilstts.com/plausible",Xp6=12000,Yp6,HK8=()=>{let $=new X1;return $.get("/:site/cdn/data",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;if(!hb())return Z.json({available:!1,error:"Monitor is not configured"});let X=Z.req.query("view")??"summary";if(!di6.has(X))return Z.json({error:`unknown or unavailable view: ${X}`},400);let Y=Z.req.query("range")??"7d",J=kw1(Y,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${Y}`},400);let{slug:G}=Q,{since:K,until:W}=J,H=JK8(Z.req.query("filters"));try{let F;switch(X){case"summary":F=await ni6(G,K,W,H);break;case"timeline":F=await ti6(G,K,W,J.granularity,H);break;case"cache-status":F=await oi6(G,K,W,H);break;case"status-codes":F=await ri6(G,K,W,H);break;case"top-paths":F=await ai6(G,K,W,Z.req.query("groupByPath")==="1",H);break;case"top-countries":F=await si6(G,K,W,H);break}return Z.json({available:!0,view:X,range:Y,data:F})}catch(F){return console.error(`[monitor] cdn ${X} query failed for site="${G}":`,F),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/audience/data",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;if(!hb())return Z.json({available:!1,error:"Monitor is not configured"});let X=Z.req.query("view")??"summary";if(!ei6.has(X))return Z.json({error:`unknown or unavailable view: ${X}`},400);let Y=Z.req.query("range")??"7d",J=kw1(Y,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${Y}`},400);let{slug:G}=Q,{since:K,until:W}=J;try{let H;switch(X){case"summary":H=await $p6(G,K,W);break;case"timeline":H=await Zp6(G,K,W);break;case"top-sources":H=await Sw1(G,K,W,"utm_source");break;case"top-countries":H=await Sw1(G,K,W,"country");break;case"devices":H=await Sw1(G,K,W,"device_type");break}return Z.json({available:!0,view:X,range:Y,data:H})}catch(H){return console.error(`[monitor] audience ${X} query failed for site="${G}":`,H),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/hosts",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;let{slug:X}=Q;if(!hb())return Z.json({available:!1,hosts:[]});try{let Y=await GK8(X);return Z.json({available:!0,hosts:Y})}catch(Y){return console.error(`[monitor] hosts failed for site="${X}":`,Y),Z.json({available:!0,hosts:[]})}}),$.get("/:site/onedollar",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;let{slug:X}=Q,Y=k0().oneDollarStatsApiKey;if(!Y)return Z.json({available:!1,error:"OneDollarStats not configured"});let J=Z.req.query("report")??"kpis",G=Yp6[J];if(!G)return Z.json({error:`unknown report: ${J}`},400);let K=Z.req.query("range")??"7d",W=kw1(K,Z.req.query("since"),Z.req.query("until"));if(!W)return Z.json({error:`unknown range: ${K}`},400);let H=await GK8(X),F=Z.req.query("host"),U=F&&H.includes(F)?F:H[0];if(!U)return Z.json({available:!0,report:J,range:K,results:[]});let{since:N,until:B}=W,O=J==="timeseries"?W.granularity==="hourly"?"time:hour":"time:day":G.dimension,L={page:"event:page",source:"visit:referrer",referrer:"visit:referrer",country:"visit:country",browser:"visit:browser",os:"visit:os",device:"visit:device",utm_campaign:"visit:utm_campaign",utm_source:"visit:utm_source",utm_medium:"visit:utm_medium",utm_content:"visit:utm_content",utm_term:"visit:utm_term"},w={equals:"is",not_equals:"is_not",contains:"contains",not_contains:"contains_not"},j=JK8(Z.req.query("filters")).map((z)=>{let P=L[z.field],A=w[z.op];return P&&A?[A,P,[z.value]]:null}).filter(Boolean),E=async(z)=>{let P=await fetch(Qp6,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":Y,Accept:"application/json"},body:JSON.stringify({site_id:U,metrics:G.metrics,date_range:z,...O?{dimensions:[O]}:{},...G.order?{order_by:[[G.order,"desc"]]}:{},...j.length?{filters:j}:{},pagination:{limit:100,offset:0}}),signal:AbortSignal.timeout(Xp6)});if(!P.ok)throw Error(`OneDollarStats ${P.status}`);return(await P.json().catch(()=>null))?.results??[]};try{let z=await E([N,B]),P;if(J==="kpis"||J==="timeseries"&&Z.req.query("compare")==="1"){let q=Date.parse(`${N}T00:00:00Z`),V=86400000,I=bC0(new Date(q-86400000)),C=bC0(new Date(q-W.days*86400000));P=await E([C,I]).catch(()=>{return})}return Z.json({available:!0,report:J,range:K,host:U,metrics:G.metrics,results:z,...P?{previous:P}:{}})}catch(z){return console.error(`[monitor] onedollar ${J} failed for host="${U}":`,z),Z.json({error:"Failed to reach OneDollarStats"},502)}}),$};var FK8=D(()=>{d$();A$();ZD1();QD1();di6=new Set(["summary","timeline","cache-status","status-codes","top-paths","top-countries"]),ii6={today:{days:1,granularity:"hourly"},yesterday:{days:1,granularity:"hourly",endOffsetDays:1},"7d":{days:7,granularity:"daily"},"14d":{days:14,granularity:"daily"},"30d":{days:30,granularity:"daily"},"90d":{days:90,granularity:"daily"},"180d":{days:180,granularity:"daily"},"1y":{days:365,granularity:"daily"}};YK8=/^\d{4}-\d{2}-\d{2}$/;ei6=new Set(["summary","timeline","top-sources","top-countries","devices"]);Yp6={kpis:{metrics:["visitors","visits","pageviews","bounce_rate","visit_duration"]},timeseries:{metrics:["pageviews","visits","visitors","bounce_rate","visit_duration"]},pages:{metrics:["pageviews","visitors"],dimension:"event:page",order:"pageviews"},sources:{metrics:["visitors"],dimension:"visit:referrer",order:"visitors"},countries:{metrics:["visitors"],dimension:"visit:country",order:"visitors"},browsers:{metrics:["visitors"],dimension:"visit:browser",order:"visitors"},os:{metrics:["visitors"],dimension:"visit:os",order:"visitors"},devices:{metrics:["visitors"],dimension:"visit:device",order:"visitors"},events:{metrics:["visitors","events"],dimension:"event:name",order:"events"},utm_campaign:{metrics:["visitors","events"],dimension:"visit:utm_campaign",order:"events"},utm_source:{metrics:["visitors","events"],dimension:"visit:utm_source",order:"events"},utm_medium:{metrics:["visitors","events"],dimension:"visit:utm_medium",order:"events"},utm_content:{metrics:["visitors","events"],dimension:"visit:utm_content",order:"events"},utm_term:{metrics:["visitors","events"],dimension:"visit:utm_term",order:"events"}}});import{timingSafeEqual as Jp6}from"crypto";function Fi($){let Q=$?.match(/^Bearer\s+(.+)$/i)?.[1]?.trim();return Q?Q:null}function Cw1($,Z){let Q=Buffer.from($),X=Buffer.from(Z);return Q.length===X.length&&Jp6(Q,X)}function Ui($){let Z=process.env.VAULT_SERVICE_TOKEN;return!!Z&&Cw1($,Z)}function UK8($){if(!$)return null;return $ instanceof Date?$.toISOString():$}function Gp6($){if(!$)return[];if(Array.isArray($))return $.filter((Z)=>typeof Z==="string");if(typeof $!=="string")return[];try{let Z=JSON.parse($);return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}catch{return[]}}async function NK8($,Z,Q){let X=Fi($.req.header("authorization"));if(!X)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let Y=$.get("studioContext"),J=Y.organization?.id;if(!J)return{ok:!1,response:$.json({error:"Organization context required"},403)};if(Ui(X))return{ok:!0,ctx:Y,organizationId:J};let G=await Y.storage.connectionCredentialVault.authenticateWorkloadToken(X);if(!G||G.organizationId!==J)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let K=await Y.storage.connections.findById(G.subjectConnectionId,J);if(!K||K.status!=="active")return{ok:!1,response:$.json({error:"Unauthorized"},401)};if(!await Y.storage.connectionCredentialVault.hasGrant({organizationId:J,subjectConnectionId:G.subjectConnectionId,targetConnectionId:Z,scope:Q}))return{ok:!1,response:$.json({error:"Forbidden"},403)};return{ok:!0,ctx:Y,organizationId:J}}var BK8=()=>{let $=new X1;return $.post("/vault/connections/batch",async(Z)=>{let Q=Fi(Z.req.header("authorization"));if(!Q||!Ui(Q))return Z.json({error:"Unauthorized"},401);let X=Z.get("studioContext"),Y=X.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let J=await Z.req.json().catch(()=>null),G=Array.isArray(J?.connectionIds)?[...new Set(J.connectionIds)].filter((B)=>typeof B==="string"&&B.length>0):[];if(G.length===0||G.length>20)return Z.json({error:"connectionIds must be a non-empty string array (max 20)"},400);let{items:K}=await X.storage.connections.list(Y,{includeVirtual:!0,where:{field:["id"],operator:"in",value:G},limit:G.length}),W=new Map(K.map((B)=>[B.id,B])),H=new Set((await X.db.selectFrom("downstream_tokens").select("connectionId").where("connectionId","in",G).execute()).map((B)=>B.connectionId)),F=new Map((await X.db.selectFrom("connections").select(["id","configuration_state","connection_token"]).where("id","in",G).where("organization_id","=",Y).execute()).map((B)=>[B.id,B])),U=new f5(X.db,X.vault),N={};return await Promise.all(G.map(async(B)=>{try{let O=W.get(B);if(!O||O.status!=="active"){N[B]={error:"Connection not found"};return}if(F.get(B)?.configuration_state&&!O.configuration_state){N[B]={error:"MCP configuration could not be decrypted"};return}let L={type:"mcp_configuration",state:O.configuration_state??{},scopes:O.configuration_scopes??[]},w=null;if(H.has(B)){let j=await X3({connectionId:B,connectionUrl:O.connection_url,tokenStorage:U});if(j.state==="valid"||j.state==="refreshed"){let E=await U.get(B);w={type:"oauth_access_token",tokenType:"Bearer",accessToken:j.accessToken,expiresAt:UK8(E?.expiresAt??null),scope:E?.scope??null}}}else if(O.connection_token)w={type:"static_token",tokenType:"Bearer",accessToken:O.connection_token,expiresAt:null,scope:null};else if(F.get(B)?.connection_token){N[B]={error:"Connection token could not be decrypted"};return}N[B]={configuration:L,accessToken:w}}catch(O){N[B]={error:O instanceof Error?O.message:String(O)}}})),Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json(N)}),$.post("/vault/connections/:connectionId/access-token",async(Z)=>{let Q=Z.req.param("connectionId"),X=await NK8(Z,Q,ZG0);if(!X.ok)return X.response;let{ctx:Y,organizationId:J}=X,G=await Y.storage.connections.findById(Q,J);if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let K=new f5(Y.db,Y.vault),W=await X3({connectionId:Q,connectionUrl:G.connection_url,tokenStorage:K});if(W.state==="missing"){if(G.connection_token)return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"static_token",tokenType:"Bearer",accessToken:G.connection_token,expiresAt:null,scope:null});if((await Y.db.selectFrom("connections").select("connection_token").where("id","=",Q).where("organization_id","=",J).executeTakeFirst())?.connection_token)return Z.json({error:"Connection token could not be decrypted"},424);return Z.json({error:"Downstream token not found"},409)}if(W.state==="expired_without_refresh"||W.state==="refresh_failed")return Z.json({error:"Downstream token refresh failed"},424);let H=await K.get(Q);return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"oauth_access_token",tokenType:"Bearer",accessToken:W.accessToken,expiresAt:UK8(H?.expiresAt??null),scope:H?.scope??null})}),$.post("/vault/connections/:connectionId/configuration",async(Z)=>{let Q=Z.req.param("connectionId"),X=await NK8(Z,Q,QG0);if(!X.ok)return X.response;let{ctx:Y,organizationId:J}=X,G=await Y.db.selectFrom("connections").select(["status","configuration_state","configuration_scopes"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let K={};if(G.configuration_state)try{let W=await Y.vault.decrypt(G.configuration_state),H=JSON.parse(W);if(typeof H!=="object"||H===null||Array.isArray(H))throw Error("MCP configuration state is not an object");K=H}catch{return Z.json({error:"MCP configuration could not be decrypted"},424)}return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"mcp_configuration",state:K,scopes:Gp6(G.configuration_scopes)})}),$};var Z40=D(()=>{d$();VG();XG0();KW()});import{createHmac as Kp6}from"crypto";import{mkdir as Wp6,writeFile as Hp6}from"fs/promises";import{dirname as Fp6,join as LK8}from"path";function Np6($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return LK8(Up6,Z)}function OK8($,Z){let Q=Np6($),X=$G(Z);return LK8(Q,X)}function DK8($,Z,Q,X,Y){let J=k0().encryptionKey||"dev-secret",G=`${$}:${Z}:${Q}:${X}`,K=Kp6("sha256",J).update(G).digest("hex");return Cw1(Y,K)}function _w1($){let Z=$.split(".").pop()?.toLowerCase()||"";return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",json:"application/json",xml:"application/xml",txt:"text/plain",html:"text/html",htm:"text/html",css:"text/css",csv:"text/csv",md:"text/markdown",js:"application/javascript",mjs:"application/javascript",ts:"application/typescript",mp4:"video/mp4",webm:"video/webm",avi:"video/x-msvideo",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",zip:"application/zip",gz:"application/gzip",tar:"application/x-tar",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf"}[Z]||"application/octet-stream"}var Up6="./data/assets",yC0=($)=>{let Z=new X1,Q=$.orgFromPath?"/*":"/:orgId/*";return Z.get(Q,async(X)=>{let Y=$.orgFromPath?X.get("studioContext")?.organization?.id:X.req.param("orgId");if(!Y)return X.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${X.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${Y}/`,G=X.req.path.replace(J,"");if(!G)return X.json({error:"Missing key"},400);let K=X.req.query("expires"),W=X.req.query("signature"),H=X.req.query("method");if(!K||!W||H!=="GET")return X.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(K,10);if(!Number.isFinite(F))return X.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return X.json({error:"URL has expired"},403);if(!DK8(Y,G,F,"GET",W))return X.json({error:"Invalid signature"},403);let N=OK8(Y,G);try{let B=Bun.file(N);if(!await B.exists())return X.json({error:"File not found"},404);let L=_w1(G);return new Response(B.stream(),{headers:{"Content-Type":L,"Content-Length":B.size.toString(),"Cache-Control":"private, max-age=3600"}})}catch(B){return console.error("Error serving file:",B),X.json({error:"Failed to read file"},500)}}),Z.put(Q,async(X)=>{let Y=$.orgFromPath?X.get("studioContext")?.organization?.id:X.req.param("orgId");if(!Y)return X.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${X.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${Y}/`,G=X.req.path.replace(J,"");if(!G)return X.json({error:"Missing key"},400);let K=X.req.query("expires"),W=X.req.query("signature"),H=X.req.query("method");if(!K||!W||H!=="PUT")return X.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(K,10);if(!Number.isFinite(F))return X.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return X.json({error:"URL has expired"},403);if(!DK8(Y,G,F,"PUT",W))return X.json({error:"Invalid signature"},403);let N=OK8(Y,G),B=Fp6(N);try{await Wp6(B,{recursive:!0});let O=await X.req.arrayBuffer();return await Hp6(N,Buffer.from(O)),X.json({success:!0,key:G})}catch(O){return console.error("Error saving file:",O),X.json({error:"Failed to save file"},500)}}),Z};var gC0=D(()=>{d$();A$();IK();Z40()});function vw1($){let Z=new URL(Bp6);if(Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("state",$.state),$.selectAccount)Z.searchParams.set("prompt","select_account");return Z.toString()}function Op6($,Z=200){let Q=$!==null&&typeof $==="object"?$:{};if(typeof Q.error==="string"){let X=typeof Q.error_description==="string"?` (${Q.error_description})`:"";throw new t0({provider:"github",status:400,message:`GitHub OAuth code exchange failed: ${Q.error}${X}`})}if(typeof Q.access_token!=="string"||Q.access_token.length===0)throw new t0({provider:"github",status:Z,message:"GitHub OAuth code exchange returned no access token"});return{accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token.length>0?Q.refresh_token:null,expiresIn:typeof Q.expires_in==="number"&&Number.isFinite(Q.expires_in)?Q.expires_in:null,scope:typeof Q.scope==="string"&&Q.scope.length>0?Q.scope:null,tokenEndpoint:wK8}}async function jK8($){let Z;try{let Y=process.env.GITHUB_OAUTH_TOKEN_URL??wK8;Z=await fetch(Y,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),signal:AbortSignal.timeout(YZ1)})}catch(Y){throw new t0({provider:"github",status:0,message:`GitHub OAuth code exchange failed: ${Y instanceof Error?Y.message:String(Y)}`,cause:Y})}let Q=await Z.text();if(!Z.ok)throw new t0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange failed: ${Z.status} ${Q.slice(0,300)}`});let X;try{X=JSON.parse(Q)}catch(Y){throw new t0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}return Op6(X,Z.status)}var Bp6="https://github.com/login/oauth/authorize",wK8="https://github.com/login/oauth/access_token";var EK8=D(()=>{Y9();sl()});function zK8($){let Z=new URL(`https://${tN}/site/oauth2/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.toString()}function Dp6(){return`https://${tN}/site/oauth2/access_token`}async function PK8($){let Z=Dp6(),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),X;try{X=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(Lp6)})}catch(J){throw new t0({provider:"bitbucket",status:0,message:`Bitbucket token exchange failed: ${wp6(J)}`,cause:J})}let Y=await X.json().catch(()=>null);if(!X.ok||!Y||typeof Y.error==="string"){let J=Y&&typeof Y.error_description==="string"?Y.error_description:Y&&typeof Y.error==="string"?Y.error:X.statusText;throw new t0({provider:"bitbucket",status:X.status,message:`Bitbucket token exchange failed (${X.status}): ${J}`})}if(typeof Y.access_token!=="string"||!Y.access_token)throw new t0({provider:"bitbucket",status:X.status,message:"Bitbucket token exchange returned no access_token"});return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token?Y.refresh_token:null,expiresIn:typeof Y.expires_in==="number"&&Number.isFinite(Y.expires_in)?Y.expires_in:null,scope:typeof Y.scopes==="string"?Y.scopes:null,tokenEndpoint:Z}}function wp6($){return $ instanceof Error?$.message:String($)}var Lp6=15000;var AK8=D(()=>{Y9();$c()});function TK8($){let Z=new URL(`https://${$.host}/oauth/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.searchParams.set("scope",($.scopes??jp6).join(" ")),Z.toString()}function Ep6($){return`https://${$}/oauth/token`}async function RK8($){let Z=Ep6($.host),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),X;try{X=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(zp6)})}catch(J){throw new t0({provider:"gitlab",status:0,message:`GitLab token exchange failed: ${Pp6(J)}`,cause:J})}let Y=await X.json().catch(()=>null);if(!X.ok||!Y||typeof Y.error==="string"){let J=Y&&typeof Y.error_description==="string"?Y.error_description:Y&&typeof Y.error==="string"?Y.error:X.statusText;throw new t0({provider:"gitlab",status:X.status,message:`GitLab token exchange failed (${X.status}): ${J}`})}if(typeof Y.access_token!=="string"||!Y.access_token)throw new t0({provider:"gitlab",status:X.status,message:"GitLab token exchange returned no access_token"});return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token?Y.refresh_token:null,expiresIn:typeof Y.expires_in==="number"&&Number.isFinite(Y.expires_in)?Y.expires_in:null,scope:typeof Y.scope==="string"?Y.scope:null,tokenEndpoint:Z}}function Pp6($){return $ instanceof Error?$.message:String($)}var jp6,zp6=15000;var qK8=D(()=>{Y9();jp6=["api","read_user"]});import{z as rB}from"zod";function Q40($){if(!$)return"/";if(!$.startsWith("/")||$.startsWith("//")||$.includes("\\")||/[\r\n\t]/.test($))return"/";return $}function rb($){return`${j5()}/api/_git/${$}/callback`}function WX($,Z){let Q=new URL($,j5());if(Q.searchParams.delete("git_error"),Z)Q.searchParams.set("git_error",Z);return Q.toString()}async function hC0($,Z){let Q=$.organization?.id,X=$.auth.user?.id;if(!Q||!X)throw Error("Session with an organization is required");return $.storage.gitProviderOAuthStates.create({organizationId:Q,userId:X,...Z})}async function uC0($,Z,Q){if(!Q)return{ok:!1,error:"missing_state",returnTo:"/"};let X=await $.storage.gitProviderOAuthStates.consume(Q);if(!X||X.provider!==Z)return{ok:!1,error:"invalid_state",returnTo:"/"};let Y=Q40(X.returnTo);if($.auth.user?.id!==X.userId)return{ok:!1,error:"session_mismatch",returnTo:Y};return{ok:!0,state:X,returnTo:Y}}var IK8=()=>{let $=new X1;return $.get("/git-providers/github/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=Qw();if(!X)return Z.json({error:"GitHub App is not configured"},503);let Y=await hC0(Q,{provider:"github",host:"github.com",returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(vw1({clientId:X.clientId,redirectUri:rb("github"),state:Y,selectAccount:!0}))}),$.get("/git-providers/github/install",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=Qw();if(!X)return Z.json({error:"GitHub App is not configured"},503);let Y=await hC0(Q,{provider:"github",host:"github.com",returnTo:Q40(Z.req.query("returnTo"))}),J=new URL(`https://github.com/apps/${encodeURIComponent(X.slug)}/installations/new`);return J.searchParams.set("state",Y),Z.redirect(J.toString())}),$.get("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let X={organizationId:Q.organization.id,userId:Q.auth.user.id},Y=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!Y)return Z.json({error:"flow_expired"},410);let J=BF();if(!J)return Z.json({error:"not_configured"},503);try{let{installations:G}=await J.listAuthorizedInstallations(await Q.vault.decrypt(Y.encrypted_access_token));return Z.json({installations:G.map(({repositoryIds:K,...W})=>({...W,repositoryCount:K?.length??null})),expiresAt:Y.expires_at})}catch{return Z.json({error:"github_unavailable"},502)}}),$.get("/git-providers/github/flows/:id/repositories",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let X=rB.object({installationId:rB.coerce.number().int().positive().safe(),page:rB.coerce.number().int().positive().safe().default(1),query:rB.string().trim().max(256).optional()}).safeParse(Z.req.query());if(!X.success)return Z.json({error:"Invalid installation"},400);let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!J)return Z.json({error:"flow_expired"},410);let G=BF();if(!G)return Z.json({error:"not_configured"},503);try{let K=await Q.vault.decrypt(J.encrypted_access_token),H=(await G.listAuthorizedInstallations(K,X.data.installationId)).installations.find((N)=>N.installationId===X.data.installationId);if(!H)return Z.json({error:"installation_forbidden"},403);let F=await G.listRepositoryChoices(K,H,X.data.page,X.data.query),U=await Q.storage.gitProviderAccounts.findByExternalId({organizationId:Y.organizationId,host:"github.com",externalAccountId:String(H.installationId)});return Z.json({...F,accountVersion:ML1(U)})}catch{return Z.json({error:"github_unavailable"},502)}}),$.post("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);if(await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let X=rB.object({installationId:rB.number().int().positive().safe(),repositoryIds:rB.array(rB.number().int().positive().safe()).min(1).max(ys).refine((H)=>new Set(H).size===H.length),accountVersion:rB.string().max(200).nullable()}).safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid installation"},400);let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!J)return Z.json({error:"flow_expired"},410);let G=BF();if(!G)return Z.json({error:"not_configured"},503);let K;try{K=await G.listAuthorizedInstallations(await Q.vault.decrypt(J.encrypted_access_token),X.data.installationId)}catch{return Z.json({error:"github_unavailable"},502)}let W=K.installations.find((H)=>H.installationId===X.data.installationId);if(!W)return Z.json({error:"installation_forbidden"},403);try{if(!await G.canAuthorizeRepositories(await Q.vault.decrypt(J.encrypted_access_token),W,X.data.repositoryIds))return Z.json({error:"repositories_forbidden"},403)}catch{return Z.json({error:"github_unavailable"},502)}try{let H=await Q.storage.githubConnectFlows.connect(Z.req.param("id"),Y,{organizationId:Y.organizationId,type:"github",host:"github.com",authKind:"github_app",externalAccountId:String(W.installationId),login:W.login,avatarUrl:W.avatarUrl,installationId:W.installationId,installationAuthorizedBy:K.userId,installationRepositoryIds:X.data.repositoryIds},X.data.accountVersion);if(!H)return Z.json({error:"flow_expired"},410);return Z.json({account:{id:H.id,login:H.login}})}catch(H){if(H instanceof WC0)return Z.json({error:"account_changed"},409);throw H}}),$.delete("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);return await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),await Q.storage.githubConnectFlows.cancel(Z.req.param("id"),{organizationId:Q.organization.id,userId:Q.auth.user.id}),Z.body(null,204)}),$.get("/git-providers/github/accounts/:id/manage",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=await Q.storage.gitProviderAccounts.get(Z.req.param("id"),Q.organization.id);if(!X||X.type!=="github"||!X.installationId)return Z.json({error:"Account not found"},404);let Y=BF();if(!Y)return Z.json({error:"not_configured"},503);let J=await Y.getInstallation(X.installationId);if(!J)return Z.json({error:"Installation not found"},404);let G=J.accountType==="Organization"?`/organizations/${encodeURIComponent(J.login)}/settings/installations/${J.installationId}`:`/settings/installations/${J.installationId}`;return Z.redirect(`https://github.com${G}`)}),$.get("/git-providers/gitlab/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);let X=yH0(),Y=(Z.req.query("host")??X?.host??"gitlab.com").trim().toLowerCase();if(!X||X.host!==Y)return Z.json({error:`No GitLab OAuth application is configured for ${Y}. Connect with an access token instead.`},503);let J=await hC0(Q,{provider:"gitlab",host:Y,returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(TK8({host:Y,clientId:X.clientId,redirectUri:rb("gitlab"),state:J}))}),$.get("/git-providers/bitbucket/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);let X=TH0();if(!X)return Z.json({error:"No Bitbucket OAuth consumer is configured. Connect with an access token instead."},503);let Y=await hC0(Q,{provider:"bitbucket",host:X.host,returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(zK8({clientId:X.clientId,redirectUri:rb("bitbucket"),state:Y}))}),$},Ni;var xw1=D(()=>{d$();KF();E5();EH0();kL1();EK8();ZA();$c();Xc();AK8();qK8();Ni=new X1;Ni.get("/github/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,J=Qw(),G=BF(),K=$.req.query("code");if(!J||!G)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await jK8({clientId:J.clientId,clientSecret:J.clientSecret,code:K,redirectUri:rb("github")}),H={organizationId:Y.organizationId,userId:Y.userId},F=new URL(X,j5()),U=F.searchParams.get("git_flow"),N=await Z.vault.encrypt(W.accessToken),B=U&&await Z.storage.githubConnectFlows.refresh(U,H,N)?U:await Z.storage.githubConnectFlows.create(H,N);return F.searchParams.delete("git_error"),F.searchParams.set("git_flow",B),$.redirect(F.toString())}catch(W){return console.error("[git-providers] github callback failed",{message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}});Ni.get("/github/setup",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,J=Qw();if(!J)return $.redirect(WX(X,"not_configured"));let G=await Z.storage.gitProviderOAuthStates.create(Y);return $.redirect(vw1({clientId:J.clientId,redirectUri:rb("github"),state:G}))});Ni.get("/gitlab/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"gitlab",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,{host:J}=Y,G=yH0(),K=$.req.query("code");if(!G||G.host!==J)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await RK8({host:J,clientId:G.clientId,clientSecret:G.clientSecret,code:K,redirectUri:rb("gitlab")}),H=await AH0(J,W.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:Y.organizationId,type:"gitlab",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:Y.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:W.accessToken,refreshToken:W.refreshToken,scope:W.scope,expiresAt:W.expiresIn!==null?new Date(Date.now()+W.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:W.tokenEndpoint}),$.redirect(WX(X))}catch(W){return console.error("[git-providers] gitlab callback failed",{host:J,message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}});Ni.get("/bitbucket/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"bitbucket",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,{host:J}=Y,G=TH0(),K=$.req.query("code");if(!G||G.host!==J)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await PK8({clientId:G.clientId,clientSecret:G.clientSecret,code:K,redirectUri:rb("bitbucket")}),H=await qH0(J,W.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:Y.organizationId,type:"bitbucket",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:Y.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:W.accessToken,refreshToken:W.refreshToken,scope:W.scope,expiresAt:W.expiresIn!==null?new Date(Date.now()+W.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:W.tokenEndpoint}),$.redirect(WX(X))}catch(W){return console.error("[git-providers] bitbucket callback failed",{host:J,message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}})});var Y40=v((Mp6)=>{Mp6.HttpAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(Mp6.HttpAuthLocation||(Mp6.HttpAuthLocation={}));Mp6.HttpApiKeyAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(Mp6.HttpApiKeyAuthLocation||(Mp6.HttpApiKeyAuthLocation={}));Mp6.EndpointURLScheme=void 0;(function($){$.HTTP="http",$.HTTPS="https"})(Mp6.EndpointURLScheme||(Mp6.EndpointURLScheme={}));Mp6.AlgorithmId=void 0;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(Mp6.AlgorithmId||(Mp6.AlgorithmId={}));var Ap6=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>Mp6.AlgorithmId.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>Mp6.AlgorithmId.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},Tp6=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},Rp6=($)=>{return Ap6($)},qp6=($)=>{return Tp6($)};Mp6.FieldPosition=void 0;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(Mp6.FieldPosition||(Mp6.FieldPosition={}));var Ip6="__smithy_context";Mp6.IniSectionType=void 0;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(Mp6.IniSectionType||(Mp6.IniSectionType={}));Mp6.RequestHandlerProtocol=void 0;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(Mp6.RequestHandlerProtocol||(Mp6.RequestHandlerProtocol={}));Mp6.SMITHY_CONTEXT_KEY=Ip6;Mp6.getDefaultClientConfiguration=Rp6;Mp6.resolveDefaultRuntimeConfig=qp6});var Xj1=v((Gt6)=>{var dw1=K0("crypto"),lw1=K0("fs"),Cp6=F40(),_p6=U40(),wU=K0("stream"),vK8=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",Di=($,Z=0,Q=$.byteLength-Z)=>{if(!vK8($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},dC0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},vp6=/^[A-Za-z0-9+/]*={0,2}$/,xK8=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!vp6.exec($))throw TypeError("Invalid base64 string.");let Z=dC0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},iC0=($)=>{let Z=dC0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},ow1=($)=>{let Z;if(typeof $==="string")Z=iC0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return Di(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function xp6($,Z,Q,X){return class Y extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return Y.mutate(X(J));return Y.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,Y.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var fK8=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return Di($.buffer,$.byteOffset,$.byteLength).toString("utf8")},HX=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function fp6($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,HX[Z[0]]+HX[Z[1]]+HX[Z[2]]+HX[Z[3]]+"-"+HX[Z[4]]+HX[Z[5]]+"-"+HX[Z[6]]+HX[Z[7]]+"-"+HX[Z[8]]+HX[Z[9]]+"-"+HX[Z[10]]+HX[Z[11]]+HX[Z[12]]+HX[Z[13]]+HX[Z[14]]+HX[Z[15]]}}var bp6=($,Z,Q=(X)=>X)=>$,yp6=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},gp6=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)H40.warn(cC0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")H40.warn(cC0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},K40=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))H40.warn(cC0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},hp6=Math.ceil(340282346638528860000000000000000000000),lC0=($)=>{let Z=K40($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>hp6)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},W40=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},up6=W40,iw1=($)=>rw1($,32),pw1=($)=>rw1($,16),nw1=($)=>rw1($,8),rw1=($,Z)=>{let Q=W40($);if(Q!==void 0&&lp6(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},lp6=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},cp6=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},bK8=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},mp6=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return H40.warn(cC0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},dp6=($)=>{if($===null||$===void 0)return;let Z=bK8($),Q=[];for(let X in Z)if(Z[X]!=null)Q.push(X);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},aw1=($)=>{if(typeof $=="string")return K40(ji($));return K40($)},ip6=aw1,yK8=($)=>{if(typeof $=="string")return lC0(ji($));return lC0($)},pp6=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,ji=($)=>{let Z=$.match(pp6);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},sw1=($)=>{if(typeof $=="string")return gK8($);return K40($)},np6=sw1,tp6=sw1,op6=($)=>{if(typeof $=="string")return gK8($);return lC0($)},gK8=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},hK8=($)=>{if(typeof $==="string")return W40(ji($));return W40($)},rp6=hK8,ap6=($)=>{if(typeof $==="string")return iw1(ji($));return iw1($)},Li=($)=>{if(typeof $==="string")return pw1(ji($));return pw1($)},uK8=($)=>{if(typeof $==="string")return nw1(ji($));return nw1($)},cC0=($)=>{return String(TypeError($).stack||$).split(`
|
|
4749
|
+
LIMIT 50`,{slug:$,since:Z,until:Q})).map((J)=>({key:J.key,pageviews:Number(J.pageviews),visitors:Number(J.visitors)}))}async function GK8($){let{since:Z,until:Q}=KK8(90),X=await WK8($,Z,Q);return[...new Set(X.map(TS0))]}async function fC0($){let Z=$.get("studioContext");if(!Tz(Z))return $.json({error:"Unauthorized"},401);let Q=t(Z),X=$.req.param("site");if(!X)return $.json({error:"site is required"},400);let Y=X.toLowerCase();if(!await Z.storage.orgSites.isOwnedBy(Y,Q.id))return $.json({error:"Site not found in organization"},404);return{slug:Y}}var di6,ii6,YK8,HK="site_id IN (SELECT id FROM default.dim_sites WHERE name = {slug:String})",ei6,Qp6="https://deco.lilstts.com/plausible",Xp6=12000,Yp6,HK8=()=>{let $=new X1;return $.get("/:site/cdn/data",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;if(!hb())return Z.json({available:!1,error:"Monitor is not configured"});let X=Z.req.query("view")??"summary";if(!di6.has(X))return Z.json({error:`unknown or unavailable view: ${X}`},400);let Y=Z.req.query("range")??"7d",J=kw1(Y,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${Y}`},400);let{slug:G}=Q,{since:K,until:W}=J,H=JK8(Z.req.query("filters"));try{let F;switch(X){case"summary":F=await ni6(G,K,W,H);break;case"timeline":F=await ti6(G,K,W,J.granularity,H);break;case"cache-status":F=await oi6(G,K,W,H);break;case"status-codes":F=await ri6(G,K,W,H);break;case"top-paths":F=await ai6(G,K,W,Z.req.query("groupByPath")==="1",H);break;case"top-countries":F=await si6(G,K,W,H);break}return Z.json({available:!0,view:X,range:Y,data:F})}catch(F){return console.error(`[monitor] cdn ${X} query failed for site="${G}":`,F),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/audience/data",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;if(!hb())return Z.json({available:!1,error:"Monitor is not configured"});let X=Z.req.query("view")??"summary";if(!ei6.has(X))return Z.json({error:`unknown or unavailable view: ${X}`},400);let Y=Z.req.query("range")??"7d",J=kw1(Y,Z.req.query("since"),Z.req.query("until"));if(!J)return Z.json({error:`unknown range: ${Y}`},400);let{slug:G}=Q,{since:K,until:W}=J;try{let H;switch(X){case"summary":H=await $p6(G,K,W);break;case"timeline":H=await Zp6(G,K,W);break;case"top-sources":H=await Sw1(G,K,W,"utm_source");break;case"top-countries":H=await Sw1(G,K,W,"country");break;case"devices":H=await Sw1(G,K,W,"device_type");break}return Z.json({available:!0,view:X,range:Y,data:H})}catch(H){return console.error(`[monitor] audience ${X} query failed for site="${G}":`,H),Z.json({error:"Failed to query monitor warehouse"},502)}}),$.get("/:site/hosts",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;let{slug:X}=Q;if(!hb())return Z.json({available:!1,hosts:[]});try{let Y=await GK8(X);return Z.json({available:!0,hosts:Y})}catch(Y){return console.error(`[monitor] hosts failed for site="${X}":`,Y),Z.json({available:!0,hosts:[]})}}),$.get("/:site/onedollar",async(Z)=>{let Q=await fC0(Z);if(Q instanceof Response)return Q;let{slug:X}=Q,Y=k0().oneDollarStatsApiKey;if(!Y)return Z.json({available:!1,error:"OneDollarStats not configured"});let J=Z.req.query("report")??"kpis",G=Yp6[J];if(!G)return Z.json({error:`unknown report: ${J}`},400);let K=Z.req.query("range")??"7d",W=kw1(K,Z.req.query("since"),Z.req.query("until"));if(!W)return Z.json({error:`unknown range: ${K}`},400);let H=await GK8(X),F=Z.req.query("host"),U=F&&H.includes(F)?F:H[0];if(!U)return Z.json({available:!0,report:J,range:K,results:[]});let{since:N,until:B}=W,O=J==="timeseries"?W.granularity==="hourly"?"time:hour":"time:day":G.dimension,L={page:"event:page",source:"visit:referrer",referrer:"visit:referrer",country:"visit:country",browser:"visit:browser",os:"visit:os",device:"visit:device",utm_campaign:"visit:utm_campaign",utm_source:"visit:utm_source",utm_medium:"visit:utm_medium",utm_content:"visit:utm_content",utm_term:"visit:utm_term"},w={equals:"is",not_equals:"is_not",contains:"contains",not_contains:"contains_not"},j=JK8(Z.req.query("filters")).map((z)=>{let P=L[z.field],A=w[z.op];return P&&A?[A,P,[z.value]]:null}).filter(Boolean),E=async(z)=>{let P=await fetch(Qp6,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":Y,Accept:"application/json"},body:JSON.stringify({site_id:U,metrics:G.metrics,date_range:z,...O?{dimensions:[O]}:{},...G.order?{order_by:[[G.order,"desc"]]}:{},...j.length?{filters:j}:{},pagination:{limit:100,offset:0}}),signal:AbortSignal.timeout(Xp6)});if(!P.ok)throw Error(`OneDollarStats ${P.status}`);return(await P.json().catch(()=>null))?.results??[]};try{let z=await E([N,B]),P;if(J==="kpis"||J==="timeseries"&&Z.req.query("compare")==="1"){let q=Date.parse(`${N}T00:00:00Z`),V=86400000,I=bC0(new Date(q-86400000)),C=bC0(new Date(q-W.days*86400000));P=await E([C,I]).catch(()=>{return})}return Z.json({available:!0,report:J,range:K,host:U,metrics:G.metrics,results:z,...P?{previous:P}:{}})}catch(z){return console.error(`[monitor] onedollar ${J} failed for host="${U}":`,z),Z.json({error:"Failed to reach OneDollarStats"},502)}}),$};var FK8=D(()=>{d$();A$();ZD1();QD1();di6=new Set(["summary","timeline","cache-status","status-codes","top-paths","top-countries"]),ii6={today:{days:1,granularity:"hourly"},yesterday:{days:1,granularity:"hourly",endOffsetDays:1},"7d":{days:7,granularity:"daily"},"14d":{days:14,granularity:"daily"},"30d":{days:30,granularity:"daily"},"90d":{days:90,granularity:"daily"},"180d":{days:180,granularity:"daily"},"1y":{days:365,granularity:"daily"}};YK8=/^\d{4}-\d{2}-\d{2}$/;ei6=new Set(["summary","timeline","top-sources","top-countries","devices"]);Yp6={kpis:{metrics:["visitors","visits","pageviews","bounce_rate","visit_duration"]},timeseries:{metrics:["pageviews","visits","visitors","bounce_rate","visit_duration"]},pages:{metrics:["pageviews","visitors"],dimension:"event:page",order:"pageviews"},sources:{metrics:["visitors"],dimension:"visit:referrer",order:"visitors"},countries:{metrics:["visitors"],dimension:"visit:country",order:"visitors"},browsers:{metrics:["visitors"],dimension:"visit:browser",order:"visitors"},os:{metrics:["visitors"],dimension:"visit:os",order:"visitors"},devices:{metrics:["visitors"],dimension:"visit:device",order:"visitors"},events:{metrics:["visitors","events"],dimension:"event:name",order:"events"},utm_campaign:{metrics:["visitors","events"],dimension:"visit:utm_campaign",order:"events"},utm_source:{metrics:["visitors","events"],dimension:"visit:utm_source",order:"events"},utm_medium:{metrics:["visitors","events"],dimension:"visit:utm_medium",order:"events"},utm_content:{metrics:["visitors","events"],dimension:"visit:utm_content",order:"events"},utm_term:{metrics:["visitors","events"],dimension:"visit:utm_term",order:"events"}}});import{timingSafeEqual as Jp6}from"crypto";function Fi($){let Q=$?.match(/^Bearer\s+(.+)$/i)?.[1]?.trim();return Q?Q:null}function Cw1($,Z){let Q=Buffer.from($),X=Buffer.from(Z);return Q.length===X.length&&Jp6(Q,X)}function Ui($){let Z=process.env.VAULT_SERVICE_TOKEN;return!!Z&&Cw1($,Z)}function UK8($){if(!$)return null;return $ instanceof Date?$.toISOString():$}function Gp6($){if(!$)return[];if(Array.isArray($))return $.filter((Z)=>typeof Z==="string");if(typeof $!=="string")return[];try{let Z=JSON.parse($);return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}catch{return[]}}async function NK8($,Z,Q){let X=Fi($.req.header("authorization"));if(!X)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let Y=$.get("studioContext"),J=Y.organization?.id;if(!J)return{ok:!1,response:$.json({error:"Organization context required"},403)};if(Ui(X))return{ok:!0,ctx:Y,organizationId:J};let G=await Y.storage.connectionCredentialVault.authenticateWorkloadToken(X);if(!G||G.organizationId!==J)return{ok:!1,response:$.json({error:"Unauthorized"},401)};let K=await Y.storage.connections.findById(G.subjectConnectionId,J);if(!K||K.status!=="active")return{ok:!1,response:$.json({error:"Unauthorized"},401)};if(!await Y.storage.connectionCredentialVault.hasGrant({organizationId:J,subjectConnectionId:G.subjectConnectionId,targetConnectionId:Z,scope:Q}))return{ok:!1,response:$.json({error:"Forbidden"},403)};return{ok:!0,ctx:Y,organizationId:J}}var BK8=()=>{let $=new X1;return $.post("/vault/connections/batch",async(Z)=>{let Q=Fi(Z.req.header("authorization"));if(!Q||!Ui(Q))return Z.json({error:"Unauthorized"},401);let X=Z.get("studioContext"),Y=X.organization?.id;if(!Y)return Z.json({error:"Organization context required"},403);let J=await Z.req.json().catch(()=>null),G=Array.isArray(J?.connectionIds)?[...new Set(J.connectionIds)].filter((B)=>typeof B==="string"&&B.length>0):[];if(G.length===0||G.length>20)return Z.json({error:"connectionIds must be a non-empty string array (max 20)"},400);let{items:K}=await X.storage.connections.list(Y,{includeVirtual:!0,where:{field:["id"],operator:"in",value:G},limit:G.length}),W=new Map(K.map((B)=>[B.id,B])),H=new Set((await X.db.selectFrom("downstream_tokens").select("connectionId").where("connectionId","in",G).execute()).map((B)=>B.connectionId)),F=new Map((await X.db.selectFrom("connections").select(["id","configuration_state","connection_token"]).where("id","in",G).where("organization_id","=",Y).execute()).map((B)=>[B.id,B])),U=new f5(X.db,X.vault),N={};return await Promise.all(G.map(async(B)=>{try{let O=W.get(B);if(!O||O.status!=="active"){N[B]={error:"Connection not found"};return}if(F.get(B)?.configuration_state&&!O.configuration_state){N[B]={error:"MCP configuration could not be decrypted"};return}let L={type:"mcp_configuration",state:O.configuration_state??{},scopes:O.configuration_scopes??[]},w=null;if(H.has(B)){let j=await X3({connectionId:B,connectionUrl:O.connection_url,tokenStorage:U});if(j.state==="valid"||j.state==="refreshed"){let E=await U.get(B);w={type:"oauth_access_token",tokenType:"Bearer",accessToken:j.accessToken,expiresAt:UK8(E?.expiresAt??null),scope:E?.scope??null}}}else if(O.connection_token)w={type:"static_token",tokenType:"Bearer",accessToken:O.connection_token,expiresAt:null,scope:null};else if(F.get(B)?.connection_token){N[B]={error:"Connection token could not be decrypted"};return}N[B]={configuration:L,accessToken:w}}catch(O){N[B]={error:O instanceof Error?O.message:String(O)}}})),Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json(N)}),$.post("/vault/connections/:connectionId/access-token",async(Z)=>{let Q=Z.req.param("connectionId"),X=await NK8(Z,Q,ZG0);if(!X.ok)return X.response;let{ctx:Y,organizationId:J}=X,G=await Y.storage.connections.findById(Q,J);if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let K=new f5(Y.db,Y.vault),W=await X3({connectionId:Q,connectionUrl:G.connection_url,tokenStorage:K});if(W.state==="missing"){if(G.connection_token)return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"static_token",tokenType:"Bearer",accessToken:G.connection_token,expiresAt:null,scope:null});if((await Y.db.selectFrom("connections").select("connection_token").where("id","=",Q).where("organization_id","=",J).executeTakeFirst())?.connection_token)return Z.json({error:"Connection token could not be decrypted"},424);return Z.json({error:"Downstream token not found"},409)}if(W.state==="expired_without_refresh"||W.state==="refresh_failed")return Z.json({error:"Downstream token refresh failed"},424);let H=await K.get(Q);return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"oauth_access_token",tokenType:"Bearer",accessToken:W.accessToken,expiresAt:UK8(H?.expiresAt??null),scope:H?.scope??null})}),$.post("/vault/connections/:connectionId/configuration",async(Z)=>{let Q=Z.req.param("connectionId"),X=await NK8(Z,Q,QG0);if(!X.ok)return X.response;let{ctx:Y,organizationId:J}=X,G=await Y.db.selectFrom("connections").select(["status","configuration_state","configuration_scopes"]).where("id","=",Q).where("organization_id","=",J).executeTakeFirst();if(!G||G.status!=="active")return Z.json({error:"Connection not found"},404);let K={};if(G.configuration_state)try{let W=await Y.vault.decrypt(G.configuration_state),H=JSON.parse(W);if(typeof H!=="object"||H===null||Array.isArray(H))throw Error("MCP configuration state is not an object");K=H}catch{return Z.json({error:"MCP configuration could not be decrypted"},424)}return Z.header("Cache-Control","no-store"),Z.header("Pragma","no-cache"),Z.json({type:"mcp_configuration",state:K,scopes:Gp6(G.configuration_scopes)})}),$};var Z40=D(()=>{d$();VG();XG0();KW()});import{createHmac as Kp6}from"crypto";import{mkdir as Wp6,writeFile as Hp6}from"fs/promises";import{dirname as Fp6,join as LK8}from"path";function Np6($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return LK8(Up6,Z)}function OK8($,Z){let Q=Np6($),X=$G(Z);return LK8(Q,X)}function DK8($,Z,Q,X,Y){let J=k0().encryptionKey||"dev-secret",G=`${$}:${Z}:${Q}:${X}`,K=Kp6("sha256",J).update(G).digest("hex");return Cw1(Y,K)}function _w1($){let Z=$.split(".").pop()?.toLowerCase()||"";return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",json:"application/json",xml:"application/xml",txt:"text/plain",html:"text/html",htm:"text/html",css:"text/css",csv:"text/csv",md:"text/markdown",js:"application/javascript",mjs:"application/javascript",ts:"application/typescript",mp4:"video/mp4",webm:"video/webm",avi:"video/x-msvideo",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",zip:"application/zip",gz:"application/gzip",tar:"application/x-tar",woff:"font/woff",woff2:"font/woff2",ttf:"font/ttf",otf:"font/otf"}[Z]||"application/octet-stream"}var Up6="./data/assets",yC0=($)=>{let Z=new X1,Q=$.orgFromPath?"/*":"/:orgId/*";return Z.get(Q,async(X)=>{let Y=$.orgFromPath?X.get("studioContext")?.organization?.id:X.req.param("orgId");if(!Y)return X.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${X.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${Y}/`,G=X.req.path.replace(J,"");if(!G)return X.json({error:"Missing key"},400);let K=X.req.query("expires"),W=X.req.query("signature"),H=X.req.query("method");if(!K||!W||H!=="GET")return X.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(K,10);if(!Number.isFinite(F))return X.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return X.json({error:"URL has expired"},403);if(!DK8(Y,G,F,"GET",W))return X.json({error:"Invalid signature"},403);let N=OK8(Y,G);try{let B=Bun.file(N);if(!await B.exists())return X.json({error:"File not found"},404);let L=_w1(G);return new Response(B.stream(),{headers:{"Content-Type":L,"Content-Length":B.size.toString(),"Cache-Control":"private, max-age=3600"}})}catch(B){return console.error("Error serving file:",B),X.json({error:"Failed to read file"},500)}}),Z.put(Q,async(X)=>{let Y=$.orgFromPath?X.get("studioContext")?.organization?.id:X.req.param("orgId");if(!Y)return X.json({error:"Missing organization context"},500);let J=$.orgFromPath?`/api/${X.req.param("org")??""}/dev-assets/`:`/api/dev-assets/${Y}/`,G=X.req.path.replace(J,"");if(!G)return X.json({error:"Missing key"},400);let K=X.req.query("expires"),W=X.req.query("signature"),H=X.req.query("method");if(!K||!W||H!=="PUT")return X.json({error:"Invalid or missing signature parameters"},400);let F=parseInt(K,10);if(!Number.isFinite(F))return X.json({error:"Invalid expires parameter"},400);let U=Math.floor(Date.now()/1000);if(F<U)return X.json({error:"URL has expired"},403);if(!DK8(Y,G,F,"PUT",W))return X.json({error:"Invalid signature"},403);let N=OK8(Y,G),B=Fp6(N);try{await Wp6(B,{recursive:!0});let O=await X.req.arrayBuffer();return await Hp6(N,Buffer.from(O)),X.json({success:!0,key:G})}catch(O){return console.error("Error saving file:",O),X.json({error:"Failed to save file"},500)}}),Z};var gC0=D(()=>{d$();A$();IK();Z40()});function vw1($){let Z=new URL(Bp6);if(Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("state",$.state),$.selectAccount)Z.searchParams.set("prompt","select_account");return Z.toString()}function Op6($,Z=200){let Q=$!==null&&typeof $==="object"?$:{};if(typeof Q.error==="string"){let X=typeof Q.error_description==="string"?` (${Q.error_description})`:"";throw new t0({provider:"github",status:400,message:`GitHub OAuth code exchange failed: ${Q.error}${X}`})}if(typeof Q.access_token!=="string"||Q.access_token.length===0)throw new t0({provider:"github",status:Z,message:"GitHub OAuth code exchange returned no access token"});return{accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token.length>0?Q.refresh_token:null,expiresIn:typeof Q.expires_in==="number"&&Number.isFinite(Q.expires_in)?Q.expires_in:null,scope:typeof Q.scope==="string"&&Q.scope.length>0?Q.scope:null,tokenEndpoint:wK8}}async function jK8($){let Z;try{let Y=process.env.GITHUB_OAUTH_TOKEN_URL??wK8;Z=await fetch(Y,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),signal:AbortSignal.timeout(YZ1)})}catch(Y){throw new t0({provider:"github",status:0,message:`GitHub OAuth code exchange failed: ${Y instanceof Error?Y.message:String(Y)}`,cause:Y})}let Q=await Z.text();if(!Z.ok)throw new t0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange failed: ${Z.status} ${Q.slice(0,300)}`});let X;try{X=JSON.parse(Q)}catch(Y){throw new t0({provider:"github",status:Z.status,message:`GitHub OAuth code exchange returned invalid JSON: ${Q.slice(0,300)}`,cause:Y})}return Op6(X,Z.status)}var Bp6="https://github.com/login/oauth/authorize",wK8="https://github.com/login/oauth/access_token";var EK8=D(()=>{Y9();sl()});function zK8($){let Z=new URL(`https://${tN}/site/oauth2/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.toString()}function Dp6(){return`https://${tN}/site/oauth2/access_token`}async function PK8($){let Z=Dp6(),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),X;try{X=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(Lp6)})}catch(J){throw new t0({provider:"bitbucket",status:0,message:`Bitbucket token exchange failed: ${wp6(J)}`,cause:J})}let Y=await X.json().catch(()=>null);if(!X.ok||!Y||typeof Y.error==="string"){let J=Y&&typeof Y.error_description==="string"?Y.error_description:Y&&typeof Y.error==="string"?Y.error:X.statusText;throw new t0({provider:"bitbucket",status:X.status,message:`Bitbucket token exchange failed (${X.status}): ${J}`})}if(typeof Y.access_token!=="string"||!Y.access_token)throw new t0({provider:"bitbucket",status:X.status,message:"Bitbucket token exchange returned no access_token"});return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token?Y.refresh_token:null,expiresIn:typeof Y.expires_in==="number"&&Number.isFinite(Y.expires_in)?Y.expires_in:null,scope:typeof Y.scopes==="string"?Y.scopes:null,tokenEndpoint:Z}}function wp6($){return $ instanceof Error?$.message:String($)}var Lp6=15000;var AK8=D(()=>{Y9();$c()});function TK8($){let Z=new URL(`https://${$.host}/oauth/authorize`);return Z.searchParams.set("client_id",$.clientId),Z.searchParams.set("redirect_uri",$.redirectUri),Z.searchParams.set("response_type","code"),Z.searchParams.set("state",$.state),Z.searchParams.set("scope",($.scopes??jp6).join(" ")),Z.toString()}function Ep6($){return`https://${$}/oauth/token`}async function RK8($){let Z=Ep6($.host),Q=new URLSearchParams({grant_type:"authorization_code",client_id:$.clientId,client_secret:$.clientSecret,code:$.code,redirect_uri:$.redirectUri}),X;try{X=await fetch(Z,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:Q,signal:AbortSignal.timeout(zp6)})}catch(J){throw new t0({provider:"gitlab",status:0,message:`GitLab token exchange failed: ${Pp6(J)}`,cause:J})}let Y=await X.json().catch(()=>null);if(!X.ok||!Y||typeof Y.error==="string"){let J=Y&&typeof Y.error_description==="string"?Y.error_description:Y&&typeof Y.error==="string"?Y.error:X.statusText;throw new t0({provider:"gitlab",status:X.status,message:`GitLab token exchange failed (${X.status}): ${J}`})}if(typeof Y.access_token!=="string"||!Y.access_token)throw new t0({provider:"gitlab",status:X.status,message:"GitLab token exchange returned no access_token"});return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token?Y.refresh_token:null,expiresIn:typeof Y.expires_in==="number"&&Number.isFinite(Y.expires_in)?Y.expires_in:null,scope:typeof Y.scope==="string"?Y.scope:null,tokenEndpoint:Z}}function Pp6($){return $ instanceof Error?$.message:String($)}var jp6,zp6=15000;var qK8=D(()=>{Y9();jp6=["api","read_user"]});import{z as rB}from"zod";function Q40($){if(!$)return"/";if(!$.startsWith("/")||$.startsWith("//")||$.includes("\\")||/[\r\n\t]/.test($))return"/";return $}function rb($){return`${j5()}/api/_git/${$}/callback`}function WX($,Z){let Q=new URL($,j5());if(Q.searchParams.delete("git_error"),Z)Q.searchParams.set("git_error",Z);return Q.toString()}async function hC0($,Z){let Q=$.organization?.id,X=$.auth.user?.id;if(!Q||!X)throw Error("Session with an organization is required");return $.storage.gitProviderOAuthStates.create({organizationId:Q,userId:X,...Z})}async function uC0($,Z,Q){if(!Q)return{ok:!1,error:"missing_state",returnTo:"/"};let X=await $.storage.gitProviderOAuthStates.consume(Q);if(!X||X.provider!==Z)return{ok:!1,error:"invalid_state",returnTo:"/"};let Y=Q40(X.returnTo);if($.auth.user?.id!==X.userId)return{ok:!1,error:"session_mismatch",returnTo:Y};return{ok:!0,state:X,returnTo:Y}}var IK8=()=>{let $=new X1;return $.get("/git-providers/github/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=Qw();if(!X)return Z.json({error:"GitHub App is not configured"},503);let Y=await hC0(Q,{provider:"github",host:"github.com",returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(vw1({clientId:X.clientId,redirectUri:rb("github"),state:Y,selectAccount:!0}))}),$.get("/git-providers/github/install",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=Qw();if(!X)return Z.json({error:"GitHub App is not configured"},503);let Y=await hC0(Q,{provider:"github",host:"github.com",returnTo:Q40(Z.req.query("returnTo"))}),J=new URL(`https://github.com/apps/${encodeURIComponent(X.slug)}/installations/new`);return J.searchParams.set("state",Y),Z.redirect(J.toString())}),$.get("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let X={organizationId:Q.organization.id,userId:Q.auth.user.id},Y=await Q.storage.githubConnectFlows.get(Z.req.param("id"),X);if(!Y)return Z.json({error:"flow_expired"},410);let J=BF();if(!J)return Z.json({error:"not_configured"},503);try{let{installations:G}=await J.listAuthorizedInstallations(await Q.vault.decrypt(Y.encrypted_access_token));return Z.json({installations:G.map(({repositoryIds:K,...W})=>({...W,repositoryCount:K?.length??null})),expiresAt:Y.expires_at})}catch{return Z.json({error:"github_unavailable"},502)}}),$.get("/git-providers/github/flows/:id/repositories",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store");let X=rB.object({installationId:rB.coerce.number().int().positive().safe(),page:rB.coerce.number().int().positive().safe().default(1),query:rB.string().trim().max(256).optional()}).safeParse(Z.req.query());if(!X.success)return Z.json({error:"Invalid installation"},400);let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!J)return Z.json({error:"flow_expired"},410);let G=BF();if(!G)return Z.json({error:"not_configured"},503);try{let K=await Q.vault.decrypt(J.encrypted_access_token),H=(await G.listAuthorizedInstallations(K,X.data.installationId)).installations.find((N)=>N.installationId===X.data.installationId);if(!H)return Z.json({error:"installation_forbidden"},403);let F=await G.listRepositoryChoices(K,H,X.data.page,X.data.query),U=await Q.storage.gitProviderAccounts.findByExternalId({organizationId:Y.organizationId,host:"github.com",externalAccountId:String(H.installationId)});return Z.json({...F,accountVersion:ML1(U)})}catch{return Z.json({error:"github_unavailable"},502)}}),$.post("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);if(await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),Z.header("Cache-Control","no-store"),!Z.req.header("Content-Type")?.startsWith("application/json"))return Z.json({error:"Invalid content type"},415);let X=rB.object({installationId:rB.number().int().positive().safe(),repositoryIds:rB.array(rB.number().int().positive().safe()).min(1).max(ys).refine((H)=>new Set(H).size===H.length),accountVersion:rB.string().max(200).nullable()}).safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid installation"},400);let Y={organizationId:Q.organization.id,userId:Q.auth.user.id},J=await Q.storage.githubConnectFlows.get(Z.req.param("id"),Y);if(!J)return Z.json({error:"flow_expired"},410);let G=BF();if(!G)return Z.json({error:"not_configured"},503);let K;try{K=await G.listAuthorizedInstallations(await Q.vault.decrypt(J.encrypted_access_token),X.data.installationId)}catch{return Z.json({error:"github_unavailable"},502)}let W=K.installations.find((H)=>H.installationId===X.data.installationId);if(!W)return Z.json({error:"installation_forbidden"},403);try{if(!await G.canAuthorizeRepositories(await Q.vault.decrypt(J.encrypted_access_token),W,X.data.repositoryIds))return Z.json({error:"repositories_forbidden"},403)}catch{return Z.json({error:"github_unavailable"},502)}try{let H=await Q.storage.githubConnectFlows.connect(Z.req.param("id"),Y,{organizationId:Y.organizationId,type:"github",host:"github.com",authKind:"github_app",externalAccountId:String(W.installationId),login:W.login,avatarUrl:W.avatarUrl,installationId:W.installationId,installationAuthorizedBy:K.userId,installationRepositoryIds:X.data.repositoryIds},X.data.accountVersion);if(!H)return Z.json({error:"flow_expired"},410);return Z.json({account:{id:H.id,login:H.login}})}catch(H){if(H instanceof WC0)return Z.json({error:"account_changed"},409);throw H}}),$.delete("/git-providers/github/flows/:id",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);return await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN"),await Q.storage.githubConnectFlows.cancel(Z.req.param("id"),{organizationId:Q.organization.id,userId:Q.auth.user.id}),Z.body(null,204)}),$.get("/git-providers/github/accounts/:id/manage",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user||!Q.organization)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=await Q.storage.gitProviderAccounts.get(Z.req.param("id"),Q.organization.id);if(!X||X.type!=="github"||!X.installationId)return Z.json({error:"Account not found"},404);let Y=BF();if(!Y)return Z.json({error:"not_configured"},503);let J=await Y.getInstallation(X.installationId);if(!J)return Z.json({error:"Installation not found"},404);let G=J.accountType==="Organization"?`/organizations/${encodeURIComponent(J.login)}/settings/installations/${J.installationId}`:`/settings/installations/${J.installationId}`;return Z.redirect(`https://github.com${G}`)}),$.get("/git-providers/gitlab/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=yH0(),Y=(Z.req.query("host")??X?.host??"gitlab.com").trim().toLowerCase();if(!X||X.host!==Y)return Z.json({error:`No GitLab OAuth application is configured for ${Y}. Connect with an access token instead.`},503);let J=await hC0(Q,{provider:"gitlab",host:Y,returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(TK8({host:Y,clientId:X.clientId,redirectUri:rb("gitlab"),state:J}))}),$.get("/git-providers/bitbucket/connect",async(Z)=>{let Q=Z.get("studioContext");if(!Q.auth.user)return Z.json({error:"Unauthorized"},401);await Q.access.check("GIT_ACCOUNT_CONNECT_TOKEN");let X=TH0();if(!X)return Z.json({error:"No Bitbucket OAuth consumer is configured. Connect with an access token instead."},503);let Y=await hC0(Q,{provider:"bitbucket",host:X.host,returnTo:Q40(Z.req.query("returnTo"))});return Z.redirect(zK8({clientId:X.clientId,redirectUri:rb("bitbucket"),state:Y}))}),$},Ni;var xw1=D(()=>{d$();KF();E5();EH0();kL1();EK8();ZA();$c();Xc();AK8();qK8();Ni=new X1;Ni.get("/github/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,J=Qw(),G=BF(),K=$.req.query("code");if(!J||!G)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await jK8({clientId:J.clientId,clientSecret:J.clientSecret,code:K,redirectUri:rb("github")}),H={organizationId:Y.organizationId,userId:Y.userId},F=new URL(X,j5()),U=F.searchParams.get("git_flow"),N=await Z.vault.encrypt(W.accessToken),B=U&&await Z.storage.githubConnectFlows.refresh(U,H,N)?U:await Z.storage.githubConnectFlows.create(H,N);return F.searchParams.delete("git_error"),F.searchParams.set("git_flow",B),$.redirect(F.toString())}catch(W){return console.error("[git-providers] github callback failed",{message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}});Ni.get("/github/setup",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"github",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,J=Qw();if(!J)return $.redirect(WX(X,"not_configured"));let G=await Z.storage.gitProviderOAuthStates.create(Y);return $.redirect(vw1({clientId:J.clientId,redirectUri:rb("github"),state:G}))});Ni.get("/gitlab/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"gitlab",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,{host:J}=Y,G=yH0(),K=$.req.query("code");if(!G||G.host!==J)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await RK8({host:J,clientId:G.clientId,clientSecret:G.clientSecret,code:K,redirectUri:rb("gitlab")}),H=await AH0(J,W.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:Y.organizationId,type:"gitlab",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:Y.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:W.accessToken,refreshToken:W.refreshToken,scope:W.scope,expiresAt:W.expiresIn!==null?new Date(Date.now()+W.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:W.tokenEndpoint}),$.redirect(WX(X))}catch(W){return console.error("[git-providers] gitlab callback failed",{host:J,message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}});Ni.get("/bitbucket/callback",async($)=>{let Z=await o7.create($.req.raw),Q=await uC0(Z,"bitbucket",$.req.query("state"));if(!Q.ok)return $.redirect(WX(Q.returnTo,Q.error));let{returnTo:X,state:Y}=Q,{host:J}=Y,G=TH0(),K=$.req.query("code");if(!G||G.host!==J)return $.redirect(WX(X,"not_configured"));if(!K)return $.redirect(WX(X,$.req.query("error")??"denied"));try{let W=await PK8({clientId:G.clientId,clientSecret:G.clientSecret,code:K,redirectUri:rb("bitbucket")}),H=await qH0(J,W.accessToken),F=await Z.storage.gitProviderAccounts.upsert({organizationId:Y.organizationId,type:"bitbucket",host:J,authKind:"oauth",externalAccountId:H.externalAccountId,login:H.login,avatarUrl:H.avatarUrl,createdBy:Y.userId});return await Z.storage.gitProviderAccountCredentials.upsert({connectionId:F.id,accessToken:W.accessToken,refreshToken:W.refreshToken,scope:W.scope,expiresAt:W.expiresIn!==null?new Date(Date.now()+W.expiresIn*1000):null,clientId:G.clientId,clientSecret:G.clientSecret,tokenEndpoint:W.tokenEndpoint}),$.redirect(WX(X))}catch(W){return console.error("[git-providers] bitbucket callback failed",{host:J,message:W instanceof Error?W.message:String(W)}),$.redirect(WX(X,"exchange_failed"))}})});var Y40=v((Mp6)=>{Mp6.HttpAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(Mp6.HttpAuthLocation||(Mp6.HttpAuthLocation={}));Mp6.HttpApiKeyAuthLocation=void 0;(function($){$.HEADER="header",$.QUERY="query"})(Mp6.HttpApiKeyAuthLocation||(Mp6.HttpApiKeyAuthLocation={}));Mp6.EndpointURLScheme=void 0;(function($){$.HTTP="http",$.HTTPS="https"})(Mp6.EndpointURLScheme||(Mp6.EndpointURLScheme={}));Mp6.AlgorithmId=void 0;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(Mp6.AlgorithmId||(Mp6.AlgorithmId={}));var Ap6=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>Mp6.AlgorithmId.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>Mp6.AlgorithmId.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},Tp6=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},Rp6=($)=>{return Ap6($)},qp6=($)=>{return Tp6($)};Mp6.FieldPosition=void 0;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(Mp6.FieldPosition||(Mp6.FieldPosition={}));var Ip6="__smithy_context";Mp6.IniSectionType=void 0;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(Mp6.IniSectionType||(Mp6.IniSectionType={}));Mp6.RequestHandlerProtocol=void 0;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(Mp6.RequestHandlerProtocol||(Mp6.RequestHandlerProtocol={}));Mp6.SMITHY_CONTEXT_KEY=Ip6;Mp6.getDefaultClientConfiguration=Rp6;Mp6.resolveDefaultRuntimeConfig=qp6});var Xj1=v((Gt6)=>{var dw1=K0("crypto"),lw1=K0("fs"),Cp6=F40(),_p6=U40(),wU=K0("stream"),vK8=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",Di=($,Z=0,Q=$.byteLength-Z)=>{if(!vK8($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},dC0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},vp6=/^[A-Za-z0-9+/]*={0,2}$/,xK8=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!vp6.exec($))throw TypeError("Invalid base64 string.");let Z=dC0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},iC0=($)=>{let Z=dC0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},ow1=($)=>{let Z;if(typeof $==="string")Z=iC0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return Di(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function xp6($,Z,Q,X){return class Y extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return Y.mutate(X(J));return Y.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,Y.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var fK8=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return Di($.buffer,$.byteOffset,$.byteLength).toString("utf8")},HX=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function fp6($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,HX[Z[0]]+HX[Z[1]]+HX[Z[2]]+HX[Z[3]]+"-"+HX[Z[4]]+HX[Z[5]]+"-"+HX[Z[6]]+HX[Z[7]]+"-"+HX[Z[8]]+HX[Z[9]]+"-"+HX[Z[10]]+HX[Z[11]]+HX[Z[12]]+HX[Z[13]]+HX[Z[14]]+HX[Z[15]]}}var bp6=($,Z,Q=(X)=>X)=>$,yp6=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},gp6=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)H40.warn(cC0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")H40.warn(cC0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},K40=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))H40.warn(cC0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},hp6=Math.ceil(340282346638528860000000000000000000000),lC0=($)=>{let Z=K40($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>hp6)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},W40=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},up6=W40,iw1=($)=>rw1($,32),pw1=($)=>rw1($,16),nw1=($)=>rw1($,8),rw1=($,Z)=>{let Q=W40($);if(Q!==void 0&&lp6(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},lp6=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},cp6=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},bK8=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},mp6=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return H40.warn(cC0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},dp6=($)=>{if($===null||$===void 0)return;let Z=bK8($),Q=[];for(let X in Z)if(Z[X]!=null)Q.push(X);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},aw1=($)=>{if(typeof $=="string")return K40(ji($));return K40($)},ip6=aw1,yK8=($)=>{if(typeof $=="string")return lC0(ji($));return lC0($)},pp6=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,ji=($)=>{let Z=$.match(pp6);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},sw1=($)=>{if(typeof $=="string")return gK8($);return K40($)},np6=sw1,tp6=sw1,op6=($)=>{if(typeof $=="string")return gK8($);return lC0($)},gK8=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},hK8=($)=>{if(typeof $==="string")return W40(ji($));return W40($)},rp6=hK8,ap6=($)=>{if(typeof $==="string")return iw1(ji($));return iw1($)},Li=($)=>{if(typeof $==="string")return pw1(ji($));return pw1($)},uK8=($)=>{if(typeof $==="string")return nw1(ji($));return nw1($)},cC0=($)=>{return String(TypeError($).stack||$).split(`
|
|
4750
4750
|
`).slice(0,5).filter((Z)=>!Z.includes("stackTraceWarning")).join(`
|
|
4751
4751
|
`)},H40={warn:console.warn},sp6=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ew1=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function ep6($){let Z=$.getUTCFullYear(),Q=$.getUTCMonth(),X=$.getUTCDay(),Y=$.getUTCDate(),J=$.getUTCHours(),G=$.getUTCMinutes(),K=$.getUTCSeconds(),W=Y<10?`0${Y}`:`${Y}`,H=J<10?`0${J}`:`${J}`,F=G<10?`0${G}`:`${G}`,U=K<10?`0${K}`:`${K}`;return`${sp6[X]}, ${W} ${ew1[Q]} ${Z} ${H}:${F}:${U} GMT`}var $n6=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),Zn6=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=$n6.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,X,Y,J,G,K,W,H]=Z,F=Li(wi(X)),U=jU(Y,"month",1,12),N=jU(J,"day",1,31);return J40(F,U,N,{hours:G,minutes:K,seconds:W,fractionalMilliseconds:H})},Qn6=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),Xn6=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=Qn6.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,X,Y,J,G,K,W,H,F]=Z,U=Li(wi(X)),N=jU(Y,"month",1,12),B=jU(J,"day",1,31),O=J40(U,N,B,{hours:G,minutes:K,seconds:W,fractionalMilliseconds:H});if(F.toUpperCase()!="Z")O.setTime(O.getTime()-Ln6(F));return O},Yn6=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),Jn6=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),Gn6=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),Kn6=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-7231 date-times must be expressed as strings");let Z=Yn6.exec($);if(Z){let[Q,X,Y,J,G,K,W,H]=Z;return J40(Li(wi(J)),cw1(Y),jU(X,"day",1,31),{hours:G,minutes:K,seconds:W,fractionalMilliseconds:H})}if(Z=Jn6.exec($),Z){let[Q,X,Y,J,G,K,W,H]=Z;return Un6(J40(Hn6(J),cw1(Y),jU(X,"day",1,31),{hours:G,minutes:K,seconds:W,fractionalMilliseconds:H}))}if(Z=Gn6.exec($),Z){let[Q,X,Y,J,G,K,W,H]=Z;return J40(Li(wi(H)),cw1(X),jU(Y.trimLeft(),"day",1,31),{hours:J,minutes:G,seconds:K,fractionalMilliseconds:W})}throw TypeError("Invalid RFC-7231 date-time value")},Wn6=($)=>{if($===null||$===void 0)return;let Z;if(typeof $==="number")Z=$;else if(typeof $==="string")Z=aw1($);else if(typeof $==="object"&&$.tag===1)Z=$.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(Z)||Z===1/0||Z===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(Z*1000))},J40=($,Z,Q,X)=>{let Y=Z-1;return Bn6($,Y,Q),new Date(Date.UTC($,Y,Q,jU(X.hours,"hour",0,23),jU(X.minutes,"minute",0,59),jU(X.seconds,"seconds",0,60),Dn6(X.fractionalMilliseconds)))},Hn6=($)=>{let Z=new Date().getUTCFullYear(),Q=Math.floor(Z/100)*100+Li(wi($));if(Q<Z)return Q+100;return Q},Fn6=1576800000000,Un6=($)=>{if($.getTime()-new Date().getTime()>Fn6)return new Date(Date.UTC($.getUTCFullYear()-100,$.getUTCMonth(),$.getUTCDate(),$.getUTCHours(),$.getUTCMinutes(),$.getUTCSeconds(),$.getUTCMilliseconds()));return $},cw1=($)=>{let Z=ew1.indexOf($);if(Z<0)throw TypeError(`Invalid month: ${$}`);return Z+1},Nn6=[31,28,31,30,31,30,31,31,30,31,30,31],Bn6=($,Z,Q)=>{let X=Nn6[Z];if(Z===1&&On6($))X=29;if(Q>X)throw TypeError(`Invalid day for ${ew1[Z]} in ${$}: ${Q}`)},On6=($)=>{return $%4===0&&($%100!==0||$%400===0)},jU=($,Z,Q,X)=>{let Y=uK8(wi($));if(Y<Q||Y>X)throw TypeError(`${Z} must be between ${Q} and ${X}, inclusive`);return Y},Dn6=($)=>{if($===null||$===void 0)return 0;return yK8("0."+$)*1000},Ln6=($)=>{let Z=$[0],Q=1;if(Z=="+")Q=1;else if(Z=="-")Q=-1;else throw TypeError(`Offset direction, ${Z}, must be "+" or "-"`);let X=Number($.substring(1,3)),Y=Number($.substring(4,6));return Q*(X*60+Y)*60*1000},wi=($)=>{let Z=0;while(Z<$.length-1&&$.charAt(Z)==="0")Z++;if(Z===0)return $;return $.slice(Z)},ab=function(Z){return Object.assign(new String(Z),{deserializeJSON(){return JSON.parse(String(Z))},toString(){return String(Z)},toJSON(){return String(Z)}})};ab.from=($)=>{if($&&typeof $==="object"&&($ instanceof ab||("deserializeJSON"in $)))return $;else if(typeof $==="string"||Object.getPrototypeOf($)===String.prototype)return ab(String($));return ab(JSON.stringify($))};ab.fromObject=ab.from;function wn6($){if($.includes(",")||$.includes('"'))$=`"${$.replace(/"/g,"\\\"")}"`;return $}var $j1="(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?",Zj1="(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)",Qj1="(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?",lK8="(\\d?\\d)",cK8="(\\d{4})",jn6=new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/),En6=new RegExp(`^${$j1}, ${lK8} ${Zj1} ${cK8} ${Qj1} GMT$`),zn6=new RegExp(`^${$j1}, ${lK8}-${Zj1}-(\\d\\d) ${Qj1} GMT$`),Pn6=new RegExp(`^${$j1} ${Zj1} ( [1-9]|\\d\\d) ${Qj1} ${cK8}$`),An6=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Tn6=($)=>{if($==null)return;let Z=NaN;if(typeof $==="number")Z=$;else if(typeof $==="string"){if(!/^-?\d*\.?\d+$/.test($))throw TypeError("parseEpochTimestamp - numeric string invalid.");Z=Number.parseFloat($)}else if(typeof $==="object"&&$.tag===1)Z=$.value;if(isNaN(Z)||Math.abs(Z)===1/0)throw TypeError("Epoch timestamps must be valid finite numbers.");return new Date(Math.round(Z*1000))},Rn6=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC3339 timestamps must be strings");let Z=jn6.exec($);if(!Z)throw TypeError(`Invalid RFC3339 timestamp format ${$}`);let[,Q,X,Y,J,G,K,,W,H]=Z;aB(X,1,12),aB(Y,1,31),aB(J,0,23),aB(G,0,59),aB(K,0,60);let F=new Date(Date.UTC(Number(Q),Number(X)-1,Number(Y),Number(J),Number(G),Number(K),Number(W)?Math.round(parseFloat(`0.${W}`)*1000):0));if(F.setUTCFullYear(Number(Q)),H.toUpperCase()!="Z"){let[,U,N,B]=/([+-])(\d\d):(\d\d)/.exec(H)||[void 0,"+",0,0],O=U==="-"?1:-1;F.setTime(F.getTime()+O*(Number(N)*60*60*1000+Number(B)*60*1000))}return F},qn6=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC7231 timestamps must be strings.");let Z,Q,X,Y,J,G,K,W;if(W=En6.exec($))[,Z,Q,X,Y,J,G,K]=W;else if(W=zn6.exec($))[,Z,Q,X,Y,J,G,K]=W,X=(Number(X)+1900).toString();else if(W=Pn6.exec($))[,Q,Z,Y,J,G,K,X]=W;if(X&&G){let H=Date.UTC(Number(X),An6.indexOf(Q),Number(Z),Number(Y),Number(J),Number(G),K?Math.round(parseFloat(`0.${K}`)*1000):0);aB(Z,1,31),aB(Y,0,23),aB(J,0,59),aB(G,0,60);let F=new Date(H);return F.setUTCFullYear(Number(X)),F}throw TypeError(`Invalid RFC7231 date-time value ${$}.`)};function aB($,Z,Q){let X=Number($);if(X<Z||X>Q)throw Error(`Value ${X} out of range [${Z}, ${Q}]`)}function In6($,Z,Q){if(Q<=0||!Number.isInteger(Q))throw Error("Invalid number of delimiters ("+Q+") for splitEvery.");let X=$.split(Z);if(Q===1)return X;let Y=[],J="";for(let G=0;G<X.length;G++){if(J==="")J=X[G];else J+=Z+X[G];if((G+1)%Q===0)Y.push(J),J=""}if(J!=="")Y.push(J);return Y}var Mn6=($)=>{let Z=$.length,Q=[],X=!1,Y=void 0,J=0;for(let G=0;G<Z;++G){let K=$[G];switch(K){case'"':if(Y!=="\\")X=!X;break;case",":if(!X)Q.push($.slice(J,G)),J=G+1;break}Y=K}return Q.push($.slice(J)),Q.map((G)=>{G=G.trim();let K=G.length;if(K<2)return G;if(G[0]==='"'&&G[K-1]==='"')G=G.slice(1,K-1);return G.replace(/\\"/g,'"')})},MK8=/^-?\d*(\.\d+)?$/;class pC0{string;type;constructor($,Z){if(this.string=$,this.type=Z,!MK8.test($))throw Error('@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".')}toString(){return this.string}static[Symbol.hasInstance]($){if(!$||typeof $!=="object")return!1;let Z=$;return pC0.prototype.isPrototypeOf($)||Z.type==="bigDecimal"&&MK8.test(Z.string)}}function Vn6($){return new pC0(String($),"bigDecimal")}var mK8={},tw1={};for(let $=0;$<256;$++){let Z=$.toString(16).toLowerCase();if(Z.length===1)Z=`0${Z}`;mK8[$]=Z,tw1[Z]=$}function kn6($){if($.length%2!==0)throw Error("Hex encoded strings must have an even number length");let Z=new Uint8Array($.length/2);for(let Q=0;Q<$.length;Q+=2){let X=$.slice(Q,Q+2).toLowerCase();if(X in tw1)Z[Q/2]=tw1[X];else throw Error(`Cannot decode unrecognized sequence ${X} as hexadecimal`)}return Z}function dK8($){let Z="";for(let Q=0;Q<$.byteLength;Q++)Z+=mK8[$[Q]];return Z}var Sn6=($)=>{if(!$)return 0;if(typeof $==="string")return Buffer.byteLength($);else if(typeof $.byteLength==="number")return $.byteLength;else if(typeof $.size==="number")return $.size;else if(typeof $.start==="number"&&typeof $.end==="number")return $.end+1-$.start;else if($ instanceof lw1.ReadStream){if($.path!=null)return lw1.lstatSync($.path).size;else if(typeof $.fd==="number")return lw1.fstatSync($.fd).size}throw Error(`Body Length computation failed for ${$}`)},iK8=($)=>{if(typeof $==="string")return iC0($);if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array($)},pK8=($,Z)=>(Q,X)=>async(Y)=>{let{response:J}=await Q(Y);try{let G=await Z(J,$);return{response:J,output:G}}catch(G){if(Object.defineProperty(G,"$response",{value:J,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in G)){try{G.message+=`
|
|
4752
4752
|
Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`}catch(W){if(!X.logger||X.logger?.constructor?.name==="NoOpLogger")console.warn("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.");else X.logger?.warn?.("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.")}if(typeof G.$responseBodyText<"u"){if(G.$response)G.$response.body=G.$responseBodyText}try{if(Cp6.HttpResponse.isInstance(J)){let{headers:W={}}=J,H=Object.entries(W);G.$metadata={httpStatusCode:J.statusCode,requestId:mw1(/^x-[\w-]+-request-?id$/,H),extendedRequestId:mw1(/^x-[\w-]+-id-2$/,H),cfId:mw1(/^x-[\w-]+-cf-id$/,H)}}}catch(W){}}throw G}},mw1=($,Z)=>{return(Z.find(([Q])=>{return Q.match($)})||[void 0,void 0])[1]},nK8=($,Z)=>(Q,X)=>async(Y)=>{let J=$,G=X.endpointV2?async()=>_p6.toEndpointV1(X.endpointV2):J.endpoint;if(!G)throw Error("No valid endpoint provider available.");let K=await Z(Y.input,{...$,endpoint:G});return Q({...Y,request:K})},tK8={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},oK8={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function Cn6($,Z,Q){return{applyToStack:(X)=>{X.add(pK8($,Q),tK8),X.add(nK8($,Z),oK8)}}}class rK8{algorithmIdentifier;secret;hash;constructor($,Z){this.algorithmIdentifier=$,this.secret=Z,this.reset()}update($,Z){this.hash.update(iK8(VK8($,Z)))}digest(){return Promise.resolve(this.hash.digest())}reset(){this.hash=this.secret?dw1.createHmac(this.algorithmIdentifier,VK8(this.secret)):dw1.createHash(this.algorithmIdentifier)}}function VK8($,Z){if(Buffer.isBuffer($))return $;if(typeof $==="string")return dC0($,Z);if(ArrayBuffer.isView($))return Di($.buffer,$.byteOffset,$.byteLength);return Di($)}var aK8=class extends wU.Duplex{expectedChecksum;checksumSourceLocation;checksum;source;base64Encoder;pendingCallback=null;constructor({expectedChecksum:Z,checksum:Q,source:X,checksumSourceLocation:Y,base64Encoder:J}){super();if(typeof X.pipe==="function")this.source=X;else throw Error(`@smithy/util-stream: unsupported source type ${X?.constructor?.name??X} in ChecksumStream.`);this.base64Encoder=J??ow1,this.expectedChecksum=Z,this.checksum=Q,this.checksumSourceLocation=Y,this.source.pipe(this)}_read(Z){if(this.pendingCallback){let Q=this.pendingCallback;this.pendingCallback=null,Q()}}_write(Z,Q,X){try{if(this.checksum.update(Z),!this.push(Z)){this.pendingCallback=X;return}}catch(Y){return X(Y)}return X()}async _final(Z){try{let Q=await this.checksum.digest(),X=this.base64Encoder(Q);if(this.expectedChecksum!==X)return Z(Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${X}" in response header "${this.checksumSourceLocation}".`))}catch(Q){return Z(Q)}return this.push(null),Z()}},sB=($)=>typeof ReadableStream==="function"&&($?.constructor?.name===ReadableStream.name||$ instanceof ReadableStream),sK8=($)=>{return typeof Blob==="function"&&($?.constructor?.name===Blob.name||$ instanceof Blob)},_n6=($)=>new TextEncoder().encode($),eK8="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",kK8=Object.entries(eK8).reduce(($,[Z,Q])=>{return $[Q]=Number(Z),$},{}),vn6=eK8.split(""),Bi=6,G40=8,xn6=63;function $W8($){let Z;if(typeof $==="string")Z=_n6($);else Z=$;let Q=typeof Z==="object"&&typeof Z.length==="number",X=typeof Z==="object"&&typeof Z.byteOffset==="number"&&typeof Z.byteLength==="number";if(!Q&&!X)throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let Y="";for(let J=0;J<Z.length;J+=3){let G=0,K=0;for(let H=J,F=Math.min(J+3,Z.length);H<F;H++)G|=Z[H]<<(F-H-1)*G40,K+=G40;let W=Math.ceil(K/Bi);G<<=W*Bi-K;for(let H=1;H<=W;H++){let F=(W-H)*Bi;Y+=vn6[(G&xn6<<F)>>F]}Y+="==".slice(0,4-W)}return Y}var fn6=typeof ReadableStream==="function"?ReadableStream:function(){};class ZW8 extends fn6{}var bn6=({expectedChecksum:$,checksum:Z,source:Q,checksumSourceLocation:X,base64Encoder:Y})=>{if(!sB(Q))throw Error(`@smithy/util-stream: unsupported source type ${Q?.constructor?.name??Q} in ChecksumStream.`);let J=Y??$W8;if(typeof TransformStream!=="function")throw Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");let G=new TransformStream({start(){},async transform(W,H){Z.update(W),H.enqueue(W)},async flush(W){let H=await Z.digest(),F=J(H);if($!==F){let U=Error(`Checksum mismatch: expected "${$}" but received "${F}" in response header "${X}".`);W.error(U)}else W.terminate()}});Q.pipeThrough(G);let K=G.readable;return Object.setPrototypeOf(K,ZW8.prototype),K};function yn6($){if(typeof ReadableStream==="function"&&sB($.source))return bn6($);return new aK8($)}class mC0{allocByteArray;byteLength=0;byteArrays=[];constructor($){this.allocByteArray=$}push($){this.byteArrays.push($),this.byteLength+=$.byteLength}flush(){if(this.byteArrays.length===1){let Q=this.byteArrays[0];return this.reset(),Q}let $=this.allocByteArray(this.byteLength),Z=0;for(let Q=0;Q<this.byteArrays.length;++Q){let X=this.byteArrays[Q];$.set(X,Z),Z+=X.byteLength}return this.reset(),$}reset(){this.byteArrays=[],this.byteLength=0}}function gn6($,Z,Q){let X=$.getReader(),Y=!1,J=0,G=["",new mC0((H)=>new Uint8Array(H))],K=-1,W=async(H)=>{let{value:F,done:U}=await X.read(),N=F;if(U){if(K!==-1){let B=Oi(G,K);if(yj(B)>0)H.enqueue(B)}H.close()}else{let B=XW8(N,!1);if(K!==B){if(K>=0)H.enqueue(Oi(G,K));K=B}if(K===-1){H.enqueue(N);return}let O=yj(N);J+=O;let L=yj(G[K]);if(O>=Z&&L===0)H.enqueue(N);else{let w=QW8(G,K,N);if(!Y&&J>Z*2)Y=!0,Q?.warn(`@smithy/util-stream - stream chunk size ${O} is below threshold of ${Z}, automatically buffering.`);if(w>=Z)H.enqueue(Oi(G,K));else await W(H)}}};return new ReadableStream({pull:W})}function QW8($,Z,Q){switch(Z){case 0:return $[0]+=Q,yj($[0]);case 1:case 2:return $[Z].push(Q),yj($[Z])}}function Oi($,Z){switch(Z){case 0:let Q=$[0];return $[0]="",Q;case 1:case 2:return $[Z].flush()}throw Error(`@smithy/util-stream - invalid index ${Z} given to flush()`)}function yj($){return $?.byteLength??$?.length??0}function XW8($,Z=!0){if(Z&&typeof Buffer<"u"&&$ instanceof Buffer)return 2;if($ instanceof Uint8Array)return 1;if(typeof $==="string")return 0;return-1}function hn6($,Z,Q){if(sB($))return gn6($,Z,Q);let X=new wU.Readable({read(){}}),Y=!1,J=0,G=["",new mC0((W)=>new Uint8Array(W)),new mC0((W)=>Buffer.from(new Uint8Array(W)))],K=-1;return $.on("data",(W)=>{let H=XW8(W,!0);if(K!==H){if(K>=0)X.push(Oi(G,K));K=H}if(K===-1){X.push(W);return}let F=yj(W);J+=F;let U=yj(G[K]);if(F>=Z&&U===0)X.push(W);else{let N=QW8(G,K,W);if(!Y&&J>Z*2)Y=!0,Q?.warn(`@smithy/util-stream - stream chunk size ${F} is below threshold of ${Z}, automatically buffering.`);if(N>=Z)X.push(Oi(G,K))}}),$.on("end",()=>{if(K!==-1){let W=Oi(G,K);if(yj(W)>0)X.push(W)}X.push(null)}),X}var un6=($,Z)=>{let{base64Encoder:Q,bodyLengthChecker:X,checksumAlgorithmFn:Y,checksumLocationName:J,streamHasher:G}=Z,K=Q!==void 0&&X!==void 0&&Y!==void 0&&J!==void 0&&G!==void 0,W=K?G(Y,$):void 0,H=$.getReader();return new ReadableStream({async pull(F){let{value:U,done:N}=await H.read();if(N){if(F.enqueue(`0\r
|