decocms 4.303.10 → 4.303.11
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-CMTmkvDN.js → AlertCircle-DMOa9kaA.js} +1 -1
- package/dist/client/assets/{AreaChart-BAuhe9Vl.js → AreaChart-AOjZ9LZw.js} +1 -1
- package/dist/client/assets/{ArrowLeft-9yo27wlH.js → ArrowLeft-CUggYItL.js} +1 -1
- package/dist/client/assets/{ArrowUp-BGDaoV2y.js → ArrowUp-C5IsCES1.js} +1 -1
- package/dist/client/assets/{Check-BmG6b3S9.js → Check-Db1Ga7PI.js} +1 -1
- package/dist/client/assets/{CheckCircle-CegfzMgc.js → CheckCircle-DkOuRy8w.js} +1 -1
- package/dist/client/assets/{ChevronDown-C4Y6c1S5.js → ChevronDown-BiaRsEZ7.js} +1 -1
- package/dist/client/assets/{ChevronRight-CGjMKmeV.js → ChevronRight-BLj_FeNP.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-ngmhwANB.js → ChevronSelectorVertical-D0KbvfBw.js} +1 -1
- package/dist/client/assets/{ChevronUp-ffPNSzcT.js → ChevronUp-DaybYliq.js} +1 -1
- package/dist/client/assets/{Copy01-BSA2KxC2.js → Copy01-D7nfxMHV.js} +1 -1
- package/dist/client/assets/{CreditCard01-vnTgz9Zm.js → CreditCard01-CTvqtvgt.js} +1 -1
- package/dist/client/assets/{DotsVertical-IudFi734.js → DotsVertical-CIyQEVsE.js} +1 -1
- package/dist/client/assets/{Download01-CKJeETm_.js → Download01-fLJ1Bz25.js} +1 -1
- package/dist/client/assets/{Eye-CUj596h2.js → Eye-DfyRI3KQ.js} +1 -1
- package/dist/client/assets/{FilterLines-Cdjwk80w.js → FilterLines-DUnC1PEg.js} +1 -1
- package/dist/client/assets/{Globe01-CvQmHlun.js → Globe01-DgFtmJNr.js} +1 -1
- package/dist/client/assets/{Globe04-CAnWG0az.js → Globe04-C0pyE58w.js} +1 -1
- package/dist/client/assets/{HardDrive-BOqvh3f2.js → HardDrive-DPozgSAt.js} +1 -1
- package/dist/client/assets/{Key01-aS3s539d.js → Key01-DJGx-EKO.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BDW0S4lO.js → LinkExternal01-CA_Skzix.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-D13s1HCu.js → LockUnlocked01-SrLoD2vz.js} +1 -1
- package/dist/client/assets/{LogOut01-B1zyzOxE.js → LogOut01-YuMaHEL1.js} +1 -1
- package/dist/client/assets/{Monitor01-DRu8-wuG.js → Monitor01-DCkUNsdu.js} +1 -1
- package/dist/client/assets/{Palette-CmMMw9CF.js → Palette-BAnBzLym.js} +1 -1
- package/dist/client/assets/{Play-5tBaRjn6.js → Play-BAFMivpn.js} +1 -1
- package/dist/client/assets/{Plus-cBKEMDFU.js → Plus-BHQmSgnX.js} +1 -1
- package/dist/client/assets/{SearchLg-UV8LoRH5.js → SearchLg-DQOL9Dm2.js} +1 -1
- package/dist/client/assets/{SearchMd-WJ0ZXI0G.js → SearchMd-n0eQ_gbl.js} +1 -1
- package/dist/client/assets/{Settings02-Ck1pwHhR.js → Settings02-Cnnaio_j.js} +1 -1
- package/dist/client/assets/{Share07-CpJzrNL5.js → Share07-BoPbwvLN.js} +1 -1
- package/dist/client/assets/{Shield01-DEjaQBul.js → Shield01-0gcGQcwo.js} +1 -1
- package/dist/client/assets/{Stars01-BYuT3-FH.js → Stars01-B6NZkP0o.js} +1 -1
- package/dist/client/assets/{Stars02-B7tpyypT.js → Stars02-C-jkvwWs.js} +1 -1
- package/dist/client/assets/{Sun-C0qjCz3X.js → Sun-Ft6dCmdr.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-HN5dBMvf.js → SwitchHorizontal01-CwvbJQSg.js} +1 -1
- package/dist/client/assets/{Tool01-DlNc5wfk.js → Tool01-CjsmlgOy.js} +1 -1
- package/dist/client/assets/{Tool02-BL3Z96Su.js → Tool02-D9pXL7Da.js} +1 -1
- package/dist/client/assets/{Trash01-CnmTPvZZ.js → Trash01-CNsYpppx.js} +1 -1
- package/dist/client/assets/{TrendUp01-CsNGUI9F.js → TrendUp01-Kx4Gxoi9.js} +1 -1
- package/dist/client/assets/{Upload01-B1ilTb3Q.js → Upload01-DDbhhdot.js} +1 -1
- package/dist/client/assets/{User01-BPID40-j.js → User01-g33NTlmc.js} +1 -1
- package/dist/client/assets/{UserSquare-LjplIYV9.js → UserSquare-BunrXFXr.js} +1 -1
- package/dist/client/assets/{Users01-Dx9RduTL.js → Users01-DDLgn4WZ.js} +1 -1
- package/dist/client/assets/{Users03-BY_Lt-u6.js → Users03-Bf-Teta7.js} +1 -1
- package/dist/client/assets/{XCircle-BKXstYsQ.js → XCircle-CnIkWy8M.js} +1 -1
- package/dist/client/assets/{XClose-CpaIl_OM.js → XClose-B1i-i4Sd.js} +1 -1
- package/dist/client/assets/{YAxis-DS4tjRsr.js → YAxis-D0lCypT7.js} +1 -1
- package/dist/client/assets/{Zap-CGwg-Sr1.js → Zap-CusCWEaA.js} +1 -1
- package/dist/client/assets/{ZapSquare-BhjdaiQ-.js → ZapSquare-B0s1V88g.js} +1 -1
- package/dist/client/assets/{access-gate-CbM1wY7M.js → access-gate-Ciq9J0Wk.js} +1 -1
- package/dist/client/assets/{agent-icon-BOJBZxvL.js → agent-icon-JTWzRfUr.js} +1 -1
- package/dist/client/assets/{agents-list-bdQSWu3G.js → agents-list-Cy0Xpx5s.js} +1 -1
- package/dist/client/assets/{ai-providers-Dz0UwtKX.js → ai-providers-DZysu9Fa.js} +1 -1
- package/dist/client/assets/{alert-C53imx2L.js → alert-DdDdSQQ3.js} +1 -1
- package/dist/client/assets/{alert-dialog-D2aFNPAH.js → alert-dialog-fmqjaAIx.js} +1 -1
- package/dist/client/assets/{api-keys-nUizK3q2.js → api-keys-B6oMf-wH.js} +1 -1
- package/dist/client/assets/{app-editor-B8CDXGBK.js → app-editor-wDqqCuJ0.js} +1 -1
- package/dist/client/assets/{auth-b8LLd7qm.js → auth-DujKiZBI.js} +1 -1
- package/dist/client/assets/{auth-catchall-57Lx4ba1.js → auth-catchall-RsV1tgVz.js} +1 -1
- package/dist/client/assets/{auth-entry-CRtbo99v.js → auth-entry-BVL8VpMj.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BMdNkdoi.js → auth-split-layout-UHSTrUWs.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-B5hNLgrJ.js → authenticate-and-persist-oauth-Bk88SoXM.js} +1 -1
- package/dist/client/assets/{automation-list-row-kbViZmtL.js → automation-list-row-CO66g6eg.js} +1 -1
- package/dist/client/assets/{automation-runs-B6C35ouG.js → automation-runs-BX6GNNHs.js} +13 -13
- package/dist/client/assets/{automations-DK4jL6c8.js → automations-BmJZ0GGc.js} +1 -1
- package/dist/client/assets/{avatar-Dw6HXaRN.js → avatar-DUlaigDJ.js} +1 -1
- package/dist/client/assets/{badge-DlNjaNBM.js → badge-DEaqwrDa.js} +1 -1
- package/dist/client/assets/{block-document-_6vnjYuF.js → block-document-iUXzrXs-.js} +1 -1
- package/dist/client/assets/{breadcrumb-Czb3Bs9F.js → breadcrumb-BfEkOZ6B.js} +1 -1
- package/dist/client/assets/{buckets-B4ozpVKY.js → buckets-CMzJTIa9.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BciGOCRh.js → bulk-category-panel-4RKGHXK1.js} +1 -1
- package/dist/client/assets/{capability-load-error-C5IXFhHB.js → capability-load-error-CLVtb0dS.js} +1 -1
- package/dist/client/assets/{cards-BPbGR6Ol.js → cards-BvbzdW46.js} +1 -1
- package/dist/client/assets/{category-editor-D91yMzIv.js → category-editor-nqhKIF07.js} +1 -1
- package/dist/client/assets/{chart-CE-aaSIV.js → chart-Dy8sVXBz.js} +1 -1
- package/dist/client/assets/{chat-context-BDd-jb5j.js → chat-context-CSpPIaWT.js} +1 -1
- package/dist/client/assets/{checkbox-CGZPHwNl.js → checkbox-Cx76Ddwh.js} +1 -1
- package/dist/client/assets/{choose-editor-DGrpJZbe.js → choose-editor-BjmWduXE.js} +1 -1
- package/dist/client/assets/{cli-auth-success-lqy21_sY.js → cli-auth-success-Ds9SsFzY.js} +1 -1
- package/dist/client/assets/{collection-detail-DWtYWG6w.js → collection-detail-DaMo7-13.js} +1 -1
- package/dist/client/assets/{collection-display-button-DJH0raBq.js → collection-display-button-Bz7VHchR.js} +1 -1
- package/dist/client/assets/{collection-search-C37PdqMF.js → collection-search-Dv_KF1p2.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BGytufe1.js → collection-table-wrapper-CmNSr9KH.js} +1 -1
- package/dist/client/assets/{collection-tabs-BHpVd8oQ.js → collection-tabs-4gtHKs40.js} +1 -1
- package/dist/client/assets/{command-CBaUZr6u.js → command-BkLVGE7W.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-GL_96WB1.js → commerce-onboarding-DN1qco0V.js} +1 -1
- package/dist/client/assets/{config-C29F3CXY.js → config-CLtzt--z.js} +1 -1
- package/dist/client/assets/{connect-D-RJK-Ht.js → connect-z8SIeaxB.js} +1 -1
- package/dist/client/assets/{connection-obR7RNQB.js → connection-CHMG6Tnp.js} +1 -1
- package/dist/client/assets/{connection-card-B1Kv98ke.js → connection-card-D3UrBkIa.js} +1 -1
- package/dist/client/assets/{connection-detail-yY_gSpqp.js → connection-detail-Cf4cYTic.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-Bu5E1m7b.js → connection-form-helpers-C2CUvYTs.js} +1 -1
- package/dist/client/assets/{connections-CmRsq_H1.js → connections-B2Xlz0rP.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-C2DRqqzb.js → decopilot-sse-pool-DWg5BFEU.js} +1 -1
- package/dist/client/assets/{dialog-B-aNs606.js → dialog-Bn4bGZ4f.js} +1 -1
- package/dist/client/assets/{domain-settings-Bm8Kxxgr.js → domain-settings-vKiFwUyc.js} +1 -1
- package/dist/client/assets/{drawer-gWbrxszo.js → drawer-DZnFItsd.js} +1 -1
- package/dist/client/assets/{dropdown-menu-nfSJEEyf.js → dropdown-menu-X02O5o7_.js} +1 -1
- package/dist/client/assets/{empty-state-CRZWFScF.js → empty-state-Dz43Z1LU.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Bhc-mbrQ.js → extract-connection-data-BdBcX_vz.js} +1 -1
- package/dist/client/assets/{file-explorer-Cp0PPast.js → file-explorer-o3f18_Qn.js} +1 -1
- package/dist/client/assets/{file-type-icon-CKHXdh6n.js → file-type-icon-CChY0pkT.js} +1 -1
- package/dist/client/assets/{form-CZfjrPrb.js → form-BV-2uWsA.js} +1 -1
- package/dist/client/assets/{general-DNVgPVRI.js → general-C4SZZCYH.js} +1 -1
- package/dist/client/assets/{github-repo-picker-D8Cx-NPj.js → github-repo-picker-BjPpNg-z.js} +1 -1
- package/dist/client/assets/{hooks-adwUKQEy.js → hooks-DylJX_26.js} +1 -1
- package/dist/client/assets/{index-Hh5U0t8v.js → index-2AgMm8ZX.js} +1 -1
- package/dist/client/assets/{index-8ZN8Ix8B.js → index-BqdxzkOY.js} +1 -1
- package/dist/client/assets/{index-D_IG02oY.js → index-C30UUSE2.js} +1 -1
- package/dist/client/assets/{index-CrNgGfla.js → index-C66SCwBg.js} +1 -1
- package/dist/client/assets/{index-DGAiD-n3.js → index-DNXA7h66.js} +1 -1
- package/dist/client/assets/{index-DYAbD7da.js → index-Dk00fj47.js} +7 -7
- package/dist/client/assets/{index-CtrTWESE.js → index-MUTxYYEE.js} +5 -5
- package/dist/client/assets/index-ft2FAZmV.js +5 -0
- package/dist/client/assets/{index-DcOJM9nx.js → index-gJEZm_X5.js} +1 -1
- package/dist/client/assets/{index-redirect-DUKygWst.js → index-redirect-CMfuXfsQ.js} +1 -1
- package/dist/client/assets/{infra-billing-CVvxfIeX.js → infra-billing-BpobUS3u.js} +1 -1
- package/dist/client/assets/{input-CnqhmWgr.js → input-vm2uKwNC.js} +1 -1
- package/dist/client/assets/{integration-icon-BoPssjzH.js → integration-icon-Cj_7lcs1.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-JQJrSWL2.js → invite-member-dialog-DRX65Gbb.js} +1 -1
- package/dist/client/assets/{label-CNWDPGce.js → label-CYHmnwG-.js} +1 -1
- package/dist/client/assets/{layout-gxIt7dCQ.js → layout-BcKCqUn8.js} +1 -1
- package/dist/client/assets/{login-yMs2vwea.js → login-CvPNuknF.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CdtsP1Qq.js → mcp-oauth-DY6QuBpc.js} +1 -1
- package/dist/client/assets/{members-BCneMGrn.js → members-mGzbUAyL.js} +1 -1
- package/dist/client/assets/{monaco-editor-Dq5_TFCT.js → monaco-editor-Bd6iUTWW.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CUA8Uird.js → monitoring-stats-row-OJZb7jCh.js} +1 -1
- package/dist/client/assets/{multi-select-BTFHHi5z.js → multi-select-wrGpCLQx.js} +1 -1
- package/dist/client/assets/{oauth-callback-C_BHFwHc.js → oauth-callback-Dwn3yein.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DlOq5YBU.js → oauth-callback-ai-provider-DhSQsWIn.js} +1 -1
- package/dist/client/assets/{onboarding-BaE_M2_o.js → onboarding-Qyq7k24c.js} +1 -1
- package/dist/client/assets/{org-layout-BoVofWNS.js → org-layout-CX9WuFmg.js} +1 -1
- package/dist/client/assets/{organization-choice-vQk7cGU1.js → organization-choice-9CflgOM6.js} +1 -1
- package/dist/client/assets/{orgs-GPTFpdoE.js → orgs-CucuLirf.js} +1 -1
- package/dist/client/assets/{page-seo-form-CXxD2XhX.js → page-seo-form-CoadzAGi.js} +1 -1
- package/dist/client/assets/{popover-ER5kFhd5.js → popover-DDpVq7Hb.js} +1 -1
- package/dist/client/assets/{post-calendar-D7O4FfKf.js → post-calendar-ClZOjr4j.js} +1 -1
- package/dist/client/assets/{post-editor-BNQqdZZA.js → post-editor-CXGgsuAN.js} +1 -1
- package/dist/client/assets/{primitives-DSHOkpQD.js → primitives-Bw2NZwXR.js} +1 -1
- package/dist/client/assets/{profile-BAQ1R0bW.js → profile-DkisSkRh.js} +1 -1
- package/dist/client/assets/{project-app-view-D4XIMelY.js → project-app-view-CdK0Pu97.js} +1 -1
- package/dist/client/assets/{prompts-D088iVdR.js → prompts-BcBs0gcM.js} +1 -1
- package/dist/client/assets/record-editor-BrWjsCtV.js +1 -0
- package/dist/client/assets/{redirect-editor-BQMfy2K_.js → redirect-editor-Dj00QKJc.js} +1 -1
- package/dist/client/assets/registry-DxGVvioT.js +2 -0
- package/dist/client/assets/{registry-layout-CwG38xbF.js → registry-layout-Ckgks3qn.js} +1 -1
- package/dist/client/assets/{reports-BtAto5AY.js → reports-PPPJ6KES.js} +1 -1
- package/dist/client/assets/{require-capability-EFPYSMVg.js → require-capability-fij1_ke3.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CBgndaXv.js → required-auth-layout-CTIsnA-q.js} +1 -1
- package/dist/client/assets/{reset-password-DuZiuU8M.js → reset-password-DG7EeLzX.js} +1 -1
- package/dist/client/assets/{review-settings-QlbwzteJ.js → review-settings-Cup2FRKZ.js} +1 -1
- package/dist/client/assets/{roles-CUuldCBY.js → roles-DdZ_QhQ-.js} +1 -1
- package/dist/client/assets/{scroll-area-BS1Ozt1z.js → scroll-area-Cna_OYrE.js} +1 -1
- package/dist/client/assets/{search-input-D8VtE4yy.js → search-input-BzEejMEp.js} +1 -1
- package/dist/client/assets/{secrets-srSUutpz.js → secrets-C8ga99pt.js} +1 -1
- package/dist/client/assets/{sections-editor-D9WBwC0x.js → sections-editor-DqxmXXe6.js} +1 -1
- package/dist/client/assets/{select-CHJpOmN9.js → select-C29EPVjb.js} +1 -1
- package/dist/client/assets/{select-model-Dj8BSYbZ.js → select-model-Dqai1paS.js} +1 -1
- package/dist/client/assets/{self-tool-result-D_GONLMm.js → self-tool-result-8-Mxm4Zl.js} +1 -1
- package/dist/client/assets/{seo-editor-BnYyFIzq.js → seo-editor-CvYt9Q0F.js} +1 -1
- package/dist/client/assets/{settings-layout-CytB_91u.js → settings-layout-B5YBhje-.js} +1 -1
- package/dist/client/assets/{shell-controls-CRoUGWTu.js → shell-controls-CBatbPlR.js} +1 -1
- package/dist/client/assets/{shell-layout-Bgy4QDik.js → shell-layout-IorYjGog.js} +1 -1
- package/dist/client/assets/{spinner-CQWcIDGa.js → spinner-BfbbdapK.js} +1 -1
- package/dist/client/assets/{sso-DlArB0GA.js → sso-CVvBUxny.js} +1 -1
- package/dist/client/assets/{store-BxpICXvO.js → store-DTClBj0f.js} +1 -1
- package/dist/client/assets/store-registry-DY3bdKqq.js +2 -0
- package/dist/client/assets/{super-agent-icon-fdpKpsLJ.js → super-agent-icon-DqYxz3NW.js} +1 -1
- package/dist/client/assets/{switch-B0i38R-U.js → switch-C4kbtoAs.js} +1 -1
- package/dist/client/assets/{synced-repos-B1zeudAm.js → synced-repos-BvdcpcjQ.js} +1 -1
- package/dist/client/assets/{table-Df10FVfQ.js → table-amkDYRV1.js} +1 -1
- package/dist/client/assets/{tabs-DifZwfLS.js → tabs-BBy6wQm1.js} +1 -1
- package/dist/client/assets/{task-board-stQQll8e.js → task-board-BuRQDvs6.js} +1 -1
- package/dist/client/assets/{tasks-D0aEaaS8.js → tasks-CkRVm7UJ.js} +1 -1
- package/dist/client/assets/{textarea-Beywpl1x.js → textarea-B3AjwX3K.js} +1 -1
- package/dist/client/assets/{toggle-group-D8hiKjrH.js → toggle-group-9F5hhrjx.js} +1 -1
- package/dist/client/assets/{toolbar-vYm6faIe.js → toolbar-R7PQyXZE.js} +1 -1
- package/dist/client/assets/{track-D9gviXIR.js → track-CLeLOcL1.js} +1 -1
- package/dist/client/assets/{types-BB7HRYbN.js → types-CsBZaQRw.js} +1 -1
- package/dist/client/assets/{use-ai-providers-C5AtyNJj.js → use-ai-providers-CgBo57Dq.js} +1 -1
- package/dist/client/assets/{use-api-keys-DVW8392B.js → use-api-keys-CEBsoMy-.js} +1 -1
- package/dist/client/assets/{use-automations-CVOS6Gbf.js → use-automations-BW4HF-pb.js} +1 -1
- package/dist/client/assets/{use-autosave-C2NMvxeW.js → use-autosave-LhN0Ho5S.js} +1 -1
- package/dist/client/assets/{use-connection-JPaAS2fH.js → use-connection-CgPknhuf.js} +1 -1
- package/dist/client/assets/{use-copy-B8LGnW9A.js → use-copy-BYBbh_-y.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DYogpmLM.js → use-create-virtual-mcp-CQzSvYTK.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-2xH00R3Y.js → use-debounced-autosave-CxcPaMKY.js} +1 -1
- package/dist/client/assets/{use-debounced-value-vP9-B4wZ.js → use-debounced-value-DPWCI8OT.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DkiL7cci.js → use-decopilot-events-CAGKwwOn.js} +1 -1
- package/dist/client/assets/{use-delete-connection-n-74DZMR.js → use-delete-connection-BNt-D_GL.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-st3XYt2T.js → use-deployment-admin-Du2k5ELr.js} +1 -1
- package/dist/client/assets/{use-destination-route-cDhIXrif.js → use-destination-route-DYTJgnog.js} +1 -1
- package/dist/client/assets/{use-file-configs-UTTOKKod.js → use-file-configs-JXCjBwRh.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Bjh1ZOJz.js → use-infinite-scroll-Bff5_WIM.js} +1 -1
- package/dist/client/assets/{use-join-requests-iHgGhRM3.js → use-join-requests-BgqXt3k1.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-BI7B4w0i.js → use-mcp-auth-status-DbX9PGkZ.js} +1 -1
- package/dist/client/assets/{use-mcp-client-uSoC8XtC.js → use-mcp-client-BXMYkrzH.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-B5KwrPdk.js → use-mcp-tools-CUpr66BT.js} +1 -1
- package/dist/client/assets/{use-members-O7K_Dw-T.js → use-members-BaEspq5m.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DD_wgcDL.js → use-navigate-to-agent-XvYlVQgn.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-B7GgVMVa.js → use-org-auth-client-0M3Rn0Fi.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-B-fN4-sg.js → use-org-repo-syncs-BxfLRoE_.js} +1 -1
- package/dist/client/assets/{use-org-sso-DEUJfqju.js → use-org-sso-_j4qZ4S6.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DC50At2P.js → use-organization-roles-DSCD4BU0.js} +1 -1
- package/dist/client/assets/{use-organization-settings-33DPQ4xx.js → use-organization-settings-Ct1a3da0.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-Bwqtgsls.js → use-panel-navigate-DLl7z2iO.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DzHQKCBk.js → use-registry-connections-BEkcbRrF.js} +1 -1
- package/dist/client/assets/{use-secrets-DAUYod4R.js → use-secrets-CzKBVxsZ.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CoUwLk3d.js → use-section-preview-base-BLc253FO.js} +1 -1
- package/dist/client/assets/{use-status-sounds-D-98VCnU.js → use-status-sounds-DBw-EkAC.js} +1 -1
- package/dist/client/assets/{use-tags-Db50zMJp.js → use-tags-D36fLMdh.js} +1 -1
- package/dist/client/assets/{use-view-mode-Bcamhsiu.js → use-view-mode-H2zkFwO-.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CR9iSERj.js → use-virtual-mcp-rIn_FB58.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CkXkhA4Y.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-CTGA_G_8.js +1 -0
- package/dist/client/assets/{users-BNeE9wGb.js → users-D1XtX3FL.js} +1 -1
- package/dist/client/assets/{variant-calendar-qAGFT7Rt.js → variant-calendar-DMn-bXJK.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-B8odvl3Z.js → view-mode-toggle-3QHrCJjf.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +4 -4
- package/dist/server/server.js +4 -4
- package/package.json +1 -1
- package/dist/client/assets/index-B55dIkar.js +0 -5
- package/dist/client/assets/record-editor-CqyDT08j.js +0 -1
- package/dist/client/assets/registry-DLXJEo7g.js +0 -2
- package/dist/client/assets/store-registry-Czt53bDT.js +0 -2
- package/dist/client/assets/useInfiniteQuery-BJiVddph.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-C1XIRGeA.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1489,7 +1489,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var dp1=L(()=>{tf()});f
|
|
|
1489
1489
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await jy`
|
|
1490
1490
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1491
1491
|
`.execute($)}}async function ha1($){await qs8($),await Ms8($);let Z=new ya1({db:$,provider:{getMigrations:()=>Promise.resolve(ip0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Vs8($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await ul0();let G=X??F8(),J=async()=>{if(!Z&&!X)await ZO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ha1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ks8(){let $=F8(),Z=new ya1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ip0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var ca1=L(()=>{ba1();cl0();YX()});async function w70($){let Z={...process.env},X=F80($,Z);console.log(pw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Pt1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (AZ0(),PZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (cl0(),Tt1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (YX(),hn1)),{migrateToLatest:F}=await Promise.resolve().then(() => (ca1(),ua1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return ip1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var pp0=L(()=>{tf();At1();R$()});var ia1={};Z0(ia1,{updateService:()=>dE,subscribeCliState:()=>op0,setTuiConsoleIntercepted:()=>E70,setServerUrl:()=>Lp,setMigrationsDone:()=>Op,setDevMode:()=>Cs8,resetCliStateForTests:()=>Ss8,isTuiConsoleIntercepted:()=>j70,getCliState:()=>tp0,addLogEntry:()=>WO});function la1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ma1(){return{services:la1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Ss8(){lQ=ma1()}function Bp(){for(let $ of np0)$()}function tp0(){return lQ}function op0($){return np0.add($),()=>np0.delete($)}function dE($){lQ={...lQ,services:lQ.services.map((Z)=>Z.name===$.name?$:Z)},Bp()}function Op(){lQ={...lQ,migrationsStatus:"done"},Bp()}function Lp($){lQ={...lQ,serverUrl:$},Bp()}function WO($){let Z=[...lQ.logs,$];lQ={...lQ,logs:Z.length>500?Z.slice(-500):Z},Bp()}function Cs8(){lQ={...lQ,services:[...la1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Bp()}function E70($){da1=$}function j70(){return da1}var lQ,np0,da1=!1;var iE=L(()=>{lQ=ma1();np0=new Set});import{createServer as pa1}from"net";function _s8($){return new Promise((Z)=>{let X=pa1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Dp($){if(await _s8($))return $;let Z=await new Promise((X,Q)=>{let Y=pa1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var rp0=()=>{};var sp0={};Z0(sp0,{startDevServer:()=>xs8,pipeToLogStore:()=>ap0});import{join as vs8}from"path";function ap0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1492
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;WO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)WO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function xs8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Dp(Number(Y)+1):await Dp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await w70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)dE({name:D.name,status:"ready",port:D.port});Op();let F=vs8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ap0(U.stdout),ap0(U.stderr);Lp(G),dE({name:"Vite",status:"ready",port:Number(Y)}),dE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (AZ0(),PZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var ep0=L(()=>{pp0();iE();rp0()});var z70;var $n0=L(()=>{z70={name:"decocms",version:"4.303.10",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 bs8,Text as na1}from"ink";import{jsx as ys8,jsxs as ta1}from"react/jsx-runtime";function oa1({version:$}){return ta1(bs8,{flexDirection:"column",marginTop:1,children:[iZ0.map((Z,X)=>ys8(na1,{color:pZ0[X],children:Z},X)),ta1(na1,{dimColor:!0,children:[" v",$]})]})}var ra1=L(()=>{Zp()});import{Box as pE,Text as HO}from"ink";import{Spinner as gs8}from"@inkjs/ui";import{jsx as XG,jsxs as zy}from"react/jsx-runtime";function aa1({status:$}){if($==="pending")return XG(gs8,{label:""});return XG(HO,{color:"green",children:"\u2713"})}function hs8($){return`${$.name}: ${$.port||"...."}`}function sa1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return zy(pE,{flexDirection:"column",paddingBottom:1,children:[XG(oa1,{version:z70.version}),XG(pE,{marginBottom:1,children:XG(HO,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(pE,{children:zy(HO,{dimColor:!0,children:["Home: ",X]})}),zy(pE,{gap:2,children:[$.map((Y)=>zy(pE,{gap:1,children:[XG(HO,{children:hs8(Y)}),XG(aa1,{status:Y.status})]},Y.name)),zy(pE,{gap:1,children:[XG(HO,{children:"Migrations"}),XG(aa1,{status:Z})]})]}),XG(pE,{children:Q?zy(HO,{children:["Open in browser: ",XG(HO,{color:"cyan",children:Q})]}):XG(HO,{dimColor:!0,children:"Starting..."})})]})}var ea1=L(()=>{$n0();ra1()});import{Box as us8,Text as wp}from"ink";import{jsx as Zn0,jsxs as Xn0}from"react/jsx-runtime";function cs8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function $s1({logs:$}){return Zn0(us8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Zn0(wp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Xn0(wp,{children:[Xn0(wp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Zn0(wp,{color:cs8(Z.status),children:Z.status}),Xn0(wp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Zs1=()=>{};var Qn0={};Z0(Qn0,{App:()=>ds8});import{Box as ls8}from"ink";import{useSyncExternalStore as ms8}from"react";import{jsx as Xs1,jsxs as is8}from"react/jsx-runtime";function ds8({home:$}){let Z=ms8(op0,tp0);return is8(ls8,{flexDirection:"column",children:[Xs1(sa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Xs1($s1,{logs:Z.logs})]})}var Yn0=L(()=>{ea1();Zs1();iE()});var m3="thread-gate",NN="decopilot-hosted-harness",UN="decopilot-hosted-harness-sandboxed",EJ="automations",FO="background-tools",nE="task-board-github-reads",tE="jira-push";var Qs1="9";function Ys1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Qs1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Gs1=()=>{};import ps8 from"pg";async function Ks1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=ns8}=$,Y=$.log??((W)=>console.log(W)),G=new ps8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Js1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(ts8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Js1.toString()])}catch{}await G.end().catch(()=>{})}}var Js1=8314027461559302n,ns8=600000,ts8=500;var Ws1=L(()=>{J4()});function os8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Gn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Hs1(){let $=os8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Gn0($,"--cpu-prof-dir")??process.cwd(),name:Gn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Gn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Fs1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=uE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),P70=setInterval(()=>void Z().catch(()=>{}),$),P70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(P70)clearInterval(P70)}}var P70;var Ns1=()=>{};import*as rs8 from"bun:jsc";function Us1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{as8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ss8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var as8,ss8;var Bs1=L(()=>{({startSamplingProfiler:as8,samplingProfilerStackTraces:ss8}=rs8)});function Os1(){Hs1();let $=[Fs1(),Cn1(),Us1()];return()=>{for(let Z of $)Z()}}var Ls1=L(()=>{Cl0();Ns1();Bs1()});var oE=v((Ds1)=>{Object.defineProperty(Ds1,"__esModule",{value:!0});Ds1.RepublishHeaders=Ds1.DirectMsgHeaders=Ds1.JsHeaders=Ds1.AdvisoryKind=void 0;Ds1.isOrderedPushConsumerOptions=es8;Ds1.isPullConsumer=$e8;Ds1.isPushConsumer=Ze8;Ds1.isBoundPushConsumerOptions=Xe8;function es8($){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 $e8($){return $.isPullConsumer()}function Ze8($){return $.isPushConsumer()}function Xe8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ds1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ds1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ds1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ds1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var QG=v((Es1)=>{Object.defineProperty(Es1,"__esModule",{value:!0});Es1.TD=Es1.TE=Es1.Empty=void 0;Es1.encode=Ne8;Es1.decode=Ue8;Es1.Empty=new Uint8Array(0);Es1.TE=new TextEncoder;Es1.TD=new TextDecoder;function Fe8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Ne8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Es1.TE.encode($[X]));if(Z.length===0)return Es1.Empty;if(Z.length===1)return Z[0];return Fe8(...Z)}function Ue8($){if(!$||$.length===0)return"";return Es1.TD.decode($)}});var YG=v((Ps1)=>{Object.defineProperty(Ps1,"__esModule",{value:!0});Ps1.errors=Ps1.PermissionViolationError=Ps1.NoRespondersError=Ps1.TimeoutError=Ps1.RequestError=Ps1.ProtocolError=Ps1.ConnectionError=Ps1.DrainingConnectionError=Ps1.ClosedConnectionError=Ps1.AuthorizationError=Ps1.UserAuthenticationExpiredError=Ps1.InvalidOperationError=Ps1.InvalidArgumentError=Ps1.InvalidSubjectError=void 0;class Kn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ps1.InvalidSubjectError=Kn0;class A70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new A70(`${$} ${Z}`,X)}}Ps1.InvalidArgumentError=A70;class Wn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ps1.InvalidOperationError=Wn0;class T70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new T70($);return null}}Ps1.UserAuthenticationExpiredError=T70;class R70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new R70($);return null}}Ps1.AuthorizationError=R70;class Hn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ps1.ClosedConnectionError=Hn0;class Fn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ps1.DrainingConnectionError=Fn0;class Nn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ps1.ConnectionError=Nn0;class Un0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ps1.ProtocolError=Un0;class Bn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof I70}}Ps1.RequestError=Bn0;class On0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ps1.TimeoutError=On0;class I70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ps1.NoRespondersError=I70;class q70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new q70($,X,Q,Y)}}Ps1.PermissionViolationError=q70;Ps1.errors={AuthorizationError:R70,ClosedConnectionError:Hn0,ConnectionError:Nn0,DrainingConnectionError:Fn0,InvalidArgumentError:A70,InvalidOperationError:Wn0,InvalidSubjectError:Kn0,NoRespondersError:I70,PermissionViolationError:q70,ProtocolError:Un0,RequestError:Bn0,TimeoutError:On0,UserAuthenticationExpiredError:T70}});var d3=v((qs1)=>{Object.defineProperty(qs1,"__esModule",{value:!0});qs1.SimpleMutex=qs1.Perf=void 0;qs1.extend=ke8;qs1.render=Se8;qs1.timeout=Ce8;qs1.delay=_e8;qs1.deadline=ve8;qs1.deferred=Dn0;qs1.debugDeferred=xe8;qs1.shuffle=fe8;qs1.collect=be8;qs1.jitter=Is1;qs1.backoff=ye8;qs1.nanos=ge8;qs1.millis=he8;qs1.randomToken=le8;var Ve8=QG(),Ln0=YG();function ke8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Se8($){return Ve8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Ce8($,Z=!0){let X=Z?new Ln0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ln0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function _e8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ve8($,Z=1000){let X=Dn0(),Q=setTimeout(()=>{X.reject(new Ln0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Dn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function xe8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function fe8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function be8($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ts1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}qs1.Perf=Ts1;class Rs1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Dn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}qs1.SimpleMutex=Rs1;function Is1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function ye8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Is1(X>Z?$[Z]:$[X])}}}function ge8($){return $*1e6}function he8($){return Math.floor($/1e6)}var ue8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",BN=new Uint8Array(62);for(let $=0;$<62;$++)BN[$]=ue8.charCodeAt($);var ce8=218340105584896;function le8(){let $=Math.floor(Math.random()*ce8),Z=$%62,X=BN[Z];$=($-Z)/62,Z=$%62;let Q=BN[Z];$=($-Z)/62,Z=$%62;let Y=BN[Z];$=($-Z)/62,Z=$%62;let G=BN[Z];$=($-Z)/62,Z=$%62;let J=BN[Z];$=($-Z)/62,Z=$%62;let K=BN[Z];$=($-Z)/62,Z=$%62;let W=BN[Z];$=($-Z)/62;let H=BN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var xs1=v((_s1)=>{Object.defineProperty(_s1,"__esModule",{value:!0});_s1.nuid=_s1.NuidImpl=void 0;var Y04="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",NO=62,V70=12,Ss1=10,Vs1=33,G04=333,ks1=V70+Ss1,En0=new Uint8Array(NO);for(let $=0;$<NO;$++)En0[$]=Y04.charCodeAt($);var M70=4294967296,Cs1=BigInt(NO)**BigInt(Ss1),Ep=Number(Cs1/(1n<<32n)),wn0=Number(Cs1%(1n<<32n));function J04($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function K04($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J04($)}class jn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ks1),this.cbuf=new Uint8Array(V70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ep+1)),this.seqLo=Math.floor(Math.random()*M70);while($++<8&&this.seqHi===Ep&&this.seqLo>=wn0);if(this.seqHi===Ep&&this.seqLo>=wn0)this.seqLo=0;this.inc=Math.random()*(G04-Vs1)+Vs1|0}setPre(){K04(this.cbuf);for(let $=0;$<V70;$++)this.buf[$]=En0[this.cbuf[$]%NO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ks1-1;X>=V70;X--){let Q=Math.floor($/NO),G=($-Q*NO)*M70+Z,J=Math.floor(G/NO),K=G-J*NO;this.buf[X]=En0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=M70)this.seqLo-=M70,this.seqHi+=1;if(this.seqHi>Ep||this.seqHi===Ep&&this.seqLo>=wn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}_s1.NuidImpl=jn0;_s1.nuid=new jn0});var gs1=v((bs1)=>{Object.defineProperty(bs1,"__esModule",{value:!0});bs1.nuid=bs1.Nuid=void 0;var fs1=xs1();bs1.Nuid=fs1.NuidImpl;bs1.nuid=fs1.nuid});var S70=v((k70)=>{Object.defineProperty(k70,"__esModule",{value:!0});k70.nuid=k70.Nuid=void 0;var hs1=gs1();Object.defineProperty(k70,"Nuid",{enumerable:!0,get:function(){return hs1.Nuid}});Object.defineProperty(k70,"nuid",{enumerable:!0,get:function(){return hs1.nuid}})});var UO=v((us1)=>{Object.defineProperty(us1,"__esModule",{value:!0});us1.DEFAULT_HOST=us1.DEFAULT_PORT=us1.Match=void 0;us1.syncIterator=B04;us1.createInbox=O04;var N04=S70(),U04=YG();us1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function B04($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function O04($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U04.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${N04.nuid.next()}`}us1.DEFAULT_PORT=4222;us1.DEFAULT_HOST="127.0.0.1"});var jp=v((ds1)=>{Object.defineProperty(ds1,"__esModule",{value:!0});ds1.DataBuffer=void 0;var ls1=QG();class ms1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ls1.TE.encode($)}static toAscii($){return ls1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ds1.DataBuffer=ms1});var rE=v((ns1)=>{Object.defineProperty(ns1,"__esModule",{value:!0});ns1.LF=ns1.CR=ns1.CRLF=ns1.CR_LF_LEN=ns1.CR_LF=void 0;ns1.setTransportFactory=A04;ns1.defaultPort=T04;ns1.getUrlParseFn=R04;ns1.newTransport=I04;ns1.getResolveFn=q04;ns1.protoLen=ps1;ns1.extractProtocolMessage=M04;var j04=QG(),z04=UO(),P04=jp(),GG;function A04($){GG=$}function T04(){return GG!==void 0&&GG.defaultPort!==void 0?GG.defaultPort:z04.DEFAULT_PORT}function R04(){return GG!==void 0&&GG.urlParseFn?GG.urlParseFn:void 0}function I04(){if(!GG||typeof GG.factory!=="function")throw Error("transport fn is not set");return GG.factory()}function q04(){return GG!==void 0&&GG.dnsResolveFn?GG.dnsResolveFn:void 0}ns1.CR_LF=`\r
|
|
1492
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;WO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)WO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function xs8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Dp(Number(Y)+1):await Dp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await w70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)dE({name:D.name,status:"ready",port:D.port});Op();let F=vs8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ap0(U.stdout),ap0(U.stderr);Lp(G),dE({name:"Vite",status:"ready",port:Number(Y)}),dE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (AZ0(),PZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var ep0=L(()=>{pp0();iE();rp0()});var z70;var $n0=L(()=>{z70={name:"decocms",version:"4.303.11",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 bs8,Text as na1}from"ink";import{jsx as ys8,jsxs as ta1}from"react/jsx-runtime";function oa1({version:$}){return ta1(bs8,{flexDirection:"column",marginTop:1,children:[iZ0.map((Z,X)=>ys8(na1,{color:pZ0[X],children:Z},X)),ta1(na1,{dimColor:!0,children:[" v",$]})]})}var ra1=L(()=>{Zp()});import{Box as pE,Text as HO}from"ink";import{Spinner as gs8}from"@inkjs/ui";import{jsx as XG,jsxs as zy}from"react/jsx-runtime";function aa1({status:$}){if($==="pending")return XG(gs8,{label:""});return XG(HO,{color:"green",children:"\u2713"})}function hs8($){return`${$.name}: ${$.port||"...."}`}function sa1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return zy(pE,{flexDirection:"column",paddingBottom:1,children:[XG(oa1,{version:z70.version}),XG(pE,{marginBottom:1,children:XG(HO,{dimColor:!0,children:"\u2500".repeat(80)})}),XG(pE,{children:zy(HO,{dimColor:!0,children:["Home: ",X]})}),zy(pE,{gap:2,children:[$.map((Y)=>zy(pE,{gap:1,children:[XG(HO,{children:hs8(Y)}),XG(aa1,{status:Y.status})]},Y.name)),zy(pE,{gap:1,children:[XG(HO,{children:"Migrations"}),XG(aa1,{status:Z})]})]}),XG(pE,{children:Q?zy(HO,{children:["Open in browser: ",XG(HO,{color:"cyan",children:Q})]}):XG(HO,{dimColor:!0,children:"Starting..."})})]})}var ea1=L(()=>{$n0();ra1()});import{Box as us8,Text as wp}from"ink";import{jsx as Zn0,jsxs as Xn0}from"react/jsx-runtime";function cs8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function $s1({logs:$}){return Zn0(us8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Zn0(wp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Xn0(wp,{children:[Xn0(wp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Zn0(wp,{color:cs8(Z.status),children:Z.status}),Xn0(wp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Zs1=()=>{};var Qn0={};Z0(Qn0,{App:()=>ds8});import{Box as ls8}from"ink";import{useSyncExternalStore as ms8}from"react";import{jsx as Xs1,jsxs as is8}from"react/jsx-runtime";function ds8({home:$}){let Z=ms8(op0,tp0);return is8(ls8,{flexDirection:"column",children:[Xs1(sa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Xs1($s1,{logs:Z.logs})]})}var Yn0=L(()=>{ea1();Zs1();iE()});var m3="thread-gate",NN="decopilot-hosted-harness",UN="decopilot-hosted-harness-sandboxed",EJ="automations",FO="background-tools",nE="task-board-github-reads",tE="jira-push";var Qs1="9";function Ys1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Qs1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Gs1=()=>{};import ps8 from"pg";async function Ks1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=ns8}=$,Y=$.log??((W)=>console.log(W)),G=new ps8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Js1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(ts8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Js1.toString()])}catch{}await G.end().catch(()=>{})}}var Js1=8314027461559302n,ns8=600000,ts8=500;var Ws1=L(()=>{J4()});function os8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Gn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Hs1(){let $=os8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Gn0($,"--cpu-prof-dir")??process.cwd(),name:Gn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Gn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Fs1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=uE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),P70=setInterval(()=>void Z().catch(()=>{}),$),P70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(P70)clearInterval(P70)}}var P70;var Ns1=()=>{};import*as rs8 from"bun:jsc";function Us1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{as8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ss8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var as8,ss8;var Bs1=L(()=>{({startSamplingProfiler:as8,samplingProfilerStackTraces:ss8}=rs8)});function Os1(){Hs1();let $=[Fs1(),Cn1(),Us1()];return()=>{for(let Z of $)Z()}}var Ls1=L(()=>{Cl0();Ns1();Bs1()});var oE=v((Ds1)=>{Object.defineProperty(Ds1,"__esModule",{value:!0});Ds1.RepublishHeaders=Ds1.DirectMsgHeaders=Ds1.JsHeaders=Ds1.AdvisoryKind=void 0;Ds1.isOrderedPushConsumerOptions=es8;Ds1.isPullConsumer=$e8;Ds1.isPushConsumer=Ze8;Ds1.isBoundPushConsumerOptions=Xe8;function es8($){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 $e8($){return $.isPullConsumer()}function Ze8($){return $.isPushConsumer()}function Xe8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ds1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ds1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ds1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ds1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var QG=v((Es1)=>{Object.defineProperty(Es1,"__esModule",{value:!0});Es1.TD=Es1.TE=Es1.Empty=void 0;Es1.encode=Ne8;Es1.decode=Ue8;Es1.Empty=new Uint8Array(0);Es1.TE=new TextEncoder;Es1.TD=new TextDecoder;function Fe8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Ne8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Es1.TE.encode($[X]));if(Z.length===0)return Es1.Empty;if(Z.length===1)return Z[0];return Fe8(...Z)}function Ue8($){if(!$||$.length===0)return"";return Es1.TD.decode($)}});var YG=v((Ps1)=>{Object.defineProperty(Ps1,"__esModule",{value:!0});Ps1.errors=Ps1.PermissionViolationError=Ps1.NoRespondersError=Ps1.TimeoutError=Ps1.RequestError=Ps1.ProtocolError=Ps1.ConnectionError=Ps1.DrainingConnectionError=Ps1.ClosedConnectionError=Ps1.AuthorizationError=Ps1.UserAuthenticationExpiredError=Ps1.InvalidOperationError=Ps1.InvalidArgumentError=Ps1.InvalidSubjectError=void 0;class Kn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Ps1.InvalidSubjectError=Kn0;class A70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new A70(`${$} ${Z}`,X)}}Ps1.InvalidArgumentError=A70;class Wn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Ps1.InvalidOperationError=Wn0;class T70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new T70($);return null}}Ps1.UserAuthenticationExpiredError=T70;class R70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new R70($);return null}}Ps1.AuthorizationError=R70;class Hn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Ps1.ClosedConnectionError=Hn0;class Fn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Ps1.DrainingConnectionError=Fn0;class Nn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Ps1.ConnectionError=Nn0;class Un0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Ps1.ProtocolError=Un0;class Bn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof I70}}Ps1.RequestError=Bn0;class On0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Ps1.TimeoutError=On0;class I70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Ps1.NoRespondersError=I70;class q70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new q70($,X,Q,Y)}}Ps1.PermissionViolationError=q70;Ps1.errors={AuthorizationError:R70,ClosedConnectionError:Hn0,ConnectionError:Nn0,DrainingConnectionError:Fn0,InvalidArgumentError:A70,InvalidOperationError:Wn0,InvalidSubjectError:Kn0,NoRespondersError:I70,PermissionViolationError:q70,ProtocolError:Un0,RequestError:Bn0,TimeoutError:On0,UserAuthenticationExpiredError:T70}});var d3=v((qs1)=>{Object.defineProperty(qs1,"__esModule",{value:!0});qs1.SimpleMutex=qs1.Perf=void 0;qs1.extend=ke8;qs1.render=Se8;qs1.timeout=Ce8;qs1.delay=_e8;qs1.deadline=ve8;qs1.deferred=Dn0;qs1.debugDeferred=xe8;qs1.shuffle=fe8;qs1.collect=be8;qs1.jitter=Is1;qs1.backoff=ye8;qs1.nanos=ge8;qs1.millis=he8;qs1.randomToken=le8;var Ve8=QG(),Ln0=YG();function ke8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Se8($){return Ve8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Ce8($,Z=!0){let X=Z?new Ln0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ln0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function _e8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ve8($,Z=1000){let X=Dn0(),Q=setTimeout(()=>{X.reject(new Ln0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Dn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function xe8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function fe8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function be8($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ts1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}qs1.Perf=Ts1;class Rs1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Dn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}qs1.SimpleMutex=Rs1;function Is1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function ye8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Is1(X>Z?$[Z]:$[X])}}}function ge8($){return $*1e6}function he8($){return Math.floor($/1e6)}var ue8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",BN=new Uint8Array(62);for(let $=0;$<62;$++)BN[$]=ue8.charCodeAt($);var ce8=218340105584896;function le8(){let $=Math.floor(Math.random()*ce8),Z=$%62,X=BN[Z];$=($-Z)/62,Z=$%62;let Q=BN[Z];$=($-Z)/62,Z=$%62;let Y=BN[Z];$=($-Z)/62,Z=$%62;let G=BN[Z];$=($-Z)/62,Z=$%62;let J=BN[Z];$=($-Z)/62,Z=$%62;let K=BN[Z];$=($-Z)/62,Z=$%62;let W=BN[Z];$=($-Z)/62;let H=BN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var xs1=v((_s1)=>{Object.defineProperty(_s1,"__esModule",{value:!0});_s1.nuid=_s1.NuidImpl=void 0;var Y04="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",NO=62,V70=12,Ss1=10,Vs1=33,G04=333,ks1=V70+Ss1,En0=new Uint8Array(NO);for(let $=0;$<NO;$++)En0[$]=Y04.charCodeAt($);var M70=4294967296,Cs1=BigInt(NO)**BigInt(Ss1),Ep=Number(Cs1/(1n<<32n)),wn0=Number(Cs1%(1n<<32n));function J04($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function K04($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J04($)}class jn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ks1),this.cbuf=new Uint8Array(V70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ep+1)),this.seqLo=Math.floor(Math.random()*M70);while($++<8&&this.seqHi===Ep&&this.seqLo>=wn0);if(this.seqHi===Ep&&this.seqLo>=wn0)this.seqLo=0;this.inc=Math.random()*(G04-Vs1)+Vs1|0}setPre(){K04(this.cbuf);for(let $=0;$<V70;$++)this.buf[$]=En0[this.cbuf[$]%NO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ks1-1;X>=V70;X--){let Q=Math.floor($/NO),G=($-Q*NO)*M70+Z,J=Math.floor(G/NO),K=G-J*NO;this.buf[X]=En0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=M70)this.seqLo-=M70,this.seqHi+=1;if(this.seqHi>Ep||this.seqHi===Ep&&this.seqLo>=wn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}_s1.NuidImpl=jn0;_s1.nuid=new jn0});var gs1=v((bs1)=>{Object.defineProperty(bs1,"__esModule",{value:!0});bs1.nuid=bs1.Nuid=void 0;var fs1=xs1();bs1.Nuid=fs1.NuidImpl;bs1.nuid=fs1.nuid});var S70=v((k70)=>{Object.defineProperty(k70,"__esModule",{value:!0});k70.nuid=k70.Nuid=void 0;var hs1=gs1();Object.defineProperty(k70,"Nuid",{enumerable:!0,get:function(){return hs1.Nuid}});Object.defineProperty(k70,"nuid",{enumerable:!0,get:function(){return hs1.nuid}})});var UO=v((us1)=>{Object.defineProperty(us1,"__esModule",{value:!0});us1.DEFAULT_HOST=us1.DEFAULT_PORT=us1.Match=void 0;us1.syncIterator=B04;us1.createInbox=O04;var N04=S70(),U04=YG();us1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function B04($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function O04($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U04.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${N04.nuid.next()}`}us1.DEFAULT_PORT=4222;us1.DEFAULT_HOST="127.0.0.1"});var jp=v((ds1)=>{Object.defineProperty(ds1,"__esModule",{value:!0});ds1.DataBuffer=void 0;var ls1=QG();class ms1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ls1.TE.encode($)}static toAscii($){return ls1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ds1.DataBuffer=ms1});var rE=v((ns1)=>{Object.defineProperty(ns1,"__esModule",{value:!0});ns1.LF=ns1.CR=ns1.CRLF=ns1.CR_LF_LEN=ns1.CR_LF=void 0;ns1.setTransportFactory=A04;ns1.defaultPort=T04;ns1.getUrlParseFn=R04;ns1.newTransport=I04;ns1.getResolveFn=q04;ns1.protoLen=ps1;ns1.extractProtocolMessage=M04;var j04=QG(),z04=UO(),P04=jp(),GG;function A04($){GG=$}function T04(){return GG!==void 0&&GG.defaultPort!==void 0?GG.defaultPort:z04.DEFAULT_PORT}function R04(){return GG!==void 0&&GG.urlParseFn?GG.urlParseFn:void 0}function I04(){if(!GG||typeof GG.factory!=="function")throw Error("transport fn is not set");return GG.factory()}function q04(){return GG!==void 0&&GG.dnsResolveFn?GG.dnsResolveFn:void 0}ns1.CR_LF=`\r
|
|
1493
1493
|
`;ns1.CR_LF_LEN=ns1.CR_LF.length;ns1.CRLF=P04.DataBuffer.fromAscii(ns1.CR_LF);ns1.CR=new Uint8Array(ns1.CRLF)[0];ns1.LF=new Uint8Array(ns1.CRLF)[1];function ps1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===ns1.CR&&$[X]===ns1.LF)return X+1}return 0}function M04($){let Z=ps1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return j04.TD.decode(Q)}return""}});var Rn0=v((Ze1)=>{Object.defineProperty(Ze1,"__esModule",{value:!0});Ze1.ipV4=ss1;Ze1.isIP=g04;Ze1.parseIP=es1;var zp=4,aE=16,C70=48,as1=57,os1=65,b04=70,rs1=97,y04=102,Tn0=16777215;function ss1($,Z,X,Q){let Y=new Uint8Array(aE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function g04($){return es1($)!==void 0}function es1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return $e1($);case":":return h04($)}return}function $e1($){let Z=new Uint8Array(zp);for(let X=0;X<zp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=u04($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return ss1(Z[0],Z[1],Z[2],Z[3])}function h04($){let Z=new Uint8Array(aE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<aE){let{n:Y,c:G,ok:J}=c04($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=aE-zp)return;if(Q+zp>aE)return;let K=$e1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=zp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<aE){if(X<0)return;let Y=aE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function u04($){let Z=0,X=0;for(Z=0;Z<$.length&&C70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=as1;Z++)if(X=X*10+($.charCodeAt(Z)-C70),X>=Tn0)return{n:Tn0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function c04($){let Z=0,X=0;for(X=0;X<$.length;X++){if(C70<=$.charCodeAt(X)&&$.charCodeAt(X)<=as1)Z*=16,Z+=$.charCodeAt(X)-C70;else if(rs1<=$.charCodeAt(X)&&$.charCodeAt(X)<=y04)Z*=16,Z+=$.charCodeAt(X)-rs1+10;else if(os1<=$.charCodeAt(X)&&$.charCodeAt(X)<=b04)Z*=16,Z+=$.charCodeAt(X)-os1+10;else break;if(Z>=Tn0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Sn0=v((Qe1)=>{Object.defineProperty(Qe1,"__esModule",{value:!0});Qe1.Servers=Qe1.ServerImpl=void 0;Qe1.isIPV4OrHostname=Xe1;Qe1.hostPort=kn0;var In0=rE(),qn0=d3(),Mn0=Rn0(),i04=UO(),p04=YG();function Xe1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Vn0($){return!Xe1($)}function n04($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function kn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=n04($),Vn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Vn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):i04.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Py{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=kn0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Mn0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Vn0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Py(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,qn0.shuffle)(Z);return this.resolves=Z,Z}}Qe1.ServerImpl=Py;class _70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw p04.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,In0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=kn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Py(Y))}if(this.randomize)(0,qn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Mn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,In0.getUrlParseFn)();$=X?X($):$;let Q=new Py($,Z);if((0,Mn0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return _70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return _70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,In0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Py(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,qn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Qe1.Servers=_70});var v70=v((Ke1)=>{Object.defineProperty(Ke1,"__esModule",{value:!0});Ke1.QueuedIteratorImpl=void 0;var Cn0=d3(),Ge1=YG();class Je1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Cn0.deferred)(),this.yields=[],this.iterClosed=(0,Cn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ge1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ge1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Cn0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Ke1.QueuedIteratorImpl=Je1});var _n0=v((Ne1)=>{Object.defineProperty(Ne1,"__esModule",{value:!0});Ne1.MuxSubscription=void 0;var a04=UO(),He1=YG();class Fe1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,a04.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new He1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new He1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ne1.MuxSubscription=Fe1});var vn0=v((Oe1)=>{Object.defineProperty(Oe1,"__esModule",{value:!0});Oe1.Heartbeat=void 0;var s04=d3();class Be1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,s04.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Oe1.Heartbeat=Be1});var bn0=v((je1)=>{Object.defineProperty(je1,"__esModule",{value:!0});je1.DenoBuffer=je1.MAX_SIZE=je1.AssertionError=void 0;je1.assert=we1;je1.concat=Ee1;je1.append=$14;je1.readAll=Z14;je1.writeAll=X14;var e04=QG();class xn0 extends Error{constructor($){super($);this.name="AssertionError"}}je1.AssertionError=xn0;function we1($,Z="Assertion failed."){if(!$)throw new xn0(Z)}var De1=32768;je1.MAX_SIZE=4294967294;function x70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Ee1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function $14($,Z){return Ee1($,Uint8Array.of(Z))}class fn0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){we1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=x70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(e04.TE.encode($))}write($){let Z=this._grow($.byteLength);return x70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)x70(this._buf.subarray(this._off),this._buf);else if(Q+$>je1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,je1.MAX_SIZE));x70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,je1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(De1);while(!0){let Q=this.capacity-this.length<De1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}je1.DenoBuffer=fn0;function Z14($){let Z=new fn0;return Z.readFrom($),Z.bytes()}function X14($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var hn0=v((Re1)=>{Object.defineProperty(Re1,"__esModule",{value:!0});Re1.cc=Re1.State=Re1.Parser=Re1.Kind=void 0;Re1.describe=H14;var yn0=bn0(),gn0=QG();Re1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function H14($){let Z,X="";switch($.kind){case Re1.Kind.MSG:Z="MSG";break;case Re1.Kind.OK:Z="OK";break;case Re1.Kind.ERR:Z="ERR",X=gn0.TD.decode($.data);break;case Re1.Kind.PING:Z="PING";break;case Re1.Kind.PONG:Z="PONG";break;case Re1.Kind.INFO:Z="INFO",X=gn0.TD.decode($.data)}return`${Z}: ${X}`}function Pe1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Ae1=48,F14=57,Ay=67108864;class Te1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Re1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Re1.State.OP_START:switch(X){case Re1.cc.M:case Re1.cc.m:this.state=Re1.State.OP_M,this.hdr=-1,this.ma=Pe1();break;case Re1.cc.H:case Re1.cc.h:this.state=Re1.State.OP_H,this.hdr=0,this.ma=Pe1();break;case Re1.cc.P:case Re1.cc.p:this.state=Re1.State.OP_P;break;case Re1.cc.PLUS:this.state=Re1.State.OP_PLUS;break;case Re1.cc.MINUS:this.state=Re1.State.OP_MINUS;break;case Re1.cc.I:case Re1.cc.i:this.state=Re1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_H:switch(X){case Re1.cc.M:case Re1.cc.m:this.state=Re1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_M:switch(X){case Re1.cc.S:case Re1.cc.s:this.state=Re1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MS:switch(X){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MSG:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MSG_SPC:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.MSG_ARG,this.as=Z}break;case Re1.State.MSG_ARG:switch(X){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Re1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Re1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Re1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Re1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Re1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Re1.State.MSG_END;break;case Re1.State.MSG_END:switch(X){case Re1.cc.NL:this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break;default:continue}break;case Re1.State.OP_PLUS:switch(X){case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PLUS_O:switch(X){case Re1.cc.K:case Re1.cc.k:this.state=Re1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PLUS_OK:switch(X){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.OK}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_MINUS:switch(X){case Re1.cc.E:case Re1.cc.e:this.state=Re1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_E:switch(X){case Re1.cc.R:case Re1.cc.r:this.state=Re1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ER:switch(X){case Re1.cc.R:case Re1.cc.r:this.state=Re1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ERR:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_MINUS_ERR_SPC:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.MINUS_ERR_ARG,this.as=Z}break;case Re1.State.MINUS_ERR_ARG:switch(X){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Re1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Re1.State.OP_P:switch(X){case Re1.cc.I:case Re1.cc.i:this.state=Re1.State.OP_PI;break;case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PO:switch(X){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PON:switch(X){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PONG:switch(X){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.PONG}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_PI:switch(X){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PIN:switch(X){case Re1.cc.G:case Re1.cc.g:this.state=Re1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_PING:switch(X){case Re1.cc.NL:this.dispatcher.push({kind:Re1.Kind.PING}),this.drop=0,this.state=Re1.State.OP_START;break}break;case Re1.State.OP_I:switch(X){case Re1.cc.N:case Re1.cc.n:this.state=Re1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_IN:switch(X){case Re1.cc.F:case Re1.cc.f:this.state=Re1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INF:switch(X){case Re1.cc.O:case Re1.cc.o:this.state=Re1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INFO:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:this.state=Re1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Re1.State.OP_INFO_SPC:switch(X){case Re1.cc.SPACE:case Re1.cc.TAB:continue;default:this.state=Re1.State.INFO_ARG,this.as=Z}break;case Re1.State.INFO_ARG:switch(X){case Re1.cc.CR:this.drop=1;break;case Re1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Re1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Re1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Re1.State.MSG_ARG||this.state===Re1.State.MINUS_ERR_ARG||this.state===Re1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new yn0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Re1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new yn0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new yn0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Re1.cc.SPACE:case Re1.cc.TAB:case Re1.cc.CR:case Re1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Ay);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Ay);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${gn0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Re1.cc.SPACE:case Re1.cc.TAB:case Re1.cc.CR:case Re1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Ay),this.ma.size=this.protoParseInt(Z[3],Ay);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Ay),this.ma.size=this.protoParseInt(Z[4],Ay);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Ae1||$[Q]>F14)return-1;X=X*10+($[Q]-Ae1)}return Z!==void 0&&X>Z?-1:X}}Re1.Parser=Te1;Re1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};Re1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var y70=v((qe1)=>{Object.defineProperty(qe1,"__esModule",{value:!0});qe1.MsgHdrsImpl=void 0;qe1.canonicalMIMEHeaderKey=cn0;qe1.headers=B14;var Ie1=QG(),i3=UO(),b70=YG();function cn0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw b70.InvalidArgumentError.format("header",`'${$[U]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;N[U]=B,F=B==45}return String.fromCharCode(...N)}function B14($=0,Z=""){if($===0&&Z!=="")throw b70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw b70.InvalidArgumentError.format("description","is required");return new Ty($,Z)}var un0="NATS/1.0";class Ty{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Ty,Q=Ie1.TD.decode($).split(`\r
|
|
1494
1494
|
`),Y=Q[0];if(Y!==un0){let G=Y.replace(un0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=un0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1495
1495
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -1798,7 +1798,7 @@ ${Y}`}return $}});var $G0=v((ij)=>{var vO4=ij&&ij.__createBinding||(Object.creat
|
|
|
1798
1798
|
${S$.ref("meta_json")}::jsonb->'mcp.studio'->>'verified',
|
|
1799
1799
|
${S$.ref("meta_json")}::jsonb->'mcp.mesh'->>'verified'
|
|
1800
1800
|
) = 'true' THEN 1 ELSE 0 END
|
|
1801
|
-
) desc`}class Ph{db;constructor($){this.db=$}async create($){let Z=new Date().toISOString(),X=X3$($._meta??{}),Q=TG0(X),Y=ZY(Q.tags),G=ZY(Q.categories),J={id:$.id,organization_id:$.organization_id,title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:JSON.stringify(X),tags:PG0(Y),categories:PG0(G),is_public:$.is_public?1:0,is_unlisted:$.is_unlisted?1:0,created_at:Z,updated_at:Z,created_by:$.created_by??null};await this.db.insertInto("private_registry_item").values(J).execute();let K=await this.findById($.organization_id,$.id);if(!K)throw Error(`Failed to create registry item "${$.id}"`);return K}async findById($,Z){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName($,Z){let X=await this.findById($,Z);if(X)return X;let Q=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("title","=",Z).executeTakeFirst();return Q?this.deserialize(Q):null}async update($,Z,X){let Q=await this.findById($,Z);if(!Q)throw Error(`Registry item not found: ${Z}`);let Y=X3$(X._meta??Q._meta??{}),G=TG0(Y),J=ZY(G.tags),K=ZY(G.categories),W={updated_at:new Date().toISOString()};if(X.title!==void 0)W.title=X.title;if(X.description!==void 0)W.description=X.description;if(X.server!==void 0)W.server_json=JSON.stringify(X.server);if(X._meta!==void 0)W.meta_json=JSON.stringify(Y);if(X._meta!==void 0)W.tags=PG0(J),W.categories=PG0(K);if(X.is_public!==void 0)W.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)W.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(W).where("organization_id","=",$).where("id","=",Z).execute();let H=await this.findById($,Z);if(!H)throw Error(`Registry item not found after update: ${Z}`);return H}async delete($,Z){let X=await this.findById($,Z);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",$).where("id","=",Z).execute(),X}async list($,Z={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$);if(!Z.includeUnlisted)X=X.where("is_unlisted","=",0);let Q=ZY(Z.tags);if(Q.length>0)X=X.where(AG0("tags",Q));let Y=ZY(Z.categories);if(Y.length>0)X=X.where(AG0("categories",Y));if(Z.where)X=X.where(W01(Z.where));let K=(await this.db.selectFrom(X.as("filtered")).select(S$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;X=X.orderBy(Q3$()).orderBy("created_at","desc");let H=jG0(Z.cursor)??Z.offset??0,F=Z.limit??24;X=X.limit(F).offset(H);let U=(await X.execute()).map((D)=>this.deserialize(D)),B=H+F<K,O=B?EG0(H+F):void 0;return{items:U,totalCount:K,hasMore:B,nextCursor:O}}async listPublic($,Z={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("is_public","=",1).where("is_unlisted","=",0),Q=ZY(Z.tags);if(Q.length>0)X=X.where(AG0("tags",Q));let Y=ZY(Z.categories);if(Y.length>0)X=X.where(AG0("categories",Y));if(Z.where)X=X.where(W01(Z.where));let K=(await this.db.selectFrom(X.as("filtered")).select(S$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;X=X.orderBy(Q3$()).orderBy("created_at","desc");let H=jG0(Z.cursor)??Z.offset??0,F=Z.limit??24;X=X.limit(F).offset(H);let U=(await X.execute()).map((D)=>this.deserialize(D)),B=H+F<K,O=B?EG0(H+F):void 0;return{items:U,totalCount:K,hasMore:B,nextCursor:O}}async getFilters($,Z){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",$);if(Z?.publicOnly)X=X.where("is_public","=",1);if(!Z?.includeUnlisted)X=X.where("is_unlisted","=",0);let Q=await X.execute(),Y=new Map,G=new Map;for(let K of Q){for(let W of oj(K.tags))Y.set(W,(Y.get(W)??0)+1);for(let W of oj(K.categories))G.set(W,(G.get(W)??0)+1)}let J=(K)=>Array.from(K.entries()).map(([W,H])=>({value:W,count:H})).sort((W,H)=>W.value.localeCompare(H.value));return{tags:J(Y),categories:J(G)}}async search($,Z={},X){let Q=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",$).orderBy("created_at","desc");if(X?.publicOnly)Q=Q.where("is_public","=",1);if(!X?.includeUnlisted)Q=Q.where("is_unlisted","=",0);let Y=await Q.execute(),G=Z.query?.trim().toLowerCase(),J=ZY(Z.tags),K=ZY(Z.categories),W=Y.filter((w)=>{if(G){let E=zG0(w.server_json,{}),j=zG0(w.meta_json,{}),z=TG0(j).short_description??"";if(![w.id,w.title,w.description??"",E.name??"",E.description??"",z].join(" ").toLowerCase().includes(G))return!1}if(J.length>0){let E=ZY(oj(w.tags));if(!J.every((j)=>E.includes(j)))return!1}if(K.length>0){let E=ZY(oj(w.categories));if(!K.every((j)=>E.includes(j)))return!1}return!0}),F=jG0(Z.cursor)??0,N=Z.limit??20,U=W.slice(F,F+N),B=F+N<W.length,O=B?EG0(F+N):void 0;return{items:U.map((w)=>({id:w.id,title:w.title,tags:oj(w.tags),categories:oj(w.categories),is_public:w.is_public===1,is_unlisted:w.is_unlisted===1})),totalCount:W.length,hasMore:B,nextCursor:O}}deserialize($){let Z=zG0($.server_json,{}),X=zG0($.meta_json,{});return{id:$.id,name:typeof Z.name==="string"?Z.name:void 0,title:$.title,description:$.description,_meta:X,server:Z,is_public:$.is_public===1,is_unlisted:$.is_unlisted===1,created_at:$.created_at,updated_at:$.updated_at,...$.created_by?{created_by:$.created_by}:{}}}}var Qw4,Yw4,Gw4;var H01=L(()=>{Qw4=new Set(["id","title","description","is_public","is_unlisted","created_at","updated_at","created_by"]),Yw4=new Set(["is_public","is_unlisted"]),Gw4={_meta:"meta_json",server:"server_json"}});import{randomUUID as Ww4}from"crypto";function Y3$($,Z){if(!$)return Z;try{return JSON.parse($)}catch{return Z}}function G3$($){if(!$)return null;let Z=YH($);return JSON.stringify(Z?wG0($,Z):$)}class Ah{db;constructor($){this.db=$}async createOrUpdate($){let Z=new Date().toISOString(),X=await this.findPendingByRequestedId($.organization_id,$.requested_id);if(X){let J={title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:G3$($._meta),requester_name:$.requester_name??null,requester_email:$.requester_email??null,updated_at:Z};await this.db.updateTable("private_registry_publish_request").set(J).where("organization_id","=",$.organization_id).where("id","=",X.id).execute();let K=await this.findById($.organization_id,X.id);if(!K)throw Error("Failed to update publish request");return K}let Q=Ww4(),Y={id:Q,organization_id:$.organization_id,requested_id:$.requested_id,status:"pending",title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:G3$($._meta),requester_name:$.requester_name??null,requester_email:$.requester_email??null,reviewer_notes:null,created_at:Z,updated_at:Z};await this.db.insertInto("private_registry_publish_request").values(Y).execute();let G=await this.findById($.organization_id,Q);if(!G)throw Error("Failed to create publish request");return G}async findPendingByRequestedId($,Z){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$).where("requested_id","=",Z).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById($,Z){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async list($,Z={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$),Q=this.db.selectFrom("private_registry_publish_request").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",$);if(Z.status)X=X.where("status","=",Z.status),Q=Q.where("status","=",Z.status);let Y=await Q.executeTakeFirst(),G=Number(Y?.count??0),J=Z.sortBy??"created_at",K=Z.sortDirection??"desc";if(J==="title")X=X.orderBy("title",K);else X=X.orderBy("created_at",K);return{items:(await X.limit(Z.limit??24).offset(Z.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:G}}async updateStatus($,Z,X,Q){let Y={status:X,updated_at:new Date().toISOString(),reviewer_notes:Q??null};await this.db.updateTable("private_registry_publish_request").set(Y).where("organization_id","=",$).where("id","=",Z).execute();let G=await this.findById($,Z);if(!G)throw Error(`Publish request not found: ${Z}`);return G}async countPending($){let Z=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",$).where("status","=","pending").executeTakeFirst();return Number(Z?.count??0)}async delete($,Z){let X=await this.findById($,Z);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",$).where("id","=",Z).execute(),X}deserialize($){return{id:$.id,organization_id:$.organization_id,requested_id:$.requested_id??null,status:$.status,title:$.title,description:$.description,_meta:Y3$($.meta_json,{}),server:Y3$($.server_json,{name:""}),requester_name:$.requester_name,requester_email:$.requester_email,reviewer_notes:$.reviewer_notes,created_at:$.created_at,updated_at:$.updated_at}}}var F01=()=>{};import{createHash as Hw4,randomBytes as Fw4,randomUUID as Nw4}from"crypto";function J3$($){return Hw4("sha256").update($).digest("hex")}function Uw4(){return`prk_${Fw4(32).toString("hex")}`}class Th{db;constructor($){this.db=$}async generate($,Z){let X=Nw4(),Q=Uw4(),Y=await J3$(Q),G=Q.slice(0,12),J=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:$,name:Z,key_hash:Y,prefix:G,created_at:J}).execute(),{entity:{id:X,organization_id:$,name:Z,prefix:G,created_at:J},key:Q}}async list($){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",$).orderBy("created_at","desc").execute()}async revoke($,Z){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",$).where("id","=",Z).execute()).length>0}async validate($,Z){let X=await J3$(Z),Q=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",$).where("key_hash","=",X).executeTakeFirst();return Boolean(Q)}async hasKeys($){let Z=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",$).executeTakeFirst();return Number(Z?.count??0)>0}}var N01=()=>{};import{randomUUID as K3$}from"crypto";function W3$($,Z){if(!$)return Z;try{return JSON.parse($)}catch{return Z}}class RG0{db;constructor($){this.db=$}async create($){let Z=K3$(),X=new Date().toISOString(),Q={id:Z,organization_id:$.organization_id,status:$.status??"pending",config_snapshot:$.config_snapshot?JSON.stringify($.config_snapshot):null,total_items:$.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:$.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(Q).execute();let Y=await this.findById($.organization_id,Z);if(!Y)throw Error(`Failed to create monitor run ${Z}`);return Y}async findById($,Z){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserializeRun(X):null}async list($,Z={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",$),Q=this.db.selectFrom("private_registry_monitor_run").select((K)=>K.fn.countAll().as("count")).where("organization_id","=",$);if(Z.status)X=X.where("status","=",Z.status),Q=Q.where("status","=",Z.status);let Y=await Q.executeTakeFirst(),G=Number(Y?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Z.limit??24).offset(Z.offset??0).execute()).map((K)=>this.deserializeRun(K)),totalCount:G}}async update($,Z,X){let Q={};if(X.total_items!==void 0)Q.total_items=X.total_items;if(X.status!==void 0)Q.status=X.status;if(X.tested_items!==void 0)Q.tested_items=X.tested_items;if(X.passed_items!==void 0)Q.passed_items=X.passed_items;if(X.failed_items!==void 0)Q.failed_items=X.failed_items;if(X.skipped_items!==void 0)Q.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)Q.current_item_id=X.current_item_id;if(X.started_at!==void 0)Q.started_at=X.started_at;if(X.finished_at!==void 0)Q.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(Q).where("organization_id","=",$).where("id","=",Z).execute();let Y=await this.findById($,Z);if(!Y)throw Error(`Monitor run not found: ${Z}`);return Y}deserializeRun($){return{id:$.id,organization_id:$.organization_id,status:$.status,config_snapshot:W3$($.config_snapshot,null),total_items:Number($.total_items??0),tested_items:Number($.tested_items??0),passed_items:Number($.passed_items??0),failed_items:Number($.failed_items??0),skipped_items:Number($.skipped_items??0),current_item_id:$.current_item_id,started_at:$.started_at,finished_at:$.finished_at,created_at:$.created_at}}}class IG0{db;constructor($){this.db=$}async create($){let Z=K3$(),X=new Date().toISOString(),Q={id:Z,run_id:$.run_id,organization_id:$.organization_id,item_id:$.item_id,item_title:$.item_title,status:$.status,error_message:$.error_message??null,connection_ok:$.connection_ok?1:0,tools_listed:$.tools_listed?1:0,tool_results:$.tool_results?JSON.stringify($.tool_results):null,agent_summary:$.agent_summary??null,duration_ms:$.duration_ms??0,action_taken:$.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(Q).execute();let Y=await this.findById($.organization_id,Z);if(!Y)throw Error("Failed to create test result");return Y}async findById($,Z){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async listByRun($,Z,X={}){let Q=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",$).where("run_id","=",Z),Y=this.db.selectFrom("private_registry_monitor_result").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",$).where("run_id","=",Z);if(X.status)Q=Q.where("status","=",X.status),Y=Y.where("status","=",X.status);let G=await Y.executeTakeFirst(),J=Number(G?.count??0);return{items:(await Q.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((W)=>this.deserialize(W)),totalCount:J}}async update($,Z,X){let Q={};if(X.status!==void 0)Q.status=X.status;if(X.error_message!==void 0)Q.error_message=X.error_message;if(X.connection_ok!==void 0)Q.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)Q.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)Q.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)Q.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)Q.duration_ms=X.duration_ms;if(X.action_taken!==void 0)Q.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(Q).where("organization_id","=",$).where("id","=",Z).execute();let Y=await this.findById($,Z);if(!Y)throw Error(`Monitor result not found: ${Z}`);return Y}deserialize($){return{id:$.id,run_id:$.run_id,organization_id:$.organization_id,item_id:$.item_id,item_title:$.item_title,status:$.status,error_message:$.error_message,connection_ok:$.connection_ok===1,tools_listed:$.tools_listed===1,tool_results:W3$($.tool_results,[]),agent_summary:$.agent_summary,duration_ms:Number($.duration_ms??0),action_taken:$.action_taken,tested_at:$.tested_at}}}var H3$=()=>{};import{randomUUID as Bw4}from"crypto";class qG0{db;constructor($){this.db=$}async findByItemId($,Z){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).where("item_id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async list($){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId($,Z){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).where("connection_id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async upsert($){let Z=await this.findByItemId($.organization_id,$.item_id),X=new Date().toISOString();if(!Z){let Y={id:Bw4(),organization_id:$.organization_id,item_id:$.item_id,connection_id:$.connection_id,auth_status:$.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(Y).execute()}else{let Y={connection_id:$.connection_id,auth_status:$.auth_status??Z.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(Y).where("organization_id","=",$.organization_id).where("item_id","=",$.item_id).execute()}let Q=await this.findByItemId($.organization_id,$.item_id);if(!Q)throw Error("Failed to save monitor connection");return Q}async updateAuthStatus($,Z,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",$).where("item_id","=",Z).execute(),this.findByItemId($,Z)}deserialize($){return{id:$.id,organization_id:$.organization_id,item_id:$.item_id,connection_id:$.connection_id,auth_status:$.auth_status,created_at:$.created_at,updated_at:$.updated_at}}}var F3$=()=>{};var N3$=L(()=>{H01();F01();N01();H3$();F3$()});class Ko{db;constructor($){this.db=$}async listOrgTags($){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",$).orderBy("name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async getTag($){let Z=await this.db.selectFrom("organization_tags").selectAll().where("id","=",$).executeTakeFirst();return Z?this.tagFromDbRow(Z):null}async getTagsByIds($){if($.length===0)return[];return(await this.db.selectFrom("organization_tags").selectAll().where("id","in",$).execute()).map((X)=>this.tagFromDbRow(X))}async getTagByName($,Z){let X=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",$).where("name","=",Z).executeTakeFirst();return X?this.tagFromDbRow(X):null}async createTag($,Z,X){let Q=r$("tag"),Y=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:Q,organization_id:$,name:Z,color:X??null,created_at:Y}).onConflict((J)=>J.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName($,Z);if(!G)throw Error(`Failed to create or retrieve tag: ${Z}`);return G}async deleteTag($){await this.db.deleteFrom("organization_tags").where("id","=",$).execute()}async getMemberTags($){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.color","organization_tags.created_at"]).where("member_tags.member_id","=",$).orderBy("organization_tags.name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async setMemberTags($,Z){await this.db.transaction().execute(async(X)=>{if(await X.deleteFrom("member_tags").where("member_id","=",$).execute(),Z.length>0){let Q=new Date().toISOString();await X.insertInto("member_tags").values(Z.map((Y)=>({id:r$("mtag"),member_id:$,tag_id:Y,created_at:Q}))).execute()}})}async addMemberTag($,Z){let X=new Date().toISOString();await this.db.insertInto("member_tags").values({id:r$("mtag"),member_id:$,tag_id:Z,created_at:X}).onConflict((Q)=>Q.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag($,Z){await this.db.deleteFrom("member_tags").where("member_id","=",$).where("tag_id","=",Z).execute()}async verifyMemberOrg($,Z){return await this.db.selectFrom("member").select("id").where("id","=",$).where("organizationId","=",Z).executeTakeFirst()!==void 0}async getUserTagsInOrg($,Z){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.color","organization_tags.created_at"]).where("member.userId","=",$).where("member.organizationId","=",Z).orderBy("organization_tags.name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async getMembersWithTags($){let Z=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",$).execute(),X=new Map;for(let Q of Z){if(!X.has(Q.memberId))X.set(Q.memberId,[]);if(Q.tagName)X.get(Q.memberId).push(Q.tagName)}return X}tagFromDbRow($){return{id:$.id,organizationId:$.organization_id,name:$.name,color:$.color??null,createdAt:$.created_at}}}var U01=L(()=>{iZ()});import{sql as Ow4}from"kysely";function U3$($){return{organizationId:$.organization_id,status:$.status,stripeCustomerId:$.stripe_customer_id,stripeSubscriptionId:$.stripe_subscription_id,currentPeriodEnd:$.current_period_end,lastStripeEventAt:$.last_stripe_event_at,freeTaskExecutions:$.free_task_executions,monthlyTaskExecutions:$.monthly_task_executions}}class GH{db;constructor($){this.db=$}async getBilling($){let Z=await this.db.selectFrom("organization_billing").selectAll().where("organization_id","=",$).executeTakeFirst();return Z?U3$(Z):null}async getBillingByStripeSubscriptionId($){let Z=await this.db.selectFrom("organization_billing").selectAll().where("stripe_subscription_id","=",$).executeTakeFirst();return Z?U3$(Z):null}async updateStripeState($,Z){return((await this.db.updateTable("organization_billing").set({...Z.stripeCustomerId!==void 0&&{stripe_customer_id:Z.stripeCustomerId},...Z.stripeSubscriptionId!==void 0&&{stripe_subscription_id:Z.stripeSubscriptionId},...Z.status!==void 0&&{status:Z.status},...Z.currentPeriodEnd!==void 0&&{current_period_end:Z.currentPeriodEnd},...Z.lastStripeEventAt!==void 0&&{last_stripe_event_at:Z.lastStripeEventAt},updated_at:new Date}).where("organization_id","=",$).executeTakeFirst()).numUpdatedRows??0n)>0n}async taskClaim($){let Z=await this.db.selectFrom("task_quota_claims").select(["run_count","state"]).where("task_board_item_id","=",$).executeTakeFirst();return Z?{runCount:Z.run_count,state:Z.state}:null}static liveClaimCount($,Z,X){return $.selectFrom("task_quota_claims").select((Q)=>Q.fn.countAll().as("count")).where("organization_id","=",Z).where("period_key","=",X).where("state","<>","released").executeTakeFirst().then((Q)=>Number(Q?.count??0))}async countTaskClaims($,Z){return await GH.liveClaimCount(this.db,$,Z)}async claimTaskUnderLimit($,Z,X,Q,Y){return await this.db.transaction().execute(async(G)=>{await G.insertInto("organization_billing").values({organization_id:$}).onConflict((W)=>W.column("organization_id").doNothing()).execute(),await G.selectFrom("organization_billing").select("organization_id").where("organization_id","=",$).forUpdate().executeTakeFirstOrThrow();let J=await G.selectFrom("task_quota_claims").select(["run_count","state"]).where("task_board_item_id","=",Z).executeTakeFirst();if(J&&J.run_count>=Y)return"runs_exhausted";let K=()=>GH.liveClaimCount(G,$,X);if(J&&J.state!=="released")return await G.updateTable("task_quota_claims").set({run_count:J.run_count+1}).where("task_board_item_id","=",Z).execute(),"rerun";if(await K()>=Q)return"exhausted";if(J)return await G.updateTable("task_quota_claims").set({state:"held",period_key:X,run_count:J.run_count+1}).where("task_board_item_id","=",Z).execute(),"claimed";return await G.insertInto("task_quota_claims").values({task_board_item_id:Z,organization_id:$,period_key:X,state:"held"}).execute(),"claimed"})}async releaseTaskClaim($,Z){return((await this.db.updateTable("task_quota_claims").set({state:"released"}).where("organization_id","=",$).where("task_board_item_id","=",Z).where("state","=","held").executeTakeFirst()).numUpdatedRows??0n)>0n}async rollbackTaskClaim($,Z,{releaseSlot:X}){await this.db.updateTable("task_quota_claims").set(()=>({...X?{state:"released"}:{},run_count:Ow4`greatest(run_count - 1, 0)`})).where("organization_id","=",$).where("task_board_item_id","=",Z).where("state","=","held").execute()}}var MG0=()=>{};class B01{db;constructor($){this.db=$}async findById($,Z){let X=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",$).where((Q)=>Q.exists(Q.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",$).where("m2.userId","=",Z))).executeTakeFirst();if(!X)return null;return{id:X.id,name:X.name,email:X.email,role:"",createdAt:X.createdAt,updatedAt:X.updatedAt,image:X.image??void 0}}}function O3$(){let $={};for(let Z of VG0){if(Z.id==="basic-usage")continue;$[Z.id]=!0}return $}function L01($){let Z=(G)=>{let J=$[G];return Array.isArray(J)?J:[]},X=Z("*").includes("*")||Z("self").includes("*"),Q=new Set;if(!X)for(let G of Object.values($)){if(!Array.isArray(G))continue;for(let J of G)Q.add(J)}let Y={};for(let G of VG0){if(G.id==="basic-usage")continue;Y[G.id]=X||G.tools.every((J)=>Q.has(J))}return Y}function rj(){let $={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],Tags:[],"AI Providers":[],Secrets:[],"File Configs":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[],Search:[],"Task Board":[],Jira:[]};for(let Z of O01)$[Z.category].push(Z);return $}var O01,VG0,B3$,Lw4,kG0;var Rh=L(()=>{O01=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_LIST",description:"List organization domain claims",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for the organization",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set a domain's join mode",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_VERIFY",description:"Verify a domain via DNS TXT record",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove an organization domain claim",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization",category:"Organizations"},{name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a request to join the organization",category:"Organizations"},{name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a request to join the organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the org subscription checkout",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_BILLING_PORTAL",description:"Open the Stripe billing portal",category:"Organizations"},{name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the org's auto-task quota usage",category:"Organizations"},{name:"INFRA_BILLING_SITES_LIST",description:"List the legacy deco.cx sites the org owns",category:"Organizations"},{name:"INFRA_BILLING_GET",description:"Get infra usage, plan and invoices for an owned site",category:"Organizations"},{name:"INFRA_BILLING_PORTAL",description:"Open the Stripe billing portal for an owned site",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"COMMERCE_DISCOVERY_SETUP",description:"Set up Commerce Discovery",category:"Connections"},{name:"COMMERCE_DISCOVERY_RUN",description:"Run Commerce Discovery",category:"Connections"},{name:"COMMERCE_DISCOVERY_BIND",description:"Bind Commerce Discovery data source",category:"Connections"},{name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read Commerce Discovery connection status",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_HEATMAP",description:"View tool-call volume by agent and tool",category:"Monitoring"},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"MONITORING_THREAD_USAGE",description:"View per-thread token usage and cost",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"USER_MODEL_PREFERENCES_GET",description:"Get the calling user's chat tier \u2192 model overrides",category:"Users"},{name:"USER_MODEL_PREFERENCES_UPDATE",description:"Set the calling user's chat tier \u2192 model overrides",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"AUTOMATION_RUN_STATS",description:"View aggregated run counts and token/cost for an automation",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info for one or more virtual MCPs",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_KEY_UPDATE",description:"Update AI provider API key label or credential",category:"AI Providers"},{name:"AI_PROVIDER_KEY_PREVIEW",description:"Get masked preview of AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_CONNECT",description:"Link your own Claude subscription with a setup token",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_STATUS",description:"Whether your Claude subscription is linked, and since when",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_DISCONNECT",description:"Unlink your Claude subscription",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"SECRET_CREATE",description:"Create a secret in the credential vault",category:"Secrets"},{name:"SECRET_LIST",description:"List secrets visible to the caller (no values returned)",category:"Secrets"},{name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration for the org",category:"File Configs"},{name:"FILE_CONFIG_LIST",description:"List S3 bucket configurations for the org (no creds returned)",category:"File Configs"},{name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes from their GitHub sources",category:"File Configs"},{name:"ORG_REPO_SYNC_CREATE",description:"Keep a GitHub repository mirrored into a new org-fs volume",category:"File Configs"},{name:"ORG_REPO_SYNC_LIST",description:"List the org's synced repositories and their sync status",category:"File Configs"},{name:"ORG_REPO_SYNC_UPDATE",description:"Update a synced repository's ref, paths, or enabled flag",category:"File Configs"},{name:"ORG_REPO_SYNC_DELETE",description:"Stop syncing a repository (already-synced files are kept)",category:"File Configs"},{name:"ORG_REPO_SYNC_RUN",description:"Sync a repository into its volume right now",category:"File Configs"},{name:"JIRA_INTEGRATION_GET",description:"Get the org's Jira integration config and last sync status",category:"Jira"},{name:"JIRA_INTEGRATION_UPSERT",description:"Connect or update the org's Jira integration",category:"Jira"},{name:"JIRA_INTEGRATION_DELETE",description:"Disconnect Jira (already-synced cards are kept)",category:"Jira"},{name:"JIRA_BOARDS_LIST",description:"List Jira boards visible to the connected credentials",category:"Jira"},{name:"JIRA_BOARD_COLUMNS_LIST",description:"List a Jira board's columns and statuses for the mapping",category:"Jira"},{name:"JIRA_SYNC_RUN",description:"Pull from Jira into the task board right now",category:"Jira"},{name:"JIRA_RESYNC_REQUEST",description:"Mark the whole Jira board to be re-read on the next scheduled sync",category:"Jira"},{name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration, optionally rotating credentials",category:"File Configs"},{name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration",category:"File Configs"},{name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured bucket",category:"File Configs"},{name:"FILE_OBJECT_DELETE",description:"Delete an object from a configured bucket",category:"File Configs"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"SANDBOX_START",description:"Start a sandbox VM with dev server preview",category:"VM"},{name:"SANDBOX_DELETE",description:"Stop and delete a sandbox VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"},{name:"GITHUB_SEARCH_BRANCHES",description:"Search a repository's branches by name substring",category:"GitHub"},{name:"GITHUB_PR_STATE",description:"Read a branch's pull request with its checks, review state and comments",category:"GitHub"},{name:"GITHUB_LAST_PUBLISHED_PR",description:"Read the most recently merged pull request into a base branch",category:"GitHub"},{name:"GLOBAL_SEARCH",description:"Search across organization resources (currently threads). Returns a typed union of matches.",category:"Search"},{name:"TASK_BOARD_ITEM_CREATE",description:"Create task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_LIST",description:"List task board items",category:"Task Board"},{name:"TASK_BOARD_ITEM_UPDATE",description:"Update task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_DELETE",description:"Delete task board item",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_AUTOMATION_LIST",description:"List what the board runs when a card lands in each column",category:"Task Board"},{name:"TASK_BOARD_AUTOMATION_UPSERT",description:"Run the agent on cards landing in a board column",category:"Task Board"},{name:"TASK_BOARD_AUTOMATION_DELETE",description:"Stop running the agent on cards landing in a board column",category:"Task Board"},{name:"TASK_BOARD_COLUMN_ROLE_SET",description:"Say what one of the board's columns means to Studio",category:"Task Board"},{name:"TASK_BOARD_ITEM_PRS_GET",description:"Get a task board item's linked pull requests with live state",category:"Task Board"},{name:"TASK_BOARD_ITEM_PR_LINK",description:"Link a pull request a task run opened to its task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task with the Super Agent, failing any run still holding it open",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_RESOLVE_CONFLICT",description:"Hand a task's conflicting pull request back to the Super Agent to resolve the merge conflict",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision (approve or request changes) for a task under review",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Merge a reviewed task's pull request and move the task to Done",category:"Task Board",dangerous:!0},{name:"NOTIFICATION_LIST",description:"List your unread notifications in this organization",category:"Task Board"},{name:"NOTIFICATION_MARK_READ",description:"Mark your notifications read",category:"Task Board"},{name:"NOTIFICATION_SUBSCRIPTION_SET",description:"Follow or unfollow a task board item",category:"Task Board"},{name:"NOTIFICATION_SUBSCRIPTION_LIST",description:"List the users following a task board item",category:"Task Board"},{name:"TASK_BOARD_ACTIVITY_LIST",description:"List a task board item's change history",category:"Task Board"},{name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comment threads",category:"Task Board"},{name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment or a reply on a task board item",category:"Task Board"},{name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit a comment, or resolve/unresolve a comment thread",category:"Task Board"},{name:"TASK_BOARD_COMMENT_DELETE",description:"Delete a comment (a thread root takes its replies)",category:"Task Board"},{name:"TASK_BOARD_DISMISSED_LIST",description:"List diagnostic findings dismissed by deleting their task board cards",category:"Task Board"},{name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings so the next report import pushes them again",category:"Task Board"},{name:"TASK_ADD_REPO",description:"Clone an organization repository into the sandbox of the task run calling it",category:"Task Board"}],VG0=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","VIRTUAL_MCP_LAST_USED_LIST","AUTOMATION_GET","AUTOMATION_LIST","AUTOMATION_RUN_STATS","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_CREDITS","AI_PROVIDER_TOPUP_URL","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","FILE_OBJECTS_LIST","ORG_REPO_SYNC_LIST","SANDBOX_START","SANDBOX_DELETE","GITHUB_SEARCH_BRANCHES","GITHUB_PR_STATE","GITHUB_LAST_PUBLISHED_PR","GLOBAL_SEARCH","ORGANIZATION_SETTINGS_GET","USER_GET","BRAND_CONTEXT_LIST","COLLECTION_THREADS_CREATE","COLLECTION_THREADS_LIST","COLLECTION_THREADS_GET","COLLECTION_THREADS_UPDATE","COLLECTION_THREADS_DELETE","COLLECTION_THREAD_MESSAGES_LIST","TASK_BOARD_ITEM_CREATE","TASK_BOARD_ITEM_LIST","TASK_BOARD_ITEM_UPDATE","TASK_BOARD_ITEM_DELETE","TASK_BOARD_AUTOMATION_LIST","TASK_BOARD_AUTOMATION_UPSERT","TASK_BOARD_AUTOMATION_DELETE","TASK_BOARD_COLUMN_ROLE_SET","TASK_BOARD_ITEM_PRS_GET","TASK_BOARD_ITEM_PR_LINK","TASK_BOARD_ITEM_RERUN","TASK_BOARD_REVIEW_DECISION","TASK_BOARD_PROMOTE_TO_PRODUCTION","TASK_BOARD_ACTIVITY_LIST","TASK_BOARD_COMMENT_LIST","TASK_BOARD_COMMENT_CREATE","TASK_BOARD_COMMENT_UPDATE","TASK_BOARD_COMMENT_DELETE","TASK_BOARD_DISMISSED_LIST","TASK_BOARD_DISMISSED_RESTORE","NOTIFICATION_LIST","NOTIFICATION_MARK_READ","NOTIFICATION_SUBSCRIPTION_SET","NOTIFICATION_SUBSCRIPTION_LIST"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_LIST","ORGANIZATION_DOMAIN_ADD","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_VERIFY","ORGANIZATION_DOMAIN_REMOVE","JIRA_INTEGRATION_GET","JIRA_INTEGRATION_UPSERT","JIRA_INTEGRATION_DELETE","JIRA_BOARDS_LIST","JIRA_BOARD_COLUMNS_LIST","JIRA_SYNC_RUN","JIRA_RESYNC_REQUEST"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE","ORGANIZATION_BILLING_CHECKOUT_START","ORGANIZATION_BILLING_PORTAL","ORGANIZATION_TASK_QUOTA_GET","INFRA_BILLING_SITES_LIST","INFRA_BILLING_GET","INFRA_BILLING_PORTAL","ORGANIZATION_JOIN_REQUEST_LIST","ORGANIZATION_JOIN_REQUEST_APPROVE","ORGANIZATION_JOIN_REQUEST_DENY"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE","COMMERCE_DISCOVERY_SETUP","COMMERCE_DISCOVERY_RUN","COMMERCE_DISCOVERY_BIND","COMMERCE_DISCOVERY_CONNECTION_STATUS"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_TRIGGER_ROTATE_TOKEN","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_HEATMAP","MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS","MONITORING_THREAD_USAGE"]},{id:"secrets:manage",label:"Manage secrets",description:"Create and list secrets stored in the credential vault",section:"Organization",tools:["SECRET_CREATE","SECRET_LIST"]},{id:"file-configs:manage",label:"Manage file configs",description:"Create, list, update and delete S3 bucket configurations and synced GitHub repositories",section:"Organization",tools:["FILE_CONFIG_CREATE","FILE_CONFIG_LIST","FILE_CONFIG_UPDATE","FILE_CONFIG_DELETE","FILE_OBJECTS_LIST","FILE_OBJECT_DELETE","ORG_REPO_SYNC_CREATE","ORG_REPO_SYNC_LIST","ORG_REPO_SYNC_UPDATE","ORG_REPO_SYNC_DELETE","ORG_REPO_SYNC_RUN"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_KEY_UPDATE","AI_PROVIDER_KEY_PREVIEW","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS","CLAUDE_SUBSCRIPTION_CONNECT","CLAUDE_SUBSCRIPTION_STATUS","CLAUDE_SUBSCRIPTION_DISCONNECT"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],B3$=new Set([...VG0.find(($)=>$.id==="basic-usage")?.tools??[],"ORG_FS_READ","ORG_FS_WRITE"]),Lw4=["agents:manage","connections:manage"],kG0=new Set(VG0.filter(($)=>Lw4.includes($.id)).flatMap(($)=>$.tools))});function BX($){if(!$)return!1;return $.split(",").some((X)=>Wo.includes(X))}function SG0($,Z){let X=Array.isArray(Z)?Z:[Z];if(X.length===0)return!1;let Q=$?$.split(","):[];if(Q.includes("owner"))return!0;if(Q.includes("admin"))return X.every((Y)=>Y!=="owner");return!1}var Ih,Wo;var XY=L(()=>{Ih=["owner","admin","user"],Wo=["owner","admin"]});class aj{userId;toolName;boundAuth;role;connectionId;getToolMeta;organizationId;_granted=!1;constructor($,Z,X,Q,Y="self",G,J){this.userId=$;this.toolName=Z;this.boundAuth=X;this.role=Q;this.connectionId=Y;this.getToolMeta=G;this.organizationId=J}setToolName($){this.toolName=$}setOrganizationId($){this.organizationId=$}getOrganizationId(){return this.organizationId}setRole($){this.role=$}getRole(){return this.role}grant(){this._granted=!0}async check(...$){if(this._granted)return;if(this.toolName?.startsWith("STUDIO_PUBLIC_")||this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new qh("Authentication required. Please provide a valid OAuth token or API key.")}let Z=$.length>0?$:this.toolName?[this.toolName]:[];if(Z.length===0)throw new fN("No resources specified for access check");for(let X of Z)if(await this.checkResource(X)){this.grant();return}throw new fN(`Access denied to: ${Z.join(", ")}`)}async checkResource($){if(!this.userId&&!this.boundAuth)return!1;return this.boundAuth?.isApiKeyPrincipal?this.checkApiKeyAccess($):this.checkMemberAccess($)}async checkApiKeyAccess($){if(!this.boundAuth)return!1;return this.boundAuth.hasPermission({[this.connectionId]:[$]})}async checkMemberAccess($){if(this.userId&&this.role&&B3$.has($))return!0;if(BX(this.role))return!0;if(!this.boundAuth)return!1;return this.boundAuth.hasPermission({[this.connectionId]:[$]},{organizationId:this.organizationId,role:this.role})}async isToolPublic(){if(this.toolName?.startsWith("STUDIO_PUBLIC_")||this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let $=await this.getToolMeta();if(!$)return!1;let X=YH($)?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}var qh,fN;var sj=L(()=>{Rh();XY();qh=class qh extends Error{constructor($){super($);this.name="UnauthorizedError"}};fN=class fN extends Error{constructor($){super($);this.name="ForbiddenError"}}});function L3$($){let Z={};for(let X of Object.keys($))Z[X]=["*"];return Z}function tZ($){let Z=$?.metadata;if(!Z)return!1;try{return(typeof Z==="string"?JSON.parse(Z):Z).archived===!0}catch{return!1}}function CG0($,Z){return $.get(D3$[Z])??$.get(w3$[Z])}function D01($,Z,X){$[D3$[Z]]=X,$[w3$[Z]]=X}var D3$,w3$;var w01=L(()=>{D3$={token:"x-studio-token",client:"x-studio-client",properties:"x-studio-properties",runMetadata:"x-studio-run-metadata"},w3$={token:"x-mesh-token",client:"x-mesh-client",properties:"x-mesh-properties",runMetadata:"x-mesh-run-metadata"}});function _G0($){let Z=wL.get($);if(!Z||Z.state==="CLOSED")return;if(Z.state==="HALF_OPEN"){if(Z.halfOpenInFlight){if(Date.now()-Z.halfOpenStartedAt<d7$)throw new Mh($,0)}Z.halfOpenInFlight=!0,Z.halfOpenStartedAt=Date.now();return}let X=Date.now()-Z.lastFailureTime;if(X>=Gs0){Z.state="HALF_OPEN",Z.halfOpenInFlight=!0,Z.halfOpenStartedAt=Date.now();return}throw new Mh($,Gs0-X)}function vG0($){wL.delete($)}function xG0($){let Z=wL.get($);if(!Z){Dw4(),wL.set($,{state:1>=Ys0?"OPEN":"CLOSED",consecutiveFailures:1,lastFailureTime:Date.now(),halfOpenInFlight:!1,halfOpenStartedAt:0});return}if(Z.consecutiveFailures++,Z.lastFailureTime=Date.now(),Z.halfOpenInFlight=!1,Z.consecutiveFailures>=Ys0)Z.state="OPEN"}function Dw4(){if(wL.size<BY0)return;let $=null,Z=1/0;for(let[X,Q]of wL)if(Q.lastFailureTime<Z)Z=Q.lastFailureTime,$=X;if($)wL.delete($)}var wL,Mh;var E01=L(()=>{x6();wL=new Map;P$.createObservableGauge("mcp_circuit_breaker.circuits",{description:"MCP connection circuits by state (open, half_open)",unit:"{circuits}"}).addCallback(($)=>{let Z=0,X=0;for(let Q of wL.values())if(Q.state==="OPEN")Z++;else if(Q.state==="HALF_OPEN")X++;$.observe(Z,{state:"open"}),$.observe(X,{state:"half_open"})});Mh=class Mh extends Error{cooldownRemainingMs;constructor($,Z){super(`Connection ${$} circuit breaker is open \u2014 downstream server unreachable. `+`Retry in ${Math.ceil(Z/1000)}s.`);this.name="CircuitOpenError",this.cooldownRemainingMs=Z}}});var Ho=($,Z)=>{if(Z===null||Z===void 0)return;let X=$.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),Q=Z;for(let Y of X){if(Q===null||Q===void 0||typeof Q!=="object")return;Q=Q[Y]}return Q};function fG0($){let Z=$.split("::");if(Z.length!==2||!Z[0]||!Z[1])throw Error(`Invalid scope format: ${$}. Expected format: "KEY::SCOPE"`);return Z}function ww4($){try{return fG0($)}catch{return null}}function Ew4($){if(typeof $==="object"&&$!==null&&"value"in $){let Z=$.value;if(typeof Z==="string")return Z}return null}function j01($,Z){let X={};if(!$||!Z)return X;for(let Q of Z){if(Q==="*"){X["*"]=["*"];continue}let Y=ww4(Q);if(!Y)continue;let[G,J]=Y,K=Ho(G,$),W=Ew4(K);if(W){if(!X[W])X[W]=[];X[W].push(J)}}return X}function E3$($,Z){let X=j01($,Z);return new Set(Object.keys(X).filter((Q)=>Q!=="*"))}var z01=()=>{};async function j3$($){if(!$.refreshToken)return{success:!1,permanent:!1,error:"No refresh token available"};if(!$.tokenEndpoint)return{success:!1,permanent:!1,error:"No token endpoint available"};if(!$.clientId)return{success:!1,permanent:!1,error:"No client ID available"};try{let Z=new URLSearchParams({grant_type:"refresh_token",refresh_token:$.refreshToken,client_id:$.clientId});if($.clientSecret)Z.set("client_secret",$.clientSecret);if($.scope)Z.set("scope",$.scope);let X=await fetch($.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Z.toString(),signal:AbortSignal.timeout(1e4)});if(!X.ok){let G=await X.text(),J,K;try{let H=JSON.parse(G);if(typeof H.error==="string")J=H.error;if(typeof H.error_description==="string")K=H.error_description}catch{}let W=X.status===400&&!!J&&jw4.has(J);return(W?console.error:console.warn)("[TokenRefresh] refresh failed",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,status:X.status,errorCode:J,errorDescription:K,permanent:W}),{success:!1,permanent:W,status:X.status,errorCode:J,error:K||J||`Token refresh failed: ${X.status}`}}let Q=await X.json();if(typeof Q.access_token!=="string"||!Q.access_token)return console.warn("[TokenRefresh] 200 response missing access_token",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint}),{success:!1,permanent:!1,status:X.status,error:"Token endpoint returned no access_token"};let Y;if(Q.expires_in!==void 0){let G=Number(Q.expires_in);if(Number.isFinite(G)&&G>=0&&G<=3153600000)Y=G;else console.warn("[TokenRefresh] ignoring malformed expires_in",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,expiresIn:Q.expires_in})}return{success:!0,accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token?Q.refresh_token:$.refreshToken,expiresIn:Y,scope:typeof Q.scope==="string"?Q.scope:void 0}}catch(Z){return console.warn("[TokenRefresh] network/parse error",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,message:Z instanceof Error?Z.message:String(Z)}),{success:!1,permanent:!1,error:Z instanceof Error?Z.message:"Token refresh failed"}}}var jw4;var z3$=L(()=>{jw4=new Set(["invalid_grant","bad_refresh_token"])});var P01=($,Z,X)=>{return(Q,Y)=>{let G=-1;return J(0);async function J(K){if(K<=G)throw Error("next() called multiple times");G=K;let W,H=!1,F;if($[K])F=$[K][0][0],Q.req.routeIndex=K;else F=K===$.length&&Y||void 0;if(F)try{W=await F(Q,()=>J(K+1))}catch(N){if(N instanceof Error&&Z)Q.error=N,W=await Z(N,Q),H=!0;else throw N}else if(Q.finalized===!1&&X)W=await X(Q);if(W&&(Q.finalized===!1||H))Q.res=W;return Q}}};var P3$=()=>{};var Y$;var LK=L(()=>{Y$=class extends Error{res;status;constructor($=500,Z){super(Z?.message,{cause:Z?.cause});this.res=Z?.res,this.status=$}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var A3$;var T3$=L(()=>{A3$=Symbol()});async function zw4($,Z){let X=await $.formData();if(X)return Pw4(X,Z);return{}}function Pw4($,Z){let X=Object.create(null);if($.forEach((Q,Y)=>{if(!(Z.all||Y.endsWith("[]")))X[Y]=Q;else Aw4(X,Y,Q)}),Z.dot)Object.entries(X).forEach(([Q,Y])=>{if(Q.includes("."))Tw4(X,Q,Y),delete X[Q]});return X}var R3$=async($,Z=Object.create(null))=>{let{all:X=!1,dot:Q=!1}=Z,G=($ instanceof bG0?$.raw.headers:$.headers).get("Content-Type");if(G?.startsWith("multipart/form-data")||G?.startsWith("application/x-www-form-urlencoded"))return zw4($,{all:X,dot:Q});return{}},Aw4=($,Z,X)=>{if($[Z]!==void 0)if(Array.isArray($[Z]))$[Z].push(X);else $[Z]=[$[Z],X];else if(!Z.endsWith("[]"))$[Z]=X;else $[Z]=[X]},Tw4=($,Z,X)=>{if(/(?:^|\.)__proto__\./.test(Z))return;let Q=$,Y=Z.split(".");Y.forEach((G,J)=>{if(J===Y.length-1)Q[G]=X;else{if(!Q[G]||typeof Q[G]!=="object"||Array.isArray(Q[G])||Q[G]instanceof File)Q[G]=Object.create(null);Q=Q[G]}})};var I3$=L(()=>{A01()});var R01=($)=>{let Z=$.split("/");if(Z[0]==="")Z.shift();return Z},q3$=($)=>{let{groups:Z,path:X}=Rw4($),Q=R01(X);return Iw4(Q,Z)},Rw4=($)=>{let Z=[];return $=$.replace(/\{[^}]+\}/g,(X,Q)=>{let Y=`@${Q}`;return Z.push([Y,X]),Y}),{groups:Z,path:$}},Iw4=($,Z)=>{for(let X=Z.length-1;X>=0;X--){let[Q]=Z[X];for(let Y=$.length-1;Y>=0;Y--)if($[Y].includes(Q)){$[Y]=$[Y].replace(Q,Z[X][1]);break}}return $},yG0,M3$=($,Z)=>{if($==="*")return"*";let X=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(X){let Q=`${$}#${Z}`;if(!yG0[Q])if(X[2])yG0[Q]=Z&&Z[0]!==":"&&Z[0]!=="*"?[Q,X[1],new RegExp(`^${X[2]}(?=/${Z})`)]:[$,X[1],new RegExp(`^${X[2]}$`)];else yG0[Q]=[$,X[1],!0];return yG0[Q]}return null},Vh=($,Z)=>{try{return Z($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(X)=>{try{return Z(X)}catch{return X}})}},V3$=($)=>Vh($,decodeURI),I01=($)=>{let Z=$.url,X=Z.indexOf("/",Z.indexOf(":")+4),Q=X;for(;Q<Z.length;Q++){let Y=Z.charCodeAt(Q);if(Y===37){let G=Z.indexOf("?",Q),J=Z.indexOf("#",Q),K=G===-1?J===-1?void 0:J:J===-1?G:Math.min(G,J),W=Z.slice(X,K);return V3$(W.includes("%25")?W.replace(/%25/g,"%2525"):W)}else if(Y===63||Y===35)break}return Z.slice(X,Q)},k3$=($)=>{let Z=I01($);return Z.length>1&&Z.at(-1)==="/"?Z.slice(0,-1):Z},ej=($,Z,...X)=>{if(X.length)Z=ej(Z,...X);return`${$?.[0]==="/"?"":"/"}${$}${Z==="/"?"":`${$?.at(-1)==="/"?"":"/"}${Z?.[0]==="/"?Z.slice(1):Z}`}`},gG0=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let Z=$.split("/"),X=[],Q="";return Z.forEach((Y)=>{if(Y!==""&&!/\:/.test(Y))Q+="/"+Y;else if(/\:/.test(Y))if(/\?/.test(Y)){if(X.length===0&&Q==="")X.push("/");else X.push(Q);let G=Y.replace("?","");Q+="/"+G,X.push(Q)}else Q+="/"+Y}),X.filter((Y,G,J)=>J.indexOf(Y)===G)},T01=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?Vh($,Fo):$},S3$=($,Z,X)=>{let Q;if(!X&&Z&&!/[%+]/.test(Z)){let J=$.indexOf("?",8);if(J===-1)return;if(!$.startsWith(Z,J+1))J=$.indexOf(`&${Z}`,J+1);while(J!==-1){let K=$.charCodeAt(J+Z.length+1);if(K===61){let W=J+Z.length+2,H=$.indexOf("&",W);return T01($.slice(W,H===-1?void 0:H))}else if(K==38||isNaN(K))return"";J=$.indexOf(`&${Z}`,J+1)}if(Q=/[%+]/.test($),!Q)return}let Y={};Q??=/[%+]/.test($);let G=$.indexOf("?",8);while(G!==-1){let J=$.indexOf("&",G+1),K=$.indexOf("=",G);if(K>J&&J!==-1)K=-1;let W=$.slice(G+1,K===-1?J===-1?void 0:J:K);if(Q)W=T01(W);if(G=J,W==="")continue;let H;if(K===-1)H="";else if(H=$.slice(K+1,J===-1?void 0:J),Q)H=T01(H);if(X){if(!(Y[W]&&Array.isArray(Y[W])))Y[W]=[];Y[W].push(H)}else Y[W]??=H}return Z?Y[Z]:Y},C3$,_3$=($,Z)=>{return S3$($,Z,!0)},Fo;var EL=L(()=>{yG0={},C3$=S3$,Fo=decodeURIComponent});var v3$=($)=>Vh($,Fo),bG0;var A01=L(()=>{LK();T3$();I3$();EL();bG0=class{raw;#$;#Z;routeIndex=0;path;bodyCache={};constructor($,Z="/",X=[[]]){this.raw=$,this.path=Z,this.#Z=X,this.#$={}}param($){return $?this.#X($):this.#G()}#X($){let Z=this.#Z[0][this.routeIndex][1][$],X=this.#Y(Z);return X&&/\%/.test(X)?v3$(X):X}#G(){let $={},Z=Object.keys(this.#Z[0][this.routeIndex][1]);for(let X of Z){let Q=this.#Y(this.#Z[0][this.routeIndex][1][X]);if(Q!==void 0)$[X]=/\%/.test(Q)?v3$(Q):Q}return $}#Y($){return this.#Z[1]?this.#Z[1][$]:$}query($){return C3$(this.url,$)}queries($){return _3$(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let Z={};return this.raw.headers.forEach((X,Q)=>{Z[Q]=X}),Z}async parseBody($){return R3$(this,$)}#Q=($)=>{let{bodyCache:Z,raw:X}=this,Q=Z[$];if(Q)return Q;let Y=Object.keys(Z)[0];if(Y)return Z[Y].then((G)=>{if(Y==="json")G=JSON.stringify(G);return new Response(G)[$]()});return Z[$]=X[$]()};json(){return this.#Q("text").then(($)=>JSON.parse($))}text(){return this.#Q("text")}arrayBuffer(){return this.#Q("arrayBuffer")}blob(){return this.#Q("blob")}formData(){return this.#Q("formData")}addValidatedData($,Z){this.#$[$]=Z}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[A3$](){return this.#Z}get matchedRoutes(){return this.#Z[0].map(([[,$]])=>$)}get routePath(){return this.#Z[0].map(([[,$]])=>$)[this.routeIndex].path}}});var hG0,x3$=($,Z)=>{let X=new String($);return X.isEscaped=!0,X.callbacks=Z,X},No=async($,Z,X,Q,Y)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let G=$.callbacks;if(!G?.length)return Promise.resolve($);if(Y)Y[0]+=$;else Y=[$];let J=Promise.all(G.map((K)=>K({phase:Z,buffer:Y,context:Q}))).then((K)=>Promise.all(K.filter(Boolean).map((W)=>No(W,Z,!1,Q,Y))).then(()=>Y[0]));if(X)return x3$(await J,G);else return J};var uG0=L(()=>{hG0={Stringify:1,BeforeStream:2,Stream:3}});var f3$="text/plain; charset=UTF-8",q01=($,Z)=>{return{"Content-Type":$,...Z}},Uo=($,Z)=>new Response($,Z),b3$=class{#$;#Z;env={};#X;finalized=!1;error;#G;#Y;#Q;#J;#K;#W;#F;#N;#U;constructor($,Z){if(this.#$=$,Z)this.#Y=Z.executionCtx,this.env=Z.env,this.#W=Z.notFoundHandler,this.#U=Z.path,this.#N=Z.matchResult}get req(){return this.#Z??=new bG0(this.#$,this.#U,this.#N),this.#Z}get event(){if(this.#Y&&"respondWith"in this.#Y)return this.#Y;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Y)return this.#Y;else throw Error("This context has no ExecutionContext")}get res(){return this.#Q||=Uo(null,{headers:this.#F??=new Headers})}set res($){if(this.#Q&&$){$=Uo($.body,$);for(let[Z,X]of this.#Q.headers.entries()){if(Z==="content-type")continue;if(Z==="set-cookie"){let Q=this.#Q.headers.getSetCookie();$.headers.delete("set-cookie");for(let Y of Q)$.headers.append("set-cookie",Y)}else $.headers.set(Z,X)}}this.#Q=$,this.finalized=!0}render=(...$)=>{return this.#K??=(Z)=>this.html(Z),this.#K(...$)};setLayout=($)=>this.#J=$;getLayout=()=>this.#J;setRenderer=($)=>{this.#K=$};header=($,Z,X)=>{if(this.finalized)this.#Q=Uo(this.#Q.body,this.#Q);let Q=this.#Q?this.#Q.headers:this.#F??=new Headers;if(Z===void 0)Q.delete($);else if(X?.append)Q.append($,Z);else Q.set($,Z)};status=($)=>{this.#G=$};set=($,Z)=>{this.#X??=new Map,this.#X.set($,Z)};get=($)=>{return this.#X?this.#X.get($):void 0};get var(){if(!this.#X)return{};return Object.fromEntries(this.#X)}#H($,Z,X){let Q=this.#Q?new Headers(this.#Q.headers):this.#F??new Headers;if(typeof Z==="object"&&"headers"in Z){let G=Z.headers instanceof Headers?Z.headers:new Headers(Z.headers);for(let[J,K]of G)if(J.toLowerCase()==="set-cookie")Q.append(J,K);else Q.set(J,K)}if(X)for(let[G,J]of Object.entries(X))if(typeof J==="string")Q.set(G,J);else{Q.delete(G);for(let K of J)Q.append(G,K)}let Y=typeof Z==="number"?Z:Z?.status??this.#G;return Uo($,{status:Y,headers:Q})}newResponse=(...$)=>this.#H(...$);body=($,Z,X)=>this.#H($,Z,X);text=($,Z,X)=>{return!this.#F&&!this.#G&&!Z&&!X&&!this.finalized?new Response($):this.#H($,Z,q01(f3$,X))};json=($,Z,X)=>{return this.#H(JSON.stringify($),Z,q01("application/json",X))};html=($,Z,X)=>{let Q=(Y)=>this.#H(Y,Z,q01("text/html; charset=UTF-8",X));return typeof $==="object"?No($,hG0.Stringify,!1,{}).then(Q):Q($)};redirect=($,Z)=>{let X=String($);return this.header("Location",!/[^\x00-\xFF]/.test(X)?X:encodeURI(X)),this.newResponse(null,Z??302)};notFound=()=>{return this.#W??=()=>Uo(),this.#W(this)}};var cG0=L(()=>{A01();uG0()});var b6="ALL",y3$="all",g3$,lG0="Can not add a route since the matcher is already built.",mG0;var jL=L(()=>{g3$=["get","post","put","delete","options","patch"],mG0=class extends Error{}});var M01="__COMPOSED_HANDLER";var V01=()=>{};var qw4=($)=>{return $.text("404 Not Found",404)},h3$=($,Z)=>{if("getResponse"in $){let X=$.getResponse();return Z.newResponse(X.body,X)}return console.error($),Z.text("Internal Server Error",500)},u3$=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(Z={}){[...g3$,y3$].forEach((G)=>{this[G]=(J,...K)=>{if(typeof J==="string")this.#$=J;else this.#G(G,this.#$,J);return K.forEach((W)=>{this.#G(G,this.#$,W)}),this}}),this.on=(G,J,...K)=>{for(let W of[J].flat()){this.#$=W;for(let H of[G].flat())K.map((F)=>{this.#G(H.toUpperCase(),this.#$,F)})}return this},this.use=(G,...J)=>{if(typeof G==="string")this.#$=G;else this.#$="*",J.unshift(G);return J.forEach((K)=>{this.#G(b6,this.#$,K)}),this};let{strict:Q,...Y}=Z;Object.assign(this,Y),this.getPath=Q??!0?Z.getPath??I01:k3$}#Z(){let Z=new $({router:this.router,getPath:this.getPath});return Z.errorHandler=this.errorHandler,Z.#X=this.#X,Z.routes=this.routes,Z}#X=qw4;errorHandler=h3$;route(Z,X){let Q=this.basePath(Z);return X.routes.map((Y)=>{let G;if(X.errorHandler===h3$)G=Y.handler;else G=async(J,K)=>(await P01([],X.errorHandler)(J,()=>Y.handler(J,K))).res,G[M01]=Y.handler;Q.#G(Y.method,Y.path,G)}),this}basePath(Z){let X=this.#Z();return X._basePath=ej(this._basePath,Z),X}onError=(Z)=>{return this.errorHandler=Z,this};notFound=(Z)=>{return this.#X=Z,this};mount(Z,X,Q){let Y,G;if(Q)if(typeof Q==="function")G=Q;else if(G=Q.optionHandler,Q.replaceRequest===!1)Y=(W)=>W;else Y=Q.replaceRequest;let J=G?(W)=>{let H=G(W);return Array.isArray(H)?H:[H]}:(W)=>{let H=void 0;try{H=W.executionCtx}catch{}return[W.env,H]};Y||=(()=>{let W=ej(this._basePath,Z),H=W==="/"?0:W.length;return(F)=>{let N=new URL(F.url);return N.pathname=N.pathname.slice(H)||"/",new Request(N,F)}})();let K=async(W,H)=>{let F=await X(Y(W.req.raw),...J(W));if(F)return F;await H()};return this.#G(b6,ej(Z,"*"),K),this}#G(Z,X,Q){Z=Z.toUpperCase(),X=ej(this._basePath,X);let Y={basePath:this._basePath,path:X,method:Z,handler:Q};this.router.add(Z,X,[Q,Y]),this.routes.push(Y)}#Y(Z,X){if(Z instanceof Error)return this.errorHandler(Z,X);throw Z}#Q(Z,X,Q,Y){if(Y==="HEAD")return(async()=>new Response(null,await this.#Q(Z,X,Q,"GET")))();let G=this.getPath(Z,{env:Q}),J=this.router.match(Y,G),K=new b3$(Z,{path:G,matchResult:J,env:Q,executionCtx:X,notFoundHandler:this.#X});if(J[0].length===1){let H;try{H=J[0][0][0][0](K,async()=>{K.res=await this.#X(K)})}catch(F){return this.#Y(F,K)}return H instanceof Promise?H.then((F)=>F||(K.finalized?K.res:this.#X(K))).catch((F)=>this.#Y(F,K)):H??this.#X(K)}let W=P01(J[0],this.errorHandler,this.#X);return(async()=>{try{let H=await W(K);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#Y(H,K)}})()}fetch=(Z,...X)=>{return this.#Q(Z,X[1],X[0],Z.method)};request=(Z,X,Q,Y)=>{if(Z instanceof Request)return this.fetch(X?new Request(Z,X):Z,Q,Y);return Z=Z.toString(),this.fetch(new Request(/^https?:\/\//.test(Z)?Z:`http://localhost${ej("/",Z)}`,X),Q,Y)};fire=()=>{addEventListener("fetch",(Z)=>{Z.respondWith(this.#Q(Z.request,Z,void 0,Z.request.method))})}};var c3$=L(()=>{P3$();cG0();jL();V01();EL()});function dG0($,Z){let X=this.buildAllMatchers(),Q=(Y,G)=>{let J=X[Y]||X[b6],K=J[2][G];if(K)return K;let W=G.match(J[0]);if(!W)return[[],Bo];let H=W.indexOf("",1);return[J[1][H],W]};return this.match=Q,Q($,Z)}var Bo;var k01=L(()=>{jL();Bo=[]});function Vw4($,Z){if($.length===1)return Z.length===1?$<Z?-1:1:-1;if(Z.length===1)return 1;if($===Oo||$===Lo)return 1;else if(Z===Oo||Z===Lo)return-1;if($===iG0)return 1;else if(Z===iG0)return-1;return $.length===Z.length?$<Z?-1:1:Z.length-$.length}var iG0="[^/]+",Oo=".*",Lo="(?:|/.*)",$z,Mw4,l3$=class ${#$;#Z;#X=Object.create(null);insert(Z,X,Q,Y,G){if(Z.length===0){if(this.#$!==void 0)throw $z;if(G)return;this.#$=X;return}let[J,...K]=Z,W=J==="*"?K.length===0?["","",Oo]:["","",iG0]:J==="/*"?["","",Lo]:J.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(W){let F=W[1],N=W[2]||iG0;if(F&&W[2]){if(N===".*")throw $z;if(N=N.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(N))throw $z}if(H=this.#X[N],!H){if(Object.keys(this.#X).some((U)=>U!==Oo&&U!==Lo))throw $z;if(G)return;if(H=this.#X[N]=new $,F!=="")H.#Z=Y.varIndex++}if(!G&&F!=="")Q.push([F,H.#Z])}else if(H=this.#X[J],!H){if(Object.keys(this.#X).some((F)=>F.length>1&&F!==Oo&&F!==Lo))throw $z;if(G)return;H=this.#X[J]=new $}H.insert(K,X,Q,Y,G)}buildRegExpStr(){let X=Object.keys(this.#X).sort(Vw4).map((Q)=>{let Y=this.#X[Q];return(typeof Y.#Z==="number"?`(${Q})@${Y.#Z}`:Mw4.has(Q)?`\\${Q}`:Q)+Y.buildRegExpStr()});if(typeof this.#$==="number")X.unshift(`#${this.#$}`);if(X.length===0)return"";if(X.length===1)return X[0];return"(?:"+X.join("|")+")"}};var S01=L(()=>{$z=Symbol(),Mw4=new Set(".\\+*[^]$()")});var m3$=class{#$={varIndex:0};#Z=new l3$;insert($,Z,X){let Q=[],Y=[];for(let J=0;;){let K=!1;if($=$.replace(/\{[^}]+\}/g,(W)=>{let H=`@\\${J}`;return Y[J]=[H,W],J++,K=!0,H}),!K)break}let G=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let J=Y.length-1;J>=0;J--){let[K]=Y[J];for(let W=G.length-1;W>=0;W--)if(G[W].indexOf(K)!==-1){G[W]=G[W].replace(K,Y[J][1]);break}}return this.#Z.insert(G,Z,Q,this.#$,X),Q}buildRegExp(){let $=this.#Z.buildRegExpStr();if($==="")return[/^$/,[],[]];let Z=0,X=[],Q=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Y,G,J)=>{if(G!==void 0)return X[++Z]=Number(G),"$()";if(J!==void 0)return Q[Number(J)]=++Z,"";return""}),[new RegExp(`^${$}`),X,Q]}};var d3$=L(()=>{S01()});function p3$($){return i3$[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(Z,X)=>X?`\\${X}`:"(?:|/.*)")}$`)}function Sw4(){i3$=Object.create(null)}function Cw4($){let Z=new m3$,X=[];if($.length===0)return kw4;let Q=$.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,F],[N,U])=>H?1:N?-1:F.length-U.length),Y=Object.create(null);for(let H=0,F=-1,N=Q.length;H<N;H++){let[U,B,O]=Q[H];if(U)Y[B]=[O.map(([w])=>[w,Object.create(null)]),Bo];else F++;let D;try{D=Z.insert(B,F,U)}catch(w){throw w===$z?new mG0(B):w}if(U)continue;X[F]=O.map(([w,E])=>{let j=Object.create(null);E-=1;for(;E>=0;E--){let[z,A]=D[E];j[z]=A}return[w,j]})}let[G,J,K]=Z.buildRegExp();for(let H=0,F=X.length;H<F;H++)for(let N=0,U=X[H].length;N<U;N++){let B=X[H][N]?.[1];if(!B)continue;let O=Object.keys(B);for(let D=0,w=O.length;D<w;D++)B[O[D]]=K[B[O[D]]]}let W=[];for(let H in J)W[H]=X[J[H]];return[G,W,Y]}function kh($,Z){if(!$)return;for(let X of Object.keys($).sort((Q,Y)=>Y.length-Q.length))if(p3$(X).test(Z))return[...$[X]];return}var kw4,i3$,pG0=class{name="RegExpRouter";#$;#Z;constructor(){this.#$={[b6]:Object.create(null)},this.#Z={[b6]:Object.create(null)}}add($,Z,X){let Q=this.#$,Y=this.#Z;if(!Q||!Y)throw Error(lG0);if(!Q[$])[Q,Y].forEach((K)=>{K[$]=Object.create(null),Object.keys(K[b6]).forEach((W)=>{K[$][W]=[...K[b6][W]]})});if(Z==="/*")Z="*";let G=(Z.match(/\/:/g)||[]).length;if(/\*$/.test(Z)){let K=p3$(Z);if($===b6)Object.keys(Q).forEach((W)=>{Q[W][Z]||=kh(Q[W],Z)||kh(Q[b6],Z)||[]});else Q[$][Z]||=kh(Q[$],Z)||kh(Q[b6],Z)||[];Object.keys(Q).forEach((W)=>{if($===b6||$===W)Object.keys(Q[W]).forEach((H)=>{K.test(H)&&Q[W][H].push([X,G])})}),Object.keys(Y).forEach((W)=>{if($===b6||$===W)Object.keys(Y[W]).forEach((H)=>K.test(H)&&Y[W][H].push([X,G]))});return}let J=gG0(Z)||[Z];for(let K=0,W=J.length;K<W;K++){let H=J[K];Object.keys(Y).forEach((F)=>{if($===b6||$===F)Y[F][H]||=[...kh(Q[F],H)||kh(Q[b6],H)||[]],Y[F][H].push([X,G-W+K+1])})}}match=dG0;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#Z).concat(Object.keys(this.#$)).forEach((Z)=>{$[Z]||=this.#X(Z)}),this.#$=this.#Z=void 0,Sw4(),$}#X($){let Z=[],X=$===b6;if([this.#$,this.#Z].forEach((Q)=>{let Y=Q[$]?Object.keys(Q[$]).map((G)=>[G,Q[$][G]]):[];if(Y.length!==0)X||=!0,Z.push(...Y);else if($!==b6)Z.push(...Object.keys(Q[b6]).map((G)=>[G,Q[b6][G]]))}),!X)return null;else return Cw4(Z)}};var C01=L(()=>{jL();EL();k01();S01();d3$();kw4=[/^$/,[],Object.create(null)],i3$=Object.create(null)});var _w4=class{name="PreparedRegExpRouter";#$;#Z;constructor($,Z){this.#$=$,this.#Z=Z}#X($,Z){let X=this.#$[$];X[1].forEach((Q)=>Q&&Q.push(Z)),Object.values(X[2]).forEach((Q)=>Q[0].push(Z))}#G($,Z,X,Q,Y){let G=this.#$[$];if(!Y)G[2][Z][0].push([X,{}]);else Q.forEach((J)=>{if(typeof J==="number")G[1][J].push([X,Y]);else G[2][J||Z][0].push([X,Y])})}add($,Z,X){if(!this.#$[$]){let Y=this.#$[b6],G={};for(let J in Y[2])G[J]=[Y[2][J][0].slice(),Bo];this.#$[$]=[Y[0],Y[1].map((J)=>Array.isArray(J)?J.slice():0),G]}if(Z==="/*"||Z==="*"){let Y=[X,{}];if($===b6)for(let G in this.#$)this.#X(G,Y);else this.#X($,Y);return}let Q=this.#Z[Z];if(!Q)throw Error(`Path ${Z} is not registered`);for(let[Y,G]of Q)if($===b6)for(let J in this.#$)this.#G(J,Z,X,Y,G);else this.#G($,Z,X,Y,G)}buildAllMatchers(){return this.#$}match=dG0};var n3$=L(()=>{jL();k01();C01()});var t3$=L(()=>{C01();n3$()});var _01=class{name="SmartRouter";#$=[];#Z=[];constructor($){this.#$=$.routers}add($,Z,X){if(!this.#Z)throw Error(lG0);this.#Z.push([$,Z,X])}match($,Z){if(!this.#Z)throw Error("Fatal error");let X=this.#$,Q=this.#Z,Y=X.length,G=0,J;for(;G<Y;G++){let K=X[G];try{for(let W=0,H=Q.length;W<H;W++)K.add(...Q[W]);J=K.match($,Z)}catch(W){if(W instanceof mG0)continue;throw W}this.match=K.match.bind(K),this.#$=[K],this.#Z=void 0;break}if(G===Y)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,J}get activeRouter(){if(this.#Z||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var o3$=L(()=>{jL()});var r3$=L(()=>{o3$()});var Do,vw4=($)=>{for(let Z in $)return!0;return!1},a3$=class ${#$;#Z;#X;#G=0;#Y=Do;constructor(Z,X,Q){if(this.#Z=Q||Object.create(null),this.#$=[],Z&&X){let Y=Object.create(null);Y[Z]={handler:X,possibleKeys:[],score:0},this.#$=[Y]}this.#X=[]}insert(Z,X,Q){this.#G=++this.#G;let Y=this,G=q3$(X),J=[];for(let K=0,W=G.length;K<W;K++){let H=G[K],F=G[K+1],N=M3$(H,F),U=Array.isArray(N)?N[0]:H;if(U in Y.#Z){if(Y=Y.#Z[U],N)J.push(N[1]);continue}if(Y.#Z[U]=new $,N)Y.#X.push(N),J.push(N[1]);Y=Y.#Z[U]}return Y.#$.push({[Z]:{handler:Q,possibleKeys:J.filter((K,W,H)=>H.indexOf(K)===W),score:this.#G}}),Y}#Q(Z,X,Q,Y,G){for(let J=0,K=X.#$.length;J<K;J++){let W=X.#$[J],H=W[Q]||W[b6],F={};if(H!==void 0){if(H.params=Object.create(null),Z.push(H),Y!==Do||G&&G!==Do)for(let N=0,U=H.possibleKeys.length;N<U;N++){let B=H.possibleKeys[N],O=F[H.score];H.params[B]=G?.[B]&&!O?G[B]:Y[B]??G?.[B],F[H.score]=!0}}}}search(Z,X){let Q=[];this.#Y=Do;let G=[this],J=R01(X),K=[],W=J.length,H=null;for(let F=0;F<W;F++){let N=J[F],U=F===W-1,B=[];for(let D=0,w=G.length;D<w;D++){let E=G[D],j=E.#Z[N];if(j)if(j.#Y=E.#Y,U){if(j.#Z["*"])this.#Q(Q,j.#Z["*"],Z,E.#Y);this.#Q(Q,j,Z,E.#Y)}else B.push(j);for(let z=0,A=E.#X.length;z<A;z++){let P=E.#X[z],I=E.#Y===Do?{}:{...E.#Y};if(P==="*"){let x=E.#Z["*"];if(x)this.#Q(Q,x,Z,E.#Y),x.#Y=I,B.push(x);continue}let[V,q,S]=P;if(!N&&!(S instanceof RegExp))continue;let d=E.#Z[V];if(S instanceof RegExp){if(H===null){H=Array(W);let l=X[0]==="/"?1:0;for(let y=0;y<W;y++)H[y]=l,l+=J[y].length+1}let x=X.substring(H[F]),b=S.exec(x);if(b){if(I[q]=b[0],this.#Q(Q,d,Z,E.#Y,I),vw4(d.#Z)){d.#Y=I;let l=b[0].match(/\//)?.length??0;(K[l]||=[]).push(d)}continue}}if(S===!0||S.test(N))if(I[q]=N,U){if(this.#Q(Q,d,Z,I,E.#Y),d.#Z["*"])this.#Q(Q,d.#Z["*"],Z,I,E.#Y)}else d.#Y=I,B.push(d)}}let O=K.shift();G=O?B.concat(O):B}if(Q.length>1)Q.sort((F,N)=>{return F.score-N.score});return[Q.map(({handler:F,params:N})=>[F,N])]}};var s3$=L(()=>{jL();EL();Do=Object.create(null)});var v01=class{name="TrieRouter";#$;constructor(){this.#$=new a3$}add($,Z,X){let Q=gG0(Z);if(Q){for(let Y=0,G=Q.length;Y<G;Y++)this.#$.insert($,Q[Y],X);return}this.#$.insert($,Z,X)}match($,Z){return this.#$.search($,Z)}};var e3$=L(()=>{EL();s3$()});var $K$=L(()=>{e3$()});var U1;var x01=L(()=>{c3$();t3$();r3$();$K$();U1=class extends u3${constructor($={}){super($);this.router=$.router??new _01({routers:[new pG0,new v01]})}}});var E8=L(()=>{x01()});import{z as Y6}from"zod";function ZK$(){return fw4.parse(process.env)}var f01=($)=>Y6.enum(["true","false","1","0"]).optional().transform((Z)=>Z===void 0?$:Z==="true"||Z==="1"),xw4=($)=>Y6.string().optional().transform((Z)=>Z?Z.split(",").map((X)=>X.trim()):$),fw4;var XK$=L(()=>{fw4=Y6.object({AUTH_EMAIL_PASSWORD_ENABLED:f01(!0),AUTH_GOOGLE_CLIENT_ID:Y6.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:Y6.string().optional(),AUTH_GITHUB_CLIENT_ID:Y6.string().optional(),AUTH_GITHUB_CLIENT_SECRET:Y6.string().optional(),AUTH_RESEND_API_KEY:Y6.string().optional(),AUTH_RESEND_FROM_EMAIL:Y6.string().optional(),AUTH_SENDGRID_API_KEY:Y6.string().optional(),AUTH_SENDGRID_FROM_EMAIL:Y6.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:f01(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:f01(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:Y6.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:Y6.coerce.number().optional(),AUTH_SSO_DOMAIN:Y6.string().optional(),AUTH_SSO_MS_TENANT_ID:Y6.string().optional(),AUTH_SSO_MS_CLIENT_ID:Y6.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:Y6.string().optional(),AUTH_SSO_SCOPES:xw4(["openid","email","profile"]),AUTH_SSO_GOOGLE_CLIENT_ID:Y6.string().optional(),AUTH_SSO_GOOGLE_CLIENT_SECRET:Y6.string().optional()}).superRefine(($,Z)=>{let X=new Set;if($.AUTH_RESEND_API_KEY)X.add("resend");if($.AUTH_SENDGRID_API_KEY)X.add("sendgrid");let Q=["AUTH_INVITE_EMAIL_PROVIDER","AUTH_RESET_PASSWORD_EMAIL_PROVIDER","AUTH_MAGIC_LINK_EMAIL_PROVIDER","AUTH_EMAIL_OTP_EMAIL_PROVIDER"];for(let Y of Q){let G=$[Y];if(G&&!X.has(G)){let J=G==="resend"?"AUTH_RESEND_API_KEY":"AUTH_SENDGRID_API_KEY";Z.addIssue({code:Y6.ZodIssueCode.custom,path:[Y],message:`${Y}="${G}" but ${J} is not set`})}}if($.AUTH_MAGIC_LINK_ENABLED&&X.size===0)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_MAGIC_LINK_ENABLED"],message:"AUTH_MAGIC_LINK_ENABLED=true requires AUTH_RESEND_API_KEY or AUTH_SENDGRID_API_KEY to be set"});if($.AUTH_EMAIL_OTP_ENABLED&&X.size===0)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_ENABLED"],message:"AUTH_EMAIL_OTP_ENABLED=true requires AUTH_RESEND_API_KEY or AUTH_SENDGRID_API_KEY to be set"});if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN){if(!$.AUTH_SSO_MS_CLIENT_SECRET)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_MS_CLIENT_SECRET"],message:"AUTH_SSO_MS_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_MS_CLIENT_SECRET is not"});if(!$.AUTH_SSO_MS_TENANT_ID)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_MS_TENANT_ID"],message:"AUTH_SSO_MS_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_MS_TENANT_ID is not"})}if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN&&!$.AUTH_SSO_GOOGLE_CLIENT_SECRET)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_GOOGLE_CLIENT_SECRET"],message:"AUTH_SSO_GOOGLE_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_GOOGLE_CLIENT_SECRET is not"});if($.AUTH_EMAIL_OTP_LENGTH!==void 0&&(!Number.isInteger($.AUTH_EMAIL_OTP_LENGTH)||$.AUTH_EMAIL_OTP_LENGTH<1))Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_LENGTH"],message:"AUTH_EMAIL_OTP_LENGTH must be a positive integer"});if($.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&(!Number.isInteger($.AUTH_EMAIL_OTP_EXPIRES_IN)||$.AUTH_EMAIL_OTP_EXPIRES_IN<1))Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_EXPIRES_IN"],message:"AUTH_EMAIL_OTP_EXPIRES_IN must be a positive integer"})}).transform(($)=>{let Z={};if($.AUTH_GOOGLE_CLIENT_ID)Z.google={clientId:$.AUTH_GOOGLE_CLIENT_ID,clientSecret:$.AUTH_GOOGLE_CLIENT_SECRET??""};if($.AUTH_GITHUB_CLIENT_ID)Z.github={clientId:$.AUTH_GITHUB_CLIENT_ID,clientSecret:$.AUTH_GITHUB_CLIENT_SECRET??""};let X=[];if($.AUTH_RESEND_API_KEY)X.push({id:"resend",provider:"resend",config:{apiKey:$.AUTH_RESEND_API_KEY,fromEmail:$.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if($.AUTH_SENDGRID_API_KEY)X.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:$.AUTH_SENDGRID_API_KEY,fromEmail:$.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let Q=X[0]?.id,Y;if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Y={providerId:"microsoft",domain:$.AUTH_SSO_DOMAIN,MS_TENANT_ID:$.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:$.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:$.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};else if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Y={providerId:"google",domain:$.AUTH_SSO_DOMAIN,GOOGLE_CLIENT_ID:$.AUTH_SSO_GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:$.AUTH_SSO_GOOGLE_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};let G;if($.AUTH_MAGIC_LINK_ENABLED)G={enabled:!0,emailProviderId:$.AUTH_MAGIC_LINK_EMAIL_PROVIDER??Q??""};let J;if($.AUTH_EMAIL_OTP_ENABLED)J={enabled:!0,emailProviderId:$.AUTH_EMAIL_OTP_EMAIL_PROVIDER??Q??"",...$.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:$.AUTH_EMAIL_OTP_LENGTH},...$.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:$.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:$.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Z).length>0?Z:void 0,emailProviders:X.length>0?X:void 0,inviteEmailProviderId:$.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:$.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:Y,magicLinkConfig:G,emailOtpConfig:J}})});var nG0;var QK$=L(()=>{nG0={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as bw4,readFileSync as yw4}from"fs";function gw4(){let $=ZK$(),Z=y0().configPath;if(!bw4(Z))return{auth:$,monitoring:nG0};try{let X=JSON.parse(yw4(Z,"utf-8"));if(X.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:$,monitoring:X.monitoring??nG0,theme:X.theme,logo:X.logo,autoCreateOrganizationOnSignup:X.autoCreateOrganizationOnSignup}}catch{return{auth:$,monitoring:nG0}}}function bN(){if(!b01)b01=gw4();return b01}function YK$(){return bN().theme}var b01=null;var tG0=L(()=>{XK$();QK$();R$()});import{dirname as hw4,posix as uw4,sep as cw4}from"path";function JK$(){let $=lw4();return async(Z)=>{for(let X of Z)X.module=$(X.filename);return Z}}function lw4($=process.argv[1]?hw4(process.argv[1]):process.cwd(),Z=cw4==="\\"){let X=Z?GK$($):$;return(Q)=>{if(!Q)return;let Y=Z?GK$(Q):Q,{dir:G,base:J,ext:K}=uw4.parse(Y);if(K===".js"||K===".mjs"||K===".cjs")J=J.slice(0,-1*K.length);let W=decodeURIComponent(J);if(!G)G=".";let H=G.lastIndexOf("/node_modules");if(H>-1)return`${G.slice(H+14).replace(/\//g,".")}:${W}`;if(G.startsWith(X)){let F=G.slice(X.length+1).replace(/\//g,".");return F?`${F}:${W}`:W}return W}}function GK$($){return $.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var KK$=()=>{};function mw4($,Z,X){return{key:$,enabled:typeof Z=="string"?!0:Z,variant:typeof Z=="string"?Z:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:X?JSON.stringify(X):void 0,description:void 0}}}var y01=($)=>{if("flags"in $){let Z=WK$($.flags),X=HK$($.flags);return{...$,featureFlags:Z,featureFlagPayloads:X}}{let Z=$.featureFlags??{},X=Object.fromEntries(Object.entries($.featureFlagPayloads||{}).map(([Y,G])=>[Y,g01(G)])),Q=Object.fromEntries(Object.entries(Z).map(([Y,G])=>[Y,mw4(Y,G,X[Y])]));return{...$,featureFlags:Z,featureFlagPayloads:X,flags:Q}}},WK$=($)=>Object.fromEntries(Object.entries($??{}).map(([Z,X])=>[Z,wo(X)]).filter(([,Z])=>Z!==void 0)),HK$=($)=>{let Z=$??{};return Object.fromEntries(Object.keys(Z).filter((X)=>{let Q=Z[X];return Q.enabled&&Q.metadata&&Q.metadata.payload!==void 0}).map((X)=>{let Q=Z[X].metadata?.payload;return[X,Q?g01(Q):void 0]}))},wo=($)=>$===void 0?void 0:$.variant??$.enabled,g01=($)=>{if(typeof $!="string")return $;try{return JSON.parse($)}catch{return $}};var oG0=()=>{};function FK$(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function rG0($,Z=!0,X){try{let Q=new CompressionStream("gzip"),Y=Q.writable.getWriter(),G=Y.write(new TextEncoder().encode($)).then(()=>Y.close()).catch(async(W)=>{try{await Y.abort(W)}catch{}throw W}),J=new Response(Q.readable).blob(),[K]=await Promise.all([J,G]);return K}catch(Q){if(X?.rethrow)throw Q;if(Z)console.error("Failed to gzip compress data",Q);return null}}var h01=()=>{};var dw4,NK$=function($,Z=[]){if(!$)return!1;let X=$.toLowerCase();return dw4.concat(Z).some((Q)=>{let Y=Q.toLowerCase();return X.indexOf(Y)!==-1})};var UK$=L(()=>{dw4=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var OX;var Zz=L(()=>{OX=function($){return $.AnonymousId="anonymous_id",$.DistinctId="distinct_id",$.Props="props",$.EnablePersonProcessing="enable_person_processing",$.PersonMode="person_mode",$.FeatureFlagDetails="feature_flag_details",$.FeatureFlags="feature_flags",$.FeatureFlagPayloads="feature_flag_payloads",$.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",$.BootstrapFeatureFlags="bootstrap_feature_flags",$.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",$.OverrideFeatureFlags="override_feature_flags",$.Queue="queue",$.LogsQueue="logs_queue",$.OptedOut="opted_out",$.SessionId="session_id",$.SessionStartTimestamp="session_start_timestamp",$.SessionLastTimestamp="session_timestamp",$.PersonProperties="person_properties",$.GroupProperties="group_properties",$.InstalledAppBuild="installed_app_build",$.InstalledAppVersion="installed_app_version",$.SessionReplay="session_replay",$.SurveyLastSeenDate="survey_last_seen_date",$.SurveysSeen="surveys_seen",$.Surveys="surveys",$.RemoteConfig="remote_config",$.FlagsEndpointWasHit="flags_endpoint_was_hit",$.DeviceId="device_id",$}({})});var aG0=()=>{};function eG0($){return $===null||typeof $!="object"}function Xz($,Z){return Object.prototype.toString.call($)===`[object ${Z}]`}function LK$($){return Xz($,"ErrorEvent")}function Ch($){return typeof Event<"u"&&nw4($,Event)}function DK$($){return Xz($,"Object")}function nw4($,Z){try{return $ instanceof Z}catch{return!1}}var pw4,BK$,SS5,u01,sG0,Eo=($)=>$===Object($)&&!sG0($),Sh=($)=>$===void 0,zL=($)=>u01.call($)=="[object String]",OK$=($)=>zL($)&&$.trim().length===0,jo=($)=>u01.call($)=="[object Number]"&&$===$,c01=($)=>$ instanceof Error;var zo=L(()=>{Zz();aG0();pw4=Array.isArray,BK$=Object.prototype,SS5=BK$.hasOwnProperty,u01=BK$.toString,sG0=pw4||function($){return u01.call($)==="[object Array]"}});function Po($,Z,X,Q,Y){if(Z>X)Q.warn("min cannot be greater than max."),Z=X;if(jo($))if($>X)return Q.warn(" cannot be greater than max: "+X+". Using max value instead."),X;else{if(!($<Z))return $;return Q.warn(" cannot be less than min: "+Z+". Using min value instead."),Z}return Q.warn(" must be a number. using max or fallback. max: "+X+", fallback: "+Y),Po(Y||X,Z,X,Q)}var l01=L(()=>{zo()});class m01{constructor($){this._buckets={},this._onBucketRateLimited=$._onBucketRateLimited,this._bucketSize=Po($.bucketSize,0,100,$._logger),this._refillRate=Po($.refillRate,0,this._bucketSize,$._logger),this._refillInterval=Po($.refillInterval,0,tw4,$._logger)}_applyRefill($,Z){let X=Z-$.lastAccess,Q=Math.floor(X/this._refillInterval);if(Q>0){let Y=Q*this._refillRate;$.tokens=Math.min($.tokens+Y,this._bucketSize),$.lastAccess=$.lastAccess+Q*this._refillInterval}}consumeRateLimit($){let Z=Date.now(),X=String($),Q=this._buckets[X];if(Q)this._applyRefill(Q,Z);else Q={tokens:this._bucketSize,lastAccess:Z},this._buckets[X]=Q;if(Q.tokens===0)return!0;if(Q.tokens--,Q.tokens===0)this._onBucketRateLimited?.($);return Q.tokens===0}stop(){this._buckets={}}}var tw4=86400000;var wK$=L(()=>{l01()});class Qz{constructor($){this.bytes=$}static ofInner($){if($.length===16)return new Qz($);throw TypeError("not 128-bit length")}static fromFieldsV7($,Z,X,Q){if(!Number.isInteger($)||!Number.isInteger(Z)||!Number.isInteger(X)||!Number.isInteger(Q)||$<0||Z<0||X<0||Q<0||$>281474976710655||Z>4095||X>1073741823||Q>4294967295)throw RangeError("invalid field value");let Y=new Uint8Array(16);return Y[0]=$/1099511627776,Y[1]=$/4294967296,Y[2]=$/16777216,Y[3]=$/65536,Y[4]=$/256,Y[5]=$,Y[6]=112|Z>>>8,Y[7]=Z,Y[8]=128|X>>>24,Y[9]=X>>>16,Y[10]=X>>>8,Y[11]=X,Y[12]=Q>>>24,Y[13]=Q>>>16,Y[14]=Q>>>8,Y[15]=Q,new Qz(Y)}static parse($){let Z;switch($.length){case 32:Z=/^[0-9a-f]{32}$/i.exec($)?.[0];break;case 36:Z=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;case 38:Z=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec($)?.slice(1,6).join("");break;case 45:Z=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;default:break}if(Z){let X=new Uint8Array(16);for(let Q=0;Q<16;Q+=4){let Y=parseInt(Z.substring(2*Q,2*Q+8),16);X[Q+0]=Y>>>24,X[Q+1]=Y>>>16,X[Q+2]=Y>>>8,X[Q+3]=Y}return new Qz(X)}throw SyntaxError("could not parse UUID string")}toString(){let $="";for(let Z=0;Z<this.bytes.length;Z++)if($+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]),Z===3||Z===5||Z===7||Z===9)$+="-";return $}toHex(){let $="";for(let Z=0;Z<this.bytes.length;Z++)$+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]);return $}toJSON(){return this.toString()}getVariant(){let $=this.bytes[8]>>>4;if($<0)throw Error("unreachable");if($<=7)return this.bytes.every((Z)=>Z===0)?"NIL":"VAR_0";if($<=11)return"VAR_10";if($<=13)return"VAR_110";if($<=15)return this.bytes.every((Z)=>Z===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new Qz(this.bytes.slice(0))}equals($){return this.compareTo($)===0}compareTo($){for(let Z=0;Z<16;Z++){let X=this.bytes[Z]-$.bytes[Z];if(X!==0)return Math.sign(X)}return 0}}class jK${constructor($){this.timestamp=0,this.counter=0,this.random=$??ow4()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore($,Z){let X=this.generateOrAbortCore($,Z);if(X===void 0)this.timestamp=0,X=this.generateOrAbortCore($,Z);return X}generateOrAbortCore($,Z){if(!Number.isInteger($)||$<1||$>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Z<0||Z>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if($>this.timestamp)this.timestamp=$,this.resetCounter();else{if(!($+Z>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return Qz.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let $=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return $[6]=64|$[6]>>>4,$[8]=128|$[8]>>>2,Qz.ofInner($)}}var ow4=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),EK$,PL=()=>rw4().toString(),rw4=()=>(EK$||(EK$=new jK$)).generate();var Ao=L(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class d01{add($){let Z=PL();return this.promiseByIds[Z]=$,$.catch(()=>{}).finally(()=>{delete this.promiseByIds[Z]}),$}async join(){let $=Object.values(this.promiseByIds),Z=$.length;while(Z>0)await Promise.all($),$=Object.values(this.promiseByIds),Z=$.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var zK$=L(()=>{Ao()});function aw4($=console){return{log:$.log.bind($),warn:$.warn.bind($),error:$.error.bind($),debug:$.debug.bind($)}}function AK$($,Z=sw4){return PK$($,Z,aw4())}var PK$=($,Z,X)=>{function Q(G,...J){Z(()=>{let K=X[G];K($,...J)})}return{info:(...G)=>{Q("log",...G)},warn:(...G)=>{Q("warn",...G)},error:(...G)=>{Q("error",...G)},critical:(...G)=>{X.error($,...G)},createLogger:(G)=>PK$(`${$} ${G}`,Z,X)}},sw4=($)=>$();var TK$=()=>{};var vh="Mobile",ZJ0="iOS",_h="Android",RK$="Tablet",lS5,$E4="Apple",mS5,IK$="Safari",XJ0="BlackBerry",qK$="Samsung",ZE4,XE4,QJ0="Chrome",QE4,YE4,MK$="Internet Explorer",GE4,p01="Opera",dS5,VK$="Edge",JE4,n01="Firefox",KE4,t01="Nintendo",o01="PlayStation",$J0="Xbox",WE4,HE4,To="Windows",FE4,kK$="Generic",iS5,pS5,NE4="Konqueror",HQ="(\\d+(\\.\\d+)?)",i01,nS5,tS5,oS5,UE4,BE4,rS5,aS5;var SK$=L(()=>{aG0();zo();lS5=_h+" "+RK$,mS5=$E4+" Watch",ZE4=qK$+"Browser",XE4=qK$+" Internet",QE4=QJ0+" OS",YE4=QJ0+" "+ZJ0,GE4=MK$+" "+vh,dS5=p01+" Mini",JE4="Microsoft "+VK$,KE4=n01+" "+ZJ0,WE4=_h+" "+vh,HE4=vh+" "+IK$,FE4=To+" Phone",iS5=kK$+" "+vh.toLowerCase(),pS5=kK$+" "+RK$.toLowerCase(),i01=new RegExp("Version/"+HQ),nS5=new RegExp($J0,"i"),tS5=new RegExp(o01+" \\w+","i"),oS5=new RegExp(t01+" \\w+","i"),UE4=new RegExp(XJ0+"|PlayBook|BB10","i"),BE4={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},rS5={[GE4]:[new RegExp("rv:"+HQ)],[JE4]:[new RegExp(VK$+"?\\/"+HQ)],[QJ0]:[new RegExp("("+QJ0+"|CrMo)\\/"+HQ)],[YE4]:[new RegExp("CriOS\\/"+HQ)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+HQ)],[IK$]:[i01],[HE4]:[i01],[p01]:[new RegExp("("+p01+"|OPR)\\/"+HQ)],[n01]:[new RegExp(n01+"\\/"+HQ)],[KE4]:[new RegExp("FxiOS\\/"+HQ)],[NE4]:[new RegExp("Konqueror[:/]?"+HQ,"i")],[XJ0]:[new RegExp(XJ0+" "+HQ),i01],[WE4]:[new RegExp("android\\s"+HQ,"i")],[XE4]:[new RegExp(ZE4+"\\/"+HQ)],[MK$]:[new RegExp("(rv:|MSIE )"+HQ)],Mozilla:[new RegExp("rv:"+HQ)]},aS5=[[new RegExp($J0+"; "+$J0+" (.*?)[);]","i"),($)=>[$J0,$&&$[1]||""]],[new RegExp(t01,"i"),[t01,""]],[new RegExp(o01,"i"),[o01,""]],[UE4,[XJ0,""]],[new RegExp(To,"i"),($,Z)=>{if(/Phone/.test(Z)||/WPDesktop/.test(Z))return[FE4,""];if(new RegExp(vh).test(Z)&&!/IEMobile\b/.test(Z))return[To+" "+vh,""];let X=/Windows NT ([0-9.]+)/i.exec(Z);if(X&&X[1]){let Q=X[1],Y=BE4[Q]||"";if(/arm/i.test(Z))Y="RT";return[To,Y]}return[To,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,($)=>{if($&&$[3]){let Z=[$[3],$[4],$[5]||"0"];return[ZJ0,Z.join(".")]}return[ZJ0,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,($)=>{let Z="";if($&&$.length>=3)Z=Sh($[2])?$[3]:$[2];return["watchOS",Z]}],[new RegExp("("+_h+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+_h+")","i"),($)=>{if($&&$[2]){let Z=[$[2],$[3],$[4]||"0"];return[_h,Z.join(".")]}return[_h,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,($)=>{let Z=["Mac OS X",""];if($&&$[1]){let X=[$[1],$[2],$[3]||"0"];Z[1]=X.join(".")}return Z}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[QE4,""]],[/Linux|debian/i,["Linux",""]]]});function _K$($){return $?.replace(/\/+$/,"")}async function vK$($,Z){let X=null;for(let Q=0;Q<Z.retryCount+1;Q++){if(Q>0)await new Promise((Y)=>setTimeout(Y,Z.retryDelay));try{return await $()}catch(Y){if(X=Y,!Z.retryCheck(Y))throw Y}}throw X}function YJ0(){return new Date().toISOString()}function yN($,Z){let X=setTimeout($,Z);return X?.unref&&X?.unref(),X}function r01($){return Promise.all($.map((Z)=>(Z??Promise.resolve()).then((X)=>({status:"fulfilled",value:X}),(X)=>({status:"rejected",reason:X}))))}var CK$="utf8",xK$=($)=>$ instanceof Error;var FQ=L(()=>{UK$();wK$();l01();aG0();zo();zK$();TK$();SK$()});var OE4,NC5;var a01=L(()=>{FQ();OE4={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},NC5=OE4.info});var fK$=L(()=>{a01();Zz()});var bK$=L(()=>{Zz()});class s01{constructor(){this.events={},this.events={}}on($,Z){if(!this.events[$])this.events[$]=[];return this.events[$].push(Z),()=>{this.events[$]=this.events[$].filter((X)=>X!==Z)}}emit($,Z){for(let X of this.events[$]||[])X(Z);for(let X of this.events["*"]||[])X($,Z)}}var yK$=()=>{};async function gK$($){if($ instanceof xh){let Z="";try{Z=await $.text}catch{}console.error(`Error while flushing PostHog: message=${$.message}, response body=${Z}`,$)}else console.error("Error while flushing PostHog",$);return Promise.resolve()}function e01($){return typeof $=="object"&&($ instanceof xh||$ instanceof Ro)}function hK$($){return typeof $=="object"&&$ instanceof xh&&$.status===413}class GJ0{constructor($,Z={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new d01,this._events=new s01,this._isInitialized=!1;let X=typeof $=="string"?$.trim():"",Q=typeof Z.host=="string"?Z.host.trim():"",Y=!X;if(this._logger=AK$("[PostHog]",this.logMsgIfDebug.bind(this)),Y)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=X,this.host=_K$(Q||"https://us.i.posthog.com"),this.flushAt=Z.flushAt?Math.max(Z.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Z.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Z.maxQueueSize??1000),this.flushInterval=Z.flushInterval??1e4,this.preloadFeatureFlags=Z.preloadFeatureFlags??!0,this.defaultOptIn=Z.defaultOptIn??!0,this.disableSurveys=Z.disableSurveys??!1,this._retryOptions={retryCount:Z.fetchRetryCount??3,retryDelay:Z.fetchRetryDelay??3000,retryCheck:e01},this.requestTimeout=Z.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Z.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Z.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Z.disableGeoip??!0,this.disabled=(Z.disabled??!1)||Y,this.historicalMigration=Z?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Z?.evaluationContexts??Z?.evaluationEnvironments,Z?.evaluationEnvironments&&!Z?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!FK$()||(Z?.disableCompression??!1)}logMsgIfDebug($){if(this.isDebug)$()}wrap($){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return $();this._initPromise.then(()=>$())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(OX.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(OX.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(OX.OptedOut,!0)})}on($,Z){return this._events.on($,Z)}debug($=!0){if(this.removeDebugCallback?.(),$){let Z=this.on("*",(X,Q)=>this._logger.info(X,Q));this.removeDebugCallback=()=>{Z(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload($){return{distinct_id:$.distinct_id,event:$.event,properties:{...$.properties||{},...this.getCommonEventProperties()}}}addPendingPromise($){return this.promiseQueue.add($)}identifyStateless($,Z,X){this.wrap(()=>{let Q={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};this.enqueue("identify",Q,X)})}async identifyStatelessImmediate($,Z,X){let Q={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};await this.sendImmediate("identify",Q,X)}captureStateless($,Z,X,Q){this.wrap(()=>{let Y=this.buildPayload({distinct_id:$,event:Z,properties:X});this.enqueue("capture",Y,Q)})}async captureStatelessImmediate($,Z,X,Q){let Y=this.buildPayload({distinct_id:$,event:Z,properties:X});await this.sendImmediate("capture",Y,Q)}aliasStateless($,Z,X,Q){this.wrap(()=>{let Y=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...X||{},distinct_id:Z,alias:$}});this.enqueue("alias",Y,Q)})}async aliasStatelessImmediate($,Z,X,Q){let Y=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...X||{},distinct_id:Z,alias:$}});await this.sendImmediate("alias",Y,Q)}groupIdentifyStateless($,Z,X,Q,Y,G){this.wrap(()=>{let J=this.buildPayload({distinct_id:Y||`$${$}_${Z}`,event:"$groupidentify",properties:{$group_type:$,$group_key:Z,$group_set:X||{},...G||{}}});this.enqueue("capture",J,Q)})}async getRemoteConfig(){await this._initPromise;let $=this.host;if($==="https://us.i.posthog.com")$="https://us-assets.i.posthog.com";else if($==="https://eu.i.posthog.com")$="https://eu-assets.i.posthog.com";let Z=`${$}/array/${this.apiKey}/config`,X={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Z,X,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((Q)=>Q.json()).catch((Q)=>{this._logger.error("Remote config could not be loaded",Q),this._events.emit("error",Q)})}async getFlags($,Z={},X={},Q={},Y={},G=!1){await this._initPromise;let J=G?"&config=true":"",K=`${this.host}/flags/?v=2${J}`,W={token:this.apiKey,distinct_id:$,groups:Z,person_properties:X,group_properties:Q,...Y};if(X.$device_id)W.$device_id=X.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)W.evaluation_contexts=this.evaluationContexts;let H={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(W)};return this._logger.info("Flags URL",K),this.fetchWithRetry(K,H,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((F)=>F.json()).then((F)=>({success:!0,response:y01(F)})).catch((F)=>{return this._events.emit("error",F),{success:!1,error:this.categorizeRequestError(F)}})}categorizeRequestError($){if($ instanceof xh)return{type:"api_error",statusCode:$.status};if($ instanceof Ro){let Z=$.error;if(Z instanceof Error&&(Z.name==="AbortError"||Z.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagDetailStateless($,Z,X,Q,Y,G);if(J===void 0)return{response:void 0,requestId:void 0};let K=wo(J.response);if(K===void 0)K=!1;return{response:K,requestId:J.requestId}}async getFeatureFlagDetailStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless(Z,X,Q,Y,G,[$]);if(J===void 0)return;return{response:J.flags[$],requestId:J.requestId,evaluatedAt:J.evaluatedAt}}async getFeatureFlagPayloadStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagPayloadsStateless(Z,X,Q,Y,G,[$]);if(!J)return;let K=J[$];if(K===void 0)return null;return K}async getFeatureFlagPayloadsStateless($,Z={},X={},Q={},Y,G){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless($,Z,X,Q,Y,G)).payloads}async getFeatureFlagsStateless($,Z={},X={},Q={},Y,G){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless($,Z,X,Q,Y,G)}async getFeatureFlagsAndPayloadsStateless($,Z={},X={},Q={},Y,G){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless($,Z,X,Q,Y,G);if(!J)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:J.featureFlags,payloads:J.featureFlagPayloads,requestId:J.requestId}}async getFeatureFlagDetailsStateless($,Z={},X={},Q={},Y,G){await this._initPromise;let J={};if(Y??this.disableGeoip)J.geoip_disable=!0;if(G)J.flag_keys_to_evaluate=G;let K=await this.getFlags($,Z,X,Q,J);if(!K.success)return;let W=K.response;if(W.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(W.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:W?.requestId,quotaLimited:W.quotaLimited};return W}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let $=`${this.host}/api/surveys/?token=${this.apiKey}`,Z={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},Q=(await this.fetchWithRetry($,Z).then((Y)=>{if(Y.status!==200||!Y.json){let G=`Surveys API could not be loaded: ${Y.status}`,J=Error(G);this._logger.error(J),this._events.emit("error",Error(G));return}return Y.json()}).catch((Y)=>{this._logger.error("Surveys API could not be loaded",Y),this._events.emit("error",Y)}))?.surveys;if(Q)this._logger.info("Surveys fetched from API: ",JSON.stringify(Q));return Q??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(OX.Props);return this._props||{}}set props($){this._props=$}async register($){this.wrap(()=>{this.props={...this.props,...$},this.setPersistedProperty(OX.Props,this.props)})}async unregister($){this.wrap(()=>{delete this.props[$],this.setPersistedProperty(OX.Props,this.props)})}processBeforeEnqueue($){return $}async flushStorage(){}enqueue($,Z,X){this.wrap(()=>{if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage($,Z,X);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let Y=this.getPersistedProperty(OX.Queue)||[];if(Y.length>=this.maxQueueSize)Y.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(Y.push({message:Q}),this.setPersistedProperty(OX.Queue,Y),this._events.emit($,Q),Y.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=yN(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate($,Z,X){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage($,Z,X);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let Y={api_key:this.apiKey,batch:[Q],sent_at:YJ0()};if(this.historicalMigration)Y.historical_migration=!0;let G=JSON.stringify(Y),J=`${this.host}/batch/`,K=this.disableCompression?null:await rG0(G,this.isDebug),W={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...K!==null&&{"Content-Encoding":"gzip"}},body:K||G};try{await this.fetchWithRetry(J,W)}catch(H){this._events.emit("error",H)}}prepareMessage($,Z,X){let Q={...Z,type:$,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:X?.timestamp?X?.timestamp:YJ0(),uuid:X?.uuid?X.uuid:PL()};if(X?.disableGeoip??this.disableGeoip){if(!Q.properties)Q.properties={};Q.properties.$geoip_disable=!0}if(Q.distinctId)Q.distinct_id=Q.distinctId,delete Q.distinctId;return Q}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async($)=>{await gK$($)})}async flush(){let $=r01([this.flushPromise]).then(()=>this._flush());return this.flushPromise=$,this.addPendingPromise($),r01([$]).then(()=>{if(this.flushPromise===$)this.flushPromise=null}),$}getCustomHeaders(){let $=this.getCustomUserAgent(),Z={};if($&&$!=="")Z["User-Agent"]=$;return Z}async _flush(){this.clearFlushTimer(),await this._initPromise;let $=this.getPersistedProperty(OX.Queue)||[];if(!$.length)return;let Z=[],X=$.length;while($.length>0&&Z.length<X){let Q=$.slice(0,this.maxBatchSize),Y=Q.map((U)=>U.message),G=async()=>{let B=(this.getPersistedProperty(OX.Queue)||[]).slice(Q.length);this.setPersistedProperty(OX.Queue,B),$=B,await this.flushStorage()},J={api_key:this.apiKey,batch:Y,sent_at:YJ0()};if(this.historicalMigration)J.historical_migration=!0;let K=JSON.stringify(J),W=`${this.host}/batch/`,H=this.disableCompression?null:await rG0(K,this.isDebug),F={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...H!==null&&{"Content-Encoding":"gzip"}},body:H||K},N={retryCheck:(U)=>{if(hK$(U))return!1;return e01(U)}};try{await this.fetchWithRetry(W,F,N)}catch(U){if(hK$(U)&&Y.length>1){this.maxBatchSize=Math.max(1,Math.floor(Y.length/2)),this._logger.warn(`Received 413 when sending batch of size ${Y.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(U instanceof Ro))await G();throw this._events.emit("error",U),U}await G(),Z.push(...Y)}this._events.emit("flush",Z)}async fetchWithRetry($,Z,X,Q){let Y=Z.body?Z.body:"",G=-1;try{G=Y instanceof Blob?Y.size:Buffer.byteLength(Y,CK$)}catch{if(Y instanceof Blob)G=Y.size;else G=new TextEncoder().encode(Y).length}return await vK$(async()=>{let J=new AbortController,K=Q??this.requestTimeout,W=yN(()=>J.abort(),K),H=null;try{H=await this.fetch($,{signal:J.signal,...Z})}catch(N){throw new Ro(N)}finally{clearTimeout(W)}if(Z.mode!=="no-cors"&&(H.status<200||H.status>=400))throw new xh(H,G);return H},{...this._retryOptions,...X})}async _shutdown($=30000){await this._initPromise;let Z=!1;this.clearFlushTimer();let X=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(OX.Queue)||[]).length===0)break;if(await this.flush(),Z)break}}catch(Y){if(!e01(Y))throw Y;await gK$(Y)}},Q;try{return await Promise.race([new Promise((Y,G)=>{Q=yN(()=>{this._logger.error("Timed out while shutting down PostHog"),Z=!0,G("Timeout while shutting down PostHog. Some events may not have been sent.")},$)}),X()])}finally{clearTimeout(Q)}}async shutdown($=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown($).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var xh,Ro;var $11=L(()=>{yK$();oG0();h01();Zz();FQ();Ao();xh=class xh extends Error{constructor($,Z){super("HTTP error while fetching PostHog: status="+$.status+", reqByteLength="+Z),this.response=$,this.reqByteLength=Z,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};Ro=class Ro extends Error{constructor($){super("Network error while fetching PostHog",$ instanceof Error?{cause:$}:{}),this.error=$,this.name="PostHogFetchNetworkError"}}});var uK$=L(()=>{oG0();Zz();$11();Ao();FQ()});var cK$=L(()=>{zo()});function mK$($){let Z=globalThis._posthogChunkIds;if(!Z)return;let X=Object.keys(Z);if(KJ0&&X.length===lK$)return KJ0;return lK$=X.length,KJ0=X.reduce((Q,Y)=>{if(!JJ0)JJ0={};let G=JJ0[Y];if(G)Q[G[0]]=G[1];else{let J=$(Y);for(let K=J.length-1;K>=0;K--){let H=J[K]?.filename,F=Z[Y];if(H&&F){Q[H]=F,JJ0[Y]=[H,F];break}}}return Q},{}),KJ0}var JJ0,lK$,KJ0;var dK$=()=>{};class iK${constructor($,Z,X=[]){this.coercers=$,this.stackParser=Z,this.modifiers=X}buildFromUnknown($,Z={}){let Q=Z&&Z.mechanism||{handled:!0,type:"generic"},G=this.buildCoercingContext(Q,Z,0).apply($),J=this.buildParsingContext(Z),K=this.parseStacktrace(G,J);return{$exception_list:this.convertToExceptionList(K,Q),$exception_level:"error"}}async modifyFrames($){for(let Z of $)if(Z.stacktrace&&Z.stacktrace.frames&&sG0(Z.stacktrace.frames))Z.stacktrace.frames=await this.applyModifiers(Z.stacktrace.frames);return $}coerceFallback($){return{type:"Error",value:"Unknown error",stack:$.syntheticException?.stack,synthetic:!0}}parseStacktrace($,Z){let X;if($.cause!=null)X=this.parseStacktrace($.cause,Z);let Q;if($.stack!=""&&$.stack!=null)Q=this.applyChunkIds(this.stackParser($.stack,$.synthetic?Z.skipFirstLines:0),Z.chunkIdMap);return{...$,cause:X,stack:Q}}applyChunkIds($,Z){return $.map((X)=>{if(X.filename&&Z)X.chunk_id=Z[X.filename];return X})}applyCoercers($,Z){for(let X of this.coercers)if(X.match($))return X.coerce($,Z);return this.coerceFallback(Z)}async applyModifiers($){let Z=$;for(let X of this.modifiers)Z=await X(Z);return Z}convertToExceptionList($,Z){let X={type:$.type,value:$.value,mechanism:{type:Z.type??"generic",handled:Z.handled??!0,synthetic:$.synthetic??!1}};if($.stack)X.stacktrace={type:"raw",frames:$.stack};let Q=[X];if($.cause!=null)Q.push(...this.convertToExceptionList($.cause,{...Z,handled:!0}));return Q}buildParsingContext($){return{chunkIdMap:mK$(this.stackParser),skipFirstLines:$.skipFirstLines??1}}buildCoercingContext($,Z,X=0){let Q=(G,J)=>{if(!(J<=wE4))return;{let K=this.buildCoercingContext($,Z,J);return this.applyCoercers(G,K)}};return{...Z,syntheticException:X==0?Z.syntheticException:void 0,mechanism:$,apply:(G)=>Q(G,X),next:(G)=>Q(G,X+1)}}}var wE4=4;var pK$=L(()=>{FQ();dK$()});function JH($,Z,X,Q,Y){let G={platform:$,filename:Z,function:X==="<anonymous>"?q7:X,in_app:!0};if(!Sh(Q))G.lineno=Q;if(!Sh(Y))G.colno=Y;return G}var q7="?";var AL=L(()=>{FQ()});var WJ0=($,Z)=>{let X=$.indexOf("safari-extension")!==-1,Q=$.indexOf("safari-web-extension")!==-1;return X||Q?[$.indexOf("@")!==-1?$.split("@")[0]:q7,X?`safari-extension:${Z}`:`safari-web-extension:${Z}`]:[$,Z]};var Z11=L(()=>{AL()});var EE4,jE4,zE4,X11=($,Z)=>{let X=EE4.exec($);if(X){let[,Y,G,J]=X;return JH(Z,Y,q7,+G,+J)}let Q=jE4.exec($);if(Q){if(Q[2]&&Q[2].indexOf("eval")===0){let K=zE4.exec(Q[2]);if(K)Q[2]=K[1],Q[3]=K[2],Q[4]=K[3]}let[G,J]=WJ0(Q[1]||q7,Q[2]);return JH(Z,J,G,Q[3]?+Q[3]:void 0,Q[4]?+Q[4]:void 0)}};var nK$=L(()=>{AL();Z11();EE4=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,jE4=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,zE4=/\((\S*)(?::(\d+))(?::(\d+))\)/});var PE4,AE4,Q11=($,Z)=>{let X=PE4.exec($);if(X){if(X[3]&&X[3].indexOf(" > eval")>-1){let J=AE4.exec(X[3]);if(J)X[1]=X[1]||"eval",X[3]=J[1],X[4]=J[2],X[5]=""}let Y=X[3],G=X[1]||q7;return[G,Y]=WJ0(G,Y),JH(Z,Y,G,X[4]?+X[4]:void 0,X[5]?+X[5]:void 0)}};var tK$=L(()=>{AL();Z11();PE4=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,AE4=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var TE4,oK$=($,Z)=>{let X=TE4.exec($);return X?JH(Z,X[2],X[1]||q7,+X[3],X[4]?+X[4]:void 0):void 0};var rK$=L(()=>{AL();TE4=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var RE4,aK$=($,Z)=>{let X=RE4.exec($);return X?JH(Z,X[2],X[3]||q7,+X[1]):void 0},IE4,sK$=($,Z)=>{let X=IE4.exec($);return X?JH(Z,X[5],X[3]||X[4]||q7,+X[1],+X[2]):void 0};var eK$=L(()=>{AL();RE4=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,IE4=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function VE4($,Z=!1){return!(Z||$&&!$.startsWith("/")&&!$.match(/^[A-Z]:/)&&!$.startsWith(".")&&!$.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&$!==void 0&&!$.includes("node_modules/")}function $W$($){return parseInt($||"",10)||void 0}var qE4,ME4,ZW$=($,Z)=>{let X=$.match(ME4);if(X){let Q,Y,G,J,K;if(X[1]){G=X[1];let F=G.lastIndexOf(".");if(G[F-1]===".")F--;if(F>0){Q=G.slice(0,F),Y=G.slice(F+1);let N=Q.indexOf(".Module");if(N>0)G=G.slice(N+1),Q=Q.slice(0,N)}J=void 0}if(Y)J=Q,K=Y;if(Y==="<anonymous>")K=void 0,G=void 0;if(G===void 0)K=K||q7,G=J?`${J}.${K}`:K;let W=X[2]?.startsWith("file://")?X[2].slice(7):X[2],H=X[5]==="native";if(W?.match(/\/[A-Z]:/))W=W.slice(1);if(!W&&X[5]&&!H)W=X[5];return{filename:W?decodeURI(W):void 0,module:void 0,function:G,lineno:$W$(X[3]),colno:$W$(X[4]),in_app:VE4(W||"",H),platform:Z}}if($.match(qE4))return{filename:$,platform:Z}};var XW$=L(()=>{AL();qE4=/^\s*[-]{4,}$/,ME4=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function GW$($){if(!$.length)return[];let Z=Array.from($);return Z.reverse(),Z.slice(0,YW$).map((X)=>({...X,filename:X.filename||kE4(Z).filename,function:X.function||q7}))}function kE4($){return $[$.length-1]||{}}function SE4(){return JW$("web:javascript",X11,Q11)}function JW$($,...Z){return(X,Q=0)=>{let Y=[],G=X.split(`
|
|
1801
|
+
) desc`}class Ph{db;constructor($){this.db=$}async create($){let Z=new Date().toISOString(),X=X3$($._meta??{}),Q=TG0(X),Y=ZY(Q.tags),G=ZY(Q.categories),J={id:$.id,organization_id:$.organization_id,title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:JSON.stringify(X),tags:PG0(Y),categories:PG0(G),is_public:$.is_public?1:0,is_unlisted:$.is_unlisted?1:0,created_at:Z,updated_at:Z,created_by:$.created_by??null};await this.db.insertInto("private_registry_item").values(J).execute();let K=await this.findById($.organization_id,$.id);if(!K)throw Error(`Failed to create registry item "${$.id}"`);return K}async findById($,Z){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName($,Z){let X=await this.findById($,Z);if(X)return X;let Q=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("title","=",Z).executeTakeFirst();return Q?this.deserialize(Q):null}async update($,Z,X){let Q=await this.findById($,Z);if(!Q)throw Error(`Registry item not found: ${Z}`);let Y=X3$(X._meta??Q._meta??{}),G=TG0(Y),J=ZY(G.tags),K=ZY(G.categories),W={updated_at:new Date().toISOString()};if(X.title!==void 0)W.title=X.title;if(X.description!==void 0)W.description=X.description;if(X.server!==void 0)W.server_json=JSON.stringify(X.server);if(X._meta!==void 0)W.meta_json=JSON.stringify(Y);if(X._meta!==void 0)W.tags=PG0(J),W.categories=PG0(K);if(X.is_public!==void 0)W.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)W.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(W).where("organization_id","=",$).where("id","=",Z).execute();let H=await this.findById($,Z);if(!H)throw Error(`Registry item not found after update: ${Z}`);return H}async delete($,Z){let X=await this.findById($,Z);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",$).where("id","=",Z).execute(),X}async list($,Z={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$);if(!Z.includeUnlisted)X=X.where("is_unlisted","=",0);let Q=ZY(Z.tags);if(Q.length>0)X=X.where(AG0("tags",Q));let Y=ZY(Z.categories);if(Y.length>0)X=X.where(AG0("categories",Y));if(Z.where)X=X.where(W01(Z.where));let K=(await this.db.selectFrom(X.as("filtered")).select(S$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;X=X.orderBy(Q3$()).orderBy("created_at","desc");let H=jG0(Z.cursor)??Z.offset??0,F=Z.limit??24;X=X.limit(F).offset(H);let U=(await X.execute()).map((D)=>this.deserialize(D)),B=H+F<K,O=B?EG0(H+F):void 0;return{items:U,totalCount:K,hasMore:B,nextCursor:O}}async listPublic($,Z={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",$).where("is_public","=",1).where("is_unlisted","=",0),Q=ZY(Z.tags);if(Q.length>0)X=X.where(AG0("tags",Q));let Y=ZY(Z.categories);if(Y.length>0)X=X.where(AG0("categories",Y));if(Z.where)X=X.where(W01(Z.where));let K=(await this.db.selectFrom(X.as("filtered")).select(S$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;X=X.orderBy(Q3$()).orderBy("created_at","desc");let H=jG0(Z.cursor)??Z.offset??0,F=Z.limit??24;X=X.limit(F).offset(H);let U=(await X.execute()).map((D)=>this.deserialize(D)),B=H+F<K,O=B?EG0(H+F):void 0;return{items:U,totalCount:K,hasMore:B,nextCursor:O}}async getFilters($,Z){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",$);if(Z?.publicOnly)X=X.where("is_public","=",1);if(!Z?.includeUnlisted)X=X.where("is_unlisted","=",0);let Q=await X.execute(),Y=new Map,G=new Map;for(let K of Q){for(let W of oj(K.tags))Y.set(W,(Y.get(W)??0)+1);for(let W of oj(K.categories))G.set(W,(G.get(W)??0)+1)}let J=(K)=>Array.from(K.entries()).map(([W,H])=>({value:W,count:H})).sort((W,H)=>W.value.localeCompare(H.value));return{tags:J(Y),categories:J(G)}}async search($,Z={},X){let Q=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",$).orderBy("created_at","desc");if(X?.publicOnly)Q=Q.where("is_public","=",1);if(!X?.includeUnlisted)Q=Q.where("is_unlisted","=",0);let Y=await Q.execute(),G=Z.query?.trim().toLowerCase(),J=ZY(Z.tags),K=ZY(Z.categories),W=Y.filter((w)=>{if(G){let E=zG0(w.server_json,{}),j=zG0(w.meta_json,{}),z=TG0(j).short_description??"";if(![w.id,w.title,w.description??"",E.name??"",E.description??"",z].join(" ").toLowerCase().includes(G))return!1}if(J.length>0){let E=ZY(oj(w.tags));if(!J.every((j)=>E.includes(j)))return!1}if(K.length>0){let E=ZY(oj(w.categories));if(!K.every((j)=>E.includes(j)))return!1}return!0}),F=jG0(Z.cursor)??0,N=Z.limit??20,U=W.slice(F,F+N),B=F+N<W.length,O=B?EG0(F+N):void 0;return{items:U.map((w)=>({id:w.id,title:w.title,tags:oj(w.tags),categories:oj(w.categories),is_public:w.is_public===1,is_unlisted:w.is_unlisted===1})),totalCount:W.length,hasMore:B,nextCursor:O}}deserialize($){let Z=zG0($.server_json,{}),X=zG0($.meta_json,{});return{id:$.id,name:typeof Z.name==="string"?Z.name:void 0,title:$.title,description:$.description,_meta:X,server:Z,is_public:$.is_public===1,is_unlisted:$.is_unlisted===1,created_at:$.created_at,updated_at:$.updated_at,...$.created_by?{created_by:$.created_by}:{}}}}var Qw4,Yw4,Gw4;var H01=L(()=>{Qw4=new Set(["id","title","description","is_public","is_unlisted","created_at","updated_at","created_by"]),Yw4=new Set(["is_public","is_unlisted"]),Gw4={_meta:"meta_json",server:"server_json"}});import{randomUUID as Ww4}from"crypto";function Y3$($,Z){if(!$)return Z;try{return JSON.parse($)}catch{return Z}}function G3$($){if(!$)return null;let Z=YH($);return JSON.stringify(Z?wG0($,Z):$)}class Ah{db;constructor($){this.db=$}async createOrUpdate($){let Z=new Date().toISOString(),X=await this.findPendingByRequestedId($.organization_id,$.requested_id);if(X){let J={title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:G3$($._meta),requester_name:$.requester_name??null,requester_email:$.requester_email??null,updated_at:Z};await this.db.updateTable("private_registry_publish_request").set(J).where("organization_id","=",$.organization_id).where("id","=",X.id).execute();let K=await this.findById($.organization_id,X.id);if(!K)throw Error("Failed to update publish request");return K}let Q=Ww4(),Y={id:Q,organization_id:$.organization_id,requested_id:$.requested_id,status:"pending",title:$.title,description:$.description??null,server_json:JSON.stringify($.server),meta_json:G3$($._meta),requester_name:$.requester_name??null,requester_email:$.requester_email??null,reviewer_notes:null,created_at:Z,updated_at:Z};await this.db.insertInto("private_registry_publish_request").values(Y).execute();let G=await this.findById($.organization_id,Q);if(!G)throw Error("Failed to create publish request");return G}async findPendingByRequestedId($,Z){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$).where("requested_id","=",Z).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById($,Z){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async list($,Z={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",$),Q=this.db.selectFrom("private_registry_publish_request").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",$);if(Z.status)X=X.where("status","=",Z.status),Q=Q.where("status","=",Z.status);let Y=await Q.executeTakeFirst(),G=Number(Y?.count??0),J=Z.sortBy??"created_at",K=Z.sortDirection??"desc";if(J==="title")X=X.orderBy("title",K);else X=X.orderBy("created_at",K);return{items:(await X.limit(Z.limit??24).offset(Z.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:G}}async updateStatus($,Z,X,Q){let Y={status:X,updated_at:new Date().toISOString(),reviewer_notes:Q??null};await this.db.updateTable("private_registry_publish_request").set(Y).where("organization_id","=",$).where("id","=",Z).execute();let G=await this.findById($,Z);if(!G)throw Error(`Publish request not found: ${Z}`);return G}async countPending($){let Z=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",$).where("status","=","pending").executeTakeFirst();return Number(Z?.count??0)}async delete($,Z){let X=await this.findById($,Z);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",$).where("id","=",Z).execute(),X}deserialize($){return{id:$.id,organization_id:$.organization_id,requested_id:$.requested_id??null,status:$.status,title:$.title,description:$.description,_meta:Y3$($.meta_json,{}),server:Y3$($.server_json,{name:""}),requester_name:$.requester_name,requester_email:$.requester_email,reviewer_notes:$.reviewer_notes,created_at:$.created_at,updated_at:$.updated_at}}}var F01=()=>{};import{createHash as Hw4,randomBytes as Fw4,randomUUID as Nw4}from"crypto";function J3$($){return Hw4("sha256").update($).digest("hex")}function Uw4(){return`prk_${Fw4(32).toString("hex")}`}class Th{db;constructor($){this.db=$}async generate($,Z){let X=Nw4(),Q=Uw4(),Y=await J3$(Q),G=Q.slice(0,12),J=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:$,name:Z,key_hash:Y,prefix:G,created_at:J}).execute(),{entity:{id:X,organization_id:$,name:Z,prefix:G,created_at:J},key:Q}}async list($){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",$).orderBy("created_at","desc").execute()}async revoke($,Z){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",$).where("id","=",Z).execute()).length>0}async validate($,Z){let X=await J3$(Z),Q=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",$).where("key_hash","=",X).executeTakeFirst();return Boolean(Q)}async hasKeys($){let Z=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",$).executeTakeFirst();return Number(Z?.count??0)>0}}var N01=()=>{};import{randomUUID as K3$}from"crypto";function W3$($,Z){if(!$)return Z;try{return JSON.parse($)}catch{return Z}}class RG0{db;constructor($){this.db=$}async create($){let Z=K3$(),X=new Date().toISOString(),Q={id:Z,organization_id:$.organization_id,status:$.status??"pending",config_snapshot:$.config_snapshot?JSON.stringify($.config_snapshot):null,total_items:$.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:$.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(Q).execute();let Y=await this.findById($.organization_id,Z);if(!Y)throw Error(`Failed to create monitor run ${Z}`);return Y}async findById($,Z){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserializeRun(X):null}async list($,Z={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",$),Q=this.db.selectFrom("private_registry_monitor_run").select((K)=>K.fn.countAll().as("count")).where("organization_id","=",$);if(Z.status)X=X.where("status","=",Z.status),Q=Q.where("status","=",Z.status);let Y=await Q.executeTakeFirst(),G=Number(Y?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Z.limit??24).offset(Z.offset??0).execute()).map((K)=>this.deserializeRun(K)),totalCount:G}}async update($,Z,X){let Q={};if(X.total_items!==void 0)Q.total_items=X.total_items;if(X.status!==void 0)Q.status=X.status;if(X.tested_items!==void 0)Q.tested_items=X.tested_items;if(X.passed_items!==void 0)Q.passed_items=X.passed_items;if(X.failed_items!==void 0)Q.failed_items=X.failed_items;if(X.skipped_items!==void 0)Q.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)Q.current_item_id=X.current_item_id;if(X.started_at!==void 0)Q.started_at=X.started_at;if(X.finished_at!==void 0)Q.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(Q).where("organization_id","=",$).where("id","=",Z).execute();let Y=await this.findById($,Z);if(!Y)throw Error(`Monitor run not found: ${Z}`);return Y}deserializeRun($){return{id:$.id,organization_id:$.organization_id,status:$.status,config_snapshot:W3$($.config_snapshot,null),total_items:Number($.total_items??0),tested_items:Number($.tested_items??0),passed_items:Number($.passed_items??0),failed_items:Number($.failed_items??0),skipped_items:Number($.skipped_items??0),current_item_id:$.current_item_id,started_at:$.started_at,finished_at:$.finished_at,created_at:$.created_at}}}class IG0{db;constructor($){this.db=$}async create($){let Z=K3$(),X=new Date().toISOString(),Q={id:Z,run_id:$.run_id,organization_id:$.organization_id,item_id:$.item_id,item_title:$.item_title,status:$.status,error_message:$.error_message??null,connection_ok:$.connection_ok?1:0,tools_listed:$.tools_listed?1:0,tool_results:$.tool_results?JSON.stringify($.tool_results):null,agent_summary:$.agent_summary??null,duration_ms:$.duration_ms??0,action_taken:$.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(Q).execute();let Y=await this.findById($.organization_id,Z);if(!Y)throw Error("Failed to create test result");return Y}async findById($,Z){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",$).where("id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async listByRun($,Z,X={}){let Q=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",$).where("run_id","=",Z),Y=this.db.selectFrom("private_registry_monitor_result").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",$).where("run_id","=",Z);if(X.status)Q=Q.where("status","=",X.status),Y=Y.where("status","=",X.status);let G=await Y.executeTakeFirst(),J=Number(G?.count??0);return{items:(await Q.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((W)=>this.deserialize(W)),totalCount:J}}async update($,Z,X){let Q={};if(X.status!==void 0)Q.status=X.status;if(X.error_message!==void 0)Q.error_message=X.error_message;if(X.connection_ok!==void 0)Q.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)Q.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)Q.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)Q.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)Q.duration_ms=X.duration_ms;if(X.action_taken!==void 0)Q.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(Q).where("organization_id","=",$).where("id","=",Z).execute();let Y=await this.findById($,Z);if(!Y)throw Error(`Monitor result not found: ${Z}`);return Y}deserialize($){return{id:$.id,run_id:$.run_id,organization_id:$.organization_id,item_id:$.item_id,item_title:$.item_title,status:$.status,error_message:$.error_message,connection_ok:$.connection_ok===1,tools_listed:$.tools_listed===1,tool_results:W3$($.tool_results,[]),agent_summary:$.agent_summary,duration_ms:Number($.duration_ms??0),action_taken:$.action_taken,tested_at:$.tested_at}}}var H3$=()=>{};import{randomUUID as Bw4}from"crypto";class qG0{db;constructor($){this.db=$}async findByItemId($,Z){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).where("item_id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async list($){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId($,Z){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",$).where("connection_id","=",Z).executeTakeFirst();return X?this.deserialize(X):null}async upsert($){let Z=await this.findByItemId($.organization_id,$.item_id),X=new Date().toISOString();if(!Z){let Y={id:Bw4(),organization_id:$.organization_id,item_id:$.item_id,connection_id:$.connection_id,auth_status:$.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(Y).execute()}else{let Y={connection_id:$.connection_id,auth_status:$.auth_status??Z.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(Y).where("organization_id","=",$.organization_id).where("item_id","=",$.item_id).execute()}let Q=await this.findByItemId($.organization_id,$.item_id);if(!Q)throw Error("Failed to save monitor connection");return Q}async updateAuthStatus($,Z,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",$).where("item_id","=",Z).execute(),this.findByItemId($,Z)}deserialize($){return{id:$.id,organization_id:$.organization_id,item_id:$.item_id,connection_id:$.connection_id,auth_status:$.auth_status,created_at:$.created_at,updated_at:$.updated_at}}}var F3$=()=>{};var N3$=L(()=>{H01();F01();N01();H3$();F3$()});class Ko{db;constructor($){this.db=$}async listOrgTags($){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",$).orderBy("name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async getTag($){let Z=await this.db.selectFrom("organization_tags").selectAll().where("id","=",$).executeTakeFirst();return Z?this.tagFromDbRow(Z):null}async getTagsByIds($){if($.length===0)return[];return(await this.db.selectFrom("organization_tags").selectAll().where("id","in",$).execute()).map((X)=>this.tagFromDbRow(X))}async getTagByName($,Z){let X=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",$).where("name","=",Z).executeTakeFirst();return X?this.tagFromDbRow(X):null}async createTag($,Z,X){let Q=r$("tag"),Y=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:Q,organization_id:$,name:Z,color:X??null,created_at:Y}).onConflict((J)=>J.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName($,Z);if(!G)throw Error(`Failed to create or retrieve tag: ${Z}`);return G}async deleteTag($){await this.db.deleteFrom("organization_tags").where("id","=",$).execute()}async getMemberTags($){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.color","organization_tags.created_at"]).where("member_tags.member_id","=",$).orderBy("organization_tags.name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async setMemberTags($,Z){await this.db.transaction().execute(async(X)=>{if(await X.deleteFrom("member_tags").where("member_id","=",$).execute(),Z.length>0){let Q=new Date().toISOString();await X.insertInto("member_tags").values(Z.map((Y)=>({id:r$("mtag"),member_id:$,tag_id:Y,created_at:Q}))).execute()}})}async addMemberTag($,Z){let X=new Date().toISOString();await this.db.insertInto("member_tags").values({id:r$("mtag"),member_id:$,tag_id:Z,created_at:X}).onConflict((Q)=>Q.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag($,Z){await this.db.deleteFrom("member_tags").where("member_id","=",$).where("tag_id","=",Z).execute()}async verifyMemberOrg($,Z){return await this.db.selectFrom("member").select("id").where("id","=",$).where("organizationId","=",Z).executeTakeFirst()!==void 0}async getUserTagsInOrg($,Z){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.color","organization_tags.created_at"]).where("member.userId","=",$).where("member.organizationId","=",Z).orderBy("organization_tags.name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async getMembersWithTags($){let Z=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",$).execute(),X=new Map;for(let Q of Z){if(!X.has(Q.memberId))X.set(Q.memberId,[]);if(Q.tagName)X.get(Q.memberId).push(Q.tagName)}return X}tagFromDbRow($){return{id:$.id,organizationId:$.organization_id,name:$.name,color:$.color??null,createdAt:$.created_at}}}var U01=L(()=>{iZ()});import{sql as Ow4}from"kysely";function U3$($){return{organizationId:$.organization_id,status:$.status,stripeCustomerId:$.stripe_customer_id,stripeSubscriptionId:$.stripe_subscription_id,currentPeriodEnd:$.current_period_end,lastStripeEventAt:$.last_stripe_event_at,freeTaskExecutions:$.free_task_executions,monthlyTaskExecutions:$.monthly_task_executions}}class GH{db;constructor($){this.db=$}async getBilling($){let Z=await this.db.selectFrom("organization_billing").selectAll().where("organization_id","=",$).executeTakeFirst();return Z?U3$(Z):null}async getBillingByStripeSubscriptionId($){let Z=await this.db.selectFrom("organization_billing").selectAll().where("stripe_subscription_id","=",$).executeTakeFirst();return Z?U3$(Z):null}async updateStripeState($,Z){return((await this.db.updateTable("organization_billing").set({...Z.stripeCustomerId!==void 0&&{stripe_customer_id:Z.stripeCustomerId},...Z.stripeSubscriptionId!==void 0&&{stripe_subscription_id:Z.stripeSubscriptionId},...Z.status!==void 0&&{status:Z.status},...Z.currentPeriodEnd!==void 0&&{current_period_end:Z.currentPeriodEnd},...Z.lastStripeEventAt!==void 0&&{last_stripe_event_at:Z.lastStripeEventAt},updated_at:new Date}).where("organization_id","=",$).executeTakeFirst()).numUpdatedRows??0n)>0n}async taskClaim($){let Z=await this.db.selectFrom("task_quota_claims").select(["run_count","state"]).where("task_board_item_id","=",$).executeTakeFirst();return Z?{runCount:Z.run_count,state:Z.state}:null}static liveClaimCount($,Z,X){return $.selectFrom("task_quota_claims").select((Q)=>Q.fn.countAll().as("count")).where("organization_id","=",Z).where("period_key","=",X).where("state","<>","released").executeTakeFirst().then((Q)=>Number(Q?.count??0))}async countTaskClaims($,Z){return await GH.liveClaimCount(this.db,$,Z)}async claimTaskUnderLimit($,Z,X,Q,Y){return await this.db.transaction().execute(async(G)=>{await G.insertInto("organization_billing").values({organization_id:$}).onConflict((W)=>W.column("organization_id").doNothing()).execute(),await G.selectFrom("organization_billing").select("organization_id").where("organization_id","=",$).forUpdate().executeTakeFirstOrThrow();let J=await G.selectFrom("task_quota_claims").select(["run_count","state"]).where("task_board_item_id","=",Z).executeTakeFirst();if(J&&J.run_count>=Y)return"runs_exhausted";let K=()=>GH.liveClaimCount(G,$,X);if(J&&J.state!=="released")return await G.updateTable("task_quota_claims").set({run_count:J.run_count+1}).where("task_board_item_id","=",Z).execute(),"rerun";if(await K()>=Q)return"exhausted";if(J)return await G.updateTable("task_quota_claims").set({state:"held",period_key:X,run_count:J.run_count+1}).where("task_board_item_id","=",Z).execute(),"claimed";return await G.insertInto("task_quota_claims").values({task_board_item_id:Z,organization_id:$,period_key:X,state:"held"}).execute(),"claimed"})}async releaseTaskClaim($,Z){return((await this.db.updateTable("task_quota_claims").set({state:"released"}).where("organization_id","=",$).where("task_board_item_id","=",Z).where("state","=","held").executeTakeFirst()).numUpdatedRows??0n)>0n}async rollbackTaskClaim($,Z,{releaseSlot:X}){await this.db.updateTable("task_quota_claims").set(()=>({...X?{state:"released"}:{},run_count:Ow4`greatest(run_count - 1, 0)`})).where("organization_id","=",$).where("task_board_item_id","=",Z).where("state","=","held").execute()}}var MG0=()=>{};class B01{db;constructor($){this.db=$}async findById($,Z){let X=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",$).where((Q)=>Q.exists(Q.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",$).where("m2.userId","=",Z))).executeTakeFirst();if(!X)return null;return{id:X.id,name:X.name,email:X.email,role:"",createdAt:X.createdAt,updatedAt:X.updatedAt,image:X.image??void 0}}}function O3$(){let $={};for(let Z of VG0){if(Z.id==="basic-usage")continue;$[Z.id]=!0}return $}function L01($){let Z=(G)=>{let J=$[G];return Array.isArray(J)?J:[]},X=Z("*").includes("*")||Z("self").includes("*"),Q=new Set;if(!X)for(let G of Object.values($)){if(!Array.isArray(G))continue;for(let J of G)Q.add(J)}let Y={};for(let G of VG0){if(G.id==="basic-usage")continue;Y[G.id]=X||G.tools.every((J)=>Q.has(J))}return Y}function rj(){let $={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],Tags:[],"AI Providers":[],Secrets:[],"File Configs":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[],Search:[],"Task Board":[],Jira:[]};for(let Z of O01)$[Z.category].push(Z);return $}var O01,VG0,B3$,Lw4,kG0;var Rh=L(()=>{O01=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_LIST",description:"List organization domain claims",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for the organization",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set a domain's join mode",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_VERIFY",description:"Verify a domain via DNS TXT record",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove an organization domain claim",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization",category:"Organizations"},{name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a request to join the organization",category:"Organizations"},{name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a request to join the organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the org subscription checkout",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_BILLING_PORTAL",description:"Open the Stripe billing portal",category:"Organizations"},{name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the org's auto-task quota usage",category:"Organizations"},{name:"INFRA_BILLING_SITES_LIST",description:"List the legacy deco.cx sites the org owns",category:"Organizations"},{name:"INFRA_BILLING_GET",description:"Get infra usage, plan and invoices for an owned site",category:"Organizations"},{name:"INFRA_BILLING_PORTAL",description:"Open the Stripe billing portal for an owned site",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"COMMERCE_DISCOVERY_SETUP",description:"Set up Commerce Discovery",category:"Connections"},{name:"COMMERCE_DISCOVERY_RUN",description:"Run Commerce Discovery",category:"Connections"},{name:"COMMERCE_DISCOVERY_BIND",description:"Bind Commerce Discovery data source",category:"Connections"},{name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read Commerce Discovery connection status",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_HEATMAP",description:"View tool-call volume by agent and tool",category:"Monitoring"},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"MONITORING_THREAD_USAGE",description:"View per-thread token usage and cost",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"USER_MODEL_PREFERENCES_GET",description:"Get the calling user's chat tier \u2192 model overrides",category:"Users"},{name:"USER_MODEL_PREFERENCES_UPDATE",description:"Set the calling user's chat tier \u2192 model overrides",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"AUTOMATION_RUN_STATS",description:"View aggregated run counts and token/cost for an automation",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info for one or more virtual MCPs",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_KEY_UPDATE",description:"Update AI provider API key label or credential",category:"AI Providers"},{name:"AI_PROVIDER_KEY_PREVIEW",description:"Get masked preview of AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_CONNECT",description:"Link your own Claude subscription with a setup token",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_STATUS",description:"Whether your Claude subscription is linked, and since when",category:"AI Providers"},{name:"CLAUDE_SUBSCRIPTION_DISCONNECT",description:"Unlink your Claude subscription",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"SECRET_CREATE",description:"Create a secret in the credential vault",category:"Secrets"},{name:"SECRET_LIST",description:"List secrets visible to the caller (no values returned)",category:"Secrets"},{name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration for the org",category:"File Configs"},{name:"FILE_CONFIG_LIST",description:"List S3 bucket configurations for the org (no creds returned)",category:"File Configs"},{name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes from their GitHub sources",category:"File Configs"},{name:"ORG_REPO_SYNC_CREATE",description:"Keep a GitHub repository mirrored into a new org-fs volume",category:"File Configs"},{name:"ORG_REPO_SYNC_LIST",description:"List the org's synced repositories and their sync status",category:"File Configs"},{name:"ORG_REPO_SYNC_UPDATE",description:"Update a synced repository's ref, paths, or enabled flag",category:"File Configs"},{name:"ORG_REPO_SYNC_DELETE",description:"Stop syncing a repository (already-synced files are kept)",category:"File Configs"},{name:"ORG_REPO_SYNC_RUN",description:"Sync a repository into its volume right now",category:"File Configs"},{name:"JIRA_INTEGRATION_GET",description:"Get the org's Jira integration config and last sync status",category:"Jira"},{name:"JIRA_INTEGRATION_UPSERT",description:"Connect or update the org's Jira integration",category:"Jira"},{name:"JIRA_INTEGRATION_DELETE",description:"Disconnect Jira (already-synced cards are kept)",category:"Jira"},{name:"JIRA_BOARDS_LIST",description:"List Jira boards visible to the connected credentials",category:"Jira"},{name:"JIRA_BOARD_COLUMNS_LIST",description:"List a Jira board's columns and statuses for the mapping",category:"Jira"},{name:"JIRA_SYNC_RUN",description:"Pull from Jira into the task board right now",category:"Jira"},{name:"JIRA_RESYNC_REQUEST",description:"Mark the whole Jira board to be re-read on the next scheduled sync",category:"Jira"},{name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration, optionally rotating credentials",category:"File Configs"},{name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration",category:"File Configs"},{name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured bucket",category:"File Configs"},{name:"FILE_OBJECT_DELETE",description:"Delete an object from a configured bucket",category:"File Configs"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"SANDBOX_START",description:"Start a sandbox VM with dev server preview",category:"VM"},{name:"SANDBOX_DELETE",description:"Stop and delete a sandbox VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"},{name:"GITHUB_SEARCH_BRANCHES",description:"Search a repository's branches by name substring",category:"GitHub"},{name:"GITHUB_PR_STATE",description:"Read a branch's pull request with its checks, review state and comments",category:"GitHub"},{name:"GITHUB_LAST_PUBLISHED_PR",description:"Read the most recently merged pull request into a base branch",category:"GitHub"},{name:"GLOBAL_SEARCH",description:"Search across organization resources (currently threads). Returns a typed union of matches.",category:"Search"},{name:"TASK_BOARD_ITEM_CREATE",description:"Create task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_LIST",description:"List task board items",category:"Task Board"},{name:"TASK_BOARD_ITEM_UPDATE",description:"Update task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_DELETE",description:"Delete task board item",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_AUTOMATION_LIST",description:"List what the board runs when a card lands in each column",category:"Task Board"},{name:"TASK_BOARD_AUTOMATION_UPSERT",description:"Run the agent on cards landing in a board column",category:"Task Board"},{name:"TASK_BOARD_AUTOMATION_DELETE",description:"Stop running the agent on cards landing in a board column",category:"Task Board"},{name:"TASK_BOARD_COLUMN_ROLE_SET",description:"Say what one of the board's columns means to Studio",category:"Task Board"},{name:"TASK_BOARD_ITEM_PRS_GET",description:"Get a task board item's linked pull requests with live state",category:"Task Board"},{name:"TASK_BOARD_ITEM_PR_LINK",description:"Link a pull request a task run opened to its task board item",category:"Task Board"},{name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task with the Super Agent, failing any run still holding it open",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_RESOLVE_CONFLICT",description:"Hand a task's conflicting pull request back to the Super Agent to resolve the merge conflict",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision (approve or request changes) for a task under review",category:"Task Board",dangerous:!0},{name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Merge a reviewed task's pull request and move the task to Done",category:"Task Board",dangerous:!0},{name:"NOTIFICATION_LIST",description:"List your unread notifications in this organization",category:"Task Board"},{name:"NOTIFICATION_MARK_READ",description:"Mark your notifications read",category:"Task Board"},{name:"NOTIFICATION_SUBSCRIPTION_SET",description:"Follow or unfollow a task board item",category:"Task Board"},{name:"NOTIFICATION_SUBSCRIPTION_LIST",description:"List the users following a task board item",category:"Task Board"},{name:"TASK_BOARD_ACTIVITY_LIST",description:"List a task board item's change history",category:"Task Board"},{name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comment threads",category:"Task Board"},{name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment or a reply on a task board item",category:"Task Board"},{name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit a comment, or resolve/unresolve a comment thread",category:"Task Board"},{name:"TASK_BOARD_COMMENT_DELETE",description:"Delete a comment (a thread root takes its replies)",category:"Task Board"},{name:"TASK_BOARD_DISMISSED_LIST",description:"List diagnostic findings dismissed by deleting their task board cards",category:"Task Board"},{name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings so the next report import pushes them again",category:"Task Board"},{name:"TASK_ADD_REPO",description:"Clone an organization repository into the sandbox of the task run calling it",category:"Task Board"}],VG0=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","VIRTUAL_MCP_LAST_USED_LIST","AUTOMATION_GET","AUTOMATION_LIST","AUTOMATION_RUN_STATS","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_CREDITS","AI_PROVIDER_TOPUP_URL","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","FILE_OBJECTS_LIST","ORG_REPO_SYNC_LIST","SANDBOX_START","SANDBOX_DELETE","GITHUB_SEARCH_BRANCHES","GITHUB_PR_STATE","GITHUB_LAST_PUBLISHED_PR","GLOBAL_SEARCH","ORGANIZATION_SETTINGS_GET","USER_GET","BRAND_CONTEXT_LIST","COLLECTION_THREADS_CREATE","COLLECTION_THREADS_LIST","COLLECTION_THREADS_GET","COLLECTION_THREADS_UPDATE","COLLECTION_THREADS_DELETE","COLLECTION_THREAD_MESSAGES_LIST","TASK_BOARD_ITEM_CREATE","TASK_BOARD_ITEM_LIST","TASK_BOARD_ITEM_UPDATE","TASK_BOARD_ITEM_DELETE","TASK_BOARD_AUTOMATION_LIST","TASK_BOARD_AUTOMATION_UPSERT","TASK_BOARD_AUTOMATION_DELETE","TASK_BOARD_COLUMN_ROLE_SET","TASK_BOARD_ITEM_PRS_GET","TASK_BOARD_ITEM_PR_LINK","TASK_BOARD_ITEM_RERUN","TASK_BOARD_REVIEW_DECISION","TASK_BOARD_PROMOTE_TO_PRODUCTION","TASK_BOARD_ACTIVITY_LIST","TASK_BOARD_COMMENT_LIST","TASK_BOARD_COMMENT_CREATE","TASK_BOARD_COMMENT_UPDATE","TASK_BOARD_COMMENT_DELETE","TASK_BOARD_DISMISSED_LIST","TASK_BOARD_DISMISSED_RESTORE","NOTIFICATION_LIST","NOTIFICATION_MARK_READ","NOTIFICATION_SUBSCRIPTION_SET","NOTIFICATION_SUBSCRIPTION_LIST"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_LIST","ORGANIZATION_DOMAIN_ADD","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_VERIFY","ORGANIZATION_DOMAIN_REMOVE","JIRA_INTEGRATION_GET","JIRA_INTEGRATION_UPSERT","JIRA_INTEGRATION_DELETE","JIRA_BOARDS_LIST","JIRA_BOARD_COLUMNS_LIST","JIRA_SYNC_RUN","JIRA_RESYNC_REQUEST"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE","ORGANIZATION_BILLING_CHECKOUT_START","ORGANIZATION_BILLING_PORTAL","ORGANIZATION_TASK_QUOTA_GET","INFRA_BILLING_SITES_LIST","INFRA_BILLING_GET","INFRA_BILLING_PORTAL","ORGANIZATION_JOIN_REQUEST_LIST","ORGANIZATION_JOIN_REQUEST_APPROVE","ORGANIZATION_JOIN_REQUEST_DENY"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE","COMMERCE_DISCOVERY_SETUP","COMMERCE_DISCOVERY_RUN","COMMERCE_DISCOVERY_BIND","COMMERCE_DISCOVERY_CONNECTION_STATUS"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_TRIGGER_ROTATE_TOKEN","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_HEATMAP","MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS","MONITORING_THREAD_USAGE"]},{id:"secrets:manage",label:"Manage secrets",description:"Create and list secrets stored in the credential vault",section:"Organization",tools:["SECRET_CREATE","SECRET_LIST"]},{id:"file-configs:manage",label:"Manage file configs",description:"Create, list, update and delete S3 bucket configurations and synced GitHub repositories",section:"Organization",tools:["FILE_CONFIG_CREATE","FILE_CONFIG_LIST","FILE_CONFIG_UPDATE","FILE_CONFIG_DELETE","FILE_OBJECTS_LIST","FILE_OBJECT_DELETE","ORG_REPO_SYNC_CREATE","ORG_REPO_SYNC_LIST","ORG_REPO_SYNC_UPDATE","ORG_REPO_SYNC_DELETE","ORG_REPO_SYNC_RUN"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_KEY_UPDATE","AI_PROVIDER_KEY_PREVIEW","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS","CLAUDE_SUBSCRIPTION_CONNECT","CLAUDE_SUBSCRIPTION_STATUS","CLAUDE_SUBSCRIPTION_DISCONNECT"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],B3$=new Set([...VG0.find(($)=>$.id==="basic-usage")?.tools??[],"ORG_FS_READ","ORG_FS_WRITE"]),Lw4=["agents:manage","connections:manage"],kG0=new Set(VG0.filter(($)=>Lw4.includes($.id)).flatMap(($)=>$.tools))});function BX($){if(!$)return!1;return $.split(",").some((X)=>Wo.includes(X))}function SG0($,Z){let X=Array.isArray(Z)?Z:[Z];if(X.length===0)return!1;let Q=$?$.split(","):[];if(Q.includes("owner"))return!0;if(Q.includes("admin"))return X.every((Y)=>Y!=="owner");return!1}var Ih,Wo;var XY=L(()=>{Ih=["owner","admin","user"],Wo=["owner","admin"]});class aj{userId;toolName;boundAuth;role;connectionId;getToolMeta;organizationId;trustPublicPrefix;_granted=!1;constructor($,Z,X,Q,Y="self",G,J,K=!0){this.userId=$;this.toolName=Z;this.boundAuth=X;this.role=Q;this.connectionId=Y;this.getToolMeta=G;this.organizationId=J;this.trustPublicPrefix=K}setToolName($){this.toolName=$}setOrganizationId($){this.organizationId=$}getOrganizationId(){return this.organizationId}setRole($){this.role=$}getRole(){return this.role}grant(){this._granted=!0}async check(...$){if(this._granted)return;if(this.trustPublicPrefix&&(this.toolName?.startsWith("STUDIO_PUBLIC_")||this.toolName?.startsWith("MESH_PUBLIC_"))){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new qh("Authentication required. Please provide a valid OAuth token or API key.")}let Z=$.length>0?$:this.toolName?[this.toolName]:[];if(Z.length===0)throw new fN("No resources specified for access check");for(let X of Z)if(await this.checkResource(X)){this.grant();return}throw new fN(`Access denied to: ${Z.join(", ")}`)}async checkResource($){if(!this.userId&&!this.boundAuth)return!1;return this.boundAuth?.isApiKeyPrincipal?this.checkApiKeyAccess($):this.checkMemberAccess($)}async checkApiKeyAccess($){if(!this.boundAuth)return!1;return this.boundAuth.hasPermission({[this.connectionId]:[$]})}async checkMemberAccess($){if(this.userId&&this.role&&B3$.has($))return!0;if(BX(this.role))return!0;if(!this.boundAuth)return!1;return this.boundAuth.hasPermission({[this.connectionId]:[$]},{organizationId:this.organizationId,role:this.role})}async isToolPublic(){if(this.trustPublicPrefix&&(this.toolName?.startsWith("STUDIO_PUBLIC_")||this.toolName?.startsWith("MESH_PUBLIC_")))return!0;if(!this.getToolMeta)return!1;try{let $=await this.getToolMeta();if(!$)return!1;let X=YH($)?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}var qh,fN;var sj=L(()=>{Rh();XY();qh=class qh extends Error{constructor($){super($);this.name="UnauthorizedError"}};fN=class fN extends Error{constructor($){super($);this.name="ForbiddenError"}}});function L3$($){let Z={};for(let X of Object.keys($))Z[X]=["*"];return Z}function tZ($){let Z=$?.metadata;if(!Z)return!1;try{return(typeof Z==="string"?JSON.parse(Z):Z).archived===!0}catch{return!1}}function CG0($,Z){return $.get(D3$[Z])??$.get(w3$[Z])}function D01($,Z,X){$[D3$[Z]]=X,$[w3$[Z]]=X}var D3$,w3$;var w01=L(()=>{D3$={token:"x-studio-token",client:"x-studio-client",properties:"x-studio-properties",runMetadata:"x-studio-run-metadata"},w3$={token:"x-mesh-token",client:"x-mesh-client",properties:"x-mesh-properties",runMetadata:"x-mesh-run-metadata"}});function _G0($){let Z=wL.get($);if(!Z||Z.state==="CLOSED")return;if(Z.state==="HALF_OPEN"){if(Z.halfOpenInFlight){if(Date.now()-Z.halfOpenStartedAt<d7$)throw new Mh($,0)}Z.halfOpenInFlight=!0,Z.halfOpenStartedAt=Date.now();return}let X=Date.now()-Z.lastFailureTime;if(X>=Gs0){Z.state="HALF_OPEN",Z.halfOpenInFlight=!0,Z.halfOpenStartedAt=Date.now();return}throw new Mh($,Gs0-X)}function vG0($){wL.delete($)}function xG0($){let Z=wL.get($);if(!Z){Dw4(),wL.set($,{state:1>=Ys0?"OPEN":"CLOSED",consecutiveFailures:1,lastFailureTime:Date.now(),halfOpenInFlight:!1,halfOpenStartedAt:0});return}if(Z.consecutiveFailures++,Z.lastFailureTime=Date.now(),Z.halfOpenInFlight=!1,Z.consecutiveFailures>=Ys0)Z.state="OPEN"}function Dw4(){if(wL.size<BY0)return;let $=null,Z=1/0;for(let[X,Q]of wL)if(Q.lastFailureTime<Z)Z=Q.lastFailureTime,$=X;if($)wL.delete($)}var wL,Mh;var E01=L(()=>{x6();wL=new Map;P$.createObservableGauge("mcp_circuit_breaker.circuits",{description:"MCP connection circuits by state (open, half_open)",unit:"{circuits}"}).addCallback(($)=>{let Z=0,X=0;for(let Q of wL.values())if(Q.state==="OPEN")Z++;else if(Q.state==="HALF_OPEN")X++;$.observe(Z,{state:"open"}),$.observe(X,{state:"half_open"})});Mh=class Mh extends Error{cooldownRemainingMs;constructor($,Z){super(`Connection ${$} circuit breaker is open \u2014 downstream server unreachable. `+`Retry in ${Math.ceil(Z/1000)}s.`);this.name="CircuitOpenError",this.cooldownRemainingMs=Z}}});var Ho=($,Z)=>{if(Z===null||Z===void 0)return;let X=$.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),Q=Z;for(let Y of X){if(Q===null||Q===void 0||typeof Q!=="object")return;Q=Q[Y]}return Q};function fG0($){let Z=$.split("::");if(Z.length!==2||!Z[0]||!Z[1])throw Error(`Invalid scope format: ${$}. Expected format: "KEY::SCOPE"`);return Z}function ww4($){try{return fG0($)}catch{return null}}function Ew4($){if(typeof $==="object"&&$!==null&&"value"in $){let Z=$.value;if(typeof Z==="string")return Z}return null}function j01($,Z){let X={};if(!$||!Z)return X;for(let Q of Z){if(Q==="*"){X["*"]=["*"];continue}let Y=ww4(Q);if(!Y)continue;let[G,J]=Y,K=Ho(G,$),W=Ew4(K);if(W){if(!X[W])X[W]=[];X[W].push(J)}}return X}function E3$($,Z){let X=j01($,Z);return new Set(Object.keys(X).filter((Q)=>Q!=="*"))}var z01=()=>{};async function j3$($){if(!$.refreshToken)return{success:!1,permanent:!1,error:"No refresh token available"};if(!$.tokenEndpoint)return{success:!1,permanent:!1,error:"No token endpoint available"};if(!$.clientId)return{success:!1,permanent:!1,error:"No client ID available"};try{let Z=new URLSearchParams({grant_type:"refresh_token",refresh_token:$.refreshToken,client_id:$.clientId});if($.clientSecret)Z.set("client_secret",$.clientSecret);if($.scope)Z.set("scope",$.scope);let X=await fetch($.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Z.toString(),signal:AbortSignal.timeout(1e4)});if(!X.ok){let G=await X.text(),J,K;try{let H=JSON.parse(G);if(typeof H.error==="string")J=H.error;if(typeof H.error_description==="string")K=H.error_description}catch{}let W=X.status===400&&!!J&&jw4.has(J);return(W?console.error:console.warn)("[TokenRefresh] refresh failed",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,status:X.status,errorCode:J,errorDescription:K,permanent:W}),{success:!1,permanent:W,status:X.status,errorCode:J,error:K||J||`Token refresh failed: ${X.status}`}}let Q=await X.json();if(typeof Q.access_token!=="string"||!Q.access_token)return console.warn("[TokenRefresh] 200 response missing access_token",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint}),{success:!1,permanent:!1,status:X.status,error:"Token endpoint returned no access_token"};let Y;if(Q.expires_in!==void 0){let G=Number(Q.expires_in);if(Number.isFinite(G)&&G>=0&&G<=3153600000)Y=G;else console.warn("[TokenRefresh] ignoring malformed expires_in",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,expiresIn:Q.expires_in})}return{success:!0,accessToken:Q.access_token,refreshToken:typeof Q.refresh_token==="string"&&Q.refresh_token?Q.refresh_token:$.refreshToken,expiresIn:Y,scope:typeof Q.scope==="string"?Q.scope:void 0}}catch(Z){return console.warn("[TokenRefresh] network/parse error",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,message:Z instanceof Error?Z.message:String(Z)}),{success:!1,permanent:!1,error:Z instanceof Error?Z.message:"Token refresh failed"}}}var jw4;var z3$=L(()=>{jw4=new Set(["invalid_grant","bad_refresh_token"])});var P01=($,Z,X)=>{return(Q,Y)=>{let G=-1;return J(0);async function J(K){if(K<=G)throw Error("next() called multiple times");G=K;let W,H=!1,F;if($[K])F=$[K][0][0],Q.req.routeIndex=K;else F=K===$.length&&Y||void 0;if(F)try{W=await F(Q,()=>J(K+1))}catch(N){if(N instanceof Error&&Z)Q.error=N,W=await Z(N,Q),H=!0;else throw N}else if(Q.finalized===!1&&X)W=await X(Q);if(W&&(Q.finalized===!1||H))Q.res=W;return Q}}};var P3$=()=>{};var Y$;var LK=L(()=>{Y$=class extends Error{res;status;constructor($=500,Z){super(Z?.message,{cause:Z?.cause});this.res=Z?.res,this.status=$}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var A3$;var T3$=L(()=>{A3$=Symbol()});async function zw4($,Z){let X=await $.formData();if(X)return Pw4(X,Z);return{}}function Pw4($,Z){let X=Object.create(null);if($.forEach((Q,Y)=>{if(!(Z.all||Y.endsWith("[]")))X[Y]=Q;else Aw4(X,Y,Q)}),Z.dot)Object.entries(X).forEach(([Q,Y])=>{if(Q.includes("."))Tw4(X,Q,Y),delete X[Q]});return X}var R3$=async($,Z=Object.create(null))=>{let{all:X=!1,dot:Q=!1}=Z,G=($ instanceof bG0?$.raw.headers:$.headers).get("Content-Type");if(G?.startsWith("multipart/form-data")||G?.startsWith("application/x-www-form-urlencoded"))return zw4($,{all:X,dot:Q});return{}},Aw4=($,Z,X)=>{if($[Z]!==void 0)if(Array.isArray($[Z]))$[Z].push(X);else $[Z]=[$[Z],X];else if(!Z.endsWith("[]"))$[Z]=X;else $[Z]=[X]},Tw4=($,Z,X)=>{if(/(?:^|\.)__proto__\./.test(Z))return;let Q=$,Y=Z.split(".");Y.forEach((G,J)=>{if(J===Y.length-1)Q[G]=X;else{if(!Q[G]||typeof Q[G]!=="object"||Array.isArray(Q[G])||Q[G]instanceof File)Q[G]=Object.create(null);Q=Q[G]}})};var I3$=L(()=>{A01()});var R01=($)=>{let Z=$.split("/");if(Z[0]==="")Z.shift();return Z},q3$=($)=>{let{groups:Z,path:X}=Rw4($),Q=R01(X);return Iw4(Q,Z)},Rw4=($)=>{let Z=[];return $=$.replace(/\{[^}]+\}/g,(X,Q)=>{let Y=`@${Q}`;return Z.push([Y,X]),Y}),{groups:Z,path:$}},Iw4=($,Z)=>{for(let X=Z.length-1;X>=0;X--){let[Q]=Z[X];for(let Y=$.length-1;Y>=0;Y--)if($[Y].includes(Q)){$[Y]=$[Y].replace(Q,Z[X][1]);break}}return $},yG0,M3$=($,Z)=>{if($==="*")return"*";let X=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(X){let Q=`${$}#${Z}`;if(!yG0[Q])if(X[2])yG0[Q]=Z&&Z[0]!==":"&&Z[0]!=="*"?[Q,X[1],new RegExp(`^${X[2]}(?=/${Z})`)]:[$,X[1],new RegExp(`^${X[2]}$`)];else yG0[Q]=[$,X[1],!0];return yG0[Q]}return null},Vh=($,Z)=>{try{return Z($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(X)=>{try{return Z(X)}catch{return X}})}},V3$=($)=>Vh($,decodeURI),I01=($)=>{let Z=$.url,X=Z.indexOf("/",Z.indexOf(":")+4),Q=X;for(;Q<Z.length;Q++){let Y=Z.charCodeAt(Q);if(Y===37){let G=Z.indexOf("?",Q),J=Z.indexOf("#",Q),K=G===-1?J===-1?void 0:J:J===-1?G:Math.min(G,J),W=Z.slice(X,K);return V3$(W.includes("%25")?W.replace(/%25/g,"%2525"):W)}else if(Y===63||Y===35)break}return Z.slice(X,Q)},k3$=($)=>{let Z=I01($);return Z.length>1&&Z.at(-1)==="/"?Z.slice(0,-1):Z},ej=($,Z,...X)=>{if(X.length)Z=ej(Z,...X);return`${$?.[0]==="/"?"":"/"}${$}${Z==="/"?"":`${$?.at(-1)==="/"?"":"/"}${Z?.[0]==="/"?Z.slice(1):Z}`}`},gG0=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let Z=$.split("/"),X=[],Q="";return Z.forEach((Y)=>{if(Y!==""&&!/\:/.test(Y))Q+="/"+Y;else if(/\:/.test(Y))if(/\?/.test(Y)){if(X.length===0&&Q==="")X.push("/");else X.push(Q);let G=Y.replace("?","");Q+="/"+G,X.push(Q)}else Q+="/"+Y}),X.filter((Y,G,J)=>J.indexOf(Y)===G)},T01=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?Vh($,Fo):$},S3$=($,Z,X)=>{let Q;if(!X&&Z&&!/[%+]/.test(Z)){let J=$.indexOf("?",8);if(J===-1)return;if(!$.startsWith(Z,J+1))J=$.indexOf(`&${Z}`,J+1);while(J!==-1){let K=$.charCodeAt(J+Z.length+1);if(K===61){let W=J+Z.length+2,H=$.indexOf("&",W);return T01($.slice(W,H===-1?void 0:H))}else if(K==38||isNaN(K))return"";J=$.indexOf(`&${Z}`,J+1)}if(Q=/[%+]/.test($),!Q)return}let Y={};Q??=/[%+]/.test($);let G=$.indexOf("?",8);while(G!==-1){let J=$.indexOf("&",G+1),K=$.indexOf("=",G);if(K>J&&J!==-1)K=-1;let W=$.slice(G+1,K===-1?J===-1?void 0:J:K);if(Q)W=T01(W);if(G=J,W==="")continue;let H;if(K===-1)H="";else if(H=$.slice(K+1,J===-1?void 0:J),Q)H=T01(H);if(X){if(!(Y[W]&&Array.isArray(Y[W])))Y[W]=[];Y[W].push(H)}else Y[W]??=H}return Z?Y[Z]:Y},C3$,_3$=($,Z)=>{return S3$($,Z,!0)},Fo;var EL=L(()=>{yG0={},C3$=S3$,Fo=decodeURIComponent});var v3$=($)=>Vh($,Fo),bG0;var A01=L(()=>{LK();T3$();I3$();EL();bG0=class{raw;#$;#Z;routeIndex=0;path;bodyCache={};constructor($,Z="/",X=[[]]){this.raw=$,this.path=Z,this.#Z=X,this.#$={}}param($){return $?this.#X($):this.#G()}#X($){let Z=this.#Z[0][this.routeIndex][1][$],X=this.#Y(Z);return X&&/\%/.test(X)?v3$(X):X}#G(){let $={},Z=Object.keys(this.#Z[0][this.routeIndex][1]);for(let X of Z){let Q=this.#Y(this.#Z[0][this.routeIndex][1][X]);if(Q!==void 0)$[X]=/\%/.test(Q)?v3$(Q):Q}return $}#Y($){return this.#Z[1]?this.#Z[1][$]:$}query($){return C3$(this.url,$)}queries($){return _3$(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let Z={};return this.raw.headers.forEach((X,Q)=>{Z[Q]=X}),Z}async parseBody($){return R3$(this,$)}#Q=($)=>{let{bodyCache:Z,raw:X}=this,Q=Z[$];if(Q)return Q;let Y=Object.keys(Z)[0];if(Y)return Z[Y].then((G)=>{if(Y==="json")G=JSON.stringify(G);return new Response(G)[$]()});return Z[$]=X[$]()};json(){return this.#Q("text").then(($)=>JSON.parse($))}text(){return this.#Q("text")}arrayBuffer(){return this.#Q("arrayBuffer")}blob(){return this.#Q("blob")}formData(){return this.#Q("formData")}addValidatedData($,Z){this.#$[$]=Z}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[A3$](){return this.#Z}get matchedRoutes(){return this.#Z[0].map(([[,$]])=>$)}get routePath(){return this.#Z[0].map(([[,$]])=>$)[this.routeIndex].path}}});var hG0,x3$=($,Z)=>{let X=new String($);return X.isEscaped=!0,X.callbacks=Z,X},No=async($,Z,X,Q,Y)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let G=$.callbacks;if(!G?.length)return Promise.resolve($);if(Y)Y[0]+=$;else Y=[$];let J=Promise.all(G.map((K)=>K({phase:Z,buffer:Y,context:Q}))).then((K)=>Promise.all(K.filter(Boolean).map((W)=>No(W,Z,!1,Q,Y))).then(()=>Y[0]));if(X)return x3$(await J,G);else return J};var uG0=L(()=>{hG0={Stringify:1,BeforeStream:2,Stream:3}});var f3$="text/plain; charset=UTF-8",q01=($,Z)=>{return{"Content-Type":$,...Z}},Uo=($,Z)=>new Response($,Z),b3$=class{#$;#Z;env={};#X;finalized=!1;error;#G;#Y;#Q;#J;#K;#W;#F;#N;#U;constructor($,Z){if(this.#$=$,Z)this.#Y=Z.executionCtx,this.env=Z.env,this.#W=Z.notFoundHandler,this.#U=Z.path,this.#N=Z.matchResult}get req(){return this.#Z??=new bG0(this.#$,this.#U,this.#N),this.#Z}get event(){if(this.#Y&&"respondWith"in this.#Y)return this.#Y;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Y)return this.#Y;else throw Error("This context has no ExecutionContext")}get res(){return this.#Q||=Uo(null,{headers:this.#F??=new Headers})}set res($){if(this.#Q&&$){$=Uo($.body,$);for(let[Z,X]of this.#Q.headers.entries()){if(Z==="content-type")continue;if(Z==="set-cookie"){let Q=this.#Q.headers.getSetCookie();$.headers.delete("set-cookie");for(let Y of Q)$.headers.append("set-cookie",Y)}else $.headers.set(Z,X)}}this.#Q=$,this.finalized=!0}render=(...$)=>{return this.#K??=(Z)=>this.html(Z),this.#K(...$)};setLayout=($)=>this.#J=$;getLayout=()=>this.#J;setRenderer=($)=>{this.#K=$};header=($,Z,X)=>{if(this.finalized)this.#Q=Uo(this.#Q.body,this.#Q);let Q=this.#Q?this.#Q.headers:this.#F??=new Headers;if(Z===void 0)Q.delete($);else if(X?.append)Q.append($,Z);else Q.set($,Z)};status=($)=>{this.#G=$};set=($,Z)=>{this.#X??=new Map,this.#X.set($,Z)};get=($)=>{return this.#X?this.#X.get($):void 0};get var(){if(!this.#X)return{};return Object.fromEntries(this.#X)}#H($,Z,X){let Q=this.#Q?new Headers(this.#Q.headers):this.#F??new Headers;if(typeof Z==="object"&&"headers"in Z){let G=Z.headers instanceof Headers?Z.headers:new Headers(Z.headers);for(let[J,K]of G)if(J.toLowerCase()==="set-cookie")Q.append(J,K);else Q.set(J,K)}if(X)for(let[G,J]of Object.entries(X))if(typeof J==="string")Q.set(G,J);else{Q.delete(G);for(let K of J)Q.append(G,K)}let Y=typeof Z==="number"?Z:Z?.status??this.#G;return Uo($,{status:Y,headers:Q})}newResponse=(...$)=>this.#H(...$);body=($,Z,X)=>this.#H($,Z,X);text=($,Z,X)=>{return!this.#F&&!this.#G&&!Z&&!X&&!this.finalized?new Response($):this.#H($,Z,q01(f3$,X))};json=($,Z,X)=>{return this.#H(JSON.stringify($),Z,q01("application/json",X))};html=($,Z,X)=>{let Q=(Y)=>this.#H(Y,Z,q01("text/html; charset=UTF-8",X));return typeof $==="object"?No($,hG0.Stringify,!1,{}).then(Q):Q($)};redirect=($,Z)=>{let X=String($);return this.header("Location",!/[^\x00-\xFF]/.test(X)?X:encodeURI(X)),this.newResponse(null,Z??302)};notFound=()=>{return this.#W??=()=>Uo(),this.#W(this)}};var cG0=L(()=>{A01();uG0()});var b6="ALL",y3$="all",g3$,lG0="Can not add a route since the matcher is already built.",mG0;var jL=L(()=>{g3$=["get","post","put","delete","options","patch"],mG0=class extends Error{}});var M01="__COMPOSED_HANDLER";var V01=()=>{};var qw4=($)=>{return $.text("404 Not Found",404)},h3$=($,Z)=>{if("getResponse"in $){let X=$.getResponse();return Z.newResponse(X.body,X)}return console.error($),Z.text("Internal Server Error",500)},u3$=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(Z={}){[...g3$,y3$].forEach((G)=>{this[G]=(J,...K)=>{if(typeof J==="string")this.#$=J;else this.#G(G,this.#$,J);return K.forEach((W)=>{this.#G(G,this.#$,W)}),this}}),this.on=(G,J,...K)=>{for(let W of[J].flat()){this.#$=W;for(let H of[G].flat())K.map((F)=>{this.#G(H.toUpperCase(),this.#$,F)})}return this},this.use=(G,...J)=>{if(typeof G==="string")this.#$=G;else this.#$="*",J.unshift(G);return J.forEach((K)=>{this.#G(b6,this.#$,K)}),this};let{strict:Q,...Y}=Z;Object.assign(this,Y),this.getPath=Q??!0?Z.getPath??I01:k3$}#Z(){let Z=new $({router:this.router,getPath:this.getPath});return Z.errorHandler=this.errorHandler,Z.#X=this.#X,Z.routes=this.routes,Z}#X=qw4;errorHandler=h3$;route(Z,X){let Q=this.basePath(Z);return X.routes.map((Y)=>{let G;if(X.errorHandler===h3$)G=Y.handler;else G=async(J,K)=>(await P01([],X.errorHandler)(J,()=>Y.handler(J,K))).res,G[M01]=Y.handler;Q.#G(Y.method,Y.path,G)}),this}basePath(Z){let X=this.#Z();return X._basePath=ej(this._basePath,Z),X}onError=(Z)=>{return this.errorHandler=Z,this};notFound=(Z)=>{return this.#X=Z,this};mount(Z,X,Q){let Y,G;if(Q)if(typeof Q==="function")G=Q;else if(G=Q.optionHandler,Q.replaceRequest===!1)Y=(W)=>W;else Y=Q.replaceRequest;let J=G?(W)=>{let H=G(W);return Array.isArray(H)?H:[H]}:(W)=>{let H=void 0;try{H=W.executionCtx}catch{}return[W.env,H]};Y||=(()=>{let W=ej(this._basePath,Z),H=W==="/"?0:W.length;return(F)=>{let N=new URL(F.url);return N.pathname=N.pathname.slice(H)||"/",new Request(N,F)}})();let K=async(W,H)=>{let F=await X(Y(W.req.raw),...J(W));if(F)return F;await H()};return this.#G(b6,ej(Z,"*"),K),this}#G(Z,X,Q){Z=Z.toUpperCase(),X=ej(this._basePath,X);let Y={basePath:this._basePath,path:X,method:Z,handler:Q};this.router.add(Z,X,[Q,Y]),this.routes.push(Y)}#Y(Z,X){if(Z instanceof Error)return this.errorHandler(Z,X);throw Z}#Q(Z,X,Q,Y){if(Y==="HEAD")return(async()=>new Response(null,await this.#Q(Z,X,Q,"GET")))();let G=this.getPath(Z,{env:Q}),J=this.router.match(Y,G),K=new b3$(Z,{path:G,matchResult:J,env:Q,executionCtx:X,notFoundHandler:this.#X});if(J[0].length===1){let H;try{H=J[0][0][0][0](K,async()=>{K.res=await this.#X(K)})}catch(F){return this.#Y(F,K)}return H instanceof Promise?H.then((F)=>F||(K.finalized?K.res:this.#X(K))).catch((F)=>this.#Y(F,K)):H??this.#X(K)}let W=P01(J[0],this.errorHandler,this.#X);return(async()=>{try{let H=await W(K);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#Y(H,K)}})()}fetch=(Z,...X)=>{return this.#Q(Z,X[1],X[0],Z.method)};request=(Z,X,Q,Y)=>{if(Z instanceof Request)return this.fetch(X?new Request(Z,X):Z,Q,Y);return Z=Z.toString(),this.fetch(new Request(/^https?:\/\//.test(Z)?Z:`http://localhost${ej("/",Z)}`,X),Q,Y)};fire=()=>{addEventListener("fetch",(Z)=>{Z.respondWith(this.#Q(Z.request,Z,void 0,Z.request.method))})}};var c3$=L(()=>{P3$();cG0();jL();V01();EL()});function dG0($,Z){let X=this.buildAllMatchers(),Q=(Y,G)=>{let J=X[Y]||X[b6],K=J[2][G];if(K)return K;let W=G.match(J[0]);if(!W)return[[],Bo];let H=W.indexOf("",1);return[J[1][H],W]};return this.match=Q,Q($,Z)}var Bo;var k01=L(()=>{jL();Bo=[]});function Vw4($,Z){if($.length===1)return Z.length===1?$<Z?-1:1:-1;if(Z.length===1)return 1;if($===Oo||$===Lo)return 1;else if(Z===Oo||Z===Lo)return-1;if($===iG0)return 1;else if(Z===iG0)return-1;return $.length===Z.length?$<Z?-1:1:Z.length-$.length}var iG0="[^/]+",Oo=".*",Lo="(?:|/.*)",$z,Mw4,l3$=class ${#$;#Z;#X=Object.create(null);insert(Z,X,Q,Y,G){if(Z.length===0){if(this.#$!==void 0)throw $z;if(G)return;this.#$=X;return}let[J,...K]=Z,W=J==="*"?K.length===0?["","",Oo]:["","",iG0]:J==="/*"?["","",Lo]:J.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(W){let F=W[1],N=W[2]||iG0;if(F&&W[2]){if(N===".*")throw $z;if(N=N.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(N))throw $z}if(H=this.#X[N],!H){if(Object.keys(this.#X).some((U)=>U!==Oo&&U!==Lo))throw $z;if(G)return;if(H=this.#X[N]=new $,F!=="")H.#Z=Y.varIndex++}if(!G&&F!=="")Q.push([F,H.#Z])}else if(H=this.#X[J],!H){if(Object.keys(this.#X).some((F)=>F.length>1&&F!==Oo&&F!==Lo))throw $z;if(G)return;H=this.#X[J]=new $}H.insert(K,X,Q,Y,G)}buildRegExpStr(){let X=Object.keys(this.#X).sort(Vw4).map((Q)=>{let Y=this.#X[Q];return(typeof Y.#Z==="number"?`(${Q})@${Y.#Z}`:Mw4.has(Q)?`\\${Q}`:Q)+Y.buildRegExpStr()});if(typeof this.#$==="number")X.unshift(`#${this.#$}`);if(X.length===0)return"";if(X.length===1)return X[0];return"(?:"+X.join("|")+")"}};var S01=L(()=>{$z=Symbol(),Mw4=new Set(".\\+*[^]$()")});var m3$=class{#$={varIndex:0};#Z=new l3$;insert($,Z,X){let Q=[],Y=[];for(let J=0;;){let K=!1;if($=$.replace(/\{[^}]+\}/g,(W)=>{let H=`@\\${J}`;return Y[J]=[H,W],J++,K=!0,H}),!K)break}let G=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let J=Y.length-1;J>=0;J--){let[K]=Y[J];for(let W=G.length-1;W>=0;W--)if(G[W].indexOf(K)!==-1){G[W]=G[W].replace(K,Y[J][1]);break}}return this.#Z.insert(G,Z,Q,this.#$,X),Q}buildRegExp(){let $=this.#Z.buildRegExpStr();if($==="")return[/^$/,[],[]];let Z=0,X=[],Q=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Y,G,J)=>{if(G!==void 0)return X[++Z]=Number(G),"$()";if(J!==void 0)return Q[Number(J)]=++Z,"";return""}),[new RegExp(`^${$}`),X,Q]}};var d3$=L(()=>{S01()});function p3$($){return i3$[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(Z,X)=>X?`\\${X}`:"(?:|/.*)")}$`)}function Sw4(){i3$=Object.create(null)}function Cw4($){let Z=new m3$,X=[];if($.length===0)return kw4;let Q=$.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,F],[N,U])=>H?1:N?-1:F.length-U.length),Y=Object.create(null);for(let H=0,F=-1,N=Q.length;H<N;H++){let[U,B,O]=Q[H];if(U)Y[B]=[O.map(([w])=>[w,Object.create(null)]),Bo];else F++;let D;try{D=Z.insert(B,F,U)}catch(w){throw w===$z?new mG0(B):w}if(U)continue;X[F]=O.map(([w,E])=>{let j=Object.create(null);E-=1;for(;E>=0;E--){let[z,A]=D[E];j[z]=A}return[w,j]})}let[G,J,K]=Z.buildRegExp();for(let H=0,F=X.length;H<F;H++)for(let N=0,U=X[H].length;N<U;N++){let B=X[H][N]?.[1];if(!B)continue;let O=Object.keys(B);for(let D=0,w=O.length;D<w;D++)B[O[D]]=K[B[O[D]]]}let W=[];for(let H in J)W[H]=X[J[H]];return[G,W,Y]}function kh($,Z){if(!$)return;for(let X of Object.keys($).sort((Q,Y)=>Y.length-Q.length))if(p3$(X).test(Z))return[...$[X]];return}var kw4,i3$,pG0=class{name="RegExpRouter";#$;#Z;constructor(){this.#$={[b6]:Object.create(null)},this.#Z={[b6]:Object.create(null)}}add($,Z,X){let Q=this.#$,Y=this.#Z;if(!Q||!Y)throw Error(lG0);if(!Q[$])[Q,Y].forEach((K)=>{K[$]=Object.create(null),Object.keys(K[b6]).forEach((W)=>{K[$][W]=[...K[b6][W]]})});if(Z==="/*")Z="*";let G=(Z.match(/\/:/g)||[]).length;if(/\*$/.test(Z)){let K=p3$(Z);if($===b6)Object.keys(Q).forEach((W)=>{Q[W][Z]||=kh(Q[W],Z)||kh(Q[b6],Z)||[]});else Q[$][Z]||=kh(Q[$],Z)||kh(Q[b6],Z)||[];Object.keys(Q).forEach((W)=>{if($===b6||$===W)Object.keys(Q[W]).forEach((H)=>{K.test(H)&&Q[W][H].push([X,G])})}),Object.keys(Y).forEach((W)=>{if($===b6||$===W)Object.keys(Y[W]).forEach((H)=>K.test(H)&&Y[W][H].push([X,G]))});return}let J=gG0(Z)||[Z];for(let K=0,W=J.length;K<W;K++){let H=J[K];Object.keys(Y).forEach((F)=>{if($===b6||$===F)Y[F][H]||=[...kh(Q[F],H)||kh(Q[b6],H)||[]],Y[F][H].push([X,G-W+K+1])})}}match=dG0;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#Z).concat(Object.keys(this.#$)).forEach((Z)=>{$[Z]||=this.#X(Z)}),this.#$=this.#Z=void 0,Sw4(),$}#X($){let Z=[],X=$===b6;if([this.#$,this.#Z].forEach((Q)=>{let Y=Q[$]?Object.keys(Q[$]).map((G)=>[G,Q[$][G]]):[];if(Y.length!==0)X||=!0,Z.push(...Y);else if($!==b6)Z.push(...Object.keys(Q[b6]).map((G)=>[G,Q[b6][G]]))}),!X)return null;else return Cw4(Z)}};var C01=L(()=>{jL();EL();k01();S01();d3$();kw4=[/^$/,[],Object.create(null)],i3$=Object.create(null)});var _w4=class{name="PreparedRegExpRouter";#$;#Z;constructor($,Z){this.#$=$,this.#Z=Z}#X($,Z){let X=this.#$[$];X[1].forEach((Q)=>Q&&Q.push(Z)),Object.values(X[2]).forEach((Q)=>Q[0].push(Z))}#G($,Z,X,Q,Y){let G=this.#$[$];if(!Y)G[2][Z][0].push([X,{}]);else Q.forEach((J)=>{if(typeof J==="number")G[1][J].push([X,Y]);else G[2][J||Z][0].push([X,Y])})}add($,Z,X){if(!this.#$[$]){let Y=this.#$[b6],G={};for(let J in Y[2])G[J]=[Y[2][J][0].slice(),Bo];this.#$[$]=[Y[0],Y[1].map((J)=>Array.isArray(J)?J.slice():0),G]}if(Z==="/*"||Z==="*"){let Y=[X,{}];if($===b6)for(let G in this.#$)this.#X(G,Y);else this.#X($,Y);return}let Q=this.#Z[Z];if(!Q)throw Error(`Path ${Z} is not registered`);for(let[Y,G]of Q)if($===b6)for(let J in this.#$)this.#G(J,Z,X,Y,G);else this.#G($,Z,X,Y,G)}buildAllMatchers(){return this.#$}match=dG0};var n3$=L(()=>{jL();k01();C01()});var t3$=L(()=>{C01();n3$()});var _01=class{name="SmartRouter";#$=[];#Z=[];constructor($){this.#$=$.routers}add($,Z,X){if(!this.#Z)throw Error(lG0);this.#Z.push([$,Z,X])}match($,Z){if(!this.#Z)throw Error("Fatal error");let X=this.#$,Q=this.#Z,Y=X.length,G=0,J;for(;G<Y;G++){let K=X[G];try{for(let W=0,H=Q.length;W<H;W++)K.add(...Q[W]);J=K.match($,Z)}catch(W){if(W instanceof mG0)continue;throw W}this.match=K.match.bind(K),this.#$=[K],this.#Z=void 0;break}if(G===Y)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,J}get activeRouter(){if(this.#Z||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var o3$=L(()=>{jL()});var r3$=L(()=>{o3$()});var Do,vw4=($)=>{for(let Z in $)return!0;return!1},a3$=class ${#$;#Z;#X;#G=0;#Y=Do;constructor(Z,X,Q){if(this.#Z=Q||Object.create(null),this.#$=[],Z&&X){let Y=Object.create(null);Y[Z]={handler:X,possibleKeys:[],score:0},this.#$=[Y]}this.#X=[]}insert(Z,X,Q){this.#G=++this.#G;let Y=this,G=q3$(X),J=[];for(let K=0,W=G.length;K<W;K++){let H=G[K],F=G[K+1],N=M3$(H,F),U=Array.isArray(N)?N[0]:H;if(U in Y.#Z){if(Y=Y.#Z[U],N)J.push(N[1]);continue}if(Y.#Z[U]=new $,N)Y.#X.push(N),J.push(N[1]);Y=Y.#Z[U]}return Y.#$.push({[Z]:{handler:Q,possibleKeys:J.filter((K,W,H)=>H.indexOf(K)===W),score:this.#G}}),Y}#Q(Z,X,Q,Y,G){for(let J=0,K=X.#$.length;J<K;J++){let W=X.#$[J],H=W[Q]||W[b6],F={};if(H!==void 0){if(H.params=Object.create(null),Z.push(H),Y!==Do||G&&G!==Do)for(let N=0,U=H.possibleKeys.length;N<U;N++){let B=H.possibleKeys[N],O=F[H.score];H.params[B]=G?.[B]&&!O?G[B]:Y[B]??G?.[B],F[H.score]=!0}}}}search(Z,X){let Q=[];this.#Y=Do;let G=[this],J=R01(X),K=[],W=J.length,H=null;for(let F=0;F<W;F++){let N=J[F],U=F===W-1,B=[];for(let D=0,w=G.length;D<w;D++){let E=G[D],j=E.#Z[N];if(j)if(j.#Y=E.#Y,U){if(j.#Z["*"])this.#Q(Q,j.#Z["*"],Z,E.#Y);this.#Q(Q,j,Z,E.#Y)}else B.push(j);for(let z=0,A=E.#X.length;z<A;z++){let P=E.#X[z],I=E.#Y===Do?{}:{...E.#Y};if(P==="*"){let x=E.#Z["*"];if(x)this.#Q(Q,x,Z,E.#Y),x.#Y=I,B.push(x);continue}let[V,q,S]=P;if(!N&&!(S instanceof RegExp))continue;let d=E.#Z[V];if(S instanceof RegExp){if(H===null){H=Array(W);let l=X[0]==="/"?1:0;for(let y=0;y<W;y++)H[y]=l,l+=J[y].length+1}let x=X.substring(H[F]),b=S.exec(x);if(b){if(I[q]=b[0],this.#Q(Q,d,Z,E.#Y,I),vw4(d.#Z)){d.#Y=I;let l=b[0].match(/\//)?.length??0;(K[l]||=[]).push(d)}continue}}if(S===!0||S.test(N))if(I[q]=N,U){if(this.#Q(Q,d,Z,I,E.#Y),d.#Z["*"])this.#Q(Q,d.#Z["*"],Z,I,E.#Y)}else d.#Y=I,B.push(d)}}let O=K.shift();G=O?B.concat(O):B}if(Q.length>1)Q.sort((F,N)=>{return F.score-N.score});return[Q.map(({handler:F,params:N})=>[F,N])]}};var s3$=L(()=>{jL();EL();Do=Object.create(null)});var v01=class{name="TrieRouter";#$;constructor(){this.#$=new a3$}add($,Z,X){let Q=gG0(Z);if(Q){for(let Y=0,G=Q.length;Y<G;Y++)this.#$.insert($,Q[Y],X);return}this.#$.insert($,Z,X)}match($,Z){return this.#$.search($,Z)}};var e3$=L(()=>{EL();s3$()});var $K$=L(()=>{e3$()});var U1;var x01=L(()=>{c3$();t3$();r3$();$K$();U1=class extends u3${constructor($={}){super($);this.router=$.router??new _01({routers:[new pG0,new v01]})}}});var E8=L(()=>{x01()});import{z as Y6}from"zod";function ZK$(){return fw4.parse(process.env)}var f01=($)=>Y6.enum(["true","false","1","0"]).optional().transform((Z)=>Z===void 0?$:Z==="true"||Z==="1"),xw4=($)=>Y6.string().optional().transform((Z)=>Z?Z.split(",").map((X)=>X.trim()):$),fw4;var XK$=L(()=>{fw4=Y6.object({AUTH_EMAIL_PASSWORD_ENABLED:f01(!0),AUTH_GOOGLE_CLIENT_ID:Y6.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:Y6.string().optional(),AUTH_GITHUB_CLIENT_ID:Y6.string().optional(),AUTH_GITHUB_CLIENT_SECRET:Y6.string().optional(),AUTH_RESEND_API_KEY:Y6.string().optional(),AUTH_RESEND_FROM_EMAIL:Y6.string().optional(),AUTH_SENDGRID_API_KEY:Y6.string().optional(),AUTH_SENDGRID_FROM_EMAIL:Y6.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:f01(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:f01(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:Y6.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:Y6.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:Y6.coerce.number().optional(),AUTH_SSO_DOMAIN:Y6.string().optional(),AUTH_SSO_MS_TENANT_ID:Y6.string().optional(),AUTH_SSO_MS_CLIENT_ID:Y6.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:Y6.string().optional(),AUTH_SSO_SCOPES:xw4(["openid","email","profile"]),AUTH_SSO_GOOGLE_CLIENT_ID:Y6.string().optional(),AUTH_SSO_GOOGLE_CLIENT_SECRET:Y6.string().optional()}).superRefine(($,Z)=>{let X=new Set;if($.AUTH_RESEND_API_KEY)X.add("resend");if($.AUTH_SENDGRID_API_KEY)X.add("sendgrid");let Q=["AUTH_INVITE_EMAIL_PROVIDER","AUTH_RESET_PASSWORD_EMAIL_PROVIDER","AUTH_MAGIC_LINK_EMAIL_PROVIDER","AUTH_EMAIL_OTP_EMAIL_PROVIDER"];for(let Y of Q){let G=$[Y];if(G&&!X.has(G)){let J=G==="resend"?"AUTH_RESEND_API_KEY":"AUTH_SENDGRID_API_KEY";Z.addIssue({code:Y6.ZodIssueCode.custom,path:[Y],message:`${Y}="${G}" but ${J} is not set`})}}if($.AUTH_MAGIC_LINK_ENABLED&&X.size===0)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_MAGIC_LINK_ENABLED"],message:"AUTH_MAGIC_LINK_ENABLED=true requires AUTH_RESEND_API_KEY or AUTH_SENDGRID_API_KEY to be set"});if($.AUTH_EMAIL_OTP_ENABLED&&X.size===0)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_ENABLED"],message:"AUTH_EMAIL_OTP_ENABLED=true requires AUTH_RESEND_API_KEY or AUTH_SENDGRID_API_KEY to be set"});if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN){if(!$.AUTH_SSO_MS_CLIENT_SECRET)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_MS_CLIENT_SECRET"],message:"AUTH_SSO_MS_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_MS_CLIENT_SECRET is not"});if(!$.AUTH_SSO_MS_TENANT_ID)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_MS_TENANT_ID"],message:"AUTH_SSO_MS_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_MS_TENANT_ID is not"})}if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN&&!$.AUTH_SSO_GOOGLE_CLIENT_SECRET)Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_SSO_GOOGLE_CLIENT_SECRET"],message:"AUTH_SSO_GOOGLE_CLIENT_ID and AUTH_SSO_DOMAIN are set but AUTH_SSO_GOOGLE_CLIENT_SECRET is not"});if($.AUTH_EMAIL_OTP_LENGTH!==void 0&&(!Number.isInteger($.AUTH_EMAIL_OTP_LENGTH)||$.AUTH_EMAIL_OTP_LENGTH<1))Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_LENGTH"],message:"AUTH_EMAIL_OTP_LENGTH must be a positive integer"});if($.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&(!Number.isInteger($.AUTH_EMAIL_OTP_EXPIRES_IN)||$.AUTH_EMAIL_OTP_EXPIRES_IN<1))Z.addIssue({code:Y6.ZodIssueCode.custom,path:["AUTH_EMAIL_OTP_EXPIRES_IN"],message:"AUTH_EMAIL_OTP_EXPIRES_IN must be a positive integer"})}).transform(($)=>{let Z={};if($.AUTH_GOOGLE_CLIENT_ID)Z.google={clientId:$.AUTH_GOOGLE_CLIENT_ID,clientSecret:$.AUTH_GOOGLE_CLIENT_SECRET??""};if($.AUTH_GITHUB_CLIENT_ID)Z.github={clientId:$.AUTH_GITHUB_CLIENT_ID,clientSecret:$.AUTH_GITHUB_CLIENT_SECRET??""};let X=[];if($.AUTH_RESEND_API_KEY)X.push({id:"resend",provider:"resend",config:{apiKey:$.AUTH_RESEND_API_KEY,fromEmail:$.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if($.AUTH_SENDGRID_API_KEY)X.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:$.AUTH_SENDGRID_API_KEY,fromEmail:$.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let Q=X[0]?.id,Y;if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Y={providerId:"microsoft",domain:$.AUTH_SSO_DOMAIN,MS_TENANT_ID:$.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:$.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:$.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};else if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Y={providerId:"google",domain:$.AUTH_SSO_DOMAIN,GOOGLE_CLIENT_ID:$.AUTH_SSO_GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:$.AUTH_SSO_GOOGLE_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};let G;if($.AUTH_MAGIC_LINK_ENABLED)G={enabled:!0,emailProviderId:$.AUTH_MAGIC_LINK_EMAIL_PROVIDER??Q??""};let J;if($.AUTH_EMAIL_OTP_ENABLED)J={enabled:!0,emailProviderId:$.AUTH_EMAIL_OTP_EMAIL_PROVIDER??Q??"",...$.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:$.AUTH_EMAIL_OTP_LENGTH},...$.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:$.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:$.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Z).length>0?Z:void 0,emailProviders:X.length>0?X:void 0,inviteEmailProviderId:$.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:$.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:Y,magicLinkConfig:G,emailOtpConfig:J}})});var nG0;var QK$=L(()=>{nG0={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as bw4,readFileSync as yw4}from"fs";function gw4(){let $=ZK$(),Z=y0().configPath;if(!bw4(Z))return{auth:$,monitoring:nG0};try{let X=JSON.parse(yw4(Z,"utf-8"));if(X.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:$,monitoring:X.monitoring??nG0,theme:X.theme,logo:X.logo,autoCreateOrganizationOnSignup:X.autoCreateOrganizationOnSignup}}catch{return{auth:$,monitoring:nG0}}}function bN(){if(!b01)b01=gw4();return b01}function YK$(){return bN().theme}var b01=null;var tG0=L(()=>{XK$();QK$();R$()});import{dirname as hw4,posix as uw4,sep as cw4}from"path";function JK$(){let $=lw4();return async(Z)=>{for(let X of Z)X.module=$(X.filename);return Z}}function lw4($=process.argv[1]?hw4(process.argv[1]):process.cwd(),Z=cw4==="\\"){let X=Z?GK$($):$;return(Q)=>{if(!Q)return;let Y=Z?GK$(Q):Q,{dir:G,base:J,ext:K}=uw4.parse(Y);if(K===".js"||K===".mjs"||K===".cjs")J=J.slice(0,-1*K.length);let W=decodeURIComponent(J);if(!G)G=".";let H=G.lastIndexOf("/node_modules");if(H>-1)return`${G.slice(H+14).replace(/\//g,".")}:${W}`;if(G.startsWith(X)){let F=G.slice(X.length+1).replace(/\//g,".");return F?`${F}:${W}`:W}return W}}function GK$($){return $.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var KK$=()=>{};function mw4($,Z,X){return{key:$,enabled:typeof Z=="string"?!0:Z,variant:typeof Z=="string"?Z:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:X?JSON.stringify(X):void 0,description:void 0}}}var y01=($)=>{if("flags"in $){let Z=WK$($.flags),X=HK$($.flags);return{...$,featureFlags:Z,featureFlagPayloads:X}}{let Z=$.featureFlags??{},X=Object.fromEntries(Object.entries($.featureFlagPayloads||{}).map(([Y,G])=>[Y,g01(G)])),Q=Object.fromEntries(Object.entries(Z).map(([Y,G])=>[Y,mw4(Y,G,X[Y])]));return{...$,featureFlags:Z,featureFlagPayloads:X,flags:Q}}},WK$=($)=>Object.fromEntries(Object.entries($??{}).map(([Z,X])=>[Z,wo(X)]).filter(([,Z])=>Z!==void 0)),HK$=($)=>{let Z=$??{};return Object.fromEntries(Object.keys(Z).filter((X)=>{let Q=Z[X];return Q.enabled&&Q.metadata&&Q.metadata.payload!==void 0}).map((X)=>{let Q=Z[X].metadata?.payload;return[X,Q?g01(Q):void 0]}))},wo=($)=>$===void 0?void 0:$.variant??$.enabled,g01=($)=>{if(typeof $!="string")return $;try{return JSON.parse($)}catch{return $}};var oG0=()=>{};function FK$(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function rG0($,Z=!0,X){try{let Q=new CompressionStream("gzip"),Y=Q.writable.getWriter(),G=Y.write(new TextEncoder().encode($)).then(()=>Y.close()).catch(async(W)=>{try{await Y.abort(W)}catch{}throw W}),J=new Response(Q.readable).blob(),[K]=await Promise.all([J,G]);return K}catch(Q){if(X?.rethrow)throw Q;if(Z)console.error("Failed to gzip compress data",Q);return null}}var h01=()=>{};var dw4,NK$=function($,Z=[]){if(!$)return!1;let X=$.toLowerCase();return dw4.concat(Z).some((Q)=>{let Y=Q.toLowerCase();return X.indexOf(Y)!==-1})};var UK$=L(()=>{dw4=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var OX;var Zz=L(()=>{OX=function($){return $.AnonymousId="anonymous_id",$.DistinctId="distinct_id",$.Props="props",$.EnablePersonProcessing="enable_person_processing",$.PersonMode="person_mode",$.FeatureFlagDetails="feature_flag_details",$.FeatureFlags="feature_flags",$.FeatureFlagPayloads="feature_flag_payloads",$.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",$.BootstrapFeatureFlags="bootstrap_feature_flags",$.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",$.OverrideFeatureFlags="override_feature_flags",$.Queue="queue",$.LogsQueue="logs_queue",$.OptedOut="opted_out",$.SessionId="session_id",$.SessionStartTimestamp="session_start_timestamp",$.SessionLastTimestamp="session_timestamp",$.PersonProperties="person_properties",$.GroupProperties="group_properties",$.InstalledAppBuild="installed_app_build",$.InstalledAppVersion="installed_app_version",$.SessionReplay="session_replay",$.SurveyLastSeenDate="survey_last_seen_date",$.SurveysSeen="surveys_seen",$.Surveys="surveys",$.RemoteConfig="remote_config",$.FlagsEndpointWasHit="flags_endpoint_was_hit",$.DeviceId="device_id",$}({})});var aG0=()=>{};function eG0($){return $===null||typeof $!="object"}function Xz($,Z){return Object.prototype.toString.call($)===`[object ${Z}]`}function LK$($){return Xz($,"ErrorEvent")}function Ch($){return typeof Event<"u"&&nw4($,Event)}function DK$($){return Xz($,"Object")}function nw4($,Z){try{return $ instanceof Z}catch{return!1}}var pw4,BK$,SS5,u01,sG0,Eo=($)=>$===Object($)&&!sG0($),Sh=($)=>$===void 0,zL=($)=>u01.call($)=="[object String]",OK$=($)=>zL($)&&$.trim().length===0,jo=($)=>u01.call($)=="[object Number]"&&$===$,c01=($)=>$ instanceof Error;var zo=L(()=>{Zz();aG0();pw4=Array.isArray,BK$=Object.prototype,SS5=BK$.hasOwnProperty,u01=BK$.toString,sG0=pw4||function($){return u01.call($)==="[object Array]"}});function Po($,Z,X,Q,Y){if(Z>X)Q.warn("min cannot be greater than max."),Z=X;if(jo($))if($>X)return Q.warn(" cannot be greater than max: "+X+". Using max value instead."),X;else{if(!($<Z))return $;return Q.warn(" cannot be less than min: "+Z+". Using min value instead."),Z}return Q.warn(" must be a number. using max or fallback. max: "+X+", fallback: "+Y),Po(Y||X,Z,X,Q)}var l01=L(()=>{zo()});class m01{constructor($){this._buckets={},this._onBucketRateLimited=$._onBucketRateLimited,this._bucketSize=Po($.bucketSize,0,100,$._logger),this._refillRate=Po($.refillRate,0,this._bucketSize,$._logger),this._refillInterval=Po($.refillInterval,0,tw4,$._logger)}_applyRefill($,Z){let X=Z-$.lastAccess,Q=Math.floor(X/this._refillInterval);if(Q>0){let Y=Q*this._refillRate;$.tokens=Math.min($.tokens+Y,this._bucketSize),$.lastAccess=$.lastAccess+Q*this._refillInterval}}consumeRateLimit($){let Z=Date.now(),X=String($),Q=this._buckets[X];if(Q)this._applyRefill(Q,Z);else Q={tokens:this._bucketSize,lastAccess:Z},this._buckets[X]=Q;if(Q.tokens===0)return!0;if(Q.tokens--,Q.tokens===0)this._onBucketRateLimited?.($);return Q.tokens===0}stop(){this._buckets={}}}var tw4=86400000;var wK$=L(()=>{l01()});class Qz{constructor($){this.bytes=$}static ofInner($){if($.length===16)return new Qz($);throw TypeError("not 128-bit length")}static fromFieldsV7($,Z,X,Q){if(!Number.isInteger($)||!Number.isInteger(Z)||!Number.isInteger(X)||!Number.isInteger(Q)||$<0||Z<0||X<0||Q<0||$>281474976710655||Z>4095||X>1073741823||Q>4294967295)throw RangeError("invalid field value");let Y=new Uint8Array(16);return Y[0]=$/1099511627776,Y[1]=$/4294967296,Y[2]=$/16777216,Y[3]=$/65536,Y[4]=$/256,Y[5]=$,Y[6]=112|Z>>>8,Y[7]=Z,Y[8]=128|X>>>24,Y[9]=X>>>16,Y[10]=X>>>8,Y[11]=X,Y[12]=Q>>>24,Y[13]=Q>>>16,Y[14]=Q>>>8,Y[15]=Q,new Qz(Y)}static parse($){let Z;switch($.length){case 32:Z=/^[0-9a-f]{32}$/i.exec($)?.[0];break;case 36:Z=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;case 38:Z=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec($)?.slice(1,6).join("");break;case 45:Z=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;default:break}if(Z){let X=new Uint8Array(16);for(let Q=0;Q<16;Q+=4){let Y=parseInt(Z.substring(2*Q,2*Q+8),16);X[Q+0]=Y>>>24,X[Q+1]=Y>>>16,X[Q+2]=Y>>>8,X[Q+3]=Y}return new Qz(X)}throw SyntaxError("could not parse UUID string")}toString(){let $="";for(let Z=0;Z<this.bytes.length;Z++)if($+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]),Z===3||Z===5||Z===7||Z===9)$+="-";return $}toHex(){let $="";for(let Z=0;Z<this.bytes.length;Z++)$+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]);return $}toJSON(){return this.toString()}getVariant(){let $=this.bytes[8]>>>4;if($<0)throw Error("unreachable");if($<=7)return this.bytes.every((Z)=>Z===0)?"NIL":"VAR_0";if($<=11)return"VAR_10";if($<=13)return"VAR_110";if($<=15)return this.bytes.every((Z)=>Z===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new Qz(this.bytes.slice(0))}equals($){return this.compareTo($)===0}compareTo($){for(let Z=0;Z<16;Z++){let X=this.bytes[Z]-$.bytes[Z];if(X!==0)return Math.sign(X)}return 0}}class jK${constructor($){this.timestamp=0,this.counter=0,this.random=$??ow4()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore($,Z){let X=this.generateOrAbortCore($,Z);if(X===void 0)this.timestamp=0,X=this.generateOrAbortCore($,Z);return X}generateOrAbortCore($,Z){if(!Number.isInteger($)||$<1||$>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Z<0||Z>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if($>this.timestamp)this.timestamp=$,this.resetCounter();else{if(!($+Z>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return Qz.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let $=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return $[6]=64|$[6]>>>4,$[8]=128|$[8]>>>2,Qz.ofInner($)}}var ow4=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),EK$,PL=()=>rw4().toString(),rw4=()=>(EK$||(EK$=new jK$)).generate();var Ao=L(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class d01{add($){let Z=PL();return this.promiseByIds[Z]=$,$.catch(()=>{}).finally(()=>{delete this.promiseByIds[Z]}),$}async join(){let $=Object.values(this.promiseByIds),Z=$.length;while(Z>0)await Promise.all($),$=Object.values(this.promiseByIds),Z=$.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var zK$=L(()=>{Ao()});function aw4($=console){return{log:$.log.bind($),warn:$.warn.bind($),error:$.error.bind($),debug:$.debug.bind($)}}function AK$($,Z=sw4){return PK$($,Z,aw4())}var PK$=($,Z,X)=>{function Q(G,...J){Z(()=>{let K=X[G];K($,...J)})}return{info:(...G)=>{Q("log",...G)},warn:(...G)=>{Q("warn",...G)},error:(...G)=>{Q("error",...G)},critical:(...G)=>{X.error($,...G)},createLogger:(G)=>PK$(`${$} ${G}`,Z,X)}},sw4=($)=>$();var TK$=()=>{};var vh="Mobile",ZJ0="iOS",_h="Android",RK$="Tablet",lS5,$E4="Apple",mS5,IK$="Safari",XJ0="BlackBerry",qK$="Samsung",ZE4,XE4,QJ0="Chrome",QE4,YE4,MK$="Internet Explorer",GE4,p01="Opera",dS5,VK$="Edge",JE4,n01="Firefox",KE4,t01="Nintendo",o01="PlayStation",$J0="Xbox",WE4,HE4,To="Windows",FE4,kK$="Generic",iS5,pS5,NE4="Konqueror",HQ="(\\d+(\\.\\d+)?)",i01,nS5,tS5,oS5,UE4,BE4,rS5,aS5;var SK$=L(()=>{aG0();zo();lS5=_h+" "+RK$,mS5=$E4+" Watch",ZE4=qK$+"Browser",XE4=qK$+" Internet",QE4=QJ0+" OS",YE4=QJ0+" "+ZJ0,GE4=MK$+" "+vh,dS5=p01+" Mini",JE4="Microsoft "+VK$,KE4=n01+" "+ZJ0,WE4=_h+" "+vh,HE4=vh+" "+IK$,FE4=To+" Phone",iS5=kK$+" "+vh.toLowerCase(),pS5=kK$+" "+RK$.toLowerCase(),i01=new RegExp("Version/"+HQ),nS5=new RegExp($J0,"i"),tS5=new RegExp(o01+" \\w+","i"),oS5=new RegExp(t01+" \\w+","i"),UE4=new RegExp(XJ0+"|PlayBook|BB10","i"),BE4={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},rS5={[GE4]:[new RegExp("rv:"+HQ)],[JE4]:[new RegExp(VK$+"?\\/"+HQ)],[QJ0]:[new RegExp("("+QJ0+"|CrMo)\\/"+HQ)],[YE4]:[new RegExp("CriOS\\/"+HQ)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+HQ)],[IK$]:[i01],[HE4]:[i01],[p01]:[new RegExp("("+p01+"|OPR)\\/"+HQ)],[n01]:[new RegExp(n01+"\\/"+HQ)],[KE4]:[new RegExp("FxiOS\\/"+HQ)],[NE4]:[new RegExp("Konqueror[:/]?"+HQ,"i")],[XJ0]:[new RegExp(XJ0+" "+HQ),i01],[WE4]:[new RegExp("android\\s"+HQ,"i")],[XE4]:[new RegExp(ZE4+"\\/"+HQ)],[MK$]:[new RegExp("(rv:|MSIE )"+HQ)],Mozilla:[new RegExp("rv:"+HQ)]},aS5=[[new RegExp($J0+"; "+$J0+" (.*?)[);]","i"),($)=>[$J0,$&&$[1]||""]],[new RegExp(t01,"i"),[t01,""]],[new RegExp(o01,"i"),[o01,""]],[UE4,[XJ0,""]],[new RegExp(To,"i"),($,Z)=>{if(/Phone/.test(Z)||/WPDesktop/.test(Z))return[FE4,""];if(new RegExp(vh).test(Z)&&!/IEMobile\b/.test(Z))return[To+" "+vh,""];let X=/Windows NT ([0-9.]+)/i.exec(Z);if(X&&X[1]){let Q=X[1],Y=BE4[Q]||"";if(/arm/i.test(Z))Y="RT";return[To,Y]}return[To,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,($)=>{if($&&$[3]){let Z=[$[3],$[4],$[5]||"0"];return[ZJ0,Z.join(".")]}return[ZJ0,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,($)=>{let Z="";if($&&$.length>=3)Z=Sh($[2])?$[3]:$[2];return["watchOS",Z]}],[new RegExp("("+_h+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+_h+")","i"),($)=>{if($&&$[2]){let Z=[$[2],$[3],$[4]||"0"];return[_h,Z.join(".")]}return[_h,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,($)=>{let Z=["Mac OS X",""];if($&&$[1]){let X=[$[1],$[2],$[3]||"0"];Z[1]=X.join(".")}return Z}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[QE4,""]],[/Linux|debian/i,["Linux",""]]]});function _K$($){return $?.replace(/\/+$/,"")}async function vK$($,Z){let X=null;for(let Q=0;Q<Z.retryCount+1;Q++){if(Q>0)await new Promise((Y)=>setTimeout(Y,Z.retryDelay));try{return await $()}catch(Y){if(X=Y,!Z.retryCheck(Y))throw Y}}throw X}function YJ0(){return new Date().toISOString()}function yN($,Z){let X=setTimeout($,Z);return X?.unref&&X?.unref(),X}function r01($){return Promise.all($.map((Z)=>(Z??Promise.resolve()).then((X)=>({status:"fulfilled",value:X}),(X)=>({status:"rejected",reason:X}))))}var CK$="utf8",xK$=($)=>$ instanceof Error;var FQ=L(()=>{UK$();wK$();l01();aG0();zo();zK$();TK$();SK$()});var OE4,NC5;var a01=L(()=>{FQ();OE4={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},NC5=OE4.info});var fK$=L(()=>{a01();Zz()});var bK$=L(()=>{Zz()});class s01{constructor(){this.events={},this.events={}}on($,Z){if(!this.events[$])this.events[$]=[];return this.events[$].push(Z),()=>{this.events[$]=this.events[$].filter((X)=>X!==Z)}}emit($,Z){for(let X of this.events[$]||[])X(Z);for(let X of this.events["*"]||[])X($,Z)}}var yK$=()=>{};async function gK$($){if($ instanceof xh){let Z="";try{Z=await $.text}catch{}console.error(`Error while flushing PostHog: message=${$.message}, response body=${Z}`,$)}else console.error("Error while flushing PostHog",$);return Promise.resolve()}function e01($){return typeof $=="object"&&($ instanceof xh||$ instanceof Ro)}function hK$($){return typeof $=="object"&&$ instanceof xh&&$.status===413}class GJ0{constructor($,Z={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new d01,this._events=new s01,this._isInitialized=!1;let X=typeof $=="string"?$.trim():"",Q=typeof Z.host=="string"?Z.host.trim():"",Y=!X;if(this._logger=AK$("[PostHog]",this.logMsgIfDebug.bind(this)),Y)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=X,this.host=_K$(Q||"https://us.i.posthog.com"),this.flushAt=Z.flushAt?Math.max(Z.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Z.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Z.maxQueueSize??1000),this.flushInterval=Z.flushInterval??1e4,this.preloadFeatureFlags=Z.preloadFeatureFlags??!0,this.defaultOptIn=Z.defaultOptIn??!0,this.disableSurveys=Z.disableSurveys??!1,this._retryOptions={retryCount:Z.fetchRetryCount??3,retryDelay:Z.fetchRetryDelay??3000,retryCheck:e01},this.requestTimeout=Z.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Z.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Z.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Z.disableGeoip??!0,this.disabled=(Z.disabled??!1)||Y,this.historicalMigration=Z?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Z?.evaluationContexts??Z?.evaluationEnvironments,Z?.evaluationEnvironments&&!Z?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!FK$()||(Z?.disableCompression??!1)}logMsgIfDebug($){if(this.isDebug)$()}wrap($){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return $();this._initPromise.then(()=>$())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(OX.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(OX.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(OX.OptedOut,!0)})}on($,Z){return this._events.on($,Z)}debug($=!0){if(this.removeDebugCallback?.(),$){let Z=this.on("*",(X,Q)=>this._logger.info(X,Q));this.removeDebugCallback=()=>{Z(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload($){return{distinct_id:$.distinct_id,event:$.event,properties:{...$.properties||{},...this.getCommonEventProperties()}}}addPendingPromise($){return this.promiseQueue.add($)}identifyStateless($,Z,X){this.wrap(()=>{let Q={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};this.enqueue("identify",Q,X)})}async identifyStatelessImmediate($,Z,X){let Q={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};await this.sendImmediate("identify",Q,X)}captureStateless($,Z,X,Q){this.wrap(()=>{let Y=this.buildPayload({distinct_id:$,event:Z,properties:X});this.enqueue("capture",Y,Q)})}async captureStatelessImmediate($,Z,X,Q){let Y=this.buildPayload({distinct_id:$,event:Z,properties:X});await this.sendImmediate("capture",Y,Q)}aliasStateless($,Z,X,Q){this.wrap(()=>{let Y=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...X||{},distinct_id:Z,alias:$}});this.enqueue("alias",Y,Q)})}async aliasStatelessImmediate($,Z,X,Q){let Y=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...X||{},distinct_id:Z,alias:$}});await this.sendImmediate("alias",Y,Q)}groupIdentifyStateless($,Z,X,Q,Y,G){this.wrap(()=>{let J=this.buildPayload({distinct_id:Y||`$${$}_${Z}`,event:"$groupidentify",properties:{$group_type:$,$group_key:Z,$group_set:X||{},...G||{}}});this.enqueue("capture",J,Q)})}async getRemoteConfig(){await this._initPromise;let $=this.host;if($==="https://us.i.posthog.com")$="https://us-assets.i.posthog.com";else if($==="https://eu.i.posthog.com")$="https://eu-assets.i.posthog.com";let Z=`${$}/array/${this.apiKey}/config`,X={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Z,X,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((Q)=>Q.json()).catch((Q)=>{this._logger.error("Remote config could not be loaded",Q),this._events.emit("error",Q)})}async getFlags($,Z={},X={},Q={},Y={},G=!1){await this._initPromise;let J=G?"&config=true":"",K=`${this.host}/flags/?v=2${J}`,W={token:this.apiKey,distinct_id:$,groups:Z,person_properties:X,group_properties:Q,...Y};if(X.$device_id)W.$device_id=X.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)W.evaluation_contexts=this.evaluationContexts;let H={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(W)};return this._logger.info("Flags URL",K),this.fetchWithRetry(K,H,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((F)=>F.json()).then((F)=>({success:!0,response:y01(F)})).catch((F)=>{return this._events.emit("error",F),{success:!1,error:this.categorizeRequestError(F)}})}categorizeRequestError($){if($ instanceof xh)return{type:"api_error",statusCode:$.status};if($ instanceof Ro){let Z=$.error;if(Z instanceof Error&&(Z.name==="AbortError"||Z.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagDetailStateless($,Z,X,Q,Y,G);if(J===void 0)return{response:void 0,requestId:void 0};let K=wo(J.response);if(K===void 0)K=!1;return{response:K,requestId:J.requestId}}async getFeatureFlagDetailStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless(Z,X,Q,Y,G,[$]);if(J===void 0)return;return{response:J.flags[$],requestId:J.requestId,evaluatedAt:J.evaluatedAt}}async getFeatureFlagPayloadStateless($,Z,X={},Q={},Y={},G){await this._initPromise;let J=await this.getFeatureFlagPayloadsStateless(Z,X,Q,Y,G,[$]);if(!J)return;let K=J[$];if(K===void 0)return null;return K}async getFeatureFlagPayloadsStateless($,Z={},X={},Q={},Y,G){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless($,Z,X,Q,Y,G)).payloads}async getFeatureFlagsStateless($,Z={},X={},Q={},Y,G){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless($,Z,X,Q,Y,G)}async getFeatureFlagsAndPayloadsStateless($,Z={},X={},Q={},Y,G){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless($,Z,X,Q,Y,G);if(!J)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:J.featureFlags,payloads:J.featureFlagPayloads,requestId:J.requestId}}async getFeatureFlagDetailsStateless($,Z={},X={},Q={},Y,G){await this._initPromise;let J={};if(Y??this.disableGeoip)J.geoip_disable=!0;if(G)J.flag_keys_to_evaluate=G;let K=await this.getFlags($,Z,X,Q,J);if(!K.success)return;let W=K.response;if(W.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(W.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:W?.requestId,quotaLimited:W.quotaLimited};return W}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let $=`${this.host}/api/surveys/?token=${this.apiKey}`,Z={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},Q=(await this.fetchWithRetry($,Z).then((Y)=>{if(Y.status!==200||!Y.json){let G=`Surveys API could not be loaded: ${Y.status}`,J=Error(G);this._logger.error(J),this._events.emit("error",Error(G));return}return Y.json()}).catch((Y)=>{this._logger.error("Surveys API could not be loaded",Y),this._events.emit("error",Y)}))?.surveys;if(Q)this._logger.info("Surveys fetched from API: ",JSON.stringify(Q));return Q??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(OX.Props);return this._props||{}}set props($){this._props=$}async register($){this.wrap(()=>{this.props={...this.props,...$},this.setPersistedProperty(OX.Props,this.props)})}async unregister($){this.wrap(()=>{delete this.props[$],this.setPersistedProperty(OX.Props,this.props)})}processBeforeEnqueue($){return $}async flushStorage(){}enqueue($,Z,X){this.wrap(()=>{if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage($,Z,X);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let Y=this.getPersistedProperty(OX.Queue)||[];if(Y.length>=this.maxQueueSize)Y.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(Y.push({message:Q}),this.setPersistedProperty(OX.Queue,Y),this._events.emit($,Q),Y.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=yN(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate($,Z,X){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage($,Z,X);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let Y={api_key:this.apiKey,batch:[Q],sent_at:YJ0()};if(this.historicalMigration)Y.historical_migration=!0;let G=JSON.stringify(Y),J=`${this.host}/batch/`,K=this.disableCompression?null:await rG0(G,this.isDebug),W={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...K!==null&&{"Content-Encoding":"gzip"}},body:K||G};try{await this.fetchWithRetry(J,W)}catch(H){this._events.emit("error",H)}}prepareMessage($,Z,X){let Q={...Z,type:$,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:X?.timestamp?X?.timestamp:YJ0(),uuid:X?.uuid?X.uuid:PL()};if(X?.disableGeoip??this.disableGeoip){if(!Q.properties)Q.properties={};Q.properties.$geoip_disable=!0}if(Q.distinctId)Q.distinct_id=Q.distinctId,delete Q.distinctId;return Q}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async($)=>{await gK$($)})}async flush(){let $=r01([this.flushPromise]).then(()=>this._flush());return this.flushPromise=$,this.addPendingPromise($),r01([$]).then(()=>{if(this.flushPromise===$)this.flushPromise=null}),$}getCustomHeaders(){let $=this.getCustomUserAgent(),Z={};if($&&$!=="")Z["User-Agent"]=$;return Z}async _flush(){this.clearFlushTimer(),await this._initPromise;let $=this.getPersistedProperty(OX.Queue)||[];if(!$.length)return;let Z=[],X=$.length;while($.length>0&&Z.length<X){let Q=$.slice(0,this.maxBatchSize),Y=Q.map((U)=>U.message),G=async()=>{let B=(this.getPersistedProperty(OX.Queue)||[]).slice(Q.length);this.setPersistedProperty(OX.Queue,B),$=B,await this.flushStorage()},J={api_key:this.apiKey,batch:Y,sent_at:YJ0()};if(this.historicalMigration)J.historical_migration=!0;let K=JSON.stringify(J),W=`${this.host}/batch/`,H=this.disableCompression?null:await rG0(K,this.isDebug),F={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...H!==null&&{"Content-Encoding":"gzip"}},body:H||K},N={retryCheck:(U)=>{if(hK$(U))return!1;return e01(U)}};try{await this.fetchWithRetry(W,F,N)}catch(U){if(hK$(U)&&Y.length>1){this.maxBatchSize=Math.max(1,Math.floor(Y.length/2)),this._logger.warn(`Received 413 when sending batch of size ${Y.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(U instanceof Ro))await G();throw this._events.emit("error",U),U}await G(),Z.push(...Y)}this._events.emit("flush",Z)}async fetchWithRetry($,Z,X,Q){let Y=Z.body?Z.body:"",G=-1;try{G=Y instanceof Blob?Y.size:Buffer.byteLength(Y,CK$)}catch{if(Y instanceof Blob)G=Y.size;else G=new TextEncoder().encode(Y).length}return await vK$(async()=>{let J=new AbortController,K=Q??this.requestTimeout,W=yN(()=>J.abort(),K),H=null;try{H=await this.fetch($,{signal:J.signal,...Z})}catch(N){throw new Ro(N)}finally{clearTimeout(W)}if(Z.mode!=="no-cors"&&(H.status<200||H.status>=400))throw new xh(H,G);return H},{...this._retryOptions,...X})}async _shutdown($=30000){await this._initPromise;let Z=!1;this.clearFlushTimer();let X=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(OX.Queue)||[]).length===0)break;if(await this.flush(),Z)break}}catch(Y){if(!e01(Y))throw Y;await gK$(Y)}},Q;try{return await Promise.race([new Promise((Y,G)=>{Q=yN(()=>{this._logger.error("Timed out while shutting down PostHog"),Z=!0,G("Timeout while shutting down PostHog. Some events may not have been sent.")},$)}),X()])}finally{clearTimeout(Q)}}async shutdown($=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown($).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var xh,Ro;var $11=L(()=>{yK$();oG0();h01();Zz();FQ();Ao();xh=class xh extends Error{constructor($,Z){super("HTTP error while fetching PostHog: status="+$.status+", reqByteLength="+Z),this.response=$,this.reqByteLength=Z,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};Ro=class Ro extends Error{constructor($){super("Network error while fetching PostHog",$ instanceof Error?{cause:$}:{}),this.error=$,this.name="PostHogFetchNetworkError"}}});var uK$=L(()=>{oG0();Zz();$11();Ao();FQ()});var cK$=L(()=>{zo()});function mK$($){let Z=globalThis._posthogChunkIds;if(!Z)return;let X=Object.keys(Z);if(KJ0&&X.length===lK$)return KJ0;return lK$=X.length,KJ0=X.reduce((Q,Y)=>{if(!JJ0)JJ0={};let G=JJ0[Y];if(G)Q[G[0]]=G[1];else{let J=$(Y);for(let K=J.length-1;K>=0;K--){let H=J[K]?.filename,F=Z[Y];if(H&&F){Q[H]=F,JJ0[Y]=[H,F];break}}}return Q},{}),KJ0}var JJ0,lK$,KJ0;var dK$=()=>{};class iK${constructor($,Z,X=[]){this.coercers=$,this.stackParser=Z,this.modifiers=X}buildFromUnknown($,Z={}){let Q=Z&&Z.mechanism||{handled:!0,type:"generic"},G=this.buildCoercingContext(Q,Z,0).apply($),J=this.buildParsingContext(Z),K=this.parseStacktrace(G,J);return{$exception_list:this.convertToExceptionList(K,Q),$exception_level:"error"}}async modifyFrames($){for(let Z of $)if(Z.stacktrace&&Z.stacktrace.frames&&sG0(Z.stacktrace.frames))Z.stacktrace.frames=await this.applyModifiers(Z.stacktrace.frames);return $}coerceFallback($){return{type:"Error",value:"Unknown error",stack:$.syntheticException?.stack,synthetic:!0}}parseStacktrace($,Z){let X;if($.cause!=null)X=this.parseStacktrace($.cause,Z);let Q;if($.stack!=""&&$.stack!=null)Q=this.applyChunkIds(this.stackParser($.stack,$.synthetic?Z.skipFirstLines:0),Z.chunkIdMap);return{...$,cause:X,stack:Q}}applyChunkIds($,Z){return $.map((X)=>{if(X.filename&&Z)X.chunk_id=Z[X.filename];return X})}applyCoercers($,Z){for(let X of this.coercers)if(X.match($))return X.coerce($,Z);return this.coerceFallback(Z)}async applyModifiers($){let Z=$;for(let X of this.modifiers)Z=await X(Z);return Z}convertToExceptionList($,Z){let X={type:$.type,value:$.value,mechanism:{type:Z.type??"generic",handled:Z.handled??!0,synthetic:$.synthetic??!1}};if($.stack)X.stacktrace={type:"raw",frames:$.stack};let Q=[X];if($.cause!=null)Q.push(...this.convertToExceptionList($.cause,{...Z,handled:!0}));return Q}buildParsingContext($){return{chunkIdMap:mK$(this.stackParser),skipFirstLines:$.skipFirstLines??1}}buildCoercingContext($,Z,X=0){let Q=(G,J)=>{if(!(J<=wE4))return;{let K=this.buildCoercingContext($,Z,J);return this.applyCoercers(G,K)}};return{...Z,syntheticException:X==0?Z.syntheticException:void 0,mechanism:$,apply:(G)=>Q(G,X),next:(G)=>Q(G,X+1)}}}var wE4=4;var pK$=L(()=>{FQ();dK$()});function JH($,Z,X,Q,Y){let G={platform:$,filename:Z,function:X==="<anonymous>"?q7:X,in_app:!0};if(!Sh(Q))G.lineno=Q;if(!Sh(Y))G.colno=Y;return G}var q7="?";var AL=L(()=>{FQ()});var WJ0=($,Z)=>{let X=$.indexOf("safari-extension")!==-1,Q=$.indexOf("safari-web-extension")!==-1;return X||Q?[$.indexOf("@")!==-1?$.split("@")[0]:q7,X?`safari-extension:${Z}`:`safari-web-extension:${Z}`]:[$,Z]};var Z11=L(()=>{AL()});var EE4,jE4,zE4,X11=($,Z)=>{let X=EE4.exec($);if(X){let[,Y,G,J]=X;return JH(Z,Y,q7,+G,+J)}let Q=jE4.exec($);if(Q){if(Q[2]&&Q[2].indexOf("eval")===0){let K=zE4.exec(Q[2]);if(K)Q[2]=K[1],Q[3]=K[2],Q[4]=K[3]}let[G,J]=WJ0(Q[1]||q7,Q[2]);return JH(Z,J,G,Q[3]?+Q[3]:void 0,Q[4]?+Q[4]:void 0)}};var nK$=L(()=>{AL();Z11();EE4=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,jE4=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,zE4=/\((\S*)(?::(\d+))(?::(\d+))\)/});var PE4,AE4,Q11=($,Z)=>{let X=PE4.exec($);if(X){if(X[3]&&X[3].indexOf(" > eval")>-1){let J=AE4.exec(X[3]);if(J)X[1]=X[1]||"eval",X[3]=J[1],X[4]=J[2],X[5]=""}let Y=X[3],G=X[1]||q7;return[G,Y]=WJ0(G,Y),JH(Z,Y,G,X[4]?+X[4]:void 0,X[5]?+X[5]:void 0)}};var tK$=L(()=>{AL();Z11();PE4=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,AE4=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var TE4,oK$=($,Z)=>{let X=TE4.exec($);return X?JH(Z,X[2],X[1]||q7,+X[3],X[4]?+X[4]:void 0):void 0};var rK$=L(()=>{AL();TE4=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var RE4,aK$=($,Z)=>{let X=RE4.exec($);return X?JH(Z,X[2],X[3]||q7,+X[1]):void 0},IE4,sK$=($,Z)=>{let X=IE4.exec($);return X?JH(Z,X[5],X[3]||X[4]||q7,+X[1],+X[2]):void 0};var eK$=L(()=>{AL();RE4=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,IE4=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function VE4($,Z=!1){return!(Z||$&&!$.startsWith("/")&&!$.match(/^[A-Z]:/)&&!$.startsWith(".")&&!$.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&$!==void 0&&!$.includes("node_modules/")}function $W$($){return parseInt($||"",10)||void 0}var qE4,ME4,ZW$=($,Z)=>{let X=$.match(ME4);if(X){let Q,Y,G,J,K;if(X[1]){G=X[1];let F=G.lastIndexOf(".");if(G[F-1]===".")F--;if(F>0){Q=G.slice(0,F),Y=G.slice(F+1);let N=Q.indexOf(".Module");if(N>0)G=G.slice(N+1),Q=Q.slice(0,N)}J=void 0}if(Y)J=Q,K=Y;if(Y==="<anonymous>")K=void 0,G=void 0;if(G===void 0)K=K||q7,G=J?`${J}.${K}`:K;let W=X[2]?.startsWith("file://")?X[2].slice(7):X[2],H=X[5]==="native";if(W?.match(/\/[A-Z]:/))W=W.slice(1);if(!W&&X[5]&&!H)W=X[5];return{filename:W?decodeURI(W):void 0,module:void 0,function:G,lineno:$W$(X[3]),colno:$W$(X[4]),in_app:VE4(W||"",H),platform:Z}}if($.match(qE4))return{filename:$,platform:Z}};var XW$=L(()=>{AL();qE4=/^\s*[-]{4,}$/,ME4=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function GW$($){if(!$.length)return[];let Z=Array.from($);return Z.reverse(),Z.slice(0,YW$).map((X)=>({...X,filename:X.filename||kE4(Z).filename,function:X.function||q7}))}function kE4($){return $[$.length-1]||{}}function SE4(){return JW$("web:javascript",X11,Q11)}function JW$($,...Z){return(X,Q=0)=>{let Y=[],G=X.split(`
|
|
1802
1802
|
`);for(let J=Q;J<G.length;J++){let K=G[J];if(K.length>1024)continue;let W=QW$.test(K)?K.replace(QW$,"$1"):K;if(!W.match(/\S*Error: /)){for(let H of Z){let F=H(W,$);if(F){Y.push(F);break}}if(Y.length>=YW$)break}}return GW$(Y)}}var QW$,YW$=50;var KW$=L(()=>{AL();nK$();tK$();rK$();eK$();XW$();QW$=/\(error: (.*)\)/});class WW${match($){return this.isDOMException($)||this.isDOMError($)}coerce($,Z){let X=zL($.stack);return{type:this.getType($),value:this.getValue($),stack:X?$.stack:void 0,cause:$.cause?Z.next($.cause):void 0,synthetic:!1}}getType($){return this.isDOMError($)?"DOMError":"DOMException"}getValue($){let Z=$.name||(this.isDOMError($)?"DOMError":"DOMException");return $.message?`${Z}: ${$.message}`:Z}isDOMException($){return Xz($,"DOMException")}isDOMError($){return Xz($,"DOMError")}}var HW$=L(()=>{FQ()});class FW${match($){return c01($)}coerce($,Z){return{type:this.getType($),value:this.getMessage($,Z),stack:this.getStack($),cause:$.cause?Z.next($.cause):void 0,synthetic:!1}}getType($){return $.name||$.constructor.name}getMessage($,Z){let X=$.message;if(X.error&&typeof X.error.message=="string")return String(X.error.message);return String(X)}getStack($){return $.stacktrace||$.stack||void 0}}var NW$=L(()=>{FQ()});class UW${constructor(){}match($){return LK$($)&&$.error!=null}coerce($,Z){let X=Z.apply($.error);if(!X)return{type:"ErrorEvent",value:$.message,stack:Z.syntheticException?.stack,synthetic:!0};return X}}var BW$=L(()=>{FQ()});class OW${match($){return typeof $=="string"}coerce($,Z){let[X,Q]=this.getInfos($);return{type:X??"Error",value:Q??$,stack:Z.syntheticException?.stack,synthetic:!0}}getInfos($){let Z="Error",X=$,Q=$.match(CE4);if(Q)Z=Q[1],X=Q[2];return[Z,X]}}var CE4;var LW$=L(()=>{CE4=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i});var DW$;var wW$=L(()=>{DW$=["fatal","error","warning","log","info","debug"]});function HJ0($,Z=40){let X=Object.keys($);if(X.sort(),!X.length)return"[object has no keys]";for(let Q=X.length;Q>0;Q--){let Y=X.slice(0,Q).join(", ");if(!(Y.length>Z)){if(Q===X.length)return Y;return Y.length<=Z?Y:`${Y.slice(0,Z)}...`}}return""}var Y11=()=>{};class EW${match($){return typeof $=="object"&&$!==null}coerce($,Z){let X=this.getErrorPropertyFromObject($);if(X)return Z.apply(X);return{type:this.getType($),value:this.getValue($),stack:Z.syntheticException?.stack,level:this.isSeverityLevel($.level)?$.level:"error",synthetic:!0}}getType($){return Ch($)?$.constructor.name:"Error"}getValue($){if("name"in $&&typeof $.name=="string"){let Q=`'${$.name}' captured as exception`;if("message"in $&&typeof $.message=="string")Q+=` with message: '${$.message}'`;return Q}if("message"in $&&typeof $.message=="string")return $.message;let Z=this.getObjectClassName($),X=HJ0($);return`${Z&&Z!=="Object"?`'${Z}'`:"Object"} captured as exception with keys: ${X}`}isSeverityLevel($){return zL($)&&!OK$($)&&DW$.indexOf($)>=0}getErrorPropertyFromObject($){for(let Z in $)if(Object.prototype.hasOwnProperty.call($,Z)){let X=$[Z];if(xK$(X))return X}}getObjectClassName($){try{let Z=Object.getPrototypeOf($);return Z?Z.constructor.name:void 0}catch(Z){return}}}var jW$=L(()=>{FQ();wW$();Y11()});class zW${match($){return Ch($)}coerce($,Z){let X=$.constructor.name;return{type:X,value:`${X} captured as exception with keys: ${HJ0($)}`,stack:Z.syntheticException?.stack,synthetic:!0}}}var PW$=L(()=>{FQ();Y11()});class AW${match($){return eG0($)}coerce($,Z){return{type:"Error",value:`Primitive value captured as exception: ${String($)}`,stack:Z.syntheticException?.stack,synthetic:!0}}}var TW$=L(()=>{FQ()});class RW${match($){return Xz($,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection($)}isCustomEventWrappingRejection($){if(!Ch($))return!1;try{let Z=$.detail;return Z!=null&&typeof Z=="object"&&"reason"in Z}catch{return!1}}coerce($,Z){let X=this.getUnhandledRejectionReason($);if(eG0(X))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(X)}`,stack:Z.syntheticException?.stack,synthetic:!0};return Z.apply(X)}getUnhandledRejectionReason($){try{if("reason"in $)return $.reason;if("detail"in $&&$.detail!=null&&typeof $.detail=="object"&&"reason"in $.detail)return $.detail.reason}catch{}return $}}var IW$=L(()=>{FQ()});var qW$=L(()=>{HW$();NW$();BW$();LW$();jW$();PW$();TW$();IW$()});class MW${constructor($){this._maxSize=$,this._cache=new Map}get($){let Z=this._cache.get($);if(Z===void 0)return;return this._cache.delete($),this._cache.set($,Z),Z}set($,Z){this._cache.set($,Z)}reduce(){while(this._cache.size>=this._maxSize){let $=this._cache.keys().next().value;if($)this._cache.delete($)}}}var VW$=()=>{};function G11($){if(!$)return{...FJ0};return{enabled:$.enabled??FJ0.enabled,max_bytes:xE4($.max_bytes,FJ0.max_bytes)}}function vE4($){if(!$)return{sanitizedProperties:{},droppedKeys:[]};let Z=[];return{sanitizedProperties:Object.keys($).reduce((Q,Y)=>{if(_E4.has(Y))return Z.push(Y),Q;return Q[Y]=$[Y],Q},{}),droppedKeys:Z}}class kW${constructor($){this._entries=[],this._totalBytes=0,this._config=G11($)}setConfig($){this._config=G11($),this._trimToMaxBytes()}add($){let Z=fE4($);if(!Z)return;let X=SW$(Z.json);if(X>this._config.max_bytes)return;this._entries.push({step:Z.step,bytes:X}),this._totalBytes+=X,this._trimToMaxBytes()}getAttachable(){return this._entries.map(($)=>$.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let $=this._entries.shift();if($)this._totalBytes-=$.bytes}}}function xE4($,Z){if(!jo($)||$===1/0||$===-1/0)return Z;let X=Math.floor($);if(X<0)return Z;return X}function fE4($){let Z=bE4($);if(!Z)return;try{let X=JSON.parse(Z);if(!Eo(X))return;let Q=X,Y=Q[Io.MESSAGE],G=Q[Io.TIMESTAMP];if(!zL(Y)||Y.trim().length===0)return;if(!zL(G)&&!jo(G))return;return{step:Q,json:Z}}catch{return}}function bE4($){let Z=new WeakSet;try{return JSON.stringify($,(X,Q)=>{if(typeof Q=="bigint")return Q.toString();if(typeof Q=="function"||typeof Q=="symbol")return;if(Q instanceof Date)return Q.toISOString();if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};if(Q&&typeof Q=="object"){if(Z.has(Q))return"[Circular]";Z.add(Q)}return Q})}catch{return}}function SW$($){if(typeof TextEncoder<"u")return new TextEncoder().encode($).length;let Z=encodeURIComponent($),X=0;for(let Q=0;Q<Z.length;Q++)if(Z[Q]==="%")X+=1,Q+=2;else X+=1;return X}var Io,_E4,FJ0;var CW$=L(()=>{FQ();Io={MESSAGE:"$message",TIMESTAMP:"$timestamp"},_E4=new Set([Io.MESSAGE,Io.TIMESTAMP]),FJ0={enabled:!0,max_bytes:32768}});var QY={};Z0(QY,{winjsStackLineParser:()=>oK$,stripReservedExceptionStepFields:()=>vE4,reverseAndStripFrames:()=>GW$,resolveExceptionStepsConfig:()=>G11,opera11StackLineParser:()=>sK$,opera10StackLineParser:()=>aK$,nodeStackLineParser:()=>ZW$,getUtf8ByteLength:()=>SW$,geckoStackLineParser:()=>Q11,createStackParser:()=>JW$,createDefaultStackParser:()=>SE4,chromeStackLineParser:()=>X11,StringCoercer:()=>OW$,ReduceableCache:()=>MW$,PromiseRejectionEventCoercer:()=>RW$,PrimitiveCoercer:()=>AW$,ObjectCoercer:()=>EW$,ExceptionStepsBuffer:()=>kW$,EventCoercer:()=>zW$,ErrorPropertiesBuilder:()=>iK$,ErrorEventCoercer:()=>UW$,ErrorCoercer:()=>FW$,EXCEPTION_STEP_INTERNAL_FIELDS:()=>Io,DOMExceptionCoercer:()=>WW$,DEFAULT_EXCEPTION_STEPS_CONFIG:()=>FJ0});var _W$=L(()=>{pK$();KW$();qW$();VW$();CW$()});var Yz=L(()=>{oG0();h01();a01();fK$();Ao();bK$();_W$();FQ();uK$();$11();cK$();Zz()});import{createReadStream as yE4}from"fs";import{createInterface as gE4}from"readline";async function bW$($){let Z={};for(let Y=$.length-1;Y>=0;Y--){let G=$[Y],J=G?.filename;if(!G||typeof J!="string"||typeof G.lineno!="number"||dE4(J)||iE4(G))continue;if(!Z[J])Z[J]=[];Z[J].push(G.lineno)}let X=Object.keys(Z);if(X.length==0)return $;let Q=[];for(let Y of X){if(fW$.get(Y))continue;let G=Z[Y];if(!G)continue;G.sort((W,H)=>W-H);let J=nE4(G);if(J.every((W)=>pE4(Y,W)))continue;let K=tE4(NJ0,Y,{});Q.push(cE4(Y,J,K))}if(await Promise.all(Q).catch(()=>{}),$&&$.length>0)lE4($,NJ0);return NJ0.reduce(),$}function cE4($,Z,X){return new Promise((Q)=>{let Y=yE4($),G=gE4({input:Y});function J(){Y.destroy(),Q()}let K=0,W=0,H=Z[W];if(H===void 0)return void J();let F=H[0],N=H[1];function U(){fW$.set($,1),G.close(),G.removeAllListeners(),J()}Y.on("error",U),G.on("error",U),G.on("close",J),G.on("line",(B)=>{if(K++,K<F)return;if(X[K]=oE4(B,0),K>=N){if(W===Z.length-1){G.close(),G.removeAllListeners();return}W++;let O=Z[W];if(O===void 0){G.close(),G.removeAllListeners();return}F=O[0],N=O[1]}})})}function lE4($,Z){for(let X of $)if(X.filename&&X.context_line===void 0&&typeof X.lineno=="number"){let Q=Z.get(X.filename);if(Q===void 0)continue;mE4(X.lineno,X,Q)}}function mE4($,Z,X){if(Z.lineno===void 0||X===void 0)return;Z.pre_context=[];for(let Y=yW$($);Y<$;Y++){let G=X[Y];if(G===void 0)return void vW$(Z);Z.pre_context.push(G)}if(X[$]===void 0)return void vW$(Z);Z.context_line=X[$];let Q=gW$($);Z.post_context=[];for(let Y=$+1;Y<=Q;Y++){let G=X[Y];if(G===void 0)break;Z.post_context.push(G)}}function vW$($){delete $.pre_context,delete $.context_line,delete $.post_context}function dE4($){return $.startsWith("node:")||$.endsWith(".min.js")||$.endsWith(".min.cjs")||$.endsWith(".min.mjs")||$.startsWith("data:")}function iE4($){if($.lineno!==void 0&&$.lineno>uE4)return!0;if($.colno!==void 0&&$.colno>hE4)return!0;return!1}function pE4($,Z){let X=NJ0.get($);if(X===void 0)return!1;for(let Q=Z[0];Q<=Z[1];Q++)if(X[Q]===void 0)return!1;return!0}function nE4($){if(!$.length)return[];let Z=0,X=$[0];if(typeof X!="number")return[];let Q=xW$(X),Y=[];while(!0){if(Z===$.length-1){Y.push(Q);break}let G=$[Z+1];if(typeof G!="number")break;if(G<=Q[1])Q[1]=G+J11;else Y.push(Q),Q=xW$(G);Z++}return Y}function xW$($){return[yW$($),gW$($)]}function yW$($){return Math.max(1,$-J11)}function gW$($){return $+J11}function tE4($,Z,X){let Q=$.get(Z);if(Q===void 0)return $.set(Z,X),X;return Q}function oE4($,Z){let X=$,Q=X.length;if(Q<=150)return X;if(Z>Q)Z=Q;let Y=Math.max(Z-60,0);if(Y<5)Y=0;let G=Math.min(Y+140,Q);if(G>Q-5)G=Q;if(G===Q)Y=Math.max(G-140,0);if(X=X.slice(Y,G),Y>0)X=`...${X}`;if(G<Q)X+="...";return X}var NJ0,fW$,J11=7,hE4=1000,uE4=1e4;var hW$=L(()=>{Yz();NJ0=new QY.ReduceableCache(25),fW$=new QY.ReduceableCache(20)});import{isAbsolute as rE4,relative as aE4,sep as sE4}from"path";function uW$($=process.cwd()){let Z=sE4==="\\",X=(Y)=>Z?Y.replace(/\\/g,"/"):Y,Q=X($);return async(Y)=>{for(let G of Y)if(!(!G.filename||G.filename.startsWith("node:")||G.filename.startsWith("data:"))){if(rE4(G.filename))G.filename=X(aE4(Q,X(G.filename)))}return Y}}var cW$=()=>{};function eE4($,Z){let X=!1;return Object.assign((Q)=>{let G=global.process.listeners("uncaughtException").filter((J)=>J.name!=="domainUncaughtExceptionClear"&&J._posthogErrorHandler!==!0).length===0;if($(Q,{mechanism:{type:"onuncaughtexception",handled:!1}}),!X&&G)X=!0,Z(Q)},{_posthogErrorHandler:!0})}function lW$($,Z){globalThis.process?.on("uncaughtException",eE4($,Z))}function mW$($){globalThis.process?.on("unhandledRejection",(Z)=>$(Z,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var dW$=()=>{};class _J{constructor($,Z,X){this.client=$,this._exceptionAutocaptureEnabled=Z.enableExceptionAutocapture||!1,this._logger=X,this._rateLimiter=new m01({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError($){return Eo($)&&"__posthog_previously_captured_error"in $&&$.__posthog_previously_captured_error===!0}static async buildEventMessage($,Z,X,Q){let Y={...Q},G=this.errorPropertiesBuilder.buildFromUnknown($,Z);return G.$exception_list=await this.errorPropertiesBuilder.modifyFrames(G.$exception_list),{event:"$exception",distinctId:X,properties:{...G,...Y},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())lW$(this.onException.bind(this),this.onFatalError.bind(this)),mW$(this.onException.bind(this))}onException($,Z){this.client.addPendingPromise((async()=>{if(!_J.isPreviouslyCapturedError($)){let X=await _J.buildEventMessage($,Z),Y=X.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(Y))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:Y});return this.client.capture(X)}})())}async onFatalError($){console.error($),await this.client.shutdown($j4),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}var $j4=2000;var UJ0=L(()=>{dW$();Yz()});var iW$="5.30.6";var pW$=()=>{};var qo;var K11=L(()=>{qo={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"}});async function nW$($){let Z=globalThis.crypto?.subtle;if(!Z)throw Error("SubtleCrypto API not available");let X=await Z.digest("SHA-1",new TextEncoder().encode($));return Array.from(new Uint8Array(X)).map((Y)=>Y.toString(16).padStart(2,"0")).join("")}var tW$=()=>{};class W11{constructor({pollingInterval:$,personalApiKey:Z,projectApiKey:X,timeout:Q,host:Y,customHeaders:G,...J}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=$,this.personalApiKey=Z,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=Q,this.projectApiKey=X,this.host=Y,this.poller=void 0,this.fetch=J.fetch||fetch,this.onError=J.onError,this.customHeaders=G,this.onLoad=J.onLoad,this.cacheProvider=J.cacheProvider,this.strictLocalEvaluation=J.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug($=!0){this.debugMode=$}logMsgIfDebug($){if(this.debugMode)$()}createEvaluationContext($,Z={},X={},Q={},Y={}){return{distinctId:$,groups:Z,personProperties:X,groupProperties:Q,evaluationCache:Y}}async getFeatureFlag($,Z,X={},Q={},Y={}){await this.loadFeatureFlags();let G,J;if(!this.loadedSuccessfullyOnce)return G;if(J=this.featureFlagsByKey[$],J!==void 0){let K=this.createEvaluationContext(Z,X,Q,Y);try{G=(await this.computeFlagAndPayloadLocally(J,K)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${$} -> ${G}`))}catch(W){if(W instanceof KH||W instanceof v4)this.logMsgIfDebug(()=>console.debug(`${W.name} when computing flag locally: ${$}: ${W.message}`));else if(W instanceof Error)this.onError?.(Error(`Error computing flag locally: ${$}: ${W}`))}}return G}async getAllFlagsAndPayloads($,Z){await this.loadFeatureFlags();let X={},Q={},Y=this.featureFlags.length==0,G=Z?Z.map((K)=>this.featureFlagsByKey[K]).filter(Boolean):this.featureFlags,J={...$,evaluationCache:$.evaluationCache??{}};return await Promise.all(G.map(async(K)=>{try{let{value:W,payload:H}=await this.computeFlagAndPayloadLocally(K,J);if(X[K.key]=W,H)Q[K.key]=H}catch(W){if(W instanceof KH||W instanceof v4)this.logMsgIfDebug(()=>console.debug(`${W.name} when computing flag locally: ${K.key}: ${W.message}`));else if(W instanceof Error)this.onError?.(Error(`Error computing flag locally: ${K.key}: ${W}`));Y=!0}})),{response:X,payloads:Q,fallbackToFlags:Y}}async computeFlagAndPayloadLocally($,Z,X={}){let{matchValue:Q,skipLoadCheck:Y=!1}=X;if(!Y)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let G;G=Q!==void 0?Q:await this.computeFlagValueLocally($,Z);let J=this.getFeatureFlagPayload($.key,G);return{value:G,payload:J}}async computeFlagValueLocally($,Z){let{distinctId:X,groups:Q,personProperties:Y,groupProperties:G}=Z;if($.ensure_experience_continuity)throw new v4("Flag has experience continuity enabled");if(!$.active)return!1;let K=($.filters||{}).aggregation_group_type_index;if(K!=null){let W=this.groupTypeMapping[String(K)];if(!W)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${K} for feature flag ${$.key}`)),new v4("Flag has unknown group type index");if(!(W in Q))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${$.key} without group names passed in`)),!1;if($.bucketing_identifier==="device_id"&&(Y?.$device_id===void 0||Y?.$device_id===null||Y?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${$.key}`));let H=G[W];return await this.matchFeatureFlagProperties($,Q[W],H,Z)}{let W=this.getBucketingValueForFlag($,X,Y);if(W===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${$.key} without $device_id, falling back to server evaluation`)),new v4(`Can't compute feature flag: ${$.key} without $device_id`);return await this.matchFeatureFlagProperties($,W,Y,Z)}}getBucketingValueForFlag($,Z,X){if($.filters?.aggregation_group_type_index!=null)return Z;if($.bucketing_identifier==="device_id"){let Q=X?.$device_id;if(Q==null||Q==="")return;return Q}return Z}getFeatureFlagPayload($,Z){let X=null;if(Z!==!1&&Z!=null){if(typeof Z=="boolean")X=this.featureFlagsByKey?.[$]?.filters?.payloads?.[Z.toString()]||null;else if(typeof Z=="string")X=this.featureFlagsByKey?.[$]?.filters?.payloads?.[Z]||null;if(X!=null){if(typeof X=="object")return X;if(typeof X=="string")try{return JSON.parse(X)}catch{}return X}}return null}async evaluateFlagDependency($,Z,X){let{evaluationCache:Q}=X,Y=$.key;if(!this.featureFlagsByKey)throw new v4("Feature flags not available for dependency evaluation");if(!("dependency_chain"in $))throw new v4(`Flag dependency property for '${Y}' is missing required 'dependency_chain' field`);let G=$.dependency_chain;if(!Array.isArray(G))throw new v4(`Flag dependency property for '${Y}' has an invalid 'dependency_chain' (expected array, got ${typeof G})`);if(G.length===0)throw new v4(`Circular dependency detected for flag '${Y}' (empty dependency chain)`);for(let K of G){if(!(K in Q)){let H=this.featureFlagsByKey[K];if(H)if(H.active)try{let F=await this.computeFlagValueLocally(H,X);Q[K]=F}catch(F){throw new v4(`Error evaluating flag dependency '${K}' for flag '${Y}': ${F}`)}else Q[K]=!1;else throw new v4(`Missing flag dependency '${K}' for flag '${Y}'`)}if(Q[K]==null)throw new v4(`Dependency '${K}' could not be evaluated`)}let J=Q[Y];return this.flagEvaluatesToExpectedValue($.value,J)}flagEvaluatesToExpectedValue($,Z){if(typeof $=="boolean")return $===Z||typeof Z=="string"&&Z!==""&&$===!0;if(typeof $=="string")return Z===$;return!1}async matchFeatureFlagProperties($,Z,X,Q){let Y=$.filters||{},G=Y.groups||[],J=!1,K;for(let W of G)try{if(await this.isConditionMatch($,Z,W,X,Q)){let H=W.variant,F=Y.multivariate?.variants||[];K=H&&F.some((N)=>N.key===H)?H:await this.getMatchingVariant($,Z)||!0;break}}catch(H){if(H instanceof KH)throw H;if(H instanceof v4)J=!0;else throw H}if(K!==void 0)return K;if(J)throw new v4("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch($,Z,X,Q,Y){let G=X.rollout_percentage,J=(K)=>{this.logMsgIfDebug(()=>console.warn(K))};if((X.properties||[]).length>0){for(let K of X.properties){let W=K.type,H=!1;if(H=W==="cohort"?eW$(K,Q,this.cohorts,this.debugMode):W==="flag"?await this.evaluateFlagDependency(K,Q,Y):sW$(K,Q,J),!H)return!1}if(G==null)return!0}if(G!=null&&await oW$($.key,Z)>G/100)return!1;return!0}async getMatchingVariant($,Z){let X=await oW$($.key,Z,"variant"),Q=this.variantLookupTable($).find((Y)=>X>=Y.valueMin&&X<Y.valueMax);if(Q)return Q.key}variantLookupTable($){let Z=[],X=0,Q=0;return(($.filters||{}).multivariate?.variants||[]).forEach((J)=>{Q=X+J.rollout_percentage/100,Z.push({valueMin:X,valueMax:Q,key:J.key}),X=Q}),Z}updateFlagState($){this.featureFlags=$.flags,this.featureFlagsByKey=$.flags.reduce((Z,X)=>(Z[X.key]=X,Z),{}),this.groupTypeMapping=$.groupTypeMapping,this.cohorts=$.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags($){if(this.strictLocalEvaluation)return;let Z=$.filter((X)=>X.ensure_experience_continuity);if(Z.length>0)console.warn(`[PostHog] You are using local evaluation but ${Z.length} flag(s) have experience continuity enabled: ${Z.map((X)=>X.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache($){if(!this.cacheProvider)return!1;try{let Z=await this.cacheProvider.getFlagDefinitions();if(Z)return this.updateFlagState(Z),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${$} (${Z.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(Z.flags),!0;return!1}catch(Z){return this.onError?.(Error(`Failed to load from cache: ${Z}`)),!1}}async loadFeatureFlags($=!1){if(this.loadedSuccessfullyOnce&&!$)return;if(!$&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((Z)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${Z}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(Zj4,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let $=!0;if(this.cacheProvider)try{$=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(X){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${X}`))}if(!$){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let Z=await this._requestFeatureFlagDefinitions();if(!Z)return;switch(Z.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=Z.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new fh(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new fh(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new fh(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let X=await Z.json()??{};if(!("flags"in X))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(X)}`));this.flagsEtag=Z.headers?.get("ETag")??void 0;let Q={flags:X.flags??[],groupTypeMapping:X.group_type_mapping||{},cohorts:X.cohorts||{}};if(this.updateFlagState(Q),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&$)try{await this.cacheProvider.onFlagDefinitionsReceived(Q)}catch(Y){this.onError?.(Error(`Failed to store in cache: ${Y}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(Q.flags);break}default:return}}catch($){if($ instanceof fh)this.onError?.($)}}getPersonalApiKeyRequestOptions($="GET",Z){let X={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(Z)X["If-None-Match"]=Z;return{method:$,headers:X}}_requestFeatureFlagDefinitions(){let $=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,Z=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),X=null;if(this.timeout&&typeof this.timeout=="number"){let Q=new AbortController;X=yN(()=>{Q.abort()},this.timeout),Z.signal=Q.signal}try{let Q=this.fetch;return Q($,Z)}finally{clearTimeout(X)}}async stopPoller($=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let Z=this.cacheProvider.shutdown();if(Z instanceof Promise)await Promise.race([Z,new Promise((X,Q)=>setTimeout(()=>Q(Error(`Cache shutdown timeout after ${$}ms`)),$))])}catch(Z){this.onError?.(Error(`Error during cache shutdown: ${Z}`))}}}async function oW$($,Z,X=""){let Q=await nW$(`${$}.${Z}${X}`);return parseInt(Q.slice(0,15),16)/Xj4}function sW$($,Z,X){let{key:Q,value:Y}=$,G=$.operator||"exact";if(Q in Z){if(G==="is_not_set")throw new v4("Operator is_not_set is not supported")}else throw new v4(`Property ${Q} not found in propertyValues`);let J=Z[Q];if(J==null&&!Qj4.includes(G)){if(X)X(`Property ${Q} cannot have a value of null/undefined with the ${G} operator`);return!1}function K(H,F){if(Array.isArray(H))return H.map((N)=>String(N).toLowerCase()).includes(String(F).toLowerCase());return String(H).toLowerCase()===String(F).toLowerCase()}function W(H,F,N){if(N==="gt")return H>F;if(N==="gte")return H>=F;if(N==="lt")return H<F;if(N==="lte")return H<=F;throw Error(`Invalid operator: ${N}`)}switch(G){case"exact":return K(Y,J);case"is_not":return!K(Y,J);case"is_set":return Q in Z;case"icontains":return String(J).toLowerCase().includes(String(Y).toLowerCase());case"not_icontains":return!String(J).toLowerCase().includes(String(Y).toLowerCase());case"regex":return rW$(String(Y))&&String(J).match(String(Y))!==null;case"not_regex":return rW$(String(Y))&&String(J).match(String(Y))===null;case"gt":case"gte":case"lt":case"lte":{let H=typeof Y=="number"?Y:null;if(typeof Y=="string")try{H=parseFloat(Y)}catch(F){}if(H==null||J==null)return W(String(J),String(Y),G);if(typeof J=="string")return W(J,String(Y),G);return W(J,H,G)}case"is_date_after":case"is_date_before":{if(typeof Y=="boolean")throw new v4("Date operations cannot be performed on boolean values");let H=Wj4(String(Y));if(H==null)H=aW$(Y);if(H==null)throw new v4(`Invalid date: ${Y}`);let F=aW$(J);if(["is_date_before"].includes(G))return F<H;return F>H}case"semver_eq":return vJ(M7(String(J)),M7(String(Y)))===0;case"semver_neq":return vJ(M7(String(J)),M7(String(Y)))!==0;case"semver_gt":return vJ(M7(String(J)),M7(String(Y)))>0;case"semver_gte":return vJ(M7(String(J)),M7(String(Y)))>=0;case"semver_lt":return vJ(M7(String(J)),M7(String(Y)))<0;case"semver_lte":return vJ(M7(String(J)),M7(String(Y)))<=0;case"semver_tilde":{let H=M7(String(J)),{lower:F,upper:N}=Gj4(String(Y));return vJ(H,F)>=0&&vJ(H,N)<0}case"semver_caret":{let H=M7(String(J)),{lower:F,upper:N}=Jj4(String(Y));return vJ(H,F)>=0&&vJ(H,N)<0}case"semver_wildcard":{let H=M7(String(J)),{lower:F,upper:N}=Kj4(String(Y));return vJ(H,F)>=0&&vJ(H,N)<0}default:throw new v4(`Unknown operator: ${G}`)}}function Yj4($,Z){if(!($ in Z))throw new KH(`cohort ${$} not found in local cohorts - likely a static cohort that requires server evaluation`)}function eW$($,Z,X,Q=!1){let Y=String($.value);Yj4(Y,X);let G=X[Y];return $H$(G,Z,X,Q)}function $H$($,Z,X,Q=!1){if(!$)return!0;let{type:Y,values:G}=$;if(!G||G.length===0)return!0;let J=!1;if("values"in G[0]){for(let K of G)try{let W=$H$(K,Z,X,Q);if(Y==="AND"){if(!W)return!1}else if(W)return!0}catch(W){if(W instanceof KH)throw W;if(W instanceof v4){if(Q)console.debug(`Failed to compute property ${K} locally: ${W}`);J=!0}else throw W}if(J)throw new v4("Can't match cohort without a given cohort property value");return Y==="AND"}for(let K of G)try{let W;if(K.type==="cohort")W=eW$(K,Z,X,Q);else if(K.type==="flag"){if(Q)console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${K.key||"unknown"}'`);continue}else W=sW$(K,Z);let H=K.negation||!1;if(Y==="AND"){if(!W&&!H)return!1;if(W&&H)return!1}else{if(W&&!H)return!0;if(!W&&H)return!0}}catch(W){if(W instanceof KH)throw W;if(W instanceof v4){if(Q)console.debug(`Failed to compute property ${K} locally: ${W}`);J=!0}else throw W}if(J)throw new v4("can't match cohort without a given cohort property value");return Y==="AND"}function rW$($){try{return new RegExp($),!0}catch(Z){return!1}}function M7($){let X=String($).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!X||X.startsWith("."))throw new v4(`Invalid semver: ${$}`);let Q=X.split("."),Y=(W)=>{if(W===void 0||W==="")return 0;if(!/^\d+$/.test(W))throw new v4(`Invalid semver: ${$}`);return parseInt(W,10)},G=Y(Q[0]),J=Y(Q[1]),K=Y(Q[2]);return[G,J,K]}function vJ($,Z){for(let X=0;X<3;X++){if($[X]<Z[X])return-1;if($[X]>Z[X])return 1}return 0}function Gj4($){let Z=M7($),X=[Z[0],Z[1],Z[2]],Q=[Z[0],Z[1]+1,0];return{lower:X,upper:Q}}function Jj4($){let Z=M7($),[X,Q,Y]=Z,G=[X,Q,Y],J;return J=X>0?[X+1,0,0]:Q>0?[0,Q+1,0]:[0,0,Y+1],{lower:G,upper:J}}function Kj4($){let X=String($).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!X)throw new v4(`Invalid wildcard semver: ${$}`);let Q=X.split("."),Y=parseInt(Q[0],10);if(isNaN(Y))throw new v4(`Invalid wildcard semver: ${$}`);let G,J;if(Q.length===1)G=[Y,0,0],J=[Y+1,0,0];else{let K=parseInt(Q[1],10);if(isNaN(K))throw new v4(`Invalid wildcard semver: ${$}`);G=[Y,K,0],J=[Y,K+1,0]}return{lower:G,upper:J}}function aW$($){if($ instanceof Date)return $;if(typeof $=="string"||typeof $=="number"){let Z=new Date($);if(!isNaN(Z.valueOf()))return Z;throw new v4(`${$} is in an invalid date format`)}throw new v4(`The date provided ${$} must be a string, number, or date object`)}function Wj4($){let Z=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,X=$.match(Z),Q=new Date(new Date().toISOString());if(!X)return null;{if(!X.groups)return null;let Y=parseInt(X.groups.number);if(Y>=1e4)return null;let G=X.groups.interval;if(G=="h")Q.setUTCHours(Q.getUTCHours()-Y);else if(G=="d")Q.setUTCDate(Q.getUTCDate()-Y);else if(G=="w")Q.setUTCDate(Q.getUTCDate()-7*Y);else if(G=="m")Q.setUTCMonth(Q.getUTCMonth()-Y);else{if(G!="y")return null;Q.setUTCFullYear(Q.getUTCFullYear()-Y)}return Q}}var Zj4=60000,Xj4=1152921504606847000,Qj4,fh,v4,KH;var ZH$=L(()=>{Yz();tW$();Qj4=["is_not"];fh=class fh extends Error{constructor($){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=$,Object.setPrototypeOf(this,fh.prototype)}};v4=class v4 extends Error{constructor($){super($);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,v4.prototype)}};KH=class KH extends Error{constructor($){super($);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,KH.prototype)}}});class H11{getProperty($){return this._memoryStorage[$]}setProperty($,Z){this._memoryStorage[$]=Z!==null?Z:void 0}constructor(){this._memoryStorage={}}}var XH$=()=>{};function Oj4($){return typeof $=="string"?$.trim():""}function Lj4($){return(typeof $=="string"?$.trim():"")||void 0}function Dj4($){return(typeof $=="string"?$.trim():"")||Bj4}var Hj4=100,QH$=30000,Fj4=50000,Nj4=50,Uj4=500,Bj4="https://us.i.posthog.com",F11;var YH$=L(()=>{pW$();Yz();K11();ZH$();UJ0();XH$();F11=class F11 extends GJ0{constructor($,Z={}){let X=Oj4($),Q={...Z,host:Dj4(Z.host),personalApiKey:Lj4(Z.personalApiKey)};if(super(X,Q),this._memoryStorage=new H11,this.options=Q,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof Q.featureFlagsPollingInterval=="number"?Math.max(Q.featureFlagsPollingInterval,Hj4):QH$,typeof Q.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(Q.waitUntilDebounceMs,0);if(typeof Q.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(Q.waitUntilMaxWaitMs,0);if(Q.personalApiKey){if(Q.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(Q.enableLocalEvaluation!==!1)this.featureFlagsPoller=new W11({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:Q.personalApiKey,projectApiKey:X,timeout:Q.requestTimeout??1e4,host:this.host,fetch:Q.fetch,onError:(G)=>{this._events.emit("error",G)},onLoad:(G)=>{this._events.emit("localEvaluationFlagsLoaded",G)},customHeaders:this.getCustomHeaders(),cacheProvider:Q.flagDefinitionCacheProvider,strictLocalEvaluation:Q.strictLocalEvaluation})}this.errorTracking=new _J(this,Q,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=Q.maxCacheSize||Fj4}enqueue($,Z,X){super.enqueue($,Z,X),this.scheduleDebouncedFlush()}async flush(){let $=super.flush(),Z=this.options.waitUntil;if(Z&&!this._waitUntilCycle)try{Z($.catch(()=>{}))}catch{}return $}scheduleDebouncedFlush(){let $=this.options.waitUntil;if(!$)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let G,J=new Promise((K)=>{G=K});try{$(J)}catch{return}this._waitUntilCycle={resolve:G,startedAt:Date.now(),timer:void 0}}let Z=Date.now()-this._waitUntilCycle.startedAt,X=this.options.waitUntilMaxWaitMs??Uj4,Q=Z>=X;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(Q)return void this.resolveWaitUntilFlush();let Y=this.options.waitUntilDebounceMs??Nj4;this._waitUntilCycle.timer=yN(()=>{this.resolveWaitUntilFlush()},Y)}_consumeWaitUntilCycle(){let $=this._waitUntilCycle;if($)clearTimeout($.timer),this._waitUntilCycle=void 0;return $?.resolve}async resolveWaitUntilFlush(){let $=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{$?.()}}getPersistedProperty($){return this._memoryStorage.getProperty($)}setPersistedProperty($,Z){return this._memoryStorage.setProperty($,Z)}fetch($,Z){return this.options.fetch?this.options.fetch($,Z):fetch($,Z)}getLibraryVersion(){return iW$}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug($=!0){super.debug($),this.featureFlagsPoller?.debug($)}capture($){if(typeof $=="string")this._logger.warn("Called capture() with a string as the first argument when an object was expected.");if($.event==="$exception"&&!$._originatedFromCaptureException)this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically.");this.addPendingPromise(this.prepareEventMessage($).then(({distinctId:Z,event:X,properties:Q,options:Y})=>super.captureStateless(Z,X,Q,{timestamp:Y.timestamp,disableGeoip:Y.disableGeoip,uuid:Y.uuid})).catch((Z)=>{if(Z)console.error(Z)}))}async captureImmediate($){if(typeof $=="string")this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected.");if($.event==="$exception"&&!$._originatedFromCaptureException)this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default.");return this.addPendingPromise(this.prepareEventMessage($).then(({distinctId:Z,event:X,properties:Q,options:Y})=>super.captureStatelessImmediate(Z,X,Q,{timestamp:Y.timestamp,disableGeoip:Y.disableGeoip,uuid:Y.uuid})).catch((Z)=>{if(Z)console.error(Z)}))}identify({distinctId:$,properties:Z={},disableGeoip:X}){let{$set:Q,$set_once:Y,$anon_distinct_id:G,...J}=Z,H={$set:Q||J,$set_once:Y||{},$anon_distinct_id:G??void 0};super.identifyStateless($,H,{disableGeoip:X})}async identifyImmediate({distinctId:$,properties:Z={},disableGeoip:X}){let{$set:Q,$set_once:Y,$anon_distinct_id:G,...J}=Z,H={$set:Q||J,$set_once:Y||{},$anon_distinct_id:G??void 0};super.identifyStatelessImmediate($,H,{disableGeoip:X})}alias($){super.aliasStateless($.alias,$.distinctId,void 0,{disableGeoip:$.disableGeoip})}async aliasImmediate($){await super.aliasStatelessImmediate($.alias,$.distinctId,void 0,{disableGeoip:$.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady($=QH$){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((Z)=>{let X=setTimeout(()=>{Q(),Z(!1)},$),Q=this._events.on("localEvaluationFlagsLoaded",(Y)=>{clearTimeout(X),Q(),Z(Y>0)})})}_resolveDistinctId($,Z){if(typeof $=="string")return{distinctId:$,options:Z};return{distinctId:this.context?.get()?.distinctId,options:$}}async _getFeatureFlagResult($,Z,X={},Q){let Y=X.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&$ in this._flagOverrides){let P=this._flagOverrides[$];if(P===void 0)return;let I=this._payloadOverrides?.[$];return{key:$,enabled:P!==!1,variant:typeof P=="string"?P:void 0,payload:I}}let{groups:G,disableGeoip:J}=X,{onlyEvaluateLocally:K,personProperties:W,groupProperties:H}=X,F=this.addLocalPersonAndGroupProperties(Z,G,W,H);W=F.allPersonProperties,H=F.allGroupProperties;let N=this.createFeatureFlagEvaluationContext(Z,G,W,H);if(K==null)K=this.options.strictLocalEvaluation??!1;let U,B=!1,O,D,w,E,j,z;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let P=this.featureFlagsPoller?.featureFlagsByKey[$];if(P)try{let I=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(P,N,{matchValue:Q});if(I){B=!0;let V=I.value;E=P.id,z="Evaluated locally",U={key:$,enabled:V!==!1,variant:typeof V=="string"?V:void 0,payload:I.payload??void 0}}}catch(I){if(I instanceof KH||I instanceof v4)this._logger?.info(`${I.name} when computing flag locally: ${$}: ${I.message}`);else throw I}}if(!B&&!K){let P=await super.getFeatureFlagDetailsStateless(N.distinctId,N.groups,N.personProperties,N.groupProperties,J,[$]);if(P===void 0)w=qo.UNKNOWN_ERROR;else{O=P.requestId,D=P.evaluatedAt;let I=[];if(P.errorsWhileComputingFlags)I.push(qo.ERRORS_WHILE_COMPUTING);if(P.quotaLimited?.includes("feature_flags"))I.push(qo.QUOTA_LIMITED);let V=P.flags[$];if(V===void 0)I.push(qo.FLAG_MISSING);else{E=V.metadata?.id,j=V.metadata?.version,z=V.reason?.description??V.reason?.code;let q;if(V.metadata?.payload!==void 0)try{q=JSON.parse(V.metadata.payload)}catch{q=V.metadata.payload}U={key:$,enabled:V.enabled,variant:V.variant,payload:q}}if(I.length>0)w=I.join(",")}}if(Y){let P=U===void 0?void 0:U.enabled===!1?!1:U.variant??!0,I=`${$}_${P}`;if(!(Z in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[Z].includes(I)){if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(Array.isArray(this.distinctIdHasSentFlagCalls[Z]))this.distinctIdHasSentFlagCalls[Z].push(I);else this.distinctIdHasSentFlagCalls[Z]=[I];let V={$feature_flag:$,$feature_flag_response:P,$feature_flag_id:E,$feature_flag_version:j,$feature_flag_reason:z,locally_evaluated:B,[`$feature/${$}`]:P,$feature_flag_request_id:O,$feature_flag_evaluated_at:B?Date.now():D};if(B&&this.featureFlagsPoller){let q=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(q!==void 0)V.$feature_flag_definitions_loaded_at=q}if(w)V.$feature_flag_error=w;this.capture({distinctId:Z,event:"$feature_flag_called",properties:V,groups:G,disableGeoip:J})}}if(U!==void 0&&this._payloadOverrides!==void 0&&$ in this._payloadOverrides)U={...U,payload:this._payloadOverrides[$]};return U}async getFeatureFlag($,Z,X){let Q=await this._getFeatureFlagResult($,Z,{...X,sendFeatureFlagEvents:X?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(Q===void 0)return;if(Q.enabled===!1)return!1;return Q.variant??!0}async getFeatureFlagPayload($,Z,X,Q){if(this._payloadOverrides!==void 0&&$ in this._payloadOverrides)return this._payloadOverrides[$];let Y=await this._getFeatureFlagResult($,Z,{...Q,sendFeatureFlagEvents:!1},X);if(Y===void 0)return;return Y.payload??null}async getFeatureFlagResult($,Z,X){let{distinctId:Q,options:Y}=this._resolveDistinctId(Z,X);if(!Q)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult($,Q,{...Y,sendFeatureFlagEvents:Y?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload($){if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let Z=await this._requestRemoteConfigPayload($);if(!Z)return;let X=await Z.json();if(typeof X=="string")try{return JSON.parse(X)}catch(Q){}return X}async isFeatureEnabled($,Z,X){let Q=await this.getFeatureFlag($,Z,X);if(Q===void 0)return;return!!Q||!1}async getAllFlags($,Z){let{distinctId:X,options:Q}=this._resolveDistinctId($,Z);if(!X)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(X,Q)).featureFlags||{}}async getAllFlagsAndPayloads($,Z){let{distinctId:X,options:Q}=this._resolveDistinctId($,Z);if(!X)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:Y,disableGeoip:G,flagKeys:J}=Q||{},{onlyEvaluateLocally:K,personProperties:W,groupProperties:H}=Q||{},F=this.addLocalPersonAndGroupProperties(X,Y,W,H);W=F.allPersonProperties,H=F.allGroupProperties;let N=this.createFeatureFlagEvaluationContext(X,Y,W,H);if(K==null)K=this.options.strictLocalEvaluation??!1;let U=await this.featureFlagsPoller?.getAllFlagsAndPayloads(N,J),B={},O={},D=!0;if(U)B=U.response,O=U.payloads,D=U.fallbackToFlags;if(D&&!K){let w=await super.getFeatureFlagsAndPayloadsStateless(N.distinctId,N.groups,N.personProperties,N.groupProperties,G,J);B={...B,...w.flags||{}},O={...O,...w.payloads||{}}}if(this._flagOverrides!==void 0)B={...B,...this._flagOverrides};if(this._payloadOverrides!==void 0)O={...O,...this._payloadOverrides};return{featureFlags:B,featureFlagPayloads:O}}groupIdentify({groupType:$,groupKey:Z,properties:X,distinctId:Q,disableGeoip:Y}){super.groupIdentifyStateless($,Z,X,{disableGeoip:Y},Q)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags($){let Z=(X)=>Object.fromEntries(X.map((Q)=>[Q,!0]));if($===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray($)){this._flagOverrides=Z($);return}if(this._isFeatureFlagOverrideOptions($)){if("flags"in $){if($.flags===!1)this._flagOverrides=void 0;else if(Array.isArray($.flags))this._flagOverrides=Z($.flags);else if($.flags!==void 0)this._flagOverrides={...$.flags}}if("payloads"in $){if($.payloads===!1)this._payloadOverrides=void 0;else if($.payloads!==void 0)this._payloadOverrides={...$.payloads}}return}this._flagOverrides={...$}}_isFeatureFlagOverrideOptions($){if(typeof $!="object"||$===null||Array.isArray($))return!1;let Z=$;if("flags"in Z){let X=Z.flags;if(X===!1||Array.isArray(X)||typeof X=="object"&&X!==null)return!0}if("payloads"in Z){let X=Z.payloads;if(X===!1||typeof X=="object"&&X!==null)return!0}return!1}withContext($,Z,X){if(!this.context)return Z();return this.context.run($,Z,X)}getContext(){return this.context?.get()}enterContext($,Z){this.context?.enter($,Z)}async _shutdown($){let Z=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller($),this.errorTracking.shutdown();try{return await super._shutdown($)}finally{Z?.()}}async _requestRemoteConfigPayload($){if(!this.options.personalApiKey)return;let Z=`${this.host}/api/projects/@current/feature_flags/${$}/remote_config?token=${encodeURIComponent(this.apiKey)}`,X={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},Q=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let Y=new AbortController;Q=yN(()=>{Y.abort()},this.options.requestTimeout),X.signal=Y.signal}try{return await this.fetch(Z,X)}catch(Y){this._events.emit("error",Y);return}finally{if(Q)clearTimeout(Q)}}extractPropertiesFromEvent($,Z){if(!$)return{personProperties:{},groupProperties:{}};let X={},Q={};for(let[Y,G]of Object.entries($))if(DK$(G)&&Z&&Y in Z){let J={};for(let[K,W]of Object.entries(G))J[String(K)]=String(W);Q[String(Y)]=J}else X[String(Y)]=String(G);return{personProperties:X,groupProperties:Q}}async getFeatureFlagsForEvent($,Z,X,Q){let Y=Q?.personProperties||{},G=Q?.groupProperties||{},J=Q?.flagKeys;if(Q?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let W={};for(let[H,F]of Object.entries(Z||{}))W[H]=String(F);return await this.getAllFlags($,{groups:W,personProperties:Y,groupProperties:G,disableGeoip:X,onlyEvaluateLocally:!0,flagKeys:J})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let W={};for(let[H,F]of Object.entries(Z||{}))W[H]=String(F);return await this.getAllFlags($,{groups:W,personProperties:Y,groupProperties:G,disableGeoip:X,onlyEvaluateLocally:!0,flagKeys:J})}return(await super.getFeatureFlagsStateless($,Z,Y,G,X)).flags}addLocalPersonAndGroupProperties($,Z,X,Q){let Y={distinct_id:$,...X||{}},G={};if(Z)for(let J of Object.keys(Z))G[J]={$group_key:Z[J],...Q?.[J]||{}};return{allPersonProperties:Y,allGroupProperties:G}}createFeatureFlagEvaluationContext($,Z,X,Q){return{distinctId:$,groups:Z||{},personProperties:X||{},groupProperties:Q||{},evaluationCache:{}}}captureException($,Z,X,Q){if(!_J.isPreviouslyCapturedError($)){let Y=Error("PostHog syntheticException");this.addPendingPromise(_J.buildEventMessage($,{syntheticException:Y},Z,X).then((G)=>this.capture({...G,uuid:Q})))}}async captureExceptionImmediate($,Z,X){if(!_J.isPreviouslyCapturedError($)){let Q=Error("PostHog syntheticException");return this.addPendingPromise(_J.buildEventMessage($,{syntheticException:Q},Z,X).then((Y)=>this.captureImmediate(Y)))}}async prepareEventMessage($){let{distinctId:Z,event:X,properties:Q,groups:Y,sendFeatureFlags:G,timestamp:J,disableGeoip:K,uuid:W}=$,H=this.context?.get(),F=Z||H?.distinctId,N={...this.props,...H?.properties||{},...Q||{}};if(!F)F=PL(),N.$process_person_profile=!1;if(H?.sessionId&&!N.$session_id)N.$session_id=H.sessionId;let U=this._runBeforeSend({distinctId:F,event:X,properties:N,groups:Y,sendFeatureFlags:G,timestamp:J,disableGeoip:K,uuid:W});if(!U)return Promise.reject(null);let B=await Promise.resolve().then(async()=>{if(G){let O=typeof G=="object"?G:void 0;return await this.getFeatureFlagsForEvent(U.distinctId,Y,K,O)}return U.event,{}}).then((O)=>{let D={};if(O)for(let[E,j]of Object.entries(O))D[`$feature/${E}`]=j;let w=Object.keys(O||{}).filter((E)=>O?.[E]!==!1).sort();if(w.length>0)D.$active_feature_flags=w;return D}).catch(()=>({})).then((O)=>{return{...O,...U.properties||{},$groups:U.groups||Y}});if(U.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof B.$raw_user_agent=="string"){if(NK$(B.$raw_user_agent,this.options.custom_blocked_useragents||[]))U.event="$bot_pageview",B.$browser_type="bot"}return{distinctId:U.distinctId,event:U.event,properties:B,options:{timestamp:U.timestamp,disableGeoip:U.disableGeoip,uuid:U.uuid}}}_runBeforeSend($){let Z=this.options.before_send;if(!Z)return $;let X=Array.isArray(Z)?Z:[Z],Q=$;for(let Y of X){if(Q=Y(Q),!Q)return this._logger.info(`Event '${$.event}' was rejected in beforeSend function`),null;if(!Q.properties||Object.keys(Q.properties).length===0){let G=`Event '${Q.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(G)}}return Q}}});import{AsyncLocalStorage as wj4}from"async_hooks";class N11{constructor(){this.storage=new wj4}get(){return this.storage.getStore()}run($,Z,X){return this.storage.run(this.resolve($,X),Z)}enter($,Z){this.storage.enterWith(this.resolve($,Z))}resolve($,Z){if(Z?.fresh===!0)return $;let X=this.get()||{};return{distinctId:$.distinctId??X.distinctId,sessionId:$.sessionId??X.sessionId,properties:{...X.properties||{},...$.properties||{}}}}}var GH$=()=>{};function Ej4($,{organization:Z,projectId:X,prefix:Q,severityAllowList:Y=["error"],sendExceptionsToPostHog:G=!0}={}){return(J)=>{if(!(Y==="*"||Y.includes(J.level)))return J;if(!J.tags)J.tags={};let W=J.tags[JH$.POSTHOG_ID_TAG];if(W===void 0)return J;let H=$.options.host??"https://us.i.posthog.com",F=new URL(`/project/${$.apiKey}/person/${W}`,H).toString();J.tags["PostHog Person URL"]=F;let N=J.exception?.values||[],U=N.map((O)=>({...O,stacktrace:O.stacktrace?{...O.stacktrace,type:"raw",frames:(O.stacktrace.frames||[]).map((D)=>({...D,platform:"node:javascript"}))}:void 0})),B={$exception_message:N[0]?.value||J.message,$exception_type:N[0]?.type,$exception_level:J.level,$exception_list:U,$sentry_event_id:J.event_id,$sentry_exception:J.exception,$sentry_exception_message:N[0]?.value||J.message,$sentry_exception_type:N[0]?.type,$sentry_tags:J.tags};if(Z&&X)B.$sentry_url=(Q||"https://sentry.io/organizations/")+Z+"/issues/?project="+X+"&query="+J.event_id;if(G)$.capture({event:"$exception",distinctId:W,properties:B});return J}}var JH$;var KH$=L(()=>{JH$=class JH${static#$=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor($,Z,X,Q,Y){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(G,J){let K=J()?.getClient()?.getDsn()?.projectId;G(Ej4($,{organization:Z,projectId:K,prefix:X,severityAllowList:Q,sendExceptionsToPostHog:Y??!0}))}}}});var WH$=L(()=>{UJ0()});var HH$=L(()=>{Yz();KH$();WH$();K11()});var U11;var FH$=L(()=>{KK$();hW$();cW$();UJ0();YH$();Yz();GH$();HH$();_J.errorPropertiesBuilder=new QY.ErrorPropertiesBuilder([new QY.EventCoercer,new QY.ErrorCoercer,new QY.ObjectCoercer,new QY.StringCoercer,new QY.PrimitiveCoercer],QY.createStackParser("node:javascript",QY.nodeStackLineParser),[JK$(),bW$,uW$()]);U11=class U11 extends F11{getLibraryId(){return"posthog-node"}initializeContext(){return new N11}}});import{createHash as jj4}from"crypto";function zj4(){return{capture:()=>{},identify:()=>{},captureException:()=>{},groupIdentify:()=>{},shutdown:async()=>{}}}function UH$($){let Z=jj4("sha256").update($).digest();Z[6]=(Z[6]??0)&15|64,Z[8]=(Z[8]??0)&63|128;let X=Z.subarray(0,16).toString("hex");return`${X.slice(0,8)}-${X.slice(8,12)}-${X.slice(12,16)}-${X.slice(16,20)}-${X.slice(20,32)}`}function OG($){h1.capture({distinctId:$.userId??`org:${$.organizationId}`,event:$.event,groups:{organization:$.organizationId},...$.uuid?{uuid:$.uuid}:{},...$.timestamp?{timestamp:$.timestamp}:{},properties:{organization_id:$.organizationId,...$.userId?{}:{$process_person_profile:!1},...$.properties}})}var B11,NH$,h1;var x4=L(()=>{FH$();B11=process.env.POSTHOG_KEY,NH$=process.env.POSTHOG_HOST;h1=B11?new U11(B11,{...NH$?{host:NH$}:{},enableExceptionAutocapture:!0,flushAt:1,flushInterval:0}):zj4();if(B11){let $=()=>{h1.shutdown().catch(()=>{})};process.on("SIGTERM",$),process.on("SIGINT",$)}});class O11{apiKey;constructor($){this.apiKey=$}async sendEmail({to:$,from:Z,subject:X,html:Q}){let Y=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:$,from:Z,subject:X,html:Q})});if(!Y.ok)throw Error(`Failed to send email: ${Y.statusText}`)}}class L11{apiKey;constructor($){this.apiKey=$}async sendEmail({to:$,from:Z,subject:X,html:Q}){let Y=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:$}]}],from:{email:Z},subject:X,content:[{type:"text/html",value:Q}]})});if(!Y.ok){let G=await Y.text();throw Error(`Failed to send email via SendGrid: ${Y.statusText} - ${G}`)}}}function DK($){switch($.provider){case"resend":{let Z=new O11($.config.apiKey);return({to:X,subject:Q,html:Y})=>Z.sendEmail({to:X,from:$.config.fromEmail,subject:Q,html:Y})}case"sendgrid":{let Z=new L11($.config.apiKey);return({to:X,subject:Q,html:Y})=>Z.sendEmail({to:X,from:$.config.fromEmail,subject:Q,html:Y})}}}function wK($,Z){return $.find((X)=>X.id===Z)}var bh=()=>{};function EK({preheader:$="",heading:Z,subheading:X,body:Q,footnote:Y}){return`<!DOCTYPE html>
|
|
1803
1803
|
<html lang="en">
|
|
1804
1804
|
<head>
|
|
@@ -2324,7 +2324,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
2324
2324
|
c. MONITORING_LOG_GET on specific log ids for full input/output when the error message isn't enough.
|
|
2325
2325
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
2326
2326
|
</workflows>`,FU$={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:nA4,getId:eQ.USAGE_MANAGER}});function s11($){return Uz.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function oA4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function _J0({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=s11(Z);if(!Y)return $;let G=await oA4(Y,{orgId:X,ctx:Q}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function vJ0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(X)=>({label:X.label,activeForm:X.activeForm,action:X.action,completed:await X.isCompleted(Z),alwaysSuggest:X.alwaysSuggest})))}async function UU$($,Z,X){let Q={self:y8.SELF($),registry:y8.REGISTRY($),"community-registry":y8.COMMUNITY_REGISTRY($)};await Promise.all(tA4.map((Y)=>X.delete(`${Y}${$}`))),await Promise.all(Uz.map(async(Y)=>{let G=Y.getId($),J=await X.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>Q[H]);if(J){await X.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=J.connections.find((N)=>N.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:F?.selected_resources??null,selected_prompts:F?.selected_prompts??null}})});return}await X.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:G})}))}var tA4,Uz;var ch=L(()=>{g8();rN$();sN$();$U$();GU$();KU$();HU$();NU$();tA4=["studio-task-manager_"],Uz=[YU$,oN$,eN$,JU$,aN$,WU$,FU$]});import{DBOS as xJ0}from"@dbos-inc/dbos-sdk";async function rA4($){let Z=F8(),X=new Ag(Z.db);await UU$($.orgId,$.createdBy,X)}async function aA4($){let Z=F8(),X=new Ag(Z.db);for(let Q of Uz){let Y=Q.getId($.orgId),G=await X.findById(Y,$.orgId);if(!G)continue;let J=Q.selectedPrompts?[...Q.selectedPrompts]:null;if(G.connections.every((W)=>{let H=W.selected_prompts;if(J===null)return H===null;if(H===null)return!1;if(H.length!==J.length)return!1;return H.every((F,N)=>F===J[N])}))continue;await X.update(Y,$.createdBy,{connections:G.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:J}))})}}async function sA4($){await xJ0.runStep(()=>rA4($),{name:"installStudioPack"}),await xJ0.runStep(()=>aA4($),{name:"backfillSelectedPrompts"})}async function e11($){await xJ0.startWorkflow(eA4,{workflowID:`install-studio-pack:${$T4}:${$.orgId}`})($)}async function BU$(){let Z=await F8().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),X=new Map;for(let Q of Z)if(!X.has(Q.organizationId))X.set(Q.organizationId,Q.userId);await CJ0(Array.from(X),10,async([Q,Y])=>{try{await e11({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}})}var eA4,$T4="v6";var fJ0=L(()=>{YX();Us0();ch();eA4=xJ0.registerWorkflow(sA4,{name:"installStudioPackWorkflow"})});class bo{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new bo,Z=new bo;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as S8}from"zod";var LU$,OU$=1000,ZT4=500,DU$,wU$,EU$,jU$,zU$,PU$,AU$,TU$,RU$,IU$;var lh=L(()=>{LU$=S8.record(S8.string(),S8.array(S8.string())),DU$=S8.record(S8.string(),S8.array(S8.string()).max(ZT4)).refine(($)=>Object.keys($).length<=OU$,{message:`Permissions cannot grant more than ${OU$} resources`}),wU$=S8.object({id:S8.string().describe("Unique identifier for the API key"),name:S8.string().describe("Human-readable name for the API key"),userId:S8.string().describe("ID of the user who owns this API key"),permissions:LU$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:S8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:S8.string().datetime().describe("When the API key was created (ISO 8601)")}),EU$=S8.object({name:S8.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:DU$.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:S8.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:S8.record(S8.string(),S8.unknown()).optional().describe("Additional metadata to store with the API key")}),jU$=S8.object({id:S8.string().describe("Unique identifier for the API key"),name:S8.string().describe("Human-readable name for the API key"),key:S8.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:LU$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:S8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:S8.string().datetime().describe("When the API key was created (ISO 8601)")}),zU$=S8.object({}),PU$=S8.object({items:S8.array(wU$).describe("List of API keys (without key values)")}),AU$=S8.object({keyId:S8.string().describe("ID of the API key to update"),name:S8.string().min(1).max(64).optional().describe("New name for the API key"),permissions:DU$.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:S8.record(S8.string(),S8.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),TU$=S8.object({item:wU$.describe("The updated API key (without key value)")}),RU$=S8.object({keyId:S8.string().describe("ID of the API key to delete")}),IU$=S8.object({success:S8.boolean().describe("Whether the deletion was successful"),keyId:S8.string().describe("ID of the deleted API key")})});var $$1;var qU$=L(()=>{x4();k0();lh();$$1=c({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EU$,outputSchema:jU$,handler:async($,Z)=>{a(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),Q=X.expiresAt?X.expiresAt instanceof Date?X.expiresAt.toISOString():X.expiresAt:null,Y=X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,G=a0(Z);if(G)h1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var Z$1;var MU$=L(()=>{x4();k0();lh();Z$1=c({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:RU$,outputSchema:IU$,handler:async($,Z)=>{a(Z),await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)h1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var X$1;var VU$=L(()=>{k0();lh();X$1=c({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:zU$,outputSchema:PU$,handler:async($,Z)=>{a(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.list(),Q=Z.organization?.id;return{items:(X??[]).filter((G)=>{return G.metadata?.organization?.id===Q}).map((G)=>({id:G.id,name:G.name??"Unnamed Key",userId:G.userId,permissions:G.permissions??{},expiresAt:G.expiresAt?G.expiresAt instanceof Date?G.expiresAt.toISOString():G.expiresAt:null,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});var Q$1;var kU$=L(()=>{k0();lh();Q$1=c({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:AU$,outputSchema:TU$,handler:async($,Z)=>{if(a(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var SU$=L(()=>{qU$();MU$();VU$();kU$();lh()});function kL($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=QT4.test(Z),Q=YT4.test(Z),Y=GT4.test(Z);if(X&&!Q&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=Q?Z:`https://${Z}`,J;try{J=new URL(G)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(J.protocol!=="http:"&&J.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=J.hostname.split(".");if(K.length<2||K.some((W)=>!W||!JT4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var QT4,YT4,GT4,JT4;var yo=L(()=>{QT4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,YT4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,GT4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,JT4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as BQ}from"zod";function HH($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??y0()).reportsInternalApiUrl??KT4).replace(/\/+$/,"")}function _U$($={}){return`${HH($)}/api/v2/mcp`}function Bz($){let Z=$.apiKey??($.settings??y0()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function bJ0($){return new URL($).hostname}function HT4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function FT4($,Z={}){switch($){case"ownership_unverified":{let X=Z.email?`O e-mail ${Z.email}`:"Este e-mail",Q=Z.domain?` ${Z.domain}`:" este site";return`${X} n\xE3o tem permiss\xE3o para reivindicar${Q}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Commerce Discovery. Tente novamente ou fale com o suporte.";default:return $}}async function NT4($){let Z=await go($);return HT4(Z?.error)?Z.error:"unknown"}async function go($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function Y$1($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,X=await $.text().catch(()=>"");if(!X)return Z;try{let Q=JSON.parse(X),Y=typeof Q.error==="string"?Q.error:typeof Q.message==="string"?Q.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function xU$($,Z={}){let X=HH(Z),Q=Bz(Z),Y=Z.fetchImpl??fetch,G=bJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}})});if(!K.ok){let H=await NT4(K);throw new vU$(H,{email:$.email,domain:G})}let W=WT4.safeParse(await go(K));if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function fU$($,Z={}){let X=HH(Z),Q=Bz(Z),Y=Z.fetchImpl??fetch,G=bJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId})});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=CU$.safeParse(await go(K));return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await Y$1(K));let W=CU$.safeParse(await go(K));if(!W.success||!W.data.binding)throw Error("Commerce Discovery bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function bU$($,Z={}){let X=HH(Z),Q=Bz(Z),Y=Z.fetchImpl??fetch,G=bJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.githubRepo?{github_repo:$.githubRepo}:{}})});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await Y$1(K));return{triggered:!0}}async function yU$($,Z={}){let X=HH(Z),Q=Bz(Z),Y=Z.fetchImpl??fetch,G=bJ0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${Q}`}});if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await Y$1(K));let W=UT4.safeParse(await go(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var KT4,WT4,CU$,vU$,UT4;var Oz=L(()=>{g8();R$();KT4=new URL(P7$).origin,WT4=BQ.object({token:BQ.string().min(1)}),CU$=BQ.object({binding:BQ.object({resource_id:BQ.string(),evidence:BQ.string()}).optional(),reason:BQ.string().optional(),detail:BQ.string().optional()});vU$=class vU$ extends Error{code;constructor($,Z={}){super(FT4($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};UT4=BQ.object({providers:BQ.record(BQ.string(),BQ.object({connected:BQ.boolean(),via:BQ.enum(["oauth","sa"]).nullable(),resource:BQ.string().nullable()}))})});import{z as DG}from"zod";var BT4,OT4,G$1;var gU$=L(()=>{yo();k0();Oz();BT4=DG.object({siteUrl:DG.string().min(1).describe("Website URL of the store being bound."),provider:DG.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:DG.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),OT4=DG.discriminatedUnion("ok",[DG.object({ok:DG.literal(!0),resourceId:DG.string(),evidence:DG.string()}),DG.object({ok:DG.literal(!1),reason:DG.string(),detail:DG.string()})]),G$1=c({name:"COMMERCE_DISCOVERY_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Commerce Discovery verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Commerce Discovery Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:BT4,outputSchema:OT4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=kL($.siteUrl);if(!Q.ok)throw Error(Q.error);return fU$({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as FH}from"zod";var LT4,DT4,J$1;var hU$=L(()=>{yo();k0();Oz();LT4=FH.object({siteUrl:FH.string().min(1).describe("Website URL of the store to inspect.")}),DT4=FH.object({providers:FH.record(FH.string(),FH.object({connected:FH.boolean(),via:FH.enum(["oauth","sa"]).nullable(),resource:FH.string().nullable()})),claimed:FH.boolean().describe("False when the site isn't claimed/upgraded for this org \u2014 providers is then empty because the status is unreadable, NOT because nothing is connected. The UI must warn instead of rendering existing bindings as disconnected.")}),J$1=c({name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Commerce Discovery Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:LT4,outputSchema:DT4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=kL($.siteUrl);if(!Q.ok)throw Error(Q.error);return yU$({siteUrl:Q.value,orgId:X.id})}})});import{z as ho}from"zod";var wT4,ET4,K$1;var uU$=L(()=>{g8();yo();k0();Oz();wT4=ho.object({siteUrl:ho.string().min(1).describe("Website URL to run the diagnostic for.")}),ET4=ho.object({triggered:ho.boolean(),reason:ho.string().optional()}),K$1=c({name:"COMMERCE_DISCOVERY_RUN",description:"Trigger the Commerce Discovery diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:wT4,outputSchema:ET4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=kL($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=y8.COMMERCE_DISCOVERY(X.id),J=(await Z.storage.connections.findById(Y,X.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return bU$({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var SL=L(()=>{cX0()});import{z as NH}from"zod";async function AT4($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function TT4($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var W$1,jT4=3600000,zT4,PT4,H$1;var cU$=L(()=>{g8();yo();k0();mW();SL();Oz();W$1=JY0,zT4=NH.object({siteUrl:NH.string().min(1).describe("Website URL to configure.")}),PT4=NH.object({connection:JX,virtualMcp:KX,reportApp:NH.object({connectionId:NH.string(),virtualMcpId:NH.string(),toolName:NH.literal(W$1)}),created:NH.object({connection:NH.boolean(),virtualMcp:NH.boolean()})});H$1=c({name:"COMMERCE_DISCOVERY_SETUP",description:"Create or return the Commerce Discovery connection and virtual MCP for the current organization.",annotations:{title:"Set Up Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:zT4,outputSchema:PT4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=a0(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=kL($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=y8.COMMERCE_DISCOVERY(X.id),J=WY0(X.id),K=new URLSearchParams({connection:G,tool:W$1}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/agents/${J}/app?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),F={connection:!1,virtualMcp:!1},N=await xU$({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),U=_U$();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:X.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:U,connection_token:N.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:X.id,siteUrl:Y.value,connectionId:G});try{let w=x7$(X.id,N.authorizationToken,U);H=await Z.storage.connections.create({...w,metadata:{...w.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),F.connection=!0}catch(w){H=await AT4(Z,G,X.id,w)}}let B=await Z.storage.virtualMcps.findById(J,X.id);if(!B){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{B=await Z.storage.virtualMcps.create(X.id,Q,f7$(X.id,H.id),{id:J}),F.virtualMcp=!0}catch(w){B=await TT4(Z,J,X.id,w)}}if(!B.pinned)B=await Z.storage.virtualMcps.update(B.id,Q,{pinned:!0});let O=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((O?Date.now()-new Date(O.createdAt).getTime():Number.POSITIVE_INFINITY)<jT4){let E=(await Z.storage.organizationSettings.get(X.id))?.flags,j={};if(E?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(X.id,{flags:j})}return{connection:H,virtualMcp:B,reportApp:{connectionId:H.id,virtualMcpId:B.id,toolName:W$1},created:F}}})});var lU$=L(()=>{gU$();hU$();uU$();cU$()});var F$1=v((mU$)=>{Object.defineProperty(mU$,"__esModule",{value:!0});mU$.kvPrefix=mU$.KvWatchInclude=void 0;mU$.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};mU$.kvPrefix="KV_"});var ZB$=v((eU$)=>{Object.defineProperty(eU$,"__esModule",{value:!0});eU$.KvStatusImpl=eU$.Bucket=eU$.Kvm=eU$.kvOperationHdr=void 0;eU$.Base64KeyCodec=qT4;eU$.NoopKvCodecs=N$1;eU$.defaultBucketOpts=pU$;eU$.validateKey=nU$;eU$.validateSearchKey=tU$;eU$.hasWildcards=oU$;eU$.validateBucket=yJ0;var o5=JG(),F5=FX0(),t5=F$1();function qT4(){let $=(Z,X)=>{let Q=[];for(let Y of Z.split("."))switch(Y){case">":case"*":Q.push(Y);break;default:Q.push(X(Y));break}return Q.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function N$1(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function pU$(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:N$1(),storage:F5.StorageType.File}}eU$.kvOperationHdr="KV-Operation";var iU$="$KV",MT4=/^[-/=.\w]+$/,VT4=/^[-/=.>*\w]+$/,kT4=/^[-\w]+$/;function nU$($){if($.startsWith(".")||$.endsWith(".")||!MT4.test($))throw Error(`invalid key: ${$}`)}function tU$($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!VT4.test($))throw Error(`invalid key: ${$}`)}function oU$($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),X=!1;for(let Q=0;Q<Z.length;Q++)switch(Z[Q]){case"*":X=!0;break;case">":if(Q!==Z.length-1)throw Error(`invalid key: ${$}`);X=!0;break;default:}return X}function yJ0($){if(!kT4.test($))throw Error(`invalid bucket name: ${$}`)}class rU${js;constructor($){this.js=(0,F5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:X,min:Q}=this.js.nc.features.get(o5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return mh.bind(this.js,$,Z);return mh.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(t5.kvPrefix)});Y.forEach((J)=>{J.config.sealed=J.config.sealed||!1,J.config.deny_delete=J.config.deny_delete||!1,J.config.deny_purge=J.config.deny_purge||!1,J.config.allow_rollup_hdrs=J.config.allow_rollup_hdrs||!1});let G="";if(Y.length)G=this.js.nc.info?.cluster??"";return Y.map((J)=>{return new gJ0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new F5.ListerImpl(Z,$,this.js)}}eU$.Kvm=rU$;class mh{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){yJ0($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=iU$,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){yJ0(Z);let Q=await $.jetstreamManager(),Y=new mh(Z,$,Q);return await Y.init(X),Y}static async bind($,Z,X={}){let Q=$.getOptions()?.checkAPI||X.bindOnly===!1,Y=await $.jetstreamManager(Q),G={config:{allow_direct:X.allow_direct}};yJ0(Z);let J=new mh(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||N$1(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(pU$(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=F5.RetentionPolicy.Limits,X.max_msgs_per_subject=Z.history,Z.max_bytes)X.max_bytes=Z.max_bytes;if(X.max_msg_size=Z.maxValueSize,X.storage=Z.storage,$.placement)X.placement=$.placement;if($.republish)X.republish=$.republish;if($.description)X.description=$.description;if($.markerTTL)X.allow_msg_ttl=!0,X.subject_delete_marker_ttl=(0,o5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(t5.kvPrefix))H.name=`${t5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let N=Object.assign({},F),U=N.name.startsWith(t5.kvPrefix)?N.name.substring(t5.kvPrefix.length):N.name;if(!N.name.startsWith(t5.kvPrefix))N.name=`${t5.kvPrefix}${N.name}`;if(!F.external&&U!==this.bucket)N.subject_transforms=[{src:`$KV.${U}.>`,dest:`$KV.${this.bucket}.>`}];return N});X.sources=H,X.subjects=[this.subjectForBucket()]}else X.subjects=[this.subjectForBucket()];if($.metadata)X.metadata=$.metadata;if(typeof $.compression==="boolean")X.compression=$.compression?F5.StoreCompression.S2:F5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,o5.compare)(Y,(0,o5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?F5.DiscardPolicy.New:F5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(o5.Feature.JS_ALLOW_DIRECT);if(!J&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:J,X.allow_direct=$.allow_direct,this.direct=X.allow_direct,X.num_replicas=Z.replicas,Z.ttl)X.max_age=(0,o5.nanos)(Z.ttl);X.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(X.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(X);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let X=Z.name;if(X.startsWith(t5.kvPrefix))X=X.substring(t5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(t5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${Q}`,this.editPrefix=`${Z.external.api}.$KV.${X}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${t5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let X=[];if(Z){if(this.useJsPrefix)X.push(this.js.apiPrefix);if(this.editPrefix!=="")X.push(this.editPrefix);else X.push(this.prefix)}else if(this.prefix)X.push(this.prefix);return X.push($),X.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${iU$}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.encode(X));break}return Z.join(".")}decodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.decode(X));break}return Z.join(".")}validateKey=nU$;validateSearchKey=tU$;hasWildcards=oU$;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(F5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new aU$(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new sU$(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,X){let Q;try{let G={previousSeq:0},J=await this._put($,Z,G,X);return Promise.resolve(J)}catch(G){if(Q=G,G instanceof F5.JetStreamApiError){let J=G;if(J.code!==F5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==F5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(G)}}let Y=0;try{let G=await this.get($);if(G?.operation==="DEL"||G?.operation==="PURGE")return Y=G!==null?G.revision:0,this._put($,Z,{previousSeq:Y},X);else return Promise.reject(Q)}catch(G){return Promise.reject(G)}}update($,Z,X,Q){if(X<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:X,timeout:Q})}async _put($,Z,X={},Q){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:X?.timeout};if(X.previousSeq!==void 0){let J=(0,o5.headers)();G.headers=J,J.set(F5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,o5.headers)()).set(F5.PubHeaders.MessageTTL,Q);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,X={}){return this._put($,Z,X)}async get($,Z){let X=this.encodeKey($);this.validateKey(X);let Q={last_by_subj:this.subjectForKey(X)};if(Z&&Z.revision>0)Q={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),Q);else Y=await this.jsm.streams.getMessage(this.bucketName(),Q);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==X)return null;return G}catch(G){throw G}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],X=await this.history({key:">"});await(async()=>{for await(let J of X)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),X.stop();let Q=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=Q)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),G=await Promise.all(Y);return G.unshift({success:!0,purged:0}),G.reduce((J,K)=>{return J.purged+=K.purged,J})}async _deleteOrPurge($,Z,X){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,X);let Q=await this.keys($),Y=[];for await(let G of Q)if(Y.push(this._doDeleteOrPurge(G,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,X){let Q=this.encodeKey($);this.validateKey(Q);let Y=(0,o5.headers)();if(Y.set(eU$.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(F5.JsHeaders.RollupHdr,F5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(F5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(F5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),o5.Empty,{headers:Y})}_buildCC($,Z,X={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=F5.DeliverPolicy.LastPerSubject;if(Z===t5.KvWatchInclude.AllHistory)G=F5.DeliverPolicy.All;if(Z===t5.KvWatchInclude.UpdatesOnly)G=F5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:F5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,o5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new o5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,t5.KvWatchInclude.AllHistory,X),J=await this.js.consumers.getPushConsumer(this.stream,G);if(Q._data=J,(await J.info(!0)).num_pending===0)return Q.push(Y),Q;let W=await J.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(Q.push(F),Q.received++,H.info.pending===0)Q.push(Y)}});return W.closed().then(()=>{Q.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":Q.push(()=>{Q.stop()});break}})().then(),Q.iterClosed.then(()=>{W.stop()}),Q}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(o5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new o5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=t5.KvWatchInclude.LastValue;if($.include===t5.KvWatchInclude.AllHistory)Y=t5.KvWatchInclude.AllHistory;else if($.include===t5.KvWatchInclude.UpdatesOnly)Y=t5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${o5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=F5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,F=Y===t5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let N=0,U=await K.consume({callback:(B)=>{if(!F)N++,F=N>=H;let O=this.jmToWatchEntry(B,F);if(G&&O.operation==="DEL")return;X.push(O),X.received++}});return X.iterClosed.then(()=>{U.stop()}),U.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new o5.QueuedIteratorImpl,X=this._buildCC($,t5.KvWatchInclude.LastValue,{headers_only:!0}),Q=await this.js.consumers.getPushConsumer(this.stream,X);if((await Q.info()).num_pending===0)return Z.stop(),Z;Z._data=Q;let G=await Q.consume({callback:(J)=>{let K=J.headers?.get(eU$.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(J.subject.substring(this.prefixLen));Z.push(W)}if(J.info.pending===0)G.stop()}});return(async()=>{for await(let J of G.status())switch(J.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),G.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{G.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",X=this.bucketName(),Q=await this.jsm.streams.info(X);return new gJ0(Q,Z)}}eU$.Bucket=mh;class gJ0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(t5.kvPrefix)?this.si.config.name.substring(t5.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,o5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,o5.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==F5.StoreCompression.None;return!1}}eU$.KvStatusImpl=gJ0;class aU${bucket;sm;prefixLen;codec;constructor($,Z,X,Q){this.bucket=$,this.prefixLen=Z,this.sm=X,this.codec=Q}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(eU$.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(F5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(o5.TD.decode(this.value),$)}string(){return o5.TD.decode(this.value)}}class sU${bucket;sm;prefixLen;update;codec;constructor($,Z,X,Q,Y){this.bucket=$,this.prefixLen=Z,this.sm=X,this.update=Q,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,o5.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(eU$.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(F5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(o5.TD.decode(this.value),$)}string(){return o5.TD.decode(this.value)}}});var U$1=v((PK)=>{Object.defineProperty(PK,"__esModule",{value:!0});PK.validateKey=PK.validateBucket=PK.NoopKvCodecs=PK.Kvm=PK.defaultBucketOpts=PK.Bucket=PK.Base64KeyCodec=PK.KvWatchInclude=PK.kvPrefix=void 0;var XB$=F$1();Object.defineProperty(PK,"kvPrefix",{enumerable:!0,get:function(){return XB$.kvPrefix}});Object.defineProperty(PK,"KvWatchInclude",{enumerable:!0,get:function(){return XB$.KvWatchInclude}});var Lz=ZB$();Object.defineProperty(PK,"Base64KeyCodec",{enumerable:!0,get:function(){return Lz.Base64KeyCodec}});Object.defineProperty(PK,"Bucket",{enumerable:!0,get:function(){return Lz.Bucket}});Object.defineProperty(PK,"defaultBucketOpts",{enumerable:!0,get:function(){return Lz.defaultBucketOpts}});Object.defineProperty(PK,"Kvm",{enumerable:!0,get:function(){return Lz.Kvm}});Object.defineProperty(PK,"NoopKvCodecs",{enumerable:!0,get:function(){return Lz.NoopKvCodecs}});Object.defineProperty(PK,"validateBucket",{enumerable:!0,get:function(){return Lz.validateBucket}});Object.defineProperty(PK,"validateKey",{enumerable:!0,get:function(){return Lz.validateKey}})});var B$1=v((CL)=>{Object.defineProperty(CL,"__esModule",{value:!0});CL.NoopKvCodecs=CL.Kvm=CL.defaultBucketOpts=CL.Bucket=CL.Base64KeyCodec=CL.KvWatchInclude=void 0;var uT4=U$1();Object.defineProperty(CL,"KvWatchInclude",{enumerable:!0,get:function(){return uT4.KvWatchInclude}});var co=U$1();Object.defineProperty(CL,"Base64KeyCodec",{enumerable:!0,get:function(){return co.Base64KeyCodec}});Object.defineProperty(CL,"Bucket",{enumerable:!0,get:function(){return co.Bucket}});Object.defineProperty(CL,"defaultBucketOpts",{enumerable:!0,get:function(){return co.defaultBucketOpts}});Object.defineProperty(CL,"Kvm",{enumerable:!0,get:function(){return co.Kvm}});Object.defineProperty(CL,"NoopKvCodecs",{enumerable:!0,get:function(){return co.NoopKvCodecs}})});function hJ0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class O$1{options;kv=null;codec=hJ0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new YB$.Kvm($).create(lT4,{storage:QB$.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let X=await this.kv.get(`${$}.${Z}`);if(!X?.value?.length)return null;if(X.operation==="DEL"||X.operation==="PURGE")return null;return this.codec.decode(X.value)}catch{return null}}async set($,Z,X){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(X))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(X)=>{try{await this.kv.delete(`${X}.${$}`)}catch{}}))}teardown(){this.kv=null}}function mT4($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function GB$($){let Z=["tools","resources","prompts"];for(let X of Z){let Q=`${X}:${$}`;cJ0.delete(Q),mo.delete(Q)}}function uJ0($){return $ instanceof j1&&$.code===V1.MethodNotFound}function dT4($){return $ instanceof j1&&$.code===-32000&&/connection closed/i.test($.message)}async function vL($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(uJ0(H))return[];return lo.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await Q.get($,Z);if(K===null)try{let H=await X();return Q.set($,Z,H).catch(()=>{}),cJ0.set(J,Date.now()),lo.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(uJ0(H))return Q.set($,Z,[]).catch(()=>{}),[];return lo.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(lo.add(1,{type:$,outcome:"hit",stage:"hit"}),mT4(cJ0.get(J),Date.now(),G)&&!mo.has(J)){mo.add(J),cJ0.set(J,Date.now());let H=X().then((F)=>Q.set($,Z,F)).catch((F)=>{if(uJ0(F)||dT4(F)){if(uJ0(F))Q.set($,Z,[]).catch(()=>{});return}lo.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>mo.delete(J));Y?.(H)}return K}function L$1($){JB$=$}function L9(){return JB$}var QB$,YB$,lo,lT4="DECOCMS_MCP_LISTS",mo,cJ0,_L=30000,JB$=null;var YY=L(()=>{B9();x6();QB$=k(Jj(),1),YB$=k(B$1(),1),lo=P$.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});mo=new Set;P$.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(mo.size));cJ0=new Map});async function D$1($,Z,X){let Q=new AbortController,Y,G=new Promise((K,W)=>{Y=setTimeout(()=>{Q.abort(),W(new KB$($.id,X))},X)}),J=(async()=>{let K=await P5($,Z,!0);try{return(await K.listTools(void 0,{timeout:X,signal:Q.signal})).tools}finally{await K.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,G])}finally{if(Y)clearTimeout(Y)}}var KB$;var WB$=L(()=>{io();KB$=class KB$ extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});function lJ0($){return(Z)=>{if(Z instanceof j1&&Z.code===V1.MethodNotFound)return $;throw Z}}var HB$=L(()=>{B9()});function mJ0($,Z,X){let Q=xL($,Z,X,L9()??void 0),Y=zj(Q,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:iT4,toolCallTimeoutMs:zg});Y.server.setRequestHandler(IO,async()=>{return await Q.listResources().catch(lJ0({resources:[]}))}),Y.server.setRequestHandler(qO,async()=>{return await Q.listResourceTemplates().catch(lJ0({resourceTemplates:[]}))}),Y.server.setRequestHandler(MO,async()=>{return await Q.listPrompts().catch(lJ0({prompts:[]}))});let G=Y.close.bind(Y);return Y.close=async()=>{await G(),await Q.close().catch(()=>{})},Y}var iT4;var FB$=L(()=>{KQ();B9();po();YY();HB$();iT4={tools:{},resources:{},prompts:{}}});var hN=L(()=>{io();WB$();FB$()});function no($,Z,X){if(Z.some((Q)=>Q!=="*"&&Q.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${X}_self`}}function to($,Z){let X=new Map;for(let Q of Z){if(Q==="*")continue;let[Y,G]=fG0(Q);if(!pT4.has(G))continue;let J=Ho(Y,$);if(typeof J!=="object"||J===null||!("value"in J))continue;let K=J.value;if(typeof K!=="string")continue;X.set(`${K}:${G}`,{targetConnectionId:K,scope:G})}return[...X.values()]}async function oo($,Z,X,Q){for(let J of Z){if(J==="*")continue;let[K]=fG0(J),W=Ho(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=E3$($,Z),G=`${X}_self`;for(let J of Y){if(J===G)continue;let K=await Q.storage.connections.findById(J);if(!K||K.organization_id!==X)throw Error(`Referenced connection not found: ${J}`);try{await Q.access.check(J)}catch(W){throw Error(`Access denied to referenced connection: ${J}. ${W.message}`)}}}var pT4;var w$1=L(()=>{z01();DY0();pT4=new Set([OY0,LY0])});import{z as NB$}from"zod";var nT4,tT4,E$1;var UB$=L(()=>{x4();k0();R$();YY();hN();w$1();fo();mW();nT4=NB$.object({data:xX0.describe("Data for the new connection (id is auto-generated if not provided)")}),tT4=NB$.object({item:JX.describe("The created connection entity")}),E$1=c({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:nT4,outputSchema:tT4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create connection");let Y={...$.data,organization_id:X.id,created_by:Q};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===X.id)throw Error("Connection already exists in organization");if(await Z.storage.connections.findBySanitizedId(Y.id))throw Error("Connection id conflicts with an existing connection's isolated database schema")}if(Y.connection_type==="VIRTUAL"){let N=cy(Y.connection_url);if(!N)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let U=await Z.storage.virtualMcps.findById(N);if(!U)throw Error(`Virtual MCP not found: ${N}`);if(U.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=ly(N)}if(Y.connection_type==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=await VL({id:`pending-${Date.now()}`,title:Y.title,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:Y.connection_token,connection_headers:Y.connection_headers}).catch(()=>null),J=G?.tools?.length?G.tools:null,K=G?.scopes?.length?G.scopes:Y.configuration_scopes??null,W=Y.configuration_state??null;if(W&&K?.length)no(W,K,X.id),await oo(W,K,X.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?to(W,K):[];if(F.length>0){let N;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:H.id,createdBy:Q,grants:F});let{plaintextToken:U,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:H.id});N=B.id,await(await P5(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:H.id,token:U}}})}catch(U){if(N)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:H.id,tokenId:N});throw await Z.storage.connections.delete(H.id),U}}if(J)L9()?.set("tools",H.id,J).catch(()=>{});return h1.capture({distinctId:Q,event:"connection_created",groups:{organization:X.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:X.id,tools_count:J?.length??0}}),{item:H}}})});import{z as fJ}from"zod/v4";import{z as BB$}from"zod/v4";import{z as dJ0}from"zod/v4";import{z as UH}from"zod/v4";import{z as sT4}from"zod/v4";import{z as Dz}from"zod/v4";import{z as BH}from"zod/v4";import{z as rZ}from"zod/v4";import{z as OB$}from"zod/v4";import{z as nJ0}from"zod/v4";import{z as P24}from"zod/v4";import{z as LB$}from"zod/v4";import{z as iJ0}from"zod/v4";import{z as S24}from"zod/v4";function ro($,Z){if($===Z)return!0;if($==null||Z==null)return $===Z;if(typeof $!==typeof Z)return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((X,Q)=>ro(X,Z[Q]))}if(typeof $==="object"&&typeof Z==="object"){let X=Object.keys($),Q=Object.keys(Z);if(X.length!==Q.length)return!1;return X.every((Y)=>Q.includes(Y)&&ro($[Y],Z[Y]))}return!1}function E24(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((X)=>{if(Z.some((Y)=>ro(X,Y)))return!1;return Z.push(X),!0})}}function pJ0($,Z){return $.safeParse(Z).success}function V7($){if(typeof $==="boolean")return $?fJ.any():fJ.never();let Z={};for(let Y of x24)Y.apply(Z,$);let X=[];if(Z.string!==!1)X.push(Z.string||fJ.string());if(Z.number!==!1)X.push(Z.number||fJ.number());if(Z.boolean!==!1)X.push(Z.boolean||fJ.boolean());if(Z.null!==!1)X.push(Z.null||fJ.null());if(Z.array!==!1)X.push(Z.array||fJ.array(fJ.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)X.push(Z.tuple);if(Z.object!==!1)if(Z.object)X.push(Z.object);else{let Y=fJ.custom((G)=>{return typeof G==="object"&&G!==null&&!Array.isArray(G)},"Must be an object, not an array");X.push(Y)}if(Z.file!==!1&&Z.file!==void 0)X.push(Z.file);let Q;if(X.length===0)Q=fJ.never();else if(X.length===1)Q=X[0];else if(!Object.keys($).some((G)=>G!=="$schema"&&G!=="title"&&G!=="description"))Q=fJ.any();else Q=fJ.union(X);for(let Y of f24)Q=Y.apply(Q,$);return Q}var oT4=class{apply($,Z){if(!Z.type)return;let X=Array.isArray(Z.type)?Z.type:[Z.type],Q=new Set(X);if(!Q.has("string"))$.string=!1;if(!Q.has("number")&&!Q.has("integer"))$.number=!1;if(!Q.has("boolean"))$.boolean=!1;if(!Q.has("null"))$.null=!1;if(!Q.has("array"))$.array=!1;if(!Q.has("object"))$.object=!1;if(Q.has("integer")&&$.number!==!1){let Y=$.number||BB$.number();if(Y instanceof BB$.ZodNumber)$.number=Y.int()}}},rT4=class{apply($,Z){if(Z.const===void 0)return;let X=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof X==="string")$.string=dJ0.literal(X);else if(typeof X==="number")$.number=dJ0.literal(X);else if(typeof X==="boolean")$.boolean=dJ0.literal(X);else if(X===null)$.null=dJ0.null();else if(Array.isArray(X))$.array=void 0;else if(typeof X==="object")$.object=void 0}},aT4=class{apply($,Z){if(!Z.enum)return;if(Z.enum.length===0){if(!Z.type)$.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1;return}let X={string:Z.enum.filter((Q)=>typeof Q==="string"),number:Z.enum.filter((Q)=>typeof Q==="number"),boolean:Z.enum.filter((Q)=>typeof Q==="boolean"),null:Z.enum.filter((Q)=>Q===null),array:Z.enum.filter((Q)=>Array.isArray(Q)),object:Z.enum.filter((Q)=>typeof Q==="object"&&Q!==null&&!Array.isArray(Q))};$.string=this.createTypeSchema(X.string,"string"),$.number=this.createTypeSchema(X.number,"number"),$.boolean=this.createTypeSchema(X.boolean,"boolean"),$.null=X.null.length>0?UH.null():!1,$.array=X.array.length>0?void 0:!1,$.object=X.object.length>0?void 0:!1}createTypeSchema($,Z){if($.length===0)return!1;if($.length===1)return UH.literal($[0]);if(Z==="string")return UH.enum($);if(Z==="number"){let[X,Q,...Y]=$;return UH.union([UH.literal(X),UH.literal(Q),...Y.map((G)=>UH.literal(G))])}if(Z==="boolean")return UH.union([UH.literal(!0),UH.literal(!1)]);return!1}},eT4=class{apply($,Z){let X=Z;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let Q=sT4.file();if(X.minLength!==void 0)Q=Q.min(X.minLength);if(X.maxLength!==void 0)Q=Q.max(X.maxLength);if(X.contentMediaType!==void 0)Q=Q.mime(X.contentMediaType);$.file=Q,$.string=!1}}},$24=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minLength!==void 0||X.maxLength!==void 0||X.pattern!==void 0)){if($.string===void 0)$.string=Dz.string()}}},Z24=class{apply($,Z){let X=Z;if(X.minLength===void 0)return;if($.string!==!1){let Q=$.string||Dz.string();if(Q instanceof Dz.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},X24=class{apply($,Z){let X=Z;if(X.maxLength===void 0)return;if($.string!==!1){let Q=$.string||Dz.string();if(Q instanceof Dz.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},Q24=class{apply($,Z){let X=Z;if(!X.pattern)return;if($.string!==!1){let Q=$.string||Dz.string();if(Q instanceof Dz.ZodString){let Y=new RegExp(X.pattern);$.string=Q.regex(Y)}}}},Y24=class{apply($,Z){let X=Z;if(X.minimum===void 0)return;if($.number!==!1){let Q=$.number||BH.number();if(Q instanceof BH.ZodNumber)$.number=Q.min(X.minimum)}}},G24=class{apply($,Z){let X=Z;if(X.maximum===void 0)return;if($.number!==!1){let Q=$.number||BH.number();if(Q instanceof BH.ZodNumber)$.number=Q.max(X.maximum)}}},J24=class{apply($,Z){let X=Z;if(X.exclusiveMinimum===void 0)return;if($.number!==!1){let Q=$.number||BH.number();if(Q instanceof BH.ZodNumber)if(typeof X.exclusiveMinimum==="number")$.number=Q.gt(X.exclusiveMinimum);else $.number=!1}}},K24=class{apply($,Z){let X=Z;if(X.exclusiveMaximum===void 0)return;if($.number!==!1){let Q=$.number||BH.number();if(Q instanceof BH.ZodNumber)if(typeof X.exclusiveMaximum==="number")$.number=Q.lt(X.exclusiveMaximum);else $.number=!1}}},W24=class{apply($,Z){let X=Z;if(X.multipleOf===void 0)return;if($.number!==!1){let Q=$.number||BH.number();if(Q instanceof BH.ZodNumber)$.number=Q.refine((Y)=>{if(X.multipleOf===0)return!1;let G=Y/X.multipleOf,J=Math.round(G),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(X.multipleOf)*Number.EPSILON*10);return Math.abs(G-J)<=K/Math.abs(X.multipleOf)},{message:`Must be a multiple of ${X.multipleOf}`})}}},H24=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.minItems!==void 0||X.maxItems!==void 0||X.items!==void 0||X.prefixItems!==void 0)){if($.array===void 0)$.array=rZ.array(rZ.any())}}},F24=class{apply($,Z){let X=Z;if(X.minItems===void 0)return;if($.array!==!1)$.array=($.array||rZ.array(rZ.any())).min(X.minItems)}},N24=class{apply($,Z){let X=Z;if(X.maxItems===void 0)return;if($.array!==!1)$.array=($.array||rZ.array(rZ.any())).max(X.maxItems)}},U24=class{apply($,Z){let X=Z;if($.array===!1)return;if(Array.isArray(X.items))$.array=$.array||rZ.array(rZ.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let Q=V7(X.items),Y=rZ.array(Q);if($.array&&$.array instanceof rZ.ZodArray){let G=$.array._def;if(G.checks)G.checks.forEach((J)=>{if(J._zod&&J._zod.def){let K=J._zod.def;if(K.check==="min_length"&&K.minimum!==void 0)Y=Y.min(K.minimum);else if(K.check==="max_length"&&K.maximum!==void 0)Y=Y.max(K.maximum)}})}$.array=Y}else if(typeof X.items==="boolean"&&X.items===!1)if(!X.prefixItems)$.array=rZ.array(rZ.any()).max(0);else $.array=$.array||rZ.array(rZ.any());else if(typeof X.items==="boolean"&&X.items===!0)$.array=$.array||rZ.array(rZ.any());else if(X.prefixItems)$.array=$.array||rZ.array(rZ.any())}},B24=class{apply($,Z){if(Z.type!=="array")return;let X=Z;if(!Array.isArray(X.items))return;if($.array===!1)return;let Q=X.items.map((G)=>V7(G)),Y;if(Q.length===0)Y=OB$.tuple([]);else Y=OB$.tuple(Q);if(X.minItems!==void 0&&X.minItems>Q.length)Y=!1;if(X.maxItems!==void 0&&X.maxItems<Q.length)Y=!1;$.tuple=Y,$.array=!1}},O24=class{apply($,Z){let X=Z;if($.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)$.object=$.object||nJ0.object({}).passthrough()}},L24=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if($.object===void 0)$.object=nJ0.object({}).passthrough()}}},D24=class{apply($,Z){let X=Z;if(X.maxProperties===void 0)return;if($.object!==!1){let Q=$.object||nJ0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},w24=class{apply($,Z){let X=Z;if(X.minProperties===void 0)return;if($.object!==!1){let Q=$.object||nJ0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},j24=class{apply($,Z){if(!Z.not)return $;let X=V7(Z.not);return $.refine((Q)=>!pJ0(X,Q),{message:"Value must not match the 'not' schema"})}},z24=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(E24(),{message:"Array items must be unique"})}},A24=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((Q)=>V7(Q)).reduce((Q,Y)=>P24.intersection(Q,Y),$)}},T24=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let X=Z.anyOf.length===1?V7(Z.anyOf[0]):LB$.union([V7(Z.anyOf[0]),V7(Z.anyOf[1]),...Z.anyOf.slice(2).map((Q)=>V7(Q))]);return LB$.intersection($,X)}},R24=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let X=Z.oneOf.map((Q)=>V7(Q));return $.refine((Q)=>{let Y=0;for(let G of X)if(G.safeParse(Q).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},I24=class{apply($,Z){let X=Z;if(X.prefixItems&&Array.isArray(X.prefixItems)){let Y=X.prefixItems.map((G)=>V7(G));return $.refine((G)=>{if(!Array.isArray(G))return!0;for(let J=0;J<Math.min(G.length,Y.length);J++)if(!pJ0(Y[J],G[J]))return!1;if(G.length>Y.length){if(typeof X.items==="boolean"&&X.items===!1)return!1;else if(X.items&&typeof X.items==="object"&&!Array.isArray(X.items)){let J=V7(X.items);for(let K=Y.length;K<G.length;K++)if(!pJ0(J,G[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},q24=class{apply($,Z){let X=Z;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return $;if($ instanceof iJ0.ZodObject||$ instanceof iJ0.ZodRecord){let Q={};if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0)Q[Y]=V7(G)}if(X.required&&Array.isArray(X.required)){let Y=new Set(X.required);for(let G of Object.keys(Q))if(!Y.has(G))Q[G]=Q[G].optional()}else for(let Y of Object.keys(Q))Q[Y]=Q[Y].optional();if(X.additionalProperties===!1)return iJ0.object(Q);else return iJ0.object(Q).passthrough()}return $.refine((Q)=>{if(typeof Q!=="object"||Q===null||Array.isArray(Q))return!0;if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0){if(Object.getOwnPropertyDescriptor(Q,Y)!==void 0){if(!V7(G).safeParse(Q[Y]).success)return!1}}}if(X.required&&Array.isArray(X.required)){for(let Y of X.required)if(Object.getOwnPropertyDescriptor(Q,Y)===void 0)return!1}if(X.additionalProperties===!1&&X.properties){let Y=new Set(Object.keys(X.properties));for(let G in Q)if(!Y.has(G))return!1}return!0},{message:"Object constraints validation failed"})}},M24=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let X=Z.enum.filter((Q)=>Array.isArray(Q)||typeof Q==="object"&&Q!==null);if(X.length===0)return $;return $.refine((Q)=>{if(typeof Q!=="object"||Q===null)return!0;return X.some((Y)=>ro(Q,Y))},{message:"Value must match one of the enum values"})}},V24=class{apply($,Z){if(Z.const===void 0)return $;let X=Z.const;if(typeof X!=="object"||X===null)return $;return $.refine((Q)=>ro(Q,X),{message:"Value must equal the const value"})}},k24=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},C24=class{apply($,Z){var X;let Q=Z;if(!((X=Q.required)==null?void 0:X.includes("__proto__"))||Z.type!==void 0)return $;return S24.any().refine((Y)=>this.validateRequired(Y,Q.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((X)=>Object.prototype.hasOwnProperty.call($,X))}},_24=class{apply($,Z){var X;let Q=Z;if(Q.contains===void 0)return $;let Y=V7(Q.contains),G=(X=Q.minContains)!=null?X:1,J=Q.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(pJ0(Y,H))W++;if(W<G)return!1;if(J!==void 0&&W>J)return!1;return!0},{message:"Array must contain required items matching the schema"})}},v24=class{apply($,Z){let{default:X}=Z;if(X===void 0)return $;if(!$.safeParse(X).success)return $;return $.default(X)}},x24,f24;var DB$=L(()=>{x24=[new rT4,new aT4,new oT4,new eT4,new $24,new H24,new L24,new Z24,new X24,new Q24,new Y24,new G24,new J24,new K24,new W24,new B24,new F24,new N24,new U24,new D24,new w24,new O24],f24=[new C24,new M24,new V24,new A24,new T24,new R24,new I24,new q24,new _24,new j24,new z24,new v24,new k24]});class j$1{constructor($){this._url=$}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{this._socket=new WebSocket(this._url,b24),this._socket.onerror=(X)=>{let Q="error"in X?X.error:Error(`WebSocket error: ${JSON.stringify(X)}`);Z(Q),this.onerror?.(Q)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(X)=>{let Q;try{Q=FG.parse(JSON.parse(X.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(Q)}})}async close(){this._socket?.close()}send($){return new Promise((Z,X)=>{if(!this._socket){X(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var b24="mcp";var wB$=L(()=>{B9()});function y24($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let X=Z?.params?.protocolVersion;if(!X)return null;return{type:"emit",message:{result:{protocolVersion:X,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Z.jsonrpc??"2.0",id:Z.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var tJ0;var z$1=L(()=>{Ng();tJ0=class tJ0 extends rW{constructor($,Z){super($,Z)}send($,Z){let X=y24($);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var EB$,jB$=async($,Z,X)=>{let Q=g24($.connection,Z,X);if(!Q)throw Error("Unknown MCP connection type");let Y=new EB$({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(Q),{client:Y}},g24=($,Z,X)=>{if($.type==="Websocket")return new j$1(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...X??{},..."headers"in $?$.headers||{}:{}};if($.type==="SSE"){let G={requestInit:{headers:Y,signal:Z}};if($.token)G.eventSourceInit={fetch:(J,K)=>{return fetch(J,{...K,headers:{...Y,Accept:"text/event-stream"},signal:Z})}};return new SN(new URL($.url),G)}return new tJ0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var zB$=L(()=>{tW();un();wB$();B9();KQ();z$1();EB$=class EB$ extends n9{constructor($,Z){super($,{jsonSchemaValidator:z5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},Zn,Z)}}});function u24($,Z){if(wz.set($,Z),wz.size>h24){let X=wz.keys().next().value;if(X!==void 0)wz.delete(X)}}function TB$($){let Z=(X)=>{if("connection"in $)return jB$({connection:$.connection},void 0,X);return $.client};return new Proxy({},{get(X,Q){if(Q==="toJSON")return null;if(typeof Q!=="string")throw Error("Name must be a string");if(Q==="listTools")return K;async function Y(W,H=Q){let F=$?.debugId?.(),N=F?{"x-trace-debug-id":F}:void 0,{client:U}=await Z(N),{structuredContent:B,isError:O,content:D}=await U.callTool({name:String(H),arguments:W});if(O){let E=D?.[0]?.text,j=typeof E==="string"?PB$(E):null,z=j?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(j.code,j.message,j.traceId):null;if(z)throw z;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(B??D)}`)}if(B!==void 0)return B;let w=D?.[0]?.text;return typeof w==="string"?PB$(w):void 0}async function G(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function J(){if(!("connection"in $))return G();let W=$.connection,H=JSON.stringify(W);try{if(!wz.has(H))u24(H,G());return await wz.get(H)}catch(F){console.error("Failed to list tools",F),wz.delete(H);return}}async function K(){return(await J()??[]).map((H)=>AB$(H,Y))}return Y.asTool=async()=>{let H=(await J()??[]).find((F)=>F.name===Q);if(!H)throw Error(`Tool ${Q} not found`);return AB$(H,Y)},Y}})}var PB$=($)=>{try{return JSON.parse($)}catch{return $}},h24=500,wz,AB$=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?V7($.inputSchema):void 0,outputSchema:$.outputSchema?V7($.outputSchema):void 0,execute:(X)=>{return Z(X.context,$.name)}}};var RB$=L(()=>{DB$();zB$();wz=new Map});function fL($){return TB$($)}var dh;var P$1=L(()=>{RB$();dh=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(X)=>fL({connection:X});if(Z==="forClient")return(X)=>fL({client:X});return globalThis[Z]}})});function oJ0($){return{isImplementedBy:(Z)=>{for(let X of $){let Q=typeof X.name==="string"?new RegExp(`^${X.name}$`):X.name,Y=Z.find((G)=>Q.test(G.name));if(!Y&&X.opt)continue;if(!Y)return!1}return!0}}}var OH=($)=>{return{...oJ0($),forClient:(Z)=>{return fL({client:Z})},forConnection:(Z)=>{return fL({connection:Z})}}};var Ez=L(()=>{P$1()});import{z as r5}from"zod";var IB$,rJ0,qB$,aJ0,MB$,c24;var VB$=L(()=>{Ez();IB$=r5.object({specversion:r5.literal("1.0").describe("CloudEvents specification version"),id:r5.string().describe("Unique identifier for this event (UUID recommended)"),source:r5.string().describe("Connection ID of the event publisher"),type:r5.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:r5.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:r5.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:r5.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:r5.string().url().optional().describe("URI to the schema for the data attribute"),data:r5.unknown().optional().describe("Event payload (any JSON value)")}),rJ0=r5.object({events:r5.array(IB$).min(1).describe("Batch of CloudEvents to process")}),qB$=r5.object({success:r5.boolean().optional().describe("Whether this event was processed successfully"),error:r5.string().optional().describe("Error message for this event"),retryAfter:r5.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),aJ0=r5.object({success:r5.boolean().optional().describe("Batch success - applies to events not in results"),error:r5.string().optional().describe("Batch error message - applies to events not in results"),processedCount:r5.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:r5.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:r5.record(r5.string(),qB$).optional().describe("Per-event results keyed by event ID")}),MB$=[{name:"ON_EVENTS",inputSchema:rJ0,outputSchema:aJ0}],c24=OH(MB$)});import{z as a5}from"zod";var kB$,SB$,CB$,_B$,vB$,xB$,sJ0,A$1;var T$1=L(()=>{Ez();kB$=a5.object({type:a5.literal("string"),enum:a5.array(a5.string()).optional(),description:a5.string().optional()}),SB$=a5.object({type:a5.string(),description:a5.string(),paramsSchema:a5.record(a5.string(),kB$)}),CB$=a5.object({}),_B$=a5.object({triggers:a5.array(SB$)}),vB$=a5.object({type:a5.string(),params:a5.record(a5.string(),a5.string()),enabled:a5.boolean(),callbackUrl:a5.url().optional(),callbackToken:a5.string().min(1).optional()}),xB$=a5.object({success:a5.boolean()}),sJ0=[{name:"TRIGGER_LIST",inputSchema:CB$,outputSchema:_B$},{name:"TRIGGER_CONFIGURE",inputSchema:vB$,outputSchema:xB$}],A$1=OH(sJ0)});import{z as C$}from"zod";var l24,m24,d24,i24,p24,n24,t24,o24,r24,a24,s24,e24,jz;var ao=L(()=>{l24=C$.object({prefix:C$.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:C$.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:C$.string().optional().describe("Token for pagination from previous response"),delimiter:C$.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),m24=C$.object({objects:C$.array(C$.object({key:C$.string().describe("Object key/path"),size:C$.number().describe("Object size in bytes"),lastModified:C$.string().describe("Last modified timestamp"),etag:C$.string().describe("Entity tag for the object")})),nextContinuationToken:C$.string().optional().describe("Token for fetching next page of results"),isTruncated:C$.boolean().describe("Whether there are more results available"),commonPrefixes:C$.array(C$.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),d24=C$.object({key:C$.string().describe("Object key/path to get metadata for")}),i24=C$.object({contentType:C$.string().optional().describe("MIME type of the object"),contentLength:C$.number().describe("Size of the object in bytes"),lastModified:C$.string().describe("Last modified timestamp"),etag:C$.string().describe("Entity tag for the object"),metadata:C$.record(C$.string(),C$.string()).optional().describe("Custom metadata key-value pairs")}),p24=C$.object({key:C$.string().describe("Object key/path to generate URL for"),expiresIn:C$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),n24=C$.object({url:C$.string().describe("Presigned URL for downloading the object"),expiresIn:C$.number().describe("Expiration time in seconds that was used")}),t24=C$.object({key:C$.string().describe("Object key/path for the upload"),expiresIn:C$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:C$.string().optional().describe("MIME type for the object being uploaded")}),o24=C$.object({url:C$.string().describe("Presigned URL for uploading the object"),expiresIn:C$.number().describe("Expiration time in seconds that was used")}),r24=C$.object({key:C$.string().describe("Object key/path to delete")}),a24=C$.object({success:C$.boolean().describe("Whether the deletion was successful"),key:C$.string().describe("The key that was deleted")}),s24=C$.object({keys:C$.array(C$.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),e24=C$.object({deleted:C$.array(C$.string()).describe("Array of successfully deleted keys"),errors:C$.array(C$.object({key:C$.string(),message:C$.string()})).describe("Array of errors for failed deletions")}),jz=[{name:"LIST_OBJECTS",inputSchema:l24,outputSchema:m24},{name:"GET_OBJECT_METADATA",inputSchema:d24,outputSchema:i24},{name:"GET_PRESIGNED_URL",inputSchema:p24,outputSchema:n24},{name:"PUT_PRESIGNED_URL",inputSchema:t24,outputSchema:o24},{name:"DELETE_OBJECT",inputSchema:r24,outputSchema:a24},{name:"DELETE_OBJECTS",inputSchema:s24,outputSchema:e24}]});import{z as R6}from"zod";var fB$,bB$,yB$,so,eJ0,$30,Z30,X30,$R4;var R$1=L(()=>{Ez();fB$=R6.object({primary:R6.string().optional().describe("Primary brand color (hex)"),secondary:R6.string().optional().describe("Secondary brand color (hex)"),accent:R6.string().optional().describe("Accent / highlight color (hex)"),background:R6.string().optional().describe("Background color (hex)"),foreground:R6.string().optional().describe("Foreground / text color (hex)")}),bB$=R6.object({heading:R6.string().optional().describe("Font family for headings"),body:R6.string().optional().describe("Font family for body text"),code:R6.string().optional().describe("Font family for code / monospace")}),yB$=R6.object({logo:R6.string().optional().describe("Logo URL"),favicon:R6.string().optional().describe("Favicon URL"),ogImage:R6.string().optional().describe("Open Graph image URL")}),so=R6.object({id:R6.string(),name:R6.string().describe("Brand / company name"),domain:R6.string().optional().describe("Company domain (e.g. example.com)"),colors:fB$.optional().describe("Semantic color palette"),fonts:bB$.optional().describe("Font families by role"),assets:yB$.optional().describe("Visual identity assets"),overview:R6.string().optional().describe("Company overview / description"),tagline:R6.string().optional().describe("Brand tagline"),tone:R6.string().optional().describe("Tone of voice description"),metadata:R6.record(R6.string(),R6.unknown()).optional().describe("Extra design tokens and metadata")}),eJ0=R6.object({id:R6.string().optional().describe("Brand ID. Omit to get the default brand.")}),$30=R6.object({}),Z30=R6.object({items:R6.array(so)}),X30=[{name:"BRAND_GET",inputSchema:eJ0,outputSchema:so},{name:"BRAND_LIST",inputSchema:$30,outputSchema:Z30,opt:!0}],$R4=OH(X30)});var I$1=L(()=>{Ez();VB$();T$1();ao();R$1()});import{z as R8}from"zod";function uN($){return R8.object({items:R8.array($).describe("Array of collection items"),totalCount:R8.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:R8.boolean().optional().describe("Whether there are more items available")})}function $r($){return R8.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function QR4($){return R8.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function YR4($){return R8.object({item:$.describe("The created entity with generated id")})}function GR4($){return R8.object({id:R8.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function JR4($){return R8.object({item:$.describe("The updated entity")})}function Xr($){return R8.object({item:$.describe("The deleted entity")})}function Y30($,Z,X){let Q=$.toUpperCase(),Y=X?.readOnly??!1,G=[{name:`COLLECTION_${Q}_LIST`,inputSchema:AK,outputSchema:uN(Z)},{name:`COLLECTION_${Q}_GET`,inputSchema:eo,outputSchema:$r(Z)}];if(!Y)G.push({name:`COLLECTION_${Q}_CREATE`,inputSchema:QR4(Z),outputSchema:YR4(Z),opt:!0},{name:`COLLECTION_${Q}_UPDATE`,inputSchema:GR4(Z),outputSchema:JR4(Z),opt:!0},{name:`COLLECTION_${Q}_DELETE`,inputSchema:Zr,outputSchema:Xr(Z),opt:!0});return G}var Q30,ZR4,gB$,XR4,AK,eo,Zr;var bJ=L(()=>{Q30=R8.object({id:R8.string().describe("Unique identifier for the entity"),title:R8.string().describe("Human-readable title for the entity"),description:R8.string().nullish().describe("Description of the entity"),created_at:R8.string().datetime(),updated_at:R8.string().datetime(),created_by:R8.string().optional(),updated_by:R8.string().optional()}),ZR4=R8.object({field:R8.array(R8.string()),operator:R8.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:R8.unknown()}),gB$=R8.lazy(()=>R8.union([ZR4,R8.object({operator:R8.enum(["and","or","not"]),conditions:R8.array(gB$)})])),XR4=R8.object({field:R8.array(R8.string()),direction:R8.enum(["asc","desc"]),nulls:R8.enum(["first","last"]).optional()}),AK=R8.object({where:gB$.optional().describe("Filter expression"),orderBy:R8.array(XR4).optional().describe("Sort expressions"),limit:R8.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:R8.number().int().min(0).optional().describe("Number of items to skip")});eo=R8.object({id:R8.string().describe("ID of the entity to retrieve")});Zr=R8.object({id:R8.string().describe("ID of the entity to delete")})});import{z as ih}from"zod";var KR4,WR4,hB$;var uB$=L(()=>{bJ();KR4=Q30.extend({avatar:ih.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:ih.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:ih.string().describe("Virtual MCP ID to use for this assistant"),model:ih.object({id:ih.string().describe("Model ID"),connectionId:ih.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),WR4=Y30("assistant",KR4),hB$=[...WR4]});import{z as B0}from"zod";var Qr,cN,lB$,HR4,FR4,mB$,NR4,UR4,BR4,OR4,LR4,DR4,dB$,wR4,ER4,jR4,zR4,PR4,AR4,TR4,RR4,IR4,qR4,bu5,MR4,yu5,cB$,VR4,kR4,G30,gu5;var iB$=L(()=>{Ez();bJ();Qr=B0.lazy(()=>B0.union([B0.null(),B0.string(),B0.number(),B0.boolean(),B0.record(B0.string(),Qr),B0.array(Qr)])),cN=B0.record(B0.string(),B0.record(B0.string(),Qr)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),lB$=B0.object({type:B0.literal("text"),text:B0.string().describe("The text content"),providerOptions:cN}),HR4=B0.object({type:B0.literal("text"),text:B0.string().describe("The text content"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")}),FR4=B0.string().describe("File data as URL string"),mB$=B0.object({type:B0.literal("file"),filename:B0.string().optional().describe("Optional filename of the file"),data:FR4,mediaType:B0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:cN}),NR4=B0.object({type:B0.literal("file"),mediaType:B0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:B0.string().describe("Generated file data as base64 encoded string")}),UR4=B0.object({type:B0.literal("reasoning"),text:B0.string().describe("The reasoning text"),providerOptions:cN}),BR4=B0.object({type:B0.literal("reasoning"),text:B0.string().describe("The reasoning text"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")}),OR4=B0.object({type:B0.literal("tool-call"),toolCallId:B0.string().describe("ID of the tool call, used to match with tool result"),toolName:B0.string().describe("Name of the tool being called"),input:B0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:B0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:cN}),LR4=B0.object({type:B0.literal("tool-call"),toolCallId:B0.string().describe("ID of the tool call"),toolName:B0.string().describe("Name of the tool being called"),input:B0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:B0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")}),DR4=B0.union([B0.object({type:B0.literal("text"),value:B0.string()}),B0.object({type:B0.literal("json"),value:Qr}),B0.object({type:B0.literal("error-text"),value:B0.string()}),B0.object({type:B0.literal("error-json"),value:Qr}),B0.object({type:B0.literal("content"),value:B0.array(B0.union([B0.object({type:B0.literal("text"),text:B0.string().describe("Text content")}),B0.object({type:B0.literal("media"),data:B0.string().describe("Base-64 encoded media data"),mediaType:B0.string().describe("IANA media type")})]))}),B0.object({type:B0.literal("execution-denied"),reason:B0.string().optional()}),B0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),dB$=B0.object({type:B0.literal("tool-result"),toolCallId:B0.string().describe("ID of the tool call that this result is associated with"),toolName:B0.string().describe("Name of the tool that generated this result"),output:DR4.describe("Result of the tool call"),result:B0.unknown().describe("Unknown result of the tool call"),providerOptions:cN}),wR4=B0.object({type:B0.literal("tool-result"),toolCallId:B0.string().describe("ID of the tool call that this result is associated with"),toolName:B0.string().describe("Name of the tool that generated this result"),result:B0.any().describe("Result of the tool call (JSON-serializable)"),isError:B0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:B0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")}),ER4=B0.union([B0.object({type:B0.literal("source"),sourceType:B0.literal("url"),id:B0.string().describe("The ID of the source"),url:B0.string().describe("The URL of the source"),title:B0.string().optional().describe("The title of the source"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")}),B0.object({type:B0.literal("source"),sourceType:B0.literal("document"),id:B0.string().describe("The ID of the source"),mediaType:B0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:B0.string().describe("The title of the document"),filename:B0.string().optional().describe("Optional filename of the document"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata")})]),jR4=B0.object({role:B0.literal("system"),content:B0.string().describe("System message content"),providerOptions:cN}),zR4=B0.object({role:B0.literal("user"),content:B0.array(B0.union([lB$,mB$])).describe("User message content parts (text or file)"),providerOptions:cN}),PR4=B0.object({role:B0.literal("assistant"),content:B0.array(B0.union([lB$,mB$,UR4,OR4,dB$])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:cN}),AR4=B0.object({role:B0.literal("tool"),content:B0.array(dB$).describe("Tool message content (tool results)"),providerOptions:cN}),TR4=B0.union([jR4,zR4,PR4,AR4]),RR4=B0.array(TR4).describe("A list of messages forming the prompt"),IR4=B0.object({prompt:RR4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:B0.number().optional().describe("Maximum number of tokens to generate"),temperature:B0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:B0.number().optional().describe("Nucleus sampling parameter"),topK:B0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:B0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:B0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:B0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:B0.array(B0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:B0.union([B0.object({type:B0.literal("text")}),B0.object({type:B0.literal("json"),schema:B0.any().optional().describe("JSON schema that the generated output should conform to"),name:B0.string().optional().describe("Name of output that should be generated"),description:B0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:B0.array(B0.any()).optional().describe("The tools that are available for the model"),toolChoice:B0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:B0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:B0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:B0.any().optional().describe("Additional provider-specific options")}),qR4=B0.object({content:B0.array(B0.union([HR4,NR4,BR4,LR4,wR4,ER4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:B0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:B0.looseObject({inputTokens:B0.number().optional(),outputTokens:B0.number().optional(),totalTokens:B0.number().optional(),reasoningTokens:B0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:B0.any().optional().describe("Additional provider-specific metadata"),request:B0.object({body:B0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B0.object({id:B0.string().optional().describe("ID for the generated response"),timestamp:B0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:B0.string().optional().describe("The ID of the response model that was used"),headers:B0.record(B0.string(),B0.string()).optional().describe("Response headers"),body:B0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:B0.array(B0.any()).describe("Warnings for the call, e.g. unsupported settings")}),bu5=B0.object({stream:B0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:B0.object({body:B0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B0.object({headers:B0.record(B0.string(),B0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),MR4=B0.object({supportedUrls:B0.record(B0.string(),B0.array(B0.string())).describe("Supported URL patterns by media type for the provider")}),yu5=B0.object({modelId:B0.string().describe("The ID of the model"),logo:B0.string().nullable(),description:B0.string().nullable(),capabilities:B0.array(B0.string()),limits:B0.object({contextWindow:B0.number(),maxOutputTokens:B0.number()}).nullable(),costs:B0.object({input:B0.number(),output:B0.number()}).nullable(),provider:B0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),cB$=B0.object({modelId:B0.string().describe("The ID of the model"),callOptions:IR4}),VR4=Q30.extend({logo:B0.string().nullable(),description:B0.string().nullable(),capabilities:B0.array(B0.string()),limits:B0.object({contextWindow:B0.number(),maxOutputTokens:B0.number()}).nullable(),costs:B0.object({input:B0.number(),output:B0.number()}).nullable(),provider:B0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),kR4=Y30("llm",VR4,{readOnly:!0}),G30=[{name:"LLM_METADATA",inputSchema:B0.object({modelId:B0.string().describe("The ID of the model")}),outputSchema:MR4},{name:"LLM_DO_STREAM",inputSchema:cB$},{name:"LLM_DO_GENERATE",inputSchema:cB$,outputSchema:qR4},...kR4],gu5=OH(G30)});import{z as zz}from"zod";var SR4,pB$;var nB$=L(()=>{SR4=zz.object({scopes:zz.array(zz.string()).describe("List of scopes available"),stateSchema:zz.record(zz.string(),zz.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),pB$=[{name:"MCP_CONFIGURATION",inputSchema:zz.object({}),outputSchema:SR4}]});import{z as s5}from"zod";var CR4,_R4,tB$;var oB$=L(()=>{CR4=s5.object({}).strict(),_R4=s5.object({billing:s5.object({mode:s5.enum(["prepaid","postpaid"]),limitPeriod:s5.enum(["daily","weekly","monthly"]).nullable()}),limit:s5.object({total:s5.number().nullable(),remaining:s5.number().nullable(),reset:s5.string().nullable()}),usage:s5.object({total:s5.number(),daily:s5.number(),weekly:s5.number(),monthly:s5.number()}),alert:s5.object({enabled:s5.boolean(),threshold_usd:s5.number(),email:s5.string().nullable()}),connectionId:s5.string()}),tB$=[{name:"GATEWAY_USAGE",inputSchema:CR4,outputSchema:_R4},{name:"GATEWAY_SET_LIMIT",inputSchema:s5.object({}),outputSchema:s5.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:s5.object({}),outputSchema:s5.object({}),opt:!0}]});import{z as rB$}from"zod";function yJ(){return sX()===null}function J30($,Z){return $===y8.DEV_ASSETS(Z)}function ph($,Z){let X=I7$(Z,$),Q=new Date().toISOString();return{id:X.id??y8.DEV_ASSETS($),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:$,created_by:"system",created_at:Q,updated_at:Q,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:vR4,bindings:["OBJECT_STORAGE"],status:"active"}}var vR4;var nh=L(()=>{QO();ao();g8();vR4=jz.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:rB$.toJSONSchema($.inputSchema),outputSchema:rB$.toJSONSchema($.outputSchema)}))});function aB$($,Z){return $||Z===0}function sB$($,Z,X,Q,Y){let G=Z?Y+1:Y,J=$.slice(0,X),K=Q+X<G;return{items:J,totalCount:G,hasMore:K}}function eB$($,Z,X){if(!X)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function xR4($,Z){if(Z.length===0)return;let[X,...Q]=Z,Y=X==="slug"?dO($):$[X];for(let G of Q){if(Y===null||typeof Y!=="object")return;Y=Y[G]}return Y}function fR4($){let X=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${X}$`,"i")}function bR4($,Z,X){if($===void 0)return!0;switch(Z){case"eq":return X===null?$===null:$===X;case"gt":return $>X;case"gte":return $>=X;case"lt":return $<X;case"lte":return $<=X;case"in":return Array.isArray(X)&&X.includes($);case"like":return typeof $==="string"&&fR4(String(X)).test($);case"contains":return String($).toLowerCase().includes(String(X).toLowerCase());default:return!0}}function Yr($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:Q,conditions:Y}=Z;if(Y.length===0)return!0;switch(Q){case"and":return Y.every((G)=>Yr($,G));case"or":return Y.some((G)=>Yr($,G));case"not":return!Y.every((G)=>Yr($,G));default:return!0}}let X=xR4($,Z.field);return bR4(X,Z.operator,Z.value)}var $O$=L(()=>{NY0()});import{z as bL}from"zod";var yR4=8,gR4,hR4,uR4,cR4,q$1;var ZO$=L(()=>{I$1();uB$();bJ();iB$();nB$();ao();oB$();g8();k0();n5();YY();hN();nh();mW();NY0();$O$();gR4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:bL.object({})}],hR4={LLM:G30,LLMS:G30,ASSISTANTS:hB$,MCP:pB$,OBJECT_STORAGE:jz,AI_GATEWAY_BILLING:tB$,TRIGGER:sJ0,REGISTRY:gR4,BRAND:X30},uR4=AK.extend({binding:bL.union([bL.array(bL.object({}).passthrough()),bL.object({}).passthrough(),bL.string()]).optional(),include_virtual:bL.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:bL.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),cR4=uN(JX),q$1=c({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uR4,outputSchema:cR4,handler:async($,Z)=>{await Z.access.check();let X=s(Z),Q=$.binding?typeof $.binding==="string"?(()=>{let E=hR4[$.binding.toUpperCase()];if(!E)throw Error(`Unknown binding: ${$.binding}`);return E})():$.binding:void 0,Y=Q?oJ0(Q):void 0,G=!!Y,J=$.limit??100,K=$.offset??0,W=x5(),H=y8.DEV_ASSETS(X.id),F=ph(X.id,W),N=(!$.slug||dO(F)===$.slug)&&Yr(F,$.where),U=yJ()&&!G&&N,{sqlOffset:B,sqlLimit:O}=eB$(K,J,U),{items:D,totalCount:w}=await Z.storage.connections.list(X.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:G?void 0:O,offset:G?void 0:B});if(Y){let E=L9(),j=y8.SELF(X.id);await CJ0(D,yR4,async(z)=>{if(z.tools!==null)return;let A=z.id===j?async()=>{let{listManagementTools:I}=await Promise.resolve().then(() => (yL(),K30));return I(Z)}:()=>D$1(z,Z,UY0),P=await vL("tools",z.id,A,E,(I)=>Z.pendingRevalidations.push(I),_L);if(P!==null)z.tools=P})}if(yJ()&&aB$(G,K)&&N&&!D.some((E)=>E.id===H))D.unshift(F);if(G){let E=(await Promise.all(D.map(async(P)=>{if(!P.tools||P.tools.length===0)return null;return Y.isImplementedBy(P.tools.map((V)=>({name:V.name,inputSchema:V.inputSchema,outputSchema:V.outputSchema})))?P:null}))).filter((P)=>P!==null),j=E.length,z=E.slice(K,K+J),A=K+J<j;return{items:z,totalCount:j,hasMore:A}}return sB$(D,U,J,K,w)}})});var lR4,M$1;var XO$=L(()=>{bJ();g8();k0();n5();YY();hN();nh();mW();lR4=$r(JX),M$1=c({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:eo,outputSchema:lR4,handler:async($,Z)=>{let X=s(Z);if(await Z.access.check(),yJ()&&J30($.id,X.id))return{item:ph(X.id,x5())};let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)return{item:null};if(Q.tools===null){let Y=y8.SELF(X.id),G=Q.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (yL(),K30));return K(Z)}:async()=>{let K=await P5(Q,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},J=await vL("tools",Q.id,G,L9(),(K)=>Z.pendingRevalidations.push(K),_L);if(J!==null)Q.tools=J}return{item:Q}}})});class a6{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",$).executeTakeFirst();if(!Z)return null;return this.decryptToken(Z)}async upsert($){let Z=new Date().toISOString(),X=await this.vault.encrypt($.accessToken),Q=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null,G=$.expiresAt?.toISOString()??null,J=await this.db.insertInto("downstream_tokens").values({id:r$("dtok"),connectionId:$.connectionId,accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:G,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z})).returning(["id","createdAt"]).executeTakeFirstOrThrow();return{id:J.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:J.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint}}async delete($){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let Q=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(Q))return!0;return Q-Z<Date.now()}async decryptToken($){let Z=await this.vault.decrypt($.accessToken),X=$.refreshToken?await this.vault.decrypt($.refreshToken):null,Q=$.clientSecret?await this.vault.decrypt($.clientSecret):null;return{id:$.id,connectionId:$.connectionId,accessToken:Z,refreshToken:X,scope:$.scope,expiresAt:$.expiresAt,createdAt:$.createdAt,updatedAt:$.updatedAt,clientId:$.clientId,clientSecret:Q,tokenEndpoint:$.tokenEndpoint}}}var gJ=L(()=>{iZ()});function th(...$){if(pR4)console.log("[mcp-read-cache]",...$)}function nR4($){return $.kind==="org"?"org":`u:${$.userId}`}function V$1($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(V$1).join(",")}]`;return`{${Object.keys($).sort().map((X)=>`${JSON.stringify(X)}:${V$1($[X])}`).join(",")}}`}class F30{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=mR4,Z=dR4,X=()=>Date.now(),Q=iR4){this.config=$;this.maxEntries=Z;this.now=X;this.maxTotalBytes=Q}stats(){return{entries:this.store.size,bytes:this.totalBytes}}deleteKey($){let Z=this.store.get($);if(Z)this.store.delete($),this.totalBytes-=Z.bytes}key($,Z,X,Q){return`${Z}:${nR4(X)}:${$}:${V$1(Q)}`}storeSet($,Z,X,Q){let Y;try{Y=JSON.stringify(Z).length}catch{th("SKIP non-serializable",$);return}if(Y>Q){th("SKIP oversize",$,`${Y}b > cap ${Q}b`);return}this.deleteKey($);while(this.store.size>0&&(this.store.size>=this.maxEntries||this.totalBytes+Y>this.maxTotalBytes)){let G=this.store.keys().next().value;if(G===void 0)break;this.deleteKey(G)}this.store.set($,{value:Z,storedAt:X,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:X,scope:Q,params:Y,fetchLive:G,shouldCache:J,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,X,Q,Y),F=this.now(),N=this.store.get(H),U=N?F-N.storedAt:1/0;if(!N||U>W.maxStaleMs){W30.add(1,{type:Z,outcome:"miss"}),th(N?"EXPIRED":"MISS",H);let B=await G();if(J?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else th("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,N),U>W.revalidateAfterMs&&!this.revalidating.has(H)){W30.add(1,{type:Z,outcome:"stale"}),th("STALE \u2192 serve + revalidate",H,`age=${U}ms`),this.revalidating.add(H);let B=G().then((O)=>{if(J?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{W30.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else W30.add(1,{type:Z,outcome:"hit"}),th("HIT",H,`age=${U}ms`);return N.value}invalidate($){let Z=`${$}:`;for(let X of[...this.store.keys()])if(X.startsWith(Z))this.deleteKey(X)}}function S$1(){return y0().mcpCacheEnabled}function N30(){return S$1()?k$1:null}var W30,H30=1024,QO$,mR4,dR4=2000,iR4,pR4,k$1;var Gr=L(()=>{x6();R$();W30=P$.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),QO$=H30*H30,mR4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*H30},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*QO$},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*H30}},iR4=256*QO$,pR4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;k$1=new F30;P$.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(k$1.stats().entries));P$.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(k$1.stats().bytes))});function JO$($){N30()?.invalidate($),GB$($)}function oh($){JO$($);let Z=C$1?.();if(!Z)return;try{Z.publish(YO$,tR4.encode(JSON.stringify({connectionId:$,originId:GO$})))}catch(X){console.warn("[McpCacheInvalidation] publish failed (non-critical):",X)}}function KO$($){if(C$1=$,Jr)return;let Z=$();if(!Z)return;Jr=Z.subscribe(YO$),(async()=>{for await(let X of Jr)try{let Q=JSON.parse(oR4.decode(X.data));if(Q.originId===GO$)continue;JO$(Q.connectionId)}catch{}})().catch(console.error)}function WO$(){Jr?.unsubscribe(),Jr=null,C$1=void 0}var YO$="studio.mcp-cache.invalidate",GO$,tR4,oR4,C$1,Jr=null;var Kr=L(()=>{Gr();YY();GO$=crypto.randomUUID(),tR4=new TextEncoder,oR4=new TextDecoder});import{z as _$1}from"zod";function aR4($){let Z={...$};for(let X of rR4)delete Z[X];return Z}function sR4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function ZI4($,Z){return $.length===Z.length&&$.every((X,Q)=>X===Z[Q])}var rR4,eR4,$I4,v$1;var HO$=L(()=>{hN();gJ();k0();R$();YY();Kr();w$1();fo();mW();rR4=["id","organization_id","created_by","created_at"];eR4=_$1.object({id:_$1.string().describe("ID of the connection to update"),data:fX0.describe("Partial connection data to update")}),$I4=_$1.object({item:JX.describe("The updated connection entity")});v$1=c({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eR4,outputSchema:$I4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update connection");let{id:Y}=$,G=aR4($.data),J=G.configuration_state!==void 0||G.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==X.id)throw Error("Connection not found in organization");let W=G.connection_type??K.connection_type,H=sR4(G,K.connection_url);if(W==="VIRTUAL"){let x=cy(H);if(!x)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let b=await Z.storage.virtualMcps.findById(x);if(!b)throw Error(`Virtual MCP not found: ${x}`);if(b.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");H=ly(x)}let F=G.configuration_state??K.configuration_state??{},N=G.configuration_scopes??K.configuration_scopes??[];if(J){if(G.configuration_state!==void 0)F=G.configuration_state??{};else if(F===null||F===void 0)F={};if(G.configuration_scopes!==void 0)N=G.configuration_scopes??[];if(N.length>0){let x=F;no(x,N,X.id),await oo(x,N,X.id,Z)}}if(W==="STDIO"&&!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let U=G.connection_token??K.connection_token;if(!U)try{let b=await new a6(Z.db,Z.vault).get(Y);if(b?.accessToken)U=b.accessToken}catch{}let B=await VL({id:K.id,title:G.title??K.title,connection_type:W,connection_url:H,connection_token:U,connection_headers:G.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,D=!1;if(G.configuration_scopes===void 0&&B?.scopes?.length)D=!ZI4(N,B.scopes),N=B.scopes;if(no(F,N,X.id),D&&N.length>0)await oo(F,N,X.id,Z);let w=J||D,E=w?to(F,N):[],j=w?to(K.configuration_state??{},K.configuration_scopes??[]):[],z=K.configuration_state,A=z==null||Object.keys(z).length===0,P,I,V=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:j})}catch(x){console.error("Failed to restore credential grants after credential vault mutation failed",x)}},q={...G,connection_url:H,tools:null,configuration_state:F,configuration_scopes:N,updated_by:Q},S={...K,...q};if(w)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:E}),E.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:X.id,subjectConnectionId:Y})){let{plaintextToken:b,record:l}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:Y});I=l.id,P={baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:Y,token:b}}}}catch(x){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});throw await V(),x}if(w&&F&&N)try{await(await P5(S,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:N,firstRun:A,...P?{vault:P}:{}}})}catch(x){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",x),I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});if(E.length>0)throw await V(),x}let d;try{d=await Z.storage.connections.update(Y,q)}catch(x){if(w){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});await V()}throw x}if(O)L9()?.set("tools",Y,O).catch(()=>{});return oh(Y),{item:d}}})});import{z as XI4}from"zod";var QI4,x$1;var FO$=L(()=>{bJ();x4();k0();YY();Kr();mW();QI4=Zr.extend({force:XI4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),x$1=c({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:QI4,outputSchema:Xr(JX),handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q)throw Error(`Connection not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error("Connection not found in organization");if(Q.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let G=await Z.storage.virtualMcps.listByConnectionId(X.id,$.id);if(G.length>0)if($.force)await Z.storage.virtualMcps.removeConnectionReferences($.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:G.map((W)=>W.title)}));await Z.storage.connections.delete($.id);let J=await Z.storage.organizationSettings.get(X.id);if(J?.registry_config){let{registries:W,blockedMcps:H}=J.registry_config;if($.id in W){let{[$.id]:F,...N}=W;await Z.storage.organizationSettings.upsert(X.id,{registry_config:{registries:N,blockedMcps:H}})}}L9()?.invalidate($.id).catch(()=>{}),oh($.id);let K=a0(Z);if(K)h1.capture({distinctId:K,event:"connection_deleted",groups:{organization:X.id},properties:{connection_id:Q.id,connection_type:Q.connection_type,app_name:Q.app_name??null,organization_id:X.id,forced:$.force??!1}});return{item:Q}}})});import{z as rh}from"zod";var f$1;var NO$=L(()=>{k0();f$1=c({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:rh.object({id:rh.string()}),outputSchema:rh.object({id:rh.string(),healthy:rh.boolean(),latencyMs:rh.number()}),handler:async($,Z)=>{let X=s(Z);await Z.access.check();let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var UO$=L(()=>{UB$();ZO$();XO$();HO$();FO$();NO$()});import{sql as f4}from"kysely";import{z as LH}from"zod";function BO$($){if($===null||$===void 0)return"NULL";if(typeof $==="number")return String($);if(typeof $==="boolean")return $?"TRUE":"FALSE";if(typeof $==="string")return`'${$.replace(/'/g,"''")}'`;if($ instanceof Date)return`'${$.toISOString()}'`;return`'${JSON.stringify($).replace(/'/g,"''")}'`}function JI4($,Z){let X="",Q=0,Y=!1,G=!1,J=null;for(let K=0;K<$.length;K++){let W=$[K];if(!Y&&!G&&J===null){if($.startsWith("--",K)){let H=$.indexOf(`
|
|
2327
|
-
`,K),F=H===-1?$.slice(K):$.slice(K,H);X+=F,K+=F.length-1;continue}if($.startsWith("/*",K)){let H
|
|
2327
|
+
`,K),F=H===-1?$.slice(K):$.slice(K,H);X+=F,K+=F.length-1;continue}if($.startsWith("/*",K)){let H=1,F=K+2;while(H>0&&F<$.length)if($.startsWith("/*",F))H++,F+=2;else if($.startsWith("*/",F))H--,F+=2;else F++;let N=$.slice(K,F);X+=N,K+=N.length-1;continue}}if(J!==null){let H=`$${J}$`;if($.startsWith(H,K))X+=H,K+=H.length-1,J=null;else X+=W;continue}if(!G&&W==="'"){Y=!Y,X+=W;continue}if(!Y&&W==='"'){G=!G,X+=W;continue}if(!Y&&!G&&W==="$"){let H=/^\$(\d+)/.exec($.slice(K)),F=H?Number(H[1])-1:-1;if(H&&F>=0&&F<Z.length){X+=BO$(Z[F]),K+=H[0].length-1;continue}let N=/^\$([A-Za-z_][A-Za-z0-9_]*)?\$/.exec($.slice(K));if(N){J=N[1]??"",X+=N[0],K+=N[0].length-1;continue}}else if(!Y&&!G&&W==="?"&&Q<Z.length){X+=BO$(Z[Q]),Q++;continue}X+=W}return X}function OO$($){return $.replace(/-/g,"_")}function WI4($){return`app_${OO$($)}`}function HI4($){return`app_role_${OO$($)}`}function FI4($){if($ instanceof Error){let Z=$.message.toLowerCase(),X=$.code;return X==="3F000"||X==="42704"||X==="22023"||Z.includes("schema")&&Z.includes("does not exist")||Z.includes("role")&&Z.includes("does not exist")}return!1}async function NI4($,Z,X){if(await f4`CREATE SCHEMA IF NOT EXISTS ${f4.id(Z)}`.execute($),!(await f4`
|
|
2328
2328
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${X}) as exists
|
|
2329
2329
|
`.execute($)).rows[0]?.exists)await f4`CREATE ROLE ${f4.id(X)} NOLOGIN`.execute($);await f4`GRANT ${f4.id(X)} TO CURRENT_USER`.execute($),await f4`GRANT USAGE, CREATE ON SCHEMA ${f4.id(Z)} TO ${f4.id(X)}`.execute($),await f4`GRANT ALL ON ALL TABLES IN SCHEMA ${f4.id(Z)} TO ${f4.id(X)}`.execute($),await f4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${f4.id(Z)} TO ${f4.id(X)}`.execute($),await f4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${f4.id(Z)} GRANT ALL ON TABLES TO ${f4.id(X)}`.execute($),await f4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${f4.id(Z)} GRANT ALL ON SEQUENCES TO ${f4.id(X)}`.execute($),await f4`REVOKE ALL ON SCHEMA public FROM ${f4.id(X)}`.execute($)}async function UI4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await f4`SET LOCAL ROLE ${f4.id(X)}`.execute(Y),await f4`SET LOCAL search_path TO ${f4.id(Z)}`.execute(Y),await f4.raw(Q).execute(Y)})}catch(Y){if(FI4(Y))return await NI4($,Z,X),await $.transaction().execute(async(G)=>{return await f4`SET LOCAL ROLE ${f4.id(X)}`.execute(G),await f4`SET LOCAL search_path TO ${f4.id(Z)}`.execute(G),await f4.raw(Q).execute(G)});throw Y}}var GI4,KI4,LO$;var DO$=L(()=>{k0();GI4=LH.object({results:LH.array(LH.unknown()).optional(),success:LH.boolean().optional()});KI4=LH.object({sql:LH.string().describe("The SQL query to run"),params:LH.array(LH.unknown()).describe("The parameters to pass to the SQL query").optional()});LO$=c({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:KI4,outputSchema:LH.object({result:LH.array(GI4)}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=JI4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let Q=WI4(Z.connectionId),Y=HI4(Z.connectionId);return{result:[{results:(await UI4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function U30($){let Z=$.access.getRole();if(!BX(Z))throw new fN("Only organization owners and admins can change org-wide pin status")}var b$1=L(()=>{XY();sj()});async function B30($,Z,X){let Q=[...new Set(X)],Y=await Promise.all(Q.map((J)=>$.storage.connections.findById(J,Z))),G=Q.filter((J,K)=>!Y[K]);if(G.length>0)throw Error(`Connection not found: ${G.join(", ")}`)}function lN($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function O30($){let Z=2166136261;for(let X=0;X<$.length;X++)Z=Math.imul(Z^$.charCodeAt(X),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function Wr($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function Hr($,Z){if(!Z)return $;let X=`${O30(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function OI4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var ah;var wO$=L(()=>{tW();ah=class ah extends n9{static MAX_PAGES_PER_CLIENT=1000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$;for(let X of Object.keys($)){let Q=O30(X);if(this.slugToKey.has(Q))throw Error(`GatewayClient: duplicate namespace code "${Q}" from keys "${this.slugToKey.get(Q)}" and "${X}"`);this.slugToKey.set(Q,X)}}namespace($,Z){return`${O30($)}_${Z}`}async resolveToolTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{tools:X}=await this.listTools();for(let Q of X){let Y=Wr(Q._meta);if(!Y)continue;if(Hr(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve tool "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}async resolvePromptTarget($){let Z=$.indexOf("_");if(Z!==-1){let Q=$.slice(0,Z),Y=this.slugToKey.get(Q);if(Y)return[Y,$.slice(Z+1)]}let{prompts:X}=await this.listPrompts();for(let Q of X){let Y=Wr(Q._meta);if(!Y)continue;if(Hr(Q.name,Y)===$)return[Y,$]}if(Z===-1)throw Error(`GatewayClient: could not resolve prompt "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,Z)}" in "${$}" and not found by original name in any client`)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let X=this.clients[$];if(!X)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let Q=X.client,Y;try{Y=typeof Q==="function"?Promise.resolve(Q()):Promise.resolve(Q)}catch(J){return Promise.reject(J)}let G=Y.catch((J)=>{throw this.resolvedClients.delete($),J});return this.resolvedClients.set($,G),G}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,X){try{let Q=await this.resolveClient($);return await Z(Q)}catch(Q){return console.warn(`GatewayClient: skipping ${X} from client "${$}" \u2014 ${Q?.message??Q}`),[]}}async paginate($,Z,X){let Q=[],Y,G=0;do{let J=await X(Y);Q.push(...J.items),Y=J.nextCursor,G++}while(Y&&G<ah.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${ah.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return Q}fetchAllTools($,Z){return this.paginate(Z,"tools",async(X)=>{let Q=await $.listTools(X?{cursor:X}:void 0);return{items:Q.tools,nextCursor:Q.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(X)=>{let Q=await $.listResources(X?{cursor:X}:void 0);return{items:Q.resources,nextCursor:Q.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(X)=>{let Q=await $.listResourceTemplates(X?{cursor:X}:void 0);return{items:Q.resourceTemplates,nextCursor:Q.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(X)=>{let Q=await $.listPrompts(X?{cursor:X}:void 0);return{items:Q.prompts,nextCursor:Q.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllTools(J,Z),"tools"),Y=X.tools,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],X=new Map;for(let[Q,Y]of Object.entries(this.clients)){let G=await this.listFromClient(Q,(W)=>this.fetchAllResources(W,Q),"resources"),J=Y.resources,K=J?new Set(J):null;for(let W of G){if(K&&!K.has(W.uri)&&!(W.name&&K.has(W.name)))continue;if($.has(W.uri)){console.warn(`GatewayClient: duplicate resource "${W.uri}" from client "${Q}" \u2014 skipping`);continue}$.add(W.uri),X.set(W.uri,Q),Z.push({...W,_meta:{...W._meta??{},gatewayClientId:Q}})}}return this.resourceRouteMap=X,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[];for(let[X,Q]of Object.entries(this.clients)){let Y=await this.listFromClient(X,(G)=>this.fetchAllResourceTemplates(G,X),"resource templates");for(let G of Y){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[];for(let[Z,X]of Object.entries(this.clients)){let Q=await this.listFromClient(Z,(J)=>this.fetchAllPrompts(J,Z),"prompts"),Y=X.prompts,G=Y?new Set(Y):null;for(let J of Q){if(G&&!G.has(J.name))continue;$.push({...J,name:this.namespace(Z,J.name),title:J.title??OI4(J.name),_meta:{...J._meta??{},gatewayClientId:Z}})}}return{prompts:$}}async callTool($,Z,X){let[Q,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(Q)).callTool({...$,name:Y},Z,X)}async readResource($,Z){let X=await this.resolveResourceRoute($.uri);return(await this.resolveClient(X)).readResource($)}async getPrompt($,Z){let[X,Q]=await this.resolvePromptTarget($.name);return(await this.resolveClient(X)).getPrompt({...$,name:Q})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((X)=>X.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var L30=L(()=>{wO$()});function g$1($){return lN($)}function DI4($,Z){let X=lN(Z)||"prompt";return`${String($).padStart(LI4,"0")}-${X}`}async function h$1($,Z,X){try{await $.delete(D30,g$1(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function w30($,Z,X,Q){let Y=g$1(Z);await h$1($,Z,X),await Promise.all(Q.slice(0,y$1).map(async(G,J)=>{let K=DI4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(D30,`${Y}/${K}.json`,JSON.stringify(W),{actor:X,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function EO$($,Z){let X=g$1(Z),Q;try{Q=await $.listDir(D30,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,y$1),G=[];for(let J of Y)try{let K=await $.read(D30,J.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")G.push(W)}catch{}return G}var D30="agent-prompts",y$1=20,LI4;var Fr=L(()=>{L30();LI4=String(y$1-1).length});function sh($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as PO$}from"zod";function wI4(){let $=jO$[Math.floor(Math.random()*jO$.length)];return`icon://${zO$[Math.floor(Math.random()*zO$.length)]}?color=${$}`}var jO$,zO$,EI4,jI4,u$1;var AO$=L(()=>{k0();SL();b$1();Fr();jO$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],zO$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];EI4=PO$.object({data:yX0.describe("Data for the new virtual MCP")}),jI4=PO$.object({item:KX.describe("The created virtual MCP entity")}),u$1=c({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:EI4,outputSchema:jI4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)U30(Z);let{prompts:Y,metadata:G,...J}=$.data,K=sh(G);if(J.connections.length>0)await B30(Z,X.id,J.connections.map((F)=>F.connection_id));let W={...J,metadata:K,icon:J.icon??wI4()},H=await Z.storage.virtualMcps.create(X.id,Q,W);if(Y?.length&&Z.orgFs&&H.id)await w30(Z.orgFs,H.id,Q,Y);return{item:H}}})});function zI4($){let Z=[],X=0;while(X<$.length){let Q=$[X];if(Q==="%")Z.push(".*");else if(Q==="_")Z.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Q))Z.push("\\"+Q);else Z.push(Q);X++}return Z.join("")}function gL($){return typeof $==="string"||typeof $==="number"}function c$1($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function PI4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function E30($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>E30($,H));case"or":return W.some((H)=>E30($,H));case"not":return!W.every((H)=>E30($,H));default:return!0}}let{field:X,operator:Q,value:Y}=Z,G=X.join(".");if(G==="connection_id"){if(Q!=="eq"||typeof Y!=="string")return!1;return PI4($,Y)}let J=c$1($,G);switch(Q){case"eq":return J===Y;case"gt":return gL(J)&&gL(Y)&&J>Y;case"gte":return gL(J)&&gL(Y)&&J>=Y;case"lt":return gL(J)&&gL(Y)&&J<Y;case"lte":return gL(J)&&gL(Y)&&J<=Y;case"in":return Array.isArray(Y)&&Y.includes(J);case"like":if(typeof J!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;let K=zI4(Y);return new RegExp(`^${K}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Y!=="string")return!1;return J.toLowerCase().includes(Y.toLowerCase());default:return!0}}function AI4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=c$1(X,G),K=c$1(Q,G),W=0;if(J==null&&K==null)continue;if(J==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof K==="string")W=J.localeCompare(K);else if(typeof J==="number"&&typeof K==="number")W=J-K;else W=String(J).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var TI4,RI4,l$1;var TO$=L(()=>{bJ();k0();SL();TI4=AK,RI4=uN(KX),l$1=c({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:TI4,outputSchema:RI4,handler:async($,Z)=>{await Z.access.check();let X=s(Z),Q=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,J=Q?await Z.storage.virtualMcps.listByConnectionId(X.id,Q):await Z.storage.virtualMcps.list(X.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)J=J.filter((U)=>E30(U,$.where));if($.orderBy&&$.orderBy.length>0)J=AI4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,F=J.slice(W,W+H),N=W+H<K;return{items:F,totalCount:K,hasMore:N}}})});import{z as m$1}from"zod";var II4,qI4,d$1;var RO$=L(()=>{k0();SL();II4=m$1.object({id:m$1.string().describe("ID of the virtual MCP to retrieve")}),qI4=m$1.object({item:KX.nullable().describe("The retrieved virtual MCP, or null if not found")}),d$1=c({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:II4,outputSchema:qI4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=await Z.storage.virtualMcps.findById($.id);if(Q&&Q.organization_id!==X.id)return{item:null};if(!Q)return{item:null};return{item:Q}}})});function hJ($){return i$1.test($)}function IO$($){let Z=(X)=>typeof X==="string"?X.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var i$1;var hL=L(()=>{i$1=/^[a-z0-9][a-z0-9-]{0,59}$/});function qO$($){let{nextTitle:Z,currentTitle:X,currentSiteSlug:Q}=$;if(Q?.trim())return null;if(Z===void 0||Z===X)return null;let Y=X?.trim().toLowerCase()??"";return hJ(Y)?Y:null}var MO$=L(()=>{hL()});import{z as p$1}from"zod";var MI4,VI4,n$1;var VO$=L(()=>{k0();Fr();SL();b$1();MO$();MI4=p$1.object({id:p$1.string().describe("ID of the virtual MCP to update"),data:gX0.describe("Partial virtual MCP data to update")}),VI4=p$1.object({item:KX.describe("The updated virtual MCP entity")}),n$1=c({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:MI4,outputSchema:VI4,handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let Q=a0(Z);if(!Q)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:J,...K}=$.data,W=sh(J);if(W&&Y.metadata)W={...Y.metadata,...W};else if(W===null&&Y.metadata?.sandboxMap)W={sandboxMap:Y.metadata.sandboxMap};let H={...K,...J!==void 0?{metadata:W}:{}},F=qO$({nextTitle:H.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(F)H.metadata={...Y.metadata,...H.metadata,siteSlug:F};if(H.pinned!==void 0&&H.pinned!==Y.pinned)U30(Z);if(H.connections?.length)await B30(Z,X.id,H.connections.map((U)=>U.connection_id));let N=await Z.storage.virtualMcps.update($.id,Q,H);if(G!==void 0&&Z.orgFs)await w30(Z.orgFs,$.id,Q,G);return{item:N}}})});function kI4($){if(!$)return!1;let Z=o$1.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function SO$($){let Z={...$};for(let X of o$1)Z[X]="read";return Z}async function CO$($,Z){let X={...Z};for(;;){let Q=await $(X);if(!Q.isError)return{result:Q,grantedPermissions:X};let Y=Q.content?.find((W)=>W.type==="text")?.text,G=o$1.find((W)=>(W in X));if(!G||!kI4(Y))return{result:Q,grantedPermissions:X};let{[G]:J,...K}=X;X=K}}function SI4($){if(!$||typeof $!=="object"||Array.isArray($))return kO$;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return kO$;return Z}function CI4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function g5($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let X=CI4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:SI4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function Pz($){return $.metadata?.orgShared===!0}function _O$($){let Z=new Set,X=[];for(let Q of $??[]){if(Q.status!=="active")continue;let Y=g5(Q);if(Y===null)continue;let G=t$1(Y.owner,Y.repo);if(Z.has(G))continue;Z.add(G),X.push(`${Y.owner}/${Y.repo}`)}return X}function j30($,Z,X){let Q=t$1(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=g5(G);return J!==null&&t$1(J.owner,J.repo)===Q});return Y.find(Pz)??Y[0]??null}var kO$,o$1,t$1=($,Z)=>`${$}/${Z}`.toLowerCase();var GY=L(()=>{kO$={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},o$1=["deployments","checks"]});function vO$($){return MJ($)!==null||KY0($)!==null}var xO$=L(()=>{g8()});import{z as r$1}from"zod";var _I4,vI4,a$1;var fO$=L(()=>{GY();gJ();k0();Fr();SL();xO$();_I4=r$1.object({id:r$1.string().describe("ID of the virtual MCP to delete")}),vI4=r$1.object({item:KX.describe("The deleted virtual MCP entity")}),a$1=c({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_I4,outputSchema:vI4,handler:async($,Z)=>{a(Z);let X=s(Z);if(await Z.access.check(),vO$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let Q=await Z.storage.virtualMcps.findById($.id);if(!Q)throw Error(`Virtual MCP not found: ${$.id}`);if(Q.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);await Z.storage.virtualMcps.delete($.id);try{if((await Z.storage.organizationSettings.get(X.id))?.main_agent_id===$.id)await Z.storage.organizationSettings.upsert(X.id,{main_agent_id:null})}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:$.id,error:G.message})}if(Z.orgFs)await h$1(Z.orgFs,$.id,a0(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(Pz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0||await Z.storage.connections.isReferencedByThread(Y));if(G&&g5(G)&&!J){let W=await new a6(Z.db,Z.vault).get(Y);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(Y)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Y,error:G.message})}return{item:Q}}})});import{z as JY}from"zod";var xI4,s$1;var bO$=L(()=>{k0();xI4=JY.object({id:JY.string(),virtualMcpId:JY.string(),pluginId:JY.string(),connectionId:JY.string().nullable(),settings:JY.record(JY.string(),JY.unknown()).nullable(),createdAt:JY.string(),updatedAt:JY.string()}),s$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JY.object({virtualMcpId:JY.string().describe("Virtual MCP ID"),pluginId:JY.string().describe("Plugin ID")}),outputSchema:JY.object({config:xI4.nullable()}),handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y}=$,G=await Z.storage.connections.findById(Q);if(!G||G.organization_id!==X.id)return{config:null};if(G.connection_type!=="VIRTUAL")return{config:null};let J=await Z.storage.virtualMcpPluginConfigs.get(Q,Y);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as aZ}from"zod";var fI4,e$1;var yO$=L(()=>{k0();nh();n5();fI4=aZ.object({id:aZ.string(),virtualMcpId:aZ.string(),pluginId:aZ.string(),connectionId:aZ.string().nullable(),settings:aZ.record(aZ.string(),aZ.unknown()).nullable(),createdAt:aZ.string(),updatedAt:aZ.string()}),e$1=c({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:aZ.object({virtualMcpId:aZ.string().describe("Virtual MCP ID"),pluginId:aZ.string().describe("Plugin ID"),connectionId:aZ.string().nullable().optional().describe("MCP connection to bind"),settings:aZ.record(aZ.string(),aZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:aZ.object({config:fI4}),handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=a0(Z),W=await Z.storage.connections.findById(Q);if(!W)throw Error(`Connection not found: ${Q}`);if(W.organization_id!==X.id)throw Error(`Connection not found: ${Q}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Q}`);let H=G?await Z.storage.connections.findById(G):null;if(G&&H&&H.organization_id!==X.id)throw Error(`Connection not found: ${G}`);if(G&&W.organization_id&&!H&&yJ()&&J30(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=ph(W.organization_id,x5());await Z.storage.connections.create({...N,organization_id:W.organization_id,created_by:K})}else if(G&&!H)throw Error(`Connection not found: ${G}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(Q,Y,{connectionId:G,settings:J});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});import{z as OQ}from"zod";var bI4,$81;var gO$=L(()=>{k0();SL();bI4=OQ.object({connectionId:OQ.string(),toolName:OQ.string(),label:OQ.string(),icon:OQ.string().nullable().optional()}),$81=c({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:OQ.object({virtualMcpId:OQ.string().describe("Virtual MCP ID"),pinnedViews:OQ.array(bI4).describe("Pinned views to set for the virtual MCP sidebar"),layout:OQ.object({defaultMainView:OQ.object({type:OQ.string(),id:OQ.string().optional(),toolName:OQ.string().optional()}).nullable().optional(),chatDefaultOpen:OQ.boolean().nullable().optional()}).optional()}),outputSchema:OQ.object({item:KX.nullable()}),handler:async($,Z)=>{a(Z);let X=s(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=a0(Z),K=await Z.storage.virtualMcps.findById(Q);if(!K)throw Error(`Virtual MCP not found: ${Q}`);if(K.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Q}`);let W=K.metadata?.ui??{},H={...W,pinnedViews:Y.length>0?Y:null,layout:G??W.layout??null};return{item:await Z.storage.virtualMcps.update(Q,J??"system",{metadata:{...K.metadata,ui:H}})}}})});import{z as mN}from"zod";var yI4,gI4,Z81;var hO$=L(()=>{k0();yI4=mN.object({ids:mN.array(mN.string()).max(1000).describe("Virtual MCP ids to look up")}),gI4=mN.object({items:mN.array(mN.object({id:mN.string(),last_used_at:mN.string().optional(),last_used_by:mN.string().optional()}))}),Z81=c({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:yI4,outputSchema:gI4,handler:async($,Z)=>{a(Z),s(Z),await Z.access.check();let X=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((Q)=>({id:Q,last_used_at:X.get(Q)?.last_used_at,last_used_by:X.get(Q)?.last_used_by}))}}})});var uO$=L(()=>{AO$();TO$();RO$();VO$();fO$();bO$();yO$();gO$();hO$()});import{z as DX}from"zod";var X81;var cO$=L(()=>{x6();k0();X81=c({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:DX.object({startDate:DX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:DX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:DX.array(DX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:DX.array(DX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:DX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:DX.object({cells:DX.array(DX.object({virtualMcpId:DX.string().nullable(),toolName:DX.string(),calls:DX.number(),errors:DX.number(),outputSize:DX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=s(Z);return await Z.access.check(),await cQ(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as A5}from"zod";var Q81;var lO$=L(()=>{x6();k0();Q81=c({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:A5.object({id:A5.string().describe("Log ID to fetch")}),outputSchema:A5.object({log:A5.object({id:A5.string().optional(),organizationId:A5.string(),connectionId:A5.string(),toolName:A5.string(),input:A5.record(A5.string(),A5.unknown()),output:A5.record(A5.string(),A5.unknown()),isError:A5.boolean(),errorMessage:A5.string().nullish(),durationMs:A5.number(),timestamp:A5.string(),userId:A5.string().nullish(),requestId:A5.string(),userAgent:A5.string().nullish(),virtualMcpId:A5.string().nullish(),properties:A5.record(A5.string(),A5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await cQ();let X=s(Z),Q=await Z.storage.monitoring.getById(X.id,$.id);if(!Q)return{log:null};return{log:{...Q,timestamp:Q.timestamp instanceof Date?Q.timestamp.toISOString():Q.timestamp}}}})});import{z as j8}from"zod";var uI4,Y81;var mO$=L(()=>{x6();k0();uI4=j8.object({id:j8.string().optional().describe("Unique log identifier"),organizationId:j8.string().describe("Organization ID"),connectionId:j8.string().describe("Connection ID"),toolName:j8.string().describe("Name of the tool that was called"),isError:j8.boolean().describe("Whether the call resulted in an error"),errorMessage:j8.string().nullish().describe("Error message if applicable"),durationMs:j8.number().describe("Call duration in milliseconds"),timestamp:j8.string().describe("ISO 8601 timestamp of the call"),userId:j8.string().nullish().describe("User who triggered the call"),requestId:j8.string().describe("Unique request identifier"),userAgent:j8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:j8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:j8.record(j8.string(),j8.string()).nullish().describe("Custom key-value metadata attached to the log")}),Y81=c({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j8.object({connectionId:j8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:j8.array(j8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:j8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:j8.string().optional().describe("Filter by tool name"),isError:j8.boolean().optional().describe("Filter by error status"),startDate:j8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:j8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:j8.number().default(20).describe("Maximum number of results"),offset:j8.number().default(0).describe("Offset for pagination"),properties:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:j8.array(j8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:j8.record(j8.string(),j8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:j8.record(j8.string(),j8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:j8.object({logs:j8.array(uI4).describe("Array of monitoring logs"),total:j8.number().describe("Total number of logs matching filters"),offset:j8.number().describe("Current offset for pagination"),limit:j8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await cQ();let X=s(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,G={organizationId:X.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},J=await Z.storage.monitoring.query(G);return{logs:J.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:J.total,offset:$.offset,limit:$.limit}}})});import{z as F$}from"zod";var G81;var dO$=L(()=>{x6();k0();G81=c({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F$.object({startDate:F$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:F$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:F$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:F$.array(F$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:F$.array(F$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:F$.array(F$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:F$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:F$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:F$.array(F$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:F$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:F$.object({totalCalls:F$.number().describe("Total number of tool calls"),errorRate:F$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:F$.number().describe("Average call duration in milliseconds"),errorRatePercent:F$.string().optional().describe("Error rate as a percentage string"),totalErrors:F$.number().optional().describe("Total number of errors"),p50DurationMs:F$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:F$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:F$.array(F$.object({connectionId:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avgDurationMs:F$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:F$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:F$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:F$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:F$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:F$.array(F$.object({toolName:F$.string(),connectionId:F$.string().nullable(),calls:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:F$.array(F$.object({timestamp:F$.string(),toolName:F$.string(),calls:F$.number(),errors:F$.number(),avg:F$.number(),p95:F$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:F$.array(F$.object({timestamp:F$.string(),calls:F$.number(),errors:F$.number(),errorRate:F$.number(),avg:F$.number(),p50:F$.number(),p95:F$.number(),inputTokens:F$.number().optional(),outputTokens:F$.number().optional(),totalTokens:F$.number().optional(),costUsd:F$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=s(Z);if(await Z.access.check(),await cQ(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:X.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let G=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:X.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:G.topTools,topToolsTimeseries:G.timeseries}}let Q=await Z.storage.monitoring.getStats({organizationId:X.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...Q,errorRatePercent:(Q.errorRate*100).toFixed(2)}}})});import{z as LQ}from"zod";var J81;var iO$=L(()=>{x6();k0();J81=c({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:LQ.object({threadIds:LQ.array(LQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:LQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:LQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:LQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:LQ.object({items:LQ.array(LQ.object({threadId:LQ.string(),calls:LQ.number(),inputTokens:LQ.number(),outputTokens:LQ.number(),totalTokens:LQ.number(),costUsd:LQ.number()}))}),handler:async($,Z)=>{let X=s(Z);return await Z.access.check(),await cQ(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:X.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var pO$=L(()=>{cO$();lO$();mO$();dO$();iO$()});function z30($){return typeof $==="string"&&lI4.has($.trim().toLowerCase())}var lI4;var K81=L(()=>{lI4=new Set([".well-known","_admin","api","auth","choose-editor","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as wG}from"zod";var W81;var nO$=L(()=>{k0();K81();W81=c({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:wG.object({slug:wG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!z30($),"Slug is reserved by Studio"),name:wG.string().min(1).max(255),description:wG.string().optional()}),outputSchema:wG.object({id:wG.string(),name:wG.string(),slug:wG.string(),logo:wG.string().nullable().optional(),metadata:wG.any().optional(),createdAt:wG.string().datetime().describe("ISO 8601 timestamp"),members:wG.array(wG.any()).optional()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=a0(Z);if(!X)throw Error("User ID required to create organization");let Q=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:X});if(!Q)throw Error("Failed to create organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as DH}from"zod";var H81;var tO$=L(()=>{k0();H81=c({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:DH.object({}),outputSchema:DH.object({organizations:DH.array(DH.object({id:DH.string(),name:DH.string(),slug:DH.string(),logo:DH.string().nullable().optional(),metadata:DH.any().optional(),createdAt:DH.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(a(Z),await Z.access.check(),!a0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}}})});import{z as uJ}from"zod";var F81;var oO$=L(()=>{k0();F81=c({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uJ.object({}),outputSchema:uJ.object({id:uJ.string(),name:uJ.string(),slug:uJ.string(),logo:uJ.string().nullable().optional(),metadata:uJ.any().optional(),createdAt:uJ.string().datetime().describe("ISO 8601 timestamp"),members:uJ.array(uJ.any()).optional(),invitations:uJ.array(uJ.any()).optional()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as TK}from"zod";var N81;var rO$=L(()=>{k0();N81=c({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:TK.object({id:TK.string(),name:TK.string().min(1).max(255).optional(),description:TK.string().optional()}),outputSchema:TK.object({id:TK.string(),name:TK.string(),slug:TK.string(),logo:TK.string().nullable().optional(),metadata:TK.any().optional(),createdAt:TK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(a(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X={};if($.name)X.name=$.name;if($.description!==void 0)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as Nr}from"zod";var U81;var aO$=L(()=>{k0();U81=c({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Nr.object({id:Nr.string()}),outputSchema:Nr.object({success:Nr.boolean(),id:Nr.string()}),handler:async($,Z)=>{if(a(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.get($.id);return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...X?.metadata,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as Q$}from"zod";function k7($,Z){let X=$?.[Z];return mI4.has(Z)?X!==!1:X===!0}var Ur,Br,dN,sO$,uL,Or,Lr,Dr,wr,mI4,cL;var a9=L(()=>{Ur=Q$.object({title:Q$.string(),url:Q$.string(),icon:Q$.string()}),Br=Q$.object({registries:Q$.record(Q$.string(),Q$.object({enabled:Q$.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:Q$.array(Q$.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),dN=Q$.object({keyId:Q$.string(),modelId:Q$.string(),title:Q$.string().optional()}).nullable(),sO$=Q$.enum(["fast","smart","thinking","image","web_search","deep_research"]),uL=Q$.enum(["fast","smart","thinking"]),Or=Q$.object({tiers:Q$.object({fast:dN,smart:dN,thinking:dN,image:dN,web_search:dN,deep_research:dN})}),Lr=Q$.object({tiers:Q$.object({fast:dN.optional(),smart:dN.optional(),thinking:dN.optional()})}),Dr=Q$.object({ids:Q$.array(Q$.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),wr=Q$.object({demo_mode:Q$.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:Q$.boolean().optional().describe("Curated commerce (reports) look: hides agent navigation, the home Customize button, and the Settings/Automations tabs. Defaulted on for orgs created by commerce onboarding."),org_board_columns:Q$.boolean().optional().describe("The task board's columns are this org's own, mirrored from its tracker, rather than the set Studio ships. Off means the canonical lanes, which is the only board most orgs want."),reviewer_enabled:Q$.boolean().optional().describe("Run the Reviewer on a task's pull request once it's In Review \u2014 it reviews the code with the repo's stack-appropriate skills, fixes what it finds on the PR's own branch, then exercises the change on the deploy preview and approves or hands the card to a human."),qa_agent_enabled:Q$.boolean().optional().describe("Deprecated: see reviewer_enabled."),code_reviewer_enabled:Q$.boolean().optional().describe("Deprecated: see reviewer_enabled."),auto_merge:Q$.boolean().optional().describe("When the Reviewer approves a task's pull request, merge it automatically instead of leaving the merge to a human. If the merge is blocked by a conflict with the base branch, hand the PR back to the Super Agent to resolve the conflict (check out the branch, merge the base, push) so it can then merge."),cheap_reviewer_model:Q$.boolean().optional().describe("Run the Reviewer on a cheaper model than the Super Agent that wrote the code. On by default \u2014 turning it off trades cost for some review depth."),coding_agent_org_mcps:Q$.boolean().optional().describe("Give a coding-agent run (the claude-code harness in a sandbox) every MCP connection in the org as its own MCP server, on top of the narrow task-run surface it always gets. Off by default: each connection is one more server the agent connects to at session start, and all of their tools land in its context."),coding_agents_claude_code:Q$.boolean().optional().describe("Run chats on a Code Agent (an agent imported from a GitHub repo) with the claude-code harness inside its sandbox, instead of hosted Decopilot. Off by default: it changes the runtime of every such chat, and claude-code flushes whole turns rather than streaming tokens."),auto_assign_report_tasks_to_super_agent:Q$.boolean().optional().describe("When a report import creates a task board item without an assignee, delegate it to the Super Agent automatically instead of leaving it unassigned."),delivery_lanes_enabled:Q$.boolean().optional().describe("Board lanes for shipping: Approved, Merged and Post-deploy Validation sit between In Review and Done, and a merged pull request lands on Merged instead of Done. For teams whose release process continues after the merge. Off by default \u2014 with it off the board and the state machine behave exactly as if the lanes did not exist."),cms_auto_fresh_branch:Q$.boolean().optional().describe("When a user opens the CMS on a branch whose last commit is older than the staleness window (2 days), move the session to a freshly minted branch cut from the default branch. The stale branch is left intact on GitHub. Off by default.")}),mI4=new Set(["reviewer_enabled","cheap_reviewer_model"]);cL=Q$.object({id:Q$.string().describe("Brand context ID"),name:Q$.string().describe("Company name"),domain:Q$.string().describe("Company domain (e.g. example.com)"),overview:Q$.string().describe("Company overview / description"),logo:Q$.string().nullable().optional().describe("Logo URL"),favicon:Q$.string().nullable().optional().describe("Favicon URL"),ogImage:Q$.string().nullable().optional().describe("OG image URL"),fonts:Q$.object({heading:Q$.string().optional().describe("Font family for headings"),body:Q$.string().optional().describe("Font family for body text"),code:Q$.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:Q$.object({primary:Q$.string().optional().describe("Primary brand color (hex)"),secondary:Q$.string().optional().describe("Secondary brand color (hex)"),accent:Q$.string().optional().describe("Accent / highlight color (hex)"),background:Q$.string().optional().describe("Background color (hex)"),foreground:Q$.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:Q$.array(Q$.record(Q$.string(),Q$.unknown())).nullable().optional().describe("Brand images"),metadata:Q$.record(Q$.string(),Q$.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:Q$.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:Q$.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as iN}from"zod";var B81;var eO$=L(()=>{k0();a9();B81=c({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:iN.object({}),outputSchema:iN.object({organizationId:iN.string(),sidebar_items:iN.array(Ur).nullable().optional(),enabled_plugins:iN.array(iN.string()).nullable().optional(),registry_config:Br.nullable().optional(),simple_mode:Or.nullable().optional(),default_home_agents:Dr.nullable().optional(),flags:wr.nullable().optional(),main_agent_id:iN.string().nullable().optional(),createdAt:iN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:iN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.organizationSettings.get(X);if(!Q)return{organizationId:X};return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as KY}from"zod";var O81;var $L$=L(()=>{k0();a9();O81=c({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:KY.object({organizationId:KY.string(),sidebar_items:KY.array(Ur).optional(),enabled_plugins:KY.array(KY.string()).optional(),registry_config:Br.optional(),simple_mode:Or.optional(),default_home_agents:Dr.optional(),flags:wr.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:KY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:KY.object({organizationId:KY.string(),sidebar_items:KY.array(Ur).nullable().optional(),enabled_plugins:KY.array(KY.string()).nullable().optional(),registry_config:Br.nullable().optional(),simple_mode:Or.nullable().optional(),default_home_agents:Dr.nullable().optional(),flags:wr.nullable().optional(),main_agent_id:KY.string().nullable().optional(),createdAt:KY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:KY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(a(Z),await Z.access.check(),s(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let Q=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags,main_agent_id:$.main_agent_id});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as RK}from"zod";var ZL$,L81,D81;var XL$=L(()=>{k0();a9();ZL$=cL.extend({organizationId:RK.string(),archivedAt:RK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:RK.string().describe("ISO 8601 timestamp"),updatedAt:RK.string().describe("ISO 8601 timestamp")}),L81=c({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RK.object({includeArchived:RK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:RK.object({items:RK.array(ZL$)}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),D81=c({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RK.object({id:RK.string().describe("Brand context ID")}),outputSchema:ZL$.extend({organizationId:RK.string()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.get($.id,X);if(!Q)throw Error("Brand context not found");return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});import{z as Az}from"zod";var QL$,w81,E81,j81;var YL$=L(()=>{k0();a9();QL$=cL.extend({organizationId:Az.string(),createdAt:Az.string().describe("ISO 8601 timestamp"),updatedAt:Az.string().describe("ISO 8601 timestamp")}),w81=c({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:cL.omit({id:!0}),outputSchema:QL$,handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.brandContext.create(X,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}),E81=c({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cL.partial().required({id:!0}),outputSchema:QL$,handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");let{id:Y,...G}=$;if(G.isDefault===!0)await Z.storage.brandContext.setDefault(Y,X);let J=await Z.storage.brandContext.update(Y,X,{name:G.name,domain:G.domain,overview:G.overview,logo:G.logo!==void 0?G.logo??null:void 0,favicon:G.favicon!==void 0?G.favicon??null:void 0,ogImage:G.ogImage!==void 0?G.ogImage??null:void 0,fonts:G.fonts!==void 0?G.fonts??null:void 0,colors:G.colors!==void 0?G.colors??null:void 0,images:G.images!==void 0?G.images??null:void 0,metadata:G.metadata!==void 0?G.metadata??null:void 0,archivedAt:G.archivedAt!==void 0?G.archivedAt??null:void 0,isDefault:G.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),j81=c({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Az.object({id:Az.string().describe("Brand context ID")}),outputSchema:Az.object({success:Az.boolean()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,X))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,X,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function P30($,Z,X){let Q=$.trim();if(!Q.startsWith("http"))Q=`https://${Q}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:Q,formats:["branding"]})});if(!Y.ok){let U=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${U.slice(0,200)}`)}let G=await Y.json();if(!G.success||!G.data?.branding)return null;let J=G.data.branding,K=G.data.metadata??{},W=pI4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((U)=>U.trim()).filter(Boolean)?.slice().sort((U,B)=>U.length-B.length)[0]??K.ogSiteName??X??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function pI4($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[F,N]of Object.entries(Q))if(typeof N==="string"&&N&&dI4.has(F))Y[F]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[F,N]of Object.entries(K))if(typeof N==="string"&&N){let U=iI4[F.toLowerCase()];if(U&&!G[U])G[U]=N}let W=$.fonts;if(Array.isArray(W))for(let F of W){let N=F.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:X.logo??null,favicon:X.favicon??null,ogImage:X.ogImage??Z.ogImage??null,fonts:Object.keys(G).length>0?G:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var dI4,iI4;var z81=L(()=>{dI4=new Set(["primary","secondary","accent","background","foreground"]),iI4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as A30}from"zod";var nI4,P81;var GL$=L(()=>{k0();z81();a9();nI4=cL.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:A30.boolean()}),P81=c({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:A30.object({domain:A30.string().describe("Website domain to extract brand from"),brandId:A30.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:nI4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=Z.firecrawlApiKey;if(!Q)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await P30($.domain,Q,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let G={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},J=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,X))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,X,G)})():await Z.storage.brandContext.create(X,G);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function JL$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let X=Object.fromEntries(Object.entries(Z).filter(([Q])=>Q!=="tagline"&&Q!=="tone"));return Object.keys(X).length>0?X:void 0})()}}var A81,T81;var KL$=L(()=>{R$1();k0();A81=c({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:eJ0,outputSchema:so,handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=$.id?await Z.storage.brandContext.get($.id,X):await Z.storage.brandContext.getDefault(X);if(!Q)throw Error($.id?"Brand not found":"No default brand configured");return JL$(Q)}}),T81=c({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:$30,outputSchema:Z30,handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(X)).map(JL$)}}})});import{resolveTxt as tI4}from"dns/promises";function R81($){return`${oI4}.${$.toLowerCase()}`}function WL$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function HL$($,Z,X=tI4){if(!Z)return!1;try{return(await X(R81($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var oI4="_deco-verify";var FL$=()=>{};import{z as h5}from"zod";function lL($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?R81($.domain):null,recordValue:Z?$.verificationToken:null}}function aI4($){let Z=$.toLowerCase().trim();if(!rI4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(IK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var rI4,I81,T30,q81,M81,V81,k81,S81;var NL$=L(()=>{EG();FL$();k0();rI4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,I81=h5.enum(["off","auto","request"]),T30=h5.object({id:h5.string(),domain:h5.string(),joinMode:I81,verificationStatus:h5.enum(["pending","verified"]),verificationMethod:h5.enum(["email","dns"]).nullable(),verifiedAt:h5.string().nullable(),recordName:h5.string().nullable(),recordValue:h5.string().nullable()});q81=c({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:h5.object({}),outputSchema:h5.object({domains:h5.array(T30)}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(lL)}}}),M81=c({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:h5.object({domain:h5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:I81.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:T30,handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=aI4($.domain),G=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(Z.auth.user?.emailVerified)&&G===Q,K=await Z.storage.organizationDomains.getByOrgAndDomain(X.id,Q);if(K){if(K.verificationStatus!=="verified"&&J){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return lL(H)}return lL(K)}let W=J?await Z.storage.organizationDomains.add(X.id,Q,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(X.id,Q,{joinMode:"off",verificationStatus:"pending",verificationToken:WL$()});return lL(W)}}),V81=c({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:h5.object({id:h5.string(),joinMode:I81}),outputSchema:T30,handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if($.joinMode!=="off"&&Q.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return lL(Y)}}),k81=c({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:h5.object({id:h5.string()}),outputSchema:h5.object({verified:h5.boolean(),domain:T30}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");if(Q.verificationStatus==="verified")return{verified:!0,domain:lL(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await HL$(Q.domain,Q.verificationToken))return{verified:!1,domain:lL(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:lL(G)}}}),S81=c({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:h5.object({id:h5.string()}),outputSchema:h5.object({success:h5.boolean()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=await Z.storage.organizationDomains.getById($.id);if(!Q||Q.organizationId!==X.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function mL($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as _9}from"zod";var sI4,C81,_81,v81;var UL$=L(()=>{k0();x4();sI4=_9.object({id:_9.string(),userId:_9.string(),status:_9.enum(["pending","approved","denied"]),createdAt:_9.string(),user:_9.object({id:_9.string(),name:_9.string(),email:_9.string(),image:_9.string().nullable()}).nullable()}),C81=c({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:_9.object({}),outputSchema:_9.object({requests:_9.array(sI4)}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(X.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),_81=c({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:_9.object({requestId:_9.string()}),outputSchema:_9.object({success:_9.boolean()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(!await Z.storage.organizationJoinRequests.decide(Q.id,"approved",Y??Q.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:X.id,userId:Q.userId,role:["user"]})}catch(J){if(!mL(J))throw J}if(Y)h1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),v81=c({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_9.object({requestId:_9.string()}),outputSchema:_9.object({success:_9.boolean()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=await Z.storage.organizationJoinRequests.getById($.requestId);if(!Q||Q.organizationId!==X.id)throw Error("Join request not found");if(Q.status!=="pending")throw Error("Join request has already been decided");let Y=a0(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)h1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as WY}from"zod";var x81;var BL$=L(()=>{x4();k0();XY();x81=c({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:WY.object({organizationId:WY.string().optional(),userId:WY.string(),role:WY.array(WY.string())}),outputSchema:WY.object({id:WY.string(),organizationId:WY.string(),userId:WY.string(),role:WY.union([WY.string(),WY.array(WY.string())]),createdAt:WY.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!SG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:X,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as eh}from"zod";var f81;var OL$=L(()=>{x4();k0();f81=c({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:eh.object({organizationId:eh.string().optional(),memberIdOrEmail:eh.string()}),outputSchema:eh.object({success:eh.boolean(),memberIdOrEmail:eh.string()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(X!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q=await Z.boundAuth.organization.removeMember({organizationId:X,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(Q.member.userId,X);let Y=a0(Z);if(Y)h1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as wX}from"zod";var b81;var LL$=L(()=>{k0();b81=c({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wX.object({limit:wX.number().int().min(1).max(1000).optional(),offset:wX.number().int().min(0).optional()}),outputSchema:wX.object({members:wX.array(wX.object({id:wX.string(),organizationId:wX.string(),userId:wX.string(),role:wX.string(),createdAt:wX.string().datetime().describe("ISO 8601 timestamp"),user:wX.object({id:wX.string(),name:wX.string(),email:wX.string(),image:wX.string().optional()}).optional()}))}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:X,limit:$.limit,offset:$.offset}))?.members??[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as sZ}from"zod";var y81;var DL$=L(()=>{x4();k0();XY();y81=c({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:sZ.object({organizationId:sZ.string().optional(),memberId:sZ.string(),role:sZ.array(sZ.string())}),outputSchema:sZ.object({id:sZ.string(),organizationId:sZ.string(),userId:sZ.string(),role:sZ.union([sZ.string(),sZ.array(sZ.string())]),createdAt:sZ.string().datetime().describe("ISO 8601 timestamp"),user:sZ.object({email:sZ.string(),name:sZ.string(),image:sZ.string().optional()})}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=$.organizationId||Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.db.selectFrom("member").select(["role"]).where("userId","=",a0(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!SG0(Q?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:X,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,X);let G=a0(Z);if(G)h1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function wL$(){if(Er&&Date.now()-Er.fetchedAt<600000)return Er.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),X=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(X)||X<=0)throw Error("Invalid rate");return Er={rate:X,fetchedAt:Date.now()},X}catch{return Er?.rate??5.5}}function EL$($,Z,X){if(Z==="brl")return Math.round($/X);return $}var Er=null;function g81($,Z="",X=new URLSearchParams){for(let[Q,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let G=Z?`${Z}[${Q}]`:Q;if(Array.isArray(Y))Y.forEach((J,K)=>{if(typeof J==="object"&&J!==null)g81(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")g81(Y,G,X);else X.append(G,String(Y))}return X}async function jr($,Z){let X=y0().stripeSecretKey;if(!X)throw new jG(503,"billing is not configured");let Q=Z?.params?g81(Z.params).toString():void 0,Y=await fetch(`${eI4}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout($q4)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new jG(Y.status,J)}return G}function jL$($){return{billing_address_collection:"required",custom_fields:[{key:Zq4,label:{type:"custom",custom:"CPF / CNPJ"},type:"text",optional:!1,text:{minimum_length:Xq4,maximum_length:Qq4}}],...$&&{customer_update:{address:"auto",name:"auto"}}}}async function zL$($){let Z=y0().stripeOrgPriceId;if(!Z)throw new jG(503,"billing is not configured");let X=await jr("/checkout/sessions",{params:{mode:"subscription",...jL$(null),line_items:[{price:Z,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId},subscription_data:{metadata:{orgId:$.organizationId}}}});if(!X.url)throw new jG(500,"checkout session lacks url");return{url:X.url}}function Yq4($,Z){return Math.round($*(1+Z/100))}async function PL$($){let Z=Yq4($.amountCents,$.feePercent),X=EL$($.amountCents,$.currency,await wL$()),Q=y0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:X},G=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,J=await jr("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...jL$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...Q?{product:Q}:{product_data:{name:G}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!J.url)throw new jG(500,"checkout session lacks url");return{url:J.url}}async function R30($){let Z=await jr("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new jG(500,"portal session lacks url");return{url:Z.url}}async function I30($){return jr(`/subscriptions/${encodeURIComponent($)}`)}async function AL$($){await jr(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var eI4="https://api.stripe.com/v1",jG,$q4=15000,Zq4="taxid",Xq4=11,Qq4=18;var Tz=L(()=>{R$();jG=class jG extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});function dL($,Z){let X=`/${encodeURIComponent($)}/settings`;return Z?`${X}/${Z}`:X}import{z as h81}from"zod";var u81;var TL$=L(()=>{Tz();n5();k0();x4();u81=c({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:h81.object({}),outputSchema:h81.object({url:h81.string()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=Z.organization?.id,Q=Z.organization?.slug;if(!X||!Q)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(X);if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let G=`${d9()}${dL(Q,"members")}`,{url:J}=await zL$({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return OG({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as c81}from"zod";var l81;var RL$=L(()=>{Tz();n5();k0();l81=c({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:c81.object({}),outputSchema:c81.object({url:c81.string()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z);if(!X.slug)throw Error("Organization context required");let Q=await Z.storage.organizationBilling.getBilling(X.id);if(!Q?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await R30({customerId:Q.stripeCustomerId,returnUrl:`${d9()}${dL(X.slug,"members")}`})}catch(Y){if(Y instanceof jG)throw Error(Y.message);throw Y}}})});function q30($){return m81[$%m81.length]??Gq4}function HY($){return $.createdBy==="system"}function Kq4($){if($?.reviewer_enabled===void 0&&$?.qa_agent_enabled===!1&&$?.code_reviewer_enabled===!1)return!1;return k7($,"reviewer_enabled")}function pN($){return Kq4($)?wH:[]}function Wq4($){return k7($,"delivery_lanes_enabled")}function jH($){return Wq4($)?"merged":"done"}function pL($,Z){if(!$)return!1;return[EH[Z],...Jq4].some((X)=>$.startsWith(`${X}:`))}function nN($,Z){if(Z)return new Date(Z).getTime();let X=0;for(let Q of $){if(Q.action!=="status_changed")continue;if(Q.data?.to!=="in_review")continue;X=Math.max(X,new Date(Q.occurredAt).getTime())}return X}function nL($,Z){let X=nN($,Z.cycleStartedAt),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="reviewer")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set("reviewer","approved")}else Q.set("reviewer","changes_requested")}return Q}function iL($,Z,X){if(Z.length===0)return!1;let Q=nL($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function qL$($,Z,X){return iL($,Z,X)&&!iL($,Z,{...X,verifiedOnly:!0})}function ML$($){let Z=null;for(let X of $){if(X.action!=="review_approved"&&X.action!=="review_changes_requested")continue;let Q=new Date(X.occurredAt).getTime();if(Z&&Q<Z.at)continue;let Y=X.data?.notes;Z={at:Q,notes:X.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}var J8="super-agent",m81,Gq4,zr='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',IL$,d81="chore",wH,EH,Jq4,Pr="NO VISUAL SURFACE",M30,V30,VL$="task-board.item.updated",kL$="task-board.item.deleted";var h6=L(()=>{a9();m81=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],Gq4=m81[0];IL$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",wH=["reviewer"],EH={reviewer:"Reviewer"},Jq4=["QA Agent","Code Reviewer"];M30=["triage","todo","in_progress","in_review","approved","merged","post_deploy_validation","done","archived"],V30=["approved","merged","post_deploy_validation"]});function i81($){return $==="trial"?"trial":"subscription"}function Ar($,Z,X,Q={}){OG({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function p81($){return $?.status==="active"||$?.status==="past_due"}function k30($,Z){if(p81($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function Tr(){let $=y0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function tL(){return{...Tr(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function $u($,Z,X=Tr()){if(!X.enforced||!HY(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Ar($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new DQ("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=k30(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Ar($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:i81(G.periodKey),limit:G.limit}),new DQ(G.exhaustedReason)}async function SL$($,Z,X=Tr()){if(!X.enforced||!HY(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=k30(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Ar($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:i81(Y.periodKey),limit:Y.limit}),new DQ(Y.exhaustedReason);if(G==="runs_exhausted")throw Ar($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new DQ("runs_exhausted");if(G==="claimed")Ar($,"task_quota_claimed",Z,{billing_mode:i81(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function CL$($,Z,X,Q){if(Q==="skipped")return;await $.rollbackTaskClaim(Z,X,{releaseSlot:Q==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function _L$($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function vL$($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))OG({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var Hq4="[SUBSCRIPTION_REQUIRED]",Fq4,DQ;var cJ=L(()=>{h6();x4();R$();Fq4={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};DQ=class DQ extends Error{reason;constructor($){super(`${Hq4} ${Fq4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as tN}from"zod";var n81;var xL$=L(()=>{k0();cJ();n81=c({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:tN.object({}),outputSchema:tN.object({enforced:tN.boolean(),billingStatus:tN.string(),subscribed:tN.boolean(),hasBillingAccount:tN.boolean(),used:tN.number(),limit:tN.number(),currentPeriodEnd:tN.string().datetime().nullable()}),handler:async($,Z)=>{a(Z),await Z.access.check();let X=s(Z),Q=Tr(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=k30(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:p81(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var fL$=L(()=>{nO$();tO$();oO$();rO$();aO$();eO$();$L$();XL$();YL$();GL$();KL$();NL$();UL$();BL$();OL$();LL$();DL$();TL$();RL$();xL$()});function zH($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function S30($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(S30);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||S30(X)));return!1}function t81($){return Array.isArray($)&&$.every(S30)}function Rr($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||S30(X)))}var FD$="vercel.ai.error",Uq4,bL$,yL$,W1,ND$="AI_APICallError",UD$,Bq4,gL$,hL$,H4,BD$="AI_EmptyResponseBodyError",OD$,Oq4,uL$,cL$,C30,LD$="AI_InvalidArgumentError",DD$,Lq4,lL$,mL$,oL,wD$="AI_InvalidPromptError",ED$,Dq4,dL$,iL$,lJ,jD$="AI_InvalidResponseDataError",zD$,wq4,pL$,nL$,Zu,PD$="AI_JSONParseError",AD$,Eq4,tL$,oL$,oN,TD$="AI_LoadAPIKeyError",RD$,jq4,rL$,aL$,Rz,ID$="AI_LoadSettingError",qD$,zq4,sL$,eL$,MD$,VD$="AI_NoContentGeneratedError",kD$,Pq4,$D$,ZD$,SD$,CD$="AI_NoSuchModelError",_D$,Aq4,XD$,QD$,e5,vD$="AI_TooManyEmbeddingValuesForCallError",xD$,Tq4,YD$,GD$,Xu,fD$="AI_TypeValidationError",bD$,Rq4,JD$,KD$,T5,yD$="AI_UnsupportedFunctionalityError",gD$,Iq4,WD$,HD$,b4;var $$=L(()=>{Uq4=Symbol.for(FD$),W1=class $ extends(yL$=Error,bL$=Uq4,yL$){constructor({name:Z,message:X,cause:Q}){super(X);this[bL$]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,FD$)}static hasMarker(Z,X){let Q=Symbol.for(X);return Z!=null&&typeof Z==="object"&&Q in Z&&typeof Z[Q]==="boolean"&&Z[Q]===!0}},UD$=`vercel.ai.error.${ND$}`,Bq4=Symbol.for(UD$),H4=class extends(hL$=W1,gL$=Bq4,hL$){constructor({message:$,url:Z,requestBodyValues:X,statusCode:Q,responseHeaders:Y,responseBody:G,cause:J,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:W}){super({name:ND$,message:$,cause:J});this[gL$]=!0,this.url=Z,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=Y,this.responseBody=G,this.isRetryable=K,this.data=W}static isInstance($){return W1.hasMarker($,UD$)}},OD$=`vercel.ai.error.${BD$}`,Oq4=Symbol.for(OD$),C30=class extends(cL$=W1,uL$=Oq4,cL$){constructor({message:$="Empty response body"}={}){super({name:BD$,message:$});this[uL$]=!0}static isInstance($){return W1.hasMarker($,OD$)}};DD$=`vercel.ai.error.${LD$}`,Lq4=Symbol.for(DD$),oL=class extends(mL$=W1,lL$=Lq4,mL$){constructor({message:$,cause:Z,argument:X}){super({name:LD$,message:$,cause:Z});this[lL$]=!0,this.argument=X}static isInstance($){return W1.hasMarker($,DD$)}},ED$=`vercel.ai.error.${wD$}`,Dq4=Symbol.for(ED$),lJ=class extends(iL$=W1,dL$=Dq4,iL$){constructor({prompt:$,message:Z,cause:X}){super({name:wD$,message:`Invalid prompt: ${Z}`,cause:X});this[dL$]=!0,this.prompt=$}static isInstance($){return W1.hasMarker($,ED$)}},zD$=`vercel.ai.error.${jD$}`,wq4=Symbol.for(zD$),Zu=class extends(nL$=W1,pL$=wq4,nL$){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:jD$,message:Z});this[pL$]=!0,this.data=$}static isInstance($){return W1.hasMarker($,zD$)}},AD$=`vercel.ai.error.${PD$}`,Eq4=Symbol.for(AD$),oN=class extends(oL$=W1,tL$=Eq4,oL$){constructor({text:$,cause:Z}){super({name:PD$,message:`JSON parsing failed: Text: ${$}.
|
|
2330
2330
|
Error message: ${zH(Z)}`,cause:Z});this[tL$]=!0,this.text=$}static isInstance($){return W1.hasMarker($,AD$)}},RD$=`vercel.ai.error.${TD$}`,jq4=Symbol.for(RD$),Rz=class extends(aL$=W1,rL$=jq4,aL$){constructor({message:$}){super({name:TD$,message:$});this[rL$]=!0}static isInstance($){return W1.hasMarker($,RD$)}},qD$=`vercel.ai.error.${ID$}`,zq4=Symbol.for(qD$),MD$=class extends(eL$=W1,sL$=zq4,eL$){constructor({message:$}){super({name:ID$,message:$});this[sL$]=!0}static isInstance($){return W1.hasMarker($,qD$)}},kD$=`vercel.ai.error.${VD$}`,Pq4=Symbol.for(kD$),SD$=class extends(ZD$=W1,$D$=Pq4,ZD$){constructor({message:$="No content generated."}={}){super({name:VD$,message:$});this[$D$]=!0}static isInstance($){return W1.hasMarker($,kD$)}},_D$=`vercel.ai.error.${CD$}`,Aq4=Symbol.for(_D$),e5=class extends(QD$=W1,XD$=Aq4,QD$){constructor({errorName:$=CD$,modelId:Z,modelType:X,message:Q=`No such ${X}: ${Z}`}){super({name:$,message:Q});this[XD$]=!0,this.modelId=Z,this.modelType=X}static isInstance($){return W1.hasMarker($,_D$)}},xD$=`vercel.ai.error.${vD$}`,Tq4=Symbol.for(xD$),Xu=class extends(GD$=W1,YD$=Tq4,GD$){constructor($){super({name:vD$,message:`Too many values for a single embedding call. The ${$.provider} model "${$.modelId}" can only embed up to ${$.maxEmbeddingsPerCall} values per call, but ${$.values.length} values were provided.`});this[YD$]=!0,this.provider=$.provider,this.modelId=$.modelId,this.maxEmbeddingsPerCall=$.maxEmbeddingsPerCall,this.values=$.values}static isInstance($){return W1.hasMarker($,xD$)}},bD$=`vercel.ai.error.${fD$}`,Rq4=Symbol.for(bD$),T5=class $ extends(KD$=W1,JD$=Rq4,KD$){constructor({value:Z,cause:X,context:Q}){let Y="Type validation failed";if(Q==null?void 0:Q.field)Y+=` for ${Q.field}`;if((Q==null?void 0:Q.entityName)||(Q==null?void 0:Q.entityId)){Y+=" (";let G=[];if(Q.entityName)G.push(Q.entityName);if(Q.entityId)G.push(`id: "${Q.entityId}"`);Y+=G.join(", "),Y+=")"}super({name:fD$,message:`${Y}: Value: ${JSON.stringify(Z)}.
|
|
@@ -4175,7 +4175,7 @@ query LastPublishedPr($owner: String!, $repo: String!, $base: String!) {
|
|
|
4175
4175
|
order by i."createdAt" asc
|
|
4176
4176
|
`.execute($),Y=[];for(let G of Q.rows){if(tZ(G))continue;let{invitationId:J,role:K,metadata:W,...H}=G;await YN1(Z,X.id,H.id,K??"user"),await O10`
|
|
4177
4177
|
update invitation set status = 'accepted' where id = ${J}
|
|
4178
|
-
`.execute($),Y.push(H)}return Y}async function YN1($,Z,X,Q="user"){try{await $.addMember({body:{userId:Z,role:Q,organizationId:X}})}catch(Y){if(!mL(Y))throw Y}}async function T68($,Z){for(let X=0;X<j68;X++){let Q=X===0?"":`-${Math.random().toString(36).slice(2,6)}`;try{return fS6(await $.createOrganization({body:{name:Z.name,slug:`${Z.baseSlug}${Q}`,userId:Z.userId}}))}catch(Y){if(!bS6(Y)||X===j68-1)throw Y}}throw Error("Failed to create organization")}var j68=5,VS6,kS6;var GN1=L(()=>{dM0();VS6=["labs","agent","studio","workspace","systems","core","cloud","works"],kS6=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"]});import{APIError as gS6}from"better-auth/api";function R68($,Z){if(typeof Z!=="string"||Z===$)return;throw new gS6("BAD_REQUEST",{message:"Organization slug cannot be changed after creation."})}var I68=()=>{};var _68={};Z0(_68,{resetPasswordEnabled:()=>nM0,grantDeploymentAdmin:()=>HN1,getTrustedOrigins:()=>tM0,authConfig:()=>e8,auth:()=>X8,GENERIC_EMAIL_DOMAINS:()=>IK});import{randomBytes as hS6}from"crypto";import{sso as uS6}from"@better-auth/sso";import{organization as cS6}from"@decocms/better-auth/plugins";import{betterAuth as lS6}from"better-auth";import{admin as mS6,apiKey as dS6,jwt as iS6,magicLink as pS6,mcp as nS6,openAPI as tS6}from"better-auth/plugins";import{emailOTP as oS6}from"better-auth/plugins/email-otp";import{APIError as V68}from"better-auth/api";import{adminAc as rS6,defaultRoles as aS6}from"better-auth/plugins/admin/access";import{defaultStatements as sS6}from"@decocms/better-auth/plugins/organization/access";import{createAccessControl as eS6}from"@decocms/better-auth/plugins/access";function q68($){if(!z30($))return;throw new V68("BAD_REQUEST",{message:`Organization slug "${String($).trim()}" is reserved by Studio`})}function HN1($){if(!JN1.includes($))JN1.push($)}function tM0(){let $=[L10];try{let Z=new URL(L10);if(Z.hostname==="localhost")$.push(L10.replace("localhost","127.0.0.1"));else if(Z.hostname==="127.0.0.1")$.push(L10.replace("127.0.0.1","localhost"))}catch{}return $}var k68,$C6,pM0,WN1,ZC6,XC6,QC6,M68,JN1,e8,S68=void 0,KN1=void 0,nM0=!1,YC6,GC6,JC6,L10,C68,KC6=262144,WC6,X8;var EG=L(()=>{R$();Rh();tG0();x4();n5();YX();LH$();bh();wH$();K68();H68();F68();XY();$N1();L68();dM0();GN1();K81();I68();k68=Object.values(rj()).map(($)=>$.map((Z)=>Z.name)).flat(),$C6={...sS6,self:["*",...k68]},pM0=eS6($C6),WN1=eF1(k68),ZC6=pM0.newRole(WN1.user),XC6=pM0.newRole(WN1.admin),QC6=pM0.newRole(WN1.owner),M68=Object.values(rj()).map(($)=>$.map((Z)=>`self:${Z.name}`)).flat(),JN1=[];e8=bN().auth;if(e8.inviteEmailProviderId&&e8.emailProviders&&e8.emailProviders.length>0){let $=wK(e8.emailProviders,e8.inviteEmailProviderId);if($){let Z=DK($);S68=async(X)=>{let Q=X.inviter.user?.name||X.inviter.user?.email,Y=`${x5()}/auth/accept-invitation?invitationId=${X.invitation.id}&redirectTo=/${X.organization.slug}`;await Z({to:X.email,subject:`You've been invited to join ${X.organization.name}`,html:EK({preheader:`${Q} has invited you to join ${X.organization.name} on deco Studio.`,heading:"You've been invited",subheading:`<strong>${Q}</strong> has invited you to join <strong>${X.organization.name}</strong> on deco Studio.`,body:Gz("Accept invitation",Y),footnote:"If you weren\u2019t expecting an invitation, you can safely ignore this email."})})}}}if(e8.resetPasswordEmailProviderId&&e8.emailProviders&&e8.emailProviders.length>0){let $=wK(e8.emailProviders,e8.resetPasswordEmailProviderId);if($){let Z=DK($);nM0=!0,KN1=async({user:X,url:Q})=>{await Z({to:X.email,subject:"Reset your password",html:EK({preheader:"We received a request to reset the password on your deco Studio account.",heading:"Reset your password",subheading:"We received a password reset request for your account. Click the button below to choose a new password.",body:Gz("Reset password",Q)+BJ0("This link expires in 24\xA0hours. If you didn\u2019t request a password reset, no action is needed.",!0),footnote:"If you didn\u2019t request a password reset, you can safely ignore this email."})})}}}YC6=[cS6({organizationCreation:{afterCreate:async($)=>{await J68($.organization.id,$.member.userId)}},organizationHooks:{beforeCreateOrganization:async({organization:$})=>{q68($.slug)},beforeUpdateOrganization:async({organization:$,member:Z})=>{if(q68($.slug),typeof $.slug==="string"){let Y=await F8().db.selectFrom("organization").select("slug").where("id","=",Z.organizationId).executeTakeFirst();if(Y)R68(Y.slug,$.slug)}let X=$.logo;if(typeof X!=="string"||!X.startsWith("data:"))return;let Q=await W68(Z.organizationId,X);if(Q===X)return;return{data:{...$,logo:Q}}}},ac:pM0,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:Wo,resourceNameValidation:($)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test($)}}},roles:{user:ZC6,admin:XC6,owner:QC6},sendInvitationEmail:S68}),nS6({loginPage:"/login",oidcConfig:{scopes:M68,metadata:{scopes_supported:M68},loginPage:"/login"}}),dS6({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:($)=>{if($.headers?.get("X-MCP-Session-Auth")==="true")return null;let X=$.headers?.get("Authorization");if(X?.startsWith("Bearer "))return X.replace("Bearer ","").trim();return null},rateLimit:{enabled:!1}}),mS6({defaultRole:"user",adminRoles:["admin","owner"],roles:{...aS6,owner:rS6},adminUserIds:JN1}),tS6(),iS6({jwt:{expirationTime:"5m",definePayload:({user:$})=>({id:$.id,email:$.email,name:$.name,role:$.role})}}),uS6(e8.ssoConfig?O68(e8.ssoConfig):void 0),...e8.magicLinkConfig?.enabled&&e8.emailProviders&&e8.emailProviders.length>0?[pS6(DH$(e8.magicLinkConfig,e8.emailProviders))]:[],...e8.emailOtpConfig?.enabled&&e8.emailProviders&&e8.emailProviders.length>0?[oS6(OH$(e8.emailOtpConfig,e8.emailProviders))]:[]],GC6=$O(),JC6=ri(GC6),L10=x5();C68=y0(),WC6=C68.betterAuthSecret||(()=>{return console.warn("BETTER_AUTH_SECRET not set - generating a random secret (not persistent across restarts)"),hS6(32).toString("base64")})(),X8=lS6({secret:WC6,logger:{log:($,Z,...X)=>{if($==="error"&&Z.includes("validate API key"))return;if($==="error"&&X.some((Y)=>{let G=Y?.statusCode;return typeof G==="number"&&G>=300&&G<400}))return;let Q=`${new Date().toISOString()} ${$.toUpperCase()} [Better Auth]: ${Z}`;if($==="error")console.error(Q,...X);else if($==="warn")console.warn(Q,...X);else console.log(Q,...X)}},baseURL:L10,trustedOrigins:tM0(),database:JC6,socialProviders:e8.socialProviders,...e8.ssoConfig&&{account:{accountLinking:{trustedProviders:[e8.ssoConfig.providerId]}}},emailAndPassword:{enabled:e8.emailAndPassword.enabled,...KN1&&{sendResetPassword:KN1}},rateLimit:{enabled:!C68.disableRateLimit,window:60,max:1e4},plugins:YC6,databaseHooks:{user:{create:{before:async($)=>{let Z=$.name;if(typeof Z==="string"&&Z.trim().length>0)return;let X=w68($.email);if(!X)return;return{data:{...$,name:X}}},after:async($,Z)=>{aF1({id:$.id,email:$.email,name:$.name??null,emailVerified:!!$.emailVerified});let X=Z?.getCookie("studio_signup_ref")??null,Q=Z?.getCookie("studio_signup_src")??null;h1.capture({distinctId:$.id,event:"user_signed_up",properties:{email:$.email,email_domain:$.email?.split("@")[1]?.toLowerCase()??null,email_verified:!!$.emailVerified,has_name:!!$.name,...X?{signup_ref:X}:{},...Q?{signup_src:Q}:{}}});let Y=bN().autoCreateOrganizationOnSignup!==!1;try{let G=await iM0({db:F8().db,authApi:X8.api,user:{id:$.id,email:$.email,name:$.name??null,emailVerified:!!$.emailVerified},allowCreate:Y,createdVia:"signup"});if(G.status==="created")h1.groupIdentify({groupType:"organization",groupKey:G.organization.id,properties:{name:G.organization.name,slug:G.organization.slug,created_at:new Date().toISOString(),created_via:G.createdVia,email_domain:G.domain}}),h1.capture({distinctId:$.id,event:"organization_created",groups:{organization:G.organization.id},properties:{organization_id:G.organization.id,organization_slug:G.organization.slug,name:G.organization.name,created_via:G.createdVia,email_domain:G.domain}});if(G.status==="joined_via_invitation")for(let J of G.organizations)h1.capture({distinctId:$.id,event:"organization_invitation_auto_accepted",groups:{organization:J.id},properties:{organization_id:J.id,organization_slug:J.slug,email_domain:G.domain,joined_via:G.createdVia,invitation_count:G.organizations.length}});if(G.status==="joined")h1.capture({distinctId:$.id,event:"organization_domain_joined",groups:{organization:G.organization.id},properties:{organization_id:G.organization.id,organization_slug:G.organization.slug,email_domain:G.domain,joined_via:G.createdVia}})}catch(G){h1.captureException(G,$.id),console.error("Failed to ensure organization on signup:",G)}}},update:{before:async($)=>{let Z=$.image;if(typeof Z==="string"&&Z.startsWith("data:")&&Z.length>KC6)throw new V68("PAYLOAD_TOO_LARGE",{message:"Avatar image is too large. Upload an image smaller than 5MB."})}}},session:{create:{after:async($)=>{let Z=await F8().db.selectFrom("user").select(["id","email","name","emailVerified"]).where("id","=",$.userId).executeTakeFirst();if(!Z)return;aF1({id:Z.id,email:Z.email,name:Z.name??null,emailVerified:!!Z.emailVerified})}}}}})});function NN1($){return $?`/api/${$}`:""}function v68($){let X=new URL($).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let Q=(Y)=>{let G=new URL($);return G.pathname=Y,G.toString()};return[Q(`${X}/.well-known/oauth-protected-resource`),Q(`/.well-known/oauth-protected-resource${X}`),Q("/.well-known/oauth-protected-resource")]}function x68($){let X=new URL($).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let Q=X!==""&&X!=="/",Y=(G)=>{let J=new URL($);return J.pathname=G,J.toString()};if(Q)return[Y(`/.well-known/oauth-authorization-server${X}`),Y(`/.well-known/openid-configuration${X}`),Y(`${X}/.well-known/openid-configuration`)];return[Y("/.well-known/oauth-authorization-server"),Y("/.well-known/openid-configuration")]}function f68($){return"issuer"in $&&!("resource"in $)&&(("authorization_endpoint"in $)||("token_endpoint"in $))}function b68($){let Z=$.toLowerCase();return Z.includes("resource_metadata=")||Z.includes("invalid_token")||Z.includes("oauth")}function y68($){let Z=$.message?.toLowerCase()??"";return $.status===401||$.code===401||($.message?.includes("401")??!1)||Z.includes("unauthorized")||Z.includes("invalid_token")||Z.includes("api key required")||Z.includes("api-key required")}function g68($,{proxyResourceUrl:Z,proxyAuthServer:X}){return{...$,resource:Z,authorization_servers:[X]}}function UN1({proxyResourceUrl:$,proxyAuthServer:Z,scopesSupported:X=["*"]}){return{resource:$,authorization_servers:[Z],bearer_methods_supported:["header"],scopes_supported:X}}function h68($){return"scopes_supported"in $&&Array.isArray($.scopes_supported)&&$.scopes_supported.length>0?$.scopes_supported:["*"]}function u68($,Z){return{...$,authorization_endpoint:$.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:$.token_endpoint?`${Z}/token`:void 0,registration_endpoint:$.registration_endpoint?`${Z}/register`:void 0}}function c68({origin:$,prefix:Z,connectionId:X}){return`Bearer realm="mcp",resource_metadata="${$}${Z}/mcp/${X}/.well-known/oauth-protected-resource"`}var FN1;var l68=L(()=>{FN1=[404,401,406]});import{oAuthProtectedResourceMetadata as HC6}from"better-auth/plugins";async function FC6($,Z,X){return(await Z.storage.connections.findById($,X))?.connection_url??null}async function i68($,Z={}){try{let X=await ON1($,{method:"POST",headers:{...Z,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-cms-proxy",version:"1.0.0"}}})});if(X.status===401){let Q=X.headers.get("WWW-Authenticate");if(Q){if(b68(Q))return Q}if(await NC6($))return'Bearer realm="mcp"'}return null}catch{return null}}async function NC6($){try{let Z=new URL($),X=new URL("/.well-known/oauth-authorization-server",Z.origin),Q=await ON1(X.toString(),{method:"GET",headers:{Accept:"application/json"}});if(Q.ok){let Y=await Q.json();if(Y.authorization_endpoint||Y.token_endpoint||Y.issuer)return!0}return!1}catch{return!1}}async function Xm($){let Z=v68($),X;for(let Q=0;Q<Z.length;Q++){if(X=await a68(Z[Q],{method:"GET",headers:{Accept:"application/json"}}),X.ok)return X;if(Q<Z.length-1&&!FN1.includes(X.status))return X}return X}async function UC6($){let Z;try{Z=new URL($).origin}catch{return null}try{let X=await Xm($);if(X.ok){let Q=await X.json();if(Q.authorization_servers?.[0])return Q.authorization_servers[0]}}catch{}return Z}async function p68($){let Z=$.get("studioContext");if(!Z)Z=await $3.create($.req.raw),$.set("studioContext",Z);return Z}async function AY1({error:$,reqUrl:Z,connectionId:X,connectionUrl:Q,headers:Y,orgSlug:G}){if(!y68($))return null;if(Boolean(await i68(Q,Y)))return new Response(null,{status:401,headers:{"WWW-Authenticate":c68({origin:Z.origin,prefix:NN1(G),connectionId:X})}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}function m68($){let Q=$.pathname;if(Q.endsWith("/.well-known/oauth-protected-resource"))Q=Q.slice(0,-37)||"/";else if(Q.startsWith("/.well-known/oauth-protected-resource"))Q=Q.slice(37)||"/";return`${$.origin}${Q}`}async function d68($,Z){let X=await HC6(X8)($),Q=await X.json();if(Z)Q.resource=Z;return Response.json(Q,X)}function ON1($,Z,X=r68){return lO()($,{...Z,signal:AbortSignal.timeout(X)})}class BN1{response;constructor($){this.response=$}}async function a68($,Z,{attempts:X=3,timeoutMs:Q=r68}={}){try{return await j6(async()=>{let Y=await ON1($,Z,Q);if(Y.status>=500)throw new BN1(Y);return Y},{maxAttempts:X,minTimeout:150,multiplier:2,jitter:0})}catch(Y){if(Y instanceof iY){if(Y.cause instanceof BN1)return Y.cause.response;throw Y.cause}throw Y}}function s68($){if(!cO($))return null;return new Response(JSON.stringify({error:"URLs targeting private networks are not allowed"}),{status:502,headers:{"Content-Type":"application/json"}})}async function w10($){if(cO($))return new Response(JSON.stringify({error:"URLs targeting private networks are not allowed"}),{status:502,headers:{"Content-Type":"application/json"}});let Z=x68($),X=null;for(let Q of Z){if(X=await a68(Q,{method:"GET",headers:{Accept:"application/json"}}),X.ok)return X;if(X.status!==404&&X.status!==401)return X}return X}var n68=($)=>{if(!($.hostname==="localhost"||$.hostname.endsWith(".localhost")||$.hostname==="127.0.0.1"))$.protocol="https:";return $},D10=async($)=>{let Z=$.req.param("connectionId"),X=await p68($),Q=n68(new URL($.req.url)),Y=$.req.param("org")??X.organization?.slug,G;if(Y)if(X.organization?.id&&X.organization.slug===Y)G=X.organization.id;else{let F=await X.db.selectFrom("organization").select("id").where("slug","=",Y).executeTakeFirst();if(!F)return $.json({error:"Connection not found"},404);G=F.id}if(G&&X.auth?.tokenOrganizationId&&X.auth.tokenOrganizationId!==G)return $.json({error:"forbidden: token is scoped to another organization"},403);if(Z==="self")return d68($.req.raw,m68(Q));let J=await FC6(Z,X,G);if(!J)return $.json({error:"Connection not found"},404);if(J.startsWith("virtual://"))return d68($.req.raw,m68(Q));let K=NN1(Y),W=`${Q.origin}${K}/mcp/${Z}`,H=`${Q.origin}/oauth-proxy/${Z}`;try{let F=await Xm(J);if(!F.ok&&FN1.includes(F.status)){if(await i68(J)){let O=UN1({proxyResourceUrl:W,proxyAuthServer:H});return new Response(JSON.stringify(O),{status:200,headers:{"Content-Type":"application/json"}})}return new Response(F.body,{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}})}if(!F.ok)return new Response(F.body,{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}});let N=await F.json();if(f68(N)){let B=UN1({proxyResourceUrl:W,proxyAuthServer:H,scopesSupported:h68(N)});return new Response(JSON.stringify(B),{status:200,headers:{"Content-Type":"application/json"}})}let U=g68(N,{proxyResourceUrl:W,proxyAuthServer:H});return new Response(JSON.stringify(U),{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}})}catch(F){let N=F;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",N),$.json({error:"Failed to proxy OAuth metadata",message:N.message},502)}},t68=()=>{let $=new U1;return $.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Z)=>D10(Z)),$.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Z)=>D10(Z)),$},o68=()=>{let $=new U1;return $.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Z)=>D10(Z)),$},r68=4000,BC6=async($)=>{let Z=$.req.param("connectionId"),X=await p68($),Q=await X.storage.connections.findById(Z);if(!Q?.connection_url)return $.json({error:"Connection not found or no auth server"},404);let Y=await UC6(Q.connection_url);if(!Y)return $.json({error:"Connection not found or no auth server"},404);let G=await X.db.selectFrom("organization").select("slug").where("id","=",Q.organization_id).executeTakeFirst();try{let J=await w10(Y);if(!J.ok)return new Response(J.body,{status:J.status,statusText:J.statusText,headers:{"Content-Type":"application/json"}});let K=await J.json(),W=n68(new URL($.req.url)),H=G?.slug?`${W.origin}/api/${G.slug}/oauth-proxy/${Z}`:`${W.origin}/oauth-proxy/${Z}`,F=u68(K,H);return new Response(JSON.stringify(F),{status:200,headers:{"Content-Type":"application/json"}})}catch(J){let K=J;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),$.json({error:"Failed to proxy auth server metadata",message:K.message},502)}},e68=()=>{let $=new U1;return $.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",BC6),$};var xs=L(()=>{E8();vD();EG();J4();Rj();l68()});async function Qm($){try{let Z;try{let Q=await Xm($);if(Q.ok)Z=(await Q.json()).authorization_servers?.[0]}catch{}if(!Z)Z=new URL($).origin;let X=await w10(Z);if(X.ok){let Q=await X.json();if(typeof Q.token_endpoint==="string")try{let Y=new URL(Q.token_endpoint);if((Y.protocol==="http:"||Y.protocol==="https:")&&!cO(Q.token_endpoint))return Q.token_endpoint}catch{}}return null}catch{return null}}var oM0=L(()=>{xs();Rj()});function el($){return!!$.refreshToken&&!!$.tokenEndpoint&&!!$.clientId}function OC6($,Z){if($.includes("/oauth-proxy/"))return!0;try{return new URL($).host!==new URL(Z).host}catch{return!1}}async function wC6($,Z){let X=await j3$($);if(!X.success||!X.accessToken){if(X.permanent===!0)await Z.delete($.connectionId).catch((Q)=>{console.warn("[TokenRefresh] failed to delete dead token row",{connectionId:$.connectionId,message:Q instanceof Error?Q.message:String(Q)})});return{accessToken:null,permanent:X.permanent===!0}}try{await Z.upsert({connectionId:$.connectionId,accessToken:X.accessToken,refreshToken:X.refreshToken??$.refreshToken,scope:X.scope??$.scope,expiresAt:X.expiresIn===void 0?null:new Date(Date.now()+X.expiresIn*1000),clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint})}catch(Q){return console.warn("[TokenRefresh] failed to persist refreshed token",{connectionId:$.connectionId,message:Q instanceof Error?Q.message:String(Q)}),{accessToken:X.accessToken,permanent:!1}}return{accessToken:X.accessToken,permanent:!1}}function cM0($,Z){let X=LN1.get($.connectionId);if(X)return X;let Q=rM0.get($.connectionId);if(Q&&Date.now()<Q.nextAttemptAt)return Promise.resolve(null);let Y=wC6($,Z).then(({accessToken:G,permanent:J})=>{if(G||J)rM0.delete($.connectionId);else{let K=rM0.get($.connectionId)?.attempt??0,W=U7(DC6,LC6,K,2,0.5);rM0.set($.connectionId,{attempt:K+1,nextAttemptAt:Date.now()+W})}return G}).finally(()=>{LN1.delete($.connectionId)});return LN1.set($.connectionId,Y),Y}async function RG($){let{connectionId:Z,connectionUrl:X,tokenStorage:Q,force:Y}=$,G=await Q.get(Z);if(!G)return{state:"missing",accessToken:null};let J=el(G),K=J?$.bufferMs??er:0,W=Q.isExpired(G,K);if(!Y&&!W)return{state:"valid",accessToken:G.accessToken};if(!J){if(W)await Q.delete(Z);return{state:"expired_without_refresh",accessToken:null}}let H=G.tokenEndpoint;if(X&&H&&OC6(H,X)){let N=await Qm(X);if(N)H=N}let F=await cM0({...G,tokenEndpoint:H},Q);if(!F)return{state:"refresh_failed",accessToken:null};return{state:"refreshed",accessToken:F}}var er=300000,dP$=3300000,w9="GitHub token refresh failed \u2014 reconnect the mcp-github integration.",LN1,LC6=30000,DC6=300000,rM0;var pJ=L(()=>{J4();z3$();oM0();LN1=new Map,rM0=new Map});import{SpanStatusCode as $58}from"@opentelemetry/api";function DN1($){if(Array.isArray($))return $.map(DN1);if($&&typeof $==="object"){let{__binding:Z,...X}=$,Q={};for(let[Y,G]of Object.entries(X))Q[Y]=DN1(G);return Q}return $}async function wN1($,Z,X){return Z.tracer.startActiveSpan("studio.connection.build_headers",{attributes:{"connection.id":$.id}},async(Q)=>{try{let Y=await EC6($,Z,X);return Q.setStatus({code:$58.OK}),Y}catch(Y){throw Q.setStatus({code:$58.ERROR,message:Y.message}),Q.recordException(Y),Y}finally{Q.end()}})}async function EC6($,Z,X){let Q=$.id,Y=j01($.configuration_state,$.configuration_scopes),G=Z.auth.user,J=G?.id??Z.auth.apiKey?.userId??(X?$.created_by:void 0),[K,W]=J?await C$$({sub:J,user:{id:J,email:G?.email,name:G?.name,role:G?.role},metadata:{state:$.configuration_state?DN1($.configuration_state):void 0,studioUrl:Z.baseUrl,meshUrl:Z.baseUrl,connectionId:Q,organizationId:Z.organization?.id,organizationName:Z.organization?.name,organizationSlug:Z.organization?.slug},permissions:Y}).then((O)=>[O,null]).catch((O)=>[null,O]):[null,Error("User ID required to issue configuration token")];if(W)console.error("Failed to issue configuration token:",W);let H=Z.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Z.metadata.wellKnownForwardableHeaders??{},"x-request-id":Z.metadata.requestId};if(Z.metadata.runMetadata&&Object.keys(Z.metadata.runMetadata).length>0)D01(F,"runMetadata",JSON.stringify(Z.metadata.runMetadata));let N=null;if(!!g5($)?.sourceConnectionId)try{N=await sr(Z,$)}catch(O){console.error("[Proxy] repo-scoped legacy token mint failed",{connectionId:Q,error:O.message})}else{let O=new a6(Z.db,Z.vault),D=await RG({connectionId:Q,connectionUrl:$.connection_url,tokenStorage:O});if(D.accessToken)N=D.accessToken;else if(D.state==="expired_without_refresh")console.warn(`[Proxy] Token expired for ${Q} with no refresh capability`)}if(!N&&$.connection_token)N=$.connection_token;if(N)F.Authorization=`Bearer ${N}`;if(K)D01(F,"token",K);return F}var Z58=L(()=>{z01();PO();pJ();gJ();Du();GY();w01()});function aM0(){let $=new Map;function Z(Q,Y){let G=$.get(Y);if(G)return G;let J=(async()=>{let K=await Q(),W=new n9({name:`outbound-client-${Y}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}},jsonSchemaValidator:z5});return W.onclose=()=>{$.delete(Y)},await W.connect(K),W})().catch((K)=>{throw $.delete(Y),K});return $.set(Y,J),J}return Object.assign(Z,{[Symbol.asyncDispose]:async()=>{let Q=[];for(let[Y,G]of $)Q.push(G.then((J)=>J.close()).catch(()=>{}));await Promise.all(Q),$.clear()}})}var EN1=L(()=>{tW();KQ()});function X58($){let Z=new xo({command:$.command,args:$.args,env:$.env,cwd:$.cwd,stderr:"pipe"}),X=$.name||$.id,Q="\x1B[2m",Y="\x1B[0m";return Z.stderr?.on("data",(G)=>{let J=G.toString().trimEnd();if(J)console.error(`${J} \x1B[2m[${X}]\x1B[0m`)}),Z}var Q58=L(()=>{o11()});var Ym;var Y58=L(()=>{YY();sj();KQ();Ym=class Ym extends Qg{options;constructor($,Z){super($);this.options=Z}toolsListPromise=null;fetchToolsFromServer(){if(!this.toolsListPromise)this.toolsListPromise=new Promise(($)=>{let Z=`auth-tools-${Date.now()}`,X=this.innerTransport.onmessage,Q=(G)=>{clearTimeout(Y),this.innerTransport.onmessage=X,this.toolsListPromise=null,$(G)},Y=setTimeout(()=>Q(null),UY0);this.innerTransport.onmessage=(G)=>{if("id"in G&&G.id===Z)if("result"in G){let J=G.result?.tools??null;Q(J)}else Q(null);else X?.(G)},this.innerTransport.send({jsonrpc:"2.0",id:Z,method:"tools/list",params:{}}).catch(()=>Q(null))});return this.toolsListPromise}async ensureToolsMap(){let $=this.options.cache??L9(),Z=await vL("tools",this.options.connection.id,async()=>{let X=await this.fetchToolsFromServer();if(X===null)throw Error("Failed to fetch tools list");return X},$,(X)=>this.options.ctx.pendingRevalidations.push(X),_L);if(!Z)return new Map;return new Map(Z.map((X)=>[X.name,X]))}async handleOutgoingMessage($){if(!this.isRequest($))return this.innerTransport.send($);let Z=$;if(Z.method==="tools/call")await this.authorizeToolCall(Z),this.stripMetaFromArguments(Z);return this.innerTransport.send($)}async authorizeToolCall($){if(this.options.superUser)return;let X=$.params.name,{ctx:Q,connection:Y}=this.options;if(await this.isPublicTool(X))return;if(!Q.auth.user?.id&&!Q.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let G=async()=>{return(await this.ensureToolsMap()).get(X)?._meta};await new aj(Q.auth.user?.id??Q.auth.apiKey?.userId,X,Q.boundAuth,Q.organization?.role??Q.auth.user?.role,Y.id,G,Q.organization?.id).check(X)}async isPublicTool($){if($.startsWith("STUDIO_PUBLIC_")||$.startsWith("MESH_PUBLIC_"))return!0;let X=(await this.ensureToolsMap()).get($);if(!X?._meta)return!1;return YH(X._meta)?.public_tool===!0}stripMetaFromArguments($){let Z=$.params;if(Z.arguments&&"_meta"in Z.arguments){let{_meta:X,...Q}=Z.arguments;Z.arguments=Q}}}});function jN1($){let{ctx:Z,organizationId:X,connectionId:Q,toolName:Y,durationMs:G,isError:J}=$;if(!X||!Q||!Y)return;let K={"tool.name":Y,"organization.id":X,"connection.id":Q,status:J?"error":"success","error.type":J?$.errorType||"Error":""};Z.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(G,K),Z.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,K)}import{trace as JoZ,context as KoZ}from"@opentelemetry/api";function G58($){if(!$.isError)return;let Z=$.content;if(!Array.isArray(Z))return;for(let X of Z)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function J58($){if(!$)return;let Z=$._meta;if(!Z||typeof Z!=="object"||Array.isArray(Z))return;let X=Z.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let Q={};for(let[Y,G]of Object.entries(X))if(typeof G==="string")Q[Y]=G;return Object.keys(Q).length>0?Q:void 0}function K58($,Z){if(!$&&!Z)return;if(!$)return Z;if(!Z)return $;return{...Z,...$}}var W58=L(()=>{lT0();$G()});import{trace as jC6,context as H58}from"@opentelemetry/api";var Gm;var F58=L(()=>{KQ();lT0();W58();Gm=class Gm extends Qg{options;inflightRequests=new Map;requestContext;constructor($,Z){super($);this.options=Z;this.requestContext=H58.active()}async handleOutgoingMessage($){if(this.isRequest($)){let Z=$;this.onRequestStart(Z)}return this.innerTransport.send($)}handleIncomingMessage($){if(this.isResponse($)){let Z=$;this.onResponseEnd(Z)}this.onmessage?.($)}onRequestStart($){let{ctx:Z,connectionId:X}=this.options,Q,Y;if($.method==="tools/call"&&$.params){let J=$.params;Q=J.name,Y=J.arguments}let G;if($.method==="tools/call"&&Q)G=Z.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":Q,"request.id":Z.metadata.requestId,"jsonrpc.id":$.id,"jsonrpc.method":$.method}},this.requestContext);if($.id!==null&&$.id!==void 0)this.inflightRequests.set($.id,{startTime:Date.now(),method:$.method,toolName:Q,toolArguments:Y,span:G})}onResponseEnd($){if($.id===null||$.id===void 0)return;let Z=this.inflightRequests.get($.id);if(!Z)return;let{ctx:X,connectionId:Q}=this.options,{startTime:Y,method:G,toolName:J,toolArguments:K,span:W}=Z,H=Date.now()-Y;if(this.inflightRequests.delete($.id),G!=="tools/call"||!J)return;let F=X.organization?.id??"",N="error"in $,U=N?$.error:$.result,B=N?{content:[{type:"text",text:$.error?.message||"Unknown error"}],isError:!0}:U,O=N||B?.isError===!0,D=N?$.error?.message:void 0,w=G58(B)||null;if(X.meter.createHistogram("connection.proxy.duration").record(H,{"connection.id":Q,"organization.id":F,"tool.name":J,status:O?"error":"success"}),O)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":Q,"organization.id":F,"tool.name":J,error:D??w??void 0});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":Q,"organization.id":F,"tool.name":J,status:"success"});if(F)jN1({ctx:X,organizationId:F,connectionId:Q,toolName:J,durationMs:H,isError:O,errorType:N?"RemoteError":O?"ToolError":""});if(W){if(O)W.recordException(Error(D??w??"Tool error"));let E=J58(K),j=K58(X.metadata.properties,E),z=jC6.setSpan(H58.active(),W);js({organizationId:X.organization?.id??"",connectionId:Q,toolName:J,toolArguments:K,result:B,duration:H,isError:O,errorMessage:w,userId:X.auth.user?.id||X.auth.apiKey?.userId||null,requestId:X.metadata.requestId,userAgent:X.metadata.userAgent||null,virtualMcpId:this.options.virtualMcpId||null,properties:j||null},z),W.end()}}async close(){for(let $ of this.inflightRequests.values())if($.span)$.span.setAttributes({"transport.closed":!0}),$.span.end();return this.inflightRequests.clear(),super.close()}}});var N58=L(()=>{KQ();Y58();F58()});async function U58($,Z,X=!1){let Q=$.id,Y=Z.connectionId&&Z.connectionId!==Q?Z.connectionId:void 0;switch($.connection_type){case"STDIO":{if(!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=$.connection_headers;if(!cW(G))throw Error("STDIO connection missing parameters");let J=X58({id:Q,name:$.title,command:G.command,args:G.args,env:G.envVars,cwd:G.cwd});return J=Yg(J,(K)=>new Ym(K,{ctx:Z,connection:$,superUser:X}),(K)=>new Gm(K,{ctx:Z,connectionId:Q,virtualMcpId:Y})),zC6(()=>J,Q)}case"HTTP":case"Websocket":{if(!$.connection_url)throw Error(`${$.connection_type} connection missing URL`);let G=$.connection_url;return Z.getOrCreateClient(async()=>{let J=await wN1($,Z,X),K=$.connection_headers;if(K&&"headers"in K)Object.assign(J,K.headers);let W=new rW(new URL(G),{requestInit:{headers:J}});return W=Yg(W,(H)=>new Ym(H,{ctx:Z,connection:$,superUser:X}),(H)=>new Gm(H,{ctx:Z,connectionId:Q,virtualMcpId:Y})),W},Q)}case"SSE":{if(!$.connection_url)throw Error("SSE connection missing URL");let G=$.connection_url;return Z.getOrCreateClient(async()=>{let J=await wN1($,Z,X),K=$.connection_headers;if(K&&"headers"in K)Object.assign(J,K.headers);let W=new SN(new URL(G),{requestInit:{headers:J}});return W=Yg(W,(H)=>new Ym(H,{ctx:Z,connection:$,superUser:X}),(H)=>new Gm(H,{ctx:Z,connectionId:Q,virtualMcpId:Y})),W},Q)}default:throw Error(`Unknown connection type: ${$.connection_type}`)}}var zC6;var B58=L(()=>{R$();mW();un();Ng();Z58();EN1();Q58();N58();zC6=aM0()});var iP$={};Z0(iP$,{clientFromConnection:()=>P5});async function P5($,Z,X=!1){if($.connection_type==="VIRTUAL")return _k$($,Z,X);return U58($,Z,X)}var io=L(()=>{B58();lu()});function zN1($){if($===null)return"null";if(Array.isArray($))return"array";return typeof $}function PC6($,Z){if(Z==="integer")return typeof $==="number"&&Number.isInteger($);return zN1($)===Z}function AC6($,Z){if(Z==="object"||Z==="array"){let X;try{X=JSON.parse($)}catch{return}return zN1(X)===Z?X:void 0}if(Z==="boolean"){if($==="true")return!0;if($==="false")return!1;return}if(Z==="number"||Z==="integer"){if($.trim()==="")return;let X=Number($);if(!Number.isFinite(X))return;if(Z==="integer"&&!Number.isInteger(X))return;return X}return}function O58($,Z){if(!$?.properties||!Z)return null;let X=!1,Q={...Z};for(let[Y,G]of Object.entries(Z)){if(typeof G!=="string")continue;let J=$.properties[Y]?.type;if(!J||J==="string")continue;let K=AC6(G,J);if(K===void 0)continue;Q[Y]=K,X=!0}return X?Q:null}function PN1($,Z,X){let Q=Object.keys(X??{}),Y=Z?.required??[],G=Y.filter((H)=>!Q.includes(H)),J=(H)=>{let F=Z?.properties?.[H]?.type;return F?`${H} (${F})`:H},K=Q.filter((H)=>{let F=Z?.properties?.[H]?.type;return F!=null&&!PC6(X?.[H],F)}).map((H)=>`${H} (expected ${Z?.properties?.[H]?.type}, got ${zN1(X?.[H])})`);return[`Invalid arguments for "${$}".`,Y.length?`Required: ${Y.map(J).join(", ")}.`:"",`You sent: ${Q.length?Q.join(", "):"(none)"}.`,G.length?`Missing required: ${G.join(", ")}.`:"",K.length?`Wrong type: ${K.join(", ")}.`:""].filter(Boolean).join(" ")}function L58($,Z,X,Q){if(!($ instanceof j1)||$.code!==V1.InvalidParams)return $;if(!Z)return $;let Y=PN1(Z,X,Q),G=$.message.replace(/^MCP error -?\d+: /,"");return new j1(V1.InvalidParams,`${G}
|
|
4178
|
+
`.execute($),Y.push(H)}return Y}async function YN1($,Z,X,Q="user"){try{await $.addMember({body:{userId:Z,role:Q,organizationId:X}})}catch(Y){if(!mL(Y))throw Y}}async function T68($,Z){for(let X=0;X<j68;X++){let Q=X===0?"":`-${Math.random().toString(36).slice(2,6)}`;try{return fS6(await $.createOrganization({body:{name:Z.name,slug:`${Z.baseSlug}${Q}`,userId:Z.userId}}))}catch(Y){if(!bS6(Y)||X===j68-1)throw Y}}throw Error("Failed to create organization")}var j68=5,VS6,kS6;var GN1=L(()=>{dM0();VS6=["labs","agent","studio","workspace","systems","core","cloud","works"],kS6=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"]});import{APIError as gS6}from"better-auth/api";function R68($,Z){if(typeof Z!=="string"||Z===$)return;throw new gS6("BAD_REQUEST",{message:"Organization slug cannot be changed after creation."})}var I68=()=>{};var _68={};Z0(_68,{resetPasswordEnabled:()=>nM0,grantDeploymentAdmin:()=>HN1,getTrustedOrigins:()=>tM0,authConfig:()=>e8,auth:()=>X8,GENERIC_EMAIL_DOMAINS:()=>IK});import{randomBytes as hS6}from"crypto";import{sso as uS6}from"@better-auth/sso";import{organization as cS6}from"@decocms/better-auth/plugins";import{betterAuth as lS6}from"better-auth";import{admin as mS6,apiKey as dS6,jwt as iS6,magicLink as pS6,mcp as nS6,openAPI as tS6}from"better-auth/plugins";import{emailOTP as oS6}from"better-auth/plugins/email-otp";import{APIError as V68}from"better-auth/api";import{adminAc as rS6,defaultRoles as aS6}from"better-auth/plugins/admin/access";import{defaultStatements as sS6}from"@decocms/better-auth/plugins/organization/access";import{createAccessControl as eS6}from"@decocms/better-auth/plugins/access";function q68($){if(!z30($))return;throw new V68("BAD_REQUEST",{message:`Organization slug "${String($).trim()}" is reserved by Studio`})}function HN1($){if(!JN1.includes($))JN1.push($)}function tM0(){let $=[L10];try{let Z=new URL(L10);if(Z.hostname==="localhost")$.push(L10.replace("localhost","127.0.0.1"));else if(Z.hostname==="127.0.0.1")$.push(L10.replace("127.0.0.1","localhost"))}catch{}return $}var k68,$C6,pM0,WN1,ZC6,XC6,QC6,M68,JN1,e8,S68=void 0,KN1=void 0,nM0=!1,YC6,GC6,JC6,L10,C68,KC6=262144,WC6,X8;var EG=L(()=>{R$();Rh();tG0();x4();n5();YX();LH$();bh();wH$();K68();H68();F68();XY();$N1();L68();dM0();GN1();K81();I68();k68=Object.values(rj()).map(($)=>$.map((Z)=>Z.name)).flat(),$C6={...sS6,self:["*",...k68]},pM0=eS6($C6),WN1=eF1(k68),ZC6=pM0.newRole(WN1.user),XC6=pM0.newRole(WN1.admin),QC6=pM0.newRole(WN1.owner),M68=Object.values(rj()).map(($)=>$.map((Z)=>`self:${Z.name}`)).flat(),JN1=[];e8=bN().auth;if(e8.inviteEmailProviderId&&e8.emailProviders&&e8.emailProviders.length>0){let $=wK(e8.emailProviders,e8.inviteEmailProviderId);if($){let Z=DK($);S68=async(X)=>{let Q=X.inviter.user?.name||X.inviter.user?.email,Y=`${x5()}/auth/accept-invitation?invitationId=${X.invitation.id}&redirectTo=/${X.organization.slug}`;await Z({to:X.email,subject:`You've been invited to join ${X.organization.name}`,html:EK({preheader:`${Q} has invited you to join ${X.organization.name} on deco Studio.`,heading:"You've been invited",subheading:`<strong>${Q}</strong> has invited you to join <strong>${X.organization.name}</strong> on deco Studio.`,body:Gz("Accept invitation",Y),footnote:"If you weren\u2019t expecting an invitation, you can safely ignore this email."})})}}}if(e8.resetPasswordEmailProviderId&&e8.emailProviders&&e8.emailProviders.length>0){let $=wK(e8.emailProviders,e8.resetPasswordEmailProviderId);if($){let Z=DK($);nM0=!0,KN1=async({user:X,url:Q})=>{await Z({to:X.email,subject:"Reset your password",html:EK({preheader:"We received a request to reset the password on your deco Studio account.",heading:"Reset your password",subheading:"We received a password reset request for your account. Click the button below to choose a new password.",body:Gz("Reset password",Q)+BJ0("This link expires in 24\xA0hours. If you didn\u2019t request a password reset, no action is needed.",!0),footnote:"If you didn\u2019t request a password reset, you can safely ignore this email."})})}}}YC6=[cS6({organizationCreation:{afterCreate:async($)=>{await J68($.organization.id,$.member.userId)}},organizationHooks:{beforeCreateOrganization:async({organization:$})=>{q68($.slug)},beforeUpdateOrganization:async({organization:$,member:Z})=>{if(q68($.slug),typeof $.slug==="string"){let Y=await F8().db.selectFrom("organization").select("slug").where("id","=",Z.organizationId).executeTakeFirst();if(Y)R68(Y.slug,$.slug)}let X=$.logo;if(typeof X!=="string"||!X.startsWith("data:"))return;let Q=await W68(Z.organizationId,X);if(Q===X)return;return{data:{...$,logo:Q}}}},ac:pM0,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:Wo,resourceNameValidation:($)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test($)}}},roles:{user:ZC6,admin:XC6,owner:QC6},sendInvitationEmail:S68}),nS6({loginPage:"/login",oidcConfig:{scopes:M68,metadata:{scopes_supported:M68},loginPage:"/login"}}),dS6({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:($)=>{if($.headers?.get("X-MCP-Session-Auth")==="true")return null;let X=$.headers?.get("Authorization");if(X?.startsWith("Bearer "))return X.replace("Bearer ","").trim();return null},rateLimit:{enabled:!1}}),mS6({defaultRole:"user",adminRoles:["admin","owner"],roles:{...aS6,owner:rS6},adminUserIds:JN1}),tS6(),iS6({jwt:{expirationTime:"5m",definePayload:({user:$})=>({id:$.id,email:$.email,name:$.name,role:$.role})}}),uS6(e8.ssoConfig?O68(e8.ssoConfig):void 0),...e8.magicLinkConfig?.enabled&&e8.emailProviders&&e8.emailProviders.length>0?[pS6(DH$(e8.magicLinkConfig,e8.emailProviders))]:[],...e8.emailOtpConfig?.enabled&&e8.emailProviders&&e8.emailProviders.length>0?[oS6(OH$(e8.emailOtpConfig,e8.emailProviders))]:[]],GC6=$O(),JC6=ri(GC6),L10=x5();C68=y0(),WC6=C68.betterAuthSecret||(()=>{return console.warn("BETTER_AUTH_SECRET not set - generating a random secret (not persistent across restarts)"),hS6(32).toString("base64")})(),X8=lS6({secret:WC6,logger:{log:($,Z,...X)=>{if($==="error"&&Z.includes("validate API key"))return;if($==="error"&&X.some((Y)=>{let G=Y?.statusCode;return typeof G==="number"&&G>=300&&G<400}))return;let Q=`${new Date().toISOString()} ${$.toUpperCase()} [Better Auth]: ${Z}`;if($==="error")console.error(Q,...X);else if($==="warn")console.warn(Q,...X);else console.log(Q,...X)}},baseURL:L10,trustedOrigins:tM0(),database:JC6,socialProviders:e8.socialProviders,...e8.ssoConfig&&{account:{accountLinking:{trustedProviders:[e8.ssoConfig.providerId]}}},emailAndPassword:{enabled:e8.emailAndPassword.enabled,...KN1&&{sendResetPassword:KN1}},rateLimit:{enabled:!C68.disableRateLimit,window:60,max:1e4},plugins:YC6,databaseHooks:{user:{create:{before:async($)=>{let Z=$.name;if(typeof Z==="string"&&Z.trim().length>0)return;let X=w68($.email);if(!X)return;return{data:{...$,name:X}}},after:async($,Z)=>{aF1({id:$.id,email:$.email,name:$.name??null,emailVerified:!!$.emailVerified});let X=Z?.getCookie("studio_signup_ref")??null,Q=Z?.getCookie("studio_signup_src")??null;h1.capture({distinctId:$.id,event:"user_signed_up",properties:{email:$.email,email_domain:$.email?.split("@")[1]?.toLowerCase()??null,email_verified:!!$.emailVerified,has_name:!!$.name,...X?{signup_ref:X}:{},...Q?{signup_src:Q}:{}}});let Y=bN().autoCreateOrganizationOnSignup!==!1;try{let G=await iM0({db:F8().db,authApi:X8.api,user:{id:$.id,email:$.email,name:$.name??null,emailVerified:!!$.emailVerified},allowCreate:Y,createdVia:"signup"});if(G.status==="created")h1.groupIdentify({groupType:"organization",groupKey:G.organization.id,properties:{name:G.organization.name,slug:G.organization.slug,created_at:new Date().toISOString(),created_via:G.createdVia,email_domain:G.domain}}),h1.capture({distinctId:$.id,event:"organization_created",groups:{organization:G.organization.id},properties:{organization_id:G.organization.id,organization_slug:G.organization.slug,name:G.organization.name,created_via:G.createdVia,email_domain:G.domain}});if(G.status==="joined_via_invitation")for(let J of G.organizations)h1.capture({distinctId:$.id,event:"organization_invitation_auto_accepted",groups:{organization:J.id},properties:{organization_id:J.id,organization_slug:J.slug,email_domain:G.domain,joined_via:G.createdVia,invitation_count:G.organizations.length}});if(G.status==="joined")h1.capture({distinctId:$.id,event:"organization_domain_joined",groups:{organization:G.organization.id},properties:{organization_id:G.organization.id,organization_slug:G.organization.slug,email_domain:G.domain,joined_via:G.createdVia}})}catch(G){h1.captureException(G,$.id),console.error("Failed to ensure organization on signup:",G)}}},update:{before:async($)=>{let Z=$.image;if(typeof Z==="string"&&Z.startsWith("data:")&&Z.length>KC6)throw new V68("PAYLOAD_TOO_LARGE",{message:"Avatar image is too large. Upload an image smaller than 5MB."})}}},session:{create:{after:async($)=>{let Z=await F8().db.selectFrom("user").select(["id","email","name","emailVerified"]).where("id","=",$.userId).executeTakeFirst();if(!Z)return;aF1({id:Z.id,email:Z.email,name:Z.name??null,emailVerified:!!Z.emailVerified})}}}}})});function NN1($){return $?`/api/${$}`:""}function v68($){let X=new URL($).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let Q=(Y)=>{let G=new URL($);return G.pathname=Y,G.toString()};return[Q(`${X}/.well-known/oauth-protected-resource`),Q(`/.well-known/oauth-protected-resource${X}`),Q("/.well-known/oauth-protected-resource")]}function x68($){let X=new URL($).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let Q=X!==""&&X!=="/",Y=(G)=>{let J=new URL($);return J.pathname=G,J.toString()};if(Q)return[Y(`/.well-known/oauth-authorization-server${X}`),Y(`/.well-known/openid-configuration${X}`),Y(`${X}/.well-known/openid-configuration`)];return[Y("/.well-known/oauth-authorization-server"),Y("/.well-known/openid-configuration")]}function f68($){return"issuer"in $&&!("resource"in $)&&(("authorization_endpoint"in $)||("token_endpoint"in $))}function b68($){let Z=$.toLowerCase();return Z.includes("resource_metadata=")||Z.includes("invalid_token")||Z.includes("oauth")}function y68($){let Z=$.message?.toLowerCase()??"";return $.status===401||$.code===401||($.message?.includes("401")??!1)||Z.includes("unauthorized")||Z.includes("invalid_token")||Z.includes("api key required")||Z.includes("api-key required")}function g68($,{proxyResourceUrl:Z,proxyAuthServer:X}){return{...$,resource:Z,authorization_servers:[X]}}function UN1({proxyResourceUrl:$,proxyAuthServer:Z,scopesSupported:X=["*"]}){return{resource:$,authorization_servers:[Z],bearer_methods_supported:["header"],scopes_supported:X}}function h68($){return"scopes_supported"in $&&Array.isArray($.scopes_supported)&&$.scopes_supported.length>0?$.scopes_supported:["*"]}function u68($,Z){return{...$,authorization_endpoint:$.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:$.token_endpoint?`${Z}/token`:void 0,registration_endpoint:$.registration_endpoint?`${Z}/register`:void 0}}function c68({origin:$,prefix:Z,connectionId:X}){return`Bearer realm="mcp",resource_metadata="${$}${Z}/mcp/${X}/.well-known/oauth-protected-resource"`}var FN1;var l68=L(()=>{FN1=[404,401,406]});import{oAuthProtectedResourceMetadata as HC6}from"better-auth/plugins";async function FC6($,Z,X){return(await Z.storage.connections.findById($,X))?.connection_url??null}async function i68($,Z={}){try{let X=await ON1($,{method:"POST",headers:{...Z,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-cms-proxy",version:"1.0.0"}}})});if(X.status===401){let Q=X.headers.get("WWW-Authenticate");if(Q){if(b68(Q))return Q}if(await NC6($))return'Bearer realm="mcp"'}return null}catch{return null}}async function NC6($){try{let Z=new URL($),X=new URL("/.well-known/oauth-authorization-server",Z.origin),Q=await ON1(X.toString(),{method:"GET",headers:{Accept:"application/json"}});if(Q.ok){let Y=await Q.json();if(Y.authorization_endpoint||Y.token_endpoint||Y.issuer)return!0}return!1}catch{return!1}}async function Xm($){let Z=v68($),X;for(let Q=0;Q<Z.length;Q++){if(X=await a68(Z[Q],{method:"GET",headers:{Accept:"application/json"}}),X.ok)return X;if(Q<Z.length-1&&!FN1.includes(X.status))return X}return X}async function UC6($){let Z;try{Z=new URL($).origin}catch{return null}try{let X=await Xm($);if(X.ok){let Q=await X.json();if(Q.authorization_servers?.[0])return Q.authorization_servers[0]}}catch{}return Z}async function p68($){let Z=$.get("studioContext");if(!Z)Z=await $3.create($.req.raw),$.set("studioContext",Z);return Z}async function AY1({error:$,reqUrl:Z,connectionId:X,connectionUrl:Q,headers:Y,orgSlug:G}){if(!y68($))return null;if(Boolean(await i68(Q,Y)))return new Response(null,{status:401,headers:{"WWW-Authenticate":c68({origin:Z.origin,prefix:NN1(G),connectionId:X})}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}function m68($){let Q=$.pathname;if(Q.endsWith("/.well-known/oauth-protected-resource"))Q=Q.slice(0,-37)||"/";else if(Q.startsWith("/.well-known/oauth-protected-resource"))Q=Q.slice(37)||"/";return`${$.origin}${Q}`}async function d68($,Z){let X=await HC6(X8)($),Q=await X.json();if(Z)Q.resource=Z;return Response.json(Q,X)}function ON1($,Z,X=r68){return lO()($,{...Z,signal:AbortSignal.timeout(X)})}class BN1{response;constructor($){this.response=$}}async function a68($,Z,{attempts:X=3,timeoutMs:Q=r68}={}){try{return await j6(async()=>{let Y=await ON1($,Z,Q);if(Y.status>=500)throw new BN1(Y);return Y},{maxAttempts:X,minTimeout:150,multiplier:2,jitter:0})}catch(Y){if(Y instanceof iY){if(Y.cause instanceof BN1)return Y.cause.response;throw Y.cause}throw Y}}function s68($){if(!cO($))return null;return new Response(JSON.stringify({error:"URLs targeting private networks are not allowed"}),{status:502,headers:{"Content-Type":"application/json"}})}async function w10($){if(cO($))return new Response(JSON.stringify({error:"URLs targeting private networks are not allowed"}),{status:502,headers:{"Content-Type":"application/json"}});let Z=x68($),X=null;for(let Q of Z){if(X=await a68(Q,{method:"GET",headers:{Accept:"application/json"}}),X.ok)return X;if(X.status!==404&&X.status!==401)return X}return X}var n68=($)=>{if(!($.hostname==="localhost"||$.hostname.endsWith(".localhost")||$.hostname==="127.0.0.1"))$.protocol="https:";return $},D10=async($)=>{let Z=$.req.param("connectionId"),X=await p68($),Q=n68(new URL($.req.url)),Y=$.req.param("org")??X.organization?.slug,G;if(Y)if(X.organization?.id&&X.organization.slug===Y)G=X.organization.id;else{let F=await X.db.selectFrom("organization").select("id").where("slug","=",Y).executeTakeFirst();if(!F)return $.json({error:"Connection not found"},404);G=F.id}if(G&&X.auth?.tokenOrganizationId&&X.auth.tokenOrganizationId!==G)return $.json({error:"forbidden: token is scoped to another organization"},403);if(Z==="self")return d68($.req.raw,m68(Q));let J=await FC6(Z,X,G);if(!J)return $.json({error:"Connection not found"},404);if(J.startsWith("virtual://"))return d68($.req.raw,m68(Q));let K=NN1(Y),W=`${Q.origin}${K}/mcp/${Z}`,H=`${Q.origin}/oauth-proxy/${Z}`;try{let F=await Xm(J);if(!F.ok&&FN1.includes(F.status)){if(await i68(J)){let O=UN1({proxyResourceUrl:W,proxyAuthServer:H});return new Response(JSON.stringify(O),{status:200,headers:{"Content-Type":"application/json"}})}return new Response(F.body,{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}})}if(!F.ok)return new Response(F.body,{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}});let N=await F.json();if(f68(N)){let B=UN1({proxyResourceUrl:W,proxyAuthServer:H,scopesSupported:h68(N)});return new Response(JSON.stringify(B),{status:200,headers:{"Content-Type":"application/json"}})}let U=g68(N,{proxyResourceUrl:W,proxyAuthServer:H});return new Response(JSON.stringify(U),{status:F.status,statusText:F.statusText,headers:{"Content-Type":"application/json"}})}catch(F){let N=F;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",N),$.json({error:"Failed to proxy OAuth metadata",message:N.message},502)}},t68=()=>{let $=new U1;return $.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Z)=>D10(Z)),$.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Z)=>D10(Z)),$},o68=()=>{let $=new U1;return $.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Z)=>D10(Z)),$},r68=4000,BC6=async($)=>{let Z=$.req.param("connectionId"),X=await p68($),Q=await X.storage.connections.findById(Z);if(!Q?.connection_url)return $.json({error:"Connection not found or no auth server"},404);let Y=await UC6(Q.connection_url);if(!Y)return $.json({error:"Connection not found or no auth server"},404);let G=await X.db.selectFrom("organization").select("slug").where("id","=",Q.organization_id).executeTakeFirst();try{let J=await w10(Y);if(!J.ok)return new Response(J.body,{status:J.status,statusText:J.statusText,headers:{"Content-Type":"application/json"}});let K=await J.json(),W=n68(new URL($.req.url)),H=G?.slug?`${W.origin}/api/${G.slug}/oauth-proxy/${Z}`:`${W.origin}/oauth-proxy/${Z}`,F=u68(K,H);return new Response(JSON.stringify(F),{status:200,headers:{"Content-Type":"application/json"}})}catch(J){let K=J;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),$.json({error:"Failed to proxy auth server metadata",message:K.message},502)}},e68=()=>{let $=new U1;return $.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",BC6),$};var xs=L(()=>{E8();vD();EG();J4();Rj();l68()});async function Qm($){try{let Z;try{let Q=await Xm($);if(Q.ok)Z=(await Q.json()).authorization_servers?.[0]}catch{}if(!Z)Z=new URL($).origin;let X=await w10(Z);if(X.ok){let Q=await X.json();if(typeof Q.token_endpoint==="string")try{let Y=new URL(Q.token_endpoint);if((Y.protocol==="http:"||Y.protocol==="https:")&&!cO(Q.token_endpoint))return Q.token_endpoint}catch{}}return null}catch{return null}}var oM0=L(()=>{xs();Rj()});function el($){return!!$.refreshToken&&!!$.tokenEndpoint&&!!$.clientId}function OC6($,Z){if($.includes("/oauth-proxy/"))return!0;try{return new URL($).host!==new URL(Z).host}catch{return!1}}async function wC6($,Z){let X=await j3$($);if(!X.success||!X.accessToken){if(X.permanent===!0)await Z.delete($.connectionId).catch((Q)=>{console.warn("[TokenRefresh] failed to delete dead token row",{connectionId:$.connectionId,message:Q instanceof Error?Q.message:String(Q)})});return{accessToken:null,permanent:X.permanent===!0}}try{await Z.upsert({connectionId:$.connectionId,accessToken:X.accessToken,refreshToken:X.refreshToken??$.refreshToken,scope:X.scope??$.scope,expiresAt:X.expiresIn===void 0?null:new Date(Date.now()+X.expiresIn*1000),clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint})}catch(Q){return console.warn("[TokenRefresh] failed to persist refreshed token",{connectionId:$.connectionId,message:Q instanceof Error?Q.message:String(Q)}),{accessToken:X.accessToken,permanent:!1}}return{accessToken:X.accessToken,permanent:!1}}function cM0($,Z){let X=LN1.get($.connectionId);if(X)return X;let Q=rM0.get($.connectionId);if(Q&&Date.now()<Q.nextAttemptAt)return Promise.resolve(null);let Y=wC6($,Z).then(({accessToken:G,permanent:J})=>{if(G||J)rM0.delete($.connectionId);else{let K=rM0.get($.connectionId)?.attempt??0,W=U7(DC6,LC6,K,2,0.5);rM0.set($.connectionId,{attempt:K+1,nextAttemptAt:Date.now()+W})}return G}).finally(()=>{LN1.delete($.connectionId)});return LN1.set($.connectionId,Y),Y}async function RG($){let{connectionId:Z,connectionUrl:X,tokenStorage:Q,force:Y}=$,G=await Q.get(Z);if(!G)return{state:"missing",accessToken:null};let J=el(G),K=J?$.bufferMs??er:0,W=Q.isExpired(G,K);if(!Y&&!W)return{state:"valid",accessToken:G.accessToken};if(!J){if(W)await Q.delete(Z);return{state:"expired_without_refresh",accessToken:null}}let H=G.tokenEndpoint;if(X&&H&&OC6(H,X)){let N=await Qm(X);if(N)H=N}let F=await cM0({...G,tokenEndpoint:H},Q);if(!F)return{state:"refresh_failed",accessToken:null};return{state:"refreshed",accessToken:F}}var er=300000,dP$=3300000,w9="GitHub token refresh failed \u2014 reconnect the mcp-github integration.",LN1,LC6=30000,DC6=300000,rM0;var pJ=L(()=>{J4();z3$();oM0();LN1=new Map,rM0=new Map});import{SpanStatusCode as $58}from"@opentelemetry/api";function DN1($){if(Array.isArray($))return $.map(DN1);if($&&typeof $==="object"){let{__binding:Z,...X}=$,Q={};for(let[Y,G]of Object.entries(X))Q[Y]=DN1(G);return Q}return $}async function wN1($,Z,X){return Z.tracer.startActiveSpan("studio.connection.build_headers",{attributes:{"connection.id":$.id}},async(Q)=>{try{let Y=await EC6($,Z,X);return Q.setStatus({code:$58.OK}),Y}catch(Y){throw Q.setStatus({code:$58.ERROR,message:Y.message}),Q.recordException(Y),Y}finally{Q.end()}})}async function EC6($,Z,X){let Q=$.id,Y=j01($.configuration_state,$.configuration_scopes),G=Z.auth.user,J=G?.id??Z.auth.apiKey?.userId??(X?$.created_by:void 0),[K,W]=J?await C$$({sub:J,user:{id:J,email:G?.email,name:G?.name,role:G?.role},metadata:{state:$.configuration_state?DN1($.configuration_state):void 0,studioUrl:Z.baseUrl,meshUrl:Z.baseUrl,connectionId:Q,organizationId:Z.organization?.id,organizationName:Z.organization?.name,organizationSlug:Z.organization?.slug},permissions:Y}).then((O)=>[O,null]).catch((O)=>[null,O]):[null,Error("User ID required to issue configuration token")];if(W)console.error("Failed to issue configuration token:",W);let H=Z.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Z.metadata.wellKnownForwardableHeaders??{},"x-request-id":Z.metadata.requestId};if(Z.metadata.runMetadata&&Object.keys(Z.metadata.runMetadata).length>0)D01(F,"runMetadata",JSON.stringify(Z.metadata.runMetadata));let N=null;if(!!g5($)?.sourceConnectionId)try{N=await sr(Z,$)}catch(O){console.error("[Proxy] repo-scoped legacy token mint failed",{connectionId:Q,error:O.message})}else{let O=new a6(Z.db,Z.vault),D=await RG({connectionId:Q,connectionUrl:$.connection_url,tokenStorage:O});if(D.accessToken)N=D.accessToken;else if(D.state==="expired_without_refresh")console.warn(`[Proxy] Token expired for ${Q} with no refresh capability`)}if(!N&&$.connection_token)N=$.connection_token;if(N)F.Authorization=`Bearer ${N}`;if(K)D01(F,"token",K);return F}var Z58=L(()=>{z01();PO();pJ();gJ();Du();GY();w01()});function aM0(){let $=new Map;function Z(Q,Y){let G=$.get(Y);if(G)return G;let J=(async()=>{let K=await Q(),W=new n9({name:`outbound-client-${Y}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}},jsonSchemaValidator:z5});return W.onclose=()=>{$.delete(Y)},await W.connect(K),W})().catch((K)=>{throw $.delete(Y),K});return $.set(Y,J),J}return Object.assign(Z,{[Symbol.asyncDispose]:async()=>{let Q=[];for(let[Y,G]of $)Q.push(G.then((J)=>J.close()).catch(()=>{}));await Promise.all(Q),$.clear()}})}var EN1=L(()=>{tW();KQ()});function X58($){let Z=new xo({command:$.command,args:$.args,env:$.env,cwd:$.cwd,stderr:"pipe"}),X=$.name||$.id,Q="\x1B[2m",Y="\x1B[0m";return Z.stderr?.on("data",(G)=>{let J=G.toString().trimEnd();if(J)console.error(`${J} \x1B[2m[${X}]\x1B[0m`)}),Z}var Q58=L(()=>{o11()});var Ym;var Y58=L(()=>{YY();sj();KQ();Ym=class Ym extends Qg{options;constructor($,Z){super($);this.options=Z}toolsListPromise=null;fetchToolsFromServer(){if(!this.toolsListPromise)this.toolsListPromise=new Promise(($)=>{let Z=`auth-tools-${Date.now()}`,X=this.innerTransport.onmessage,Q=(G)=>{clearTimeout(Y),this.innerTransport.onmessage=X,this.toolsListPromise=null,$(G)},Y=setTimeout(()=>Q(null),UY0);this.innerTransport.onmessage=(G)=>{if("id"in G&&G.id===Z)if("result"in G){let J=G.result?.tools??null;Q(J)}else Q(null);else X?.(G)},this.innerTransport.send({jsonrpc:"2.0",id:Z,method:"tools/list",params:{}}).catch(()=>Q(null))});return this.toolsListPromise}async ensureToolsMap(){let $=this.options.cache??L9(),Z=await vL("tools",this.options.connection.id,async()=>{let X=await this.fetchToolsFromServer();if(X===null)throw Error("Failed to fetch tools list");return X},$,(X)=>this.options.ctx.pendingRevalidations.push(X),_L);if(!Z)return new Map;return new Map(Z.map((X)=>[X.name,X]))}async handleOutgoingMessage($){if(!this.isRequest($))return this.innerTransport.send($);let Z=$;if(Z.method==="tools/call")await this.authorizeToolCall(Z),this.stripMetaFromArguments(Z);return this.innerTransport.send($)}async authorizeToolCall($){if(this.options.superUser)return;let X=$.params.name,{ctx:Q,connection:Y}=this.options;if(await this.isPublicTool(X))return;if(!Q.auth.user?.id&&!Q.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let G=async()=>{return(await this.ensureToolsMap()).get(X)?._meta};await new aj(Q.auth.user?.id??Q.auth.apiKey?.userId,X,Q.boundAuth,Q.organization?.role??Q.auth.user?.role,Y.id,G,Q.organization?.id,!1).check(X)}async isPublicTool($){let X=(await this.ensureToolsMap()).get($);if(!X?._meta)return!1;return YH(X._meta)?.public_tool===!0}stripMetaFromArguments($){let Z=$.params;if(Z.arguments&&"_meta"in Z.arguments){let{_meta:X,...Q}=Z.arguments;Z.arguments=Q}}}});function jN1($){let{ctx:Z,organizationId:X,connectionId:Q,toolName:Y,durationMs:G,isError:J}=$;if(!X||!Q||!Y)return;let K={"tool.name":Y,"organization.id":X,"connection.id":Q,status:J?"error":"success","error.type":J?$.errorType||"Error":""};Z.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(G,K),Z.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,K)}import{trace as JoZ,context as KoZ}from"@opentelemetry/api";function G58($){if(!$.isError)return;let Z=$.content;if(!Array.isArray(Z))return;for(let X of Z)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function J58($){if(!$)return;let Z=$._meta;if(!Z||typeof Z!=="object"||Array.isArray(Z))return;let X=Z.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let Q={};for(let[Y,G]of Object.entries(X))if(typeof G==="string")Q[Y]=G;return Object.keys(Q).length>0?Q:void 0}function K58($,Z){if(!$&&!Z)return;if(!$)return Z;if(!Z)return $;return{...Z,...$}}var W58=L(()=>{lT0();$G()});import{trace as jC6,context as H58}from"@opentelemetry/api";var Gm;var F58=L(()=>{KQ();lT0();W58();Gm=class Gm extends Qg{options;inflightRequests=new Map;requestContext;constructor($,Z){super($);this.options=Z;this.requestContext=H58.active()}async handleOutgoingMessage($){if(this.isRequest($)){let Z=$;this.onRequestStart(Z)}return this.innerTransport.send($)}handleIncomingMessage($){if(this.isResponse($)){let Z=$;this.onResponseEnd(Z)}this.onmessage?.($)}onRequestStart($){let{ctx:Z,connectionId:X}=this.options,Q,Y;if($.method==="tools/call"&&$.params){let J=$.params;Q=J.name,Y=J.arguments}let G;if($.method==="tools/call"&&Q)G=Z.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":Q,"request.id":Z.metadata.requestId,"jsonrpc.id":$.id,"jsonrpc.method":$.method}},this.requestContext);if($.id!==null&&$.id!==void 0)this.inflightRequests.set($.id,{startTime:Date.now(),method:$.method,toolName:Q,toolArguments:Y,span:G})}onResponseEnd($){if($.id===null||$.id===void 0)return;let Z=this.inflightRequests.get($.id);if(!Z)return;let{ctx:X,connectionId:Q}=this.options,{startTime:Y,method:G,toolName:J,toolArguments:K,span:W}=Z,H=Date.now()-Y;if(this.inflightRequests.delete($.id),G!=="tools/call"||!J)return;let F=X.organization?.id??"",N="error"in $,U=N?$.error:$.result,B=N?{content:[{type:"text",text:$.error?.message||"Unknown error"}],isError:!0}:U,O=N||B?.isError===!0,D=N?$.error?.message:void 0,w=G58(B)||null;if(X.meter.createHistogram("connection.proxy.duration").record(H,{"connection.id":Q,"organization.id":F,"tool.name":J,status:O?"error":"success"}),O)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":Q,"organization.id":F,"tool.name":J,error:D??w??void 0});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":Q,"organization.id":F,"tool.name":J,status:"success"});if(F)jN1({ctx:X,organizationId:F,connectionId:Q,toolName:J,durationMs:H,isError:O,errorType:N?"RemoteError":O?"ToolError":""});if(W){if(O)W.recordException(Error(D??w??"Tool error"));let E=J58(K),j=K58(X.metadata.properties,E),z=jC6.setSpan(H58.active(),W);js({organizationId:X.organization?.id??"",connectionId:Q,toolName:J,toolArguments:K,result:B,duration:H,isError:O,errorMessage:w,userId:X.auth.user?.id||X.auth.apiKey?.userId||null,requestId:X.metadata.requestId,userAgent:X.metadata.userAgent||null,virtualMcpId:this.options.virtualMcpId||null,properties:j||null},z),W.end()}}async close(){for(let $ of this.inflightRequests.values())if($.span)$.span.setAttributes({"transport.closed":!0}),$.span.end();return this.inflightRequests.clear(),super.close()}}});var N58=L(()=>{KQ();Y58();F58()});async function U58($,Z,X=!1){let Q=$.id,Y=Z.connectionId&&Z.connectionId!==Q?Z.connectionId:void 0;switch($.connection_type){case"STDIO":{if(!y0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=$.connection_headers;if(!cW(G))throw Error("STDIO connection missing parameters");let J=X58({id:Q,name:$.title,command:G.command,args:G.args,env:G.envVars,cwd:G.cwd});return J=Yg(J,(K)=>new Ym(K,{ctx:Z,connection:$,superUser:X}),(K)=>new Gm(K,{ctx:Z,connectionId:Q,virtualMcpId:Y})),zC6(()=>J,Q)}case"HTTP":case"Websocket":{if(!$.connection_url)throw Error(`${$.connection_type} connection missing URL`);let G=$.connection_url;return Z.getOrCreateClient(async()=>{let J=await wN1($,Z,X),K=$.connection_headers;if(K&&"headers"in K)Object.assign(J,K.headers);let W=new rW(new URL(G),{requestInit:{headers:J}});return W=Yg(W,(H)=>new Ym(H,{ctx:Z,connection:$,superUser:X}),(H)=>new Gm(H,{ctx:Z,connectionId:Q,virtualMcpId:Y})),W},Q)}case"SSE":{if(!$.connection_url)throw Error("SSE connection missing URL");let G=$.connection_url;return Z.getOrCreateClient(async()=>{let J=await wN1($,Z,X),K=$.connection_headers;if(K&&"headers"in K)Object.assign(J,K.headers);let W=new SN(new URL(G),{requestInit:{headers:J}});return W=Yg(W,(H)=>new Ym(H,{ctx:Z,connection:$,superUser:X}),(H)=>new Gm(H,{ctx:Z,connectionId:Q,virtualMcpId:Y})),W},Q)}default:throw Error(`Unknown connection type: ${$.connection_type}`)}}var zC6;var B58=L(()=>{R$();mW();un();Ng();Z58();EN1();Q58();N58();zC6=aM0()});var iP$={};Z0(iP$,{clientFromConnection:()=>P5});async function P5($,Z,X=!1){if($.connection_type==="VIRTUAL")return _k$($,Z,X);return U58($,Z,X)}var io=L(()=>{B58();lu()});function zN1($){if($===null)return"null";if(Array.isArray($))return"array";return typeof $}function PC6($,Z){if(Z==="integer")return typeof $==="number"&&Number.isInteger($);return zN1($)===Z}function AC6($,Z){if(Z==="object"||Z==="array"){let X;try{X=JSON.parse($)}catch{return}return zN1(X)===Z?X:void 0}if(Z==="boolean"){if($==="true")return!0;if($==="false")return!1;return}if(Z==="number"||Z==="integer"){if($.trim()==="")return;let X=Number($);if(!Number.isFinite(X))return;if(Z==="integer"&&!Number.isInteger(X))return;return X}return}function O58($,Z){if(!$?.properties||!Z)return null;let X=!1,Q={...Z};for(let[Y,G]of Object.entries(Z)){if(typeof G!=="string")continue;let J=$.properties[Y]?.type;if(!J||J==="string")continue;let K=AC6(G,J);if(K===void 0)continue;Q[Y]=K,X=!0}return X?Q:null}function PN1($,Z,X){let Q=Object.keys(X??{}),Y=Z?.required??[],G=Y.filter((H)=>!Q.includes(H)),J=(H)=>{let F=Z?.properties?.[H]?.type;return F?`${H} (${F})`:H},K=Q.filter((H)=>{let F=Z?.properties?.[H]?.type;return F!=null&&!PC6(X?.[H],F)}).map((H)=>`${H} (expected ${Z?.properties?.[H]?.type}, got ${zN1(X?.[H])})`);return[`Invalid arguments for "${$}".`,Y.length?`Required: ${Y.map(J).join(", ")}.`:"",`You sent: ${Q.length?Q.join(", "):"(none)"}.`,G.length?`Missing required: ${G.join(", ")}.`:"",K.length?`Wrong type: ${K.join(", ")}.`:""].filter(Boolean).join(" ")}function L58($,Z,X,Q){if(!($ instanceof j1)||$.code!==V1.InvalidParams)return $;if(!Z)return $;let Y=PN1(Z,X,Q),G=$.message.replace(/^MCP error -?\d+: /,"");return new j1(V1.InvalidParams,`${G}
|
|
4179
4179
|
|
|
4180
4180
|
${Y}`,$.data)}function sM0($){let Z=$;if(!Z||Z.isError!==!0||!Array.isArray(Z.content))return null;let X=Z.content.map((Q)=>Q?.type==="text"?Q.text:null).filter((Q)=>typeof Q==="string").join(`
|
|
4181
4181
|
`);return/MCP error -32602|Input validation error/.test(X)?X:null}function D58($,Z){let X=$;return{...X,content:(X.content??[]).map((Q,Y)=>Y===0&&Q?.type==="text"?{...Q,text:`${Q.text}
|