decocms 4.207.0 → 4.207.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-BIsXZUEO.js → AlertCircle-CXc40Ar6.js} +1 -1
- package/dist/client/assets/{AreaChart-CoasZrX-.js → AreaChart-C27tNchs.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BNm4jfzs.js → ArrowLeft-BLxfklwI.js} +1 -1
- package/dist/client/assets/{ArrowUp-u32tNbR1.js → ArrowUp-Dt_UBFfb.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-DVVt11mJ.js → ArrowUpRight-B-uxDkHp.js} +1 -1
- package/dist/client/assets/{Check-Bs-R8wY0.js → Check-bZA9Z1eF.js} +1 -1
- package/dist/client/assets/{CheckCircle-CGtmaXJ3.js → CheckCircle-D2XQVczr.js} +1 -1
- package/dist/client/assets/{ChevronDown-CAqrusJs.js → ChevronDown-BGaOCqOd.js} +1 -1
- package/dist/client/assets/{ChevronRight-Cd_UlsvT.js → ChevronRight-DgtqlYpW.js} +1 -1
- package/dist/client/assets/{ChevronUp-DHpSE6iq.js → ChevronUp-CU6rC-TG.js} +1 -1
- package/dist/client/assets/{Copy01-CZJepdy4.js → Copy01-BvlcT5Ak.js} +1 -1
- package/dist/client/assets/{CpuChip01-C8cqXunC.js → CpuChip01-De0DRzcV.js} +1 -1
- package/dist/client/assets/{CreditCard01-D6PzfgWu.js → CreditCard01-HzK6QPzC.js} +1 -1
- package/dist/client/assets/{DotsVertical-Vpwvdr0J.js → DotsVertical-Bag93q8O.js} +1 -1
- package/dist/client/assets/{Eye-BPXX6VoG.js → Eye-C2y40JOs.js} +1 -1
- package/dist/client/assets/{FilterLines-CgbRxiww.js → FilterLines-8Tl5IgAp.js} +1 -1
- package/dist/client/assets/{Globe01-D-EcIcjy.js → Globe01-DnjVyKuc.js} +1 -1
- package/dist/client/assets/{Globe04-BJ1ETG77.js → Globe04-BSBp9x9K.js} +1 -1
- package/dist/client/assets/{HardDrive-CW66Zlzo.js → HardDrive-ztiySPY3.js} +1 -1
- package/dist/client/assets/{Key01-Dm0VSwoE.js → Key01-DgMd07Bt.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DAM1ssfV.js → LayoutLeft-CSX405Cu.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CGD6IOB8.js → LinkExternal01-DdJQIgWn.js} +1 -1
- package/dist/client/assets/{LogOut01-CLpRV4f-.js → LogOut01-B0-7s2BH.js} +1 -1
- package/dist/client/assets/{Monitor01-BNJLU4eV.js → Monitor01-BBsMz7mA.js} +1 -1
- package/dist/client/assets/{Palette-G2-WnzIs.js → Palette-CmXv5yHg.js} +1 -1
- package/dist/client/assets/{Play-BDuxhiMt.js → Play-CFmLewXQ.js} +1 -1
- package/dist/client/assets/{Plus-B0eVBe4O.js → Plus-lM34Fm-Y.js} +1 -1
- package/dist/client/assets/{SearchLg-COL5Pxp8.js → SearchLg-CuGk6O6r.js} +1 -1
- package/dist/client/assets/{SearchMd-98Yunm63.js → SearchMd-DAvgULQa.js} +1 -1
- package/dist/client/assets/{Settings02-Cdk2KHA2.js → Settings02-C8pTBq19.js} +1 -1
- package/dist/client/assets/{Share07-DUxBHhPW.js → Share07-CvTKb5Cr.js} +1 -1
- package/dist/client/assets/{Shield01-CWIglVdc.js → Shield01-C4-B78z8.js} +1 -1
- package/dist/client/assets/{Star01-bE5Nu5fA.js → Star01-CUGeyTl-.js} +1 -1
- package/dist/client/assets/{Stars01-Co1kSV-L.js → Stars01-DCLEiWVl.js} +1 -1
- package/dist/client/assets/{Stars02-BkdGU3id.js → Stars02-C6NUxJ3v.js} +1 -1
- package/dist/client/assets/{Sun-DxdxUNls.js → Sun-CCpfLp3_.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DjU8_mcJ.js → SwitchHorizontal01-DI2GMRDp.js} +1 -1
- package/dist/client/assets/{Tool01-DwPmealV.js → Tool01-CPX10VXL.js} +1 -1
- package/dist/client/assets/{Tool02-DQj02UM8.js → Tool02-B1Y3c2VD.js} +1 -1
- package/dist/client/assets/{Trash01-BkDAP6Ui.js → Trash01-BMmfvKlv.js} +1 -1
- package/dist/client/assets/{TrendUp01-CdZjUaI8.js → TrendUp01-BKg0xQwM.js} +1 -1
- package/dist/client/assets/{Upload01-98MfYlMN.js → Upload01-B1cBCKT8.js} +1 -1
- package/dist/client/assets/{User01-yY2eh1_d.js → User01-BWxiE43u.js} +1 -1
- package/dist/client/assets/{Users01-CsLOaOqj.js → Users01-Bm4pxg61.js} +1 -1
- package/dist/client/assets/{Users03-DM0x0Tg1.js → Users03-D9fqA39L.js} +1 -1
- package/dist/client/assets/{X-BbkFrdIq.js → X-Cqi1_WmZ.js} +1 -1
- package/dist/client/assets/{XCircle-CJrledJK.js → XCircle-7dp2AJa7.js} +1 -1
- package/dist/client/assets/{XClose-HopZyIt-.js → XClose-CCYFw001.js} +1 -1
- package/dist/client/assets/{Zap-D__0UMqn.js → Zap-BjAoOGZy.js} +1 -1
- package/dist/client/assets/{ZapSquare-Cc7FxAwc.js → ZapSquare-CySeWwxR.js} +1 -1
- package/dist/client/assets/{access-gate-C8DnsdiI.js → access-gate-B1fm4HnI.js} +1 -1
- package/dist/client/assets/{agent-icon-1vKhAiKW.js → agent-icon-CsKv98kn.js} +1 -1
- package/dist/client/assets/{agents-list-DaBNoT0j.js → agents-list-B4fEE15t.js} +1 -1
- package/dist/client/assets/{ai-providers-DfQ-3Mtn.js → ai-providers-Dg70YHFf.js} +1 -1
- package/dist/client/assets/{alert-wnC44Lcu.js → alert-DtUrF-Jl.js} +1 -1
- package/dist/client/assets/{alert-dialog-B94RKrpB.js → alert-dialog-aW9uE3iw.js} +1 -1
- package/dist/client/assets/{app-editor-DnQbSXlY.js → app-editor-B0jVKIpV.js} +1 -1
- package/dist/client/assets/{auth-BCvvRTRT.js → auth-2KiKWAkl.js} +1 -1
- package/dist/client/assets/{auth-catchall-BDWRJ7VM.js → auth-catchall-DVcTU2RJ.js} +1 -1
- package/dist/client/assets/{auth-entry-CIdfCkx0.js → auth-entry-Cc644sSQ.js} +1 -1
- package/dist/client/assets/{auth-split-layout-7vwIV9m_.js → auth-split-layout-CYkTtEXP.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Cl9pN4A7.js → authenticate-and-persist-oauth-CJ0AY64X.js} +1 -1
- package/dist/client/assets/{automation-list-row-B8lsVwA9.js → automation-list-row-q5ph9tUp.js} +1 -1
- package/dist/client/assets/{automation-runs-COGzW48W.js → automation-runs-C6JMyCKb.js} +1 -1
- package/dist/client/assets/{automations-D-A522sd.js → automations-BsYbBUoP.js} +1 -1
- package/dist/client/assets/{avatar-DdgFyVIK.js → avatar-ZnWhik7z.js} +1 -1
- package/dist/client/assets/{badge-Ds1Wnxgf.js → badge-BrTFVDsZ.js} +1 -1
- package/dist/client/assets/{billing-Yb3sA68U.js → billing-Dkv0Ch6o.js} +1 -1
- package/dist/client/assets/{block-document-DVEtY996.js → block-document-CgKO9mVv.js} +1 -1
- package/dist/client/assets/{brand-context-CVKoHubR.js → brand-context-8g7zhW8B.js} +1 -1
- package/dist/client/assets/{buckets-CkFa01HI.js → buckets-Cs8HaBE9.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-CHKdOPND.js → bulk-category-panel-r4P7-YZG.js} +1 -1
- package/dist/client/assets/{capability-load-error-BktCLsTE.js → capability-load-error-DGN89M4A.js} +1 -1
- package/dist/client/assets/{card-DlHf-lsN.js → card-Djbfm7g6.js} +1 -1
- package/dist/client/assets/{cards-RuESfpOS.js → cards-DfWQ7Qfa.js} +1 -1
- package/dist/client/assets/{category-editor-CJpr4IWv.js → category-editor-BT99_Xr2.js} +1 -1
- package/dist/client/assets/{chat-context-nBPGo5Lk.js → chat-context-DaRp_QoN.js} +1 -1
- package/dist/client/assets/{checkbox-DKT6dO8Z.js → checkbox-BVl4NM3V.js} +1 -1
- package/dist/client/assets/{cli-auth-success-A61_Ra8B.js → cli-auth-success-DeHP94Wy.js} +1 -1
- package/dist/client/assets/{collection-detail-BlwZCaka.js → collection-detail-BDqwAwhM.js} +1 -1
- package/dist/client/assets/{collection-display-button-H1biHeps.js → collection-display-button-CQqHdi-q.js} +1 -1
- package/dist/client/assets/{collection-search-27Z_ZWZT.js → collection-search-Bw4RaUQw.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-JUU17uAc.js → collection-table-wrapper-CQJ5ywVm.js} +1 -1
- package/dist/client/assets/{collection-tabs-DkBeoa5Z.js → collection-tabs-C6tpry-d.js} +1 -1
- package/dist/client/assets/{command-DjAcFSs1.js → command-C1hTHyH4.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-Cy-gCnLt.js → commerce-onboarding-BGNqNLKO.js} +1 -1
- package/dist/client/assets/{connect-kZOs8CHa.js → connect-CueoMMwi.js} +1 -1
- package/dist/client/assets/{connection-Cy8L3aJ3.js → connection-CqYrQzJN.js} +1 -1
- package/dist/client/assets/{connection-card-BCOCK_Eb.js → connection-card-ChLOu03x.js} +1 -1
- package/dist/client/assets/{connection-detail-DhPSnaZV.js → connection-detail-Bz9MpROg.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DmSfP11N.js → connection-form-helpers-DqJddwE8.js} +1 -1
- package/dist/client/assets/{connections-HOeS1AJd.js → connections-Cx_h9o6t.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-DeMGFbxJ.js → decopilot-sse-pool-19xPv_KT.js} +1 -1
- package/dist/client/assets/{dialog-B9uSdMGN.js → dialog-CA0qqjyi.js} +1 -1
- package/dist/client/assets/{domain-settings-CxG8FQYU.js → domain-settings-W1Cr8ngd.js} +1 -1
- package/dist/client/assets/{drawer-98eLt1an.js → drawer-GuYvsNGa.js} +1 -1
- package/dist/client/assets/{dropdown-menu-C1hjqODM.js → dropdown-menu-BAbRcskP.js} +1 -1
- package/dist/client/assets/{empty-state-o0gQhpc4.js → empty-state-B4pZCQIN.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BFlArbmP.js → extract-connection-data-DlldFhRH.js} +1 -1
- package/dist/client/assets/{file-explorer-Bc1LxF5Z.js → file-explorer-CaJe6BOl.js} +1 -1
- package/dist/client/assets/{file-type-icon-CUqlbkN4.js → file-type-icon-jYSypdXz.js} +1 -1
- package/dist/client/assets/{form-D_woCs7l.js → form-CXgKW-FR.js} +1 -1
- package/dist/client/assets/{general-Dk9AO_Dn.js → general-DQT1SG48.js} +1 -1
- package/dist/client/assets/{github-repo-picker-BMJy82Ev.js → github-repo-picker-DBv3km-6.js} +1 -1
- package/dist/client/assets/{hooks-Gv0gN8aJ.js → hooks-DXhypX2m.js} +1 -1
- package/dist/client/assets/{index-9XUiIWTR.js → index-6hsDNm7n.js} +1 -1
- package/dist/client/assets/{index-LkjnDNlx.js → index-B4QMrIft.js} +1 -1
- package/dist/client/assets/{index-C3G-6I1r.js → index-CGTxx1y8.js} +1 -1
- package/dist/client/assets/{index-C1vwFKI6.js → index-CfFRy8o8.js} +1 -1
- package/dist/client/assets/{index-CHLuEKuC.js → index-CsogwfdS.js} +1 -1
- package/dist/client/assets/{index-BruORjTP.js → index-DAn-7yTL.js} +1 -1
- package/dist/client/assets/{index-DI3yzcq9.js → index-DFAQ1EJ-.js} +3 -3
- package/dist/client/assets/{index-BROruwzJ.js → index-Dq4RN-Tc.js} +1 -1
- package/dist/client/assets/{index-51f6XlwG.js → index-Vqs_AAna.js} +1 -1
- package/dist/client/assets/{index-DN_t9Vle.js → index-i1MJ6BZf.js} +5 -5
- package/dist/client/assets/{index-redirect-Xm-Wfcmk.js → index-redirect-BErKD-Ul.js} +1 -1
- package/dist/client/assets/{input-rqb9s9a8.js → input-9WxsmvVz.js} +1 -1
- package/dist/client/assets/{integration-icon-NgM6caDc.js → integration-icon-DxLv-APu.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CFpFsOm-.js → invite-member-dialog-Dexd3Uay.js} +1 -1
- package/dist/client/assets/{label-CQkrTrwb.js → label-CFZCMSb8.js} +1 -1
- package/dist/client/assets/{layout-CPTYQuI4.js → layout-BcuDRyLO.js} +1 -1
- package/dist/client/assets/{login-D59iMEla.js → login-BDdcyKEE.js} +1 -1
- package/dist/client/assets/{mcp-oauth-X21IvZ1G.js → mcp-oauth-DDhIYBuK.js} +1 -1
- package/dist/client/assets/{members-CyiAS0Pa.js → members-BRSj6r0T.js} +1 -1
- package/dist/client/assets/{monaco-editor-CaRaMucM.js → monaco-editor-CmKmm0FK.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B4DBqbQ2.js → monitoring-stats-row-DST0zWF_.js} +1 -1
- package/dist/client/assets/{multi-select-DOObsNJA.js → multi-select-DxOQZVfL.js} +1 -1
- package/dist/client/assets/{oauth-callback-BzGwDXCC.js → oauth-callback-BOVgVCFm.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BKWs28AL.js → oauth-callback-ai-provider-SPBIZ07m.js} +1 -1
- package/dist/client/assets/{onboarding-Czj8G4s9.js → onboarding-C-QSMb-G.js} +1 -1
- package/dist/client/assets/{org-layout-D_JBIC42.js → org-layout-CTP3vumM.js} +1 -1
- package/dist/client/assets/{organization-choice-CNtAOuw9.js → organization-choice-4tixXzlH.js} +1 -1
- package/dist/client/assets/{orgs-WFw9FKpT.js → orgs-C-g9pi2K.js} +1 -1
- package/dist/client/assets/{page-seo-form-C1g7UFST.js → page-seo-form-rwXXHzG0.js} +1 -1
- package/dist/client/assets/{popover-1grKPHF-.js → popover-Cj9zRw6i.js} +1 -1
- package/dist/client/assets/{post-editor-B_Fg_PtG.js → post-editor-ip8KBLaE.js} +1 -1
- package/dist/client/assets/{primitives-B1JFDByD.js → primitives-2GzooOrV.js} +1 -1
- package/dist/client/assets/{profile-awrxi6Uz.js → profile-Cvu_EoMx.js} +1 -1
- package/dist/client/assets/{project-app-view-mt45EZmG.js → project-app-view-CJIo89x6.js} +1 -1
- package/dist/client/assets/record-editor-DI3Bhe1G.js +1 -0
- package/dist/client/assets/{redirect-editor-CcmQCF7Y.js → redirect-editor-BjmS8eUr.js} +1 -1
- package/dist/client/assets/registry-BPqrOBsl.js +2 -0
- package/dist/client/assets/{registry-layout-7yZvOqOy.js → registry-layout-DMDDnV_q.js} +1 -1
- package/dist/client/assets/{reports-DCwj-kO-.js → reports-BO4tWYW7.js} +1 -1
- package/dist/client/assets/{require-capability-D1cW6Q8M.js → require-capability-D5OkbEgr.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BvG-ioDs.js → required-auth-layout-Da5oFv2d.js} +1 -1
- package/dist/client/assets/{reset-password-CkKHp2p5.js → reset-password-DtLAFqy7.js} +1 -1
- package/dist/client/assets/{roles-21C2zkxi.js → roles-CPQLfaqM.js} +1 -1
- package/dist/client/assets/{search-input-CJHrGfWW.js → search-input-C_0BXBUE.js} +1 -1
- package/dist/client/assets/{secrets-CvR9yj2i.js → secrets-BPAYuBeu.js} +1 -1
- package/dist/client/assets/{sections-editor-fp1wM8pw.js → sections-editor-dBBkYgzd.js} +1 -1
- package/dist/client/assets/{select--TLOq7j8.js → select-90QtnyOa.js} +1 -1
- package/dist/client/assets/{select-model-BHOo1rp9.js → select-model-BehxtIgI.js} +1 -1
- package/dist/client/assets/{self-tool-result-CrB2rXFl.js → self-tool-result-BZdNeZSO.js} +1 -1
- package/dist/client/assets/{seo-editor-CYyt6O16.js → seo-editor-sivkxRiC.js} +1 -1
- package/dist/client/assets/{settings-layout-REfjxme3.js → settings-layout-CfUQ0tRJ.js} +1 -1
- package/dist/client/assets/{settings-section-C3ONEfGE.js → settings-section-BZ5lvRtv.js} +1 -1
- package/dist/client/assets/{shell-controls-BzV056SW.js → shell-controls-BQjORh0z.js} +1 -1
- package/dist/client/assets/{shell-layout-DlKj27bb.js → shell-layout-BFfYBuH8.js} +1 -1
- package/dist/client/assets/{sidebar-CNeZ85zy.js → sidebar-BGD7QssJ.js} +1 -1
- package/dist/client/assets/{skeleton-Dl3k4lxd.js → skeleton-BrszoFmI.js} +1 -1
- package/dist/client/assets/{spinner-kqhk2wdd.js → spinner-CcXrJu8r.js} +1 -1
- package/dist/client/assets/{sso-CPPmaCwP.js → sso-BvzSSLNB.js} +1 -1
- package/dist/client/assets/{store-Dmee7NFI.js → store-DZOEfSbI.js} +1 -1
- package/dist/client/assets/store-registry-Dyf7ckJJ.js +2 -0
- package/dist/client/assets/{studio-tools-Bdk11iXL.js → studio-tools-B67rnasf.js} +1 -1
- package/dist/client/assets/{switch-CG0_fDX9.js → switch-A_8GxjwB.js} +1 -1
- package/dist/client/assets/{synced-repos-B9BOntjb.js → synced-repos-C0OQcT4d.js} +1 -1
- package/dist/client/assets/{tab-id-BgguDV_T.js → tab-id-00aGi4r-.js} +1 -1
- package/dist/client/assets/{table-Cx2OcF-5.js → table-BnFpCqDf.js} +1 -1
- package/dist/client/assets/{tabs-CbawcjgJ.js → tabs-6cs1ZcJu.js} +1 -1
- package/dist/client/assets/{textarea-DLes0m8p.js → textarea-DOMWl7hz.js} +1 -1
- package/dist/client/assets/{toggle-group-DyUnK4OS.js → toggle-group-BPptYrIi.js} +1 -1
- package/dist/client/assets/{toolbar-D8hTZ_p2.js → toolbar-Bl6qY3rO.js} +1 -1
- package/dist/client/assets/{tooltip-DcLUD06s.js → tooltip-CHWh13MB.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CUYq8orO.js → use-ai-providers-WSA7m6LX.js} +1 -1
- package/dist/client/assets/{use-automations-BjstAQWn.js → use-automations-D3vG6yKH.js} +1 -1
- package/dist/client/assets/{use-autosave-oRIz3IWx.js → use-autosave-BxhftnSO.js} +1 -1
- package/dist/client/assets/{use-capability-A1Nh-1c-.js → use-capability-DakEJHuv.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CFHYPlbJ.js → use-clock-tick-Be7huOEc.js} +1 -1
- package/dist/client/assets/{use-connection-MqEPg6ky.js → use-connection-BbSK0zCm.js} +1 -1
- package/dist/client/assets/{use-copy-_jjDU2g1.js → use-copy-BefhlW44.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Svxxjbnm.js → use-create-virtual-mcp-DY6DJSU_.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-D9paTl-2.js → use-debounced-autosave-CeYXg8DG.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BIPN2O6h.js → use-debounced-value-Bj8A4dgk.js} +1 -1
- package/dist/client/assets/{use-deco-credits-D-bUjGxi.js → use-deco-credits-BuN_0hQH.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BBTIMFGs.js → use-decopilot-events-KbbNQEic.js} +1 -1
- package/dist/client/assets/{use-delete-connection-SIfEMhcg.js → use-delete-connection-B4bGuw52.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DkqoZQYC.js → use-deployment-admin-CeceKVIb.js} +1 -1
- package/dist/client/assets/{use-file-configs-BuZ7hFmK.js → use-file-configs-DZngbiME.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-72q6jUv6.js → use-infinite-scroll-DQhZHsvX.js} +1 -1
- package/dist/client/assets/{use-join-requests-Cbz31rNV.js → use-join-requests-DpJ7-Al5.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BekaO9lz.js → use-mcp-client-CVm31V6F.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CIXlr8N2.js → use-mcp-tools-CYLIBnYs.js} +1 -1
- package/dist/client/assets/{use-members-0qUDlbAr.js → use-members-BzaWrkKT.js} +1 -1
- package/dist/client/assets/{use-mobile-DMbNnlTA.js → use-mobile-D8UMZtPl.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CET38Vg9.js → use-navigate-to-agent-CuaGQwJF.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-CCadFnV1.js → use-open-billing-url-Cc80RM1m.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DFK_0KSz.js → use-org-auth-client-D5YL3Y-K.js} +1 -1
- package/dist/client/assets/{use-org-sso-B_1DEBvf.js → use-org-sso-CL5Bnwn7.js} +1 -1
- package/dist/client/assets/{use-organization-roles-Cx3CvgUK.js → use-organization-roles-Z8qc0s_T.js} +1 -1
- package/dist/client/assets/{use-organization-settings-Bxh2HDDm.js → use-organization-settings-Akz9Tqr2.js} +1 -1
- package/dist/client/assets/{use-registry-connections-Mw00EKui.js → use-registry-connections-DZ4rBsG_.js} +1 -1
- package/dist/client/assets/{use-secrets-Dp3WT00a.js → use-secrets-Bq5oFU1S.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-DdNJ2arm.js → use-section-preview-base-CoF5vuNM.js} +1 -1
- package/dist/client/assets/{use-status-sounds-Bc12sBux.js → use-status-sounds-BNQaG5gv.js} +1 -1
- package/dist/client/assets/{use-tags-j37diAvW.js → use-tags-R_IwgWua.js} +1 -1
- package/dist/client/assets/{use-view-mode-DCcwKbXe.js → use-view-mode-Cs3yL9pb.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CqU6VupE.js → use-virtual-mcp-DxweTSkQ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DtySonqq.js +1 -0
- package/dist/client/assets/{useRouterState-xxRU2w37.js → useRouterState-DlqVqaTo.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BL9Mn7SA.js +1 -0
- package/dist/client/assets/{users-DYAgABwe.js → users-ChvPEbAw.js} +1 -1
- package/dist/client/assets/{variant-calendar-eFgFIV4T.js → variant-calendar-DXB8YJhY.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-g5jce1H8.js → view-mode-toggle-DX-7gXWI.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +4 -4
- package/dist/server/migrate.js +20 -20
- package/dist/server/server.js +4 -4
- package/package.json +1 -1
- package/dist/client/assets/record-editor-BBEHvVwc.js +0 -1
- package/dist/client/assets/registry-BlqGlt4F.js +0 -2
- package/dist/client/assets/store-registry-PhKSKGkg.js +0 -2
- package/dist/client/assets/useInfiniteQuery-BFbHksQ0.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Ciwo96ge.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -81,7 +81,7 @@ _deco_commands() {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
_deco "$@"
|
|
84
|
-
`}async function zG6($){let Z=$||process.env.SHELL?.split("/").pop()||"bash",X,Q;switch(Z){case"bash":{X=DG6(),Q=qw1(Mw1(),".local/share/bash-completion/completions/deco");break}case"zsh":{X=EG6(),Q=qw1(Mw1(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${Z}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(LG6(Iw1(Q),{recursive:!0}),await OG6(Q,X,"utf8"),console.log(`Completion script installed to: ${Q}`),console.log(""),Z==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${Q}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${Iw1(Q)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var kw1=()=>{};import{homedir as jG6}from"os";function AG6($){let Z=($??"").trim();return PG6.has(Z)?Z:"all"}function RG6($){let Z=($??"").trim();return TG6.has(Z)?Z:"development"}function Cw1($,Z,X){let Q=$==="worker"?0:Math.floor(Z*0.6);if(X===void 0||X==="")return Q;let Y=Number(X);return Number.isFinite(Y)&&Y>=0?Y:Q}function _w1($){if(!$)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${$.length<=8?"***":`${$.slice(0,4)}..${$.slice(-4)}`}, ${$.length} chars)`}function aK($){return $==="true"||$==="1"}function IG6($){if($===void 0||$==="")return;return aK($)}function xV0($,Z,X){if(Z===void 0||Z==="")return;let Q=Number(Z);if(!Number.isSafeInteger(Q)||Q<=0)throw Error(`${$} must be a positive integer`);if(X!==void 0&&Q>X)throw Error(`${$} must be at most ${X}`);return Q}function YJ($,Z,X,Q){return xV0($,Z,Q)??X}function qG6($,Z,X,Q){if(Z===void 0||Z==="")return X;let Y=Number(Z);if(!Number.isSafeInteger(Y)||Y<0)throw Error(`${$} must be a non-negative integer`);if(Q!==void 0&&Y>Q)throw Error(`${$} must be at most ${Q}`);return Y}function Sw1($,Z){if($===void 0||$==="")return Z;return $==="true"||$==="1"}function ml($){if(!$)return null;try{let X=new URL($).hostname.replace(/^\[|\]$/g,"");if(X==="localhost"||X==="127.0.0.1"||X==="::1")return null;return $}catch{return null}}function fV0($){return $===void 0||$===""||$==="true"||$==="1"}function dl($,Z){return $||Z}function VG6($){let Z=($??"").trim(),X=Z.length>0?Z:"user-desktop";if(X==="cluster")return"agent-sandbox";if(!MG6.has(X))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${$}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return X}function E10($,Z){let X=$.home||Z.DATA_DIR||Z.DECOCMS_HOME||`${jG6()}/deco`,Q=$.localMode,Y=$.nodeEnv||RG6(Z.NODE_ENV),G=Z.NATS_URL||"nats://localhost:4222",J=IG6(Z.NATS_TUNNEL_PUBLIC_ENABLED)??!!Z.NATS_PUBLIC_URL;return{settings:{nodeEnv:Y,port:YJ("PORT",$.port||Z.PORT,3000,65535),baseUrl:$.baseUrl||Z.BASE_URL,publicUrl:dl(Z.STUDIO_PUBLIC_URL,Z.MESH_PUBLIC_URL),dataDir:X,databasePgSsl:aK(Z.DATABASE_PG_SSL),databasePoolMax:YJ("DATABASE_POOL_MAX",Z.DATABASE_POOL_MAX,5),dbosPoolSize:YJ("DBOS_POOL_SIZE",Z.DBOS_POOL_SIZE,5),betterAuthSecret:Z.BETTER_AUTH_SECRET||"",encryptionKey:Z.ENCRYPTION_KEY||"",studioJwtSecret:dl(Z.STUDIO_JWT_SECRET,Z.MESH_JWT_SECRET),localMode:Q,disableRateLimit:aK(Z.DISABLE_RATE_LIMIT),studioProvisionSecretKey:Z.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(Z.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((W)=>W.trim().toLowerCase()).filter(Boolean),clickhouseUrl:Z.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:xV0("CLICKHOUSE_MAX_MEMORY_USAGE",Z.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:Z.MONITORING_OTLP_ENDPOINT,otelServiceName:Z.OTEL_SERVICE_NAME||"studio",natsPublicUrl:Z.NATS_PUBLIC_URL,natsTunnelPublicEnabled:J,natsTunnelSessionTtlSeconds:YJ("NATS_TUNNEL_SESSION_TTL_SECONDS",Z.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:Z.NATS_OPERATOR_JWT,natsAccountJwt:Z.NATS_ACCOUNT_JWT,natsAccountSigningKey:Z.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:Z.NATS_CREDS,configPath:Z.CONFIG_PATH||"./config.json",aiGatewayEnabled:aK(Z.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:Z.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:Z.DECO_AI_GATEWAY_ADMIN_TOKEN,stripeWebhookSecret:Z.STRIPE_WEBHOOK_SECRET,stripeSecretKey:Z.STRIPE_SECRET_KEY,stripeOrgPriceId:Z.STRIPE_ORG_PRICE_ID,topupFeePercent:qG6("STUDIO_TOPUP_FEE_PERCENT",Z.STUDIO_TOPUP_FEE_PERCENT,15,100),taskQuotaEnforced:aK(Z.STUDIO_TASK_QUOTA_ENFORCED),freeTaskExecutions:YJ("STUDIO_FREE_TASKS",Z.STUDIO_FREE_TASKS,3),monthlyTaskExecutions:YJ("STUDIO_MONTHLY_TASKS",Z.STUDIO_MONTHLY_TASKS,10),maxRunsPerTask:YJ("STUDIO_MAX_RUNS_PER_TASK",Z.STUDIO_MAX_RUNS_PER_TASK,5),enableDecoImport:aK(Z.ENABLE_DECO_IMPORT),mcpCacheEnabled:Sw1(Z.MCP_CACHE_ENABLED,Y!=="development"),orgFsPublicSetsJson:Z.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:aK(Z.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:YJ("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",Z.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:YJ("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",Z.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),taskBoardReviewSweeperEnabled:Sw1(Z.TASK_BOARD_REVIEW_SWEEPER_ENABLED,!0),sandboxMaxConcurrentHostedRuns:YJ("SANDBOX_MAX_CONCURRENT_HOSTED_RUNS",Z.SANDBOX_MAX_CONCURRENT_HOSTED_RUNS,12),s3Endpoint:Z.S3_ENDPOINT,s3Bucket:Z.S3_BUCKET,s3Region:Z.S3_REGION||"auto",s3AccessKeyId:Z.S3_ACCESS_KEY_ID,s3SecretAccessKey:Z.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:fV0(Z.S3_FORCE_PATH_STYLE),monitoringS3Bucket:Z.MONITORING_S3_BUCKET,monitoringS3Endpoint:Z.MONITORING_S3_ENDPOINT,monitoringS3Region:Z.MONITORING_S3_REGION,monitoringS3AccessKeyId:Z.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:Z.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:Z.MONITORING_S3_PREFIX,duckdbExtensionDirectory:Z.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:Z.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:xV0("DUCKDB_THREADS",Z.DUCKDB_THREADS),isCli:!0,noTui:$.noTui===!0,podName:Z.POD_NAME||crypto.randomUUID(),dispatchRole:AG6(dl(Z.STUDIO_DISPATCH_ROLE,Z.MESH_DISPATCH_ROLE)),sandboxProviderKind:VG6(Z.STUDIO_SANDBOX_PROVIDER),sandboxStickyHeadRefEnabled:aK(Z.SANDBOX_STICKY_HEAD_REF),taskBoardRerunReusesPrBranch:aK(Z.TASK_BOARD_RERUN_REUSES_PR_BRANCH),sandboxReleaseOnRunEndEnabled:aK(Z.SANDBOX_RELEASE_ON_RUN_END),sandboxReleaseGraceMs:YJ("SANDBOX_RELEASE_GRACE_MS",Z.SANDBOX_RELEASE_GRACE_MS,120000),decoSupabaseUrl:Z.DECO_SUPABASE_URL,decoSupabaseServiceKey:Z.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:Z.FIRECRAWL_API_KEY,reportsInternalApiUrl:dl(Z.REPORTS_INTERNAL_API_URL,Z.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:dl(Z.REPORTS_INTERNAL_API_KEY,Z.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:Z.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:Z.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:Z.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:Z.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:Z.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:Z.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:Z.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:ml(Z.DATABASE_URL),externalNatsUrl:ml(G),skipMigrations:$.skipMigrations}}var PG6,TG6,MG6;var hx=O(()=>{PG6=new Set(["all","worker","api"]);TG6=new Set(["production","development","test"]);MG6=new Set(["agent-sandbox","user-desktop"])});function T8($,Z={}){let{signal:X}=Z;if(X?.aborted)return Promise.reject(X.reason);return new Promise((Q,Y)=>{let G=()=>{clearTimeout(+K),Y(X?.reason)},K=kG6(()=>{X?.removeEventListener("abort",G),Q()},$);X?.addEventListener("abort",G,{once:!0})})}function kG6($,Z){if(Z=Math.trunc(Math.max(Z,0)||0),Z<=bV0){let G=Number(setTimeout($,Z));return{valueOf:()=>G}}let X=Date.now(),Q,Y=()=>{let G=Z-(Date.now()-X);Q=G>bV0?Number(setTimeout(Y,bV0)):Number(setTimeout($,G))};return Y(),{valueOf:()=>Q}}var bV0=2147483647;function J7($,Z,X,Q,Y){let G=Math.min($,Z*Q**X);return(1-Y*Math.random())*G}async function T9($,Z){let{multiplier:X=2,maxTimeout:Q=60000,maxAttempts:Y=5,minTimeout:G=1000,jitter:J=1,isRetriable:K=()=>!0,signal:W}=Z??{};if(!Number.isInteger(Y)||Y<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${Y}`);if(!Number.isFinite(X)||X<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${X}`);if(Number.isNaN(Q)||Q<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${Q}`);if(Number.isNaN(G)||G<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${G}`);if(G>Q)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${G}', 'maxTimeout=${Q}'`);if(Number.isNaN(J)||J<0||J>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${J}`);let H=0;while(!0){W?.throwIfAborted();try{return await $()}catch(U){if(!K(U))throw U;if(H+1>=Y)throw new xY(U,Y);let N=J7(Q,G,H,X,J);await T8(N,W?{signal:W}:void 0)}H++}}var xY;var vw1=O(()=>{xY=class xY extends Error{constructor($,Z){super(`Retrying exceeded the maxAttempts (${Z}).`);this.name="RetryError",this.cause=$}}});var a4=O(()=>{vw1()});class z10{static encode($){if(typeof $==="string")return btoa($);let Z=Array.from($);return btoa(String.fromCharCode(...Z))}static decode($,Z=!1){let X=atob($);if(!Z)return X;let Q=new Uint8Array(X.length);for(let Y=0;Y<X.length;Y++)Q[Y]=X.charCodeAt(Y);return Q}}class ux{static encode($){return ux.toB64URLEncoding(z10.encode($))}static decode($,Z=!1){return z10.decode(ux.fromB64URLEncoding($),Z)}static toB64URLEncoding($){return $=$.replace(/=/g,""),$=$.replace(/\+/g,"-"),$.replace(/\//g,"_")}static fromB64URLEncoding($){return $=$.replace(/_/g,"/"),$=$.replace(/-/g,"+"),$}}function CG6($){fw1=$}function bG(){return fw1}class j10{static encode($){let Z=0,X=0,Q=new Uint8Array($),Y=new Uint8Array($.byteLength*2),G=0;for(let J=0;J<Q.byteLength;J++){X=X<<8|Q[J],Z+=8;while(Z>=5){let K=X>>>Z-5&31;Y[G++]=yV0.charAt(K).charCodeAt(0),Z-=5}}if(Z>0){let J=X<<5-Z&31;Y[G++]=yV0.charAt(J).charCodeAt(0)}return Y.slice(0,G)}static decode($){let Z=0,X=0,Q=0,Y=new Uint8Array($),G=new Uint8Array(Y.byteLength*5/8|0);for(let J=0;J<Y.byteLength;J++){let K=String.fromCharCode(Y[J]),W=yV0.indexOf(K);if(W===-1)throw Error("Illegal Base32 character: "+Y[J]);if(X=X<<5|W,Z+=5,Z>=8)G[Q++]=X>>>Z-8&255,Z-=8}return G.slice(0,Q)}}class nl{static checksum($){let Z=0;for(let X=0;X<$.byteLength;X++){let Q=$[X];Z=Z<<8&65535^_G6[(Z>>8^Q)&255]}return Z}static validate($,Z){return nl.checksum($)==Z}}function bw1(){return uV0(x6.Operator)}function P10(){return uV0(x6.Account)}function yw1(){return uV0(x6.User)}class KD{static isValidPublicPrefix($){return $==x6.Server||$==x6.Operator||$==x6.Cluster||$==x6.Account||$==x6.User||$==x6.Curve}static startsWithValidPrefix($){let Z=$[0];return Z=="S"||Z=="P"||Z=="O"||Z=="N"||Z=="C"||Z=="A"||Z=="U"||Z=="X"}static isValidPrefix($){return this.parsePrefix($)!==x6.Unknown}static parsePrefix($){switch($){case x6.Seed:return x6.Seed;case x6.Private:return x6.Private;case x6.Operator:return x6.Operator;case x6.Server:return x6.Server;case x6.Cluster:return x6.Cluster;case x6.Account:return x6.Account;case x6.User:return x6.User;case x6.Curve:return x6.Curve;default:return x6.Unknown}}}class GZ{static encode($,Z){if(!Z||!(Z instanceof Uint8Array))throw new n8(m8.SerializationError);if(!KD.isValidPrefix($))throw new n8(m8.InvalidPrefixByte);return GZ._encode(!1,$,Z)}static encodeSeed($,Z){if(!Z)throw new n8(m8.ApiError);if(!KD.isValidPublicPrefix($))throw new n8(m8.InvalidPrefixByte);if(Z.byteLength!==32)throw new n8(m8.InvalidSeedLen);return GZ._encode(!0,$,Z)}static decode($,Z){if(!KD.isValidPrefix($))throw new n8(m8.InvalidPrefixByte);let X=GZ._decode(Z);if(X[0]!==$)throw new n8(m8.InvalidPrefixByte);return X.slice(1)}static decodeSeed($){let Z=GZ._decode($),X=GZ._decodePrefix(Z);if(X[0]!=x6.Seed)throw new n8(m8.InvalidSeed);if(!KD.isValidPublicPrefix(X[1]))throw new n8(m8.InvalidPrefixByte);return{buf:Z.slice(2),prefix:X[1]}}static _encode($,Z,X){let Q=$?2:1,Y=X.byteLength,G=Q+Y+2,J=Q+Y,K=new Uint8Array(G);if($){let U=GZ._encodePrefix(x6.Seed,Z);K.set(U)}else K[0]=Z;K.set(X,Q);let W=nl.checksum(K.slice(0,J));return new DataView(K.buffer).setUint16(J,W,!0),j10.encode(K)}static _decode($){if($.byteLength<4)throw new n8(m8.InvalidEncoding);let Z;try{Z=j10.decode($)}catch(J){throw new n8(m8.InvalidEncoding,J)}let X=Z.byteLength-2,Y=new DataView(Z.buffer).getUint16(X,!0),G=Z.slice(0,X);if(!nl.validate(G,Y))throw new n8(m8.InvalidChecksum);return G}static _encodePrefix($,Z){let X=$|Z>>5,Q=(Z&31)<<3;return new Uint8Array([X,Q])}static _decodePrefix($){let Z=$[0]&248,X=($[0]&7)<<5|($[1]&248)>>3;return new Uint8Array([Z,X])}}class gV0{seed;constructor($){this.seed=$}getRawSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=GZ.decodeSeed(this.seed),Z=bG().fromSeed(this.getRawSeed()),X=GZ.encode($.prefix,Z.publicKey);return new TextDecoder().decode(X)}getPrivateKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=bG().fromSeed(this.getRawSeed());return GZ.encode(x6.Private,$.secretKey)}sign($){if(!this.seed)throw new n8(m8.ClearedPair);let Z=bG().fromSeed(this.getRawSeed());return bG().sign($,Z.secretKey)}verify($,Z){if(!this.seed)throw new n8(m8.ClearedPair);let X=bG().fromSeed(this.getRawSeed());return bG().verify($,Z,X.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal($,Z,X){throw new n8(m8.InvalidNKeyOperation)}open($,Z){throw new n8(m8.InvalidNKeyOperation)}}class hV0{seed;constructor($){this.seed=$}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.encode(x6.Private,this.seed)}getPublicKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=bG().scalarBaseMultiply(this.seed),Z=GZ.encode(x6.Curve,$);return new TextDecoder().decode(Z)}getSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.encodeSeed(x6.Curve,this.seed)}sign(){throw new n8(m8.InvalidCurveOperation)}verify(){throw new n8(m8.InvalidCurveOperation)}decodePubCurveKey($){try{let Z=j10.decode(new TextEncoder().encode($));if(Z.byteLength!==35)throw new n8(m8.InvalidCurveKey);if(Z[0]!==x6.Curve)throw new n8(m8.InvalidPublicKey);let X=Z.byteLength-2,Y=new DataView(Z.buffer).getUint16(X,!0),G=Z.slice(0,X);if(!nl.validate(G,Y))throw new n8(m8.InvalidChecksum);return G.slice(1)}catch(Z){throw new n8(m8.InvalidRecipient,Z)}}seal($,Z,X){if(!this.seed)throw new n8(m8.ClearedPair);if(!X)X=bG().randomBytes(xw1);let Q=this.decodePubCurveKey(Z),Y=new Uint8Array(JD.length+24);Y.set(JD,0),Y.set(X,JD.length);let G=bG().seal($,X,Q,this.seed),J=new Uint8Array(Y.length+G.length);return J.set(Y),J.set(G,Y.length),J}open($,Z){if(!this.seed)throw new n8(m8.ClearedPair);if($.length<=24+JD.length)throw new n8(m8.InvalidEncrypted);for(let Y=0;Y<JD.length;Y++)if($[Y]!==JD[Y])throw new n8(m8.InvalidEncrypted);let X=this.decodePubCurveKey(Z);$=$.slice(JD.length);let Q=$.slice(0,24);return $=$.slice(xw1),bG().open($,Q,X,this.seed)}}function uV0($){let Z=$===x6.Curve?32:32,X=bG().randomBytes(Z),Q=GZ.encodeSeed($,new Uint8Array(X));return $===x6.Curve?new hV0(new Uint8Array(X)):new gV0(Q)}class gw1{publicKey;constructor($){this.publicKey=$}getPublicKey(){if(!this.publicKey)throw new n8(m8.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.PublicKeyOnly)}sign($){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.CannotSign)}verify($,Z){if(!this.publicKey)throw new n8(m8.ClearedPair);let X=GZ._decode(this.publicKey);return bG().verify($,Z,X.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal($,Z,X){throw new n8(m8.InvalidNKeyOperation)}open($,Z){throw new n8(m8.InvalidNKeyOperation)}}function vG6($){let Z=new TextEncoder().encode($),X=GZ._decode(Z),Q=KD.parsePrefix(X[0]);if(KD.isValidPublicPrefix(Q))return new gw1(Z);throw new n8(m8.InvalidPublicKey)}function xG6($){let Z=GZ.decodeSeed($);if(Z.prefix!==x6.Curve)throw new n8(m8.InvalidCurveSeed);if(Z.buf.byteLength!==32)throw new n8(m8.InvalidSeedLen);return new hV0(Z.buf)}function cV0($){if(GZ.decodeSeed($).prefix===x6.Curve)return xG6($);return new gV0($)}function fG6($){if($ instanceof Uint8Array)$=new TextDecoder().decode($);if($.charAt(0)==="S")return cV0(new TextEncoder().encode($));return vG6($)}function WD($,Z="",X=!1){let Q=typeof $==="string"||$ instanceof Uint8Array?fG6($):$,Y=Q.getPublicKey(),G=[];if(!Array.isArray(Z)){if(Z!=="")G.push(Z)}else G.push(...Z);if(Z.length>0&&G.indexOf(Y.charAt(0))===-1)throw Error(`unexpected type ${Y.charAt(0)} - wanted ${G}`);if(X)Q.getPrivateKey();return Q}function bG6($={}){return hw1({data:-1,payload:-1,subs:-1},$)}function hw1($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.assign($,Q)}return $}function lV0($){let{exp:Z,nbf:X,aud:Q}=$;return hw1({},{exp:Z,nbf:X,aud:Q})}function dV0($={}){if(!$.algorithm)$.algorithm=GJ.v2;return $}async function uw1($,Z,X={},Q={}){Z=WD(Z,"O",!Q.signer);let Y=Z;if(Q.signer)Y=WD(Q.signer,["O"],!0);let G=lV0(Q);G.name=$,G.sub=Z.getPublicKey(),G.nats=X;let J=dV0(Q);return iV0(J.algorithm,il.Operator,G),await nV0(J.algorithm,G,Y)}async function mV0($,Z,X={},Q={}){Z=WD(Z,"A",!Q.signer);let Y=Z;if(Q.signer)Y=WD(Q.signer,["O","A"],!0);let G=lV0(Q);G.name=$,G.sub=Z.getPublicKey(),G.nats=X;let J=dV0(Q);return iV0(J.algorithm,il.Account,G),await nV0(J.algorithm,G,Y)}async function cw1($,Z,X,Q={},Y={}){X=WD(X,"A",!Y.signer);let G=X;if(Y.signer)G=WD(Y.signer,"A",!0);Z=WD(Z,"U");let J=lV0(Y);if(J.name=$,J.sub=Z.getPublicKey(),J.nats=Y.scopedUser?Q:bG6(Q),Y.signer)J.nats.issuer_account=X.getPublicKey();let K=dV0(Y);return iV0(K.algorithm,il.User,J),await nV0(K.algorithm,J,G)}function iV0($,Z,X){if(X.aud=X.aud||"NATS",$===GJ.v2)X.nats.type=Z;else X.type=Z}function yG6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*255)}function gG6(){let $=new Uint8Array(12);yG6($);let Z=Array.from($);return btoa(String.fromCharCode(...Z))}async function nV0($,Z,X){Z.iss=X.getPublicKey(),Z.iat=Math.floor(Date.now()/1000);let Q=Z;if($===GJ.v2)Q.nats.version=2;let Y=new TextEncoder,G=Y.encode(JSON.stringify(Z));if(globalThis.crypto&&globalThis.crypto.subtle){let N=await globalThis.crypto.subtle.digest("SHA-512",G);Z.jti=z10.encode(new Uint8Array(N))}else Z.jti=gG6();let J={typ:"JWT",alg:$},K=ux.encode(JSON.stringify(J)),W=ux.encode(JSON.stringify(Z)),H=$===GJ.v2?`${K}.${W}`:W,U=ux.encode(X.sign(Y.encode(H)));return`${K}.${W}.${U}`}function lw1($,Z){let X=new TextDecoder().decode(Z.getSeed()),Q=`-----BEGIN NATS USER JWT-----
|
|
84
|
+
`}async function zG6($){let Z=$||process.env.SHELL?.split("/").pop()||"bash",X,Q;switch(Z){case"bash":{X=DG6(),Q=qw1(Mw1(),".local/share/bash-completion/completions/deco");break}case"zsh":{X=EG6(),Q=qw1(Mw1(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${Z}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(LG6(Iw1(Q),{recursive:!0}),await OG6(Q,X,"utf8"),console.log(`Completion script installed to: ${Q}`),console.log(""),Z==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${Q}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${Iw1(Q)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var kw1=()=>{};import{homedir as jG6}from"os";function AG6($){let Z=($??"").trim();return PG6.has(Z)?Z:"all"}function RG6($){let Z=($??"").trim();return TG6.has(Z)?Z:"development"}function Cw1($,Z,X){let Q=$==="worker"?0:Math.floor(Z*0.6);if(X===void 0||X==="")return Q;let Y=Number(X);return Number.isFinite(Y)&&Y>=0?Y:Q}function _w1($){if(!$)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${$.length<=8?"***":`${$.slice(0,4)}..${$.slice(-4)}`}, ${$.length} chars)`}function aK($){return $==="true"||$==="1"}function IG6($){if($===void 0||$==="")return;return aK($)}function xV0($,Z,X){if(Z===void 0||Z==="")return;let Q=Number(Z);if(!Number.isSafeInteger(Q)||Q<=0)throw Error(`${$} must be a positive integer`);if(X!==void 0&&Q>X)throw Error(`${$} must be at most ${X}`);return Q}function YJ($,Z,X,Q){return xV0($,Z,Q)??X}function qG6($,Z,X,Q){if(Z===void 0||Z==="")return X;let Y=Number(Z);if(!Number.isSafeInteger(Y)||Y<0)throw Error(`${$} must be a non-negative integer`);if(Q!==void 0&&Y>Q)throw Error(`${$} must be at most ${Q}`);return Y}function Sw1($,Z){if($===void 0||$==="")return Z;return $==="true"||$==="1"}function ml($){if(!$)return null;try{let X=new URL($).hostname.replace(/^\[|\]$/g,"");if(X==="localhost"||X==="127.0.0.1"||X==="::1")return null;return $}catch{return null}}function fV0($){return $===void 0||$===""||$==="true"||$==="1"}function dl($,Z){return $||Z}function VG6($){let Z=($??"").trim(),X=Z.length>0?Z:"user-desktop";if(X==="cluster")return"agent-sandbox";if(!MG6.has(X))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${$}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return X}function E10($,Z){let X=$.home||Z.DATA_DIR||Z.DECOCMS_HOME||`${jG6()}/deco`,Q=$.localMode,Y=$.nodeEnv||RG6(Z.NODE_ENV),G=Z.NATS_URL||"nats://localhost:4222",J=IG6(Z.NATS_TUNNEL_PUBLIC_ENABLED)??!!Z.NATS_PUBLIC_URL;return{settings:{nodeEnv:Y,port:YJ("PORT",$.port||Z.PORT,3000,65535),baseUrl:$.baseUrl||Z.BASE_URL,publicUrl:dl(Z.STUDIO_PUBLIC_URL,Z.MESH_PUBLIC_URL),dataDir:X,databasePgSsl:aK(Z.DATABASE_PG_SSL),databasePoolMax:YJ("DATABASE_POOL_MAX",Z.DATABASE_POOL_MAX,5),dbosPoolSize:YJ("DBOS_POOL_SIZE",Z.DBOS_POOL_SIZE,5),betterAuthSecret:Z.BETTER_AUTH_SECRET||"",encryptionKey:Z.ENCRYPTION_KEY||"",studioJwtSecret:dl(Z.STUDIO_JWT_SECRET,Z.MESH_JWT_SECRET),localMode:Q,disableRateLimit:aK(Z.DISABLE_RATE_LIMIT),studioProvisionSecretKey:Z.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(Z.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((W)=>W.trim().toLowerCase()).filter(Boolean),clickhouseUrl:Z.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:xV0("CLICKHOUSE_MAX_MEMORY_USAGE",Z.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:Z.MONITORING_OTLP_ENDPOINT,otelServiceName:Z.OTEL_SERVICE_NAME||"studio",natsPublicUrl:Z.NATS_PUBLIC_URL,natsTunnelPublicEnabled:J,natsTunnelSessionTtlSeconds:YJ("NATS_TUNNEL_SESSION_TTL_SECONDS",Z.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:Z.NATS_OPERATOR_JWT,natsAccountJwt:Z.NATS_ACCOUNT_JWT,natsAccountSigningKey:Z.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:Z.NATS_CREDS,configPath:Z.CONFIG_PATH||"./config.json",aiGatewayEnabled:aK(Z.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:Z.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:Z.DECO_AI_GATEWAY_ADMIN_TOKEN,stripeWebhookSecret:Z.STRIPE_WEBHOOK_SECRET,stripeSecretKey:Z.STRIPE_SECRET_KEY,stripeOrgPriceId:Z.STRIPE_ORG_PRICE_ID,stripeTopupProductId:Z.STRIPE_TOPUP_PRODUCT_ID,topupFeePercent:qG6("STUDIO_TOPUP_FEE_PERCENT",Z.STUDIO_TOPUP_FEE_PERCENT,15,100),taskQuotaEnforced:aK(Z.STUDIO_TASK_QUOTA_ENFORCED),freeTaskExecutions:YJ("STUDIO_FREE_TASKS",Z.STUDIO_FREE_TASKS,3),monthlyTaskExecutions:YJ("STUDIO_MONTHLY_TASKS",Z.STUDIO_MONTHLY_TASKS,10),maxRunsPerTask:YJ("STUDIO_MAX_RUNS_PER_TASK",Z.STUDIO_MAX_RUNS_PER_TASK,5),enableDecoImport:aK(Z.ENABLE_DECO_IMPORT),mcpCacheEnabled:Sw1(Z.MCP_CACHE_ENABLED,Y!=="development"),orgFsPublicSetsJson:Z.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:aK(Z.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:YJ("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",Z.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:YJ("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",Z.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),taskBoardReviewSweeperEnabled:Sw1(Z.TASK_BOARD_REVIEW_SWEEPER_ENABLED,!0),sandboxMaxConcurrentHostedRuns:YJ("SANDBOX_MAX_CONCURRENT_HOSTED_RUNS",Z.SANDBOX_MAX_CONCURRENT_HOSTED_RUNS,12),s3Endpoint:Z.S3_ENDPOINT,s3Bucket:Z.S3_BUCKET,s3Region:Z.S3_REGION||"auto",s3AccessKeyId:Z.S3_ACCESS_KEY_ID,s3SecretAccessKey:Z.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:fV0(Z.S3_FORCE_PATH_STYLE),monitoringS3Bucket:Z.MONITORING_S3_BUCKET,monitoringS3Endpoint:Z.MONITORING_S3_ENDPOINT,monitoringS3Region:Z.MONITORING_S3_REGION,monitoringS3AccessKeyId:Z.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:Z.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:Z.MONITORING_S3_PREFIX,duckdbExtensionDirectory:Z.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:Z.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:xV0("DUCKDB_THREADS",Z.DUCKDB_THREADS),isCli:!0,noTui:$.noTui===!0,podName:Z.POD_NAME||crypto.randomUUID(),dispatchRole:AG6(dl(Z.STUDIO_DISPATCH_ROLE,Z.MESH_DISPATCH_ROLE)),sandboxProviderKind:VG6(Z.STUDIO_SANDBOX_PROVIDER),sandboxStickyHeadRefEnabled:aK(Z.SANDBOX_STICKY_HEAD_REF),taskBoardRerunReusesPrBranch:aK(Z.TASK_BOARD_RERUN_REUSES_PR_BRANCH),sandboxReleaseOnRunEndEnabled:aK(Z.SANDBOX_RELEASE_ON_RUN_END),sandboxReleaseGraceMs:YJ("SANDBOX_RELEASE_GRACE_MS",Z.SANDBOX_RELEASE_GRACE_MS,120000),decoSupabaseUrl:Z.DECO_SUPABASE_URL,decoSupabaseServiceKey:Z.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:Z.FIRECRAWL_API_KEY,reportsInternalApiUrl:dl(Z.REPORTS_INTERNAL_API_URL,Z.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:dl(Z.REPORTS_INTERNAL_API_KEY,Z.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:Z.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:Z.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:Z.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:Z.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:Z.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:Z.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:Z.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:ml(Z.DATABASE_URL),externalNatsUrl:ml(G),skipMigrations:$.skipMigrations}}var PG6,TG6,MG6;var hx=O(()=>{PG6=new Set(["all","worker","api"]);TG6=new Set(["production","development","test"]);MG6=new Set(["agent-sandbox","user-desktop"])});function T8($,Z={}){let{signal:X}=Z;if(X?.aborted)return Promise.reject(X.reason);return new Promise((Q,Y)=>{let G=()=>{clearTimeout(+K),Y(X?.reason)},K=kG6(()=>{X?.removeEventListener("abort",G),Q()},$);X?.addEventListener("abort",G,{once:!0})})}function kG6($,Z){if(Z=Math.trunc(Math.max(Z,0)||0),Z<=bV0){let G=Number(setTimeout($,Z));return{valueOf:()=>G}}let X=Date.now(),Q,Y=()=>{let G=Z-(Date.now()-X);Q=G>bV0?Number(setTimeout(Y,bV0)):Number(setTimeout($,G))};return Y(),{valueOf:()=>Q}}var bV0=2147483647;function J7($,Z,X,Q,Y){let G=Math.min($,Z*Q**X);return(1-Y*Math.random())*G}async function T9($,Z){let{multiplier:X=2,maxTimeout:Q=60000,maxAttempts:Y=5,minTimeout:G=1000,jitter:J=1,isRetriable:K=()=>!0,signal:W}=Z??{};if(!Number.isInteger(Y)||Y<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${Y}`);if(!Number.isFinite(X)||X<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${X}`);if(Number.isNaN(Q)||Q<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${Q}`);if(Number.isNaN(G)||G<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${G}`);if(G>Q)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${G}', 'maxTimeout=${Q}'`);if(Number.isNaN(J)||J<0||J>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${J}`);let H=0;while(!0){W?.throwIfAborted();try{return await $()}catch(U){if(!K(U))throw U;if(H+1>=Y)throw new xY(U,Y);let N=J7(Q,G,H,X,J);await T8(N,W?{signal:W}:void 0)}H++}}var xY;var vw1=O(()=>{xY=class xY extends Error{constructor($,Z){super(`Retrying exceeded the maxAttempts (${Z}).`);this.name="RetryError",this.cause=$}}});var a4=O(()=>{vw1()});class z10{static encode($){if(typeof $==="string")return btoa($);let Z=Array.from($);return btoa(String.fromCharCode(...Z))}static decode($,Z=!1){let X=atob($);if(!Z)return X;let Q=new Uint8Array(X.length);for(let Y=0;Y<X.length;Y++)Q[Y]=X.charCodeAt(Y);return Q}}class ux{static encode($){return ux.toB64URLEncoding(z10.encode($))}static decode($,Z=!1){return z10.decode(ux.fromB64URLEncoding($),Z)}static toB64URLEncoding($){return $=$.replace(/=/g,""),$=$.replace(/\+/g,"-"),$.replace(/\//g,"_")}static fromB64URLEncoding($){return $=$.replace(/_/g,"/"),$=$.replace(/-/g,"+"),$}}function CG6($){fw1=$}function bG(){return fw1}class j10{static encode($){let Z=0,X=0,Q=new Uint8Array($),Y=new Uint8Array($.byteLength*2),G=0;for(let J=0;J<Q.byteLength;J++){X=X<<8|Q[J],Z+=8;while(Z>=5){let K=X>>>Z-5&31;Y[G++]=yV0.charAt(K).charCodeAt(0),Z-=5}}if(Z>0){let J=X<<5-Z&31;Y[G++]=yV0.charAt(J).charCodeAt(0)}return Y.slice(0,G)}static decode($){let Z=0,X=0,Q=0,Y=new Uint8Array($),G=new Uint8Array(Y.byteLength*5/8|0);for(let J=0;J<Y.byteLength;J++){let K=String.fromCharCode(Y[J]),W=yV0.indexOf(K);if(W===-1)throw Error("Illegal Base32 character: "+Y[J]);if(X=X<<5|W,Z+=5,Z>=8)G[Q++]=X>>>Z-8&255,Z-=8}return G.slice(0,Q)}}class nl{static checksum($){let Z=0;for(let X=0;X<$.byteLength;X++){let Q=$[X];Z=Z<<8&65535^_G6[(Z>>8^Q)&255]}return Z}static validate($,Z){return nl.checksum($)==Z}}function bw1(){return uV0(x6.Operator)}function P10(){return uV0(x6.Account)}function yw1(){return uV0(x6.User)}class KD{static isValidPublicPrefix($){return $==x6.Server||$==x6.Operator||$==x6.Cluster||$==x6.Account||$==x6.User||$==x6.Curve}static startsWithValidPrefix($){let Z=$[0];return Z=="S"||Z=="P"||Z=="O"||Z=="N"||Z=="C"||Z=="A"||Z=="U"||Z=="X"}static isValidPrefix($){return this.parsePrefix($)!==x6.Unknown}static parsePrefix($){switch($){case x6.Seed:return x6.Seed;case x6.Private:return x6.Private;case x6.Operator:return x6.Operator;case x6.Server:return x6.Server;case x6.Cluster:return x6.Cluster;case x6.Account:return x6.Account;case x6.User:return x6.User;case x6.Curve:return x6.Curve;default:return x6.Unknown}}}class GZ{static encode($,Z){if(!Z||!(Z instanceof Uint8Array))throw new n8(m8.SerializationError);if(!KD.isValidPrefix($))throw new n8(m8.InvalidPrefixByte);return GZ._encode(!1,$,Z)}static encodeSeed($,Z){if(!Z)throw new n8(m8.ApiError);if(!KD.isValidPublicPrefix($))throw new n8(m8.InvalidPrefixByte);if(Z.byteLength!==32)throw new n8(m8.InvalidSeedLen);return GZ._encode(!0,$,Z)}static decode($,Z){if(!KD.isValidPrefix($))throw new n8(m8.InvalidPrefixByte);let X=GZ._decode(Z);if(X[0]!==$)throw new n8(m8.InvalidPrefixByte);return X.slice(1)}static decodeSeed($){let Z=GZ._decode($),X=GZ._decodePrefix(Z);if(X[0]!=x6.Seed)throw new n8(m8.InvalidSeed);if(!KD.isValidPublicPrefix(X[1]))throw new n8(m8.InvalidPrefixByte);return{buf:Z.slice(2),prefix:X[1]}}static _encode($,Z,X){let Q=$?2:1,Y=X.byteLength,G=Q+Y+2,J=Q+Y,K=new Uint8Array(G);if($){let U=GZ._encodePrefix(x6.Seed,Z);K.set(U)}else K[0]=Z;K.set(X,Q);let W=nl.checksum(K.slice(0,J));return new DataView(K.buffer).setUint16(J,W,!0),j10.encode(K)}static _decode($){if($.byteLength<4)throw new n8(m8.InvalidEncoding);let Z;try{Z=j10.decode($)}catch(J){throw new n8(m8.InvalidEncoding,J)}let X=Z.byteLength-2,Y=new DataView(Z.buffer).getUint16(X,!0),G=Z.slice(0,X);if(!nl.validate(G,Y))throw new n8(m8.InvalidChecksum);return G}static _encodePrefix($,Z){let X=$|Z>>5,Q=(Z&31)<<3;return new Uint8Array([X,Q])}static _decodePrefix($){let Z=$[0]&248,X=($[0]&7)<<5|($[1]&248)>>3;return new Uint8Array([Z,X])}}class gV0{seed;constructor($){this.seed=$}getRawSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=GZ.decodeSeed(this.seed),Z=bG().fromSeed(this.getRawSeed()),X=GZ.encode($.prefix,Z.publicKey);return new TextDecoder().decode(X)}getPrivateKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=bG().fromSeed(this.getRawSeed());return GZ.encode(x6.Private,$.secretKey)}sign($){if(!this.seed)throw new n8(m8.ClearedPair);let Z=bG().fromSeed(this.getRawSeed());return bG().sign($,Z.secretKey)}verify($,Z){if(!this.seed)throw new n8(m8.ClearedPair);let X=bG().fromSeed(this.getRawSeed());return bG().verify($,Z,X.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal($,Z,X){throw new n8(m8.InvalidNKeyOperation)}open($,Z){throw new n8(m8.InvalidNKeyOperation)}}class hV0{seed;constructor($){this.seed=$}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.encode(x6.Private,this.seed)}getPublicKey(){if(!this.seed)throw new n8(m8.ClearedPair);let $=bG().scalarBaseMultiply(this.seed),Z=GZ.encode(x6.Curve,$);return new TextDecoder().decode(Z)}getSeed(){if(!this.seed)throw new n8(m8.ClearedPair);return GZ.encodeSeed(x6.Curve,this.seed)}sign(){throw new n8(m8.InvalidCurveOperation)}verify(){throw new n8(m8.InvalidCurveOperation)}decodePubCurveKey($){try{let Z=j10.decode(new TextEncoder().encode($));if(Z.byteLength!==35)throw new n8(m8.InvalidCurveKey);if(Z[0]!==x6.Curve)throw new n8(m8.InvalidPublicKey);let X=Z.byteLength-2,Y=new DataView(Z.buffer).getUint16(X,!0),G=Z.slice(0,X);if(!nl.validate(G,Y))throw new n8(m8.InvalidChecksum);return G.slice(1)}catch(Z){throw new n8(m8.InvalidRecipient,Z)}}seal($,Z,X){if(!this.seed)throw new n8(m8.ClearedPair);if(!X)X=bG().randomBytes(xw1);let Q=this.decodePubCurveKey(Z),Y=new Uint8Array(JD.length+24);Y.set(JD,0),Y.set(X,JD.length);let G=bG().seal($,X,Q,this.seed),J=new Uint8Array(Y.length+G.length);return J.set(Y),J.set(G,Y.length),J}open($,Z){if(!this.seed)throw new n8(m8.ClearedPair);if($.length<=24+JD.length)throw new n8(m8.InvalidEncrypted);for(let Y=0;Y<JD.length;Y++)if($[Y]!==JD[Y])throw new n8(m8.InvalidEncrypted);let X=this.decodePubCurveKey(Z);$=$.slice(JD.length);let Q=$.slice(0,24);return $=$.slice(xw1),bG().open($,Q,X,this.seed)}}function uV0($){let Z=$===x6.Curve?32:32,X=bG().randomBytes(Z),Q=GZ.encodeSeed($,new Uint8Array(X));return $===x6.Curve?new hV0(new Uint8Array(X)):new gV0(Q)}class gw1{publicKey;constructor($){this.publicKey=$}getPublicKey(){if(!this.publicKey)throw new n8(m8.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.PublicKeyOnly)}sign($){if(!this.publicKey)throw new n8(m8.ClearedPair);throw new n8(m8.CannotSign)}verify($,Z){if(!this.publicKey)throw new n8(m8.ClearedPair);let X=GZ._decode(this.publicKey);return bG().verify($,Z,X.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal($,Z,X){throw new n8(m8.InvalidNKeyOperation)}open($,Z){throw new n8(m8.InvalidNKeyOperation)}}function vG6($){let Z=new TextEncoder().encode($),X=GZ._decode(Z),Q=KD.parsePrefix(X[0]);if(KD.isValidPublicPrefix(Q))return new gw1(Z);throw new n8(m8.InvalidPublicKey)}function xG6($){let Z=GZ.decodeSeed($);if(Z.prefix!==x6.Curve)throw new n8(m8.InvalidCurveSeed);if(Z.buf.byteLength!==32)throw new n8(m8.InvalidSeedLen);return new hV0(Z.buf)}function cV0($){if(GZ.decodeSeed($).prefix===x6.Curve)return xG6($);return new gV0($)}function fG6($){if($ instanceof Uint8Array)$=new TextDecoder().decode($);if($.charAt(0)==="S")return cV0(new TextEncoder().encode($));return vG6($)}function WD($,Z="",X=!1){let Q=typeof $==="string"||$ instanceof Uint8Array?fG6($):$,Y=Q.getPublicKey(),G=[];if(!Array.isArray(Z)){if(Z!=="")G.push(Z)}else G.push(...Z);if(Z.length>0&&G.indexOf(Y.charAt(0))===-1)throw Error(`unexpected type ${Y.charAt(0)} - wanted ${G}`);if(X)Q.getPrivateKey();return Q}function bG6($={}){return hw1({data:-1,payload:-1,subs:-1},$)}function hw1($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.assign($,Q)}return $}function lV0($){let{exp:Z,nbf:X,aud:Q}=$;return hw1({},{exp:Z,nbf:X,aud:Q})}function dV0($={}){if(!$.algorithm)$.algorithm=GJ.v2;return $}async function uw1($,Z,X={},Q={}){Z=WD(Z,"O",!Q.signer);let Y=Z;if(Q.signer)Y=WD(Q.signer,["O"],!0);let G=lV0(Q);G.name=$,G.sub=Z.getPublicKey(),G.nats=X;let J=dV0(Q);return iV0(J.algorithm,il.Operator,G),await nV0(J.algorithm,G,Y)}async function mV0($,Z,X={},Q={}){Z=WD(Z,"A",!Q.signer);let Y=Z;if(Q.signer)Y=WD(Q.signer,["O","A"],!0);let G=lV0(Q);G.name=$,G.sub=Z.getPublicKey(),G.nats=X;let J=dV0(Q);return iV0(J.algorithm,il.Account,G),await nV0(J.algorithm,G,Y)}async function cw1($,Z,X,Q={},Y={}){X=WD(X,"A",!Y.signer);let G=X;if(Y.signer)G=WD(Y.signer,"A",!0);Z=WD(Z,"U");let J=lV0(Y);if(J.name=$,J.sub=Z.getPublicKey(),J.nats=Y.scopedUser?Q:bG6(Q),Y.signer)J.nats.issuer_account=X.getPublicKey();let K=dV0(Y);return iV0(K.algorithm,il.User,J),await nV0(K.algorithm,J,G)}function iV0($,Z,X){if(X.aud=X.aud||"NATS",$===GJ.v2)X.nats.type=Z;else X.type=Z}function yG6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*255)}function gG6(){let $=new Uint8Array(12);yG6($);let Z=Array.from($);return btoa(String.fromCharCode(...Z))}async function nV0($,Z,X){Z.iss=X.getPublicKey(),Z.iat=Math.floor(Date.now()/1000);let Q=Z;if($===GJ.v2)Q.nats.version=2;let Y=new TextEncoder,G=Y.encode(JSON.stringify(Z));if(globalThis.crypto&&globalThis.crypto.subtle){let N=await globalThis.crypto.subtle.digest("SHA-512",G);Z.jti=z10.encode(new Uint8Array(N))}else Z.jti=gG6();let J={typ:"JWT",alg:$},K=ux.encode(JSON.stringify(J)),W=ux.encode(JSON.stringify(Z)),H=$===GJ.v2?`${K}.${W}`:W,U=ux.encode(X.sign(Y.encode(H)));return`${K}.${W}.${U}`}function lw1($,Z){let X=new TextDecoder().decode(Z.getSeed()),Q=`-----BEGIN NATS USER JWT-----
|
|
85
85
|
${$}
|
|
86
86
|
------END NATS USER JWT------
|
|
87
87
|
|
|
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var sl1=O(()=>{hx()});f
|
|
|
1332
1332
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await wb`
|
|
1333
1333
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1334
1334
|
`.execute($)}}async function Lp1($){await td6($),await od6($);let Z=new Bp1({db:$,provider:{getMigrations:()=>Promise.resolve(ld0)}}),{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 rd6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Fu0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Pw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Lp1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ad6(){let $=N6(),Z=new Bp1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ld0)}}),{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 Ep1=O(()=>{wp1();wu0();e7()});async function I90($){let Z={...process.env},X=E10($,Z);console.log(_w1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?km1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (f50(),x50)),{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(() => (wu0(),Cm1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (e7(),pd1)),{migrateToLatest:U}=await Promise.resolve().then(() => (Ep1(),Dp1)),N=H(G.databaseUrl);await U({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}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return el1(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 dd0=O(()=>{hx();Sm1();v8()});var Pp1={};B0(Pp1,{updateService:()=>ZE,subscribeCliState:()=>nd0,setTuiConsoleIntercepted:()=>q90,setServerUrl:()=>am,setMigrationsDone:()=>rm,setDevMode:()=>$m6,resetCliStateForTests:()=>sd6,isTuiConsoleIntercepted:()=>M90,getCliState:()=>id0,addLogEntry:()=>qw});function zp1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function sd6(){fQ=zp1()}function ed6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function om(){for(let $ of md0)$()}function id0(){return fQ}function nd0($){return md0.add($),()=>md0.delete($)}function ZE($){fQ={...fQ,services:fQ.services.map((Z)=>Z.name===$.name?$:Z)},om()}function rm(){fQ={...fQ,migrationsStatus:"done"},om()}function am($){fQ={...fQ,serverUrl:$},om()}function qw($){let Z=[...fQ.logs,$];fQ={...fQ,logs:Z.length>500?Z.slice(-500):Z},om()}function $m6(){fQ={...fQ,services:[...ed6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},om()}function q90($){jp1=$}function M90(){return jp1}var fQ,md0,jp1=!1;var XE=O(()=>{fQ=zp1();md0=new Set});import{createServer as Ap1}from"net";function Zm6($){return new Promise((Z)=>{let X=Ap1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function sm($){if(await Zm6($))return $;let Z=await new Promise((X,Q)=>{let Y=Ap1();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 pd0=()=>{};function em($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var td0={};B0(td0,{startDevServer:()=>Qm6});import{join as Xm6}from"path";function Tp1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1335
|
-
`);Q=G.pop()??"";for(let J of G){let K=em(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=em(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Qm6($){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 sm(Number(Y)+1):await sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await I90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)ZE({name:L.name,status:"ready",port:L.port});rm();let U=Xm6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Tp1(F.stdout),Tp1(F.stderr);am(G),ZE({name:"Vite",status:"ready",port:Number(Y)}),ZE({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (f50(),x50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var od0=O(()=>{dd0();XE();pd0()});var V90;var rd0=O(()=>{V90={name:"decocms",version:"4.207.0",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",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Gm6,Text as Rp1}from"ink";import{jsx as Jm6,jsxs as Ip1}from"react/jsx-runtime";function qp1({version:$}){return Ip1(Gm6,{flexDirection:"column",marginTop:1,children:[X90.map((Z,X)=>Jm6(Rp1,{color:Q90[X],children:Z},X)),Ip1(Rp1,{dimColor:!0,children:[" v",$]})]})}var Mp1=O(()=>{gm()});import{Box as QE,Text as Mw}from"ink";import{Spinner as Km6}from"@inkjs/ui";import{jsx as iY,jsxs as Bb}from"react/jsx-runtime";function Vp1({status:$}){if($==="pending")return iY(Km6,{label:""});return iY(Mw,{color:"green",children:"\u2713"})}function Wm6($){return`${$.name}: ${$.port||"...."}`}function kp1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Bb(QE,{flexDirection:"column",paddingBottom:1,children:[iY(qp1,{version:V90.version}),iY(QE,{marginBottom:1,children:iY(Mw,{dimColor:!0,children:"\u2500".repeat(80)})}),iY(QE,{children:Bb(Mw,{dimColor:!0,children:["Home: ",X]})}),Bb(QE,{gap:2,children:[$.map((Y)=>Bb(QE,{gap:1,children:[iY(Mw,{children:Wm6(Y)}),iY(Vp1,{status:Y.status})]},Y.name)),Bb(QE,{gap:1,children:[iY(Mw,{children:"Migrations"}),iY(Vp1,{status:Z})]})]}),iY(QE,{children:Q?Bb(Mw,{children:["Open in browser: ",iY(Mw,{color:"cyan",children:Q})]}):iY(Mw,{dimColor:!0,children:"Starting..."})})]})}var Sp1=O(()=>{rd0();Mp1()});import{Box as Hm6,Text as $i}from"ink";import{jsx as ad0,jsxs as sd0}from"react/jsx-runtime";function Um6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Cp1({logs:$}){return ad0(Hm6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ad0($i,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return sd0($i,{children:[sd0($i,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ad0($i,{color:Um6(Z.status),children:Z.status}),sd0($i,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var _p1=()=>{};var ed0={};B0(ed0,{App:()=>wm6});import{Box as Nm6}from"ink";import{useSyncExternalStore as Fm6}from"react";import{jsx as vp1,jsxs as Bm6}from"react/jsx-runtime";function wm6({home:$}){let Z=Fm6(nd0,id0);return Bm6(Nm6,{flexDirection:"column",children:[vp1(kp1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),vp1(Cp1,{logs:Z.logs})]})}var $m0=O(()=>{Sp1();_p1();XE()});var jJ="thread-gate",bU="decopilot-hosted-harness",rG="automations",Vw="background-tools";var xp1="7";function fp1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:xp1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var bp1=()=>{};function Om6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Zm0($,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 yp1(){let $=Om6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Zm0($,"--cpu-prof-dir")??process.cwd(),name:Zm0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Zm0($,"--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 gp1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=aD();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(()=>{}),k90=setInterval(()=>void Z().catch(()=>{}),$),k90.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(k90)clearInterval(k90)}}var k90;var hp1=()=>{};import*as Lm6 from"bun:jsc";function up1(){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{Dm6()}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=Em6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,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 Dm6,Em6;var cp1=O(()=>{({startSamplingProfiler:Dm6,samplingProfilerStackTraces:Em6}=Lm6)});function lp1(){yp1();let $=[gp1(),hd1(),up1()];return()=>{for(let Z of $)Z()}}var dp1=O(()=>{Xu0();hp1();cp1()});var YE=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.RepublishHeaders=mp1.DirectMsgHeaders=mp1.JsHeaders=mp1.AdvisoryKind=void 0;mp1.isOrderedPushConsumerOptions=zm6;mp1.isPullConsumer=jm6;mp1.isPushConsumer=Pm6;mp1.isBoundPushConsumerOptions=Am6;function zm6($){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 jm6($){return $.isPullConsumer()}function Pm6($){return $.isPushConsumer()}function Am6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}mp1.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"};mp1.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"};mp1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};mp1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var nY=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.TD=np1.TE=np1.Empty=void 0;np1.encode=Cm6;np1.decode=_m6;np1.Empty=new Uint8Array(0);np1.TE=new TextEncoder;np1.TD=new TextDecoder;function Sm6(...$){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 Cm6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(np1.TE.encode($[X]));if(Z.length===0)return np1.Empty;if(Z.length===1)return Z[0];return Sm6(...Z)}function _m6($){if(!$||$.length===0)return"";return np1.TD.decode($)}});var pY=_((op1)=>{Object.defineProperty(op1,"__esModule",{value:!0});op1.errors=op1.PermissionViolationError=op1.NoRespondersError=op1.TimeoutError=op1.RequestError=op1.ProtocolError=op1.ConnectionError=op1.DrainingConnectionError=op1.ClosedConnectionError=op1.AuthorizationError=op1.UserAuthenticationExpiredError=op1.InvalidOperationError=op1.InvalidArgumentError=op1.InvalidSubjectError=void 0;class Qm0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}op1.InvalidSubjectError=Qm0;class S90 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 S90(`${$} ${Z}`,X)}}op1.InvalidArgumentError=S90;class Ym0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}op1.InvalidOperationError=Ym0;class C90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new C90($);return null}}op1.UserAuthenticationExpiredError=C90;class _90 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 _90($);return null}}op1.AuthorizationError=_90;class Gm0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}op1.ClosedConnectionError=Gm0;class Jm0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}op1.DrainingConnectionError=Jm0;class Km0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}op1.ConnectionError=Km0;class Wm0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}op1.ProtocolError=Wm0;class Hm0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof v90}}op1.RequestError=Hm0;class Um0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}op1.TimeoutError=Um0;class v90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}op1.NoRespondersError=v90;class x90 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 x90($,X,Q,Y)}}op1.PermissionViolationError=x90;op1.errors={AuthorizationError:_90,ClosedConnectionError:Gm0,ConnectionError:Km0,DrainingConnectionError:Jm0,InvalidArgumentError:S90,InvalidOperationError:Ym0,InvalidSubjectError:Qm0,NoRespondersError:v90,PermissionViolationError:x90,ProtocolError:Wm0,RequestError:Hm0,TimeoutError:Um0,UserAuthenticationExpiredError:C90}});var PJ=_(($t1)=>{Object.defineProperty($t1,"__esModule",{value:!0});$t1.SimpleMutex=$t1.Perf=void 0;$t1.extend=om6;$t1.render=rm6;$t1.timeout=am6;$t1.delay=sm6;$t1.deadline=em6;$t1.deferred=Fm0;$t1.debugDeferred=$i6;$t1.shuffle=Zi6;$t1.collect=Xi6;$t1.jitter=ep1;$t1.backoff=Qi6;$t1.nanos=Yi6;$t1.millis=Gi6;$t1.randomToken=Wi6;var tm6=nY(),Nm0=pY();function om6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rm6($){return tm6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function am6($,Z=!0){let X=Z?new Nm0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Nm0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sm6($=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 em6($,Z=1000){let X=Fm0(),Q=setTimeout(()=>{X.reject(new Nm0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Fm0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $i6(){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 Zi6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xi6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ap1{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})}),$}}$t1.Perf=ap1;class sp1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Fm0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}$t1.SimpleMutex=sp1;function ep1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qi6($=[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 ep1(X>Z?$[Z]:$[X])}}}function Yi6($){return $*1e6}function Gi6($){return Math.floor($/1e6)}var Ji6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yU=new Uint8Array(62);for(let $=0;$<62;$++)yU[$]=Ji6.charCodeAt($);var Ki6=218340105584896;function Wi6(){let $=Math.floor(Math.random()*Ki6),Z=$%62,X=yU[Z];$=($-Z)/62,Z=$%62;let Q=yU[Z];$=($-Z)/62,Z=$%62;let Y=yU[Z];$=($-Z)/62,Z=$%62;let G=yU[Z];$=($-Z)/62,Z=$%62;let J=yU[Z];$=($-Z)/62,Z=$%62;let K=yU[Z];$=($-Z)/62,Z=$%62;let W=yU[Z];$=($-Z)/62;let H=yU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Wt1=_((Jt1)=>{Object.defineProperty(Jt1,"__esModule",{value:!0});Jt1.nuid=Jt1.NuidImpl=void 0;var Ri6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kw=62,b90=12,Yt1=10,Xt1=33,Ii6=333,Qt1=b90+Yt1,Bm0=new Uint8Array(kw);for(let $=0;$<kw;$++)Bm0[$]=Ri6.charCodeAt($);var f90=4294967296,Gt1=BigInt(kw)**BigInt(Yt1),Zi=Number(Gt1/(1n<<32n)),wm0=Number(Gt1%(1n<<32n));function qi6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Mi6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qi6($)}class Om0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Qt1),this.cbuf=new Uint8Array(b90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Zi+1)),this.seqLo=Math.floor(Math.random()*f90);while($++<8&&this.seqHi===Zi&&this.seqLo>=wm0);if(this.seqHi===Zi&&this.seqLo>=wm0)this.seqLo=0;this.inc=Math.random()*(Ii6-Xt1)+Xt1|0}setPre(){Mi6(this.cbuf);for(let $=0;$<b90;$++)this.buf[$]=Bm0[this.cbuf[$]%kw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Qt1-1;X>=b90;X--){let Q=Math.floor($/kw),G=($-Q*kw)*f90+Z,J=Math.floor(G/kw),K=G-J*kw;this.buf[X]=Bm0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=f90)this.seqLo-=f90,this.seqHi+=1;if(this.seqHi>Zi||this.seqHi===Zi&&this.seqLo>=wm0)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()}}Jt1.NuidImpl=Om0;Jt1.nuid=new Om0});var Ft1=_((Ut1)=>{Object.defineProperty(Ut1,"__esModule",{value:!0});Ut1.nuid=Ut1.Nuid=void 0;var Ht1=Wt1();Ut1.Nuid=Ht1.NuidImpl;Ut1.nuid=Ht1.nuid});var g90=_((y90)=>{Object.defineProperty(y90,"__esModule",{value:!0});y90.nuid=y90.Nuid=void 0;var wt1=Ft1();Object.defineProperty(y90,"Nuid",{enumerable:!0,get:function(){return wt1.Nuid}});Object.defineProperty(y90,"nuid",{enumerable:!0,get:function(){return wt1.nuid}})});var Sw=_((Bt1)=>{Object.defineProperty(Bt1,"__esModule",{value:!0});Bt1.DEFAULT_HOST=Bt1.DEFAULT_PORT=Bt1.Match=void 0;Bt1.syncIterator=vi6;Bt1.createInbox=xi6;var Ci6=g90(),_i6=pY();Bt1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function vi6($){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 xi6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _i6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ci6.nuid.next()}`}Bt1.DEFAULT_PORT=4222;Bt1.DEFAULT_HOST="127.0.0.1"});var Xi=_((Et1)=>{Object.defineProperty(Et1,"__esModule",{value:!0});Et1.DataBuffer=void 0;var Lt1=nY();class Dt1{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 Lt1.TE.encode($)}static toAscii($){return Lt1.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}}Et1.DataBuffer=Dt1});var GE=_((Pt1)=>{Object.defineProperty(Pt1,"__esModule",{value:!0});Pt1.LF=Pt1.CR=Pt1.CRLF=Pt1.CR_LF_LEN=Pt1.CR_LF=void 0;Pt1.setTransportFactory=li6;Pt1.defaultPort=di6;Pt1.getUrlParseFn=mi6;Pt1.newTransport=ii6;Pt1.getResolveFn=ni6;Pt1.protoLen=jt1;Pt1.extractProtocolMessage=pi6;var hi6=nY(),ui6=Sw(),ci6=Xi(),tY;function li6($){tY=$}function di6(){return tY!==void 0&&tY.defaultPort!==void 0?tY.defaultPort:ui6.DEFAULT_PORT}function mi6(){return tY!==void 0&&tY.urlParseFn?tY.urlParseFn:void 0}function ii6(){if(!tY||typeof tY.factory!=="function")throw Error("transport fn is not set");return tY.factory()}function ni6(){return tY!==void 0&&tY.dnsResolveFn?tY.dnsResolveFn:void 0}Pt1.CR_LF=`\r
|
|
1335
|
+
`);Q=G.pop()??"";for(let J of G){let K=em(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=em(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Qm6($){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 sm(Number(Y)+1):await sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await I90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)ZE({name:L.name,status:"ready",port:L.port});rm();let U=Xm6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Tp1(F.stdout),Tp1(F.stderr);am(G),ZE({name:"Vite",status:"ready",port:Number(Y)}),ZE({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (f50(),x50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var od0=O(()=>{dd0();XE();pd0()});var V90;var rd0=O(()=>{V90={name:"decocms",version:"4.207.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Gm6,Text as Rp1}from"ink";import{jsx as Jm6,jsxs as Ip1}from"react/jsx-runtime";function qp1({version:$}){return Ip1(Gm6,{flexDirection:"column",marginTop:1,children:[X90.map((Z,X)=>Jm6(Rp1,{color:Q90[X],children:Z},X)),Ip1(Rp1,{dimColor:!0,children:[" v",$]})]})}var Mp1=O(()=>{gm()});import{Box as QE,Text as Mw}from"ink";import{Spinner as Km6}from"@inkjs/ui";import{jsx as iY,jsxs as Bb}from"react/jsx-runtime";function Vp1({status:$}){if($==="pending")return iY(Km6,{label:""});return iY(Mw,{color:"green",children:"\u2713"})}function Wm6($){return`${$.name}: ${$.port||"...."}`}function kp1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Bb(QE,{flexDirection:"column",paddingBottom:1,children:[iY(qp1,{version:V90.version}),iY(QE,{marginBottom:1,children:iY(Mw,{dimColor:!0,children:"\u2500".repeat(80)})}),iY(QE,{children:Bb(Mw,{dimColor:!0,children:["Home: ",X]})}),Bb(QE,{gap:2,children:[$.map((Y)=>Bb(QE,{gap:1,children:[iY(Mw,{children:Wm6(Y)}),iY(Vp1,{status:Y.status})]},Y.name)),Bb(QE,{gap:1,children:[iY(Mw,{children:"Migrations"}),iY(Vp1,{status:Z})]})]}),iY(QE,{children:Q?Bb(Mw,{children:["Open in browser: ",iY(Mw,{color:"cyan",children:Q})]}):iY(Mw,{dimColor:!0,children:"Starting..."})})]})}var Sp1=O(()=>{rd0();Mp1()});import{Box as Hm6,Text as $i}from"ink";import{jsx as ad0,jsxs as sd0}from"react/jsx-runtime";function Um6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Cp1({logs:$}){return ad0(Hm6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ad0($i,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return sd0($i,{children:[sd0($i,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ad0($i,{color:Um6(Z.status),children:Z.status}),sd0($i,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var _p1=()=>{};var ed0={};B0(ed0,{App:()=>wm6});import{Box as Nm6}from"ink";import{useSyncExternalStore as Fm6}from"react";import{jsx as vp1,jsxs as Bm6}from"react/jsx-runtime";function wm6({home:$}){let Z=Fm6(nd0,id0);return Bm6(Nm6,{flexDirection:"column",children:[vp1(kp1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),vp1(Cp1,{logs:Z.logs})]})}var $m0=O(()=>{Sp1();_p1();XE()});var jJ="thread-gate",bU="decopilot-hosted-harness",rG="automations",Vw="background-tools";var xp1="7";function fp1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:xp1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var bp1=()=>{};function Om6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Zm0($,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 yp1(){let $=Om6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Zm0($,"--cpu-prof-dir")??process.cwd(),name:Zm0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Zm0($,"--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 gp1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=aD();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(()=>{}),k90=setInterval(()=>void Z().catch(()=>{}),$),k90.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(k90)clearInterval(k90)}}var k90;var hp1=()=>{};import*as Lm6 from"bun:jsc";function up1(){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{Dm6()}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=Em6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,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 Dm6,Em6;var cp1=O(()=>{({startSamplingProfiler:Dm6,samplingProfilerStackTraces:Em6}=Lm6)});function lp1(){yp1();let $=[gp1(),hd1(),up1()];return()=>{for(let Z of $)Z()}}var dp1=O(()=>{Xu0();hp1();cp1()});var YE=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.RepublishHeaders=mp1.DirectMsgHeaders=mp1.JsHeaders=mp1.AdvisoryKind=void 0;mp1.isOrderedPushConsumerOptions=zm6;mp1.isPullConsumer=jm6;mp1.isPushConsumer=Pm6;mp1.isBoundPushConsumerOptions=Am6;function zm6($){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 jm6($){return $.isPullConsumer()}function Pm6($){return $.isPushConsumer()}function Am6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}mp1.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"};mp1.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"};mp1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};mp1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var nY=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.TD=np1.TE=np1.Empty=void 0;np1.encode=Cm6;np1.decode=_m6;np1.Empty=new Uint8Array(0);np1.TE=new TextEncoder;np1.TD=new TextDecoder;function Sm6(...$){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 Cm6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(np1.TE.encode($[X]));if(Z.length===0)return np1.Empty;if(Z.length===1)return Z[0];return Sm6(...Z)}function _m6($){if(!$||$.length===0)return"";return np1.TD.decode($)}});var pY=_((op1)=>{Object.defineProperty(op1,"__esModule",{value:!0});op1.errors=op1.PermissionViolationError=op1.NoRespondersError=op1.TimeoutError=op1.RequestError=op1.ProtocolError=op1.ConnectionError=op1.DrainingConnectionError=op1.ClosedConnectionError=op1.AuthorizationError=op1.UserAuthenticationExpiredError=op1.InvalidOperationError=op1.InvalidArgumentError=op1.InvalidSubjectError=void 0;class Qm0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}op1.InvalidSubjectError=Qm0;class S90 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 S90(`${$} ${Z}`,X)}}op1.InvalidArgumentError=S90;class Ym0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}op1.InvalidOperationError=Ym0;class C90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new C90($);return null}}op1.UserAuthenticationExpiredError=C90;class _90 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 _90($);return null}}op1.AuthorizationError=_90;class Gm0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}op1.ClosedConnectionError=Gm0;class Jm0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}op1.DrainingConnectionError=Jm0;class Km0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}op1.ConnectionError=Km0;class Wm0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}op1.ProtocolError=Wm0;class Hm0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof v90}}op1.RequestError=Hm0;class Um0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}op1.TimeoutError=Um0;class v90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}op1.NoRespondersError=v90;class x90 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 x90($,X,Q,Y)}}op1.PermissionViolationError=x90;op1.errors={AuthorizationError:_90,ClosedConnectionError:Gm0,ConnectionError:Km0,DrainingConnectionError:Jm0,InvalidArgumentError:S90,InvalidOperationError:Ym0,InvalidSubjectError:Qm0,NoRespondersError:v90,PermissionViolationError:x90,ProtocolError:Wm0,RequestError:Hm0,TimeoutError:Um0,UserAuthenticationExpiredError:C90}});var PJ=_(($t1)=>{Object.defineProperty($t1,"__esModule",{value:!0});$t1.SimpleMutex=$t1.Perf=void 0;$t1.extend=om6;$t1.render=rm6;$t1.timeout=am6;$t1.delay=sm6;$t1.deadline=em6;$t1.deferred=Fm0;$t1.debugDeferred=$i6;$t1.shuffle=Zi6;$t1.collect=Xi6;$t1.jitter=ep1;$t1.backoff=Qi6;$t1.nanos=Yi6;$t1.millis=Gi6;$t1.randomToken=Wi6;var tm6=nY(),Nm0=pY();function om6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rm6($){return tm6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function am6($,Z=!0){let X=Z?new Nm0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Nm0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sm6($=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 em6($,Z=1000){let X=Fm0(),Q=setTimeout(()=>{X.reject(new Nm0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Fm0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $i6(){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 Zi6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xi6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ap1{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})}),$}}$t1.Perf=ap1;class sp1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Fm0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}$t1.SimpleMutex=sp1;function ep1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qi6($=[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 ep1(X>Z?$[Z]:$[X])}}}function Yi6($){return $*1e6}function Gi6($){return Math.floor($/1e6)}var Ji6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yU=new Uint8Array(62);for(let $=0;$<62;$++)yU[$]=Ji6.charCodeAt($);var Ki6=218340105584896;function Wi6(){let $=Math.floor(Math.random()*Ki6),Z=$%62,X=yU[Z];$=($-Z)/62,Z=$%62;let Q=yU[Z];$=($-Z)/62,Z=$%62;let Y=yU[Z];$=($-Z)/62,Z=$%62;let G=yU[Z];$=($-Z)/62,Z=$%62;let J=yU[Z];$=($-Z)/62,Z=$%62;let K=yU[Z];$=($-Z)/62,Z=$%62;let W=yU[Z];$=($-Z)/62;let H=yU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Wt1=_((Jt1)=>{Object.defineProperty(Jt1,"__esModule",{value:!0});Jt1.nuid=Jt1.NuidImpl=void 0;var Ri6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kw=62,b90=12,Yt1=10,Xt1=33,Ii6=333,Qt1=b90+Yt1,Bm0=new Uint8Array(kw);for(let $=0;$<kw;$++)Bm0[$]=Ri6.charCodeAt($);var f90=4294967296,Gt1=BigInt(kw)**BigInt(Yt1),Zi=Number(Gt1/(1n<<32n)),wm0=Number(Gt1%(1n<<32n));function qi6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Mi6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qi6($)}class Om0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Qt1),this.cbuf=new Uint8Array(b90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Zi+1)),this.seqLo=Math.floor(Math.random()*f90);while($++<8&&this.seqHi===Zi&&this.seqLo>=wm0);if(this.seqHi===Zi&&this.seqLo>=wm0)this.seqLo=0;this.inc=Math.random()*(Ii6-Xt1)+Xt1|0}setPre(){Mi6(this.cbuf);for(let $=0;$<b90;$++)this.buf[$]=Bm0[this.cbuf[$]%kw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Qt1-1;X>=b90;X--){let Q=Math.floor($/kw),G=($-Q*kw)*f90+Z,J=Math.floor(G/kw),K=G-J*kw;this.buf[X]=Bm0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=f90)this.seqLo-=f90,this.seqHi+=1;if(this.seqHi>Zi||this.seqHi===Zi&&this.seqLo>=wm0)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()}}Jt1.NuidImpl=Om0;Jt1.nuid=new Om0});var Ft1=_((Ut1)=>{Object.defineProperty(Ut1,"__esModule",{value:!0});Ut1.nuid=Ut1.Nuid=void 0;var Ht1=Wt1();Ut1.Nuid=Ht1.NuidImpl;Ut1.nuid=Ht1.nuid});var g90=_((y90)=>{Object.defineProperty(y90,"__esModule",{value:!0});y90.nuid=y90.Nuid=void 0;var wt1=Ft1();Object.defineProperty(y90,"Nuid",{enumerable:!0,get:function(){return wt1.Nuid}});Object.defineProperty(y90,"nuid",{enumerable:!0,get:function(){return wt1.nuid}})});var Sw=_((Bt1)=>{Object.defineProperty(Bt1,"__esModule",{value:!0});Bt1.DEFAULT_HOST=Bt1.DEFAULT_PORT=Bt1.Match=void 0;Bt1.syncIterator=vi6;Bt1.createInbox=xi6;var Ci6=g90(),_i6=pY();Bt1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function vi6($){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 xi6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _i6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ci6.nuid.next()}`}Bt1.DEFAULT_PORT=4222;Bt1.DEFAULT_HOST="127.0.0.1"});var Xi=_((Et1)=>{Object.defineProperty(Et1,"__esModule",{value:!0});Et1.DataBuffer=void 0;var Lt1=nY();class Dt1{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 Lt1.TE.encode($)}static toAscii($){return Lt1.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}}Et1.DataBuffer=Dt1});var GE=_((Pt1)=>{Object.defineProperty(Pt1,"__esModule",{value:!0});Pt1.LF=Pt1.CR=Pt1.CRLF=Pt1.CR_LF_LEN=Pt1.CR_LF=void 0;Pt1.setTransportFactory=li6;Pt1.defaultPort=di6;Pt1.getUrlParseFn=mi6;Pt1.newTransport=ii6;Pt1.getResolveFn=ni6;Pt1.protoLen=jt1;Pt1.extractProtocolMessage=pi6;var hi6=nY(),ui6=Sw(),ci6=Xi(),tY;function li6($){tY=$}function di6(){return tY!==void 0&&tY.defaultPort!==void 0?tY.defaultPort:ui6.DEFAULT_PORT}function mi6(){return tY!==void 0&&tY.urlParseFn?tY.urlParseFn:void 0}function ii6(){if(!tY||typeof tY.factory!=="function")throw Error("transport fn is not set");return tY.factory()}function ni6(){return tY!==void 0&&tY.dnsResolveFn?tY.dnsResolveFn:void 0}Pt1.CR_LF=`\r
|
|
1336
1336
|
`;Pt1.CR_LF_LEN=Pt1.CR_LF.length;Pt1.CRLF=ci6.DataBuffer.fromAscii(Pt1.CR_LF);Pt1.CR=new Uint8Array(Pt1.CRLF)[0];Pt1.LF=new Uint8Array(Pt1.CRLF)[1];function jt1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Pt1.CR&&$[X]===Pt1.LF)return X+1}return 0}function pi6($){let Z=jt1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return hi6.TD.decode(Q)}return""}});var jm0=_((kt1)=>{Object.defineProperty(kt1,"__esModule",{value:!0});kt1.ipV4=qt1;kt1.isIP=Yn6;kt1.parseIP=Mt1;var Qi=4,JE=16,h90=48,It1=57,Tt1=65,Xn6=70,Rt1=97,Qn6=102,zm0=16777215;function qt1($,Z,X,Q){let Y=new Uint8Array(JE);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 Yn6($){return Mt1($)!==void 0}function Mt1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Vt1($);case":":return Gn6($)}return}function Vt1($){let Z=new Uint8Array(Qi);for(let X=0;X<Qi;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Jn6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return qt1(Z[0],Z[1],Z[2],Z[3])}function Gn6($){let Z=new Uint8Array(JE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<JE){let{n:Y,c:G,ok:J}=Kn6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=JE-Qi)return;if(Q+Qi>JE)return;let K=Vt1($);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+=Qi;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<JE){if(X<0)return;let Y=JE-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 Jn6($){let Z=0,X=0;for(Z=0;Z<$.length&&h90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=It1;Z++)if(X=X*10+($.charCodeAt(Z)-h90),X>=zm0)return{n:zm0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Kn6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(h90<=$.charCodeAt(X)&&$.charCodeAt(X)<=It1)Z*=16,Z+=$.charCodeAt(X)-h90;else if(Rt1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Qn6)Z*=16,Z+=$.charCodeAt(X)-Rt1+10;else if(Tt1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Xn6)Z*=16,Z+=$.charCodeAt(X)-Tt1+10;else break;if(Z>=zm0)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 qm0=_((Ct1)=>{Object.defineProperty(Ct1,"__esModule",{value:!0});Ct1.Servers=Ct1.ServerImpl=void 0;Ct1.isIPV4OrHostname=St1;Ct1.hostPort=Im0;var Pm0=GE(),Am0=PJ(),Tm0=jm0(),Nn6=Sw(),Fn6=pY();function St1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Rm0($){return!St1($)}function wn6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Im0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=wn6($),Rm0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Rm0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Nn6.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 Ob{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Im0($);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,Tm0.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}://${Rm0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Ob(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Am0.shuffle)(Z);return this.resolves=Z,Z}}Ct1.ServerImpl=Ob;class u90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Fn6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Pm0.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}=Im0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Ob(Y))}if(this.randomize)(0,Am0.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,Tm0.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,Pm0.getUrlParseFn)();$=X?X($):$;let Q=new Ob($,Z);if((0,Tm0.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 u90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return u90.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,Pm0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Ob(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,Am0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Ct1.Servers=u90});var c90=_((ft1)=>{Object.defineProperty(ft1,"__esModule",{value:!0});ft1.QueuedIteratorImpl=void 0;var Mm0=PJ(),vt1=pY();class xt1{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,Mm0.deferred)(),this.yields=[],this.iterClosed=(0,Mm0.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 vt1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new vt1.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,Mm0.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}}ft1.QueuedIteratorImpl=xt1});var Vm0=_((ht1)=>{Object.defineProperty(ht1,"__esModule",{value:!0});ht1.MuxSubscription=void 0;var Dn6=Sw(),yt1=pY();class gt1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Dn6.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 yt1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new yt1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}ht1.MuxSubscription=gt1});var km0=_((lt1)=>{Object.defineProperty(lt1,"__esModule",{value:!0});lt1.Heartbeat=void 0;var En6=PJ();class ct1{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,En6.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})}}lt1.Heartbeat=ct1});var _m0=_((pt1)=>{Object.defineProperty(pt1,"__esModule",{value:!0});pt1.DenoBuffer=pt1.MAX_SIZE=pt1.AssertionError=void 0;pt1.assert=it1;pt1.concat=nt1;pt1.append=jn6;pt1.readAll=Pn6;pt1.writeAll=An6;var zn6=nY();class Sm0 extends Error{constructor($){super($);this.name="AssertionError"}}pt1.AssertionError=Sm0;function it1($,Z="Assertion failed."){if(!$)throw new Sm0(Z)}var mt1=32768;pt1.MAX_SIZE=4294967294;function l90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function nt1($,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 jn6($,Z){return nt1($,Uint8Array.of(Z))}class Cm0{_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($){it1($<=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=l90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(zn6.TE.encode($))}write($){let Z=this._grow($.byteLength);return l90($,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)l90(this._buf.subarray(this._off),this._buf);else if(Q+$>pt1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,pt1.MAX_SIZE));l90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,pt1.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(mt1);while(!0){let Q=this.capacity-this.length<mt1,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}}}pt1.DenoBuffer=Cm0;function Pn6($){let Z=new Cm0;return Z.readFrom($),Z.bytes()}function An6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var fm0=_((st1)=>{Object.defineProperty(st1,"__esModule",{value:!0});st1.cc=st1.State=st1.Parser=st1.Kind=void 0;st1.describe=kn6;var vm0=_m0(),xm0=nY();st1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function kn6($){let Z,X="";switch($.kind){case st1.Kind.MSG:Z="MSG";break;case st1.Kind.OK:Z="OK";break;case st1.Kind.ERR:Z="ERR",X=xm0.TD.decode($.data);break;case st1.Kind.PING:Z="PING";break;case st1.Kind.PONG:Z="PONG";break;case st1.Kind.INFO:Z="INFO",X=xm0.TD.decode($.data)}return`${Z}: ${X}`}function ot1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var rt1=48,Sn6=57,Lb=67108864;class at1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=st1.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 st1.State.OP_START:switch(X){case st1.cc.M:case st1.cc.m:this.state=st1.State.OP_M,this.hdr=-1,this.ma=ot1();break;case st1.cc.H:case st1.cc.h:this.state=st1.State.OP_H,this.hdr=0,this.ma=ot1();break;case st1.cc.P:case st1.cc.p:this.state=st1.State.OP_P;break;case st1.cc.PLUS:this.state=st1.State.OP_PLUS;break;case st1.cc.MINUS:this.state=st1.State.OP_MINUS;break;case st1.cc.I:case st1.cc.i:this.state=st1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_H:switch(X){case st1.cc.M:case st1.cc.m:this.state=st1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_M:switch(X){case st1.cc.S:case st1.cc.s:this.state=st1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MS:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MSG:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MSG_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.MSG_ARG,this.as=Z}break;case st1.State.MSG_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.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=st1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case st1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:st1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=st1.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:st1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=st1.State.MSG_END;break;case st1.State.MSG_END:switch(X){case st1.cc.NL:this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break;default:continue}break;case st1.State.OP_PLUS:switch(X){case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PLUS_O:switch(X){case st1.cc.K:case st1.cc.k:this.state=st1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PLUS_OK:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.OK}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_MINUS:switch(X){case st1.cc.E:case st1.cc.e:this.state=st1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_E:switch(X){case st1.cc.R:case st1.cc.r:this.state=st1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ER:switch(X){case st1.cc.R:case st1.cc.r:this.state=st1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ERR:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ERR_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.MINUS_ERR_ARG,this.as=Z}break;case st1.State.MINUS_ERR_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.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:st1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case st1.State.OP_P:switch(X){case st1.cc.I:case st1.cc.i:this.state=st1.State.OP_PI;break;case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PO:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PON:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PONG:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.PONG}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_PI:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PIN:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PING:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.PING}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_I:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_IN:switch(X){case st1.cc.F:case st1.cc.f:this.state=st1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INF:switch(X){case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INFO:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INFO_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.INFO_ARG,this.as=Z}break;case st1.State.INFO_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.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:st1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===st1.State.MSG_ARG||this.state===st1.State.MINUS_ERR_ARG||this.state===st1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new vm0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===st1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new vm0.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 vm0.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 st1.cc.SPACE:case st1.cc.TAB:case st1.cc.CR:case st1.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],Lb);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],Lb);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}: ${xm0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case st1.cc.SPACE:case st1.cc.TAB:case st1.cc.CR:case st1.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],Lb),this.ma.size=this.protoParseInt(Z[3],Lb);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],Lb),this.ma.size=this.protoParseInt(Z[4],Lb);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]<rt1||$[Q]>Sn6)return-1;X=X*10+($[Q]-rt1)}return Z!==void 0&&X>Z?-1:X}}st1.Parser=at1;st1.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};st1.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 i90=_(($o1)=>{Object.defineProperty($o1,"__esModule",{value:!0});$o1.MsgHdrsImpl=void 0;$o1.canonicalMIMEHeaderKey=ym0;$o1.headers=vn6;var et1=nY(),AJ=Sw(),m90=pY();function ym0($){let U=!0,N=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw m90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(U&&97<=w&&w<=122)w-=32;else if(!U&&65<=w&&w<=90)w+=32;N[F]=w,U=w==45}return String.fromCharCode(...N)}function vn6($=0,Z=""){if($===0&&Z!=="")throw m90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw m90.InvalidArgumentError.format("description","is required");return new Db($,Z)}var bm0="NATS/1.0";class Db{_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 Db,Q=et1.TD.decode($).split(`\r
|
|
1337
1337
|
`),Y=Q[0];if(Y!==bm0){let G=Y.replace(bm0,"").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 $=bm0;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
|
|
1338
1338
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -2226,7 +2226,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
2226
2226
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
2227
2227
|
</workflows>`,uK8={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:LB4,getId:GX.USAGE_MANAGER}});function rs0($){return Pz.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function DB4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function hY0({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=rs0(Z);if(!Y)return $;let G=await DB4(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 uY0($,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 lK8($,Z,X){let Q={self:e4.SELF($),registry:e4.REGISTRY($),"community-registry":e4.COMMUNITY_REGISTRY($)};await Promise.all(Pz.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 U=J.connections.find((N)=>N.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:U?.selected_resources??null,selected_prompts:U?.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 Pz;var xg=O(()=>{q6();RK8();qK8();VK8();vK8();fK8();yK8();hK8();cK8();Pz=[_K8,TK8,MK8,xK8,IK8,bK8,gK8,uK8]});import{DBOS as cY0}from"@dbos-inc/dbos-sdk";async function EB4($){let Z=N6(),X=new Dy(Z.db);await lK8($.orgId,$.createdBy,X)}async function zB4($){let Z=N6(),X=new Dy(Z.db);for(let Q of Pz){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((U,N)=>U===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 jB4($){await cY0.runStep(()=>EB4($),{name:"installStudioPack"}),await cY0.runStep(()=>zB4($),{name:"backfillSelectedPrompts"})}async function as0($){await cY0.startWorkflow(PB4,{workflowID:`install-studio-pack:${AB4}:${$.orgId}`})($)}async function dK8(){let Z=await N6().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 Promise.all(Array.from(X).map(async([Q,Y])=>{try{await as0({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}}))}var PB4,AB4="v5";var lY0=O(()=>{e7();No0();xg();PB4=cY0.registerWorkflow(jB4,{name:"installStudioPackWorkflow"})});class At{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new At,Z=new At;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 U4}from"zod";var dY0,mK8,iK8,nK8,pK8,tK8,oK8,rK8,aK8,sK8;var fg=O(()=>{dY0=U4.record(U4.string(),U4.array(U4.string())),mK8=U4.object({id:U4.string().describe("Unique identifier for the API key"),name:U4.string().describe("Human-readable name for the API key"),userId:U4.string().describe("ID of the user who owns this API key"),permissions:dY0.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:U4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:U4.string().datetime().describe("When the API key was created (ISO 8601)")}),iK8=U4.object({name:U4.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:dY0.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:U4.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:U4.record(U4.string(),U4.unknown()).optional().describe("Additional metadata to store with the API key")}),nK8=U4.object({id:U4.string().describe("Unique identifier for the API key"),name:U4.string().describe("Human-readable name for the API key"),key:U4.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:dY0.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:U4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:U4.string().datetime().describe("When the API key was created (ISO 8601)")}),pK8=U4.object({}),tK8=U4.object({items:U4.array(mK8).describe("List of API keys (without key values)")}),oK8=U4.object({keyId:U4.string().describe("ID of the API key to update"),name:U4.string().min(1).max(64).optional().describe("New name for the API key"),permissions:dY0.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:U4.record(U4.string(),U4.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),rK8=U4.object({item:mK8.describe("The updated API key (without key value)")}),aK8=U4.object({keyId:U4.string().describe("ID of the API key to delete")}),sK8=U4.object({success:U4.boolean().describe("Whether the deletion was successful"),keyId:U4.string().describe("ID of the deleted API key")})});var ss0;var eK8=O(()=>{p4();p0();fg();ss0=t({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:iK8,outputSchema:nK8,handler:async($,Z)=>{W0(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=z1(Z);if(G)n1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var es0;var $W8=O(()=>{p4();p0();fg();es0=t({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:aK8,outputSchema:sK8,handler:async($,Z)=>{W0(Z),await Z.access.check();let X=z1(Z);if(!X)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)n1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var $e0;var ZW8=O(()=>{p0();fg();$e0=t({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:pK8,outputSchema:tK8,handler:async($,Z)=>{W0(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 Ze0;var XW8=O(()=>{p0();fg();Ze0=t({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:oK8,outputSchema:rK8,handler:async($,Z)=>{if(W0(Z),await Z.access.check(),!z1(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 QW8=O(()=>{eK8();$W8();ZW8();XW8();fg()});function dB($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=RB4.test(Z),Q=IB4.test(Z),Y=qB4.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||!MB4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var RB4,IB4,qB4,MB4;var Tt=O(()=>{RB4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,IB4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,qB4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,MB4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as KQ}from"zod";function pW($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??e0()).reportsInternalApiUrl??VB4).replace(/\/+$/,"")}function GW8($={}){return`${pW($)}/api/v2/mcp`}function Az($){let Z=$.apiKey??($.settings??e0()).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 mY0($){return new URL($).hostname}function SB4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function CB4($,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 _B4($){let Z=await $.text().catch(()=>"");if(!Z)return"unknown";try{let X=JSON.parse(Z);return SB4(X.error)?X.error:"unknown"}catch{return"unknown"}}async function Xe0($){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 KW8($,Z={}){let X=pW(Z),Q=Az(Z),Y=Z.fetchImpl??fetch,G=mY0($.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 _B4(K);throw new JW8(H,{email:$.email,domain:G})}let W=kB4.safeParse(await K.json());if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function WW8($,Z={}){let X=pW(Z),Q=Az(Z),Y=Z.fetchImpl??fetch,G=mY0($.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=YW8.safeParse(await K.json());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 Xe0(K));let W=YW8.safeParse(await K.json());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 HW8($,Z={}){let X=pW(Z),Q=Az(Z),Y=Z.fetchImpl??fetch,G=mY0($.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 Xe0(K));return{triggered:!0}}async function UW8($,Z={}){let X=pW(Z),Q=Az(Z),Y=Z.fetchImpl??fetch,G=mY0($.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 Xe0(K));let W=vB4.safeParse(await K.json());return{providers:W.success?W.data.providers:{},claimed:!0}}var VB4,kB4,YW8,JW8,vB4;var Tz=O(()=>{q6();v8();VB4=new URL(o48).origin,kB4=KQ.object({token:KQ.string().min(1)}),YW8=KQ.object({binding:KQ.object({resource_id:KQ.string(),evidence:KQ.string()}).optional(),reason:KQ.string().optional(),detail:KQ.string().optional()});JW8=class JW8 extends Error{code;constructor($,Z={}){super(CB4($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};vB4=KQ.object({providers:KQ.record(KQ.string(),KQ.object({connected:KQ.boolean(),via:KQ.enum(["oauth","sa"]).nullable(),resource:KQ.string().nullable()}))})});import{z as YG}from"zod";var xB4,fB4,Qe0;var NW8=O(()=>{Tt();p0();Tz();xB4=YG.object({siteUrl:YG.string().min(1).describe("Website URL of the store being bound."),provider:YG.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:YG.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/).")}),fB4=YG.discriminatedUnion("ok",[YG.object({ok:YG.literal(!0),resourceId:YG.string(),evidence:YG.string()}),YG.object({ok:YG.literal(!1),reason:YG.string(),detail:YG.string()})]),Qe0=t({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:xB4,outputSchema:fB4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=dB($.siteUrl);if(!Q.ok)throw Error(Q.error);return WW8({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as tW}from"zod";var bB4,yB4,Ye0;var FW8=O(()=>{Tt();p0();Tz();bB4=tW.object({siteUrl:tW.string().min(1).describe("Website URL of the store to inspect.")}),yB4=tW.object({providers:tW.record(tW.string(),tW.object({connected:tW.boolean(),via:tW.enum(["oauth","sa"]).nullable(),resource:tW.string().nullable()})),claimed:tW.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.")}),Ye0=t({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:bB4,outputSchema:yB4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=dB($.siteUrl);if(!Q.ok)throw Error(Q.error);return UW8({siteUrl:Q.value,orgId:X.id})}})});import{z as Rt}from"zod";var gB4,hB4,Ge0;var wW8=O(()=>{q6();Tt();p0();Tz();gB4=Rt.object({siteUrl:Rt.string().min(1).describe("Website URL to run the diagnostic for.")}),hB4=Rt.object({triggered:Rt.boolean(),reason:Rt.string().optional()}),Ge0=t({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:gB4,outputSchema:hB4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=dB($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=e4.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 HW8({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var mB=O(()=>{rZ0()});import{z as oW}from"zod";async function dB4($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function mB4($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var Je0,uB4=3600000,cB4,lB4,Ke0;var BW8=O(()=>{q6();Tt();p0();MW();mB();Tz();Je0=OX0,cB4=oW.object({siteUrl:oW.string().min(1).describe("Website URL to configure.")}),lB4=oW.object({connection:ZX,virtualMcp:XX,reportApp:oW.object({connectionId:oW.string(),virtualMcpId:oW.string(),toolName:oW.literal(Je0)}),created:oW.object({connection:oW.boolean(),virtualMcp:oW.boolean()})});Ke0=t({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:cB4,outputSchema:lB4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=z1(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=dB($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=e4.COMMERCE_DISCOVERY(X.id),J=DX0(X.id),K=new URLSearchParams({virtualmcpid:J,main:`app:${G}:${Je0}`}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/${crypto.randomUUID()}?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),U={connection:!1,virtualMcp:!1},N=await KW8({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),F=GW8();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:F,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 D=W$8(X.id,N.authorizationToken,F);H=await Z.storage.connections.create({...D,metadata:{...D.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),U.connection=!0}catch(D){H=await dB4(Z,G,X.id,D)}}let w=await Z.storage.virtualMcps.findById(J,X.id);if(!w){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{w=await Z.storage.virtualMcps.create(X.id,Q,H$8(X.id,H.id),{id:J}),U.virtualMcp=!0}catch(D){w=await mB4(Z,J,X.id,D)}}if(!w.pinned)w=await Z.storage.virtualMcps.update(w.id,Q,{pinned:!0});let B=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((B?Date.now()-new Date(B.createdAt).getTime():Number.POSITIVE_INFINITY)<uB4){let E=(await Z.storage.organizationSettings.get(X.id))?.flags,z={};if(E?.reports_only==null){if(z.reports_only=!0,E?.qa_agent_enabled==null)z.qa_agent_enabled=!0;if(E?.code_reviewer_enabled==null)z.code_reviewer_enabled=!0}if(Object.keys(z).length>0)await Z.storage.organizationSettings.upsert(X.id,{flags:z})}return{connection:H,virtualMcp:w,reportApp:{connectionId:H.id,virtualMcpId:w.id,toolName:Je0},created:U}}})});var OW8=O(()=>{NW8();FW8();wW8();BW8()});var We0=_((LW8)=>{Object.defineProperty(LW8,"__esModule",{value:!0});LW8.kvPrefix=LW8.KvWatchInclude=void 0;LW8.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};LW8.kvPrefix="KV_"});var VW8=_((qW8)=>{Object.defineProperty(qW8,"__esModule",{value:!0});qW8.KvStatusImpl=qW8.Bucket=qW8.Kvm=qW8.kvOperationHdr=void 0;qW8.Base64KeyCodec=pB4;qW8.NoopKvCodecs=He0;qW8.defaultBucketOpts=zW8;qW8.validateKey=jW8;qW8.validateSearchKey=PW8;qW8.hasWildcards=AW8;qW8.validateBucket=iY0;var l5=oY(),H5=EZ0(),c5=We0();function pB4(){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 He0(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function zW8(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:He0(),storage:H5.StorageType.File}}qW8.kvOperationHdr="KV-Operation";var EW8="$KV",tB4=/^[-/=.\w]+$/,oB4=/^[-/=.>*\w]+$/,rB4=/^[-\w]+$/;function jW8($){if($.startsWith(".")||$.endsWith(".")||!tB4.test($))throw Error(`invalid key: ${$}`)}function PW8($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!oB4.test($))throw Error(`invalid key: ${$}`)}function AW8($){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 iY0($){if(!rB4.test($))throw Error(`invalid bucket name: ${$}`)}class TW8{js;constructor($){this.js=(0,H5.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(l5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return bg.bind(this.js,$,Z);return bg.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(c5.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 nY0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new H5.ListerImpl(Z,$,this.js)}}qW8.Kvm=TW8;class bg{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){iY0($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=EW8,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){iY0(Z);let Q=await $.jetstreamManager(),Y=new bg(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}};iY0(Z);let J=new bg(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||He0(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(zW8(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=H5.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,l5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(c5.kvPrefix))H.name=`${c5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((U)=>{let N=Object.assign({},U),F=N.name.startsWith(c5.kvPrefix)?N.name.substring(c5.kvPrefix.length):N.name;if(!N.name.startsWith(c5.kvPrefix))N.name=`${c5.kvPrefix}${N.name}`;if(!U.external&&F!==this.bucket)N.subject_transforms=[{src:`$KV.${F}.>`,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?H5.StoreCompression.S2:H5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,l5.compare)(Y,(0,l5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?H5.DiscardPolicy.New:H5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(l5.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,l5.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(c5.kvPrefix))X=X.substring(c5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(c5.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??`${c5.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`${EW8}.${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=jW8;validateSearchKey=PW8;hasWildcards=AW8;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(H5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new RW8(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new IW8(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 H5.JetStreamApiError){let J=G;if(J.code!==H5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==H5.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,l5.headers)();G.headers=J,J.set(H5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,l5.headers)()).set(H5.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,l5.headers)();if(Y.set(qW8.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(H5.JsHeaders.RollupHdr,H5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(H5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(H5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),l5.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=H5.DeliverPolicy.LastPerSubject;if(Z===c5.KvWatchInclude.AllHistory)G=H5.DeliverPolicy.All;if(Z===c5.KvWatchInclude.UpdatesOnly)G=H5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:H5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,l5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new l5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,c5.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 U=this.jmToWatchEntry(H,!1);if(Q.push(U),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(l5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new l5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=c5.KvWatchInclude.LastValue;if($.include===c5.KvWatchInclude.AllHistory)Y=c5.KvWatchInclude.AllHistory;else if($.include===c5.KvWatchInclude.UpdatesOnly)Y=c5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${l5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=H5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,U=Y===c5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let N=0,F=await K.consume({callback:(w)=>{if(!U)N++,U=N>=H;let B=this.jmToWatchEntry(w,U);if(G&&B.operation==="DEL")return;X.push(B),X.received++}});return X.iterClosed.then(()=>{F.stop()}),F.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new l5.QueuedIteratorImpl,X=this._buildCC($,c5.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(qW8.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 nY0(Q,Z)}}qW8.Bucket=bg;class nY0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(c5.kvPrefix)?this.si.config.name.substring(c5.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,l5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,l5.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!==H5.StoreCompression.None;return!1}}qW8.KvStatusImpl=nY0;class RW8{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(qW8.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(H5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(l5.TD.decode(this.value),$)}string(){return l5.TD.decode(this.value)}}class IW8{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,l5.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(qW8.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(H5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(l5.TD.decode(this.value),$)}string(){return l5.TD.decode(this.value)}}});var Ue0=_((aJ)=>{Object.defineProperty(aJ,"__esModule",{value:!0});aJ.validateKey=aJ.validateBucket=aJ.NoopKvCodecs=aJ.Kvm=aJ.defaultBucketOpts=aJ.Bucket=aJ.Base64KeyCodec=aJ.KvWatchInclude=aJ.kvPrefix=void 0;var kW8=We0();Object.defineProperty(aJ,"kvPrefix",{enumerable:!0,get:function(){return kW8.kvPrefix}});Object.defineProperty(aJ,"KvWatchInclude",{enumerable:!0,get:function(){return kW8.KvWatchInclude}});var Rz=VW8();Object.defineProperty(aJ,"Base64KeyCodec",{enumerable:!0,get:function(){return Rz.Base64KeyCodec}});Object.defineProperty(aJ,"Bucket",{enumerable:!0,get:function(){return Rz.Bucket}});Object.defineProperty(aJ,"defaultBucketOpts",{enumerable:!0,get:function(){return Rz.defaultBucketOpts}});Object.defineProperty(aJ,"Kvm",{enumerable:!0,get:function(){return Rz.Kvm}});Object.defineProperty(aJ,"NoopKvCodecs",{enumerable:!0,get:function(){return Rz.NoopKvCodecs}});Object.defineProperty(aJ,"validateBucket",{enumerable:!0,get:function(){return Rz.validateBucket}});Object.defineProperty(aJ,"validateKey",{enumerable:!0,get:function(){return Rz.validateKey}})});var Ne0=_((iB)=>{Object.defineProperty(iB,"__esModule",{value:!0});iB.NoopKvCodecs=iB.Kvm=iB.defaultBucketOpts=iB.Bucket=iB.Base64KeyCodec=iB.KvWatchInclude=void 0;var KO4=Ue0();Object.defineProperty(iB,"KvWatchInclude",{enumerable:!0,get:function(){return KO4.KvWatchInclude}});var qt=Ue0();Object.defineProperty(iB,"Base64KeyCodec",{enumerable:!0,get:function(){return qt.Base64KeyCodec}});Object.defineProperty(iB,"Bucket",{enumerable:!0,get:function(){return qt.Bucket}});Object.defineProperty(iB,"defaultBucketOpts",{enumerable:!0,get:function(){return qt.defaultBucketOpts}});Object.defineProperty(iB,"Kvm",{enumerable:!0,get:function(){return qt.Kvm}});Object.defineProperty(iB,"NoopKvCodecs",{enumerable:!0,get:function(){return qt.NoopKvCodecs}})});function pY0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class we0{options;kv=null;codec=pY0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new CW8.Kvm($).create(HO4,{storage:SW8.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 UO4($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function tY0($){return $ instanceof C1&&$.code===y1.MethodNotFound}function NO4($){return $ instanceof C1&&$.code===-32000&&/connection closed/i.test($.message)}async function pB($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(tY0(H))return[];return Mt.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(()=>{}),Fe0.set(J,Date.now()),Mt.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(tY0(H))return Q.set($,Z,[]).catch(()=>{}),[];return Mt.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(Mt.add(1,{type:$,outcome:"hit",stage:"hit"}),UO4(Fe0.get(J),Date.now(),G)&&!oY0.has(J)){oY0.add(J),Fe0.set(J,Date.now());let H=X().then((U)=>Q.set($,Z,U)).catch((U)=>{if(tY0(U)||NO4(U)){if(tY0(U))Q.set($,Z,[]).catch(()=>{});return}Mt.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>oY0.delete(J));Y?.(H)}return K}function Be0($){_W8=$}function U9(){return _W8}var SW8,CW8,Mt,HO4="DECOCMS_MCP_LISTS",oY0,Fe0,nB=30000,_W8=null;var GG=O(()=>{W9();n$();SW8=k(OE(),1),CW8=k(Ne0(),1),Mt=y8.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});oY0=new Set;y8.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(oY0.size));Fe0=new Map});async function Oe0($,Z,X){let Q=new AbortController,Y,G=new Promise((K,W)=>{Y=setTimeout(()=>{Q.abort(),W(new vW8($.id,X))},X)}),J=(async()=>{let K=await v5($,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 vW8;var xW8=O(()=>{Vt();vW8=class vW8 extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});function rY0($){return(Z)=>{if(Z instanceof C1&&Z.code===y1.MethodNotFound)return $;throw Z}}var fW8=O(()=>{W9()});function aY0($,Z,X){let Q=tB($,Z,X,U9()??void 0),Y=kE(Q,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:FO4,toolCallTimeoutMs:Oy});Y.server.setRequestHandler(lw,async()=>{return await Q.listResources().catch(rY0({resources:[]}))}),Y.server.setRequestHandler(dw,async()=>{return await Q.listResourceTemplates().catch(rY0({resourceTemplates:[]}))}),Y.server.setRequestHandler(mw,async()=>{return await Q.listPrompts().catch(rY0({prompts:[]}))});let G=Y.close.bind(Y);return Y.close=async()=>{await G(),await Q.close().catch(()=>{})},Y}var FO4;var bW8=O(()=>{eX();W9();kt();GG();fW8();FO4={tools:{},resources:{},prompts:{}}});var FN=O(()=>{Vt();xW8();bW8()});function St($,Z,X){if(Z.some((Q)=>Q!=="*"&&Q.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${X}_self`}}function Ct($,Z){let X=new Map;for(let Q of Z){if(Q==="*")continue;let[Y,G]=mQ0(Q);if(!wO4.has(G))continue;let J=tp(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 _t($,Z,X,Q){for(let G of Z){if(G==="*")continue;let[J]=mQ0(G),K=tp(J,$);if(K===void 0||K===null)throw Error(`Scope references key "${J}" but it's not present in state`)}let Y=nX8($,Z);for(let G of Y){if(G.endsWith("_self"))continue;let J=await Q.storage.connections.findById(G);if(!J||J.organization_id!==X)throw Error(`Referenced connection not found: ${G}`);try{await Q.access.check(G)}catch(K){throw Error(`Access denied to referenced connection: ${G}. ${K.message}`)}}}var wO4;var Le0=O(()=>{Ea0();IX0();wO4=new Set([TX0,RX0])});import{z as yW8}from"zod";var BO4,OO4,De0;var gW8=O(()=>{p4();p0();v8();GG();FN();Le0();Pt();MW();BO4=yW8.object({data:lZ0.describe("Data for the new connection (id is auto-generated if not provided)")}),OO4=yW8.object({item:ZX.describe("The created connection entity")}),De0=t({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:BO4,outputSchema:OO4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create connection");let Y={...$.data,organization_id:X.id,created_by:Q};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===X.id)throw Error("Connection already exists in organization")}if(Y.connection_type==="VIRTUAL"){let N=fb(Y.connection_url);if(!N)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let F=await Z.storage.virtualMcps.findById(N);if(!F)throw Error(`Virtual MCP not found: ${N}`);if(F.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=bb(N)}if(Y.connection_type==="STDIO"&&!e0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let G=await lB({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)St(W,K,X.id),await _t(W,K,X.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),U=W&&K?.length?Ct(W,K):[];if(U.length>0){let N;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:H.id,createdBy:Q,grants:U});let{plaintextToken:F,record:w}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:H.id});N=w.id,await(await v5(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:F}}})}catch(F){if(N)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:H.id,tokenId:N});throw await Z.storage.connections.delete(H.id),F}}if(J)U9()?.set("tools",H.id,J).catch(()=>{});return n1.capture({distinctId:Q,event:"connection_created",groups:{organization:X.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:X.id,tools_count:J?.length??0}}),{item:H}}})});import{z as w3}from"zod/v4";import{z as hW8}from"zod/v4";import{z as sY0}from"zod/v4";import{z as rW}from"zod/v4";import{z as zO4}from"zod/v4";import{z as Iz}from"zod/v4";import{z as aW}from"zod/v4";import{z as pZ}from"zod/v4";import{z as uW8}from"zod/v4";import{z as ZG0}from"zod/v4";import{z as lO4}from"zod/v4";import{z as cW8}from"zod/v4";import{z as eY0}from"zod/v4";import{z as aO4}from"zod/v4";function vt($,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)=>vt(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)&&vt($[Y],Z[Y]))}return!1}function hO4(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((X)=>{if(Z.some((Y)=>vt(X,Y)))return!1;return Z.push(X),!0})}}function $G0($,Z){return $.safeParse(Z).success}function T7($){if(typeof $==="boolean")return $?w3.any():w3.never();let Z={};for(let Y of ZL4)Y.apply(Z,$);let X=[];if(Z.string!==!1)X.push(Z.string||w3.string());if(Z.number!==!1)X.push(Z.number||w3.number());if(Z.boolean!==!1)X.push(Z.boolean||w3.boolean());if(Z.null!==!1)X.push(Z.null||w3.null());if(Z.array!==!1)X.push(Z.array||w3.array(w3.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=w3.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=w3.never();else if(X.length===1)Q=X[0];else if(!Object.keys($).some((G)=>G!=="$schema"&&G!=="title"&&G!=="description"))Q=w3.any();else Q=w3.union(X);for(let Y of XL4)Q=Y.apply(Q,$);return Q}var LO4=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||hW8.number();if(Y instanceof hW8.ZodNumber)$.number=Y.int()}}},DO4=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=sY0.literal(X);else if(typeof X==="number")$.number=sY0.literal(X);else if(typeof X==="boolean")$.boolean=sY0.literal(X);else if(X===null)$.null=sY0.null();else if(Array.isArray(X))$.array=void 0;else if(typeof X==="object")$.object=void 0}},EO4=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?rW.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 rW.literal($[0]);if(Z==="string")return rW.enum($);if(Z==="number"){let[X,Q,...Y]=$;return rW.union([rW.literal(X),rW.literal(Q),...Y.map((G)=>rW.literal(G))])}if(Z==="boolean")return rW.union([rW.literal(!0),rW.literal(!1)]);return!1}},jO4=class{apply($,Z){let X=Z;if(X.type==="string"&&X.format==="binary"&&X.contentEncoding==="binary"){let Q=zO4.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}}},PO4=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=Iz.string()}}},AO4=class{apply($,Z){let X=Z;if(X.minLength===void 0)return;if($.string!==!1){let Q=$.string||Iz.string();if(Q instanceof Iz.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length>=X.minLength},{message:`String must be at least ${X.minLength} characters long`})}}},TO4=class{apply($,Z){let X=Z;if(X.maxLength===void 0)return;if($.string!==!1){let Q=$.string||Iz.string();if(Q instanceof Iz.ZodString)$.string=Q.refine((Y)=>{return Array.from(Y).length<=X.maxLength},{message:`String must be at most ${X.maxLength} characters long`})}}},RO4=class{apply($,Z){let X=Z;if(!X.pattern)return;if($.string!==!1){let Q=$.string||Iz.string();if(Q instanceof Iz.ZodString){let Y=new RegExp(X.pattern);$.string=Q.regex(Y)}}}},IO4=class{apply($,Z){let X=Z;if(X.minimum===void 0)return;if($.number!==!1){let Q=$.number||aW.number();if(Q instanceof aW.ZodNumber)$.number=Q.min(X.minimum)}}},qO4=class{apply($,Z){let X=Z;if(X.maximum===void 0)return;if($.number!==!1){let Q=$.number||aW.number();if(Q instanceof aW.ZodNumber)$.number=Q.max(X.maximum)}}},MO4=class{apply($,Z){let X=Z;if(X.exclusiveMinimum===void 0)return;if($.number!==!1){let Q=$.number||aW.number();if(Q instanceof aW.ZodNumber)if(typeof X.exclusiveMinimum==="number")$.number=Q.gt(X.exclusiveMinimum);else $.number=!1}}},VO4=class{apply($,Z){let X=Z;if(X.exclusiveMaximum===void 0)return;if($.number!==!1){let Q=$.number||aW.number();if(Q instanceof aW.ZodNumber)if(typeof X.exclusiveMaximum==="number")$.number=Q.lt(X.exclusiveMaximum);else $.number=!1}}},kO4=class{apply($,Z){let X=Z;if(X.multipleOf===void 0)return;if($.number!==!1){let Q=$.number||aW.number();if(Q instanceof aW.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}`})}}},SO4=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=pZ.array(pZ.any())}}},CO4=class{apply($,Z){let X=Z;if(X.minItems===void 0)return;if($.array!==!1)$.array=($.array||pZ.array(pZ.any())).min(X.minItems)}},_O4=class{apply($,Z){let X=Z;if(X.maxItems===void 0)return;if($.array!==!1)$.array=($.array||pZ.array(pZ.any())).max(X.maxItems)}},vO4=class{apply($,Z){let X=Z;if($.array===!1)return;if(Array.isArray(X.items))$.array=$.array||pZ.array(pZ.any());else if(X.items&&typeof X.items!=="boolean"&&!X.prefixItems){let Q=T7(X.items),Y=pZ.array(Q);if($.array&&$.array instanceof pZ.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=pZ.array(pZ.any()).max(0);else $.array=$.array||pZ.array(pZ.any());else if(typeof X.items==="boolean"&&X.items===!0)$.array=$.array||pZ.array(pZ.any());else if(X.prefixItems)$.array=$.array||pZ.array(pZ.any())}},xO4=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)=>T7(G)),Y;if(Q.length===0)Y=uW8.tuple([]);else Y=uW8.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}},fO4=class{apply($,Z){let X=Z;if($.object===!1)return;if(X.properties||X.required||X.additionalProperties!==void 0)$.object=$.object||ZG0.object({}).passthrough()}},bO4=class{apply($,Z){let X=Z;if(Z.type===void 0&&(X.maxProperties!==void 0||X.minProperties!==void 0)){if($.object===void 0)$.object=ZG0.object({}).passthrough()}}},yO4=class{apply($,Z){let X=Z;if(X.maxProperties===void 0)return;if($.object!==!1){let Q=$.object||ZG0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length<=X.maxProperties,{message:`Object must have at most ${X.maxProperties} properties`})}}},gO4=class{apply($,Z){let X=Z;if(X.minProperties===void 0)return;if($.object!==!1){let Q=$.object||ZG0.object({}).passthrough();$.object=Q.refine((Y)=>Object.keys(Y).length>=X.minProperties,{message:`Object must have at least ${X.minProperties} properties`})}}},uO4=class{apply($,Z){if(!Z.not)return $;let X=T7(Z.not);return $.refine((Q)=>!$G0(X,Q),{message:"Value must not match the 'not' schema"})}},cO4=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(hO4(),{message:"Array items must be unique"})}},dO4=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((Q)=>T7(Q)).reduce((Q,Y)=>lO4.intersection(Q,Y),$)}},mO4=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let X=Z.anyOf.length===1?T7(Z.anyOf[0]):cW8.union([T7(Z.anyOf[0]),T7(Z.anyOf[1]),...Z.anyOf.slice(2).map((Q)=>T7(Q))]);return cW8.intersection($,X)}},iO4=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let X=Z.oneOf.map((Q)=>T7(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"})}},nO4=class{apply($,Z){let X=Z;if(X.prefixItems&&Array.isArray(X.prefixItems)){let Y=X.prefixItems.map((G)=>T7(G));return $.refine((G)=>{if(!Array.isArray(G))return!0;for(let J=0;J<Math.min(G.length,Y.length);J++)if(!$G0(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=T7(X.items);for(let K=Y.length;K<G.length;K++)if(!$G0(J,G[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},pO4=class{apply($,Z){let X=Z;if(!X.properties&&!X.required&&X.additionalProperties!==!1)return $;if($ instanceof eY0.ZodObject||$ instanceof eY0.ZodRecord){let Q={};if(X.properties){for(let[Y,G]of Object.entries(X.properties))if(G!==void 0)Q[Y]=T7(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 eY0.object(Q);else return eY0.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(!T7(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"})}},tO4=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)=>vt(Q,Y))},{message:"Value must match one of the enum values"})}},oO4=class{apply($,Z){if(Z.const===void 0)return $;let X=Z.const;if(typeof X!=="object"||X===null)return $;return $.refine((Q)=>vt(Q,X),{message:"Value must equal the const value"})}},rO4=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},sO4=class{apply($,Z){var X;let Q=Z;if(!((X=Q.required)==null?void 0:X.includes("__proto__"))||Z.type!==void 0)return $;return aO4.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))}},eO4=class{apply($,Z){var X;let Q=Z;if(Q.contains===void 0)return $;let Y=T7(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($G0(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"})}},$L4=class{apply($,Z){let{default:X}=Z;if(X===void 0)return $;if(!$.safeParse(X).success)return $;return $.default(X)}},ZL4,XL4;var lW8=O(()=>{ZL4=[new DO4,new EO4,new LO4,new jO4,new PO4,new SO4,new bO4,new AO4,new TO4,new RO4,new IO4,new qO4,new MO4,new VO4,new kO4,new xO4,new CO4,new _O4,new vO4,new yO4,new gO4,new fO4],XL4=[new sO4,new tO4,new oO4,new dO4,new mO4,new iO4,new nO4,new pO4,new eO4,new uO4,new cO4,new $L4,new rO4]});class Ee0{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,QL4),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=sY.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 QL4="mcp";var dW8=O(()=>{W9()});function YL4($){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 XG0;var ze0=O(()=>{Gy();XG0=class XG0 extends xW{constructor($,Z){super($,Z)}send($,Z){let X=YL4($);if(X?.type==="emit")return this.onmessage?.(X.message),Promise.resolve();if(X?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var mW8,iW8=async($,Z,X)=>{let Q=GL4($.connection,Z,X);if(!Q)throw Error("Unknown MCP connection type");let Y=new mW8({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(Q),{client:Y}},GL4=($,Z,X)=>{if($.type==="Websocket")return new Ee0(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 $N(new URL($.url),G)}return new XG0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var nW8=O(()=>{_W();Rn();dW8();W9();eX();ze0();mW8=class mW8 extends m9{constructor($,Z){super($,{jsonSchemaValidator:j5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},hi,Z)}}});function oW8($){let Z=(X)=>{if("connection"in $)return iW8({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 U=$?.debugId?.(),N=U?{"x-trace-debug-id":U}:void 0,{client:F}=await Z(N),{structuredContent:w,isError:B,content:L}=await F.callTool({name:String(H),arguments:W});if(B){let E=L?.[0]?.text,z=typeof E==="string"?pW8(E):null,j=z?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(z.code,z.message,z.traceId):null;if(j)throw j;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(w??L)}`)}if(w!==void 0)return w;let D=L?.[0]?.text;return typeof D==="string"?pW8(D):void 0}async function G(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function J(){if(!("connection"in $))return G();let W=$.connection,H=JSON.stringify(W);try{if(!QG0.has(H))QG0.set(H,G());return await QG0.get(H)}catch(U){console.error("Failed to list tools",U),QG0.delete(H);return}}async function K(){return(await J()??[]).map((H)=>tW8(H,Y))}return Y.asTool=async()=>{let H=(await J()??[]).find((U)=>U.name===Q);if(!H)throw Error(`Tool ${Q} not found`);return tW8(H,Y)},Y}})}var pW8=($)=>{try{return JSON.parse($)}catch{return $}},QG0,tW8=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?T7($.inputSchema):void 0,outputSchema:$.outputSchema?T7($.outputSchema):void 0,execute:(X)=>{return Z(X.context,$.name)}}};var rW8=O(()=>{lW8();nW8();QG0=new Map});function oB($){return oW8($)}var yg;var je0=O(()=>{rW8();yg=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(X)=>oB({connection:X});if(Z==="forClient")return(X)=>oB({client:X});return globalThis[Z]}})});function YG0($){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 sW=($)=>{return{...YG0($),forClient:(Z)=>{return oB({client:Z})},forConnection:(Z)=>{return oB({connection:Z})}}};var qz=O(()=>{je0()});import{z as d5}from"zod";var aW8,GG0,sW8,JG0,eW8,JL4;var $H8=O(()=>{qz();aW8=d5.object({specversion:d5.literal("1.0").describe("CloudEvents specification version"),id:d5.string().describe("Unique identifier for this event (UUID recommended)"),source:d5.string().describe("Connection ID of the event publisher"),type:d5.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:d5.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:d5.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:d5.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:d5.string().url().optional().describe("URI to the schema for the data attribute"),data:d5.unknown().optional().describe("Event payload (any JSON value)")}),GG0=d5.object({events:d5.array(aW8).min(1).describe("Batch of CloudEvents to process")}),sW8=d5.object({success:d5.boolean().optional().describe("Whether this event was processed successfully"),error:d5.string().optional().describe("Error message for this event"),retryAfter:d5.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),JG0=d5.object({success:d5.boolean().optional().describe("Batch success - applies to events not in results"),error:d5.string().optional().describe("Batch error message - applies to events not in results"),processedCount:d5.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:d5.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:d5.record(d5.string(),sW8).optional().describe("Per-event results keyed by event ID")}),eW8=[{name:"ON_EVENTS",inputSchema:GG0,outputSchema:JG0}],JL4=sW(eW8)});import{z as m5}from"zod";var ZH8,XH8,QH8,YH8,GH8,JH8,KG0,Pe0;var Ae0=O(()=>{qz();ZH8=m5.object({type:m5.literal("string"),enum:m5.array(m5.string()).optional(),description:m5.string().optional()}),XH8=m5.object({type:m5.string(),description:m5.string(),paramsSchema:m5.record(m5.string(),ZH8)}),QH8=m5.object({}),YH8=m5.object({triggers:m5.array(XH8)}),GH8=m5.object({type:m5.string(),params:m5.record(m5.string(),m5.string()),enabled:m5.boolean(),callbackUrl:m5.url().optional(),callbackToken:m5.string().min(1).optional()}),JH8=m5.object({success:m5.boolean()}),KG0=[{name:"TRIGGER_LIST",inputSchema:QH8,outputSchema:YH8},{name:"TRIGGER_CONFIGURE",inputSchema:GH8,outputSchema:JH8}],Pe0=sW(KG0)});import{z as S8}from"zod";var KL4,WL4,HL4,UL4,NL4,FL4,wL4,BL4,OL4,LL4,DL4,EL4,Mz;var xt=O(()=>{KL4=S8.object({prefix:S8.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:S8.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:S8.string().optional().describe("Token for pagination from previous response"),delimiter:S8.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),WL4=S8.object({objects:S8.array(S8.object({key:S8.string().describe("Object key/path"),size:S8.number().describe("Object size in bytes"),lastModified:S8.string().describe("Last modified timestamp"),etag:S8.string().describe("Entity tag for the object")})),nextContinuationToken:S8.string().optional().describe("Token for fetching next page of results"),isTruncated:S8.boolean().describe("Whether there are more results available"),commonPrefixes:S8.array(S8.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),HL4=S8.object({key:S8.string().describe("Object key/path to get metadata for")}),UL4=S8.object({contentType:S8.string().optional().describe("MIME type of the object"),contentLength:S8.number().describe("Size of the object in bytes"),lastModified:S8.string().describe("Last modified timestamp"),etag:S8.string().describe("Entity tag for the object"),metadata:S8.record(S8.string(),S8.string()).optional().describe("Custom metadata key-value pairs")}),NL4=S8.object({key:S8.string().describe("Object key/path to generate URL for"),expiresIn:S8.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),FL4=S8.object({url:S8.string().describe("Presigned URL for downloading the object"),expiresIn:S8.number().describe("Expiration time in seconds that was used")}),wL4=S8.object({key:S8.string().describe("Object key/path for the upload"),expiresIn:S8.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:S8.string().optional().describe("MIME type for the object being uploaded")}),BL4=S8.object({url:S8.string().describe("Presigned URL for uploading the object"),expiresIn:S8.number().describe("Expiration time in seconds that was used")}),OL4=S8.object({key:S8.string().describe("Object key/path to delete")}),LL4=S8.object({success:S8.boolean().describe("Whether the deletion was successful"),key:S8.string().describe("The key that was deleted")}),DL4=S8.object({keys:S8.array(S8.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),EL4=S8.object({deleted:S8.array(S8.string()).describe("Array of successfully deleted keys"),errors:S8.array(S8.object({key:S8.string(),message:S8.string()})).describe("Array of errors for failed deletions")}),Mz=[{name:"LIST_OBJECTS",inputSchema:KL4,outputSchema:WL4},{name:"GET_OBJECT_METADATA",inputSchema:HL4,outputSchema:UL4},{name:"GET_PRESIGNED_URL",inputSchema:NL4,outputSchema:FL4},{name:"PUT_PRESIGNED_URL",inputSchema:wL4,outputSchema:BL4},{name:"DELETE_OBJECT",inputSchema:OL4,outputSchema:LL4},{name:"DELETE_OBJECTS",inputSchema:DL4,outputSchema:EL4}]});import{z as T$}from"zod";var KH8,WH8,HH8,ft,WG0,HG0,UG0,NG0,zL4;var Te0=O(()=>{qz();KH8=T$.object({primary:T$.string().optional().describe("Primary brand color (hex)"),secondary:T$.string().optional().describe("Secondary brand color (hex)"),accent:T$.string().optional().describe("Accent / highlight color (hex)"),background:T$.string().optional().describe("Background color (hex)"),foreground:T$.string().optional().describe("Foreground / text color (hex)")}),WH8=T$.object({heading:T$.string().optional().describe("Font family for headings"),body:T$.string().optional().describe("Font family for body text"),code:T$.string().optional().describe("Font family for code / monospace")}),HH8=T$.object({logo:T$.string().optional().describe("Logo URL"),favicon:T$.string().optional().describe("Favicon URL"),ogImage:T$.string().optional().describe("Open Graph image URL")}),ft=T$.object({id:T$.string(),name:T$.string().describe("Brand / company name"),domain:T$.string().optional().describe("Company domain (e.g. example.com)"),colors:KH8.optional().describe("Semantic color palette"),fonts:WH8.optional().describe("Font families by role"),assets:HH8.optional().describe("Visual identity assets"),overview:T$.string().optional().describe("Company overview / description"),tagline:T$.string().optional().describe("Brand tagline"),tone:T$.string().optional().describe("Tone of voice description"),metadata:T$.record(T$.string(),T$.unknown()).optional().describe("Extra design tokens and metadata")}),WG0=T$.object({id:T$.string().optional().describe("Brand ID. Omit to get the default brand.")}),HG0=T$.object({}),UG0=T$.object({items:T$.array(ft)}),NG0=[{name:"BRAND_GET",inputSchema:WG0,outputSchema:ft},{name:"BRAND_LIST",inputSchema:HG0,outputSchema:UG0,opt:!0}],zL4=sW(NG0)});var Re0=O(()=>{qz();$H8();Ae0();xt();Te0()});import{z as A6}from"zod";function wN($){return A6.object({items:A6.array($).describe("Array of collection items"),totalCount:A6.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:A6.boolean().optional().describe("Whether there are more items available")})}function yt($){return A6.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function AL4($){return A6.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function TL4($){return A6.object({item:$.describe("The created entity with generated id")})}function RL4($){return A6.object({id:A6.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function IL4($){return A6.object({item:$.describe("The updated entity")})}function ht($){return A6.object({item:$.describe("The deleted entity")})}function wG0($,Z,X){let Q=$.toUpperCase(),Y=X?.readOnly??!1,G=[{name:`COLLECTION_${Q}_LIST`,inputSchema:sJ,outputSchema:wN(Z)},{name:`COLLECTION_${Q}_GET`,inputSchema:bt,outputSchema:yt(Z)}];if(!Y)G.push({name:`COLLECTION_${Q}_CREATE`,inputSchema:AL4(Z),outputSchema:TL4(Z),opt:!0},{name:`COLLECTION_${Q}_UPDATE`,inputSchema:RL4(Z),outputSchema:IL4(Z),opt:!0},{name:`COLLECTION_${Q}_DELETE`,inputSchema:gt,outputSchema:ht(Z),opt:!0});return G}var FG0,jL4,UH8,PL4,sJ,bt,gt;var B3=O(()=>{FG0=A6.object({id:A6.string().describe("Unique identifier for the entity"),title:A6.string().describe("Human-readable title for the entity"),description:A6.string().nullish().describe("Description of the entity"),created_at:A6.string().datetime(),updated_at:A6.string().datetime(),created_by:A6.string().optional(),updated_by:A6.string().optional()}),jL4=A6.object({field:A6.array(A6.string()),operator:A6.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:A6.unknown()}),UH8=A6.lazy(()=>A6.union([jL4,A6.object({operator:A6.enum(["and","or","not"]),conditions:A6.array(UH8)})])),PL4=A6.object({field:A6.array(A6.string()),direction:A6.enum(["asc","desc"]),nulls:A6.enum(["first","last"]).optional()}),sJ=A6.object({where:UH8.optional().describe("Filter expression"),orderBy:A6.array(PL4).optional().describe("Sort expressions"),limit:A6.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:A6.number().int().min(0).optional().describe("Number of items to skip")});bt=A6.object({id:A6.string().describe("ID of the entity to retrieve")});gt=A6.object({id:A6.string().describe("ID of the entity to delete")})});import{z as gg}from"zod";var qL4,ML4,NH8;var FH8=O(()=>{B3();qL4=FG0.extend({avatar:gg.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:gg.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:gg.string().describe("Virtual MCP ID to use for this assistant"),model:gg.object({id:gg.string().describe("Model ID"),connectionId:gg.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),ML4=wG0("assistant",qL4),NH8=[...ML4]});import{z as A0}from"zod";var ut,BN,BH8,VL4,kL4,OH8,SL4,CL4,_L4,vL4,xL4,fL4,LH8,bL4,yL4,gL4,hL4,uL4,cL4,lL4,dL4,mL4,iL4,Yq5,nL4,Gq5,wH8,pL4,tL4,BG0,Jq5;var DH8=O(()=>{qz();B3();ut=A0.lazy(()=>A0.union([A0.null(),A0.string(),A0.number(),A0.boolean(),A0.record(A0.string(),ut),A0.array(ut)])),BN=A0.record(A0.string(),A0.record(A0.string(),ut)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),BH8=A0.object({type:A0.literal("text"),text:A0.string().describe("The text content"),providerOptions:BN}),VL4=A0.object({type:A0.literal("text"),text:A0.string().describe("The text content"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")}),kL4=A0.string().describe("File data as URL string"),OH8=A0.object({type:A0.literal("file"),filename:A0.string().optional().describe("Optional filename of the file"),data:kL4,mediaType:A0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:BN}),SL4=A0.object({type:A0.literal("file"),mediaType:A0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:A0.string().describe("Generated file data as base64 encoded string")}),CL4=A0.object({type:A0.literal("reasoning"),text:A0.string().describe("The reasoning text"),providerOptions:BN}),_L4=A0.object({type:A0.literal("reasoning"),text:A0.string().describe("The reasoning text"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")}),vL4=A0.object({type:A0.literal("tool-call"),toolCallId:A0.string().describe("ID of the tool call, used to match with tool result"),toolName:A0.string().describe("Name of the tool being called"),input:A0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:A0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:BN}),xL4=A0.object({type:A0.literal("tool-call"),toolCallId:A0.string().describe("ID of the tool call"),toolName:A0.string().describe("Name of the tool being called"),input:A0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:A0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")}),fL4=A0.union([A0.object({type:A0.literal("text"),value:A0.string()}),A0.object({type:A0.literal("json"),value:ut}),A0.object({type:A0.literal("error-text"),value:A0.string()}),A0.object({type:A0.literal("error-json"),value:ut}),A0.object({type:A0.literal("content"),value:A0.array(A0.union([A0.object({type:A0.literal("text"),text:A0.string().describe("Text content")}),A0.object({type:A0.literal("media"),data:A0.string().describe("Base-64 encoded media data"),mediaType:A0.string().describe("IANA media type")})]))}),A0.object({type:A0.literal("execution-denied"),reason:A0.string().optional()}),A0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),LH8=A0.object({type:A0.literal("tool-result"),toolCallId:A0.string().describe("ID of the tool call that this result is associated with"),toolName:A0.string().describe("Name of the tool that generated this result"),output:fL4.describe("Result of the tool call"),result:A0.unknown().describe("Unknown result of the tool call"),providerOptions:BN}),bL4=A0.object({type:A0.literal("tool-result"),toolCallId:A0.string().describe("ID of the tool call that this result is associated with"),toolName:A0.string().describe("Name of the tool that generated this result"),result:A0.any().describe("Result of the tool call (JSON-serializable)"),isError:A0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:A0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")}),yL4=A0.union([A0.object({type:A0.literal("source"),sourceType:A0.literal("url"),id:A0.string().describe("The ID of the source"),url:A0.string().describe("The URL of the source"),title:A0.string().optional().describe("The title of the source"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")}),A0.object({type:A0.literal("source"),sourceType:A0.literal("document"),id:A0.string().describe("The ID of the source"),mediaType:A0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:A0.string().describe("The title of the document"),filename:A0.string().optional().describe("Optional filename of the document"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata")})]),gL4=A0.object({role:A0.literal("system"),content:A0.string().describe("System message content"),providerOptions:BN}),hL4=A0.object({role:A0.literal("user"),content:A0.array(A0.union([BH8,OH8])).describe("User message content parts (text or file)"),providerOptions:BN}),uL4=A0.object({role:A0.literal("assistant"),content:A0.array(A0.union([BH8,OH8,CL4,vL4,LH8])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:BN}),cL4=A0.object({role:A0.literal("tool"),content:A0.array(LH8).describe("Tool message content (tool results)"),providerOptions:BN}),lL4=A0.union([gL4,hL4,uL4,cL4]),dL4=A0.array(lL4).describe("A list of messages forming the prompt"),mL4=A0.object({prompt:dL4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:A0.number().optional().describe("Maximum number of tokens to generate"),temperature:A0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:A0.number().optional().describe("Nucleus sampling parameter"),topK:A0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:A0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:A0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:A0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:A0.array(A0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:A0.union([A0.object({type:A0.literal("text")}),A0.object({type:A0.literal("json"),schema:A0.any().optional().describe("JSON schema that the generated output should conform to"),name:A0.string().optional().describe("Name of output that should be generated"),description:A0.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:A0.array(A0.any()).optional().describe("The tools that are available for the model"),toolChoice:A0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:A0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:A0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:A0.any().optional().describe("Additional provider-specific options")}),iL4=A0.object({content:A0.array(A0.union([VL4,SL4,_L4,xL4,bL4,yL4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:A0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:A0.looseObject({inputTokens:A0.number().optional(),outputTokens:A0.number().optional(),totalTokens:A0.number().optional(),reasoningTokens:A0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:A0.any().optional().describe("Additional provider-specific metadata"),request:A0.object({body:A0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:A0.object({id:A0.string().optional().describe("ID for the generated response"),timestamp:A0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:A0.string().optional().describe("The ID of the response model that was used"),headers:A0.record(A0.string(),A0.string()).optional().describe("Response headers"),body:A0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:A0.array(A0.any()).describe("Warnings for the call, e.g. unsupported settings")}),Yq5=A0.object({stream:A0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:A0.object({body:A0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:A0.object({headers:A0.record(A0.string(),A0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),nL4=A0.object({supportedUrls:A0.record(A0.string(),A0.array(A0.string())).describe("Supported URL patterns by media type for the provider")}),Gq5=A0.object({modelId:A0.string().describe("The ID of the model"),logo:A0.string().nullable(),description:A0.string().nullable(),capabilities:A0.array(A0.string()),limits:A0.object({contextWindow:A0.number(),maxOutputTokens:A0.number()}).nullable(),costs:A0.object({input:A0.number(),output:A0.number()}).nullable(),provider:A0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),wH8=A0.object({modelId:A0.string().describe("The ID of the model"),callOptions:mL4}),pL4=FG0.extend({logo:A0.string().nullable(),description:A0.string().nullable(),capabilities:A0.array(A0.string()),limits:A0.object({contextWindow:A0.number(),maxOutputTokens:A0.number()}).nullable(),costs:A0.object({input:A0.number(),output:A0.number()}).nullable(),provider:A0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),tL4=wG0("llm",pL4,{readOnly:!0}),BG0=[{name:"LLM_METADATA",inputSchema:A0.object({modelId:A0.string().describe("The ID of the model")}),outputSchema:nL4},{name:"LLM_DO_STREAM",inputSchema:wH8},{name:"LLM_DO_GENERATE",inputSchema:wH8,outputSchema:iL4},...tL4],Jq5=sW(BG0)});import{z as Vz}from"zod";var oL4,EH8;var zH8=O(()=>{oL4=Vz.object({scopes:Vz.array(Vz.string()).describe("List of scopes available"),stateSchema:Vz.record(Vz.string(),Vz.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),EH8=[{name:"MCP_CONFIGURATION",inputSchema:Vz.object({}),outputSchema:oL4}]});import{z as i5}from"zod";var rL4,aL4,jH8;var PH8=O(()=>{rL4=i5.object({}).strict(),aL4=i5.object({billing:i5.object({mode:i5.enum(["prepaid","postpaid"]),limitPeriod:i5.enum(["daily","weekly","monthly"]).nullable()}),limit:i5.object({total:i5.number().nullable(),remaining:i5.number().nullable(),reset:i5.string().nullable()}),usage:i5.object({total:i5.number(),daily:i5.number(),weekly:i5.number(),monthly:i5.number()}),alert:i5.object({enabled:i5.boolean(),threshold_usd:i5.number(),email:i5.string().nullable()}),connectionId:i5.string()}),jH8=[{name:"GATEWAY_USAGE",inputSchema:rL4,outputSchema:aL4},{name:"GATEWAY_SET_LIMIT",inputSchema:i5.object({}),outputSchema:i5.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:i5.object({}),outputSchema:i5.object({}),opt:!0}]});import{z as AH8}from"zod";function eJ(){return iX()===null}function OG0($,Z){return $===e4.DEV_ASSETS(Z)}function hg($,Z){let X=e48(Z,$),Q=new Date().toISOString();return{id:X.id??e4.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:sL4,bindings:["OBJECT_STORAGE"],status:"active"}}var sL4;var ug=O(()=>{Tw();xt();q6();sL4=Mz.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:AH8.toJSONSchema($.inputSchema),outputSchema:AH8.toJSONSchema($.outputSchema)}))});function TH8($,Z){return $||Z===0}function RH8($,Z,X,Q,Y){let G=Z?Y+1:Y,J=Z?$.slice(0,X):$,K=Q+X<G;return{items:J,totalCount:G,hasMore:K}}function eL4($,Z){if(Z.length===0)return;let[X,...Q]=Z,Y=X==="slug"?YB($):$[X];for(let G of Q){if(Y===null||typeof Y!=="object")return;Y=Y[G]}return Y}function $D4($){let X=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${X}$`,"i")}function ZD4($,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"&&$D4(String(X)).test($);case"contains":return String($).toLowerCase().includes(String(X).toLowerCase());default:return!0}}function ct($,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)=>ct($,G));case"or":return Y.some((G)=>ct($,G));case"not":return!Y.every((G)=>ct($,G));default:return!0}}let X=eL4($,Z.field);return ZD4(X,Z.operator,Z.value)}var IH8=O(()=>{jX0()});async function qH8($,Z,X){if($.length===0)return;let Q=0;async function Y(){while(Q<$.length){let G=Q++;await X($[G])}}await Promise.all(Array.from({length:Math.min(Z,$.length)},()=>Y()))}import{z as rB}from"zod";var XD4=8,QD4,YD4,GD4,JD4,Ie0;var MH8=O(()=>{Re0();FH8();B3();DH8();zH8();xt();PH8();q6();p0();HZ();GG();FN();ug();MW();jX0();IH8();QD4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:rB.object({})}],YD4={LLM:BG0,LLMS:BG0,ASSISTANTS:NH8,MCP:EH8,OBJECT_STORAGE:Mz,AI_GATEWAY_BILLING:jH8,TRIGGER:KG0,REGISTRY:QD4,BRAND:NG0},GD4=sJ.extend({binding:rB.union([rB.array(rB.object({}).passthrough()),rB.object({}).passthrough(),rB.string()]).optional(),include_virtual:rB.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:rB.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),JD4=wN(ZX),Ie0=t({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:GD4,outputSchema:JD4,handler:async($,Z)=>{await Z.access.check();let X=Y0(Z),Q=$.binding?typeof $.binding==="string"?(()=>{let N=YD4[$.binding.toUpperCase()];if(!N)throw Error(`Unknown binding: ${$.binding}`);return N})():$.binding:void 0,Y=Q?YG0(Q):void 0,G=!!Y,J=$.limit??100,K=$.offset??0,{items:W,totalCount:H}=await Z.storage.connections.list(X.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:G?void 0:J,offset:G?void 0:K});if(Y){let N=U9(),F=e4.SELF(X.id);await qH8(W,XD4,async(w)=>{if(w.tools!==null)return;let B=w.id===F?async()=>{let{listManagementTools:D}=await Promise.resolve().then(() => (aB(),LG0));return D(Z)}:()=>Oe0(w,Z,PX0),L=await pB("tools",w.id,B,N,(D)=>Z.pendingRevalidations.push(D),nB);if(L!==null)w.tools=L})}let U=!1;if(eJ()&&TH8(G,K)){let N=G9(),F=e4.DEV_ASSETS(X.id);if(!W.some((w)=>w.id===F)){let w=hg(X.id,N),B=!$.slug||YB(w)===$.slug,L=ct(w,$.where);if(B&&L)W.unshift(w),U=!0}}if(G){let N=(await Promise.all(W.map(async(L)=>{if(!L.tools||L.tools.length===0)return null;return Y.isImplementedBy(L.tools.map((E)=>({name:E.name,inputSchema:E.inputSchema,outputSchema:E.outputSchema})))?L:null}))).filter((L)=>L!==null),F=N.length,w=N.slice(K,K+J),B=K+J<F;return{items:w,totalCount:F,hasMore:B}}return RH8(W,U,J,K,H)}})});var KD4,qe0;var VH8=O(()=>{B3();q6();p0();HZ();GG();FN();ug();MW();KD4=yt(ZX),qe0=t({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:bt,outputSchema:KD4,handler:async($,Z)=>{let X=Y0(Z);if(await Z.access.check(),eJ()&&OG0($.id,X.id))return{item:hg(X.id,G9())};let Q=await Z.storage.connections.findById($.id);if(!Q||Q.organization_id!==X.id)return{item:null};if(Q.tools===null){let Y=e4.SELF(X.id),G=Q.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (aB(),LG0));return K(Z)}:async()=>{let K=await v5(Q,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},J=await pB("tools",Q.id,G,U9(),(K)=>Z.pendingRevalidations.push(K),nB);if(J!==null)Q.tools=J}return{item:Q}}})});class U5{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;return await this.db.transaction().execute(async(G)=>{let J=await G.selectFrom("downstream_tokens").select(["id","createdAt"]).where("connectionId","=",$.connectionId).executeTakeFirst();if(J)return await G.updateTable("downstream_tokens").set({accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:$.expiresAt?.toISOString()??null,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z}).where("id","=",J.id).execute(),{id:J.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:J.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint};let K=Z4("dtok");return await G.insertInto("downstream_tokens").values({id:K,connectionId:$.connectionId,accessToken:X,refreshToken:Q,scope:$.scope,expiresAt:$.expiresAt?.toISOString()??null,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).execute(),{id:K,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:Z,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 O3=O(()=>{$Q()});function cg(...$){if(ND4)console.log("[mcp-read-cache]",...$)}function FD4($){return $.kind==="org"?"org":`u:${$.userId}`}function Me0($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(Me0).join(",")}]`;return`{${Object.keys($).sort().map((X)=>`${JSON.stringify(X)}:${Me0($[X])}`).join(",")}}`}class zG0{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=WD4,Z=HD4,X=()=>Date.now(),Q=UD4){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}:${FD4(X)}:${$}:${Me0(Q)}`}storeSet($,Z,X,Q){let Y;try{Y=JSON.stringify(Z).length}catch{cg("SKIP non-serializable",$);return}if(Y>Q){cg("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),U=this.now(),N=this.store.get(H),F=N?U-N.storedAt:1/0;if(!N||F>W.maxStaleMs){DG0.add(1,{type:Z,outcome:"miss"}),cg(N?"EXPIRED":"MISS",H);let w=await G();if(J?.(w)??!0)this.storeSet(H,w,this.now(),W.maxValueBytes);else cg("NOT-CACHED (shouldCache=false)",H);return w}if(this.store.delete(H),this.store.set(H,N),F>W.revalidateAfterMs&&!this.revalidating.has(H)){DG0.add(1,{type:Z,outcome:"stale"}),cg("STALE \u2192 serve + revalidate",H,`age=${F}ms`),this.revalidating.add(H);let w=G().then((B)=>{if(J?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes)}).catch(()=>{DG0.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(w)}else DG0.add(1,{type:Z,outcome:"hit"}),cg("HIT",H,`age=${F}ms`);return N.value}invalidate($){let Z=`${$}:`;for(let X of[...this.store.keys()])if(X.startsWith(Z))this.deleteKey(X)}}function ke0(){return e0().mcpCacheEnabled}function jG0(){return ke0()?Ve0:null}var DG0,EG0=1024,kH8,WD4,HD4=2000,UD4,ND4,Ve0;var lt=O(()=>{n$();v8();DG0=y8.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),kH8=EG0*EG0,WD4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*EG0},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*kH8},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*EG0}},UD4=256*kH8,ND4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;Ve0=new zG0;y8.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(Ve0.stats().entries));y8.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(Ve0.stats().bytes))});function _H8($){jG0()?.invalidate($)}function lg($){_H8($);let Z=Se0?.();if(!Z)return;try{Z.publish(SH8,wD4.encode(JSON.stringify({connectionId:$,originId:CH8})))}catch(X){console.warn("[McpCacheInvalidation] publish failed (non-critical):",X)}}function vH8($){if(Se0=$,dt)return;let Z=$();if(!Z)return;dt=Z.subscribe(SH8),(async()=>{for await(let X of dt)try{let Q=JSON.parse(BD4.decode(X.data));if(Q.originId===CH8)continue;_H8(Q.connectionId)}catch{}})().catch(console.error)}function xH8(){dt?.unsubscribe(),dt=null,Se0=void 0}var SH8="studio.mcp-cache.invalidate",CH8,wD4,BD4,Se0,dt=null;var mt=O(()=>{lt();CH8=crypto.randomUUID(),wD4=new TextEncoder,BD4=new TextDecoder});import{z as Ce0}from"zod";function LD4($){let Z={...$};for(let X of OD4)delete Z[X];return Z}function zD4($,Z){return $.length===Z.length&&$.every((X,Q)=>X===Z[Q])}var OD4,DD4,ED4,_e0;var fH8=O(()=>{FN();O3();p0();v8();GG();mt();Le0();Pt();MW();OD4=["id","organization_id","created_by","created_at"];DD4=Ce0.object({id:Ce0.string().describe("ID of the connection to update"),data:dZ0.describe("Partial connection data to update")}),ED4=Ce0.object({item:ZX.describe("The updated connection entity")});_e0=t({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:DD4,outputSchema:ED4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update connection");let{id:Y}=$,G=LD4($.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=G.connection_url??K.connection_url;if(W==="VIRTUAL"){let f=fb(H);if(!f)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let y=await Z.storage.virtualMcps.findById(f);if(!y)throw Error(`Virtual MCP not found: ${f}`);if(y.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");H=bb(f)}let U=G.configuration_state??K.configuration_state??{},N=G.configuration_scopes??K.configuration_scopes??[];if(J){if(G.configuration_state!==void 0)U=G.configuration_state??{};else if(U===null||U===void 0)U={};if(G.configuration_scopes!==void 0)N=G.configuration_scopes??[];if(N.length>0){let f=U;St(f,N,X.id),await _t(f,N,X.id,Z)}}if(W==="STDIO"&&!e0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let F=G.connection_token??K.connection_token;if(!F)try{let y=await new U5(Z.db,Z.vault).get(Y);if(y?.accessToken)F=y.accessToken}catch{}let w=await lB({id:K.id,title:G.title??K.title,connection_type:W,connection_url:H,connection_token:F,connection_headers:G.connection_headers??K.connection_headers}).catch(()=>null),B=w?.tools?.length?w.tools:null,L=!1;if(G.configuration_scopes===void 0&&w?.scopes?.length)L=!zD4(N,w.scopes),N=w.scopes;if(St(U,N,X.id),L&&N.length>0)await _t(U,N,X.id,Z);let D=J||L,E=D?Ct(U,N):[],z=D?Ct(K.configuration_state??{},K.configuration_scopes??[]):[],j=K.configuration_state,A=j==null||Object.keys(j).length===0,P,I,V=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:z})}catch(f){console.error("Failed to restore credential grants after credential vault mutation failed",f)}},M={...G,connection_url:H,tools:null,configuration_state:U,configuration_scopes:N,updated_by:Q},C={...K,...M};if(D)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:X.id,subjectConnectionId:Y,createdBy:Q,grants:E}),E.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:X.id,subjectConnectionId:Y})){let{plaintextToken:y,record:o}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:X.id,subjectConnectionId:Y});I=o.id,P={baseUrl:Z.baseUrl,org:X.slug??X.id,subjectConnectionId:Y,token:y}}}}catch(f){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});throw await V(),f}if(D&&U&&N)try{await(await v5(C,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:U,scopes:N,firstRun:A,...P?{vault:P}:{}}})}catch(f){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",f),I)throw await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I}),await V(),f}let m;try{m=await Z.storage.connections.update(Y,M)}catch(f){if(D){if(I)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:X.id,subjectConnectionId:Y,tokenId:I});await V()}throw f}if(B)U9()?.set("tools",Y,B).catch(()=>{});return lg(Y),{item:m}}})});import{z as jD4}from"zod";var PD4,ve0;var bH8=O(()=>{B3();p4();p0();GG();mt();MW();PD4=gt.extend({force:jD4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),ve0=t({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:PD4,outputSchema:ht(ZX),handler:async($,Z)=>{W0(Z);let X=Y0(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]:U,...N}=W;await Z.storage.organizationSettings.upsert(X.id,{registry_config:{registries:N,blockedMcps:H}})}}U9()?.invalidate($.id).catch(()=>{}),lg($.id);let K=z1(Z);if(K)n1.capture({distinctId:K,event:"connection_deleted",groups:{organization:X.id},properties:{connection_id:Q.id,connection_type:Q.connection_type,app_name:Q.app_name??null,organization_id:X.id,forced:$.force??!1}});return{item:Q}}})});import{z as dg}from"zod";var xe0;var yH8=O(()=>{p0();xe0=t({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:dg.object({id:dg.string()}),outputSchema:dg.object({id:dg.string(),healthy:dg.boolean(),latencyMs:dg.number()}),handler:async($,Z)=>{let X=Y0(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 gH8=O(()=>{gW8();MH8();VH8();fH8();bH8();yH8()});import{sql as b4}from"kysely";import{z as eW}from"zod";function hH8($){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 RD4($,Z){let X=$;for(let Y=Z.length;Y>=1;Y--){let G=`$${Y}`;if(X.includes(G))X=X.replaceAll(G,hH8(Z[Y-1]))}let Q=[];for(let Y=0;Y<X.length;Y++)if(X[Y]==="?")Q.push(Y);for(let Y=Math.min(Q.length,Z.length)-1;Y>=0;Y--){let G=Q[Y],J=hH8(Z[Y]);X=X.slice(0,G)+J+X.slice(G+1)}return X}function uH8($){return $.replace(/-/g,"_")}function qD4($){return`app_${uH8($)}`}function MD4($){return`app_role_${uH8($)}`}function VD4($){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 kD4($,Z,X){if(await b4`CREATE SCHEMA IF NOT EXISTS ${b4.id(Z)}`.execute($),!(await b4`
|
|
2228
2228
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${X}) as exists
|
|
2229
|
-
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(X)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(X)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(X)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(X)}`.execute($)}async function SD4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(Q).execute(Y)})}catch(Y){if(VD4(Y))return await kD4($,Z,X),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(Q).execute(G)});throw Y}}var TD4,ID4,cH8;var lH8=O(()=>{p0();TD4=eW.object({results:eW.array(eW.unknown()).optional(),success:eW.boolean().optional()});ID4=eW.object({sql:eW.string().describe("The SQL query to run"),params:eW.array(eW.any()).describe("The parameters to pass to the SQL query").optional()});cH8=t({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:ID4,outputSchema:eW.object({result:eW.array(TD4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=RD4($.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=qD4(Z.connectionId),Y=MD4(Z.connectionId);return{result:[{results:(await SD4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function PG0($){let Z=$.access.getRole();if(!W3(Z))throw new JN("Only organization owners and admins can change org-wide pin status")}var fe0=O(()=>{H3();Jz()});async function AG0($,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 ON($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function TG0($){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 it($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function nt($,Z){if(!Z)return $;let X=`${TG0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function _D4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var mg;var dH8=O(()=>{_W();mg=class mg extends m9{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=TG0(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`${TG0($)}_${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=it(Q._meta);if(!Y)continue;if(nt(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=it(Q._meta);if(!Y)continue;if(nt(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<mg.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${mg.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??_D4(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 RG0=O(()=>{dH8()});function ye0($){return ON($)}function xD4($,Z){let X=ON(Z)||"prompt";return`${String($).padStart(vD4,"0")}-${X}`}async function ge0($,Z,X){try{await $.delete(IG0,ye0(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function qG0($,Z,X,Q){let Y=ye0(Z);await ge0($,Z,X),await Promise.all(Q.slice(0,be0).map(async(G,J)=>{let K=xD4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(IG0,`${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 mH8($,Z){let X=ye0(Z),Q;try{Q=await $.listDir(IG0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,be0),G=[];for(let J of Y)try{let K=await $.read(IG0,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 IG0="agent-prompts",be0=20,vD4;var pt=O(()=>{RG0();vD4=String(be0-1).length});import{z as pH8}from"zod";function fD4(){let $=iH8[Math.floor(Math.random()*iH8.length)];return`icon://${nH8[Math.floor(Math.random()*nH8.length)]}?color=${$}`}var iH8,nH8,bD4,yD4,he0;var tH8=O(()=>{p0();mB();fe0();pt();iH8=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],nH8=["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"];bD4=pH8.object({data:nZ0.describe("Data for the new virtual MCP")}),yD4=pH8.object({item:XX.describe("The created virtual MCP entity")}),he0=t({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:bD4,outputSchema:yD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)PG0(Z);let{prompts:Y,...G}=$.data;if(G.connections.length>0)await AG0(Z,X.id,G.connections.map((W)=>W.connection_id));let J={...G,icon:G.icon??fD4()},K=await Z.storage.virtualMcps.create(X.id,Q,J);if(Y?.length&&Z.orgFs&&K.id)await qG0(Z.orgFs,K.id,Q,Y);return{item:K}}})});function gD4($){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 sB($){return typeof $==="string"||typeof $==="number"}function ue0($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function hD4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function MG0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>MG0($,H));case"or":return W.some((H)=>MG0($,H));case"not":return!W.every((H)=>MG0($,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 hD4($,Y)}let J=ue0($,G);switch(Q){case"eq":return J===Y;case"gt":return sB(J)&&sB(Y)&&J>Y;case"gte":return sB(J)&&sB(Y)&&J>=Y;case"lt":return sB(J)&&sB(Y)&&J<Y;case"lte":return sB(J)&&sB(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=gD4(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 uD4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=ue0(X,G),K=ue0(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 cD4,lD4,ce0;var oH8=O(()=>{B3();p0();mB();cD4=sJ,lD4=wN(XX),ce0=t({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:cD4,outputSchema:lD4,handler:async($,Z)=>{await Z.access.check();let X=Y0(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((F)=>MG0(F,$.where));if($.orderBy&&$.orderBy.length>0)J=uD4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,U=J.slice(W,W+H),N=W+H<K;return{items:U,totalCount:K,hasMore:N}}})});import{z as le0}from"zod";var dD4,mD4,de0;var rH8=O(()=>{p0();mB();dD4=le0.object({id:le0.string().describe("ID of the virtual MCP to retrieve")}),mD4=le0.object({item:XX.nullable().describe("The retrieved virtual MCP, or null if not found")}),de0=t({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:dD4,outputSchema:mD4,handler:async($,Z)=>{W0(Z);let X=Y0(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}}})});import{z as me0}from"zod";var iD4,nD4,ie0;var aH8=O(()=>{p0();pt();mB();fe0();iD4=me0.object({id:me0.string().describe("ID of the virtual MCP to update"),data:pZ0.describe("Partial virtual MCP data to update")}),nD4=me0.object({item:XX.describe("The updated virtual MCP entity")}),ie0=t({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:iD4,outputSchema:nD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,...J}=$.data;if(J.metadata&&Y.metadata)J.metadata={...Y.metadata,...J.metadata};if(J.pinned!==void 0&&J.pinned!==Y.pinned)PG0(Z);if(J.connections?.length)await AG0(Z,X.id,J.connections.map((W)=>W.connection_id));let K=await Z.storage.virtualMcps.update($.id,Q,J);if(G!==void 0&&Z.orgFs)await qG0(Z.orgFs,$.id,Q,G);return{item:K}}})});function pD4($){if(!$)return!1;return/permission\s+"?checks"?\s+is not allowed/i.test($)||/permissions exceed what the github app/i.test($)}function tD4($){let{checks:Z,...X}=$;return X}async function $U8($,Z){let X={...Z,checks:"read"},Q=await $(X);if(Q.isError&&pD4(Q.content?.find((Y)=>Y.type==="text")?.text)){let Y=tD4(Z);return{result:await $(Y),grantedPermissions:Y}}return{result:Q,grantedPermissions:X}}function oD4($){if(!$||typeof $!=="object"||Array.isArray($))return sH8;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return sH8;return Z}function rD4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function t9($){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=rD4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:oD4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function kz($){return $.metadata?.orgShared===!0}function ZU8($,Z,X){let Q=eH8(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=t9(G);return J!==null&&eH8(J.owner,J.repo)===Q});return Y.find(kz)??Y[0]??null}var sH8,eH8=($,Z)=>`${$}/${Z}`.toLowerCase();var L3=O(()=>{sH8={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read"}});function XU8($){return Q3($)!==null||LX0($)!==null}var QU8=O(()=>{q6()});import{z as ne0}from"zod";var aD4,sD4,pe0;var YU8=O(()=>{L3();O3();p0();pt();mB();QU8();aD4=ne0.object({id:ne0.string().describe("ID of the virtual MCP to delete")}),sD4=ne0.object({item:XX.describe("The deleted virtual MCP entity")}),pe0=t({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:aD4,outputSchema:sD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);if(await Z.access.check(),XU8($.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 ge0(Z.orgFs,$.id,z1(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(kz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0);if(G&&t9(G)&&!J){let W=await new U5(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 oQ}from"zod";var eD4,te0;var GU8=O(()=>{p0();eD4=oQ.object({id:oQ.string(),virtualMcpId:oQ.string(),pluginId:oQ.string(),connectionId:oQ.string().nullable(),settings:oQ.record(oQ.string(),oQ.unknown()).nullable(),createdAt:oQ.string(),updatedAt:oQ.string()}),te0=t({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:oQ.object({virtualMcpId:oQ.string().describe("Virtual MCP ID"),pluginId:oQ.string().describe("Plugin ID")}),outputSchema:oQ.object({config:eD4.nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(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 tZ}from"zod";var $E4,oe0;var JU8=O(()=>{p0();ug();HZ();$E4=tZ.object({id:tZ.string(),virtualMcpId:tZ.string(),pluginId:tZ.string(),connectionId:tZ.string().nullable(),settings:tZ.record(tZ.string(),tZ.unknown()).nullable(),createdAt:tZ.string(),updatedAt:tZ.string()}),oe0=t({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:tZ.object({virtualMcpId:tZ.string().describe("Virtual MCP ID"),pluginId:tZ.string().describe("Plugin ID"),connectionId:tZ.string().nullable().optional().describe("MCP connection to bind"),settings:tZ.record(tZ.string(),tZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:tZ.object({config:$E4}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=z1(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&&eJ()&&OG0(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=hg(W.organization_id,G9());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 U=await Z.storage.virtualMcpPluginConfigs.upsert(Q,Y,{connectionId:G,settings:J});return{config:{id:U.id,virtualMcpId:U.virtualMcpId,pluginId:U.pluginId,connectionId:U.connectionId,settings:U.settings,createdAt:U.createdAt instanceof Date?U.createdAt.toISOString():U.createdAt,updatedAt:U.updatedAt instanceof Date?U.updatedAt.toISOString():U.updatedAt}}}})});import{z as WQ}from"zod";var ZE4,re0;var KU8=O(()=>{p0();mB();ZE4=WQ.object({connectionId:WQ.string(),toolName:WQ.string(),label:WQ.string(),icon:WQ.string().nullable().optional()}),re0=t({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:WQ.object({virtualMcpId:WQ.string().describe("Virtual MCP ID"),pinnedViews:WQ.array(ZE4).describe("Pinned views to set for the virtual MCP sidebar"),layout:WQ.object({defaultMainView:WQ.object({type:WQ.string(),id:WQ.string().optional(),toolName:WQ.string().optional()}).nullable().optional(),chatDefaultOpen:WQ.boolean().nullable().optional()}).optional()}),outputSchema:WQ.object({item:XX.nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=z1(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 LN}from"zod";var XE4,QE4,ae0;var WU8=O(()=>{p0();XE4=LN.object({ids:LN.array(LN.string()).describe("Virtual MCP ids to look up")}),QE4=LN.object({items:LN.array(LN.object({id:LN.string(),last_used_at:LN.string().optional(),last_used_by:LN.string().optional()}))}),ae0=t({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:XE4,outputSchema:QE4,handler:async($,Z)=>{W0(Z),Y0(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 HU8=O(()=>{tH8();oH8();rH8();aH8();YU8();GU8();JU8();KU8();WU8()});import{z as NX}from"zod";var se0;var UU8=O(()=>{n$();p0();se0=t({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:NX.object({startDate:NX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:NX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:NX.array(NX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:NX.array(NX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:NX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:NX.object({cells:NX.array(NX.object({virtualMcpId:NX.string().nullable(),toolName:NX.string(),calls:NX.number(),errors:NX.number(),outputSize:NX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=Y0(Z);return await Z.access.check(),await vQ(),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 P5}from"zod";var ee0;var NU8=O(()=>{n$();p0();ee0=t({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:P5.object({id:P5.string().describe("Log ID to fetch")}),outputSchema:P5.object({log:P5.object({id:P5.string().optional(),organizationId:P5.string(),connectionId:P5.string(),toolName:P5.string(),input:P5.record(P5.string(),P5.unknown()),output:P5.record(P5.string(),P5.unknown()),isError:P5.boolean(),errorMessage:P5.string().nullish(),durationMs:P5.number(),timestamp:P5.string(),userId:P5.string().nullish(),requestId:P5.string(),userAgent:P5.string().nullish(),virtualMcpId:P5.string().nullish(),properties:P5.record(P5.string(),P5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await vQ();let X=Y0(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 D6}from"zod";var GE4,$01;var FU8=O(()=>{n$();p0();GE4=D6.object({id:D6.string().optional().describe("Unique log identifier"),organizationId:D6.string().describe("Organization ID"),connectionId:D6.string().describe("Connection ID"),toolName:D6.string().describe("Name of the tool that was called"),isError:D6.boolean().describe("Whether the call resulted in an error"),errorMessage:D6.string().nullish().describe("Error message if applicable"),durationMs:D6.number().describe("Call duration in milliseconds"),timestamp:D6.string().describe("ISO 8601 timestamp of the call"),userId:D6.string().nullish().describe("User who triggered the call"),requestId:D6.string().describe("Unique request identifier"),userAgent:D6.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:D6.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:D6.record(D6.string(),D6.string()).nullish().describe("Custom key-value metadata attached to the log")}),$01=t({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:D6.object({connectionId:D6.string().optional().describe("Filter by connection ID"),excludeConnectionIds:D6.array(D6.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:D6.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:D6.string().optional().describe("Filter by tool name"),isError:D6.boolean().optional().describe("Filter by error status"),startDate:D6.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:D6.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:D6.number().default(20).describe("Maximum number of results"),offset:D6.number().default(0).describe("Offset for pagination"),properties:D6.record(D6.string(),D6.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:D6.array(D6.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:D6.record(D6.string(),D6.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:D6.record(D6.string(),D6.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:D6.object({logs:D6.array(GE4).describe("Array of monitoring logs"),total:D6.number().describe("Total number of logs matching filters"),offset:D6.number().describe("Current offset for pagination"),limit:D6.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await vQ();let X=Y0(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 U8}from"zod";var Z01;var wU8=O(()=>{n$();p0();Z01=t({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:U8.object({startDate:U8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:U8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:U8.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:U8.array(U8.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:U8.array(U8.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:U8.array(U8.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:U8.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:U8.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:U8.array(U8.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:U8.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:U8.object({totalCalls:U8.number().describe("Total number of tool calls"),errorRate:U8.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:U8.number().describe("Average call duration in milliseconds"),errorRatePercent:U8.string().optional().describe("Error rate as a percentage string"),totalErrors:U8.number().optional().describe("Total number of errors"),p50DurationMs:U8.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:U8.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:U8.array(U8.object({connectionId:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avgDurationMs:U8.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:U8.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:U8.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:U8.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:U8.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:U8.array(U8.object({toolName:U8.string(),connectionId:U8.string().nullable(),calls:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:U8.array(U8.object({timestamp:U8.string(),toolName:U8.string(),calls:U8.number(),errors:U8.number(),avg:U8.number(),p95:U8.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:U8.array(U8.object({timestamp:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avg:U8.number(),p50:U8.number(),p95:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),totalTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=Y0(Z);if(await Z.access.check(),await vQ(),$.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 HQ}from"zod";var X01;var BU8=O(()=>{n$();p0();X01=t({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:HQ.object({threadIds:HQ.array(HQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:HQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:HQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:HQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:HQ.object({items:HQ.array(HQ.object({threadId:HQ.string(),calls:HQ.number(),inputTokens:HQ.number(),outputTokens:HQ.number(),totalTokens:HQ.number(),costUsd:HQ.number()}))}),handler:async($,Z)=>{let X=Y0(Z);return await Z.access.check(),await vQ(),{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 OU8=O(()=>{UU8();NU8();FU8();wU8();BU8()});function VG0($){return typeof $==="string"&&KE4.has($.trim().toLowerCase())}var KE4;var Q01=O(()=>{KE4=new Set([".well-known","_admin","api","auth","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as JG}from"zod";var Y01;var LU8=O(()=>{p0();Q01();Y01=t({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:JG.object({slug:JG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!VG0($),"Slug is reserved by Studio"),name:JG.string().min(1).max(255),description:JG.string().optional()}),outputSchema:JG.object({id:JG.string(),name:JG.string(),slug:JG.string(),logo:JG.string().nullable().optional(),metadata:JG.any().optional(),createdAt:JG.string().datetime().describe("ISO 8601 timestamp"),members:JG.array(JG.any()).optional()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=z1(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 $K}from"zod";var G01;var DU8=O(()=>{p0();G01=t({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:$K.object({userId:$K.string().optional()}),outputSchema:$K.object({organizations:$K.array($K.object({id:$K.string(),name:$K.string(),slug:$K.string(),logo:$K.string().nullable().optional(),metadata:$K.any().optional(),createdAt:$K.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=z1(Z),Q=$.userId||X;if(!Q)throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list(Q)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as D3}from"zod";var J01;var EU8=O(()=>{p0();J01=t({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:D3.object({}),outputSchema:D3.object({id:D3.string(),name:D3.string(),slug:D3.string(),logo:D3.string().nullable().optional(),metadata:D3.any().optional(),createdAt:D3.string().datetime().describe("ISO 8601 timestamp"),members:D3.array(D3.any()).optional(),invitations:D3.array(D3.any()).optional()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as ZK}from"zod";var K01;var zU8=O(()=>{p0();K01=t({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ZK.object({id:ZK.string(),name:ZK.string().min(1).max(255).optional(),description:ZK.string().optional()}),outputSchema:ZK.object({id:ZK.string(),name:ZK.string(),slug:ZK.string(),logo:ZK.string().nullable().optional(),metadata:ZK.any().optional(),createdAt:ZK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X={};if($.name)X.name=$.name;if($.description)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as tt}from"zod";var W01;var jU8=O(()=>{p0();W01=t({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:tt.object({id:tt.string()}),outputSchema:tt.object({success:tt.boolean(),id:tt.string()}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as P8}from"zod";var ot,rt,DN,PU8,eB,at,st,et,$o,$O;var E3=O(()=>{ot=P8.object({title:P8.string(),url:P8.string(),icon:P8.string()}),rt=P8.object({registries:P8.record(P8.string(),P8.object({enabled:P8.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:P8.array(P8.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),DN=P8.object({keyId:P8.string(),modelId:P8.string(),title:P8.string().optional()}).nullable(),PU8=P8.enum(["fast","smart","thinking","image","web_search","deep_research"]),eB=P8.enum(["fast","smart","thinking"]),at=P8.object({tiers:P8.object({fast:DN,smart:DN,thinking:DN,image:DN,web_search:DN,deep_research:DN})}),st=P8.object({tiers:P8.object({fast:DN.optional(),smart:DN.optional(),thinking:DN.optional()})}),et=P8.object({ids:P8.array(P8.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),$o=P8.object({demo_mode:P8.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:P8.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."),qa_agent_enabled:P8.boolean().optional().describe("Run the QA Agent on a task's pull request once it's In Review \u2014 it verifies the task actually solved the problem (exercises the feature, not just the diff)."),code_reviewer_enabled:P8.boolean().optional().describe("Run the Code Reviewer on a task's pull request once it's In Review \u2014 it reviews the code using the repo's stack-appropriate review skills."),auto_merge:P8.boolean().optional().describe("When every enabled reviewer (QA Agent / Code 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."),auto_assign_report_tasks_to_super_agent:P8.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.")}),$O=P8.object({id:P8.string().describe("Brand context ID"),name:P8.string().describe("Company name"),domain:P8.string().describe("Company domain (e.g. example.com)"),overview:P8.string().describe("Company overview / description"),logo:P8.string().nullable().optional().describe("Logo URL"),favicon:P8.string().nullable().optional().describe("Favicon URL"),ogImage:P8.string().nullable().optional().describe("OG image URL"),fonts:P8.object({heading:P8.string().optional().describe("Font family for headings"),body:P8.string().optional().describe("Font family for body text"),code:P8.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:P8.object({primary:P8.string().optional().describe("Primary brand color (hex)"),secondary:P8.string().optional().describe("Secondary brand color (hex)"),accent:P8.string().optional().describe("Accent / highlight color (hex)"),background:P8.string().optional().describe("Background color (hex)"),foreground:P8.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:P8.array(P8.record(P8.string(),P8.unknown())).nullable().optional().describe("Brand images"),metadata:P8.record(P8.string(),P8.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:P8.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:P8.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as EN}from"zod";var H01;var AU8=O(()=>{p0();E3();H01=t({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:EN.object({}),outputSchema:EN.object({organizationId:EN.string(),sidebar_items:EN.array(ot).nullable().optional(),enabled_plugins:EN.array(EN.string()).nullable().optional(),registry_config:rt.nullable().optional(),simple_mode:at.nullable().optional(),default_home_agents:et.nullable().optional(),flags:$o.nullable().optional(),main_agent_id:EN.string().nullable().optional(),createdAt:EN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:EN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(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 rQ}from"zod";var U01;var TU8=O(()=>{p0();E3();U01=t({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:rQ.object({organizationId:rQ.string(),sidebar_items:rQ.array(ot).optional(),enabled_plugins:rQ.array(rQ.string()).optional(),registry_config:rt.optional(),simple_mode:at.optional(),default_home_agents:et.optional(),flags:$o.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:rQ.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:rQ.object({organizationId:rQ.string(),sidebar_items:rQ.array(ot).nullable().optional(),enabled_plugins:rQ.array(rQ.string()).nullable().optional(),registry_config:rt.nullable().optional(),simple_mode:at.nullable().optional(),default_home_agents:et.nullable().optional(),flags:$o.nullable().optional(),main_agent_id:rQ.string().nullable().optional(),createdAt:rQ.string().datetime().describe("ISO 8601 timestamp"),updatedAt:rQ.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(W0(Z),await Z.access.check(),Y0(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 XK}from"zod";var RU8,N01,F01;var IU8=O(()=>{p0();E3();RU8=$O.extend({organizationId:XK.string(),archivedAt:XK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:XK.string().describe("ISO 8601 timestamp"),updatedAt:XK.string().describe("ISO 8601 timestamp")}),N01=t({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:XK.object({includeArchived:XK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:XK.object({items:XK.array(RU8)}),handler:async($,Z)=>{W0(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}))}}}),F01=t({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:XK.object({id:XK.string().describe("Brand context ID")}),outputSchema:RU8.extend({organizationId:XK.string()}),handler:async($,Z)=>{W0(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 Sz}from"zod";var qU8,w01,B01,O01;var MU8=O(()=>{p0();E3();qU8=$O.extend({organizationId:Sz.string(),createdAt:Sz.string().describe("ISO 8601 timestamp"),updatedAt:Sz.string().describe("ISO 8601 timestamp")}),w01=t({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:$O.omit({id:!0}),outputSchema:qU8,handler:async($,Z)=>{W0(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}}}),B01=t({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:$O.partial().required({id:!0}),outputSchema:qU8,handler:async($,Z)=>{W0(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}}}),O01=t({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:Sz.object({id:Sz.string().describe("Brand context ID")}),outputSchema:Sz.object({success:Sz.boolean()}),handler:async($,Z)=>{W0(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 kG0($,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 F=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${F.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=UE4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((F)=>F.trim()).filter(Boolean)?.slice().sort((F,w)=>F.length-w.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 UE4($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[U,N]of Object.entries(Q))if(typeof N==="string"&&N&&WE4.has(U))Y[U]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[U,N]of Object.entries(K))if(typeof N==="string"&&N){let F=HE4[U.toLowerCase()];if(F&&!G[F])G[F]=N}let W=$.fonts;if(Array.isArray(W))for(let U of W){let N=U.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let U of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[U]!==void 0)H[U]=$[U];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 WE4,HE4;var L01=O(()=>{WE4=new Set(["primary","secondary","accent","background","foreground"]),HE4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as SG0}from"zod";var NE4,D01;var VU8=O(()=>{p0();L01();E3();NE4=$O.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:SG0.boolean()}),D01=t({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:SG0.object({domain:SG0.string().describe("Website domain to extract brand from"),brandId:SG0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:NE4,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)=>{W0(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 kG0($.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 kU8($){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 E01,z01;var SU8=O(()=>{Te0();p0();E01=t({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:WG0,outputSchema:ft,handler:async($,Z)=>{W0(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 kU8(Q)}}),z01=t({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:HG0,outputSchema:UG0,handler:async($,Z)=>{W0(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(kU8)}}})});import{resolveTxt as FE4}from"dns/promises";function j01($){return`${wE4}.${$.toLowerCase()}`}function CU8(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function _U8($,Z,X=FE4){if(!Z)return!1;try{return(await X(j01($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var wE4="_deco-verify";var vU8=()=>{};import{z as x5}from"zod";function ZO($){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?j01($.domain):null,recordValue:Z?$.verificationToken:null}}function OE4($){let Z=$.toLowerCase().trim();if(!BE4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(QK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var BE4,P01,CG0,A01,T01,R01,I01,q01;var xU8=O(()=>{z3();vU8();p0();BE4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,P01=x5.enum(["off","auto","request"]),CG0=x5.object({id:x5.string(),domain:x5.string(),joinMode:P01,verificationStatus:x5.enum(["pending","verified"]),verificationMethod:x5.enum(["email","dns"]).nullable(),verifiedAt:x5.string().nullable(),recordName:x5.string().nullable(),recordValue:x5.string().nullable()});A01=t({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:x5.object({}),outputSchema:x5.object({domains:x5.array(CG0)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(ZO)}}}),T01=t({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:x5.object({domain:x5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:P01.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:CG0,handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=OE4($.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 ZO(H)}return ZO(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:CU8()});return ZO(W)}}),R01=t({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:x5.object({id:x5.string(),joinMode:P01}),outputSchema:CG0,handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 ZO(Y)}}),I01=t({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:x5.object({id:x5.string()}),outputSchema:x5.object({verified:x5.boolean(),domain:CG0}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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:ZO(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await _U8(Q.domain,Q.verificationToken))return{verified:!1,domain:ZO(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:ZO(G)}}}),q01=t({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:x5.object({id:x5.string()}),outputSchema:x5.object({success:x5.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 XO($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as k9}from"zod";var LE4,M01,V01,k01;var fU8=O(()=>{p0();p4();LE4=k9.object({id:k9.string(),userId:k9.string(),status:k9.enum(["pending","approved","denied"]),createdAt:k9.string(),user:k9.object({id:k9.string(),name:k9.string(),email:k9.string(),image:k9.string().nullable()}).nullable()}),M01=t({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:k9.object({}),outputSchema:k9.object({requests:k9.array(LE4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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}))}}}),V01=t({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:k9.object({requestId:k9.string()}),outputSchema:k9.object({success:k9.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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=z1(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(!XO(J))throw J}if(Y)n1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),k01=t({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:k9.object({requestId:k9.string()}),outputSchema:k9.object({success:k9.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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=z1(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)n1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as aQ}from"zod";var S01;var bU8=O(()=>{p4();p0();H3();S01=t({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:aQ.object({organizationId:aQ.string().optional(),userId:aQ.string(),role:aQ.array(aQ.string())}),outputSchema:aQ.object({id:aQ.string(),organizationId:aQ.string(),userId:aQ.string(),role:aQ.union([aQ.string(),aQ.array(aQ.string())]),createdAt:aQ.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(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","=",z1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!hQ0(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=z1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as ig}from"zod";var C01;var yU8=O(()=>{p4();p0();C01=t({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:ig.object({organizationId:ig.string().optional(),memberIdOrEmail:ig.string()}),outputSchema:ig.object({success:ig.boolean(),memberIdOrEmail:ig.string()}),handler:async($,Z)=>{W0(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=z1(Z);if(Y)n1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as FX}from"zod";var _01;var gU8=O(()=>{p0();_01=t({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:FX.object({limit:FX.number().optional(),offset:FX.number().optional()}),outputSchema:FX.object({members:FX.array(FX.object({id:FX.string(),organizationId:FX.string(),userId:FX.string(),role:FX.string(),createdAt:FX.string().datetime().describe("ISO 8601 timestamp"),user:FX.object({id:FX.string(),name:FX.string(),email:FX.string(),image:FX.string().optional()}).optional()}))}),handler:async($,Z)=>{W0(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.listMembers({organizationId:X,limit:$.limit,offset:$.offset});return{members:(Array.isArray(Q)?Q:[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as oZ}from"zod";var v01;var hU8=O(()=>{p4();p0();H3();v01=t({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:oZ.object({organizationId:oZ.string().optional(),memberId:oZ.string(),role:oZ.array(oZ.string())}),outputSchema:oZ.object({id:oZ.string(),organizationId:oZ.string(),userId:oZ.string(),role:oZ.union([oZ.string(),oZ.array(oZ.string())]),createdAt:oZ.string().datetime().describe("ISO 8601 timestamp"),user:oZ.object({email:oZ.string(),name:oZ.string(),image:oZ.string().optional()})}),handler:async($,Z)=>{W0(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","=",z1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!hQ0(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=z1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function uU8(){if(Zo&&Date.now()-Zo.fetchedAt<600000)return Zo.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 Zo={rate:X,fetchedAt:Date.now()},X}catch{return Zo?.rate??5.5}}function cU8($,Z,X){if(Z==="brl")return Math.round($/X);return $}var Zo=null;function x01($,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)x01(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")x01(Y,G,X);else X.append(G,String(Y))}return X}async function _G0($,Z){let X=e0().stripeSecretKey;if(!X)throw new YK(503,"billing is not configured");let Q=Z?.params?x01(Z.params).toString():void 0,Y=await fetch(`${DE4}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout(EE4)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new YK(Y.status,J)}return G}function lU8($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function dU8($){let Z=e0().stripeOrgPriceId;if(!Z)throw new YK(503,"billing is not configured");let X=await _G0("/checkout/sessions",{params:{mode:"subscription",...lU8(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 YK(500,"checkout session lacks url");return{url:X.url}}function zE4($,Z){return Math.round($*(1+Z/100))}async function mU8($){let Z=zE4($.amountCents,$.feePercent),X=cU8($.amountCents,$.currency,await uU8()),Q=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,Y=await _G0("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...lU8($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,product_data:{name:Q}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{kind:"topup",orgId:$.organizationId,creditCents:X}}});if(!Y.url)throw new YK(500,"checkout session lacks url");return{url:Y.url}}async function iU8($){let Z=await _G0("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new YK(500,"portal session lacks url");return{url:Z.url}}async function nU8($){await _G0(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var DE4="https://api.stripe.com/v1",YK,EE4=15000;var Xo=O(()=>{v8();YK=class YK extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as f01}from"zod";var b01;var pU8=O(()=>{Xo();HZ();p0();p4();b01=t({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:f01.object({}),outputSchema:f01.object({url:f01.string()}),handler:async($,Z)=>{W0(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=`${xQ()}/${encodeURIComponent(Q)}/members`,{url:J}=await dU8({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return tJ({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as y01}from"zod";var g01;var tU8=O(()=>{Xo();HZ();p0();g01=t({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:y01.object({}),outputSchema:y01.object({url:y01.string()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 iU8({customerId:Q.stripeCustomerId,returnUrl:`${xQ()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof YK)throw Error(Y.message);throw Y}}})});function oU8($){return h01[$%h01.length]??jE4}function sQ($){return $.createdBy==="system"}function Qo($,Z){return $?.startsWith(`${ng[Z]}:`)??!1}function Cz($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function PE4($,Z){let X=Cz($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function QO($,Z,X){if(Z.length===0)return!1;let Q=PE4($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function rU8($,Z){return QO($,Z)&&!QO($,Z,{verifiedOnly:!0})}function aU8($,Z=u01){return $.filter((Q)=>Q.action==="review_changes_requested").length+1>=Z}var M4="super-agent",h01,jE4,j3,ng,zN,u01=5,sU8="task-board.item.updated",eU8="task-board.item.deleted";var rZ=O(()=>{h01=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],jE4=h01[0];j3=["qa","code_review"],ng={qa:"QA Agent",code_review:"Code Reviewer"},zN={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function c01($){return $==="trial"?"trial":"subscription"}function Yo($,Z,X,Q={}){tJ({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function l01($){return $?.status==="active"||$?.status==="past_due"}function vG0($,Z){if(l01($))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 Go(){let $=e0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function pg(){return{...Go(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function xG0($,Z,X=Go()){if(!X.enforced||!sQ(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Yo($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new eQ("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=vG0(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Yo($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:c01(G.periodKey),limit:G.limit}),new eQ(G.exhaustedReason)}async function $N8($,Z,X=Go()){if(!X.enforced||!sQ(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=vG0(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Yo($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:c01(Y.periodKey),limit:Y.limit}),new eQ(Y.exhaustedReason);if(G==="runs_exhausted")throw Yo($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new eQ("runs_exhausted");if(G==="claimed")Yo($,"task_quota_claimed",Z,{billing_mode:c01(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function ZN8($,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 XN8($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function QN8($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))tJ({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var AE4="[SUBSCRIPTION_REQUIRED]",TE4,eQ;var GK=O(()=>{rZ();p4();v8();TE4={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"};eQ=class eQ extends Error{reason;constructor($){super(`${AE4} ${TE4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as jN}from"zod";var d01;var YN8=O(()=>{p0();GK();d01=t({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:jN.object({}),outputSchema:jN.object({enforced:jN.boolean(),billingStatus:jN.string(),subscribed:jN.boolean(),hasBillingAccount:jN.boolean(),used:jN.number(),limit:jN.number(),currentPeriodEnd:jN.string().datetime().nullable()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=Go(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=vG0(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:l01(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var GN8=O(()=>{LU8();DU8();EU8();zU8();jU8();AU8();TU8();IU8();MU8();VU8();SU8();xU8();fU8();bU8();yU8();gU8();hU8();pU8();tU8();YN8()});function $H($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function fG0($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(fG0);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||fG0(X)));return!1}function m01($){return Array.isArray($)&&$.every(fG0)}function Jo($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||fG0(X)))}var xN8="vercel.ai.error",IE4,JN8,KN8,D1,fN8="AI_APICallError",bN8,qE4,WN8,HN8,N4,yN8="AI_EmptyResponseBodyError",gN8,ME4,UN8,NN8,bG0,hN8="AI_InvalidArgumentError",uN8,VE4,FN8,wN8,YO,cN8="AI_InvalidPromptError",lN8,kE4,BN8,ON8,P3,dN8="AI_InvalidResponseDataError",mN8,SE4,LN8,DN8,tg,iN8="AI_JSONParseError",nN8,CE4,EN8,zN8,PN,pN8="AI_LoadAPIKeyError",tN8,_E4,jN8,PN8,_z,oN8="AI_LoadSettingError",rN8,vE4,AN8,TN8,aN8,sN8="AI_NoContentGeneratedError",eN8,xE4,RN8,IN8,$F8,ZF8="AI_NoSuchModelError",XF8,fE4,qN8,MN8,n5,QF8="AI_TooManyEmbeddingValuesForCallError",YF8,bE4,VN8,kN8,og,GF8="AI_TypeValidationError",JF8,yE4,SN8,CN8,A5,KF8="AI_UnsupportedFunctionalityError",WF8,gE4,_N8,vN8,y4;var Q8=O(()=>{IE4=Symbol.for(xN8),D1=class $ extends(KN8=Error,JN8=IE4,KN8){constructor({name:Z,message:X,cause:Q}){super(X);this[JN8]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,xN8)}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}},bN8=`vercel.ai.error.${fN8}`,qE4=Symbol.for(bN8),N4=class extends(HN8=D1,WN8=qE4,HN8){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:fN8,message:$,cause:J});this[WN8]=!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 D1.hasMarker($,bN8)}},gN8=`vercel.ai.error.${yN8}`,ME4=Symbol.for(gN8),bG0=class extends(NN8=D1,UN8=ME4,NN8){constructor({message:$="Empty response body"}={}){super({name:yN8,message:$});this[UN8]=!0}static isInstance($){return D1.hasMarker($,gN8)}};uN8=`vercel.ai.error.${hN8}`,VE4=Symbol.for(uN8),YO=class extends(wN8=D1,FN8=VE4,wN8){constructor({message:$,cause:Z,argument:X}){super({name:hN8,message:$,cause:Z});this[FN8]=!0,this.argument=X}static isInstance($){return D1.hasMarker($,uN8)}},lN8=`vercel.ai.error.${cN8}`,kE4=Symbol.for(lN8),P3=class extends(ON8=D1,BN8=kE4,ON8){constructor({prompt:$,message:Z,cause:X}){super({name:cN8,message:`Invalid prompt: ${Z}`,cause:X});this[BN8]=!0,this.prompt=$}static isInstance($){return D1.hasMarker($,lN8)}},mN8=`vercel.ai.error.${dN8}`,SE4=Symbol.for(mN8),tg=class extends(DN8=D1,LN8=SE4,DN8){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:dN8,message:Z});this[LN8]=!0,this.data=$}static isInstance($){return D1.hasMarker($,mN8)}},nN8=`vercel.ai.error.${iN8}`,CE4=Symbol.for(nN8),PN=class extends(zN8=D1,EN8=CE4,zN8){constructor({text:$,cause:Z}){super({name:iN8,message:`JSON parsing failed: Text: ${$}.
|
|
2229
|
+
`.execute($)).rows[0]?.exists)await b4`CREATE ROLE ${b4.id(X)} NOLOGIN`.execute($);await b4`GRANT ${b4.id(X)} TO CURRENT_USER`.execute($),await b4`GRANT USAGE, CREATE ON SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL TABLES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${b4.id(Z)} TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON TABLES TO ${b4.id(X)}`.execute($),await b4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${b4.id(Z)} GRANT ALL ON SEQUENCES TO ${b4.id(X)}`.execute($),await b4`REVOKE ALL ON SCHEMA public FROM ${b4.id(X)}`.execute($)}async function SD4($,Z,X,Q){try{return await $.transaction().execute(async(Y)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(Y),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(Y),await b4.raw(Q).execute(Y)})}catch(Y){if(VD4(Y))return await kD4($,Z,X),await $.transaction().execute(async(G)=>{return await b4`SET LOCAL ROLE ${b4.id(X)}`.execute(G),await b4`SET LOCAL search_path TO ${b4.id(Z)}`.execute(G),await b4.raw(Q).execute(G)});throw Y}}var TD4,ID4,cH8;var lH8=O(()=>{p0();TD4=eW.object({results:eW.array(eW.unknown()).optional(),success:eW.boolean().optional()});ID4=eW.object({sql:eW.string().describe("The SQL query to run"),params:eW.array(eW.any()).describe("The parameters to pass to the SQL query").optional()});cH8=t({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:ID4,outputSchema:eW.object({result:eW.array(TD4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=RD4($.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=qD4(Z.connectionId),Y=MD4(Z.connectionId);return{result:[{results:(await SD4(Z.db,Q,Y,X)).rows,success:!0}]}}})});function PG0($){let Z=$.access.getRole();if(!W3(Z))throw new JN("Only organization owners and admins can change org-wide pin status")}var fe0=O(()=>{H3();Jz()});async function AG0($,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 ON($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function TG0($){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 it($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function nt($,Z){if(!Z)return $;let X=`${TG0(Z)}_`;return $.startsWith(X)?$.slice(X.length):$}function _D4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}var mg;var dH8=O(()=>{_W();mg=class mg extends m9{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=TG0(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`${TG0($)}_${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=it(Q._meta);if(!Y)continue;if(nt(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=it(Q._meta);if(!Y)continue;if(nt(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<mg.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${mg.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??_D4(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 RG0=O(()=>{dH8()});function ye0($){return ON($)}function xD4($,Z){let X=ON(Z)||"prompt";return`${String($).padStart(vD4,"0")}-${X}`}async function ge0($,Z,X){try{await $.delete(IG0,ye0(Z),{actor:X})}catch(Q){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:Q})}}async function qG0($,Z,X,Q){let Y=ye0(Z);await ge0($,Z,X),await Promise.all(Q.slice(0,be0).map(async(G,J)=>{let K=xD4(J,G.title),W={name:K,title:G.title,description:G.description,text:G.text};try{await $.write(IG0,`${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 mH8($,Z){let X=ye0(Z),Q;try{Q=await $.listDir(IG0,X)}catch{return[]}let Y=Q.filter((J)=>J.kind==="file"&&J.path.endsWith(".json")).slice(0,be0),G=[];for(let J of Y)try{let K=await $.read(IG0,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 IG0="agent-prompts",be0=20,vD4;var pt=O(()=>{RG0();vD4=String(be0-1).length});import{z as pH8}from"zod";function fD4(){let $=iH8[Math.floor(Math.random()*iH8.length)];return`icon://${nH8[Math.floor(Math.random()*nH8.length)]}?color=${$}`}var iH8,nH8,bD4,yD4,he0;var tH8=O(()=>{p0();mB();fe0();pt();iH8=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],nH8=["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"];bD4=pH8.object({data:nZ0.describe("Data for the new virtual MCP")}),yD4=pH8.object({item:XX.describe("The created virtual MCP entity")}),he0=t({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:bD4,outputSchema:yD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)PG0(Z);let{prompts:Y,...G}=$.data;if(G.connections.length>0)await AG0(Z,X.id,G.connections.map((W)=>W.connection_id));let J={...G,icon:G.icon??fD4()},K=await Z.storage.virtualMcps.create(X.id,Q,J);if(Y?.length&&Z.orgFs&&K.id)await qG0(Z.orgFs,K.id,Q,Y);return{item:K}}})});function gD4($){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 sB($){return typeof $==="string"||typeof $==="number"}function ue0($,Z){let X=Z.split("."),Q=$;for(let Y of X){if(Q==null||typeof Q!=="object")return;Q=Q[Y]}return Q}function hD4($,Z){return $.connections.some((X)=>X.connection_id===Z)}function MG0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>MG0($,H));case"or":return W.some((H)=>MG0($,H));case"not":return!W.every((H)=>MG0($,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 hD4($,Y)}let J=ue0($,G);switch(Q){case"eq":return J===Y;case"gt":return sB(J)&&sB(Y)&&J>Y;case"gte":return sB(J)&&sB(Y)&&J>=Y;case"lt":return sB(J)&&sB(Y)&&J<Y;case"lte":return sB(J)&&sB(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=gD4(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 uD4($,Z){return[...$].sort((X,Q)=>{for(let Y of Z){let G=Y.field.join("."),J=ue0(X,G),K=ue0(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 cD4,lD4,ce0;var oH8=O(()=>{B3();p0();mB();cD4=sJ,lD4=wN(XX),ce0=t({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:cD4,outputSchema:lD4,handler:async($,Z)=>{await Z.access.check();let X=Y0(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((F)=>MG0(F,$.where));if($.orderBy&&$.orderBy.length>0)J=uD4(J,$.orderBy);let K=J.length,W=$.offset??0,H=$.limit??100,U=J.slice(W,W+H),N=W+H<K;return{items:U,totalCount:K,hasMore:N}}})});import{z as le0}from"zod";var dD4,mD4,de0;var rH8=O(()=>{p0();mB();dD4=le0.object({id:le0.string().describe("ID of the virtual MCP to retrieve")}),mD4=le0.object({item:XX.nullable().describe("The retrieved virtual MCP, or null if not found")}),de0=t({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:dD4,outputSchema:mD4,handler:async($,Z)=>{W0(Z);let X=Y0(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}}})});import{z as me0}from"zod";var iD4,nD4,ie0;var aH8=O(()=>{p0();pt();mB();fe0();iD4=me0.object({id:me0.string().describe("ID of the virtual MCP to update"),data:pZ0.describe("Partial virtual MCP data to update")}),nD4=me0.object({item:XX.describe("The updated virtual MCP entity")}),ie0=t({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:iD4,outputSchema:nD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==X.id)throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,...J}=$.data;if(J.metadata&&Y.metadata)J.metadata={...Y.metadata,...J.metadata};if(J.pinned!==void 0&&J.pinned!==Y.pinned)PG0(Z);if(J.connections?.length)await AG0(Z,X.id,J.connections.map((W)=>W.connection_id));let K=await Z.storage.virtualMcps.update($.id,Q,J);if(G!==void 0&&Z.orgFs)await qG0(Z.orgFs,$.id,Q,G);return{item:K}}})});function pD4($){if(!$)return!1;return/permission\s+"?checks"?\s+is not allowed/i.test($)||/permissions exceed what the github app/i.test($)}function tD4($){let{checks:Z,...X}=$;return X}async function $U8($,Z){let X={...Z,checks:"read"},Q=await $(X);if(Q.isError&&pD4(Q.content?.find((Y)=>Y.type==="text")?.text)){let Y=tD4(Z);return{result:await $(Y),grantedPermissions:Y}}return{result:Q,grantedPermissions:X}}function oD4($){if(!$||typeof $!=="object"||Array.isArray($))return sH8;let Z=$;if(Object.values(Z).some((X)=>typeof X!=="string"))return sH8;return Z}function rD4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function t9($){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=rD4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:X,owner:Z.owner,repo:Z.repo,permissions:oD4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function kz($){return $.metadata?.orgShared===!0}function ZU8($,Z,X){let Q=eH8(Z,X),Y=($??[]).filter((G)=>{if(G.status&&G.status!=="active")return!1;let J=t9(G);return J!==null&&eH8(J.owner,J.repo)===Q});return Y.find(kz)??Y[0]??null}var sH8,eH8=($,Z)=>`${$}/${Z}`.toLowerCase();var L3=O(()=>{sH8={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read"}});function XU8($){return Q3($)!==null||LX0($)!==null}var QU8=O(()=>{q6()});import{z as ne0}from"zod";var aD4,sD4,pe0;var YU8=O(()=>{L3();O3();p0();pt();mB();QU8();aD4=ne0.object({id:ne0.string().describe("ID of the virtual MCP to delete")}),sD4=ne0.object({item:XX.describe("The deleted virtual MCP entity")}),pe0=t({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:aD4,outputSchema:sD4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);if(await Z.access.check(),XU8($.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 ge0(Z.orgFs,$.id,z1(Z)??"system");let Y=Q.metadata?.githubRepo?.connectionId;if(Y)try{let G=await Z.storage.connections.findById(Y,X.id),J=G&&(kz(G)||(await Z.storage.virtualMcps.listByConnectionId(X.id,Y)).length>0);if(G&&t9(G)&&!J){let W=await new U5(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 oQ}from"zod";var eD4,te0;var GU8=O(()=>{p0();eD4=oQ.object({id:oQ.string(),virtualMcpId:oQ.string(),pluginId:oQ.string(),connectionId:oQ.string().nullable(),settings:oQ.record(oQ.string(),oQ.unknown()).nullable(),createdAt:oQ.string(),updatedAt:oQ.string()}),te0=t({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:oQ.object({virtualMcpId:oQ.string().describe("Virtual MCP ID"),pluginId:oQ.string().describe("Plugin ID")}),outputSchema:oQ.object({config:eD4.nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(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 tZ}from"zod";var $E4,oe0;var JU8=O(()=>{p0();ug();HZ();$E4=tZ.object({id:tZ.string(),virtualMcpId:tZ.string(),pluginId:tZ.string(),connectionId:tZ.string().nullable(),settings:tZ.record(tZ.string(),tZ.unknown()).nullable(),createdAt:tZ.string(),updatedAt:tZ.string()}),oe0=t({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:tZ.object({virtualMcpId:tZ.string().describe("Virtual MCP ID"),pluginId:tZ.string().describe("Plugin ID"),connectionId:tZ.string().nullable().optional().describe("MCP connection to bind"),settings:tZ.record(tZ.string(),tZ.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:tZ.object({config:$E4}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let{virtualMcpId:Q,pluginId:Y,connectionId:G,settings:J}=$,K=z1(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&&eJ()&&OG0(G,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let N=hg(W.organization_id,G9());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 U=await Z.storage.virtualMcpPluginConfigs.upsert(Q,Y,{connectionId:G,settings:J});return{config:{id:U.id,virtualMcpId:U.virtualMcpId,pluginId:U.pluginId,connectionId:U.connectionId,settings:U.settings,createdAt:U.createdAt instanceof Date?U.createdAt.toISOString():U.createdAt,updatedAt:U.updatedAt instanceof Date?U.updatedAt.toISOString():U.updatedAt}}}})});import{z as WQ}from"zod";var ZE4,re0;var KU8=O(()=>{p0();mB();ZE4=WQ.object({connectionId:WQ.string(),toolName:WQ.string(),label:WQ.string(),icon:WQ.string().nullable().optional()}),re0=t({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:WQ.object({virtualMcpId:WQ.string().describe("Virtual MCP ID"),pinnedViews:WQ.array(ZE4).describe("Pinned views to set for the virtual MCP sidebar"),layout:WQ.object({defaultMainView:WQ.object({type:WQ.string(),id:WQ.string().optional(),toolName:WQ.string().optional()}).nullable().optional(),chatDefaultOpen:WQ.boolean().nullable().optional()}).optional()}),outputSchema:WQ.object({item:XX.nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let{virtualMcpId:Q,pinnedViews:Y,layout:G}=$,J=z1(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 LN}from"zod";var XE4,QE4,ae0;var WU8=O(()=>{p0();XE4=LN.object({ids:LN.array(LN.string()).describe("Virtual MCP ids to look up")}),QE4=LN.object({items:LN.array(LN.object({id:LN.string(),last_used_at:LN.string().optional(),last_used_by:LN.string().optional()}))}),ae0=t({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:XE4,outputSchema:QE4,handler:async($,Z)=>{W0(Z),Y0(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 HU8=O(()=>{tH8();oH8();rH8();aH8();YU8();GU8();JU8();KU8();WU8()});import{z as NX}from"zod";var se0;var UU8=O(()=>{n$();p0();se0=t({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:NX.object({startDate:NX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:NX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:NX.array(NX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:NX.array(NX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:NX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:NX.object({cells:NX.array(NX.object({virtualMcpId:NX.string().nullable(),toolName:NX.string(),calls:NX.number(),errors:NX.number(),outputSize:NX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let X=Y0(Z);return await Z.access.check(),await vQ(),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 P5}from"zod";var ee0;var NU8=O(()=>{n$();p0();ee0=t({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:P5.object({id:P5.string().describe("Log ID to fetch")}),outputSchema:P5.object({log:P5.object({id:P5.string().optional(),organizationId:P5.string(),connectionId:P5.string(),toolName:P5.string(),input:P5.record(P5.string(),P5.unknown()),output:P5.record(P5.string(),P5.unknown()),isError:P5.boolean(),errorMessage:P5.string().nullish(),durationMs:P5.number(),timestamp:P5.string(),userId:P5.string().nullish(),requestId:P5.string(),userAgent:P5.string().nullish(),virtualMcpId:P5.string().nullish(),properties:P5.record(P5.string(),P5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await vQ();let X=Y0(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 D6}from"zod";var GE4,$01;var FU8=O(()=>{n$();p0();GE4=D6.object({id:D6.string().optional().describe("Unique log identifier"),organizationId:D6.string().describe("Organization ID"),connectionId:D6.string().describe("Connection ID"),toolName:D6.string().describe("Name of the tool that was called"),isError:D6.boolean().describe("Whether the call resulted in an error"),errorMessage:D6.string().nullish().describe("Error message if applicable"),durationMs:D6.number().describe("Call duration in milliseconds"),timestamp:D6.string().describe("ISO 8601 timestamp of the call"),userId:D6.string().nullish().describe("User who triggered the call"),requestId:D6.string().describe("Unique request identifier"),userAgent:D6.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:D6.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:D6.record(D6.string(),D6.string()).nullish().describe("Custom key-value metadata attached to the log")}),$01=t({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:D6.object({connectionId:D6.string().optional().describe("Filter by connection ID"),excludeConnectionIds:D6.array(D6.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:D6.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:D6.string().optional().describe("Filter by tool name"),isError:D6.boolean().optional().describe("Filter by error status"),startDate:D6.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:D6.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:D6.number().default(20).describe("Maximum number of results"),offset:D6.number().default(0).describe("Offset for pagination"),properties:D6.record(D6.string(),D6.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:D6.array(D6.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:D6.record(D6.string(),D6.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:D6.record(D6.string(),D6.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:D6.object({logs:D6.array(GE4).describe("Array of monitoring logs"),total:D6.number().describe("Total number of logs matching filters"),offset:D6.number().describe("Current offset for pagination"),limit:D6.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await vQ();let X=Y0(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 U8}from"zod";var Z01;var wU8=O(()=>{n$();p0();Z01=t({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:U8.object({startDate:U8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:U8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:U8.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:U8.array(U8.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:U8.array(U8.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:U8.array(U8.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:U8.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:U8.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:U8.array(U8.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:U8.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:U8.object({totalCalls:U8.number().describe("Total number of tool calls"),errorRate:U8.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:U8.number().describe("Average call duration in milliseconds"),errorRatePercent:U8.string().optional().describe("Error rate as a percentage string"),totalErrors:U8.number().optional().describe("Total number of errors"),p50DurationMs:U8.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:U8.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:U8.array(U8.object({connectionId:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avgDurationMs:U8.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:U8.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:U8.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:U8.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:U8.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:U8.array(U8.object({toolName:U8.string(),connectionId:U8.string().nullable(),calls:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:U8.array(U8.object({timestamp:U8.string(),toolName:U8.string(),calls:U8.number(),errors:U8.number(),avg:U8.number(),p95:U8.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:U8.array(U8.object({timestamp:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avg:U8.number(),p50:U8.number(),p95:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),totalTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let X=Y0(Z);if(await Z.access.check(),await vQ(),$.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 HQ}from"zod";var X01;var BU8=O(()=>{n$();p0();X01=t({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:HQ.object({threadIds:HQ.array(HQ.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:HQ.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:HQ.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:HQ.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:HQ.object({items:HQ.array(HQ.object({threadId:HQ.string(),calls:HQ.number(),inputTokens:HQ.number(),outputTokens:HQ.number(),totalTokens:HQ.number(),costUsd:HQ.number()}))}),handler:async($,Z)=>{let X=Y0(Z);return await Z.access.check(),await vQ(),{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 OU8=O(()=>{UU8();NU8();FU8();wU8();BU8()});function VG0($){return typeof $==="string"&&KE4.has($.trim().toLowerCase())}var KE4;var Q01=O(()=>{KE4=new Set([".well-known","_admin","api","auth","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as JG}from"zod";var Y01;var LU8=O(()=>{p0();Q01();Y01=t({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:JG.object({slug:JG.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!VG0($),"Slug is reserved by Studio"),name:JG.string().min(1).max(255),description:JG.string().optional()}),outputSchema:JG.object({id:JG.string(),name:JG.string(),slug:JG.string(),logo:JG.string().nullable().optional(),metadata:JG.any().optional(),createdAt:JG.string().datetime().describe("ISO 8601 timestamp"),members:JG.array(JG.any()).optional()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=z1(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 $K}from"zod";var G01;var DU8=O(()=>{p0();G01=t({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:$K.object({userId:$K.string().optional()}),outputSchema:$K.object({organizations:$K.array($K.object({id:$K.string(),name:$K.string(),slug:$K.string(),logo:$K.string().nullable().optional(),metadata:$K.any().optional(),createdAt:$K.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=z1(Z),Q=$.userId||X;if(!Q)throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list(Q)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as D3}from"zod";var J01;var EU8=O(()=>{p0();J01=t({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:D3.object({}),outputSchema:D3.object({id:D3.string(),name:D3.string(),slug:D3.string(),logo:D3.string().nullable().optional(),metadata:D3.any().optional(),createdAt:D3.string().datetime().describe("ISO 8601 timestamp"),members:D3.array(D3.any()).optional(),invitations:D3.array(D3.any()).optional()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.boundAuth.organization.get(X);if(!Q)throw Error("No active organization found");let Y=new Date,G=Q.invitations?.filter((J)=>new Date(J.expiresAt)>Y);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as ZK}from"zod";var K01;var zU8=O(()=>{p0();K01=t({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ZK.object({id:ZK.string(),name:ZK.string().min(1).max(255).optional(),description:ZK.string().optional()}),outputSchema:ZK.object({id:ZK.string(),name:ZK.string(),slug:ZK.string(),logo:ZK.string().nullable().optional(),metadata:ZK.any().optional(),createdAt:ZK.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X={};if($.name)X.name=$.name;if($.description)X.metadata={description:$.description};let Q=await Z.boundAuth.organization.update({organizationId:$.id,data:X});if(!Q)throw Error("Failed to update organization");return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as tt}from"zod";var W01;var jU8=O(()=>{p0();W01=t({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:tt.object({id:tt.string()}),outputSchema:tt.object({success:tt.boolean(),id:tt.string()}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as P8}from"zod";var ot,rt,DN,PU8,eB,at,st,et,$o,$O;var E3=O(()=>{ot=P8.object({title:P8.string(),url:P8.string(),icon:P8.string()}),rt=P8.object({registries:P8.record(P8.string(),P8.object({enabled:P8.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:P8.array(P8.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),DN=P8.object({keyId:P8.string(),modelId:P8.string(),title:P8.string().optional()}).nullable(),PU8=P8.enum(["fast","smart","thinking","image","web_search","deep_research"]),eB=P8.enum(["fast","smart","thinking"]),at=P8.object({tiers:P8.object({fast:DN,smart:DN,thinking:DN,image:DN,web_search:DN,deep_research:DN})}),st=P8.object({tiers:P8.object({fast:DN.optional(),smart:DN.optional(),thinking:DN.optional()})}),et=P8.object({ids:P8.array(P8.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),$o=P8.object({demo_mode:P8.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:P8.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."),qa_agent_enabled:P8.boolean().optional().describe("Run the QA Agent on a task's pull request once it's In Review \u2014 it verifies the task actually solved the problem (exercises the feature, not just the diff)."),code_reviewer_enabled:P8.boolean().optional().describe("Run the Code Reviewer on a task's pull request once it's In Review \u2014 it reviews the code using the repo's stack-appropriate review skills."),auto_merge:P8.boolean().optional().describe("When every enabled reviewer (QA Agent / Code 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."),auto_assign_report_tasks_to_super_agent:P8.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.")}),$O=P8.object({id:P8.string().describe("Brand context ID"),name:P8.string().describe("Company name"),domain:P8.string().describe("Company domain (e.g. example.com)"),overview:P8.string().describe("Company overview / description"),logo:P8.string().nullable().optional().describe("Logo URL"),favicon:P8.string().nullable().optional().describe("Favicon URL"),ogImage:P8.string().nullable().optional().describe("OG image URL"),fonts:P8.object({heading:P8.string().optional().describe("Font family for headings"),body:P8.string().optional().describe("Font family for body text"),code:P8.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:P8.object({primary:P8.string().optional().describe("Primary brand color (hex)"),secondary:P8.string().optional().describe("Secondary brand color (hex)"),accent:P8.string().optional().describe("Accent / highlight color (hex)"),background:P8.string().optional().describe("Background color (hex)"),foreground:P8.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:P8.array(P8.record(P8.string(),P8.unknown())).nullable().optional().describe("Brand images"),metadata:P8.record(P8.string(),P8.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:P8.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:P8.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as EN}from"zod";var H01;var AU8=O(()=>{p0();E3();H01=t({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:EN.object({}),outputSchema:EN.object({organizationId:EN.string(),sidebar_items:EN.array(ot).nullable().optional(),enabled_plugins:EN.array(EN.string()).nullable().optional(),registry_config:rt.nullable().optional(),simple_mode:at.nullable().optional(),default_home_agents:et.nullable().optional(),flags:$o.nullable().optional(),main_agent_id:EN.string().nullable().optional(),createdAt:EN.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:EN.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(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 rQ}from"zod";var U01;var TU8=O(()=>{p0();E3();U01=t({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:rQ.object({organizationId:rQ.string(),sidebar_items:rQ.array(ot).optional(),enabled_plugins:rQ.array(rQ.string()).optional(),registry_config:rt.optional(),simple_mode:at.optional(),default_home_agents:et.optional(),flags:$o.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:rQ.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:rQ.object({organizationId:rQ.string(),sidebar_items:rQ.array(ot).nullable().optional(),enabled_plugins:rQ.array(rQ.string()).nullable().optional(),registry_config:rt.nullable().optional(),simple_mode:at.nullable().optional(),default_home_agents:et.nullable().optional(),flags:$o.nullable().optional(),main_agent_id:rQ.string().nullable().optional(),createdAt:rQ.string().datetime().describe("ISO 8601 timestamp"),updatedAt:rQ.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(W0(Z),await Z.access.check(),Y0(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 XK}from"zod";var RU8,N01,F01;var IU8=O(()=>{p0();E3();RU8=$O.extend({organizationId:XK.string(),archivedAt:XK.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:XK.string().describe("ISO 8601 timestamp"),updatedAt:XK.string().describe("ISO 8601 timestamp")}),N01=t({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:XK.object({includeArchived:XK.boolean().optional().describe("Include archived brands in the list")}),outputSchema:XK.object({items:XK.array(RU8)}),handler:async($,Z)=>{W0(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}))}}}),F01=t({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:XK.object({id:XK.string().describe("Brand context ID")}),outputSchema:RU8.extend({organizationId:XK.string()}),handler:async($,Z)=>{W0(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 Sz}from"zod";var qU8,w01,B01,O01;var MU8=O(()=>{p0();E3();qU8=$O.extend({organizationId:Sz.string(),createdAt:Sz.string().describe("ISO 8601 timestamp"),updatedAt:Sz.string().describe("ISO 8601 timestamp")}),w01=t({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:$O.omit({id:!0}),outputSchema:qU8,handler:async($,Z)=>{W0(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}}}),B01=t({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:$O.partial().required({id:!0}),outputSchema:qU8,handler:async($,Z)=>{W0(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}}}),O01=t({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:Sz.object({id:Sz.string().describe("Brand context ID")}),outputSchema:Sz.object({success:Sz.boolean()}),handler:async($,Z)=>{W0(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 kG0($,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 F=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${F.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=UE4(J,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((F)=>F.trim()).filter(Boolean)?.slice().sort((F,w)=>F.length-w.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 UE4($,Z){let X=$.images??{},Q=$.colors??{},Y={};for(let[U,N]of Object.entries(Q))if(typeof N==="string"&&N&&WE4.has(U))Y[U]=N;let G={},K=($.typography??{}).fontFamilies??{};for(let[U,N]of Object.entries(K))if(typeof N==="string"&&N){let F=HE4[U.toLowerCase()];if(F&&!G[F])G[F]=N}let W=$.fonts;if(Array.isArray(W))for(let U of W){let N=U.family;if(typeof N==="string"&&N&&!G.body)G.body=N}let H={};for(let U of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[U]!==void 0)H[U]=$[U];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 WE4,HE4;var L01=O(()=>{WE4=new Set(["primary","secondary","accent","background","foreground"]),HE4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as SG0}from"zod";var NE4,D01;var VU8=O(()=>{p0();L01();E3();NE4=$O.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:SG0.boolean()}),D01=t({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:SG0.object({domain:SG0.string().describe("Website domain to extract brand from"),brandId:SG0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:NE4,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)=>{W0(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 kG0($.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 kU8($){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 E01,z01;var SU8=O(()=>{Te0();p0();E01=t({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:WG0,outputSchema:ft,handler:async($,Z)=>{W0(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 kU8(Q)}}),z01=t({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:HG0,outputSchema:UG0,handler:async($,Z)=>{W0(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(kU8)}}})});import{resolveTxt as FE4}from"dns/promises";function j01($){return`${wE4}.${$.toLowerCase()}`}function CU8(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function _U8($,Z,X=FE4){if(!Z)return!1;try{return(await X(j01($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var wE4="_deco-verify";var vU8=()=>{};import{z as x5}from"zod";function ZO($){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?j01($.domain):null,recordValue:Z?$.verificationToken:null}}function OE4($){let Z=$.toLowerCase().trim();if(!BE4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(QK.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var BE4,P01,CG0,A01,T01,R01,I01,q01;var xU8=O(()=>{z3();vU8();p0();BE4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,P01=x5.enum(["off","auto","request"]),CG0=x5.object({id:x5.string(),domain:x5.string(),joinMode:P01,verificationStatus:x5.enum(["pending","verified"]),verificationMethod:x5.enum(["email","dns"]).nullable(),verifiedAt:x5.string().nullable(),recordName:x5.string().nullable(),recordValue:x5.string().nullable()});A01=t({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:x5.object({}),outputSchema:x5.object({domains:x5.array(CG0)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(X.id)).map(ZO)}}}),T01=t({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:x5.object({domain:x5.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:P01.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:CG0,handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=OE4($.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 ZO(H)}return ZO(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:CU8()});return ZO(W)}}),R01=t({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:x5.object({id:x5.string(),joinMode:P01}),outputSchema:CG0,handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 ZO(Y)}}),I01=t({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:x5.object({id:x5.string()}),outputSchema:x5.object({verified:x5.boolean(),domain:CG0}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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:ZO(Q)};if(!Q.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await _U8(Q.domain,Q.verificationToken))return{verified:!1,domain:ZO(Q)};let G=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:ZO(G)}}}),q01=t({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:x5.object({id:x5.string()}),outputSchema:x5.object({success:x5.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 XO($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as k9}from"zod";var LE4,M01,V01,k01;var fU8=O(()=>{p0();p4();LE4=k9.object({id:k9.string(),userId:k9.string(),status:k9.enum(["pending","approved","denied"]),createdAt:k9.string(),user:k9.object({id:k9.string(),name:k9.string(),email:k9.string(),image:k9.string().nullable()}).nullable()}),M01=t({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:k9.object({}),outputSchema:k9.object({requests:k9.array(LE4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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}))}}}),V01=t({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:k9.object({requestId:k9.string()}),outputSchema:k9.object({success:k9.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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=z1(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(!XO(J))throw J}if(Y)n1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}}),k01=t({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:k9.object({requestId:k9.string()}),outputSchema:k9.object({success:k9.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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=z1(Z);if(await Z.storage.organizationJoinRequests.decide(Q.id,"denied",Y??Q.userId)&&Y)n1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:X.id},properties:{organization_id:X.id,user_id:Q.userId}});return{success:!0}}})});import{z as aQ}from"zod";var S01;var bU8=O(()=>{p4();p0();H3();S01=t({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:aQ.object({organizationId:aQ.string().optional(),userId:aQ.string(),role:aQ.array(aQ.string())}),outputSchema:aQ.object({id:aQ.string(),organizationId:aQ.string(),userId:aQ.string(),role:aQ.union([aQ.string(),aQ.array(aQ.string())]),createdAt:aQ.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{W0(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","=",z1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!hQ0(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=z1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_added",groups:{organization:X},properties:{organization_id:X,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as ig}from"zod";var C01;var yU8=O(()=>{p4();p0();C01=t({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:ig.object({organizationId:ig.string().optional(),memberIdOrEmail:ig.string()}),outputSchema:ig.object({success:ig.boolean(),memberIdOrEmail:ig.string()}),handler:async($,Z)=>{W0(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=z1(Z);if(Y)n1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:X},properties:{organization_id:X,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as FX}from"zod";var _01;var gU8=O(()=>{p0();_01=t({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:FX.object({limit:FX.number().optional(),offset:FX.number().optional()}),outputSchema:FX.object({members:FX.array(FX.object({id:FX.string(),organizationId:FX.string(),userId:FX.string(),role:FX.string(),createdAt:FX.string().datetime().describe("ISO 8601 timestamp"),user:FX.object({id:FX.string(),name:FX.string(),email:FX.string(),image:FX.string().optional()}).optional()}))}),handler:async($,Z)=>{W0(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.listMembers({organizationId:X,limit:$.limit,offset:$.offset});return{members:(Array.isArray(Q)?Q:[]).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});import{z as oZ}from"zod";var v01;var hU8=O(()=>{p4();p0();H3();v01=t({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:oZ.object({organizationId:oZ.string().optional(),memberId:oZ.string(),role:oZ.array(oZ.string())}),outputSchema:oZ.object({id:oZ.string(),organizationId:oZ.string(),userId:oZ.string(),role:oZ.union([oZ.string(),oZ.array(oZ.string())]),createdAt:oZ.string().datetime().describe("ISO 8601 timestamp"),user:oZ.object({email:oZ.string(),name:oZ.string(),image:oZ.string().optional()})}),handler:async($,Z)=>{W0(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","=",z1(Z)??"").where("organizationId","=",X).executeTakeFirst();if(!hQ0(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=z1(Z);if(G)n1.capture({distinctId:G,event:"organization_member_role_updated",groups:{organization:X},properties:{organization_id:X,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function uU8(){if(Zo&&Date.now()-Zo.fetchedAt<600000)return Zo.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 Zo={rate:X,fetchedAt:Date.now()},X}catch{return Zo?.rate??5.5}}function cU8($,Z,X){if(Z==="brl")return Math.round($/X);return $}var Zo=null;function x01($,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)x01(J,`${G}[${K}]`,X);else X.append(`${G}[${K}]`,String(J))});else if(typeof Y==="object")x01(Y,G,X);else X.append(G,String(Y))}return X}async function _G0($,Z){let X=e0().stripeSecretKey;if(!X)throw new YK(503,"billing is not configured");let Q=Z?.params?x01(Z.params).toString():void 0,Y=await fetch(`${DE4}${$}`,{method:Z?.method??(Q?"POST":"GET"),headers:{Authorization:`Bearer ${X}`,...Q&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Q,signal:AbortSignal.timeout(EE4)}),G=await Y.json().catch(()=>({}));if(!Y.ok){let J=G.error?.message??`HTTP ${Y.status}`;throw new YK(Y.status,J)}return G}function lU8($){return{billing_address_collection:"required",tax_id_collection:{enabled:!0},...$&&{customer_update:{address:"auto",name:"auto"}}}}async function dU8($){let Z=e0().stripeOrgPriceId;if(!Z)throw new YK(503,"billing is not configured");let X=await _G0("/checkout/sessions",{params:{mode:"subscription",...lU8(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 YK(500,"checkout session lacks url");return{url:X.url}}function zE4($,Z){return Math.round($*(1+Z/100))}async function mU8($){let Z=zE4($.amountCents,$.feePercent),X=cU8($.amountCents,$.currency,await uU8()),Q=e0().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 _G0("/checkout/sessions",{params:{mode:"payment",...$.customerId&&{customer:$.customerId},...lU8($.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 YK(500,"checkout session lacks url");return{url:J.url}}async function iU8($){let Z=await _G0("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new YK(500,"portal session lacks url");return{url:Z.url}}async function nU8($){await _G0(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}var DE4="https://api.stripe.com/v1",YK,EE4=15000;var Xo=O(()=>{v8();YK=class YK extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as f01}from"zod";var b01;var pU8=O(()=>{Xo();HZ();p0();p4();b01=t({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:f01.object({}),outputSchema:f01.object({url:f01.string()}),handler:async($,Z)=>{W0(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=`${xQ()}/${encodeURIComponent(Q)}/members`,{url:J}=await dU8({organizationId:X,successUrl:`${G}?checkout=success`,cancelUrl:`${G}?checkout=canceled`});return tJ({event:"subscription_checkout_started",organizationId:X,...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:J}}})});import{z as y01}from"zod";var g01;var tU8=O(()=>{Xo();HZ();p0();g01=t({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:y01.object({}),outputSchema:y01.object({url:y01.string()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(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 iU8({customerId:Q.stripeCustomerId,returnUrl:`${xQ()}/${encodeURIComponent(X.slug)}/members`})}catch(Y){if(Y instanceof YK)throw Error(Y.message);throw Y}}})});function oU8($){return h01[$%h01.length]??jE4}function sQ($){return $.createdBy==="system"}function Qo($,Z){return $?.startsWith(`${ng[Z]}:`)??!1}function Cz($){let Z=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Z=Math.max(Z,new Date(X.occurredAt).getTime())}return Z}function PE4($,Z){let X=Cz($),Q=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<X)continue;let G=Y.data??{};if(G.reviewer!=="qa"&&G.reviewer!=="code_review")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&G.verified!==!0)continue;Q.set(G.reviewer,"approved")}else Q.set(G.reviewer,"changes_requested")}return Q}function QO($,Z,X){if(Z.length===0)return!1;let Q=PE4($,X);return Z.every((Y)=>Q.get(Y)==="approved")}function rU8($,Z){return QO($,Z)&&!QO($,Z,{verifiedOnly:!0})}function aU8($,Z=u01){return $.filter((Q)=>Q.action==="review_changes_requested").length+1>=Z}var M4="super-agent",h01,jE4,j3,ng,zN,u01=5,sU8="task-board.item.updated",eU8="task-board.item.deleted";var rZ=O(()=>{h01=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],jE4=h01[0];j3=["qa","code_review"],ng={qa:"QA Agent",code_review:"Code Reviewer"},zN={qa:"qa_agent_enabled",code_review:"code_reviewer_enabled"}});function c01($){return $==="trial"?"trial":"subscription"}function Yo($,Z,X,Q={}){tJ({event:Z,organizationId:X.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:X.id,...Q}})}function l01($){return $?.status==="active"||$?.status==="past_due"}function vG0($,Z){if(l01($))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 Go(){let $=e0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function pg(){return{...Go(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function xG0($,Z,X=Go()){if(!X.enforced||!sQ(Z))return;let Q=await $.storage.organizationBilling.taskClaim(Z.id);if(Q&&Q.runCount>=X.maxRunsPerTask)throw Yo($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new eQ("runs_exhausted");if(Q&&Q.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),G=vG0(Y,X);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,G.periodKey)>=G.limit)throw Yo($,"task_quota_blocked",Z,{phase:"precheck",reason:G.exhaustedReason,billing_mode:c01(G.periodKey),limit:G.limit}),new eQ(G.exhaustedReason)}async function $N8($,Z,X=Go()){if(!X.enforced||!sQ(Z))return"skipped";let Q=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=vG0(Q,X),G=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,X.maxRunsPerTask);if(G==="exhausted")throw Yo($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:c01(Y.periodKey),limit:Y.limit}),new eQ(Y.exhaustedReason);if(G==="runs_exhausted")throw Yo($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new eQ("runs_exhausted");if(G==="claimed")Yo($,"task_quota_claimed",Z,{billing_mode:c01(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return G}async function ZN8($,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 XN8($,Z){let X=await $.storage.organizationBilling.taskClaim(Z);return!!X&&X.state!=="released"}async function QN8($,Z,X){if(await $.releaseTaskClaim(Z,X).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))tJ({event:"task_quota_refunded",organizationId:Z,properties:{task_id:X}})}var AE4="[SUBSCRIPTION_REQUIRED]",TE4,eQ;var GK=O(()=>{rZ();p4();v8();TE4={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"};eQ=class eQ extends Error{reason;constructor($){super(`${AE4} ${TE4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as jN}from"zod";var d01;var YN8=O(()=>{p0();GK();d01=t({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:jN.object({}),outputSchema:jN.object({enforced:jN.boolean(),billingStatus:jN.string(),subscribed:jN.boolean(),hasBillingAccount:jN.boolean(),used:jN.number(),limit:jN.number(),currentPeriodEnd:jN.string().datetime().nullable()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=Go(),Y=await Z.storage.organizationBilling.getBilling(X.id),G=vG0(Y,Q),J=await Z.storage.organizationBilling.countTaskClaims(X.id,G.periodKey);return{enforced:Q.enforced,billingStatus:Y?.status??"none",subscribed:l01(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:J,limit:G.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var GN8=O(()=>{LU8();DU8();EU8();zU8();jU8();AU8();TU8();IU8();MU8();VU8();SU8();xU8();fU8();bU8();yU8();gU8();hU8();pU8();tU8();YN8()});function $H($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function fG0($){if($===null||typeof $==="string"||typeof $==="number"||typeof $==="boolean")return!0;if(Array.isArray($))return $.every(fG0);if(typeof $==="object")return Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||fG0(X)));return!1}function m01($){return Array.isArray($)&&$.every(fG0)}function Jo($){return $!=null&&typeof $==="object"&&Object.entries($).every(([Z,X])=>typeof Z==="string"&&(X===void 0||fG0(X)))}var xN8="vercel.ai.error",IE4,JN8,KN8,D1,fN8="AI_APICallError",bN8,qE4,WN8,HN8,N4,yN8="AI_EmptyResponseBodyError",gN8,ME4,UN8,NN8,bG0,hN8="AI_InvalidArgumentError",uN8,VE4,FN8,wN8,YO,cN8="AI_InvalidPromptError",lN8,kE4,BN8,ON8,P3,dN8="AI_InvalidResponseDataError",mN8,SE4,LN8,DN8,tg,iN8="AI_JSONParseError",nN8,CE4,EN8,zN8,PN,pN8="AI_LoadAPIKeyError",tN8,_E4,jN8,PN8,_z,oN8="AI_LoadSettingError",rN8,vE4,AN8,TN8,aN8,sN8="AI_NoContentGeneratedError",eN8,xE4,RN8,IN8,$F8,ZF8="AI_NoSuchModelError",XF8,fE4,qN8,MN8,n5,QF8="AI_TooManyEmbeddingValuesForCallError",YF8,bE4,VN8,kN8,og,GF8="AI_TypeValidationError",JF8,yE4,SN8,CN8,A5,KF8="AI_UnsupportedFunctionalityError",WF8,gE4,_N8,vN8,y4;var Q8=O(()=>{IE4=Symbol.for(xN8),D1=class $ extends(KN8=Error,JN8=IE4,KN8){constructor({name:Z,message:X,cause:Q}){super(X);this[JN8]=!0,this.name=Z,this.cause=Q}static isInstance(Z){return $.hasMarker(Z,xN8)}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}},bN8=`vercel.ai.error.${fN8}`,qE4=Symbol.for(bN8),N4=class extends(HN8=D1,WN8=qE4,HN8){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:fN8,message:$,cause:J});this[WN8]=!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 D1.hasMarker($,bN8)}},gN8=`vercel.ai.error.${yN8}`,ME4=Symbol.for(gN8),bG0=class extends(NN8=D1,UN8=ME4,NN8){constructor({message:$="Empty response body"}={}){super({name:yN8,message:$});this[UN8]=!0}static isInstance($){return D1.hasMarker($,gN8)}};uN8=`vercel.ai.error.${hN8}`,VE4=Symbol.for(uN8),YO=class extends(wN8=D1,FN8=VE4,wN8){constructor({message:$,cause:Z,argument:X}){super({name:hN8,message:$,cause:Z});this[FN8]=!0,this.argument=X}static isInstance($){return D1.hasMarker($,uN8)}},lN8=`vercel.ai.error.${cN8}`,kE4=Symbol.for(lN8),P3=class extends(ON8=D1,BN8=kE4,ON8){constructor({prompt:$,message:Z,cause:X}){super({name:cN8,message:`Invalid prompt: ${Z}`,cause:X});this[BN8]=!0,this.prompt=$}static isInstance($){return D1.hasMarker($,lN8)}},mN8=`vercel.ai.error.${dN8}`,SE4=Symbol.for(mN8),tg=class extends(DN8=D1,LN8=SE4,DN8){constructor({data:$,message:Z=`Invalid response data: ${JSON.stringify($)}.`}){super({name:dN8,message:Z});this[LN8]=!0,this.data=$}static isInstance($){return D1.hasMarker($,mN8)}},nN8=`vercel.ai.error.${iN8}`,CE4=Symbol.for(nN8),PN=class extends(zN8=D1,EN8=CE4,zN8){constructor({text:$,cause:Z}){super({name:iN8,message:`JSON parsing failed: Text: ${$}.
|
|
2230
2230
|
Error message: ${$H(Z)}`,cause:Z});this[EN8]=!0,this.text=$}static isInstance($){return D1.hasMarker($,nN8)}},tN8=`vercel.ai.error.${pN8}`,_E4=Symbol.for(tN8),_z=class extends(PN8=D1,jN8=_E4,PN8){constructor({message:$}){super({name:pN8,message:$});this[jN8]=!0}static isInstance($){return D1.hasMarker($,tN8)}},rN8=`vercel.ai.error.${oN8}`,vE4=Symbol.for(rN8),aN8=class extends(TN8=D1,AN8=vE4,TN8){constructor({message:$}){super({name:oN8,message:$});this[AN8]=!0}static isInstance($){return D1.hasMarker($,rN8)}},eN8=`vercel.ai.error.${sN8}`,xE4=Symbol.for(eN8),$F8=class extends(IN8=D1,RN8=xE4,IN8){constructor({message:$="No content generated."}={}){super({name:sN8,message:$});this[RN8]=!0}static isInstance($){return D1.hasMarker($,eN8)}},XF8=`vercel.ai.error.${ZF8}`,fE4=Symbol.for(XF8),n5=class extends(MN8=D1,qN8=fE4,MN8){constructor({errorName:$=ZF8,modelId:Z,modelType:X,message:Q=`No such ${X}: ${Z}`}){super({name:$,message:Q});this[qN8]=!0,this.modelId=Z,this.modelType=X}static isInstance($){return D1.hasMarker($,XF8)}},YF8=`vercel.ai.error.${QF8}`,bE4=Symbol.for(YF8),og=class extends(kN8=D1,VN8=bE4,kN8){constructor($){super({name:QF8,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[VN8]=!0,this.provider=$.provider,this.modelId=$.modelId,this.maxEmbeddingsPerCall=$.maxEmbeddingsPerCall,this.values=$.values}static isInstance($){return D1.hasMarker($,YF8)}},JF8=`vercel.ai.error.${GF8}`,yE4=Symbol.for(JF8),A5=class $ extends(CN8=D1,SN8=yE4,CN8){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:GF8,message:`${Y}: Value: ${JSON.stringify(Z)}.
|
|
2231
2231
|
Error message: ${$H(X)}`,cause:X});this[SN8]=!0,this.value=Z,this.context=Q}static isInstance(Z){return D1.hasMarker(Z,JF8)}static wrap({value:Z,cause:X,context:Q}){var Y,G,J;if($.isInstance(X)&&X.value===Z&&((Y=X.context)==null?void 0:Y.field)===(Q==null?void 0:Q.field)&&((G=X.context)==null?void 0:G.entityName)===(Q==null?void 0:Q.entityName)&&((J=X.context)==null?void 0:J.entityId)===(Q==null?void 0:Q.entityId))return X;return new $({value:Z,cause:X,context:Q})}},WF8=`vercel.ai.error.${KF8}`,gE4=Symbol.for(WF8),y4=class extends(vN8=D1,_N8=gE4,vN8){constructor({functionality:$,message:Z=`'${$}' functionality not supported.`}){super({name:KF8,message:Z});this[_N8]=!0,this.functionality=$}static isInstance($){return D1.hasMarker($,WF8)}}});import*as uG0 from"zod/v4";import{ZodFirstPartyTypeKind as z4}from"zod/v3";import{ZodFirstPartyTypeKind as Xz4}from"zod/v3";import{ZodFirstPartyTypeKind as yG0}from"zod/v3";function e8(...$){return $.reduce((Z,X)=>({...Z,...X!=null?X:{}}),{})}function gG0({tools:$=[],providerToolNames:Z,resolveProviderToolName:X}){var Q;let Y={},G={};for(let J of $)if(J.type==="provider"){let K=(Q=X==null?void 0:X(J))!=null?Q:(J.id in Z)?Z[J.id]:void 0;if(K==null)continue;Y[J.name]=K,G[K]=J.name}return{toProviderToolName:(J)=>{var K;return(K=Y[J])!=null?K:J},toCustomToolName:(J)=>{var K;return(K=G[J])!=null?K:J}}}async function ZY($,Z){if($==null)return Promise.resolve();let X=Z==null?void 0:Z.abortSignal;return new Promise((Q,Y)=>{if(X==null?void 0:X.aborted){Y(HF8());return}let G=setTimeout(()=>{J(),Q()},$),J=()=>{clearTimeout(G),X==null||X.removeEventListener("abort",K)},K=()=>{J(),Y(HF8())};X==null||X.addEventListener("abort",K)})}function HF8(){return new DOMException("Delay was aborted","AbortError")}function rg($){return Object.fromEntries([...$.headers])}function S9($){let Z=$.replace(/-/g,"+").replace(/_/g,"/"),X=uE4(Z);return Uint8Array.from(X,(Q)=>Q.codePointAt(0))}function QY($){let Z="";for(let X=0;X<$.length;X++)Z+=String.fromCodePoint($[X]);return hE4(Z)}function DZ($){return $ instanceof Uint8Array?QY($):$}function OF8($,Z={}){let{useArrayBrackets:X=!0}=Z,Q=new FormData;for(let[Y,G]of Object.entries($)){if(G==null)continue;if(Array.isArray(G)){if(G.length===1){Q.append(Y,G[0]);continue}let J=X?`${Y}[]`:Y;for(let K of G)Q.append(J,K);continue}Q.append(Y,G)}return Q}async function Ko($){var Z;try{await((Z=$.body)==null?void 0:Z.cancel())}catch(X){}}function lE4($=globalThis){return $.window!=null}function dE4($){let Z;try{Z=new URL($)}catch(Q){throw new LZ({url:$,message:`Invalid URL: ${$}`})}if(Z.protocol==="data:")return;if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw new LZ({url:$,message:`URL scheme must be http, https, or data, got ${Z.protocol}`});let X=Z.hostname.toLowerCase().replace(/\.+$/,"");if(!X)throw new LZ({url:$,message:"URL must have a hostname"});if(X==="localhost"||X.endsWith(".local")||X.endsWith(".localhost"))throw new LZ({url:$,message:`URL with hostname ${X} is not allowed`});if(X.startsWith("[")&&X.endsWith("]")){let Q=X.slice(1,-1);if(iE4(Q))throw new LZ({url:$,message:`URL with IPv6 address ${X} is not allowed`});return}if(EF8(X)){if(zF8(X))throw new LZ({url:$,message:`URL with IP address ${X} is not allowed`});return}}function EF8($){let Z=$.split(".");if(Z.length!==4)return!1;return Z.every((X)=>{let Q=Number(X);return Number.isInteger(Q)&&Q>=0&&Q<=255&&String(Q)===X})}function zF8($){let Z=$.split(".").map(Number),[X,Q,Y]=Z;if(X===0)return!0;if(X===10)return!0;if(X===100&&Q>=64&&Q<=127)return!0;if(X===127)return!0;if(X===169&&Q===254)return!0;if(X===172&&Q>=16&&Q<=31)return!0;if(X===192&&Q===0&&Y===0)return!0;if(X===192&&Q===168)return!0;if(X===198&&(Q===18||Q===19))return!0;if(X>=240)return!0;return!1}function mE4($){let Z=$.toLowerCase(),X=Z.indexOf("%");if(X!==-1)Z=Z.slice(0,X);let Q=Z.split("::");if(Q.length>2)return null;let Y=(J)=>{if(J==="")return[];let K=[],W=J.split(":");for(let H=0;H<W.length;H++){let U=W[H];if(U.includes(".")){if(H!==W.length-1||!EF8(U))return null;let[N,F,w,B]=U.split(".").map(Number);K.push(N<<8|F,w<<8|B);continue}if(!/^[0-9a-f]{1,4}$/.test(U))return null;K.push(parseInt(U,16))}return K},G=Y(Q[0]);if(G===null)return null;if(Q.length===2){let J=Y(Q[1]);if(J===null)return null;let K=8-G.length-J.length;if(K<0)return null;return[...G,...Array(K).fill(0),...J]}return G.length===8?G:null}function iE4($){let Z=mE4($);if(Z===null)return!0;let X=(Y)=>Z.slice(0,Y).every((G)=>G===0);if(X(7)&&(Z[7]===0||Z[7]===1))return!0;if((Z[0]&65024)===64512)return!0;if((Z[0]&65472)===65152)return!0;if((Z[0]&65472)===65216)return!0;if((Z[0]&65280)===65280)return!0;if(X(6)||X(5)&&Z[5]===65535||X(4)&&Z[4]===65535&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===0&&Z[3]===0&&Z[4]===0&&Z[5]===0||Z[0]===100&&Z[1]===65435&&Z[2]===1){let Y=Z[6]>>8&255,G=Z[6]&255,J=Z[7]>>8&255,K=Z[7]&255;return zF8(`${Y}.${G}.${J}.${K}`)}return!1}async function o01({url:$,headers:Z,abortSignal:X,maxRedirects:Q=nE4}){let Y={signal:X};if(Z!==void 0)Y.headers=Z;let G=$;for(let J=0;J<=Q;J++){dE4(G);let K=await fetch(G,{...Y,redirect:"manual"});if(K.type==="opaqueredirect"){if(!lE4())throw new LZ({url:$,message:`Redirect from ${G} could not be validated and was blocked`});return await fetch(G,{...Y,redirect:"follow"})}let W=K.headers.get("location");if(K.status>=300&&K.status<400&&W){await Ko(K),G=new URL(W,G).toString();continue}return K}throw new LZ({url:$,message:`Too many redirects (max ${Q})`})}async function r01({response:$,url:Z,maxBytes:X=hG0}){let Q=$.headers.get("content-length");if(Q!=null){let U=parseInt(Q,10);if(!isNaN(U)&&U>X)throw await Ko($),new LZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} bytes (Content-Length: ${U}).`})}let Y=$.body;if(Y==null)return new Uint8Array(0);let G=Y.getReader(),J=[],K=0;try{while(!0){let{done:U,value:N}=await G.read();if(U)break;if(K+=N.length,K>X)throw new LZ({url:Z,message:`Download of ${Z} exceeded maximum size of ${X} bytes.`});J.push(N)}}finally{try{await G.cancel()}finally{G.releaseLock()}}let W=new Uint8Array(K),H=0;for(let U of J)W.set(U,H),H+=U.length;return W}async function a01($,Z){var X,Q;try{let Y=await o01({url:$,abortSignal:Z==null?void 0:Z.abortSignal});if(!Y.ok)throw await Ko(Y),new LZ({url:$,statusCode:Y.status,statusText:Y.statusText});let G=await r01({response:Y,url:$,maxBytes:(X=Z==null?void 0:Z.maxBytes)!=null?X:hG0}),J=(Q=Y.headers.get("content-type"))!=null?Q:void 0;return new Blob([G],J?{type:J}:void 0)}catch(Y){if(LZ.isInstance(Y))throw Y;throw new LZ({url:$,cause:Y})}}function ag($){if($==null)return"unknown error";if(typeof $==="string")return $;if($ instanceof Error)return $.message;return JSON.stringify($)}function $Y($){return($ instanceof Error||$ instanceof DOMException)&&($.name==="AbortError"||$.name==="ResponseAborted"||$.name==="TimeoutError")}function oE4($){if(!($ instanceof Error))return!1;let Z=$.code;if(typeof Z==="string"&&tE4.includes(Z))return!0;return!1}function jF8({error:$,url:Z,requestBodyValues:X}){if($Y($))return $;if($ instanceof TypeError&&pE4.includes($.message.toLowerCase())){let Q=$.cause;if(Q!=null)return new N4({message:`Cannot connect to API: ${Q.message}`,cause:Q,url:Z,requestBodyValues:X,isRetryable:!0})}if(oE4($))return new N4({message:`Cannot connect to API: ${$.message}`,cause:$,url:Z,requestBodyValues:X,isRetryable:!0});return $}function GO($=globalThis){var Z,X,Q;if($.window)return"runtime/browser";if((Z=$.navigator)==null?void 0:Z.userAgent)return`runtime/${$.navigator.userAgent.toLowerCase()}`;if((Q=(X=$.process)==null?void 0:X.versions)==null?void 0:Q.node)return`runtime/node.js/${$.process.version.substring(0)}`;if($.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function JO($){if($==null)return{};let Z={};if($ instanceof Headers)$.forEach((X,Q)=>{Z[Q.toLowerCase()]=X});else{if(!Array.isArray($))$=Object.entries($);for(let[X,Q]of $)if(Q!=null)Z[X.toLowerCase()]=Q}return Z}function Q$($,...Z){let X=new Headers(JO($)),Q=X.get("user-agent")||"";return X.set("user-agent",[Q,...Z].filter(Boolean).join(" ")),Object.fromEntries(X.entries())}function xz($){return $!=null}function AF8($,Z){try{return new URL($).origin===new URL(Z).origin}catch(X){return!1}}function TF8({mediaType:$,url:Z,supportedUrls:X}){return Z=Z.toLowerCase(),$=$.toLowerCase(),Object.entries(X).map(([Q,Y])=>{let G=Q.toLowerCase();return G==="*"||G==="*/*"?{mediaTypePrefix:"",regexes:Y}:{mediaTypePrefix:G.replace(/\*/,""),regexes:Y}}).filter(({mediaTypePrefix:Q})=>$.startsWith(Q)).flatMap(({regexes:Q})=>Q).some((Q)=>Q.test(Z))}function sg({apiKey:$,environmentVariableName:Z,apiKeyParameterName:X="apiKey",description:Q}){if(typeof $==="string")return $;if($!=null)throw new _z({message:`${Q} API key must be a string.`});if(typeof process>"u")throw new _z({message:`${Q} API key is missing. Pass it using the '${X}' parameter. Environment variables are not supported in this environment.`});if($=process.env[Z],$==null)throw new _z({message:`${Q} API key is missing. Pass it using the '${X}' parameter or the ${Z} environment variable.`});if(typeof $!=="string")throw new _z({message:`${Q} API key must be a string. The value of the ${Z} environment variable is not a string.`});return $}function ZH({settingValue:$,environmentVariableName:Z}){if(typeof $==="string")return $;if($!=null||typeof process>"u")return;if($=process.env[Z],$==null||typeof $!=="string")return;return $}function RF8($){var Z;let[X,Q=""]=$.toLowerCase().split("/");return(Z={mpeg:"mp3","x-wav":"wav",opus:"ogg",mp4:"m4a","x-m4a":"m4a"}[Q])!=null?Z:Q}function FF8($){let Z=JSON.parse($);if(Z===null||typeof Z!=="object")return Z;if(aE4.test($)===!1&&sE4.test($)===!1)return Z;return eE4(Z)}function eE4($){let Z=[$];while(Z.length){let X=Z;Z=[];for(let Q of X){if(Object.prototype.hasOwnProperty.call(Q,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(Q,"constructor")&&Q.constructor!==null&&typeof Q.constructor==="object"&&Object.prototype.hasOwnProperty.call(Q.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let Y in Q){let G=Q[Y];if(G&&typeof G==="object")Z.push(G)}}}return $}function s01($){let{stackTraceLimit:Z}=Error;try{Error.stackTraceLimit=0}catch(X){return FF8($)}try{return FF8($)}finally{Error.stackTraceLimit=Z}}function e01($){if($.type==="object"||Array.isArray($.type)&&$.type.includes("object")){$.additionalProperties=!1;let{properties:X}=$;if(X!=null)for(let Q of Object.keys(X))X[Q]=vz(X[Q])}if($.items!=null)$.items=Array.isArray($.items)?$.items.map(vz):vz($.items);if($.anyOf!=null)$.anyOf=$.anyOf.map(vz);if($.allOf!=null)$.allOf=$.allOf.map(vz);if($.oneOf!=null)$.oneOf=$.oneOf.map(vz);let{definitions:Z}=$;if(Z!=null)for(let X of Object.keys(Z))Z[X]=vz(Z[X]);return $}function vz($){if(typeof $==="boolean")return $;return e01($)}function KG(){return{}}function Qz4($,Z){var X,Q,Y;let G={type:"array"};if(((X=$.type)==null?void 0:X._def)&&((Y=(Q=$.type)==null?void 0:Q._def)==null?void 0:Y.typeName)!==Xz4.ZodAny)G.items=R$($.type._def,{...Z,currentPath:[...Z.currentPath,"items"]});if($.minLength)G.minItems=$.minLength.value;if($.maxLength)G.maxItems=$.maxLength.value;if($.exactLength)G.minItems=$.exactLength.value,G.maxItems=$.exactLength.value;return G}function Yz4($){let Z={type:"integer",format:"int64"};if(!$.checks)return Z;for(let X of $.checks)switch(X.kind){case"min":if(X.inclusive)Z.minimum=X.value;else Z.exclusiveMinimum=X.value;break;case"max":if(X.inclusive)Z.maximum=X.value;else Z.exclusiveMaximum=X.value;break;case"multipleOf":Z.multipleOf=X.value;break}return Z}function Gz4(){return{type:"boolean"}}function IF8($,Z){return R$($.type._def,Z)}function qF8($,Z,X){let Q=X!=null?X:Z.dateStrategy;if(Array.isArray(Q))return{anyOf:Q.map((Y,G)=>qF8($,Z,Y))};switch(Q){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return Kz4($)}}function Wz4($,Z){return{...R$($.innerType._def,Z),default:$.defaultValue()}}function Hz4($,Z){return Z.effectStrategy==="input"?R$($.schema._def,Z):KG()}function Uz4($){return{type:"string",enum:Array.from($.values)}}function Fz4($,Z){let X=[R$($.left._def,{...Z,currentPath:[...Z.currentPath,"allOf","0"]}),R$($.right._def,{...Z,currentPath:[...Z.currentPath,"allOf","1"]})].filter((Y)=>!!Y),Q=[];return X.forEach((Y)=>{if(Nz4(Y))Q.push(...Y.allOf);else{let G=Y;if("additionalProperties"in Y&&Y.additionalProperties===!1){let{additionalProperties:J,...K}=Y;G=K}Q.push(G)}}),Q.length?{allOf:Q}:void 0}function wz4($){let Z=typeof $.value;if(Z!=="bigint"&&Z!=="number"&&Z!=="boolean"&&Z!=="string")return{type:Array.isArray($.value)?"array":"object"};return{type:Z==="bigint"?"integer":Z,const:$.value}}function MF8($,Z){let X={type:"string"};if($.checks)for(let Q of $.checks)switch(Q.kind){case"min":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value;break;case"max":X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"email":switch(Z.emailStrategy){case"format:email":KK(X,"email",Q.message,Z);break;case"format:idn-email":KK(X,"idn-email",Q.message,Z);break;case"pattern:zod":UQ(X,JK.email,Q.message,Z);break}break;case"url":KK(X,"uri",Q.message,Z);break;case"uuid":KK(X,"uuid",Q.message,Z);break;case"regex":UQ(X,Q.regex,Q.message,Z);break;case"cuid":UQ(X,JK.cuid,Q.message,Z);break;case"cuid2":UQ(X,JK.cuid2,Q.message,Z);break;case"startsWith":UQ(X,RegExp(`^${n01(Q.value,Z)}`),Q.message,Z);break;case"endsWith":UQ(X,RegExp(`${n01(Q.value,Z)}$`),Q.message,Z);break;case"datetime":KK(X,"date-time",Q.message,Z);break;case"date":KK(X,"date",Q.message,Z);break;case"time":KK(X,"time",Q.message,Z);break;case"duration":KK(X,"duration",Q.message,Z);break;case"length":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value,X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"includes":{UQ(X,RegExp(n01(Q.value,Z)),Q.message,Z);break}case"ip":{if(Q.version!=="v6")KK(X,"ipv4",Q.message,Z);if(Q.version!=="v4")KK(X,"ipv6",Q.message,Z);break}case"base64url":UQ(X,JK.base64url,Q.message,Z);break;case"jwt":UQ(X,JK.jwt,Q.message,Z);break;case"cidr":{if(Q.version!=="v6")UQ(X,JK.ipv4Cidr,Q.message,Z);if(Q.version!=="v4")UQ(X,JK.ipv6Cidr,Q.message,Z);break}case"emoji":UQ(X,JK.emoji(),Q.message,Z);break;case"ulid":{UQ(X,JK.ulid,Q.message,Z);break}case"base64":{switch(Z.base64Strategy){case"format:binary":{KK(X,"binary",Q.message,Z);break}case"contentEncoding:base64":{X.contentEncoding="base64";break}case"pattern:zod":{UQ(X,JK.base64,Q.message,Z);break}}break}case"nanoid":UQ(X,JK.nanoid,Q.message,Z);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return X}function n01($,Z){return Z.patternStrategy==="escape"?Oz4($):$}function Oz4($){let Z="";for(let X=0;X<$.length;X++){if(!Bz4.has($[X]))Z+="\\";Z+=$[X]}return Z}function KK($,Z,X,Q){var Y;if($.format||((Y=$.anyOf)==null?void 0:Y.some((G)=>G.format))){if(!$.anyOf)$.anyOf=[];if($.format)$.anyOf.push({format:$.format}),delete $.format;$.anyOf.push({format:Z,...X&&Q.errorMessages&&{errorMessage:{format:X}}})}else $.format=Z}function UQ($,Z,X,Q){var Y;if($.pattern||((Y=$.allOf)==null?void 0:Y.some((G)=>G.pattern))){if(!$.allOf)$.allOf=[];if($.pattern)$.allOf.push({pattern:$.pattern}),delete $.pattern;$.allOf.push({pattern:BF8(Z,Q),...X&&Q.errorMessages&&{errorMessage:{pattern:X}}})}else $.pattern=BF8(Z,Q)}function BF8($,Z){var X;if(!Z.applyRegexFlags||!$.flags)return $.source;let Q={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},Y=Q.i?$.source.toLowerCase():$.source,G="",J=!1,K=!1,W=!1;for(let H=0;H<Y.length;H++){if(J){G+=Y[H],J=!1;continue}if(Q.i){if(K){if(Y[H].match(/[a-z]/)){if(W)G+=Y[H],G+=`${Y[H-2]}-${Y[H]}`.toUpperCase(),W=!1;else if(Y[H+1]==="-"&&((X=Y[H+2])==null?void 0:X.match(/[a-z]/)))G+=Y[H],W=!0;else G+=`${Y[H]}${Y[H].toUpperCase()}`;continue}}else if(Y[H].match(/[a-z]/)){G+=`[${Y[H]}${Y[H].toUpperCase()}]`;continue}}if(Q.m){if(Y[H]==="^"){G+=`(^|(?<=[\r
|
|
2232
2232
|
]))`;continue}else if(Y[H]==="$"){G+=`($|(?=[\r
|
|
@@ -2689,7 +2689,7 @@ Guidelines:
|
|
|
2689
2689
|
Guidelines:
|
|
2690
2690
|
- Include file paths, function names, and specific code locations discovered during exploration.
|
|
2691
2691
|
- List concrete implementation steps in order.
|
|
2692
|
-
- Note any risks, dependencies, or trade-offs.`,fj0=d8({description:Ac4,inputSchema:K0(jc4),outputSchema:K0(Pc4)})});function M7($){return`studio-storage://${$}`}function Vr($){if($.startsWith("studio-storage://"))return $.slice(17);if($.startsWith("mesh-storage://"))return $.slice(15);return null}function i$1(){return/(?:studio|mesh)-storage:\/\/([^\s"'<>[\]]+)/g}var y_=()=>{};var g_="https://chrome.browserless.io",h_=32000;import{z as IK}from"zod";function Mc4($,Z=!1,X=Ic4){return{...$&&Z?{clip:{x:0,y:0,width:X.width,height:Math.floor(bj0/X.deviceScaleFactor)}}:{fullPage:$},type:"jpeg",quality:Rc4}}function Vc4($,Z,X,Q){let Y=$V8[Z];return{url:$,options:Mc4(X,Q,Y),viewport:Y,...Y.isMobile?{setExtraHTTPHeaders:{"User-Agent":qc4}}:{}}}async function kc4($){let{url:Z,token:X}=$,Q=$.fullPage??!1,Y=$.device??"desktop",G=async(N)=>await fetch(`${g_}/screenshot?token=${encodeURIComponent(X)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Vc4(Z,Y,Q,N))}),J=await G(!1);if(!J.ok){let N=await J.text().catch(()=>"Unknown error");return{ok:!1,error:`Browserless screenshot failed (${J.status}): ${N}`}}let K=new Uint8Array(await J.arrayBuffer()),W=sM8(K);if(!Q||W===null||W<=bj0)return{ok:!0,bytes:K,mediaType:"image/jpeg"};let H=await G(!0),U=H.ok?new Uint8Array(await H.arrayBuffer()):null;if(!U||(sM8(U)??0)>bj0)return{ok:!1,error:`Full-page screenshot of ${Z} is ${W}px tall, over the ${bj0}px limit, and the clipped retry did not come back within it. Retry with fullPage: false.`};return{ok:!0,bytes:U,mediaType:"image/jpeg"}}function sM8($){if($[0]!==255||$[1]!==216)return null;let Z=new DataView($.buffer,$.byteOffset,$.byteLength),X=2;while(X+9<$.length){if($[X]!==255)return null;let Q=$[X+1];if(Q>=192&&Q<=207&&![196,200,204].includes(Q))return Z.getUint16(X+5);X+=2+Z.getUint16(X+2)}return null}function yj0($){if($>aM8){let Z=($/1048576).toFixed(1),X=aM8/1048576;throw Error(`Reference image too large: ${Z} MB (max ${X} MB). Use a smaller image.`)}}function _c4($,Z){let X;try{X=new URL($)}catch{throw Error("Invalid image URL")}if(X.protocol!=="https:"&&!(Z&&X.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let Q of Cc4)if(Q.test(X.hostname))throw Error("Image URL must not point to a private network address")}async function eM8($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:Q}=await Z.head($);yj0(Q)}let X=await Z.getBytes($);return yj0(X.byteLength),X}async function vc4($,Z){let X=Vr($);if(X!==null)return eM8(X,Z.objectStorage);let Q=$.match(Tc4);if(Q)return eM8(Q[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let K=Buffer.from(J[1],"base64");return yj0(K.byteLength),K}_c4($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let G=new Uint8Array(await Y.arrayBuffer());return yj0(G.byteLength),G}async function n$1($,Z){let{provider:X,imageModelInfo:Q,objectStorage:Y}=Z,G=X.aiSdk.imageModel(Q.id),J=$.referenceImages&&$.referenceImages.length>0,K=J?await Promise.all($.referenceImages.map((w)=>{let B=w.uri??w.url;if(!B)throw Error("Reference image missing uri");return vc4(B,Z)})):[],W=J?{text:$.prompt,images:K}:$.prompt,H=await U30({model:G,prompt:W,n:$.n??1,...$.aspectRatio?{aspectRatio:$.aspectRatio}:{},...Z.abortSignal?{abortSignal:Z.abortSignal}:{}});if(!Y)throw Error("Object storage is unavailable; cannot persist the generated image.");let U=$.n??1,N=H.images.length>U?H.images.slice(-U):H.images;return{success:!0,images:await Promise.all(N.map(async(w)=>{let B=w.mediaType??"image/png",L=B.split("/")[1]??"png",D=`generated-images/${crypto.randomUUID()}.${L}`,E=Uint8Array.from(atob(w.base64),(z)=>z.charCodeAt(0));return await Y.put(D,E,{contentType:B}),{uri:M7(D),mediaType:B}})),prompt:$.prompt,model:Q.id,usage:{inputTokens:H.usage.inputTokens??0,outputTokens:H.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function gj0($,Z){return d8({description:"Generate an image from a text description, optionally using reference images. Use this when the user asks you to create, generate, draw, or design an image. If the user has attached images and wants to modify or use them as a reference, pass them as referenceImages. "+"The image is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:K0(kr),execute:async(X,Q)=>{let Y=performance.now();try{return await n$1(X,Z)}finally{$.write({type:"data-tool-metadata",id:Q.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function hj0($,Z){let{objectStorage:X,toolOutputMap:Q,pendingImages:Y}=Z;return d8({description:'Take a screenshot of a web page. Use this when you need to visually see a website, check its layout, verify a deployment, or inspect a page\'s appearance. Pass `device: "mobile"` to capture the true mobile layout (phone viewport + mobile user-agent), and capture both `desktop` and `mobile` to document a responsive change. '+"The screenshot is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:K0(Sc4),execute:async(G,J)=>{let K=performance.now();try{let W=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!W)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let H=G.device??"desktop",U=await kc4({url:G.url,token:W,device:H,fullPage:G.fullPage??!1});if(!U.ok)return{success:!1,error:U.error,url:G.url};let{bytes:N,mediaType:F}=U,w=`screenshots/${crypto.randomUUID()}.jpg`,B,L=null;if(X)try{await X.put(w,N,{contentType:F}),B=M7(w),L=await X.presignedGetUrl?.(w,600)??null}catch(D){console.error("[take-screenshot] Failed to upload, using data: URI fallback",D),B=`data:${F};base64,${Buffer.from(N).toString("base64")}`}else B=`data:${F};base64,${Buffer.from(N).toString("base64")}`;if(!L)L=B.startsWith("data:")?B:`data:${F};base64,${Buffer.from(N).toString("base64")}`;return Y.push({url:L,mediaType:F,pageUrl:G.url}),Q.set(J.toolCallId,`Screenshot (${H}) of ${G.url} stored at ${B}`),{success:!0,image:{uri:B,mediaType:F},url:G.url,device:H}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-K}})}},toModelOutput({output:G}){if(!G.success)return{type:"text",value:G.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${G.url} (${G.device??"desktop"}) captured successfully. The image is attached below.`}}})}var Tc4,aM8=20971520,Rc4=80,$V8,Ic4,qc4="Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",bj0=7000,kr,Sc4,Cc4;var gh=O(()=>{u4();u4();y_();Tc4=/\/api\/[^/]+\/files\/([^?#]+)/,$V8={desktop:{width:1280,height:800,deviceScaleFactor:1,isMobile:!1,hasTouch:!1},mobile:{width:390,height:844,deviceScaleFactor:2,isMobile:!0,hasTouch:!0}},Ic4=$V8.desktop;kr=IK.object({prompt:IK.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:IK.array(IK.object({uri:IK.string().describe("URI of the reference image (e.g. studio-storage://generated-images/uuid.png).")})).optional().describe("Reference images to use as input for image-to-image generation. Pass the URI of any image from the conversation (uploaded files, previously generated images, etc.) when the user wants to modify, transform, or use an existing image as a starting point."),aspectRatio:IK.enum(["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]).optional().describe("Aspect ratio for the generated image. Defaults to 1:1."),n:IK.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),Sc4=IK.object({url:IK.string().url().describe("The URL of the web page to screenshot."),fullPage:IK.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false."),device:IK.enum(["desktop","mobile"]).optional().describe("Device to emulate. `mobile` uses a phone viewport (390\xD7844) AND a mobile "+"user-agent, so sites that switch layout by user-agent \u2014 not just CSS "+"breakpoints \u2014 return their real mobile markup. To document a responsive "+"change, capture both `desktop` and `mobile`. Defaults to `desktop`.")}),Cc4=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function ZV8($,Z){return gj0($,{provider:Z.provider,imageModelInfo:Z.imageModelInfo,objectStorage:Z.objectStorage,allowHttpExternalUrls:Z.allowHttpExternalUrls})}var XV8=O(()=>{gh()});import{z as xc4}from"zod";function QV8($){return{background:!0,status:"started",jobId:$,note:fc4}}function yc4($){return!!$&&typeof $==="object"&&$.status==="started"&&$.background===!0}function Sr($,Z,X,Q,Y){if(!Q)return X;let G=X.execute,J=K0(Z.extend(bc4)),W=G.constructor.name==="AsyncGeneratorFunction"?async function*(U,N){let{background:F,...w}=U,B=async function*(){let{jobId:j}=await Q.start({toolName:$,input:w,toolCallId:N.toolCallId});yield QV8(j)};if(F){yield*B();return}let L=Y?.(N.toolCallId);if(!L){yield*G(w,N);return}let D=new AbortController,E=()=>D.abort();N.abortSignal?.addEventListener("abort",E,{once:!0});let z=G(w,{...N,abortSignal:D.signal})[Symbol.asyncIterator]();try{let j=z.next(),A=j.then((P)=>({kind:"next",r:P}));while(!0){let P=await Promise.race([A,L.flipped.then(()=>({kind:"flip"}))]);if(P.kind==="flip"){D.abort(),A.catch(()=>{}),(async()=>{try{await j}catch{}try{await z.return?.(void 0)}catch{}})(),yield*B();return}if(P.r.done)return;yield P.r.value,j=z.next(),A=j.then((I)=>({kind:"next",r:I}))}}finally{N.abortSignal?.removeEventListener("abort",E),L.dispose()}}:async(U,N)=>{let{background:F,...w}=U;if(F){let{jobId:B}=await Q.start({toolName:$,input:w,toolCallId:N.toolCallId});return QV8(B)}return G(w,N)};return{...X,inputSchema:J,execute:W,toModelOutput:(U)=>{if(yc4(U.output))return{type:"text",value:U.output.note};if(X.toModelOutput)return X.toModelOutput(U);return{type:"text",value:JSON.stringify(U.output)}}}}var fc4,bc4;var p$1=O(()=>{u4();fc4="Running in the background. The result will appear in the conversation as "+"soon as it's ready \u2014 keep helping the user in the meantime, and do not "+"wait for it or call this tool again for the same request.",bc4={background:xc4.boolean().optional().describe("Run this in the BACKGROUND and return immediately instead of blocking this turn. Set true for long, fire-and-forget work whose result you do "+"NOT need in this same reply \u2014 it's delivered to the conversation when "+"it finishes and you'll be nudged to use it then. Leave false/omit when you need the result now to act on it this turn.")}});function YV8($,Z){let X=Cr.get($);if(!X)X=new Map,Cr.set($,X);let Q,Y=new Promise((G)=>{Q=G});return X.set(Z,Q),{flipped:Y,dispose(){let G=Cr.get($);if(!G)return;if(G.delete(Z),G.size===0)Cr.delete($)}}}function t$1($,Z){Cr.get($)?.get(Z)?.()}var Cr;var o$1=O(()=>{Cr=new Map});import{z as GV8}from"zod";function r$1($,Z){let{researchJob:X,toolOutputMap:Q,taskId:Y}=Z;return d8({description:Z.description??hc4,inputSchema:K0(gc4),execute:async(G,J)=>{let K=performance.now(),W=(H)=>{$.write({type:"data-web-search",id:J.toolCallId,data:{text:H}})};try{let H=X({query:G.query,taskId:Y,toolCallId:J.toolCallId,abortSignal:J.abortSignal}),U=await H.next();while(!U.done)W(U.value.progress),U=await H.next();let N=U.value;return Q.set(J.toolCallId,N.text),uc4({query:G.query,text:N.text,citations:N.citations,usage:N.usage,resultUri:N.resultUri??null,preview:N.preview??""})}finally{let H=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:H}})}}})}function uc4($){if($.resultUri)return{success:!0,uri:$.resultUri,preview:$.preview,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}};return{success:!0,content:$.text,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}}}var gc4,hc4="Search the web for up-to-date information and synthesize a concise answer. Use this for quick lookups, fact-checking, current events, or when the answer requires knowledge beyond your training data and a fast response is enough. For exhaustive, multi-source reports prefer `deep_research` when available.";var JV8=O(()=>{u4();gc4=GV8.object({query:GV8.string().max(1e4).describe("The research query. Be specific about what information you need. The research model will search the web and synthesize a comprehensive answer.")})});var KV8=O(()=>{N$1()});var WV8=O(()=>{KV8()});function OG($,Z,X){let Q=Object.entries(X).filter(([,G])=>G!==void 0&&G!==null).map(([G,J])=>`${G}=${typeof J==="string"?J:JSON.stringify(J)}`).join(" "),Y=`[web-search] ${Z} ${Q}`.trim();if($==="error")console.error(Y);else if($==="warn")console.warn(Y);else console.log(Y)}function a$1($){let{provider:Z,modelInfo:X,ctx:Q,mode:Y,toolName:G}=$,J=X.id;return async function*(W){let H=Z.asyncResearch;if(Y==="deep"&&H?.canHandle(J)===!0&&H)return yield*cc4({params:W,asyncResearch:H,providerId:Z.info.id,modelId:J,toolName:G,ctx:Q});return yield*dc4({params:W,provider:Z,modelId:J,ctx:Q})}}async function*cc4({params:$,asyncResearch:Z,providerId:X,modelId:Q,toolName:Y,ctx:G}){let{toolCallId:J,taskId:K}=$,W={tc:J,thread:K,provider:X,model:Q},H=await G.storage.asyncResearchJobs.upsertPending({threadId:K,toolCallId:J,provider:X,modelId:Q,query:$.query});if(H.status==="completed"&&H.resultPreview!=null)return OG("info","replay-completed",{...W,job:H.id}),lc4(H);if(H.status==="failed"||H.status==="cancelled")throw OG("warn",`replay-${H.status}`,{...W,job:H.id,err:H.lastError}),Error(H.lastError??`previous research ${H.status}`);if(!H.interactionId){OG("info","submit",{...W,job:H.id});let w;try{w=(await Z.start({modelId:Q,query:$.query,abortSignal:$.abortSignal})).jobId}catch(B){let L=B.message??String(B);throw await G.storage.asyncResearchJobs.markFailed(J,L),OG("error","submit-failed",{...W,job:H.id,err:L}),B}await G.storage.asyncResearchJobs.markPolling(J,w,{threadId:K,toolName:Y,query:$.query}),H={...H,interactionId:w,status:"polling"},OG("info","polling-started",{...W,job:H.id,interaction:w})}else OG("info","polling-resumed",{...W,job:H.id,interaction:H.interactionId,attempts:H.attempts});let U=0,N=50,F=[];try{let w=!1,B,L=Z.resume({jobId:H.interactionId,abortSignal:$.abortSignal,onProgress:(P)=>{let I=Date.now();if(I-U>=N)U=I,F.push(P);G.storage.asyncResearchJobs.recordPoll(J).catch((V)=>{OG("warn","record-poll-failed",{...W,job:H.id,err:V.message})})}}).catch((P)=>{B=P;return}).finally(()=>{w=!0});while(!w){while(F.length>0)yield{progress:F.shift()};await Promise.race([L,T8(N)])}while(F.length>0)yield{progress:F.shift()};if(await L,B!==void 0)throw B;let D=await L;if(yield{progress:D.text},D.text.trim()==="")throw OG("error","empty-result",{...W,job:H.id,tokens:D.usage.outputTokens}),new x_("research completed with empty result");let E={inputTokens:D.usage.inputTokens,outputTokens:D.usage.outputTokens},z=D.usage.outputTokens>h_&&G.objectStorage!=null,j=null;if(z&&G.objectStorage){let P=`web-search/${crypto.randomUUID()}.md`;try{await G.objectStorage.put(P,new TextEncoder().encode(D.text),{contentType:"text/markdown"}),j=M7(P)}catch(I){OG("warn","blob-upload-failed",{...W,job:H.id,err:I.message})}}let A=LQ(D.text);return await G.storage.asyncResearchJobs.markCompleted(J,{inputTokens:E.inputTokens,outputTokens:E.outputTokens,citations:D.citations,resultUri:j,resultPreview:A,resultContent:j?null:D.text}),OG("info","completed",{...W,job:H.id,tokens:E.outputTokens,citations:D.citations.length,uri:j??"inline"}),{text:D.text,citations:D.citations,usage:E,resultUri:j,preview:j?A:void 0}}catch(w){if($.abortSignal?.aborted)throw await G.storage.asyncResearchJobs.markCancelled(J,"aborted"),OG("info","cancelled",{...W,job:H.id}),w;let B=w.message??String(w);if(w instanceof x_||w instanceof Error&&w.name==="AsyncResearchTerminalError")throw await G.storage.asyncResearchJobs.markFailed(J,B),OG("error","terminal-failure",{...W,job:H.id,err:B}),w;throw await G.storage.asyncResearchJobs.recordPoll(J,B).catch(()=>{}),OG("warn","transient-error",{...W,job:H.id,err:B}),w}}function lc4($){if($.resultUri)return{text:"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:$.resultUri,preview:$.resultPreview??""};return{text:$.resultContent??$.resultPreview??"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:null}}async function*dc4({params:$,provider:Z,modelId:X,ctx:Q}){let Y=Z.aiSdk.languageModel(X),G=BO({model:Y,prompt:$.query,abortSignal:$.abortSignal}),J="",K=0,W=50;for await(let D of G.textStream){J+=D;let E=Date.now();if(E-K>=W)K=E,yield{progress:J}}yield{progress:J};let[H,U,N]=await Promise.all([G.usage,G.sources,G.providerMetadata]),F=H.inputTokens??0,w=H.outputTokens??0;EX0(N);let B=[];if(U&&Array.isArray(U)){for(let D of U)if(D&&typeof D==="object"&&"sourceType"in D&&D.sourceType==="url"&&"url"in D&&typeof D.url==="string")B.push({url:D.url,title:"title"in D&&typeof D.title==="string"?D.title:void 0})}let L={inputTokens:F,outputTokens:w};if(w>h_&&Q.objectStorage){let D=`web-search/${crypto.randomUUID()}.md`,E=new TextEncoder().encode(J);try{return await Q.objectStorage.put(D,E,{contentType:"text/markdown"}),{text:J,citations:B,usage:L,resultUri:M7(D),preview:LQ(J)}}catch(z){console.error("[web-search] Failed to upload to storage, returning inline",z)}}return{text:J,citations:B,usage:L,resultUri:null}}var HV8=O(()=>{u4();a4();WV8();q6();y_();dN()});function UV8($,Z){return hj0($,{objectStorage:Z.objectStorage,toolOutputMap:Z.toolOutputMap,pendingImages:Z.pendingImages})}var NV8=O(()=>{gh()});import{z as FV8}from"zod";function BV8($,Z){let{browserless:X,objectStorage:Q,toolOutputMap:Y}=Z;return d8({description:"Scrape the rendered HTML content of a web page. Use this when you need to read the content, structure, or data from a website. Returns the full HTML of the page after JavaScript has been executed. "+"For very large pages the result may be truncated \u2014 use read_tool_output to access the full content.",inputSchema:K0(ic4),execute:async(G,J)=>{let K=performance.now();try{let W;try{W=await fetch(`${X.baseUrl}/content?token=${encodeURIComponent(X.token)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url}),signal:AbortSignal.timeout(wV8)})}catch(N){return{success:!1,error:N instanceof Error&&N.name==="TimeoutError"?`Browserless content fetch timed out after ${wV8}ms`:`Browserless content fetch failed: ${N instanceof Error?N.message:String(N)}`,url:G.url}}if(!W.ok){let N=await W.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless content fetch failed (${W.status}): ${N.slice(0,mc4)}`,url:G.url}}let H=await W.text();Y.set(J.toolCallId,H);let U=RX(H);if(U>h_){let N=`scraped-pages/${crypto.randomUUID()}.html`,F=new TextEncoder().encode(H);try{await Q.put(N,F,{contentType:"text/html"});let w=LQ(H);return{success:!0,uri:M7(N),preview:w,url:G.url,tokenCount:U}}catch(w){console.error("[scrape-url] Failed to upload to storage, returning inline",w)}}return{success:!0,content:H,url:G.url,tokenCount:U}}finally{let W=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:W}})}}})}var wV8=45000,mc4=500,ic4;var OV8=O(()=>{u4();dN();y_();ic4=FV8.object({url:FV8.string().url().refine(($)=>/^https?:\/\//i.test($),{message:"URL must use http or https"}).describe("The URL of the web page to scrape.")})});import{z as uj0}from"zod";function tc4($,Z){let X=Z.waitUntil??"networkidle2",Q=Z.evaluate?JSON.stringify(Z.evaluate):"null";return`
|
|
2692
|
+
- Note any risks, dependencies, or trade-offs.`,fj0=d8({description:Ac4,inputSchema:K0(jc4),outputSchema:K0(Pc4)})});function M7($){return`studio-storage://${$}`}function Vr($){if($.startsWith("studio-storage://"))return $.slice(17);if($.startsWith("mesh-storage://"))return $.slice(15);return null}function i$1(){return/(?:studio|mesh)-storage:\/\/([^\s"'<>[\]]+)/g}var y_=()=>{};var g_="https://chrome.browserless.io",h_=32000;import{z as IK}from"zod";function Mc4($,Z=!1,X=Ic4){return{...$&&Z?{clip:{x:0,y:0,width:X.width,height:Math.floor(bj0/X.deviceScaleFactor)}}:{fullPage:$},type:"jpeg",quality:Rc4}}function Vc4($,Z,X,Q){let Y=$V8[Z];return{url:$,options:Mc4(X,Q,Y),viewport:Y,...Y.isMobile?{setExtraHTTPHeaders:{"User-Agent":qc4}}:{}}}async function kc4($){let{url:Z,token:X}=$,Q=$.fullPage??!1,Y=$.device??"desktop",G=async(N)=>await fetch(`${g_}/screenshot?token=${encodeURIComponent(X)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Vc4(Z,Y,Q,N))}),J=await G(!1);if(!J.ok){let N=await J.text().catch(()=>"Unknown error");return{ok:!1,error:`Browserless screenshot failed (${J.status}): ${N}`}}let K=new Uint8Array(await J.arrayBuffer()),W=sM8(K);if(!Q||W===null||W<=bj0)return{ok:!0,bytes:K,mediaType:"image/jpeg"};let H=await G(!0),U=H.ok?new Uint8Array(await H.arrayBuffer()):null;if(!U||(sM8(U)??0)>bj0)return{ok:!1,error:`Full-page screenshot of ${Z} is ${W}px tall, over the ${bj0}px limit, and the clipped retry did not come back within it. Retry with fullPage: false.`};return{ok:!0,bytes:U,mediaType:"image/jpeg"}}function sM8($){if($[0]!==255||$[1]!==216)return null;let Z=new DataView($.buffer,$.byteOffset,$.byteLength),X=2;while(X+9<$.length){if($[X]!==255)return null;let Q=$[X+1];if(Q>=192&&Q<=207&&![196,200,204].includes(Q))return Z.getUint16(X+5);X+=2+Z.getUint16(X+2)}return null}function yj0($){if($>aM8){let Z=($/1048576).toFixed(1),X=aM8/1048576;throw Error(`Reference image too large: ${Z} MB (max ${X} MB). Use a smaller image.`)}}function _c4($,Z){let X;try{X=new URL($)}catch{throw Error("Invalid image URL")}if(X.protocol!=="https:"&&!(Z&&X.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let Q of Cc4)if(Q.test(X.hostname))throw Error("Image URL must not point to a private network address")}async function eM8($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:Q}=await Z.head($);yj0(Q)}let X=await Z.getBytes($);return yj0(X.byteLength),X}async function vc4($,Z){let X=Vr($);if(X!==null)return eM8(X,Z.objectStorage);let Q=$.match(Tc4);if(Q)return eM8(Q[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let K=Buffer.from(J[1],"base64");return yj0(K.byteLength),K}_c4($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let G=new Uint8Array(await Y.arrayBuffer());return yj0(G.byteLength),G}async function n$1($,Z){let{provider:X,imageModelInfo:Q,objectStorage:Y}=Z,G=X.aiSdk.imageModel(Q.id),J=$.referenceImages&&$.referenceImages.length>0,K=J?await Promise.all($.referenceImages.map((w)=>{let B=w.uri??w.url;if(!B)throw Error("Reference image missing uri");return vc4(B,Z)})):[],W=J?{text:$.prompt,images:K}:$.prompt,H=await U30({model:G,prompt:W,n:$.n??1,...$.aspectRatio?{aspectRatio:$.aspectRatio}:{},...Z.abortSignal?{abortSignal:Z.abortSignal}:{}});if(!Y)throw Error("Object storage is unavailable; cannot persist the generated image.");let U=$.n??1,N=H.images.length>U?H.images.slice(-U):H.images;return{success:!0,images:await Promise.all(N.map(async(w)=>{let B=w.mediaType??"image/png",L=B.split("/")[1]??"png",D=`generated-images/${crypto.randomUUID()}.${L}`,E=Uint8Array.from(atob(w.base64),(z)=>z.charCodeAt(0));return await Y.put(D,E,{contentType:B}),{uri:M7(D),mediaType:B}})),prompt:$.prompt,model:Q.id,usage:{inputTokens:H.usage.inputTokens??0,outputTokens:H.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function gj0($,Z){return d8({description:"Generate an image from a text description, optionally using reference images. Use this when the user asks you to create, generate, draw, or design an image. If the user has attached images and wants to modify or use them as a reference, pass them as referenceImages. "+"The image is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:K0(kr),execute:async(X,Q)=>{let Y=performance.now();try{return await n$1(X,Z)}finally{$.write({type:"data-tool-metadata",id:Q.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function hj0($,Z){let{objectStorage:X,toolOutputMap:Q,pendingImages:Y}=Z;return d8({description:'Take a screenshot of a web page. Use this when you need to visually see a website, check its layout, verify a deployment, or inspect a page\'s appearance. Pass `device: "mobile"` to capture the true mobile layout (phone viewport + mobile user-agent), and capture both `desktop` and `mobile` to document a responsive change. '+"The screenshot is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:K0(Sc4),execute:async(G,J)=>{let K=performance.now();try{let W=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!W)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let H=G.device??"desktop",U=await kc4({url:G.url,token:W,device:H,fullPage:G.fullPage??!1});if(!U.ok)return{success:!1,error:U.error,url:G.url};let{bytes:N,mediaType:F}=U,w=`screenshots/${crypto.randomUUID()}.jpg`,B,L=null;if(X)try{await X.put(w,N,{contentType:F}),B=M7(w),L=await X.presignedGetUrl?.(w,600)??null}catch(D){console.error("[take-screenshot] Failed to upload, using data: URI fallback",D),B=`data:${F};base64,${Buffer.from(N).toString("base64")}`}else B=`data:${F};base64,${Buffer.from(N).toString("base64")}`;if(!L)L=B.startsWith("data:")?B:`data:${F};base64,${Buffer.from(N).toString("base64")}`;return Y.push({url:L,mediaType:F,pageUrl:G.url}),Q.set(J.toolCallId,`Screenshot (${H}) of ${G.url} stored at ${B}`),{success:!0,image:{uri:B,mediaType:F},url:G.url,device:H}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-K}})}},toModelOutput({output:G}){if(!G.success)return{type:"text",value:G.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${G.url} (${G.device??"desktop"}) captured successfully. The image is attached below.`}}})}var Tc4,aM8=20971520,Rc4=80,$V8,Ic4,qc4="Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",bj0=7000,kr,Sc4,Cc4;var gh=O(()=>{u4();u4();y_();Tc4=/\/api\/[^/]+\/files\/([^?#]+)/,$V8={desktop:{width:1280,height:800,deviceScaleFactor:1,isMobile:!1,hasTouch:!1},mobile:{width:390,height:844,deviceScaleFactor:2,isMobile:!0,hasTouch:!0}},Ic4=$V8.desktop;kr=IK.object({prompt:IK.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:IK.array(IK.object({uri:IK.string().describe("URI of the reference image (e.g. studio-storage://generated-images/uuid.png).")})).optional().describe("Reference images to use as input for image-to-image generation. Pass the URI of any image from the conversation (uploaded files, previously generated images, etc.) when the user wants to modify, transform, or use an existing image as a starting point."),aspectRatio:IK.enum(["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]).optional().describe("Aspect ratio for the generated image. Defaults to 1:1."),n:IK.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),Sc4=IK.object({url:IK.string().url().describe("The URL of the web page to screenshot."),fullPage:IK.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false."),device:IK.enum(["desktop","mobile"]).optional().describe("Device to emulate. `mobile` uses a phone viewport (390\xD7844) AND a mobile "+"user-agent, so sites that switch layout by user-agent \u2014 not just CSS "+"breakpoints \u2014 return their real mobile markup. To document a responsive "+"change, capture both `desktop` and `mobile`. Defaults to `desktop`.")}),Cc4=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[f[cd]/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function ZV8($,Z){return gj0($,{provider:Z.provider,imageModelInfo:Z.imageModelInfo,objectStorage:Z.objectStorage,allowHttpExternalUrls:Z.allowHttpExternalUrls})}var XV8=O(()=>{gh()});import{z as xc4}from"zod";function QV8($){return{background:!0,status:"started",jobId:$,note:fc4}}function yc4($){return!!$&&typeof $==="object"&&$.status==="started"&&$.background===!0}function Sr($,Z,X,Q,Y){if(!Q)return X;let G=X.execute,J=K0(Z.extend(bc4)),W=G.constructor.name==="AsyncGeneratorFunction"?async function*(U,N){let{background:F,...w}=U,B=async function*(){let{jobId:j}=await Q.start({toolName:$,input:w,toolCallId:N.toolCallId});yield QV8(j)};if(F){yield*B();return}let L=Y?.(N.toolCallId);if(!L){yield*G(w,N);return}let D=new AbortController,E=()=>D.abort();N.abortSignal?.addEventListener("abort",E,{once:!0});let z=G(w,{...N,abortSignal:D.signal})[Symbol.asyncIterator]();try{let j=z.next(),A=j.then((P)=>({kind:"next",r:P}));while(!0){let P=await Promise.race([A,L.flipped.then(()=>({kind:"flip"}))]);if(P.kind==="flip"){D.abort(),A.catch(()=>{}),(async()=>{try{await j}catch{}try{await z.return?.(void 0)}catch{}})(),yield*B();return}if(P.r.done)return;yield P.r.value,j=z.next(),A=j.then((I)=>({kind:"next",r:I}))}}finally{N.abortSignal?.removeEventListener("abort",E),L.dispose()}}:async(U,N)=>{let{background:F,...w}=U;if(F){let{jobId:B}=await Q.start({toolName:$,input:w,toolCallId:N.toolCallId});return QV8(B)}return G(w,N)};return{...X,inputSchema:J,execute:W,toModelOutput:(U)=>{if(yc4(U.output))return{type:"text",value:U.output.note};if(X.toModelOutput)return X.toModelOutput(U);return{type:"text",value:JSON.stringify(U.output)}}}}var fc4,bc4;var p$1=O(()=>{u4();fc4="Running in the background. The result will appear in the conversation as "+"soon as it's ready \u2014 keep helping the user in the meantime, and do not "+"wait for it or call this tool again for the same request.",bc4={background:xc4.boolean().optional().describe("Run this in the BACKGROUND and return immediately instead of blocking this turn. Set true for long, fire-and-forget work whose result you do "+"NOT need in this same reply \u2014 it's delivered to the conversation when "+"it finishes and you'll be nudged to use it then. Leave false/omit when you need the result now to act on it this turn.")}});function YV8($,Z){let X=Cr.get($);if(!X)X=new Map,Cr.set($,X);let Q,Y=new Promise((G)=>{Q=G});return X.set(Z,Q),{flipped:Y,dispose(){let G=Cr.get($);if(!G)return;if(G.delete(Z),G.size===0)Cr.delete($)}}}function t$1($,Z){Cr.get($)?.get(Z)?.()}var Cr;var o$1=O(()=>{Cr=new Map});import{z as GV8}from"zod";function r$1($,Z){let{researchJob:X,toolOutputMap:Q,taskId:Y}=Z;return d8({description:Z.description??hc4,inputSchema:K0(gc4),execute:async(G,J)=>{let K=performance.now(),W=(H)=>{$.write({type:"data-web-search",id:J.toolCallId,data:{text:H}})};try{let H=X({query:G.query,taskId:Y,toolCallId:J.toolCallId,abortSignal:J.abortSignal}),U=await H.next();while(!U.done)W(U.value.progress),U=await H.next();let N=U.value;return Q.set(J.toolCallId,N.text),uc4({query:G.query,text:N.text,citations:N.citations,usage:N.usage,resultUri:N.resultUri??null,preview:N.preview??""})}finally{let H=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:H}})}}})}function uc4($){if($.resultUri)return{success:!0,uri:$.resultUri,preview:$.preview,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}};return{success:!0,content:$.text,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}}}var gc4,hc4="Search the web for up-to-date information and synthesize a concise answer. Use this for quick lookups, fact-checking, current events, or when the answer requires knowledge beyond your training data and a fast response is enough. For exhaustive, multi-source reports prefer `deep_research` when available.";var JV8=O(()=>{u4();gc4=GV8.object({query:GV8.string().max(1e4).describe("The research query. Be specific about what information you need. The research model will search the web and synthesize a comprehensive answer.")})});var KV8=O(()=>{N$1()});var WV8=O(()=>{KV8()});function OG($,Z,X){let Q=Object.entries(X).filter(([,G])=>G!==void 0&&G!==null).map(([G,J])=>`${G}=${typeof J==="string"?J:JSON.stringify(J)}`).join(" "),Y=`[web-search] ${Z} ${Q}`.trim();if($==="error")console.error(Y);else if($==="warn")console.warn(Y);else console.log(Y)}function a$1($){let{provider:Z,modelInfo:X,ctx:Q,mode:Y,toolName:G}=$,J=X.id;return async function*(W){let H=Z.asyncResearch;if(Y==="deep"&&H?.canHandle(J)===!0&&H)return yield*cc4({params:W,asyncResearch:H,providerId:Z.info.id,modelId:J,toolName:G,ctx:Q});return yield*dc4({params:W,provider:Z,modelId:J,ctx:Q})}}async function*cc4({params:$,asyncResearch:Z,providerId:X,modelId:Q,toolName:Y,ctx:G}){let{toolCallId:J,taskId:K}=$,W={tc:J,thread:K,provider:X,model:Q},H=await G.storage.asyncResearchJobs.upsertPending({threadId:K,toolCallId:J,provider:X,modelId:Q,query:$.query});if(H.status==="completed"&&H.resultPreview!=null)return OG("info","replay-completed",{...W,job:H.id}),lc4(H);if(H.status==="failed"||H.status==="cancelled")throw OG("warn",`replay-${H.status}`,{...W,job:H.id,err:H.lastError}),Error(H.lastError??`previous research ${H.status}`);if(!H.interactionId){OG("info","submit",{...W,job:H.id});let w;try{w=(await Z.start({modelId:Q,query:$.query,abortSignal:$.abortSignal})).jobId}catch(B){let L=B.message??String(B);throw await G.storage.asyncResearchJobs.markFailed(J,L),OG("error","submit-failed",{...W,job:H.id,err:L}),B}await G.storage.asyncResearchJobs.markPolling(J,w,{threadId:K,toolName:Y,query:$.query}),H={...H,interactionId:w,status:"polling"},OG("info","polling-started",{...W,job:H.id,interaction:w})}else OG("info","polling-resumed",{...W,job:H.id,interaction:H.interactionId,attempts:H.attempts});let U=0,N=50,F=[];try{let w=!1,B,L=Z.resume({jobId:H.interactionId,abortSignal:$.abortSignal,onProgress:(P)=>{let I=Date.now();if(I-U>=N)U=I,F.push(P);G.storage.asyncResearchJobs.recordPoll(J).catch((V)=>{OG("warn","record-poll-failed",{...W,job:H.id,err:V.message})})}}).catch((P)=>{B=P;return}).finally(()=>{w=!0});while(!w){while(F.length>0)yield{progress:F.shift()};await Promise.race([L,T8(N)])}while(F.length>0)yield{progress:F.shift()};if(await L,B!==void 0)throw B;let D=await L;if(yield{progress:D.text},D.text.trim()==="")throw OG("error","empty-result",{...W,job:H.id,tokens:D.usage.outputTokens}),new x_("research completed with empty result");let E={inputTokens:D.usage.inputTokens,outputTokens:D.usage.outputTokens},z=D.usage.outputTokens>h_&&G.objectStorage!=null,j=null;if(z&&G.objectStorage){let P=`web-search/${crypto.randomUUID()}.md`;try{await G.objectStorage.put(P,new TextEncoder().encode(D.text),{contentType:"text/markdown"}),j=M7(P)}catch(I){OG("warn","blob-upload-failed",{...W,job:H.id,err:I.message})}}let A=LQ(D.text);return await G.storage.asyncResearchJobs.markCompleted(J,{inputTokens:E.inputTokens,outputTokens:E.outputTokens,citations:D.citations,resultUri:j,resultPreview:A,resultContent:j?null:D.text}),OG("info","completed",{...W,job:H.id,tokens:E.outputTokens,citations:D.citations.length,uri:j??"inline"}),{text:D.text,citations:D.citations,usage:E,resultUri:j,preview:j?A:void 0}}catch(w){if($.abortSignal?.aborted)throw await G.storage.asyncResearchJobs.markCancelled(J,"aborted"),OG("info","cancelled",{...W,job:H.id}),w;let B=w.message??String(w);if(w instanceof x_||w instanceof Error&&w.name==="AsyncResearchTerminalError")throw await G.storage.asyncResearchJobs.markFailed(J,B),OG("error","terminal-failure",{...W,job:H.id,err:B}),w;throw await G.storage.asyncResearchJobs.recordPoll(J,B).catch(()=>{}),OG("warn","transient-error",{...W,job:H.id,err:B}),w}}function lc4($){if($.resultUri)return{text:"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:$.resultUri,preview:$.resultPreview??""};return{text:$.resultContent??$.resultPreview??"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:null}}async function*dc4({params:$,provider:Z,modelId:X,ctx:Q}){let Y=Z.aiSdk.languageModel(X),G=BO({model:Y,prompt:$.query,abortSignal:$.abortSignal}),J="",K=0,W=50;for await(let D of G.textStream){J+=D;let E=Date.now();if(E-K>=W)K=E,yield{progress:J}}yield{progress:J};let[H,U,N]=await Promise.all([G.usage,G.sources,G.providerMetadata]),F=H.inputTokens??0,w=H.outputTokens??0;EX0(N);let B=[];if(U&&Array.isArray(U)){for(let D of U)if(D&&typeof D==="object"&&"sourceType"in D&&D.sourceType==="url"&&"url"in D&&typeof D.url==="string")B.push({url:D.url,title:"title"in D&&typeof D.title==="string"?D.title:void 0})}let L={inputTokens:F,outputTokens:w};if(w>h_&&Q.objectStorage){let D=`web-search/${crypto.randomUUID()}.md`,E=new TextEncoder().encode(J);try{return await Q.objectStorage.put(D,E,{contentType:"text/markdown"}),{text:J,citations:B,usage:L,resultUri:M7(D),preview:LQ(J)}}catch(z){console.error("[web-search] Failed to upload to storage, returning inline",z)}}return{text:J,citations:B,usage:L,resultUri:null}}var HV8=O(()=>{u4();a4();WV8();q6();y_();dN()});function UV8($,Z){return hj0($,{objectStorage:Z.objectStorage,toolOutputMap:Z.toolOutputMap,pendingImages:Z.pendingImages})}var NV8=O(()=>{gh()});import{z as FV8}from"zod";function BV8($,Z){let{browserless:X,objectStorage:Q,toolOutputMap:Y}=Z;return d8({description:"Scrape the rendered HTML content of a web page. Use this when you need to read the content, structure, or data from a website. Returns the full HTML of the page after JavaScript has been executed. "+"For very large pages the result may be truncated \u2014 use read_tool_output to access the full content.",inputSchema:K0(ic4),execute:async(G,J)=>{let K=performance.now();try{let W;try{W=await fetch(`${X.baseUrl}/content?token=${encodeURIComponent(X.token)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url}),signal:AbortSignal.timeout(wV8)})}catch(N){return{success:!1,error:N instanceof Error&&N.name==="TimeoutError"?`Browserless content fetch timed out after ${wV8}ms`:`Browserless content fetch failed: ${N instanceof Error?N.message:String(N)}`,url:G.url}}if(!W.ok){let N=await W.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless content fetch failed (${W.status}): ${N.slice(0,mc4)}`,url:G.url}}let H=await W.text();Y.set(J.toolCallId,H);let U=RX(H);if(U>h_){let N=`scraped-pages/${crypto.randomUUID()}.html`,F=new TextEncoder().encode(H);try{await Q.put(N,F,{contentType:"text/html"});let w=LQ(H);return{success:!0,uri:M7(N),preview:w,url:G.url,tokenCount:U}}catch(w){console.error("[scrape-url] Failed to upload to storage, returning inline",w)}}return{success:!0,content:H,url:G.url,tokenCount:U}}finally{let W=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:W}})}}})}var wV8=45000,mc4=500,ic4;var OV8=O(()=>{u4();dN();y_();ic4=FV8.object({url:FV8.string().url().refine(($)=>/^https?:\/\//i.test($),{message:"URL must use http or https"}).describe("The URL of the web page to scrape.")})});import{z as uj0}from"zod";function tc4($,Z){let X=Z.waitUntil??"networkidle2",Q=Z.evaluate?JSON.stringify(Z.evaluate):"null";return`
|
|
2693
2693
|
export default async function ({ page }) {
|
|
2694
2694
|
const consoleLogs = [];
|
|
2695
2695
|
const errors = [];
|