decocms 3.16.4 → 3.17.0
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-C7z-V8PW.js → AlertCircle-C60SOqDn.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-DrdPL0e7.js → ArrowUpRight-CK7gDol3.js} +1 -1
- package/dist/client/assets/{Check-Dd4DY5uR.js → Check-DF6w4Xf7.js} +1 -1
- package/dist/client/assets/{CheckCircle-FfKjcpCo.js → CheckCircle-DmfTpHvO.js} +1 -1
- package/dist/client/assets/{ChevronDown-q6om2VnP.js → ChevronDown-xdnBqvPv.js} +1 -1
- package/dist/client/assets/{ChevronLeft-MgGV-KON.js → ChevronLeft-CV1JR0n7.js} +1 -1
- package/dist/client/assets/{ChevronRight-DF_7Jr6-.js → ChevronRight-BFePDCy2.js} +1 -1
- package/dist/client/assets/{ChevronUp-CZ2c4QT8.js → ChevronUp-Buu5-4PF.js} +1 -1
- package/dist/client/assets/{Container-CLTqJvB-.js → Container-CE_bYM-S.js} +1 -1
- package/dist/client/assets/{DotsVertical-ChEXuCNr.js → DotsVertical-BKym908x.js} +1 -1
- package/dist/client/assets/{Eye-Cg3KEYLR.js → Eye-CErWNv7o.js} +1 -1
- package/dist/client/assets/{FilterLines-8Z1EXJU1.js → FilterLines-BdmyMdfx.js} +1 -1
- package/dist/client/assets/{Globe01-DhsYVZ78.js → Globe01-DnzdPEJJ.js} +1 -1
- package/dist/client/assets/{HardDrive-I0CJViHA.js → HardDrive-hADgoLDo.js} +1 -1
- package/dist/client/assets/{Key01-BOdS0XJd.js → Key01-DsE7OhuU.js} +1 -1
- package/dist/client/assets/{LayoutLeft-Bb0s-28Y.js → LayoutLeft-BhinYfWY.js} +1 -1
- package/dist/client/assets/{LinkExternal01-D5bRZZ7Q.js → LinkExternal01-DcOGEj3G.js} +1 -1
- package/dist/client/assets/{Monitor01-BMO0nffP.js → Monitor01-Gwe7gDl0.js} +1 -1
- package/dist/client/assets/{Palette-cVasQJYG.js → Palette-B-GEVm1-.js} +1 -1
- package/dist/client/assets/{Play-CnLbQjiF.js → Play-BGyx7fGz.js} +1 -1
- package/dist/client/assets/{Plus-C2lPEpk2.js → Plus-bsWCeJ-2.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-DkjqduXo.js → RefreshCcw01-CRJIqj_B.js} +1 -1
- package/dist/client/assets/{SearchMd-BZ5uFVyv.js → SearchMd-CzBI3Uol.js} +1 -1
- package/dist/client/assets/{Settings02-CkecSEd-.js → Settings02-Ci12BiE5.js} +1 -1
- package/dist/client/assets/{Shield01-DHeMOigW.js → Shield01-BRyN9scd.js} +1 -1
- package/dist/client/assets/{Star01-CcEuFfec.js → Star01-OObi9Rw0.js} +1 -1
- package/dist/client/assets/{Stars01-CbHt_6-5.js → Stars01-BEoc-mjR.js} +1 -1
- package/dist/client/assets/{Stars02-BqzITFM8.js → Stars02-CW3UZx3-.js} +1 -1
- package/dist/client/assets/{Sun-iU2rGybo.js → Sun-C_gPgvUR.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CJ4InXIK.js → SwitchHorizontal01-Rf6iK7AC.js} +1 -1
- package/dist/client/assets/{Tool01-G_qe4xr9.js → Tool01-BiE0h7tF.js} +1 -1
- package/dist/client/assets/{Trash01-CLPIYWB0.js → Trash01-BrjghIL2.js} +1 -1
- package/dist/client/assets/{Upload01-CMufGYXQ.js → Upload01-BX1dhLNk.js} +1 -1
- package/dist/client/assets/{User01-DlH74QWo.js → User01-CS4YG3ga.js} +1 -1
- package/dist/client/assets/{Users01-Cu8ZTFie.js → Users01-C_AUkLQB.js} +1 -1
- package/dist/client/assets/{Users03-DzGgBVNT.js → Users03-BluuyeMv.js} +1 -1
- package/dist/client/assets/{X-DcUCV36T.js → X-KBpNDFwt.js} +1 -1
- package/dist/client/assets/{XCircle-BLtazoy5.js → XCircle-BT0I631z.js} +1 -1
- package/dist/client/assets/{XClose-n_6qPNJf.js → XClose-C-vzo62c.js} +1 -1
- package/dist/client/assets/{Zap-kDewRIEE.js → Zap-ln_FBbgR.js} +1 -1
- package/dist/client/assets/{ZapSquare-NBV5NA7W.js → ZapSquare-CJjIVoWQ.js} +1 -1
- package/dist/client/assets/{ZoomOut-B-M27CLc.js → ZoomOut-BjMRp_T0.js} +1 -1
- package/dist/client/assets/{access-gate-fR4pq-L8.js → access-gate-zxF68jBj.js} +1 -1
- package/dist/client/assets/{accordion-C2y9Pzbc.js → accordion-CFMy4qXB.js} +1 -1
- package/dist/client/assets/{add-section-modal-BOgkPRCm.js → add-section-modal-CYH6uRbc.js} +1 -1
- package/dist/client/assets/agent-capabilities-C3RsBcSb.js +3 -0
- package/dist/client/assets/{agent-icon-BfUtMte0.js → agent-icon-B1qpfYNt.js} +1 -1
- package/dist/client/assets/{agent-icons-hvA3E_Do.js → agent-icons-Bddc5S6K.js} +1 -1
- package/dist/client/assets/{agents-list-CQqZGdLA.js → agents-list-C1ozzeNe.js} +1 -1
- package/dist/client/assets/{ai-providers-Db0YGoZI.js → ai-providers-CHW_JN62.js} +1 -1
- package/dist/client/assets/{alert-BxLN58Xd.js → alert-CesPStPt.js} +1 -1
- package/dist/client/assets/{alert-dialog-DjURN0Wv.js → alert-dialog-CXyIvClG.js} +1 -1
- package/dist/client/assets/app-editor-CEpZoNYr.js +1 -0
- package/dist/client/assets/{auth-catchall-BNZ78VhB.js → auth-catchall-Cp8-mG8G.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CZSuZiHz.js → auth-split-layout-B71ZqU3Y.js} +1 -1
- package/dist/client/assets/{automation-list-row-0aY-wHMF.js → automation-list-row-B1sYOc--.js} +1 -1
- package/dist/client/assets/{automation-runs-Cw5GALKR.js → automation-runs-CCwBsA2u.js} +1 -1
- package/dist/client/assets/{automations-DVaLtsbr.js → automations-B6j4to3S.js} +1 -1
- package/dist/client/assets/{avatar-CPeVEYzP.js → avatar-DO1C-195.js} +1 -1
- package/dist/client/assets/{badge-Sld47C66.js → badge-C-tdV1ua.js} +1 -1
- package/dist/client/assets/{brand-context-D5g1kbTY.js → brand-context-C6SmBEdM.js} +1 -1
- package/dist/client/assets/{buckets-CQrAL2WH.js → buckets-BfZlpl0Y.js} +1 -1
- package/dist/client/assets/{calendar-D_lfc4-f.js → calendar-CwDIy5hN.js} +1 -1
- package/dist/client/assets/{capability-load-error-DntEpZQa.js → capability-load-error-DfeaG6tH.js} +1 -1
- package/dist/client/assets/{card-BoIkIdKw.js → card-e3k5JTCd.js} +1 -1
- package/dist/client/assets/{chat-context-BllQ4wIO.js → chat-context-D-X8cS3i.js} +1 -1
- package/dist/client/assets/{checkbox-C3vxmcaB.js → checkbox-DYr-nykG.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Dp4mfXYL.js → cli-auth-success-BOa30K2J.js} +1 -1
- package/dist/client/assets/{collection-detail-072-Guix.js → collection-detail-C03fB25E.js} +1 -1
- package/dist/client/assets/{collection-display-button-AGMnoaLE.js → collection-display-button-BmtSB8mm.js} +1 -1
- package/dist/client/assets/{collection-search-BRyG5fy4.js → collection-search-B6dSfToc.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DE0BllZg.js → collection-table-wrapper-pJaZI6gS.js} +1 -1
- package/dist/client/assets/{collection-tabs-CZlafXgn.js → collection-tabs-BllPxwrr.js} +1 -1
- package/dist/client/assets/{collections-OmqpbRHJ.js → collections-lu3mBZ1A.js} +1 -1
- package/dist/client/assets/{command-BqieK0cx.js → command-Cn2MFiuK.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-BBJ3ZBYq.js → connect-desktop-dialog-DcpLzBCZ.js} +1 -1
- package/dist/client/assets/{connection-card-Bm_mNiXs.js → connection-card-DivMzwIe.js} +1 -1
- package/dist/client/assets/{connection-detail-D3-zF53f.js → connection-detail-D2oJ2onG.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B7Hi4AVw.js → connection-form-helpers-a7VwpjwJ.js} +1 -1
- package/dist/client/assets/{connections-DxOhnozc.js → connections-Dn2Kwio9.js} +1 -1
- package/dist/client/assets/{constants-BN3EnnK5.js → constants-Cpa_PRaA.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-Cl6vHzIb.js → decopilot-sse-pool-DGFUIouC.js} +1 -1
- package/dist/client/assets/{dialog-qOMSPeFV.js → dialog-CUjx9rHg.js} +1 -1
- package/dist/client/assets/{domain-settings-e9uj9KSS.js → domain-settings-DU6Ay54r.js} +1 -1
- package/dist/client/assets/{drawer-DgiouEht.js → drawer-QtJTYX-_.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CD9L0NpR.js → dropdown-menu-kulKDSsi.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-B38NSbtx.js → dynamic-plugin-layout-DiBlJ1h6.js} +1 -1
- package/dist/client/assets/{empty-state-kyadFKbp.js → empty-state-D0RxK3or.js} +1 -1
- package/dist/client/assets/{empty-state-oUgpGFDY.js → empty-state-Dwi3hiwi.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DUfac6xd.js → extract-connection-data-BpY7BmQW.js} +1 -1
- package/dist/client/assets/{features-DVXCwn_d.js → features-DXWmgKl9.js} +1 -1
- package/dist/client/assets/{file-explorer-QJj5R7Vm.js → file-explorer-D9VPjKLw.js} +1 -1
- package/dist/client/assets/{file-type-icon-D-cvDShc.js → file-type-icon-ByLTqBfz.js} +1 -1
- package/dist/client/assets/{files-GjQ9-UbG.js → files-DDIKVYGG.js} +1 -1
- package/dist/client/assets/{form-DCJSDrN9.js → form-CaMqqpqe.js} +1 -1
- package/dist/client/assets/{general-C0YCcLeg.js → general-BkiCU-Hm.js} +1 -1
- package/dist/client/assets/{generate-id-BxP01XU4.js → generate-id-9PcNpGv_.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DE4TiJ6h.js → github-repo-picker--bR_zEj3.js} +1 -1
- package/dist/client/assets/{header-tab-button-6bRdq2K-.js → header-tab-button-D1qFBpLx.js} +1 -1
- package/dist/client/assets/{hover-card-lMFQF9-F.js → hover-card-Cr5J4KeR.js} +1 -1
- package/dist/client/assets/{image-field-Dzduad-d.js → image-field-DXCxUuM3.js} +1 -1
- package/dist/client/assets/{index-Ddo-OAlk.js → index-B7iCbXk_.js} +3 -3
- package/dist/client/assets/{index-DDQ1B6Aj.js → index-BUo-2VB-.js} +1 -1
- package/dist/client/assets/{index-CvgbrWNJ.js → index-BrdW0myi.js} +1 -1
- package/dist/client/assets/{index-Brd11Ohc.js → index-Bx0Oi4xn.js} +1 -1
- package/dist/client/assets/{index-OvgvLmj6.js → index-C0x63L7k.js} +1 -1
- package/dist/client/assets/{index-Bm7p6st-.js → index-CIuBxZRA.js} +1 -1
- package/dist/client/assets/{index-BLl7lttY.js → index-Cf7BAgGY.js} +1 -1
- package/dist/client/assets/{index-CqTgM-6C.js → index-DIlZPr54.js} +1 -1
- package/dist/client/assets/{index-BIms-A8c.js → index-DOtsYOFt.js} +1 -1
- package/dist/client/assets/{index-UyCB-Rx1.js → index-DX2Fzm3S.js} +1 -1
- package/dist/client/assets/{index-CtGs1DJJ.js → index-Da3iT1hc.js} +4 -4
- package/dist/client/assets/{index-CtHmN2ln.js → index-Dg9-_22c.js} +1 -1
- package/dist/client/assets/{index-CvOh-PKX.js → index-Dug5g6VY.js} +1 -1
- package/dist/client/assets/{index-HfFXcyYk.js → index-DvzG1FeM.js} +1 -1
- package/dist/client/assets/{index-CGbH7bcb.js → index-ZFbYaFg8.js} +1 -1
- package/dist/client/assets/{index-redirect-DVYvuCCP.js → index-redirect-CQ1L1Wji.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-DVXVEIds.js → infiniteQueryObserver-pRjjk3aR.js} +1 -1
- package/dist/client/assets/{input-rSCTpjle.js → input-sl_dQ9pB.js} +1 -1
- package/dist/client/assets/{integration-icon-Bud2iScJ.js → integration-icon-Q1PWRG0K.js} +1 -1
- package/dist/client/assets/{label-B7rNFDmP.js → label-0agd396a.js} +1 -1
- package/dist/client/assets/{layout-CEqxg3rT.js → layout-CrZcXpRG.js} +1 -1
- package/dist/client/assets/{login-CapaPVFw.js → login-BYbZPB6i.js} +1 -1
- package/dist/client/assets/{members-EJxlsGI5.js → members-meEx9EiG.js} +1 -1
- package/dist/client/assets/{monaco-editor-CqDQuYzQ.js → monaco-editor-D-dgw2ct.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CC0b-8JY.js → monitoring-stats-row-CC_MeiA9.js} +1 -1
- package/dist/client/assets/{oauth-callback-CWWtjtNz.js → oauth-callback-WDAqIdpl.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-C52td6lP.js → oauth-callback-ai-provider-DKmcx6UE.js} +1 -1
- package/dist/client/assets/{onboarding-B3pW3OTI.js → onboarding-lW6BfseB.js} +1 -1
- package/dist/client/assets/{org-install-BKl8mAvw.js → org-install-lEOW4M7O.js} +1 -1
- package/dist/client/assets/{org-layout-B6_x4zIK.js → org-layout-B62ZU-fz.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-CCB1NusG.js → org-plugin-layout-C0PeZyWO.js} +1 -1
- package/dist/client/assets/{page-seo-form-enQgxFv1.js → page-seo-form-DH-4diLr.js} +1 -1
- package/dist/client/assets/page-seo-sheet-BRyeLute.js +1 -0
- package/dist/client/assets/{pair-B1riNa41.js → pair-CL9g4v9i.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-CTuwNPDg.js → plugin-empty-state-CWSym5Gn.js} +1 -1
- package/dist/client/assets/{plugin-header-CDXeYEXC.js → plugin-header-CJP7g5ws.js} +1 -1
- package/dist/client/assets/{plugin-layout-CaUNVm6a.js → plugin-layout-LaTBa6Av.js} +1 -1
- package/dist/client/assets/{popover-C9laUh6-.js → popover-0ZJ4bKFd.js} +1 -1
- package/dist/client/assets/{post-editor-lhgneqmv.js → post-editor-BbEWuOYm.js} +1 -1
- package/dist/client/assets/{primitives-B4sR9JrK.js → primitives-BoA063oK.js} +1 -1
- package/dist/client/assets/{profile-pHe9Ajxu.js → profile-BgPXMDvJ.js} +1 -1
- package/dist/client/assets/project-app-view-Cfv3zOCp.js +1 -0
- package/dist/client/assets/record-editor-DoEy0Prc.js +1 -0
- package/dist/client/assets/{registry-layout-BIYDgiNs.js → registry-layout-nzyxID0H.js} +1 -1
- package/dist/client/assets/registry-t8mJuopF.js +2 -0
- package/dist/client/assets/{require-capability-CLzzkYsu.js → require-capability-KAZJyuEt.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DdJg8zF9.js → required-auth-layout-BGH5fHd-.js} +1 -1
- package/dist/client/assets/{reset-password-nThxnoX9.js → reset-password-BrKglHl8.js} +1 -1
- package/dist/client/assets/{resizable-D9zGGmNX.js → resizable-BynpWjrV.js} +1 -1
- package/dist/client/assets/{roles-Cp9Isv-V.js → roles-C-YRzV57.js} +1 -1
- package/dist/client/assets/{save-status-Wb7i0dV6.js → save-status-TDiEcZGl.js} +1 -1
- package/dist/client/assets/{schema-form-yX6Ft6zW.js → schema-form-BB6bVjx8.js} +1 -1
- package/dist/client/assets/{scroll-area-lnnHcoAD.js → scroll-area-PEeFDkLY.js} +1 -1
- package/dist/client/assets/{search-input-DwibiVVh.js → search-input-By1iAL0X.js} +1 -1
- package/dist/client/assets/{secrets-BDyxrSjf.js → secrets-XbA4V0xK.js} +1 -1
- package/dist/client/assets/{sections-editor-DUAAqhpr.js → sections-editor-TEdZQZJO.js} +1 -1
- package/dist/client/assets/{select-LFt-mET5.js → select-BNxRkI-t.js} +1 -1
- package/dist/client/assets/select-model-ghX-v4Ig.js +1 -0
- package/dist/client/assets/{seo-editor-DCSDlOjD.js → seo-editor-DeUIv9eT.js} +1 -1
- package/dist/client/assets/{settings-layout-wrO6UXp0.js → settings-layout-8xVnQDLN.js} +1 -1
- package/dist/client/assets/{settings-section-nFhQ9DC2.js → settings-section-eLjbh43q.js} +1 -1
- package/dist/client/assets/{sheet-pqbHPkyu.js → sheet-BZY2P976.js} +1 -1
- package/dist/client/assets/{shell-controls-DJGk-Cm5.js → shell-controls-Cp2-Rg1c.js} +1 -1
- package/dist/client/assets/shell-layout-BtMzIPg7.js +1 -0
- package/dist/client/assets/{shell-route-loading-CIX4Wpf7.js → shell-route-loading-DoYxyFlE.js} +1 -1
- package/dist/client/assets/{sidebar-BZQ9ZuwD.js → sidebar-ChiM4a_i.js} +1 -1
- package/dist/client/assets/{skeleton-DDFad7Zm.js → skeleton-DTLKSQsA.js} +1 -1
- package/dist/client/assets/{sortable.esm-BmQU85RQ.js → sortable.esm-2lmOgmi4.js} +1 -1
- package/dist/client/assets/{spinner-DecrbM2u.js → spinner-_PK4VaDI.js} +1 -1
- package/dist/client/assets/{sso-uPYu69iU.js → sso-kv18k_tl.js} +1 -1
- package/dist/client/assets/{store-DxDAvQny.js → store-DmNXPwWN.js} +1 -1
- package/dist/client/assets/store-registry-Xa_OXshG.js +2 -0
- package/dist/client/assets/{switch-BB-CM41R.js → switch-DwvQWz2E.js} +1 -1
- package/dist/client/assets/{tab-id-CgZSqh3C.js → tab-id-DjqI6l0G.js} +1 -1
- package/dist/client/assets/{table-D77MLzgL.js → table-CBk3lXtT.js} +1 -1
- package/dist/client/assets/{tabs-DCe9cJFy.js → tabs-Po5E3Ayq.js} +1 -1
- package/dist/client/assets/{task-status-COuLaDdz.js → task-status-DsaC_oJP.js} +1 -1
- package/dist/client/assets/{textarea-Dd_nswrz.js → textarea-B1WljwHE.js} +1 -1
- package/dist/client/assets/{toggle-group-CVhoCxfd.js → toggle-group-B3t22Ptk.js} +1 -1
- package/dist/client/assets/{toolbar-hSa6Dbq7.js → toolbar-cmRfNwQD.js} +1 -1
- package/dist/client/assets/{tools-list-DuzN2FYL.js → tools-list-BnVOCqU_.js} +1 -1
- package/dist/client/assets/{tooltip-BUQdgInQ.js → tooltip-B6_9bHJx.js} +1 -1
- package/dist/client/assets/{types-C1v54Mz6.js → types-lc1ECy_H.js} +1 -1
- package/dist/client/assets/{use-ai-providers-B_B7XI7_.js → use-ai-providers-0H5Wh0i0.js} +1 -1
- package/dist/client/assets/{use-automations-DH2iF1St.js → use-automations-C973xe8b.js} +1 -1
- package/dist/client/assets/{use-capability-BGUE7EVy.js → use-capability-CqJIED2u.js} +1 -1
- package/dist/client/assets/{use-collections-DFTbd6Fl.js → use-collections-CIO9U6G8.js} +1 -1
- package/dist/client/assets/{use-connection-lE__8xdh.js → use-connection-BvS5x-S0.js} +1 -1
- package/dist/client/assets/{use-copy-ZYwX79XH.js → use-copy-Cxr6vssE.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-B_aHPeoS.js → use-create-virtual-mcp-Chuptxkc.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B34gfDHg.js → use-debounced-autosave-B4SKWMvl.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CDUrp1iY.js → use-delete-connection-mfWTHssT.js} +1 -1
- package/dist/client/assets/{use-file-configs-Cax2DWWv.js → use-file-configs-DmyFDcAm.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-hBDGyHUM.js → use-infinite-scroll-B-fFE68E.js} +1 -1
- package/dist/client/assets/{use-list-state-xrbgUm4z.js → use-list-state-B09S-BWf.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-Dxg9Un5w.js → use-mcp-prompts-B_4yCH1T.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-QU_D_i6C.js → use-mcp-tools-Dsc1UeQQ.js} +1 -1
- package/dist/client/assets/{use-members-BWJ8hwfe.js → use-members-CpAwxknD.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Cc-xymgp.js → use-navigate-to-agent-DKNHISHp.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-NsurVUJ9.js → use-org-auth-client-DdhLhM_F.js} +1 -1
- package/dist/client/assets/{use-org-sso-DLBFty4l.js → use-org-sso-Czp3Extl.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BWWLZ7O1.js → use-organization-roles-DHPZJ4qD.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CCbA9nGy.js → use-organization-settings-C0BOz_Ke.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DLPkHVYT.js → use-registry-connections-D2qSqjYo.js} +1 -1
- package/dist/client/assets/{use-secrets-cpRcdu7B.js → use-secrets-aqA2bpzj.js} +1 -1
- package/dist/client/assets/{use-status-sounds-B2yZVdDL.js → use-status-sounds-DLp0Y7Nr.js} +1 -1
- package/dist/client/assets/{use-view-mode-DeAHyjDR.js → use-view-mode-C2H7MJAf.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BlTQLNpO.js → use-virtual-mcp-BhWviJXb.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-D4EQXoEc.js +1 -0
- package/dist/client/assets/{useRouterState-BDC7x_pD.js → useRouterState-DgnbACwu.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BLgR6b-Q.js +1 -0
- package/dist/client/assets/{user-CJzOQ38j.js → user-CU4GJQgm.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BRumGdwQ.js → view-mode-toggle-CKE9mpoP.js} +1 -1
- package/dist/client/assets/{workflow-C89XsL5x.js → workflow-6tDqIuiP.js} +1 -1
- package/dist/client/assets/workflow-detail-CpCpA8Vm.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +6 -5
- package/dist/server/server.js +4 -4
- package/package.json +1 -1
- package/dist/client/assets/agent-capabilities-CsVK4Iyy.js +0 -3
- package/dist/client/assets/app-editor-C6PYtYB9.js +0 -1
- package/dist/client/assets/page-seo-sheet-8AFg5HN-.js +0 -1
- package/dist/client/assets/project-app-view-CLH-EuPS.js +0 -1
- package/dist/client/assets/record-editor-Cm14ALiS.js +0 -1
- package/dist/client/assets/registry-B-mQZydb.js +0 -2
- package/dist/client/assets/select-model-C3GfXMo3.js +0 -1
- package/dist/client/assets/shell-layout-Chk-dikt.js +0 -1
- package/dist/client/assets/store-registry-B62lR_g6.js +0 -2
- package/dist/client/assets/useInfiniteQuery-FZ-eOLUd.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DY0Najlz.js +0 -1
- package/dist/client/assets/workflow-detail-CXHAQziO.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -81,7 +81,7 @@ You are running the brand-context onboarding for the user's organization. Your o
|
|
|
81
81
|
4. Do NOT call any other tools in this thread. Do NOT call \`brand_context_setup\` more than once.
|
|
82
82
|
|
|
83
83
|
If the tool returns an error, surface the error message to the user and ask whether they want to try a different URL.
|
|
84
|
-
`.trim();_z0=Oq1("site-diagnostics_"),tZ8=_z0.is,oZ8=_z0.get,iX={AGENT_MANAGER:($)=>`studio-agent-manager_${$}`,AUTOMATION_MANAGER:($)=>`studio-automation-manager_${$}`,CONNECTION_MANAGER:($)=>`studio-connection-manager_${$}`,STORE_MANAGER:($)=>`studio-store-manager_${$}`,BRAND_MANAGER:($)=>`studio-brand-manager_${$}`,USAGE_MANAGER:($)=>`studio-usage-manager_${$}`}});var vz0=D(()=>{fI1();wr();ra();sa()});var fz0=D(()=>{eF()});var xz0=D(()=>{Q9();eF()});var yz0=D(()=>{Q9();eF()});var gz0=D(()=>{yI1();wr();ra();sa();eF()});var hz0=D(()=>{wr();vz0();ra();fz0();xz0();yz0();gz0()});import{z as M$}from"zod";function v3($){return $!==null&&$!==void 0&&"command"in $}function bB($){if(!$||!$.startsWith("virtual://"))return null;return $.replace("virtual://","")}function vB($){return`virtual://${$}`}var k78,uz0,V78,S78,C78,DG,og,rg;var cz0=D(()=>{Q9();k78=M$.object({authorizationEndpoint:M$.string().url(),tokenEndpoint:M$.string().url(),introspectionEndpoint:M$.string().url().optional(),clientId:M$.string(),clientSecret:M$.string().optional(),scopes:M$.array(M$.string()),grantType:M$.enum(["authorization_code","client_credentials"])}),uz0=M$.object({type:M$.literal("object"),properties:M$.record(M$.string(),M$.unknown()).optional(),required:M$.array(M$.string()).optional()}).catchall(M$.unknown()),V78=xr.extend({inputSchema:uz0,outputSchema:uz0.optional()}),S78=M$.object({headers:M$.record(M$.string(),M$.string()).optional()}),C78=M$.object({command:M$.string().describe("Command to run (e.g., 'npx', 'node')"),args:M$.array(M$.string()).optional().describe("Command arguments"),cwd:M$.string().optional().describe("Working directory"),envVars:M$.record(M$.string(),M$.string()).optional().describe("Environment variables (encrypted in storage)")}),DG=M$.object({id:M$.string().describe("Unique identifier for the connection"),title:M$.string().describe("Human-readable name for the connection"),created_at:M$.string().describe("When the connection was created"),updated_at:M$.string().describe("When the connection was last updated"),created_by:M$.string().describe("User ID who created the connection"),updated_by:M$.string().optional().describe("User ID who last updated the connection"),organization_id:M$.string().describe("Organization ID this connection belongs to"),description:M$.string().nullable().describe("Description of the connection"),icon:M$.string().nullable().describe("Icon URL for the connection"),app_name:M$.string().nullable().describe("Associated app name"),app_id:M$.string().nullable().describe("Associated app ID"),slug:M$.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),connection_type:M$.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:M$.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:M$.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:M$.union([C78,S78]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:k78.nullable().describe("OAuth configuration"),configuration_state:M$.record(M$.string(),M$.unknown()).nullable().describe("Configuration state (decrypted)"),configuration_scopes:M$.array(M$.string()).nullable().optional().describe("Configuration scopes"),metadata:M$.record(M$.string(),M$.unknown()).nullable().describe("Additional metadata (includes repository info)"),tools:M$.array(V78).nullable().describe("Discovered tools from MCP"),bindings:M$.array(M$.string()).nullable().describe("Detected bindings"),status:M$.enum(["active","inactive","error"]).describe("Current status")}),og=DG.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:M$.string().nullish()}),rg=DG.partial()});import{z as s1}from"zod";function ea($){let Z=$?.homeTiles;if(Array.isArray(Z)&&Z.length>0)return Z;let G=$?.homeTile;return G?[G]:[]}function $s($){return $==="cluster"?"agent-sandbox":$}function Mq1($){let Z=x78.parse($);return Zs.parse({...Z,sandboxProviderKind:Z.sandboxProviderKind?$s(Z.sandboxProviderKind):void 0})}function uK($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z=$,G={};for(let[X,Q]of Object.entries(Z)){if(!Q||typeof Q!=="object")continue;if(X!=="cluster"&&X!=="agent-sandbox"&&X!=="user-desktop")continue;let Y=$s(X);try{if(X==="cluster"&&G[Y])continue;G[Y]=Mq1(Q)}catch{}}return G}function Gs($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z={};for(let[G,X]of Object.entries($)){if(!X||typeof X!=="object"||Array.isArray(X))continue;let Q={};for(let[Y,J]of Object.entries(X)){let W=uK(J);if(Object.keys(W).length>0)Q[Y]=W}if(Object.keys(Q).length>0)Z[G]=Q}return Z}var ag,mz0,_78,Aq1,Rq1,lz0,Iq1,sg,dz0,b78,Tq1,qq1,v78,f78,iz0,Zs,x78,eg,LG,$h,Zh;var nz0=D(()=>{ag=s1.object({connection_id:s1.string().describe("Connection ID"),selected_tools:s1.array(s1.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:s1.array(s1.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:s1.array(s1.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),mz0=ag.extend({selected_tools:ag.shape.selected_tools.optional(),selected_resources:ag.shape.selected_resources.optional(),selected_prompts:ag.shape.selected_prompts.optional()}),_78=s1.object({connectionId:s1.string(),toolName:s1.string(),label:s1.string(),icon:s1.string().nullable().optional()}),Aq1=s1.object({id:s1.string().describe("Stable id; used as React key and ?tab= value"),title:s1.string().describe("Tab label"),icon:s1.string().optional().describe("Optional lucide icon name"),view:s1.object({type:s1.literal("ext-app"),appId:s1.string(),args:s1.record(s1.string(),s1.unknown()).optional()})}),Rq1=s1.object({defaultMainView:s1.object({type:s1.string(),id:s1.string().optional(),toolName:s1.string().optional()}).nullable().optional(),chatDefaultOpen:s1.boolean().nullable().optional(),tabs:s1.array(Aq1).optional()}),lz0=s1.object({connectionId:s1.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:s1.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),minHeight:s1.number().int().positive().optional(),maxHeight:s1.number().int().positive().optional()}),Iq1=s1.object({banner:s1.string().nullable().optional(),bannerColor:s1.string().nullable().optional(),icon:s1.string().nullable().optional(),themeColor:s1.string().nullable().optional(),pinnedViews:s1.array(_78).nullable().optional(),layout:Rq1.nullable().optional(),homeTile:lz0.nullable().optional(),homeTiles:s1.array(lz0).nullable().optional(),homePrompts:s1.array(s1.string()).nullable().optional()});sg=/^[A-Za-z_][A-Za-z0-9_]*$/,dz0=s1.string().min(1).regex(sg,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),b78=s1.discriminatedUnion("kind",[s1.object({key:dz0,kind:s1.literal("literal"),value:s1.string()}),s1.object({key:dz0,kind:s1.literal("secret"),secretId:s1.string().min(1)})]),Tq1=s1.object({selected:s1.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:s1.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:s1.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:s1.array(b78).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that mesh resolves via the credential vault before posting /_sandbox/config.")}),qq1=s1.object({url:s1.string().describe("GitHub repository URL"),owner:s1.string().describe("Repository owner"),name:s1.string().describe("Repository name"),installationId:s1.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:s1.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials.")}),v78=s1.enum(["agent-sandbox","user-desktop"]),f78=s1.enum(["agent-sandbox","user-desktop","cluster"]);iz0={sandboxHandle:s1.string().describe("Provider-specific handle"),previewUrl:s1.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:s1.string().nullable().optional().describe("Daemon's public URL \u2014 what cluster\u2192daemon RPCs target. Equal to previewUrl for user-desktop; null/absent for the agent-sandbox provider (routes through hosted ingress)."),sandboxProviderKind:v78.optional(),createdAt:s1.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:s1.object({packageManager:s1.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:s1.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:s1.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},Zs=s1.object(iz0),x78=s1.object({...iz0,sandboxProviderKind:f78.optional()});eg=s1.record(s1.string().describe("userId"),s1.record(s1.string().describe("branch"),s1.record(s1.string().describe("sandboxProviderKind"),Zs)));LG=s1.object({id:s1.string().describe("Unique identifier"),title:s1.string().describe("Human-readable name"),description:s1.string().nullable().describe("Description"),icon:s1.string().nullable().describe("Icon URL"),created_at:s1.string().describe("Creation timestamp"),updated_at:s1.string().describe("Last update timestamp"),created_by:s1.string().describe("User ID who created this item"),updated_by:s1.string().optional().describe("User ID who last updated this item"),organization_id:s1.string().describe("Organization ID this item belongs to"),status:s1.enum(["active","inactive"]).describe("Current status"),pinned:s1.boolean().describe("Whether this space is pinned to the sidebar"),metadata:s1.object({instructions:s1.string().nullable().describe("Instructions also used as system prompt"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:s1.array(ag).describe("Connections with their selected tools, resources, and prompts")}),$h=s1.object({title:s1.string().min(1).max(255).describe("Name for the virtual MCP"),description:s1.string().nullable().optional().describe("Optional description"),icon:s1.string().nullish().describe("Optional icon URL"),status:s1.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:s1.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:s1.object({instructions:s1.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:s1.array(mz0).describe("Connections to include/exclude (can be empty for exclusion mode)")}),Zh=s1.object({title:s1.string().min(1).max(255).optional().describe("New name"),description:s1.string().nullable().optional().describe("New description (null to clear)"),icon:s1.string().nullish().describe("New icon URL"),status:s1.enum(["active","inactive"]).optional().describe("New status"),pinned:s1.boolean().optional().describe("Pin/unpin from sidebar"),metadata:s1.object({instructions:s1.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:s1.array(mz0).optional().describe("New connections (replaces existing)")})});var sZ;var pz0=D(()=>{sZ=["deco","anthropic","openrouter","google","claude-code","codex","openai-compatible"]});function Xs($,Z){return{id:crypto.randomUUID(),type:hC.STEP,source:"decopilot",subject:$,data:{stepCount:Z},time:new Date().toISOString()}}function wH($,Z){return{id:crypto.randomUUID(),type:hC.FINISH,source:"decopilot",subject:$,data:{status:Z},time:new Date().toISOString()}}function eQ($,Z,G){return{id:crypto.randomUUID(),type:hC.THREAD_STATUS,source:"decopilot",subject:$,data:{status:Z,...G?.virtualMcpId!==void 0&&{virtual_mcp_id:G.virtualMcpId},...G?.createdBy!==void 0&&{created_by:G.createdBy},...G?.triggerId!==void 0&&{trigger_id:G.triggerId},...G?.title!==void 0&&{title:G.title},...G?.branch!==void 0&&{branch:G.branch},...G?.createdAt!==void 0&&{created_at:G.createdAt},...G?.updatedAt!==void 0&&{updated_at:G.updatedAt},...G?.metadata!==void 0&&{metadata:G.metadata}},time:new Date().toISOString()}}var gC,tz0,hC,oz0;var rz0=D(()=>{gC=["in_progress","requires_action","failed","completed"],tz0=[...gC,"expired"],hC={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},oz0=Object.values(hC)});var Qs=D(()=>{cz0();nz0();pz0();rz0()});function g78(){let $=new az0.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return sz0.default($),$}class ez0{#$=g78();#Z=new Map;getValidator($){let Z=h78($),G=this.#Z.get(Z);if(!G)G=this.#$.compile($),this.#Z.set(Z,G);let X=G;return(Q)=>{if(X(Q))return{valid:!0,data:Q,errorMessage:void 0};return{valid:!1,data:void 0,errorMessage:this.#$.errorsText(X.errors)}}}}function h78($){return JSON.stringify($,(Z,G)=>{if(G&&typeof G==="object"&&!Array.isArray(G))return Object.fromEntries(Object.keys(G).sort().map((X)=>[X,G[X]]));return G})}var az0,sz0,u9;var kq1=D(()=>{az0=f(Sa(),1),sz0=f(m21(),1);u9=new ez0});class uC{innerTransport;constructor($){this.innerTransport=$}get sessionId(){return this.innerTransport.sessionId}async start(){return this.innerTransport.onmessage=($)=>{this.handleIncomingMessage($)},this.innerTransport.onerror=($)=>{this.onerror?.($)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send($){return this.handleOutgoingMessage($)}async close(){return this.innerTransport.close()}async handleOutgoingMessage($){return this.innerTransport.send($)}handleIncomingMessage($){this.onmessage?.($)}isRequest($){return"method"in $&&$.method!==void 0}isResponse($){return"result"in $||"error"in $&&!("method"in $)}onmessage;onerror;onclose}function cC($,...Z){return Z.reduce((G,X)=>X(G),$)}class Vq1{constructor($){this._server=$}requestStream($,Z,G){return this._server.requestStream($,Z,G)}createMessageStream($,Z){let G=this._server.getClientCapabilities();if(($.tools||$.toolChoice)&&!G?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if($.messages.length>0){let X=$.messages[$.messages.length-1],Q=Array.isArray(X.content)?X.content:[X.content],Y=Q.some((U)=>U.type==="tool_result"),J=$.messages.length>1?$.messages[$.messages.length-2]:void 0,W=J?Array.isArray(J.content)?J.content:[J.content]:[],K=W.some((U)=>U.type==="tool_use");if(Y){if(Q.some((U)=>U.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!K)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(K){let U=new Set(W.filter((H)=>H.type==="tool_use").map((H)=>H.id)),F=new Set(Q.filter((H)=>H.type==="tool_result").map((H)=>H.toolUseId));if(U.size!==F.size||![...U].every((H)=>F.has(H)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:$},RB,Z)}elicitInputStream($,Z){let G=this._server.getClientCapabilities(),X=$.mode??"form";switch(X){case"url":{if(!G?.elicitation?.url)throw Error("Client does not support url elicitation.");break}case"form":{if(!G?.elicitation?.form)throw Error("Client does not support form elicitation.");break}}let Q=X==="form"&&$.mode===void 0?{...$,mode:"form"}:$;return this.requestStream({method:"elicitation/create",params:Q},WH,Z)}async getTask($,Z){return this._server.getTask({taskId:$},Z)}async getTaskResult($,Z,G){return this._server.getTaskResult({taskId:$},Z,G)}async listTasks($,Z){return this._server.listTasks($?{cursor:$}:void 0,Z)}async cancelTask($,Z){return this._server.cancelTask({taskId:$},Z)}}var $j0=D(()=>{Q9()});var Sq1;var Zj0=D(()=>{cT1();Q9();i21();OC();$j0();Sq1=class Sq1 extends Rg{constructor($,Z){super(Z);if(this._serverInfo=$,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(zg.options.map((G,X)=>[G,X])),this.isMessageIgnored=(G,X)=>{let Q=this._loggingLevels.get(X);return Q?this.LOG_LEVEL_SEVERITY.get(G)<this.LOG_LEVEL_SEVERITY.get(Q):!1},this._capabilities=Z?.capabilities??{},this._instructions=Z?.instructions,this._jsonSchemaValidator=Z?.jsonSchemaValidator??new pg,this.setRequestHandler(qr,(G)=>this._oninitialize(G)),this.setNotificationHandler(Mr,()=>this.oninitialized?.()),this._capabilities.logging)this.setRequestHandler(QT1,async(G,X)=>{let Q=X.sessionId||X.requestInfo?.headers["mcp-session-id"]||void 0,{level:Y}=G.params,J=zg.safeParse(Y);if(J.success)this._loggingLevels.set(Q,J.data);return{}})}get experimental(){if(!this._experimental)this._experimental={tasks:new Vq1(this)};return this._experimental}registerCapabilities($){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=pr(this._capabilities,$)}setRequestHandler($,Z){let X=q3($)?.method;if(!X)throw Error("Schema is missing a method literal");let Q;if(iG(X)){let J=X;Q=J._zod?.def?.value??J.value}else{let J=X;Q=J._def?.value??J.value}if(typeof Q!=="string")throw Error("Schema method literal must be a string");if(Q==="tools/call"){let J=async(W,K)=>{let U=HG(JH,W);if(!U.success){let O=U.error instanceof Error?U.error.message:String(U.error);throw new V0(y0.InvalidParams,`Invalid tools/call request: ${O}`)}let{params:F}=U.data,H=await Promise.resolve(Z(W,K));if(F.task){let O=HG(vK,H);if(!O.success){let B=O.error instanceof Error?O.error.message:String(O.error);throw new V0(y0.InvalidParams,`Invalid task creation result: ${B}`)}return O.data}let N=HG(k3,H);if(!N.success){let O=N.error instanceof Error?N.error.message:String(N.error);throw new V0(y0.InvalidParams,`Invalid tools/call result: ${O}`)}return N.data};return super.setRequestHandler($,J)}return super.setRequestHandler($,Z)}assertCapabilityForMethod($){switch($){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${$})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${$})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${$})`);break;case"ping":break}}assertNotificationCapability($){switch($){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${$})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${$})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${$})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${$})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability($){if(!this._capabilities)return;switch($){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${$})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${$})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${$})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${$})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${$})`);break;case"ping":case"initialize":break}}assertTaskCapability($){ba(this._clientCapabilities?.tasks?.requests,$,"Client")}assertTaskHandlerCapability($){if(!this._capabilities)return;_a(this._capabilities.tasks?.requests,$,"Server")}async _oninitialize($){let Z=$.params.protocolVersion;return this._clientCapabilities=$.params.capabilities,this._clientVersion=$.params.clientInfo,{protocolVersion:ZH.includes(Z)?Z:$H,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},bK)}async createMessage($,Z){if($.tools||$.toolChoice){if(!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.")}if($.messages.length>0){let G=$.messages[$.messages.length-1],X=Array.isArray(G.content)?G.content:[G.content],Q=X.some((K)=>K.type==="tool_result"),Y=$.messages.length>1?$.messages[$.messages.length-2]:void 0,J=Y?Array.isArray(Y.content)?Y.content:[Y.content]:[],W=J.some((K)=>K.type==="tool_use");if(Q){if(X.some((K)=>K.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!W)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(W){let K=new Set(J.filter((F)=>F.type==="tool_use").map((F)=>F.id)),U=new Set(X.filter((F)=>F.type==="tool_result").map((F)=>F.toolUseId));if(K.size!==U.size||![...K].every((F)=>U.has(F)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}if($.tools)return this.request({method:"sampling/createMessage",params:$},jg,Z);return this.request({method:"sampling/createMessage",params:$},RB,Z)}async elicitInput($,Z){switch($.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");let X=$;return this.request({method:"elicitation/create",params:X},WH,Z)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let X=$.mode==="form"?$:{...$,mode:"form"},Q=await this.request({method:"elicitation/create",params:X},WH,Z);if(Q.action==="accept"&&Q.content&&X.requestedSchema)try{let J=this._jsonSchemaValidator.getValidator(X.requestedSchema)(Q.content);if(!J.valid)throw new V0(y0.InvalidParams,`Elicitation response content does not match requested schema: ${J.errorMessage}`)}catch(Y){if(Y instanceof V0)throw Y;throw new V0(y0.InternalError,`Error validating elicitation response: ${Y instanceof Error?Y.message:String(Y)}`)}return Q}}}createElicitationCompletionNotifier($,Z){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:$}},Z)}async listRoots($,Z){return this.request({method:"roots/list",params:$},KT1,Z)}async sendLoggingMessage($,Z){if(this._capabilities.logging){if(!this.isMessageIgnored($.level,Z))return this.notification({method:"notifications/message",params:$})}}async sendResourceUpdated($){return this.notification({method:"notifications/resources/updated",params:$})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function Cq1($){return!!$&&typeof $==="object"&&Xj0 in $}function Qj0($){return $[Xj0]?.complete}var Xj0,Gj0;var Yj0=D(()=>{Xj0=Symbol.for("mcp.completable");(function($){$.Completable="McpCompletable"})(Gj0||(Gj0={}))});function c78($){let Z=[];if($.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if($.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${$.length})`]};if($.includes(" "))Z.push("Tool name contains spaces, which may cause parsing issues");if($.includes(","))Z.push("Tool name contains commas, which may cause parsing issues");if($.startsWith("-")||$.endsWith("-"))Z.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts");if($.startsWith(".")||$.endsWith("."))Z.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts");if(!u78.test($)){let G=$.split("").filter((X)=>!/[A-Za-z0-9._-]/.test(X)).filter((X,Q,Y)=>Y.indexOf(X)===Q);return Z.push(`Tool name contains invalid characters: ${G.map((X)=>`"${X}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:Z}}return{isValid:!0,warnings:Z}}function l78($,Z){if(Z.length>0){console.warn(`Tool name validation warning for "${$}":`);for(let G of Z)console.warn(` - ${G}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function _q1($){let Z=c78($);return l78($,Z.warnings),Z.isValid}var u78;var Jj0=D(()=>{u78=/^[A-Za-z0-9._-]{1,128}$/});class bq1{constructor($){this._mcpServer=$}registerToolTask($,Z,G){let X={taskSupport:"required",...Z.execution};if(X.taskSupport==="forbidden")throw Error(`Cannot register task-based tool '${$}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool($,Z.title,Z.description,Z.inputSchema,Z.outputSchema,Z.annotations,X,Z._meta,G)}}import{ZodOptional as d78}from"zod";class cK{constructor($,Z){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Sq1($,Z)}get experimental(){if(!this._experimental)this._experimental={tasks:new bq1(this)};return this._experimental}async connect($){return await this.server.connect($)}async close(){await this.server.close()}setToolRequestHandlers(){if(this._toolHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(zC)),this.server.assertCanSetRequestHandler(zH(JH)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(zC,()=>({tools:Object.entries(this._registeredTools).filter(([,$])=>$.enabled).map(([$,Z])=>{let G={name:$,title:Z.title,description:Z.description,inputSchema:(()=>{let X=NC(Z.inputSchema);return X?yT1(X,{strictUnions:!0,pipeStrategy:"input"}):m78})(),annotations:Z.annotations,execution:Z.execution,_meta:Z._meta};if(Z.outputSchema){let X=NC(Z.outputSchema);if(X)G.outputSchema=yT1(X,{strictUnions:!0,pipeStrategy:"output"})}return G})})),this.server.setRequestHandler(JH,async($,Z)=>{try{let G=this._registeredTools[$.params.name];if(!G)throw new V0(y0.InvalidParams,`Tool ${$.params.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Tool ${$.params.name} disabled`);let X=!!$.params.task,Q=G.execution?.taskSupport,Y="createTask"in G.handler;if((Q==="required"||Q==="optional")&&!Y)throw new V0(y0.InternalError,`Tool ${$.params.name} has taskSupport '${Q}' but was not registered with registerToolTask`);if(Q==="required"&&!X)throw new V0(y0.MethodNotFound,`Tool ${$.params.name} requires task augmentation (taskSupport: 'required')`);if(Q==="optional"&&!X&&Y)return await this.handleAutomaticTaskPolling(G,$,Z);let J=await this.validateToolInput(G,$.params.arguments,$.params.name),W=await this.executeToolHandler(G,J,Z);if(X)return W;return await this.validateToolOutput(G,W,$.params.name),W}catch(G){if(G instanceof V0){if(G.code===y0.UrlElicitationRequired)throw G}return this.createToolError(G instanceof Error?G.message:String(G))}}),this._toolHandlersInitialized=!0}createToolError($){return{content:[{type:"text",text:$}],isError:!0}}async validateToolInput($,Z,G){if(!$.inputSchema)return;let Q=NC($.inputSchema)??$.inputSchema,Y=await zr(Q,Z);if(!Y.success){let J="error"in Y?Y.error:"Unknown error",W=jr(J);throw new V0(y0.InvalidParams,`Input validation error: Invalid arguments for tool ${G}: ${W}`)}return Y.data}async validateToolOutput($,Z,G){if(!$.outputSchema)return;if(!("content"in Z))return;if(Z.isError)return;if(!Z.structuredContent)throw new V0(y0.InvalidParams,`Output validation error: Tool ${G} has an output schema but no structured content was provided`);let X=NC($.outputSchema),Q=await zr(X,Z.structuredContent);if(!Q.success){let Y="error"in Q?Q.error:"Unknown error",J=jr(Y);throw new V0(y0.InvalidParams,`Output validation error: Invalid structured content for tool ${G}: ${J}`)}}async executeToolHandler($,Z,G){let X=$.handler;if("createTask"in X){if(!G.taskStore)throw Error("No task store provided.");let Y={...G,taskStore:G.taskStore};if($.inputSchema)return await Promise.resolve(X.createTask(Z,Y));else return await Promise.resolve(X.createTask(Y))}if($.inputSchema)return await Promise.resolve(X(Z,G));else return await Promise.resolve(X(G))}async handleAutomaticTaskPolling($,Z,G){if(!G.taskStore)throw Error("No task store provided for task-capable tool.");let X=await this.validateToolInput($,Z.params.arguments,Z.params.name),Q=$.handler,Y={...G,taskStore:G.taskStore},J=X?await Promise.resolve(Q.createTask(X,Y)):await Promise.resolve(Q.createTask(Y)),W=J.task.taskId,K=J.task,U=K.pollInterval??5000;while(K.status!=="completed"&&K.status!=="failed"&&K.status!=="cancelled"){await new Promise((H)=>setTimeout(H,U));let F=await G.taskStore.getTask(W);if(!F)throw new V0(y0.InternalError,`Task ${W} not found during polling`);K=F}return await G.taskStore.getTaskResult(W)}setCompletionRequestHandler(){if(this._completionHandlerInitialized)return;this.server.assertCanSetRequestHandler(zH(yr)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(yr,async($)=>{switch($.params.ref.type){case"ref/prompt":return tO0($),this.handlePromptCompletion($,$.params.ref);case"ref/resource":return oO0($),this.handleResourceCompletion($,$.params.ref);default:throw new V0(y0.InvalidParams,`Invalid completion reference: ${$.params.ref}`)}}),this._completionHandlerInitialized=!0}async handlePromptCompletion($,Z){let G=this._registeredPrompts[Z.name];if(!G)throw new V0(y0.InvalidParams,`Prompt ${Z.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Prompt ${Z.name} disabled`);if(!G.argsSchema)return Gh;let Q=q3(G.argsSchema)?.[$.params.argument.name];if(!Cq1(Q))return Gh;let Y=Qj0(Q);if(!Y)return Gh;let J=await Y($.params.argument.value,$.params.context);return Kj0(J)}async handleResourceCompletion($,Z){let G=Object.values(this._registeredResourceTemplates).find((Y)=>Y.resourceTemplate.uriTemplate.toString()===Z.uri);if(!G){if(this._registeredResources[Z.uri])return Gh;throw new V0(y0.InvalidParams,`Resource template ${$.params.ref.uri} not found`)}let X=G.resourceTemplate.completeCallback($.params.argument.name);if(!X)return Gh;let Q=await X($.params.argument.value,$.params.context);return Kj0(Q)}setResourceRequestHandlers(){if(this._resourceHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(XH)),this.server.assertCanSetRequestHandler(zH(QH)),this.server.assertCanSetRequestHandler(zH(EC)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(XH,async($,Z)=>{let G=Object.entries(this._registeredResources).filter(([Q,Y])=>Y.enabled).map(([Q,Y])=>({uri:Q,name:Y.name,...Y.metadata})),X=[];for(let Q of Object.values(this._registeredResourceTemplates)){if(!Q.resourceTemplate.listCallback)continue;let Y=await Q.resourceTemplate.listCallback(Z);for(let J of Y.resources)X.push({...Q.metadata,...J})}return{resources:[...G,...X]}}),this.server.setRequestHandler(QH,async()=>{return{resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([Z,G])=>({name:Z,uriTemplate:G.resourceTemplate.uriTemplate.toString(),...G.metadata}))}}),this.server.setRequestHandler(EC,async($,Z)=>{let G=new URL($.params.uri),X=this._registeredResources[G.toString()];if(X){if(!X.enabled)throw new V0(y0.InvalidParams,`Resource ${G} disabled`);return X.readCallback(G,Z)}for(let Q of Object.values(this._registeredResourceTemplates)){let Y=Q.resourceTemplate.uriTemplate.match(G.toString());if(Y)return Q.readCallback(G,Y,Z)}throw new V0(y0.InvalidParams,`Resource ${G} not found`)}),this._resourceHandlersInitialized=!0}setPromptRequestHandlers(){if(this._promptHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(YH)),this.server.assertCanSetRequestHandler(zH(wC)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(YH,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,$])=>$.enabled).map(([$,Z])=>{return{name:$,title:Z.title,description:Z.description,arguments:Z.argsSchema?i78(Z.argsSchema):void 0}})})),this.server.setRequestHandler(wC,async($,Z)=>{let G=this._registeredPrompts[$.params.name];if(!G)throw new V0(y0.InvalidParams,`Prompt ${$.params.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Prompt ${$.params.name} disabled`);if(G.argsSchema){let X=NC(G.argsSchema),Q=await zr(X,$.params.arguments);if(!Q.success){let W="error"in Q?Q.error:"Unknown error",K=jr(W);throw new V0(y0.InvalidParams,`Invalid arguments for prompt ${$.params.name}: ${K}`)}let Y=Q.data,J=G.callback;return await Promise.resolve(J(Y,Z))}else{let X=G.callback;return await Promise.resolve(X(Z))}}),this._promptHandlersInitialized=!0}resource($,Z,...G){let X;if(typeof G[0]==="object")X=G.shift();let Q=G[0];if(typeof Z==="string"){if(this._registeredResources[Z])throw Error(`Resource ${Z} is already registered`);let Y=this._createRegisteredResource($,void 0,Z,X,Q);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Y}else{if(this._registeredResourceTemplates[$])throw Error(`Resource template ${$} is already registered`);let Y=this._createRegisteredResourceTemplate($,void 0,Z,X,Q);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Y}}registerResource($,Z,G,X){if(typeof Z==="string"){if(this._registeredResources[Z])throw Error(`Resource ${Z} is already registered`);let Q=this._createRegisteredResource($,G.title,Z,G,X);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Q}else{if(this._registeredResourceTemplates[$])throw Error(`Resource template ${$} is already registered`);let Q=this._createRegisteredResourceTemplate($,G.title,Z,G,X);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Q}}_createRegisteredResource($,Z,G,X,Q){let Y={name:$,title:Z,metadata:X,readCallback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({uri:null}),update:(J)=>{if(typeof J.uri<"u"&&J.uri!==G){if(delete this._registeredResources[G],J.uri)this._registeredResources[J.uri]=Y}if(typeof J.name<"u")Y.name=J.name;if(typeof J.title<"u")Y.title=J.title;if(typeof J.metadata<"u")Y.metadata=J.metadata;if(typeof J.callback<"u")Y.readCallback=J.callback;if(typeof J.enabled<"u")Y.enabled=J.enabled;this.sendResourceListChanged()}};return this._registeredResources[G]=Y,Y}_createRegisteredResourceTemplate($,Z,G,X,Q){let Y={resourceTemplate:G,title:Z,metadata:X,readCallback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({name:null}),update:(K)=>{if(typeof K.name<"u"&&K.name!==$){if(delete this._registeredResourceTemplates[$],K.name)this._registeredResourceTemplates[K.name]=Y}if(typeof K.title<"u")Y.title=K.title;if(typeof K.template<"u")Y.resourceTemplate=K.template;if(typeof K.metadata<"u")Y.metadata=K.metadata;if(typeof K.callback<"u")Y.readCallback=K.callback;if(typeof K.enabled<"u")Y.enabled=K.enabled;this.sendResourceListChanged()}};this._registeredResourceTemplates[$]=Y;let J=G.uriTemplate.variableNames;if(Array.isArray(J)&&J.some((K)=>!!G.completeCallback(K)))this.setCompletionRequestHandler();return Y}_createRegisteredPrompt($,Z,G,X,Q){let Y={title:Z,description:G,argsSchema:X===void 0?void 0:AB(X),callback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({name:null}),update:(J)=>{if(typeof J.name<"u"&&J.name!==$){if(delete this._registeredPrompts[$],J.name)this._registeredPrompts[J.name]=Y}if(typeof J.title<"u")Y.title=J.title;if(typeof J.description<"u")Y.description=J.description;if(typeof J.argsSchema<"u")Y.argsSchema=AB(J.argsSchema);if(typeof J.callback<"u")Y.callback=J.callback;if(typeof J.enabled<"u")Y.enabled=J.enabled;this.sendPromptListChanged()}};if(this._registeredPrompts[$]=Y,X){if(Object.values(X).some((W)=>{let K=W instanceof d78?W._def?.innerType:W;return Cq1(K)}))this.setCompletionRequestHandler()}return Y}_createRegisteredTool($,Z,G,X,Q,Y,J,W,K){_q1($);let U={title:Z,description:G,inputSchema:Wj0(X),outputSchema:Wj0(Q),annotations:Y,execution:J,_meta:W,handler:K,enabled:!0,disable:()=>U.update({enabled:!1}),enable:()=>U.update({enabled:!0}),remove:()=>U.update({name:null}),update:(F)=>{if(typeof F.name<"u"&&F.name!==$){if(typeof F.name==="string")_q1(F.name);if(delete this._registeredTools[$],F.name)this._registeredTools[F.name]=U}if(typeof F.title<"u")U.title=F.title;if(typeof F.description<"u")U.description=F.description;if(typeof F.paramsSchema<"u")U.inputSchema=AB(F.paramsSchema);if(typeof F.outputSchema<"u")U.outputSchema=AB(F.outputSchema);if(typeof F.callback<"u")U.handler=F.callback;if(typeof F.annotations<"u")U.annotations=F.annotations;if(typeof F._meta<"u")U._meta=F._meta;if(typeof F.enabled<"u")U.enabled=F.enabled;this.sendToolListChanged()}};return this._registeredTools[$]=U,this.setToolRequestHandlers(),this.sendToolListChanged(),U}tool($,...Z){if(this._registeredTools[$])throw Error(`Tool ${$} is already registered`);let G,X,Q,Y;if(typeof Z[0]==="string")G=Z.shift();if(Z.length>1){let W=Z[0];if(vq1(W)){if(X=Z.shift(),Z.length>1&&typeof Z[0]==="object"&&Z[0]!==null&&!vq1(Z[0]))Y=Z.shift()}else if(typeof W==="object"&&W!==null){if(Object.values(W).some((K)=>typeof K==="object"&&K!==null))throw Error(`Tool ${$} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);Y=Z.shift()}}let J=Z[0];return this._createRegisteredTool($,void 0,G,X,Q,Y,{taskSupport:"forbidden"},void 0,J)}registerTool($,Z,G){if(this._registeredTools[$])throw Error(`Tool ${$} is already registered`);let{title:X,description:Q,inputSchema:Y,outputSchema:J,annotations:W,_meta:K}=Z;return this._createRegisteredTool($,X,Q,Y,J,W,{taskSupport:"forbidden"},K,G)}prompt($,...Z){if(this._registeredPrompts[$])throw Error(`Prompt ${$} is already registered`);let G;if(typeof Z[0]==="string")G=Z.shift();let X;if(Z.length>1)X=Z.shift();let Q=Z[0],Y=this._createRegisteredPrompt($,void 0,G,X,Q);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),Y}registerPrompt($,Z,G){if(this._registeredPrompts[$])throw Error(`Prompt ${$} is already registered`);let{title:X,description:Q,argsSchema:Y}=Z,J=this._createRegisteredPrompt($,X,Q,Y,G);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),J}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage($,Z){return this.server.sendLoggingMessage($,Z)}sendResourceListChanged(){if(this.isConnected())this.server.sendResourceListChanged()}sendToolListChanged(){if(this.isConnected())this.server.sendToolListChanged()}sendPromptListChanged(){if(this.isConnected())this.server.sendPromptListChanged()}}function Uj0($){return $!==null&&typeof $==="object"&&"parse"in $&&typeof $.parse==="function"&&"safeParse"in $&&typeof $.safeParse==="function"}function Fj0($){return"_def"in $||"_zod"in $||Uj0($)}function vq1($){if(typeof $!=="object"||$===null)return!1;if(Fj0($))return!1;if(Object.keys($).length===0)return!0;return Object.values($).some(Uj0)}function Wj0($){if(!$)return;if(vq1($))return AB($);if(!Fj0($))throw Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return $}function i78($){let Z=q3($);if(!Z)return[];return Object.entries(Z).map(([G,X])=>{let Q=CO0(X),Y=_O0(X);return{name:G,description:Q,required:!Y}})}function zH($){let G=q3($)?.method;if(!G)throw Error("Schema is missing a method literal");let X=Pr(G);if(typeof X==="string")return X;throw Error("Schema method literal must be a string")}function Kj0($){return{completion:{values:$.slice(0,100),total:$.length,hasMore:$.length>100}}}var m78,Gh;var Xh=D(()=>{Zj0();OC();uT1();Q9();Yj0();Jj0();m78={type:"object",properties:{}};Gh={completion:{values:[],hasMore:!1}}});function lK($,Z,G){let X=G?.capabilities??$.getServerCapabilities(),Q=G?.instructions??$.getInstructions(),Y=new cK(Z,{capabilities:X,instructions:Q,jsonSchemaValidator:u9});if(Y.server.setRequestHandler(zC,async(J)=>{let W=await $.listTools(J.params);return{...W,tools:W.tools.map(({outputSchema:K,...U})=>U)}}),Y.server.setRequestHandler(JH,(J)=>$.callTool(J.params,void 0,G?.toolCallTimeoutMs?{timeout:G.toolCallTimeoutMs}:void 0)),X?.resources)Y.server.setRequestHandler(XH,(J)=>$.listResources(J.params)),Y.server.setRequestHandler(EC,(J)=>$.readResource(J.params)),Y.server.setRequestHandler(QH,(J)=>$.listResourceTemplates(J.params));if(X?.prompts)Y.server.setRequestHandler(YH,(J)=>$.listPrompts(J.params)),Y.server.setRequestHandler(wC,(J)=>$.getPrompt({...J.params,arguments:J.params.arguments??{}}));return Y}var Hj0=D(()=>{Xh();kq1();Q9()});class Nj0{clientQueue=[];serverQueue=[];clientClosed=!1;serverClosed=!1;clientFlushScheduled=!1;serverFlushScheduled=!1;clientTransport;serverTransport;registerTransports($,Z){this.clientTransport=$,this.serverTransport=Z,$.setOppositeTransport(Z),Z.setOppositeTransport($)}getQueue($){return $==="client"?this.clientQueue:this.serverQueue}isClosed($){return $==="client"?this.clientClosed:this.serverClosed}close($){if($==="client")this.clientClosed=!0,this.clientQueue=[];else this.serverClosed=!0,this.serverQueue=[]}enqueue($,Z){if(this.isClosed($))return;let G=this.getQueue($);if(G.length>=1e4)throw Error(`BridgeTransport: ${$} queue overflow (max 10000 messages). The receiver may not be processing messages fast enough.`);if(G.push(Z),$==="client"&&!this.clientFlushScheduled)this.scheduleFlush("client");else if($==="server"&&!this.serverFlushScheduled)this.scheduleFlush("server")}scheduleFlush($){if($==="client")this.clientFlushScheduled=!0;else this.serverFlushScheduled=!0;queueMicrotask(()=>{this.flush($)})}flush($){let Z=this.getQueue($);if($==="client")this.clientFlushScheduled=!1;else this.serverFlushScheduled=!1;if(this.isClosed($)){Z.length=0;return}let G=$==="client"?this.clientTransport:this.serverTransport;if(!G)return;if(!G.started)return;let X=Z.splice(0);for(let Q of X)G.deliverMessage(Q)}closeBoth(){this.close("client"),this.close("server")}}class fq1{channel;side;started=!1;closed=!1;_onmessage;_onerror;_onclose;constructor($,Z){this.channel=$,this.side=Z}get onmessage(){return this._onmessage}set onmessage($){if(this._onmessage=$,$&&this.started&&!this.closed)this.channel.flush(this.side)}get onerror(){return this._onerror}set onerror($){this._onerror=$}get onclose(){return this._onclose}set onclose($){this._onclose=$}async start(){if(this.started)throw Error(`${this.side==="client"?"BridgeClientTransport":"BridgeServerTransport"} already started! If using Client/Server class, note that connect() calls start() automatically.`);if(this.started=!0,this._onmessage&&!this.closed)this.channel.flush(this.side)}async send($){if(this.closed)return Promise.resolve();let Z=this.side==="client"?"server":"client";return this.channel.enqueue(Z,$),Promise.resolve()}async close(){if(!this.started||this.closed)return;this.closed=!0,this.channel.close(this.side);let $=this.getOppositeTransport();if($&&!$.closed)$._onclose?.();this._onclose?.()}deliverMessage($){if(!this.started||this.channel.isClosed(this.side))return;try{this._onmessage?.($)}catch(Z){this._onerror?.(Z)}}}function Qh(){let $=new Nj0,Z=new lC($),G=new dC($);return $.registerTransports(Z,G),{client:Z,server:G,channel:$}}var lC,dC;var Oj0=D(()=>{lC=class lC extends fq1{oppositeTransport;constructor($){super($,"client")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport($){if(!($ instanceof dC))throw Error("Opposite transport must be BridgeServerTransport");this.oppositeTransport=$}async start(){await super.start()}async send($){await super.send($)}};dC=class dC extends fq1{oppositeTransport;constructor($){super($,"server")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport($){if(!($ instanceof lC))throw Error("Opposite transport must be BridgeClientTransport");this.oppositeTransport=$}async start(){await super.start()}async send($){await super.send($)}}});var nX=D(()=>{kq1();Hj0();Oj0()});var Bj0=D(()=>{nX()});var Dj0=D(()=>{nX()});function Yh($,Z,G,X){for(let Q of G){let Y=$.find((J)=>J.modelId===Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}for(let Q of G){let Y=$.find((J)=>J.modelId.includes(Q));if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}if(X){let Q=$.find(X);if(Q)return{keyId:Z,modelId:Q.modelId,title:Q.title}}return null}function xq1($,Z){let G={chat:{fast:null,smart:null,thinking:null},image:null,webResearch:null};for(let X of $){let Q=Z[X.id]??[],Y=X.providerId;if(!G.chat.fast)G.chat.fast=Yh(Q,X.id,Lj0[Y]??[]);if(!G.chat.smart)G.chat.smart=Yh(Q,X.id,Ej0[Y]??[]);if(!G.chat.thinking)G.chat.thinking=Yh(Q,X.id,wj0[Y]??[]);if(!G.image)G.image=Yh(Q,X.id,zj0[Y]??[],(J)=>J.capabilities?.includes("image")===!0);if(!G.webResearch)G.webResearch=Yh(Q,X.id,jj0[Y]??[],(J)=>{let W=J.modelId.toLowerCase().replace(/[^a-z0-9]/g,"");return W.includes("sonar")||W.includes("deepresearch")})}return G}var Lj0,Ej0,wj0,zj0,jj0;var Pj0=D(()=>{Lj0={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],google:["gemini-2.5-flash","gemini-3-flash"],"claude-code":["claude-code:haiku","claude-code:sonnet"],codex:["codex:gpt-5.4-mini"]},Ej0={anthropic:["claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude"],google:["gemini-3-pro","gemini-3-flash"],"claude-code":["claude-code:sonnet"],codex:["codex:gpt-5.4"]},wj0={anthropic:["claude-fable-5","claude-opus-4-8","claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-fable-5","anthropic/claude-opus-4.8","anthropic/claude-sonnet-4.6:extended","anthropic/claude-sonnet-4.6","google/gemini-3-pro"],deco:["anthropic/claude-fable","anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet"],google:["gemini-3-pro"],"claude-code":["claude-code:fable","claude-code:sonnet"],codex:["codex:gpt-5.5"]},zj0={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],google:["gemini-2.0-flash-image"]},jj0={openrouter:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"],deco:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"]}});var Aj0=D(()=>{ta()});function Jh($){if(!$)return;let Z={};for(let G in $){let X=$[G];if(typeof X==="object"&&X!==null){let Q={};for(let Y of n78)if(Y in X)Q[Y]=X[Y];Z[G]=Q}}return Object.keys(Z).length>0?Z:void 0}var n78;var Rj0=D(()=>{n78=["usage","cost","model"]});var _8=D(()=>{yI1();hz0();Qs();Kq1();Bj0();Dj0();eF();Pj0();Aj0();Rj0();sa()});import{z as Ij0}from"zod";function OJ(){return uX()===null}function Ys($,Z){return $===K4.DEV_ASSETS(Z)}function mC($,Z){let G=Nq1(Z,$),X=new Date().toISOString();return{id:G.id??K4.DEV_ASSETS($),title:G.title,description:G.description??null,icon:G.icon??null,app_name:G.app_name??null,app_id:G.app_id??null,organization_id:$,created_by:"system",created_at:X,updated_at:X,connection_type:G.connection_type,connection_url:G.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:G.metadata??null,tools:p78,bindings:["OBJECT_STORAGE"],status:"active"}}var p78;var iC=D(()=>{zB();Fg();_8();p78=jB.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:Ij0.toJSONSchema($.inputSchema),outputSchema:Ij0.toJSONSchema($.outputSchema)}))});function qj0($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"&&$!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var Tj0="https://studio.decocms.com/org/deco/registry/mcp";var yq1=($,Z,G)=>{return(X,Q)=>{let Y=-1;return J(0);async function J(W){if(W<=Y)throw Error("next() called multiple times");Y=W;let K,U=!1,F;if($[W])F=$[W][0][0],X.req.routeIndex=W;else F=W===$.length&&Q||void 0;if(F)try{K=await F(X,()=>J(W+1))}catch(H){if(H instanceof Error&&Z)X.error=H,K=await Z(H,X),U=!0;else throw H}else if(X.finalized===!1&&G)K=await G(X);if(K&&(X.finalized===!1||U))X.res=K;return X}}};var Mj0=()=>{};var a$;var BJ=D(()=>{a$=class extends Error{res;status;constructor($=500,Z){super(Z?.message,{cause:Z?.cause});this.res=Z?.res,this.status=$}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var kj0;var Vj0=D(()=>{kj0=Symbol()});async function t78($,Z){let G=await $.formData();if(G)return o78(G,Z);return{}}function o78($,Z){let G=Object.create(null);if($.forEach((X,Q)=>{if(!(Z.all||Q.endsWith("[]")))G[Q]=X;else r78(G,Q,X)}),Z.dot)Object.entries(G).forEach(([X,Q])=>{if(X.includes("."))a78(G,X,Q),delete G[X]});return G}var Sj0=async($,Z=Object.create(null))=>{let{all:G=!1,dot:X=!1}=Z,Y=($ instanceof Js?$.raw.headers:$.headers).get("Content-Type");if(Y?.startsWith("multipart/form-data")||Y?.startsWith("application/x-www-form-urlencoded"))return t78($,{all:G,dot:X});return{}},r78=($,Z,G)=>{if($[Z]!==void 0)if(Array.isArray($[Z]))$[Z].push(G);else $[Z]=[$[Z],G];else if(!Z.endsWith("[]"))$[Z]=G;else $[Z]=[G]},a78=($,Z,G)=>{if(/(?:^|\.)__proto__\./.test(Z))return;let X=$,Q=Z.split(".");Q.forEach((Y,J)=>{if(J===Q.length-1)X[Y]=G;else{if(!X[Y]||typeof X[Y]!=="object"||Array.isArray(X[Y])||X[Y]instanceof File)X[Y]=Object.create(null);X=X[Y]}})};var Cj0=D(()=>{gq1()});var uq1=($)=>{let Z=$.split("/");if(Z[0]==="")Z.shift();return Z},_j0=($)=>{let{groups:Z,path:G}=s78($),X=uq1(G);return e78(X,Z)},s78=($)=>{let Z=[];return $=$.replace(/\{[^}]+\}/g,(G,X)=>{let Q=`@${X}`;return Z.push([Q,G]),Q}),{groups:Z,path:$}},e78=($,Z)=>{for(let G=Z.length-1;G>=0;G--){let[X]=Z[G];for(let Q=$.length-1;Q>=0;Q--)if($[Q].includes(X)){$[Q]=$[Q].replace(X,Z[G][1]);break}}return $},Ws,bj0=($,Z)=>{if($==="*")return"*";let G=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(G){let X=`${$}#${Z}`;if(!Ws[X])if(G[2])Ws[X]=Z&&Z[0]!==":"&&Z[0]!=="*"?[X,G[1],new RegExp(`^${G[2]}(?=/${Z})`)]:[$,G[1],new RegExp(`^${G[2]}$`)];else Ws[X]=[$,G[1],!0];return Ws[X]}return null},nC=($,Z)=>{try{return Z($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(G)=>{try{return Z(G)}catch{return G}})}},vj0=($)=>nC($,decodeURI),cq1=($)=>{let Z=$.url,G=Z.indexOf("/",Z.indexOf(":")+4),X=G;for(;X<Z.length;X++){let Q=Z.charCodeAt(X);if(Q===37){let Y=Z.indexOf("?",X),J=Z.indexOf("#",X),W=Y===-1?J===-1?void 0:J:J===-1?Y:Math.min(Y,J),K=Z.slice(G,W);return vj0(K.includes("%25")?K.replace(/%25/g,"%2525"):K)}else if(Q===63||Q===35)break}return Z.slice(G,X)},fj0=($)=>{let Z=cq1($);return Z.length>1&&Z.at(-1)==="/"?Z.slice(0,-1):Z},fB=($,Z,...G)=>{if(G.length)Z=fB(Z,...G);return`${$?.[0]==="/"?"":"/"}${$}${Z==="/"?"":`${$?.at(-1)==="/"?"":"/"}${Z?.[0]==="/"?Z.slice(1):Z}`}`},Ks=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let Z=$.split("/"),G=[],X="";return Z.forEach((Q)=>{if(Q!==""&&!/\:/.test(Q))X+="/"+Q;else if(/\:/.test(Q))if(/\?/.test(Q)){if(G.length===0&&X==="")G.push("/");else G.push(X);let Y=Q.replace("?","");X+="/"+Y,G.push(X)}else X+="/"+Q}),G.filter((Q,Y,J)=>J.indexOf(Q)===Y)},hq1=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?nC($,Wh):$},xj0=($,Z,G)=>{let X;if(!G&&Z&&!/[%+]/.test(Z)){let J=$.indexOf("?",8);if(J===-1)return;if(!$.startsWith(Z,J+1))J=$.indexOf(`&${Z}`,J+1);while(J!==-1){let W=$.charCodeAt(J+Z.length+1);if(W===61){let K=J+Z.length+2,U=$.indexOf("&",K);return hq1($.slice(K,U===-1?void 0:U))}else if(W==38||isNaN(W))return"";J=$.indexOf(`&${Z}`,J+1)}if(X=/[%+]/.test($),!X)return}let Q={};X??=/[%+]/.test($);let Y=$.indexOf("?",8);while(Y!==-1){let J=$.indexOf("&",Y+1),W=$.indexOf("=",Y);if(W>J&&J!==-1)W=-1;let K=$.slice(Y+1,W===-1?J===-1?void 0:J:W);if(X)K=hq1(K);if(Y=J,K==="")continue;let U;if(W===-1)U="";else if(U=$.slice(W+1,J===-1?void 0:J),X)U=hq1(U);if(G){if(!(Q[K]&&Array.isArray(Q[K])))Q[K]=[];Q[K].push(U)}else Q[K]??=U}return Z?Q[Z]:Q},yj0,gj0=($,Z)=>{return xj0($,Z,!0)},Wh;var jH=D(()=>{Ws={},yj0=xj0,Wh=decodeURIComponent});var hj0=($)=>nC($,Wh),Js;var gq1=D(()=>{BJ();Vj0();Cj0();jH();Js=class{raw;#$;#Z;routeIndex=0;path;bodyCache={};constructor($,Z="/",G=[[]]){this.raw=$,this.path=Z,this.#Z=G,this.#$={}}param($){return $?this.#G($):this.#Y()}#G($){let Z=this.#Z[0][this.routeIndex][1][$],G=this.#Q(Z);return G&&/\%/.test(G)?hj0(G):G}#Y(){let $={},Z=Object.keys(this.#Z[0][this.routeIndex][1]);for(let G of Z){let X=this.#Q(this.#Z[0][this.routeIndex][1][G]);if(X!==void 0)$[G]=/\%/.test(X)?hj0(X):X}return $}#Q($){return this.#Z[1]?this.#Z[1][$]:$}query($){return yj0(this.url,$)}queries($){return gj0(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let Z={};return this.raw.headers.forEach((G,X)=>{Z[X]=G}),Z}async parseBody($){return Sj0(this,$)}#X=($)=>{let{bodyCache:Z,raw:G}=this,X=Z[$];if(X)return X;let Q=Object.keys(Z)[0];if(Q)return Z[Q].then((Y)=>{if(Q==="json")Y=JSON.stringify(Y);return new Response(Y)[$]()});return Z[$]=G[$]()};json(){return this.#X("text").then(($)=>JSON.parse($))}text(){return this.#X("text")}arrayBuffer(){return this.#X("arrayBuffer")}blob(){return this.#X("blob")}formData(){return this.#X("formData")}addValidatedData($,Z){this.#$[$]=Z}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[kj0](){return this.#Z}get matchedRoutes(){return this.#Z[0].map(([[,$]])=>$)}get routePath(){return this.#Z[0].map(([[,$]])=>$)[this.routeIndex].path}}});var Us,uj0=($,Z)=>{let G=new String($);return G.isEscaped=!0,G.callbacks=Z,G},Kh=async($,Z,G,X,Q)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let Y=$.callbacks;if(!Y?.length)return Promise.resolve($);if(Q)Q[0]+=$;else Q=[$];let J=Promise.all(Y.map((W)=>W({phase:Z,buffer:Q,context:X}))).then((W)=>Promise.all(W.filter(Boolean).map((K)=>Kh(K,Z,!1,X,Q))).then(()=>Q[0]));if(G)return uj0(await J,Y);else return J};var Fs=D(()=>{Us={Stringify:1,BeforeStream:2,Stream:3}});var cj0="text/plain; charset=UTF-8",lq1=($,Z)=>{return{"Content-Type":$,...Z}},Uh=($,Z)=>new Response($,Z),lj0=class{#$;#Z;env={};#G;finalized=!1;error;#Y;#Q;#X;#J;#W;#K;#F;#H;#N;constructor($,Z){if(this.#$=$,Z)this.#Q=Z.executionCtx,this.env=Z.env,this.#K=Z.notFoundHandler,this.#N=Z.path,this.#H=Z.matchResult}get req(){return this.#Z??=new Js(this.#$,this.#N,this.#H),this.#Z}get event(){if(this.#Q&&"respondWith"in this.#Q)return this.#Q;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Q)return this.#Q;else throw Error("This context has no ExecutionContext")}get res(){return this.#X||=Uh(null,{headers:this.#F??=new Headers})}set res($){if(this.#X&&$){$=Uh($.body,$);for(let[Z,G]of this.#X.headers.entries()){if(Z==="content-type")continue;if(Z==="set-cookie"){let X=this.#X.headers.getSetCookie();$.headers.delete("set-cookie");for(let Q of X)$.headers.append("set-cookie",Q)}else $.headers.set(Z,G)}}this.#X=$,this.finalized=!0}render=(...$)=>{return this.#W??=(Z)=>this.html(Z),this.#W(...$)};setLayout=($)=>this.#J=$;getLayout=()=>this.#J;setRenderer=($)=>{this.#W=$};header=($,Z,G)=>{if(this.finalized)this.#X=Uh(this.#X.body,this.#X);let X=this.#X?this.#X.headers:this.#F??=new Headers;if(Z===void 0)X.delete($);else if(G?.append)X.append($,Z);else X.set($,Z)};status=($)=>{this.#Y=$};set=($,Z)=>{this.#G??=new Map,this.#G.set($,Z)};get=($)=>{return this.#G?this.#G.get($):void 0};get var(){if(!this.#G)return{};return Object.fromEntries(this.#G)}#U($,Z,G){let X=this.#X?new Headers(this.#X.headers):this.#F??new Headers;if(typeof Z==="object"&&"headers"in Z){let Y=Z.headers instanceof Headers?Z.headers:new Headers(Z.headers);for(let[J,W]of Y)if(J.toLowerCase()==="set-cookie")X.append(J,W);else X.set(J,W)}if(G)for(let[Y,J]of Object.entries(G))if(typeof J==="string")X.set(Y,J);else{X.delete(Y);for(let W of J)X.append(Y,W)}let Q=typeof Z==="number"?Z:Z?.status??this.#Y;return Uh($,{status:Q,headers:X})}newResponse=(...$)=>this.#U(...$);body=($,Z,G)=>this.#U($,Z,G);text=($,Z,G)=>{return!this.#F&&!this.#Y&&!Z&&!G&&!this.finalized?new Response($):this.#U($,Z,lq1(cj0,G))};json=($,Z,G)=>{return this.#U(JSON.stringify($),Z,lq1("application/json",G))};html=($,Z,G)=>{let X=(Q)=>this.#U(Q,Z,lq1("text/html; charset=UTF-8",G));return typeof $==="object"?Kh($,Us.Stringify,!1,{}).then(X):X($)};redirect=($,Z)=>{let G=String($);return this.header("Location",!/[^\x00-\xFF]/.test(G)?G:encodeURI(G)),this.newResponse(null,Z??302)};notFound=()=>{return this.#K??=()=>Uh(),this.#K(this)}};var Hs=D(()=>{gq1();Fs()});var p6="ALL",dj0="all",mj0,Ns="Can not add a route since the matcher is already built.",Os;var PH=D(()=>{mj0=["get","post","put","delete","options","patch"],Os=class extends Error{}});var dq1="__COMPOSED_HANDLER";var mq1=()=>{};var $G8=($)=>{return $.text("404 Not Found",404)},ij0=($,Z)=>{if("getResponse"in $){let G=$.getResponse();return Z.newResponse(G.body,G)}return console.error($),Z.text("Internal Server Error",500)},nj0=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(Z={}){[...mj0,dj0].forEach((Y)=>{this[Y]=(J,...W)=>{if(typeof J==="string")this.#$=J;else this.#Y(Y,this.#$,J);return W.forEach((K)=>{this.#Y(Y,this.#$,K)}),this}}),this.on=(Y,J,...W)=>{for(let K of[J].flat()){this.#$=K;for(let U of[Y].flat())W.map((F)=>{this.#Y(U.toUpperCase(),this.#$,F)})}return this},this.use=(Y,...J)=>{if(typeof Y==="string")this.#$=Y;else this.#$="*",J.unshift(Y);return J.forEach((W)=>{this.#Y(p6,this.#$,W)}),this};let{strict:X,...Q}=Z;Object.assign(this,Q),this.getPath=X??!0?Z.getPath??cq1:fj0}#Z(){let Z=new $({router:this.router,getPath:this.getPath});return Z.errorHandler=this.errorHandler,Z.#G=this.#G,Z.routes=this.routes,Z}#G=$G8;errorHandler=ij0;route(Z,G){let X=this.basePath(Z);return G.routes.map((Q)=>{let Y;if(G.errorHandler===ij0)Y=Q.handler;else Y=async(J,W)=>(await yq1([],G.errorHandler)(J,()=>Q.handler(J,W))).res,Y[dq1]=Q.handler;X.#Y(Q.method,Q.path,Y)}),this}basePath(Z){let G=this.#Z();return G._basePath=fB(this._basePath,Z),G}onError=(Z)=>{return this.errorHandler=Z,this};notFound=(Z)=>{return this.#G=Z,this};mount(Z,G,X){let Q,Y;if(X)if(typeof X==="function")Y=X;else if(Y=X.optionHandler,X.replaceRequest===!1)Q=(K)=>K;else Q=X.replaceRequest;let J=Y?(K)=>{let U=Y(K);return Array.isArray(U)?U:[U]}:(K)=>{let U=void 0;try{U=K.executionCtx}catch{}return[K.env,U]};Q||=(()=>{let K=fB(this._basePath,Z),U=K==="/"?0:K.length;return(F)=>{let H=new URL(F.url);return H.pathname=H.pathname.slice(U)||"/",new Request(H,F)}})();let W=async(K,U)=>{let F=await G(Q(K.req.raw),...J(K));if(F)return F;await U()};return this.#Y(p6,fB(Z,"*"),W),this}#Y(Z,G,X){Z=Z.toUpperCase(),G=fB(this._basePath,G);let Q={basePath:this._basePath,path:G,method:Z,handler:X};this.router.add(Z,G,[X,Q]),this.routes.push(Q)}#Q(Z,G){if(Z instanceof Error)return this.errorHandler(Z,G);throw Z}#X(Z,G,X,Q){if(Q==="HEAD")return(async()=>new Response(null,await this.#X(Z,G,X,"GET")))();let Y=this.getPath(Z,{env:X}),J=this.router.match(Q,Y),W=new lj0(Z,{path:Y,matchResult:J,env:X,executionCtx:G,notFoundHandler:this.#G});if(J[0].length===1){let U;try{U=J[0][0][0][0](W,async()=>{W.res=await this.#G(W)})}catch(F){return this.#Q(F,W)}return U instanceof Promise?U.then((F)=>F||(W.finalized?W.res:this.#G(W))).catch((F)=>this.#Q(F,W)):U??this.#G(W)}let K=yq1(J[0],this.errorHandler,this.#G);return(async()=>{try{let U=await K(W);if(!U.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return U.res}catch(U){return this.#Q(U,W)}})()}fetch=(Z,...G)=>{return this.#X(Z,G[1],G[0],Z.method)};request=(Z,G,X,Q)=>{if(Z instanceof Request)return this.fetch(G?new Request(Z,G):Z,X,Q);return Z=Z.toString(),this.fetch(new Request(/^https?:\/\//.test(Z)?Z:`http://localhost${fB("/",Z)}`,G),X,Q)};fire=()=>{addEventListener("fetch",(Z)=>{Z.respondWith(this.#X(Z.request,Z,void 0,Z.request.method))})}};var pj0=D(()=>{Mj0();Hs();PH();mq1();jH()});function Bs($,Z){let G=this.buildAllMatchers(),X=(Q,Y)=>{let J=G[Q]||G[p6],W=J[2][Y];if(W)return W;let K=Y.match(J[0]);if(!K)return[[],Fh];let U=K.indexOf("",1);return[J[1][U],K]};return this.match=X,X($,Z)}var Fh;var iq1=D(()=>{PH();Fh=[]});function GG8($,Z){if($.length===1)return Z.length===1?$<Z?-1:1:-1;if(Z.length===1)return 1;if($===Hh||$===Nh)return 1;else if(Z===Hh||Z===Nh)return-1;if($===Ds)return 1;else if(Z===Ds)return-1;return $.length===Z.length?$<Z?-1:1:Z.length-$.length}var Ds="[^/]+",Hh=".*",Nh="(?:|/.*)",xB,ZG8,tj0=class ${#$;#Z;#G=Object.create(null);insert(Z,G,X,Q,Y){if(Z.length===0){if(this.#$!==void 0)throw xB;if(Y)return;this.#$=G;return}let[J,...W]=Z,K=J==="*"?W.length===0?["","",Hh]:["","",Ds]:J==="/*"?["","",Nh]:J.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),U;if(K){let F=K[1],H=K[2]||Ds;if(F&&K[2]){if(H===".*")throw xB;if(H=H.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(H))throw xB}if(U=this.#G[H],!U){if(Object.keys(this.#G).some((N)=>N!==Hh&&N!==Nh))throw xB;if(Y)return;if(U=this.#G[H]=new $,F!=="")U.#Z=Q.varIndex++}if(!Y&&F!=="")X.push([F,U.#Z])}else if(U=this.#G[J],!U){if(Object.keys(this.#G).some((F)=>F.length>1&&F!==Hh&&F!==Nh))throw xB;if(Y)return;U=this.#G[J]=new $}U.insert(W,G,X,Q,Y)}buildRegExpStr(){let G=Object.keys(this.#G).sort(GG8).map((X)=>{let Q=this.#G[X];return(typeof Q.#Z==="number"?`(${X})@${Q.#Z}`:ZG8.has(X)?`\\${X}`:X)+Q.buildRegExpStr()});if(typeof this.#$==="number")G.unshift(`#${this.#$}`);if(G.length===0)return"";if(G.length===1)return G[0];return"(?:"+G.join("|")+")"}};var nq1=D(()=>{xB=Symbol(),ZG8=new Set(".\\+*[^]$()")});var oj0=class{#$={varIndex:0};#Z=new tj0;insert($,Z,G){let X=[],Q=[];for(let J=0;;){let W=!1;if($=$.replace(/\{[^}]+\}/g,(K)=>{let U=`@\\${J}`;return Q[J]=[U,K],J++,W=!0,U}),!W)break}let Y=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let J=Q.length-1;J>=0;J--){let[W]=Q[J];for(let K=Y.length-1;K>=0;K--)if(Y[K].indexOf(W)!==-1){Y[K]=Y[K].replace(W,Q[J][1]);break}}return this.#Z.insert(Y,Z,X,this.#$,G),X}buildRegExp(){let $=this.#Z.buildRegExpStr();if($==="")return[/^$/,[],[]];let Z=0,G=[],X=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Q,Y,J)=>{if(Y!==void 0)return G[++Z]=Number(Y),"$()";if(J!==void 0)return X[Number(J)]=++Z,"";return""}),[new RegExp(`^${$}`),G,X]}};var rj0=D(()=>{nq1()});function sj0($){return aj0[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(Z,G)=>G?`\\${G}`:"(?:|/.*)")}$`)}function QG8(){aj0=Object.create(null)}function YG8($){let Z=new oj0,G=[];if($.length===0)return XG8;let X=$.map((U)=>[!/\*|\/:/.test(U[0]),...U]).sort(([U,F],[H,N])=>U?1:H?-1:F.length-N.length),Q=Object.create(null);for(let U=0,F=-1,H=X.length;U<H;U++){let[N,O,B]=X[U];if(N)Q[O]=[B.map(([w])=>[w,Object.create(null)]),Fh];else F++;let L;try{L=Z.insert(O,F,N)}catch(w){throw w===xB?new Os(O):w}if(N)continue;G[F]=B.map(([w,z])=>{let j=Object.create(null);z-=1;for(;z>=0;z--){let[P,R]=L[z];j[P]=R}return[w,j]})}let[Y,J,W]=Z.buildRegExp();for(let U=0,F=G.length;U<F;U++)for(let H=0,N=G[U].length;H<N;H++){let O=G[U][H]?.[1];if(!O)continue;let B=Object.keys(O);for(let L=0,w=B.length;L<w;L++)O[B[L]]=W[O[B[L]]]}let K=[];for(let U in J)K[U]=G[J[U]];return[Y,K,Q]}function pC($,Z){if(!$)return;for(let G of Object.keys($).sort((X,Q)=>Q.length-X.length))if(sj0(G).test(Z))return[...$[G]];return}var XG8,aj0,Ls=class{name="RegExpRouter";#$;#Z;constructor(){this.#$={[p6]:Object.create(null)},this.#Z={[p6]:Object.create(null)}}add($,Z,G){let X=this.#$,Q=this.#Z;if(!X||!Q)throw Error(Ns);if(!X[$])[X,Q].forEach((W)=>{W[$]=Object.create(null),Object.keys(W[p6]).forEach((K)=>{W[$][K]=[...W[p6][K]]})});if(Z==="/*")Z="*";let Y=(Z.match(/\/:/g)||[]).length;if(/\*$/.test(Z)){let W=sj0(Z);if($===p6)Object.keys(X).forEach((K)=>{X[K][Z]||=pC(X[K],Z)||pC(X[p6],Z)||[]});else X[$][Z]||=pC(X[$],Z)||pC(X[p6],Z)||[];Object.keys(X).forEach((K)=>{if($===p6||$===K)Object.keys(X[K]).forEach((U)=>{W.test(U)&&X[K][U].push([G,Y])})}),Object.keys(Q).forEach((K)=>{if($===p6||$===K)Object.keys(Q[K]).forEach((U)=>W.test(U)&&Q[K][U].push([G,Y]))});return}let J=Ks(Z)||[Z];for(let W=0,K=J.length;W<K;W++){let U=J[W];Object.keys(Q).forEach((F)=>{if($===p6||$===F)Q[F][U]||=[...pC(X[F],U)||pC(X[p6],U)||[]],Q[F][U].push([G,Y-K+W+1])})}}match=Bs;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#Z).concat(Object.keys(this.#$)).forEach((Z)=>{$[Z]||=this.#G(Z)}),this.#$=this.#Z=void 0,QG8(),$}#G($){let Z=[],G=$===p6;if([this.#$,this.#Z].forEach((X)=>{let Q=X[$]?Object.keys(X[$]).map((Y)=>[Y,X[$][Y]]):[];if(Q.length!==0)G||=!0,Z.push(...Q);else if($!==p6)Z.push(...Object.keys(X[p6]).map((Y)=>[Y,X[p6][Y]]))}),!G)return null;else return YG8(Z)}};var pq1=D(()=>{PH();jH();iq1();nq1();rj0();XG8=[/^$/,[],Object.create(null)],aj0=Object.create(null)});var JG8=class{name="PreparedRegExpRouter";#$;#Z;constructor($,Z){this.#$=$,this.#Z=Z}#G($,Z){let G=this.#$[$];G[1].forEach((X)=>X&&X.push(Z)),Object.values(G[2]).forEach((X)=>X[0].push(Z))}#Y($,Z,G,X,Q){let Y=this.#$[$];if(!Q)Y[2][Z][0].push([G,{}]);else X.forEach((J)=>{if(typeof J==="number")Y[1][J].push([G,Q]);else Y[2][J||Z][0].push([G,Q])})}add($,Z,G){if(!this.#$[$]){let Q=this.#$[p6],Y={};for(let J in Q[2])Y[J]=[Q[2][J][0].slice(),Fh];this.#$[$]=[Q[0],Q[1].map((J)=>Array.isArray(J)?J.slice():0),Y]}if(Z==="/*"||Z==="*"){let Q=[G,{}];if($===p6)for(let Y in this.#$)this.#G(Y,Q);else this.#G($,Q);return}let X=this.#Z[Z];if(!X)throw Error(`Path ${Z} is not registered`);for(let[Q,Y]of X)if($===p6)for(let J in this.#$)this.#Y(J,Z,G,Q,Y);else this.#Y($,Z,G,Q,Y)}buildAllMatchers(){return this.#$}match=Bs};var ej0=D(()=>{PH();iq1();pq1()});var $P0=D(()=>{pq1();ej0()});var tq1=class{name="SmartRouter";#$=[];#Z=[];constructor($){this.#$=$.routers}add($,Z,G){if(!this.#Z)throw Error(Ns);this.#Z.push([$,Z,G])}match($,Z){if(!this.#Z)throw Error("Fatal error");let G=this.#$,X=this.#Z,Q=G.length,Y=0,J;for(;Y<Q;Y++){let W=G[Y];try{for(let K=0,U=X.length;K<U;K++)W.add(...X[K]);J=W.match($,Z)}catch(K){if(K instanceof Os)continue;throw K}this.match=W.match.bind(W),this.#$=[W],this.#Z=void 0;break}if(Y===Q)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,J}get activeRouter(){if(this.#Z||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var ZP0=D(()=>{PH()});var GP0=D(()=>{ZP0()});var Oh,WG8=($)=>{for(let Z in $)return!0;return!1},XP0=class ${#$;#Z;#G;#Y=0;#Q=Oh;constructor(Z,G,X){if(this.#Z=X||Object.create(null),this.#$=[],Z&&G){let Q=Object.create(null);Q[Z]={handler:G,possibleKeys:[],score:0},this.#$=[Q]}this.#G=[]}insert(Z,G,X){this.#Y=++this.#Y;let Q=this,Y=_j0(G),J=[];for(let W=0,K=Y.length;W<K;W++){let U=Y[W],F=Y[W+1],H=bj0(U,F),N=Array.isArray(H)?H[0]:U;if(N in Q.#Z){if(Q=Q.#Z[N],H)J.push(H[1]);continue}if(Q.#Z[N]=new $,H)Q.#G.push(H),J.push(H[1]);Q=Q.#Z[N]}return Q.#$.push({[Z]:{handler:X,possibleKeys:J.filter((W,K,U)=>U.indexOf(W)===K),score:this.#Y}}),Q}#X(Z,G,X,Q,Y){for(let J=0,W=G.#$.length;J<W;J++){let K=G.#$[J],U=K[X]||K[p6],F={};if(U!==void 0){if(U.params=Object.create(null),Z.push(U),Q!==Oh||Y&&Y!==Oh)for(let H=0,N=U.possibleKeys.length;H<N;H++){let O=U.possibleKeys[H],B=F[U.score];U.params[O]=Y?.[O]&&!B?Y[O]:Q[O]??Y?.[O],F[U.score]=!0}}}}search(Z,G){let X=[];this.#Q=Oh;let Y=[this],J=uq1(G),W=[],K=J.length,U=null;for(let F=0;F<K;F++){let H=J[F],N=F===K-1,O=[];for(let L=0,w=Y.length;L<w;L++){let z=Y[L],j=z.#Z[H];if(j)if(j.#Q=z.#Q,N){if(j.#Z["*"])this.#X(X,j.#Z["*"],Z,z.#Q);this.#X(X,j,Z,z.#Q)}else O.push(j);for(let P=0,R=z.#G.length;P<R;P++){let A=z.#G[P],q=z.#Q===Oh?{}:{...z.#Q};if(A==="*"){let x=z.#Z["*"];if(x)this.#X(X,x,Z,z.#Q),x.#Q=q,O.push(x);continue}let[S,k,C]=A;if(!H&&!(C instanceof RegExp))continue;let u=z.#Z[S];if(C instanceof RegExp){if(U===null){U=Array(K);let e=G[0]==="/"?1:0;for(let d=0;d<K;d++)U[d]=e,e+=J[d].length+1}let x=G.substring(U[F]),y=C.exec(x);if(y){if(q[k]=y[0],this.#X(X,u,Z,z.#Q,q),WG8(u.#Z)){u.#Q=q;let e=y[0].match(/\//)?.length??0;(W[e]||=[]).push(u)}continue}}if(C===!0||C.test(H))if(q[k]=H,N){if(this.#X(X,u,Z,q,z.#Q),u.#Z["*"])this.#X(X,u.#Z["*"],Z,q,z.#Q)}else u.#Q=q,O.push(u)}}let B=W.shift();Y=B?O.concat(B):O}if(X.length>1)X.sort((F,H)=>{return F.score-H.score});return[X.map(({handler:F,params:H})=>[F,H])]}};var QP0=D(()=>{PH();jH();Oh=Object.create(null)});var oq1=class{name="TrieRouter";#$;constructor(){this.#$=new XP0}add($,Z,G){let X=Ks(Z);if(X){for(let Q=0,Y=X.length;Q<Y;Q++)this.#$.insert($,X[Q],G);return}this.#$.insert($,Z,G)}match($,Z){return this.#$.search($,Z)}};var YP0=D(()=>{jH();QP0()});var JP0=D(()=>{YP0()});var v0;var rq1=D(()=>{pj0();$P0();GP0();JP0();v0=class extends nj0{constructor($={}){super($);this.router=$.router??new tq1({routers:[new Ls,new oq1]})}}});var o4=D(()=>{rq1()});var KP0,KG8,WP0=($)=>{let Z=0,G=$.length;while(Z<G){let X=$.charCodeAt(Z);if(X!==32&&X!==9)break;Z++}while(G>Z){let X=$.charCodeAt(G-1);if(X!==32&&X!==9)break;G--}return Z===0&&G===$.length?$:$.slice(Z,G)},aq1=($,Z)=>{if(Z&&$.indexOf(Z)===-1)return{};let G=$.split(";"),X={};for(let Q of G){let Y=Q.indexOf("=");if(Y===-1)continue;let J=WP0(Q.substring(0,Y));if(Z&&Z!==J||!KP0.test(J))continue;let W=WP0(Q.substring(Y+1));if(W.startsWith('"')&&W.endsWith('"'))W=W.slice(1,-1);if(KG8.test(W)){if(X[J]=W.indexOf("%")!==-1?nC(W,Wh):W,Z)break}}return X},UG8=($,Z,G={})=>{if(!KP0.test($))throw Error("Invalid cookie name");let X=`${$}=${Z}`;if($.startsWith("__Secure-")&&!G.secure)throw Error("__Secure- Cookie must have Secure attributes");if($.startsWith("__Host-")){if(!G.secure)throw Error("__Host- Cookie must have Secure attributes");if(G.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(G.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let Q of["domain","path"])if(G[Q]&&/[;\r\n]/.test(G[Q]))throw Error(`${Q} must not contain ";", "\\r", or "\\n"`);if(G&&typeof G.maxAge==="number"&&G.maxAge>=0){if(G.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");X+=`; Max-Age=${G.maxAge|0}`}if(G.domain&&G.prefix!=="host")X+=`; Domain=${G.domain}`;if(G.path)X+=`; Path=${G.path}`;if(G.expires){if(G.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");X+=`; Expires=${G.expires.toUTCString()}`}if(G.httpOnly)X+="; HttpOnly";if(G.secure)X+="; Secure";if(G.sameSite)X+=`; SameSite=${G.sameSite.charAt(0).toUpperCase()+G.sameSite.slice(1)}`;if(G.priority)X+=`; Priority=${G.priority.charAt(0).toUpperCase()+G.priority.slice(1)}`;if(G.partitioned){if(!G.secure)throw Error("Partitioned Cookie must have Secure attributes");X+="; Partitioned"}return X},Es=($,Z,G)=>{return Z=encodeURIComponent(Z),UG8($,Z,G)};var UP0=D(()=>{jH();KP0=/^[\w!#$%&'*.^`|~+-]+$/,KG8=/^[ !#-:<-[\]-~]*$/});var ws=($,Z,G)=>{let X=$.req.raw.headers.get("Cookie");if(typeof Z==="string"){if(!X)return;let Y=Z;if(G==="secure")Y="__Secure-"+Z;else if(G==="host")Y="__Host-"+Z;return aq1(X,Y)[Y]}if(!X)return{};return aq1(X)},FG8=($,Z,G)=>{let X;if(G?.prefix==="secure")X=Es("__Secure-"+$,Z,{path:"/",...G,secure:!0});else if(G?.prefix==="host")X=Es("__Host-"+$,Z,{...G,path:"/",secure:!0,domain:void 0});else X=Es($,Z,{path:"/",...G});return X},sq1=($,Z,G,X)=>{let Q=FG8(Z,G,X);$.header("Set-Cookie",Q,{append:!0})};var eq1=D(()=>{UP0()});var FP0=($)=>{let G={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...$},X=((Y)=>{if(typeof Y==="string")if(Y==="*"){if(G.credentials)return(J)=>J||null;return()=>Y}else return(J)=>Y===J?J:null;else if(typeof Y==="function")return Y;else return(J)=>Y.includes(J)?J:null})(G.origin),Q=((Y)=>{if(typeof Y==="function")return Y;else if(Array.isArray(Y))return()=>Y;else return()=>[]})(G.allowMethods);return async function(J,W){function K(F,H){J.res.headers.set(F,H)}let U=await X(J.req.header("origin")||"",J);if(U)K("Access-Control-Allow-Origin",U);if(G.credentials)K("Access-Control-Allow-Credentials","true");if(G.exposeHeaders?.length)K("Access-Control-Expose-Headers",G.exposeHeaders.join(","));if(J.req.method==="OPTIONS"){if(G.origin!=="*"||G.credentials)K("Vary","Origin");if(G.maxAge!=null)K("Access-Control-Max-Age",G.maxAge.toString());let F=await Q(J.req.header("origin")||"",J);if(F.length)K("Access-Control-Allow-Methods",F.join(","));let H=G.allowHeaders;if(!H?.length){let N=J.req.header("Access-Control-Request-Headers");if(N)H=N.split(/\s*,\s*/)}if(H?.length)K("Access-Control-Allow-Headers",H.join(",")),J.res.headers.append("Vary","Access-Control-Request-Headers");return J.res.headers.delete("Content-Length"),J.res.headers.delete("Content-Type"),new Response(null,{headers:J.res.headers,status:204,statusText:"No Content"})}if(await W(),G.origin!=="*"||G.credentials)J.header("Vary","Origin",{append:!0})}};var HP0=()=>{};var NP0=()=>{try{return performance.now()}catch{}return Date.now()},$M1=($)=>{let Z={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...$};return async function(X,Q){let Y=[],J=new Map;if(X.get("metric"))return await Q();if(X.set("metric",{headers:Y,timers:J}),Z.total)$Y(X,"total",Z.totalDescription);if(await Q(),Z.total)pX(X,"total");if(Z.autoEnd)J.forEach((K,U)=>pX(X,U));if(typeof Z.enabled==="function"?Z.enabled(X):Z.enabled){X.res.headers.append("Server-Timing",Y.join(","));let K=typeof Z.crossOrigin==="function"?Z.crossOrigin(X):Z.crossOrigin;if(K)X.res.headers.append("Timing-Allow-Origin",typeof K==="string"?K:"*")}}},OP0=($,Z,G,X,Q)=>{let Y=$.get("metric");if(!Y){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof G==="number"){let J=G.toFixed(Q||1),W=X?`${Z};dur=${J};desc="${X}"`:`${Z};dur=${J}`;Y.headers.push(W)}else{let J=G?`${Z};desc="${G}"`:`${Z}`;Y.headers.push(J)}},$Y=($,Z,G)=>{let X=$.get("metric");if(!X){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}X.timers.set(Z,{description:G,start:NP0()})},pX=($,Z,G)=>{let X=$.get("metric");if(!X){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let Q=X.timers.get(Z);if(!Q){console.warn(`Timer "${Z}" does not exist!`);return}let{description:Y,start:J}=Q,W=NP0()-J;OP0($,Z,W,Y,G),X.timers.delete(Z)};var BP0=D(()=>{Hs()});var ZM1=D(()=>{BP0()});function LP0(){let $={};for(let Z of zs){if(Z.id==="basic-usage")continue;$[Z.id]=!0}return $}function XM1($){let Z=$,G=(J)=>{let W=Z[J];return Array.isArray(W)?W:[]},X=G("*").includes("*")||G("self").includes("*"),Q=new Set;if(!X)for(let J of Object.values(Z)){if(!Array.isArray(J))continue;for(let W of J)Q.add(W)}let Y={};for(let J of zs){if(J.id==="basic-usage")continue;Y[J.id]=X||J.tools.every((W)=>Q.has(W))}return Y}function yB(){let $={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],"Event Bus":[],Tags:[],"AI Providers":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[],Links:[],Search:[]};for(let Z of GM1)$[Z.category]?.push(Z);return $}var GM1,zs,DP0,HG8,js;var tC=D(()=>{GM1=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_GET",description:"Get organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_SET",description:"Set organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Update organization domain settings",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_CLEAR",description:"Clear organization domain claim",category:"Organizations"},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"MONITORING_THREAD_USAGE",description:"View per-thread token usage and cost",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"EVENT_PUBLISH",description:"Publish events",category:"Event Bus"},{name:"EVENT_SUBSCRIBE",description:"Subscribe to events",category:"Event Bus"},{name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events",category:"Event Bus"},{name:"EVENT_CANCEL",description:"Cancel recurring events",category:"Event Bus"},{name:"EVENT_ACK",description:"Acknowledge event delivery",category:"Event Bus"},{name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions",category:"Event Bus"},{name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state",category:"Event Bus"},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"AUTOMATION_RUN_STATS",description:"View aggregated run counts and token/cost for an automation",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info for one or more virtual MCPs",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_KEY_UPDATE",description:"Update AI provider API key label or credential",category:"AI Providers"},{name:"AI_PROVIDER_KEY_PREVIEW",description:"Get masked preview of AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"SECRET_CREATE",description:"Create a secret in the credential vault",category:"Secrets"},{name:"SECRET_LIST",description:"List secrets visible to the caller (no values returned)",category:"Secrets"},{name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration for the org",category:"File Configs"},{name:"FILE_CONFIG_LIST",description:"List S3 bucket configurations for the org (no creds returned)",category:"File Configs"},{name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes from their GitHub sources",category:"File Configs"},{name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration, optionally rotating credentials",category:"File Configs"},{name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration",category:"File Configs"},{name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured bucket",category:"File Configs"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_SET",description:"Set monitor schedule",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_CANCEL",description:"Cancel monitor schedule",category:"Registry"},{name:"SANDBOX_START",description:"Start a sandbox VM with dev server preview",category:"VM"},{name:"SANDBOX_DELETE",description:"Stop and delete a sandbox VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"},{name:"LINK_CURRENT_GET",description:"Return the calling user's current desktop link status (online/offline, capabilities)",category:"Links"},{name:"LINK_DISCONNECT",description:"Disconnect the calling user's desktop link (stops the daemon, removes the presence claim)",category:"Links"},{name:"GLOBAL_SEARCH",description:"Search across organization resources (currently threads). Returns a typed union of matches.",category:"Search"}],zs=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","VIRTUAL_MCP_LAST_USED_LIST","AUTOMATION_GET","AUTOMATION_LIST","AUTOMATION_RUN_STATS","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_CREDITS","AI_PROVIDER_TOPUP_URL","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","FILE_OBJECTS_LIST","SANDBOX_START","SANDBOX_DELETE","GLOBAL_SEARCH","ORGANIZATION_SETTINGS_GET","USER_GET","LINK_CURRENT_GET","LINK_DISCONNECT","BRAND_CONTEXT_LIST","COLLECTION_THREADS_CREATE","COLLECTION_THREADS_LIST","COLLECTION_THREADS_GET","COLLECTION_THREADS_UPDATE","COLLECTION_THREADS_DELETE","COLLECTION_THREAD_MESSAGES_LIST"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_GET","ORGANIZATION_DOMAIN_SET","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_CLEAR"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_TRIGGER_ROTATE_TOKEN","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS","MONITORING_THREAD_USAGE"]},{id:"secrets:manage",label:"Manage secrets",description:"Create and list secrets stored in the credential vault",section:"Organization",tools:["SECRET_CREATE","SECRET_LIST"]},{id:"file-configs:manage",label:"Manage file configs",description:"Create, list, update and delete S3 bucket configurations",section:"Organization",tools:["FILE_CONFIG_CREATE","FILE_CONFIG_LIST","FILE_CONFIG_UPDATE","FILE_CONFIG_DELETE","FILE_OBJECTS_LIST"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_KEY_UPDATE","AI_PROVIDER_KEY_PREVIEW","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH","REGISTRY_MONITOR_SCHEDULE_SET","REGISTRY_MONITOR_SCHEDULE_CANCEL"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"event-bus:use",label:"Use event bus",description:"Publish events and manage subscriptions",section:"Developer",tools:["EVENT_PUBLISH","EVENT_SUBSCRIBE","EVENT_UNSUBSCRIBE","EVENT_CANCEL","EVENT_ACK","EVENT_SUBSCRIPTION_LIST","EVENT_SYNC_SUBSCRIPTIONS"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],DP0=new Set([...zs.find(($)=>$.id==="basic-usage")?.tools??[],"ORG_FS_READ","ORG_FS_WRITE"]),HG8=["agents:manage","connections:manage"],js=new Set(zs.filter(($)=>HG8.includes($.id)).flatMap(($)=>$.tools))});import{z as n5}from"zod";function EP0(){return OG8.parse(process.env)}var QM1=($)=>n5.enum(["true","false","1","0"]).optional().transform((Z)=>Z===void 0?$:Z==="true"||Z==="1"),NG8=($)=>n5.string().optional().transform((Z)=>Z?Z.split(",").map((G)=>G.trim()):$),OG8;var wP0=D(()=>{OG8=n5.object({AUTH_EMAIL_PASSWORD_ENABLED:QM1(!0),AUTH_GOOGLE_CLIENT_ID:n5.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:n5.string().optional(),AUTH_GITHUB_CLIENT_ID:n5.string().optional(),AUTH_GITHUB_CLIENT_SECRET:n5.string().optional(),AUTH_RESEND_API_KEY:n5.string().optional(),AUTH_RESEND_FROM_EMAIL:n5.string().optional(),AUTH_SENDGRID_API_KEY:n5.string().optional(),AUTH_SENDGRID_FROM_EMAIL:n5.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:QM1(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:QM1(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:n5.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:n5.coerce.number().optional(),AUTH_SSO_DOMAIN:n5.string().optional(),AUTH_SSO_MS_TENANT_ID:n5.string().optional(),AUTH_SSO_MS_CLIENT_ID:n5.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:n5.string().optional(),AUTH_SSO_SCOPES:NG8(["openid","email","profile"]),AUTH_SSO_GOOGLE_CLIENT_ID:n5.string().optional(),AUTH_SSO_GOOGLE_CLIENT_SECRET:n5.string().optional()}).transform(($)=>{let Z={};if($.AUTH_GOOGLE_CLIENT_ID)Z.google={clientId:$.AUTH_GOOGLE_CLIENT_ID,clientSecret:$.AUTH_GOOGLE_CLIENT_SECRET??""};if($.AUTH_GITHUB_CLIENT_ID)Z.github={clientId:$.AUTH_GITHUB_CLIENT_ID,clientSecret:$.AUTH_GITHUB_CLIENT_SECRET??""};let G=[];if($.AUTH_RESEND_API_KEY)G.push({id:"resend",provider:"resend",config:{apiKey:$.AUTH_RESEND_API_KEY,fromEmail:$.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if($.AUTH_SENDGRID_API_KEY)G.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:$.AUTH_SENDGRID_API_KEY,fromEmail:$.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let X=G[0]?.id,Q;if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Q={providerId:"microsoft",domain:$.AUTH_SSO_DOMAIN,MS_TENANT_ID:$.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:$.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:$.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};else if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Q={providerId:"google",domain:$.AUTH_SSO_DOMAIN,GOOGLE_CLIENT_ID:$.AUTH_SSO_GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:$.AUTH_SSO_GOOGLE_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};let Y;if($.AUTH_MAGIC_LINK_ENABLED)Y={enabled:!0,emailProviderId:$.AUTH_MAGIC_LINK_EMAIL_PROVIDER??X??""};let J;if($.AUTH_EMAIL_OTP_ENABLED)J={enabled:!0,emailProviderId:$.AUTH_EMAIL_OTP_EMAIL_PROVIDER??X??"",...$.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:$.AUTH_EMAIL_OTP_LENGTH},...$.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:$.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:$.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Z).length>0?Z:void 0,emailProviders:G.length>0?G:void 0,inviteEmailProviderId:$.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:$.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:Q,magicLinkConfig:Y,emailOtpConfig:J}})});var Ps;var zP0=D(()=>{Ps={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as BG8,readFileSync as DG8}from"fs";function LG8(){let $=EP0(),Z=q0().configPath;if(!BG8(Z))return{auth:$,monitoring:Ps};try{let G=JSON.parse(DG8(Z,"utf-8"));if(G.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:$,monitoring:G.monitoring??Ps,theme:G.theme,logo:G.logo,autoCreateOrganizationOnSignup:G.autoCreateOrganizationOnSignup}}catch{return{auth:$,monitoring:Ps}}}function gB(){if(!YM1)YM1=LG8();return YM1}function jP0(){return gB().theme}var YM1=null;var JM1=D(()=>{wP0();zP0();M4()});import{dirname as EG8,posix as wG8,sep as zG8}from"path";function AP0(){let $=jG8();return async(Z)=>{for(let G of Z)G.module=$(G.filename);return Z}}function jG8($=process.argv[1]?EG8(process.argv[1]):process.cwd(),Z=zG8==="\\"){let G=Z?PP0($):$;return(X)=>{if(!X)return;let Q=Z?PP0(X):X,{dir:Y,base:J,ext:W}=wG8.parse(Q);if(W===".js"||W===".mjs"||W===".cjs")J=J.slice(0,-1*W.length);let K=decodeURIComponent(J);if(!Y)Y=".";let U=Y.lastIndexOf("/node_modules");if(U>-1)return`${Y.slice(U+14).replace(/\//g,".")}:${K}`;if(Y.startsWith(G)){let F=Y.slice(G.length+1).replace(/\//g,".");return F?`${F}:${K}`:K}return K}}function PP0($){return $.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var RP0=()=>{};function PG8($,Z,G){return{key:$,enabled:typeof Z=="string"?!0:Z,variant:typeof Z=="string"?Z:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:G?JSON.stringify(G):void 0,description:void 0}}}var WM1=($)=>{if("flags"in $){let Z=IP0($.flags),G=TP0($.flags);return{...$,featureFlags:Z,featureFlagPayloads:G}}{let Z=$.featureFlags??{},G=Object.fromEntries(Object.entries($.featureFlagPayloads||{}).map(([Q,Y])=>[Q,KM1(Y)])),X=Object.fromEntries(Object.entries(Z).map(([Q,Y])=>[Q,PG8(Q,Y,G[Q])]));return{...$,featureFlags:Z,featureFlagPayloads:G,flags:X}}},IP0=($)=>Object.fromEntries(Object.entries($??{}).map(([Z,G])=>[Z,Bh(G)]).filter(([,Z])=>Z!==void 0)),TP0=($)=>{let Z=$??{};return Object.fromEntries(Object.keys(Z).filter((G)=>{let X=Z[G];return X.enabled&&X.metadata&&X.metadata.payload!==void 0}).map((G)=>{let X=Z[G].metadata?.payload;return[G,X?KM1(X):void 0]}))},Bh=($)=>$===void 0?void 0:$.variant??$.enabled,KM1=($)=>{if(typeof $!="string")return $;try{return JSON.parse($)}catch{return $}};var As=()=>{};function qP0(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function Rs($,Z=!0,G){try{let X=new CompressionStream("gzip"),Q=X.writable.getWriter(),Y=Q.write(new TextEncoder().encode($)).then(()=>Q.close()).catch(async(K)=>{try{await Q.abort(K)}catch{}throw K}),J=new Response(X.readable).blob(),[W]=await Promise.all([J,Y]);return W}catch(X){if(G?.rethrow)throw X;if(Z)console.error("Failed to gzip compress data",X);return null}}var UM1=()=>{};var AG8,MP0=function($,Z=[]){if(!$)return!1;let G=$.toLowerCase();return AG8.concat(Z).some((X)=>{let Q=X.toLowerCase();return G.indexOf(Q)!==-1})};var kP0=D(()=>{AG8=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var _7;var hB=D(()=>{_7=function($){return $.AnonymousId="anonymous_id",$.DistinctId="distinct_id",$.Props="props",$.EnablePersonProcessing="enable_person_processing",$.PersonMode="person_mode",$.FeatureFlagDetails="feature_flag_details",$.FeatureFlags="feature_flags",$.FeatureFlagPayloads="feature_flag_payloads",$.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",$.BootstrapFeatureFlags="bootstrap_feature_flags",$.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",$.OverrideFeatureFlags="override_feature_flags",$.Queue="queue",$.LogsQueue="logs_queue",$.OptedOut="opted_out",$.SessionId="session_id",$.SessionStartTimestamp="session_start_timestamp",$.SessionLastTimestamp="session_timestamp",$.PersonProperties="person_properties",$.GroupProperties="group_properties",$.InstalledAppBuild="installed_app_build",$.InstalledAppVersion="installed_app_version",$.SessionReplay="session_replay",$.SurveyLastSeenDate="survey_last_seen_date",$.SurveysSeen="surveys_seen",$.Surveys="surveys",$.RemoteConfig="remote_config",$.FlagsEndpointWasHit="flags_endpoint_was_hit",$.DeviceId="device_id",$}({})});var Is=()=>{};function qs($){return $===null||typeof $!="object"}function uB($,Z){return Object.prototype.toString.call($)===`[object ${Z}]`}function CP0($){return uB($,"ErrorEvent")}function rC($){return typeof Event<"u"&&TG8($,Event)}function _P0($){return uB($,"Object")}function TG8($,Z){try{return $ instanceof Z}catch{return!1}}var IG8,VP0,mt4,FM1,Ts,Dh=($)=>$===Object($)&&!Ts($),oC=($)=>$===void 0,AH=($)=>FM1.call($)=="[object String]",SP0=($)=>AH($)&&$.trim().length===0,Lh=($)=>FM1.call($)=="[object Number]"&&$===$,HM1=($)=>$ instanceof Error;var Eh=D(()=>{hB();Is();IG8=Array.isArray,VP0=Object.prototype,mt4=VP0.hasOwnProperty,FM1=VP0.toString,Ts=IG8||function($){return FM1.call($)==="[object Array]"}});function wh($,Z,G,X,Q){if(Z>G)X.warn("min cannot be greater than max."),Z=G;if(Lh($))if($>G)return X.warn(" cannot be greater than max: "+G+". Using max value instead."),G;else{if(!($<Z))return $;return X.warn(" cannot be less than min: "+Z+". Using min value instead."),Z}return X.warn(" must be a number. using max or fallback. max: "+G+", fallback: "+Q),wh(Q||G,Z,G,X)}var NM1=D(()=>{Eh()});class OM1{constructor($){this._buckets={},this._onBucketRateLimited=$._onBucketRateLimited,this._bucketSize=wh($.bucketSize,0,100,$._logger),this._refillRate=wh($.refillRate,0,this._bucketSize,$._logger),this._refillInterval=wh($.refillInterval,0,qG8,$._logger)}_applyRefill($,Z){let G=Z-$.lastAccess,X=Math.floor(G/this._refillInterval);if(X>0){let Q=X*this._refillRate;$.tokens=Math.min($.tokens+Q,this._bucketSize),$.lastAccess=$.lastAccess+X*this._refillInterval}}consumeRateLimit($){let Z=Date.now(),G=String($),X=this._buckets[G];if(X)this._applyRefill(X,Z);else X={tokens:this._bucketSize,lastAccess:Z},this._buckets[G]=X;if(X.tokens===0)return!0;if(X.tokens--,X.tokens===0)this._onBucketRateLimited?.($);return X.tokens===0}stop(){this._buckets={}}}var qG8=86400000;var bP0=D(()=>{NM1()});class cB{constructor($){this.bytes=$}static ofInner($){if($.length===16)return new cB($);throw TypeError("not 128-bit length")}static fromFieldsV7($,Z,G,X){if(!Number.isInteger($)||!Number.isInteger(Z)||!Number.isInteger(G)||!Number.isInteger(X)||$<0||Z<0||G<0||X<0||$>281474976710655||Z>4095||G>1073741823||X>4294967295)throw RangeError("invalid field value");let Q=new Uint8Array(16);return Q[0]=$/1099511627776,Q[1]=$/4294967296,Q[2]=$/16777216,Q[3]=$/65536,Q[4]=$/256,Q[5]=$,Q[6]=112|Z>>>8,Q[7]=Z,Q[8]=128|G>>>24,Q[9]=G>>>16,Q[10]=G>>>8,Q[11]=G,Q[12]=X>>>24,Q[13]=X>>>16,Q[14]=X>>>8,Q[15]=X,new cB(Q)}static parse($){let Z;switch($.length){case 32:Z=/^[0-9a-f]{32}$/i.exec($)?.[0];break;case 36:Z=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;case 38:Z=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec($)?.slice(1,6).join("");break;case 45:Z=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;default:break}if(Z){let G=new Uint8Array(16);for(let X=0;X<16;X+=4){let Q=parseInt(Z.substring(2*X,2*X+8),16);G[X+0]=Q>>>24,G[X+1]=Q>>>16,G[X+2]=Q>>>8,G[X+3]=Q}return new cB(G)}throw SyntaxError("could not parse UUID string")}toString(){let $="";for(let Z=0;Z<this.bytes.length;Z++)if($+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]),Z===3||Z===5||Z===7||Z===9)$+="-";return $}toHex(){let $="";for(let Z=0;Z<this.bytes.length;Z++)$+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]);return $}toJSON(){return this.toString()}getVariant(){let $=this.bytes[8]>>>4;if($<0)throw Error("unreachable");if($<=7)return this.bytes.every((Z)=>Z===0)?"NIL":"VAR_0";if($<=11)return"VAR_10";if($<=13)return"VAR_110";if($<=15)return this.bytes.every((Z)=>Z===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new cB(this.bytes.slice(0))}equals($){return this.compareTo($)===0}compareTo($){for(let Z=0;Z<16;Z++){let G=this.bytes[Z]-$.bytes[Z];if(G!==0)return Math.sign(G)}return 0}}class fP0{constructor($){this.timestamp=0,this.counter=0,this.random=$??MG8()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore($,Z){let G=this.generateOrAbortCore($,Z);if(G===void 0)this.timestamp=0,G=this.generateOrAbortCore($,Z);return G}generateOrAbortCore($,Z){if(!Number.isInteger($)||$<1||$>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Z<0||Z>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if($>this.timestamp)this.timestamp=$,this.resetCounter();else{if(!($+Z>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return cB.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let $=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return $[6]=64|$[6]>>>4,$[8]=128|$[8]>>>2,cB.ofInner($)}}var MG8=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),vP0,RH=()=>kG8().toString(),kG8=()=>(vP0||(vP0=new fP0)).generate();var zh=D(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class BM1{add($){let Z=RH();return this.promiseByIds[Z]=$,$.catch(()=>{}).finally(()=>{delete this.promiseByIds[Z]}),$}async join(){let $=Object.values(this.promiseByIds),Z=$.length;while(Z>0)await Promise.all($),$=Object.values(this.promiseByIds),Z=$.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var xP0=D(()=>{zh()});function VG8($=console){return{log:$.log.bind($),warn:$.warn.bind($),error:$.error.bind($),debug:$.debug.bind($)}}function gP0($,Z=SG8){return yP0($,Z,VG8())}var yP0=($,Z,G)=>{function X(Y,...J){Z(()=>{let W=G[Y];W($,...J)})}return{info:(...Y)=>{X("log",...Y)},warn:(...Y)=>{X("warn",...Y)},error:(...Y)=>{X("error",...Y)},critical:(...Y)=>{G.error($,...Y)},createLogger:(Y)=>yP0(`${$} ${Y}`,Z,G)}},SG8=($)=>$();var hP0=()=>{};var sC="Mobile",ks="iOS",aC="Android",uP0="Tablet",Go4,_G8="Apple",Xo4,cP0="Safari",Vs="BlackBerry",lP0="Samsung",bG8,vG8,Ss="Chrome",fG8,xG8,dP0="Internet Explorer",yG8,LM1="Opera",Qo4,mP0="Edge",gG8,EM1="Firefox",hG8,wM1="Nintendo",zM1="PlayStation",Ms="Xbox",uG8,cG8,jh="Windows",lG8,iP0="Generic",Yo4,Jo4,dG8="Konqueror",EG="(\\d+(\\.\\d+)?)",DM1,Wo4,Ko4,Uo4,mG8,iG8,Fo4,Ho4;var nP0=D(()=>{Is();Eh();Go4=aC+" "+uP0,Xo4=_G8+" Watch",bG8=lP0+"Browser",vG8=lP0+" Internet",fG8=Ss+" OS",xG8=Ss+" "+ks,yG8=dP0+" "+sC,Qo4=LM1+" Mini",gG8="Microsoft "+mP0,hG8=EM1+" "+ks,uG8=aC+" "+sC,cG8=sC+" "+cP0,lG8=jh+" Phone",Yo4=iP0+" "+sC.toLowerCase(),Jo4=iP0+" "+uP0.toLowerCase(),DM1=new RegExp("Version/"+EG),Wo4=new RegExp(Ms,"i"),Ko4=new RegExp(zM1+" \\w+","i"),Uo4=new RegExp(wM1+" \\w+","i"),mG8=new RegExp(Vs+"|PlayBook|BB10","i"),iG8={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},Fo4={[yG8]:[new RegExp("rv:"+EG)],[gG8]:[new RegExp(mP0+"?\\/"+EG)],[Ss]:[new RegExp("("+Ss+"|CrMo)\\/"+EG)],[xG8]:[new RegExp("CriOS\\/"+EG)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+EG)],[cP0]:[DM1],[cG8]:[DM1],[LM1]:[new RegExp("("+LM1+"|OPR)\\/"+EG)],[EM1]:[new RegExp(EM1+"\\/"+EG)],[hG8]:[new RegExp("FxiOS\\/"+EG)],[dG8]:[new RegExp("Konqueror[:/]?"+EG,"i")],[Vs]:[new RegExp(Vs+" "+EG),DM1],[uG8]:[new RegExp("android\\s"+EG,"i")],[vG8]:[new RegExp(bG8+"\\/"+EG)],[dP0]:[new RegExp("(rv:|MSIE )"+EG)],Mozilla:[new RegExp("rv:"+EG)]},Ho4=[[new RegExp(Ms+"; "+Ms+" (.*?)[);]","i"),($)=>[Ms,$&&$[1]||""]],[new RegExp(wM1,"i"),[wM1,""]],[new RegExp(zM1,"i"),[zM1,""]],[mG8,[Vs,""]],[new RegExp(jh,"i"),($,Z)=>{if(/Phone/.test(Z)||/WPDesktop/.test(Z))return[lG8,""];if(new RegExp(sC).test(Z)&&!/IEMobile\b/.test(Z))return[jh+" "+sC,""];let G=/Windows NT ([0-9.]+)/i.exec(Z);if(G&&G[1]){let X=G[1],Q=iG8[X]||"";if(/arm/i.test(Z))Q="RT";return[jh,Q]}return[jh,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,($)=>{if($&&$[3]){let Z=[$[3],$[4],$[5]||"0"];return[ks,Z.join(".")]}return[ks,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,($)=>{let Z="";if($&&$.length>=3)Z=oC($[2])?$[3]:$[2];return["watchOS",Z]}],[new RegExp("("+aC+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+aC+")","i"),($)=>{if($&&$[2]){let Z=[$[2],$[3],$[4]||"0"];return[aC,Z.join(".")]}return[aC,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,($)=>{let Z=["Mac OS X",""];if($&&$[1]){let G=[$[1],$[2],$[3]||"0"];Z[1]=G.join(".")}return Z}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[fG8,""]],[/Linux|debian/i,["Linux",""]]]});function tP0($){return $?.replace(/\/+$/,"")}async function oP0($,Z){let G=null;for(let X=0;X<Z.retryCount+1;X++){if(X>0)await new Promise((Q)=>setTimeout(Q,Z.retryDelay));try{return await $()}catch(Q){if(G=Q,!Z.retryCheck(Q))throw Q}}throw G}function Cs(){return new Date().toISOString()}function dK($,Z){let G=setTimeout($,Z);return G?.unref&&G?.unref(),G}function jM1($){return Promise.all($.map((Z)=>(Z??Promise.resolve()).then((G)=>({status:"fulfilled",value:G}),(G)=>({status:"rejected",reason:G}))))}var pP0="utf8",rP0=($)=>$ instanceof Error;var wG=D(()=>{kP0();bP0();NM1();Is();Eh();xP0();hP0();nP0()});var nG8,To4;var PM1=D(()=>{wG();nG8={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},To4=nG8.info});var aP0=D(()=>{PM1();hB()});var sP0=D(()=>{hB()});class AM1{constructor(){this.events={},this.events={}}on($,Z){if(!this.events[$])this.events[$]=[];return this.events[$].push(Z),()=>{this.events[$]=this.events[$].filter((G)=>G!==Z)}}emit($,Z){for(let G of this.events[$]||[])G(Z);for(let G of this.events["*"]||[])G($,Z)}}var eP0=()=>{};async function $A0($){if($ instanceof eC){let Z="";try{Z=await $.text}catch{}console.error(`Error while flushing PostHog: message=${$.message}, response body=${Z}`,$)}else console.error("Error while flushing PostHog",$);return Promise.resolve()}function RM1($){return typeof $=="object"&&($ instanceof eC||$ instanceof Ph)}function ZA0($){return typeof $=="object"&&$ instanceof eC&&$.status===413}class _s{constructor($,Z={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new BM1,this._events=new AM1,this._isInitialized=!1;let G=typeof $=="string"?$.trim():"",X=typeof Z.host=="string"?Z.host.trim():"",Q=!G;if(this._logger=gP0("[PostHog]",this.logMsgIfDebug.bind(this)),Q)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=G,this.host=tP0(X||"https://us.i.posthog.com"),this.flushAt=Z.flushAt?Math.max(Z.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Z.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Z.maxQueueSize??1000),this.flushInterval=Z.flushInterval??1e4,this.preloadFeatureFlags=Z.preloadFeatureFlags??!0,this.defaultOptIn=Z.defaultOptIn??!0,this.disableSurveys=Z.disableSurveys??!1,this._retryOptions={retryCount:Z.fetchRetryCount??3,retryDelay:Z.fetchRetryDelay??3000,retryCheck:RM1},this.requestTimeout=Z.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Z.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Z.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Z.disableGeoip??!0,this.disabled=(Z.disabled??!1)||Q,this.historicalMigration=Z?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Z?.evaluationContexts??Z?.evaluationEnvironments,Z?.evaluationEnvironments&&!Z?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!qP0()||(Z?.disableCompression??!1)}logMsgIfDebug($){if(this.isDebug)$()}wrap($){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return $();this._initPromise.then(()=>$())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(_7.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(_7.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(_7.OptedOut,!0)})}on($,Z){return this._events.on($,Z)}debug($=!0){if(this.removeDebugCallback?.(),$){let Z=this.on("*",(G,X)=>this._logger.info(G,X));this.removeDebugCallback=()=>{Z(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload($){return{distinct_id:$.distinct_id,event:$.event,properties:{...$.properties||{},...this.getCommonEventProperties()}}}addPendingPromise($){return this.promiseQueue.add($)}identifyStateless($,Z,G){this.wrap(()=>{let X={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};this.enqueue("identify",X,G)})}async identifyStatelessImmediate($,Z,G){let X={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};await this.sendImmediate("identify",X,G)}captureStateless($,Z,G,X){this.wrap(()=>{let Q=this.buildPayload({distinct_id:$,event:Z,properties:G});this.enqueue("capture",Q,X)})}async captureStatelessImmediate($,Z,G,X){let Q=this.buildPayload({distinct_id:$,event:Z,properties:G});await this.sendImmediate("capture",Q,X)}aliasStateless($,Z,G,X){this.wrap(()=>{let Q=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...G||{},distinct_id:Z,alias:$}});this.enqueue("alias",Q,X)})}async aliasStatelessImmediate($,Z,G,X){let Q=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...G||{},distinct_id:Z,alias:$}});await this.sendImmediate("alias",Q,X)}groupIdentifyStateless($,Z,G,X,Q,Y){this.wrap(()=>{let J=this.buildPayload({distinct_id:Q||`$${$}_${Z}`,event:"$groupidentify",properties:{$group_type:$,$group_key:Z,$group_set:G||{},...Y||{}}});this.enqueue("capture",J,X)})}async getRemoteConfig(){await this._initPromise;let $=this.host;if($==="https://us.i.posthog.com")$="https://us-assets.i.posthog.com";else if($==="https://eu.i.posthog.com")$="https://eu-assets.i.posthog.com";let Z=`${$}/array/${this.apiKey}/config`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Z,G,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((X)=>X.json()).catch((X)=>{this._logger.error("Remote config could not be loaded",X),this._events.emit("error",X)})}async getFlags($,Z={},G={},X={},Q={},Y=!1){await this._initPromise;let J=Y?"&config=true":"",W=`${this.host}/flags/?v=2${J}`,K={token:this.apiKey,distinct_id:$,groups:Z,person_properties:G,group_properties:X,...Q};if(G.$device_id)K.$device_id=G.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)K.evaluation_contexts=this.evaluationContexts;let U={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(K)};return this._logger.info("Flags URL",W),this.fetchWithRetry(W,U,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((F)=>F.json()).then((F)=>({success:!0,response:WM1(F)})).catch((F)=>{return this._events.emit("error",F),{success:!1,error:this.categorizeRequestError(F)}})}categorizeRequestError($){if($ instanceof eC)return{type:"api_error",statusCode:$.status};if($ instanceof Ph){let Z=$.error;if(Z instanceof Error&&(Z.name==="AbortError"||Z.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagDetailStateless($,Z,G,X,Q,Y);if(J===void 0)return{response:void 0,requestId:void 0};let W=Bh(J.response);if(W===void 0)W=!1;return{response:W,requestId:J.requestId}}async getFeatureFlagDetailStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless(Z,G,X,Q,Y,[$]);if(J===void 0)return;return{response:J.flags[$],requestId:J.requestId,evaluatedAt:J.evaluatedAt}}async getFeatureFlagPayloadStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagPayloadsStateless(Z,G,X,Q,Y,[$]);if(!J)return;let W=J[$];if(W===void 0)return null;return W}async getFeatureFlagPayloadsStateless($,Z={},G={},X={},Q,Y){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless($,Z,G,X,Q,Y)).payloads}async getFeatureFlagsStateless($,Z={},G={},X={},Q,Y){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless($,Z,G,X,Q,Y)}async getFeatureFlagsAndPayloadsStateless($,Z={},G={},X={},Q,Y){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless($,Z,G,X,Q,Y);if(!J)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:J.featureFlags,payloads:J.featureFlagPayloads,requestId:J.requestId}}async getFeatureFlagDetailsStateless($,Z={},G={},X={},Q,Y){await this._initPromise;let J={};if(Q??this.disableGeoip)J.geoip_disable=!0;if(Y)J.flag_keys_to_evaluate=Y;let W=await this.getFlags($,Z,G,X,J);if(!W.success)return;let K=W.response;if(K.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(K.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:K?.requestId,quotaLimited:K.quotaLimited};return K}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let $=`${this.host}/api/surveys/?token=${this.apiKey}`,Z={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},X=(await this.fetchWithRetry($,Z).then((Q)=>{if(Q.status!==200||!Q.json){let Y=`Surveys API could not be loaded: ${Q.status}`,J=Error(Y);this._logger.error(J),this._events.emit("error",Error(Y));return}return Q.json()}).catch((Q)=>{this._logger.error("Surveys API could not be loaded",Q),this._events.emit("error",Q)}))?.surveys;if(X)this._logger.info("Surveys fetched from API: ",JSON.stringify(X));return X??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(_7.Props);return this._props||{}}set props($){this._props=$}async register($){this.wrap(()=>{this.props={...this.props,...$},this.setPersistedProperty(_7.Props,this.props)})}async unregister($){this.wrap(()=>{delete this.props[$],this.setPersistedProperty(_7.Props,this.props)})}processBeforeEnqueue($){return $}async flushStorage(){}enqueue($,Z,G){this.wrap(()=>{if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let X=this.prepareMessage($,Z,G);if(X=this.processBeforeEnqueue(X),X===null)return;let Q=this.getPersistedProperty(_7.Queue)||[];if(Q.length>=this.maxQueueSize)Q.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(Q.push({message:X}),this.setPersistedProperty(_7.Queue,Q),this._events.emit($,X),Q.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=dK(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate($,Z,G){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let X=this.prepareMessage($,Z,G);if(X=this.processBeforeEnqueue(X),X===null)return;let Q={api_key:this.apiKey,batch:[X],sent_at:Cs()};if(this.historicalMigration)Q.historical_migration=!0;let Y=JSON.stringify(Q),J=`${this.host}/batch/`,W=this.disableCompression?null:await Rs(Y,this.isDebug),K={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...W!==null&&{"Content-Encoding":"gzip"}},body:W||Y};try{await this.fetchWithRetry(J,K)}catch(U){this._events.emit("error",U)}}prepareMessage($,Z,G){let X={...Z,type:$,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:G?.timestamp?G?.timestamp:Cs(),uuid:G?.uuid?G.uuid:RH()};if(G?.disableGeoip??this.disableGeoip){if(!X.properties)X.properties={};X.properties.$geoip_disable=!0}if(X.distinctId)X.distinct_id=X.distinctId,delete X.distinctId;return X}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async($)=>{await $A0($)})}async flush(){let $=jM1([this.flushPromise]).then(()=>this._flush());return this.flushPromise=$,this.addPendingPromise($),jM1([$]).then(()=>{if(this.flushPromise===$)this.flushPromise=null}),$}getCustomHeaders(){let $=this.getCustomUserAgent(),Z={};if($&&$!=="")Z["User-Agent"]=$;return Z}async _flush(){this.clearFlushTimer(),await this._initPromise;let $=this.getPersistedProperty(_7.Queue)||[];if(!$.length)return;let Z=[],G=$.length;while($.length>0&&Z.length<G){let X=$.slice(0,this.maxBatchSize),Q=X.map((N)=>N.message),Y=async()=>{let O=(this.getPersistedProperty(_7.Queue)||[]).slice(X.length);this.setPersistedProperty(_7.Queue,O),$=O,await this.flushStorage()},J={api_key:this.apiKey,batch:Q,sent_at:Cs()};if(this.historicalMigration)J.historical_migration=!0;let W=JSON.stringify(J),K=`${this.host}/batch/`,U=this.disableCompression?null:await Rs(W,this.isDebug),F={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...U!==null&&{"Content-Encoding":"gzip"}},body:U||W},H={retryCheck:(N)=>{if(ZA0(N))return!1;return RM1(N)}};try{await this.fetchWithRetry(K,F,H)}catch(N){if(ZA0(N)&&Q.length>1){this.maxBatchSize=Math.max(1,Math.floor(Q.length/2)),this._logger.warn(`Received 413 when sending batch of size ${Q.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(N instanceof Ph))await Y();throw this._events.emit("error",N),N}await Y(),Z.push(...Q)}this._events.emit("flush",Z)}async fetchWithRetry($,Z,G,X){let Q=Z.body?Z.body:"",Y=-1;try{Y=Q instanceof Blob?Q.size:Buffer.byteLength(Q,pP0)}catch{if(Q instanceof Blob)Y=Q.size;else Y=new TextEncoder().encode(Q).length}return await oP0(async()=>{let J=new AbortController,W=X??this.requestTimeout,K=dK(()=>J.abort(),W),U=null;try{U=await this.fetch($,{signal:J.signal,...Z})}catch(H){throw new Ph(H)}finally{clearTimeout(K)}if(Z.mode!=="no-cors"&&(U.status<200||U.status>=400))throw new eC(U,Y);return U},{...this._retryOptions,...G})}async _shutdown($=30000){await this._initPromise;let Z=!1;this.clearFlushTimer();let G=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(_7.Queue)||[]).length===0)break;if(await this.flush(),Z)break}}catch(Q){if(!RM1(Q))throw Q;await $A0(Q)}},X;try{return await Promise.race([new Promise((Q,Y)=>{X=dK(()=>{this._logger.error("Timed out while shutting down PostHog"),Z=!0,Y("Timeout while shutting down PostHog. Some events may not have been sent.")},$)}),G()])}finally{clearTimeout(X)}}async shutdown($=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown($).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var eC,Ph;var IM1=D(()=>{eP0();As();UM1();hB();wG();zh();eC=class eC extends Error{constructor($,Z){super("HTTP error while fetching PostHog: status="+$.status+", reqByteLength="+Z),this.response=$,this.reqByteLength=Z,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};Ph=class Ph extends Error{constructor($){super("Network error while fetching PostHog",$ instanceof Error?{cause:$}:{}),this.error=$,this.name="PostHogFetchNetworkError"}}});var GA0=D(()=>{As();hB();IM1();zh();wG()});var XA0=D(()=>{Eh()});function YA0($){let Z=globalThis._posthogChunkIds;if(!Z)return;let G=Object.keys(Z);if(vs&&G.length===QA0)return vs;return QA0=G.length,vs=G.reduce((X,Q)=>{if(!bs)bs={};let Y=bs[Q];if(Y)X[Y[0]]=Y[1];else{let J=$(Q);for(let W=J.length-1;W>=0;W--){let U=J[W]?.filename,F=Z[Q];if(U&&F){X[U]=F,bs[Q]=[U,F];break}}}return X},{}),vs}var bs,QA0,vs;var JA0=()=>{};class WA0{constructor($,Z,G=[]){this.coercers=$,this.stackParser=Z,this.modifiers=G}buildFromUnknown($,Z={}){let X=Z&&Z.mechanism||{handled:!0,type:"generic"},Y=this.buildCoercingContext(X,Z,0).apply($),J=this.buildParsingContext(Z),W=this.parseStacktrace(Y,J);return{$exception_list:this.convertToExceptionList(W,X),$exception_level:"error"}}async modifyFrames($){for(let Z of $)if(Z.stacktrace&&Z.stacktrace.frames&&Ts(Z.stacktrace.frames))Z.stacktrace.frames=await this.applyModifiers(Z.stacktrace.frames);return $}coerceFallback($){return{type:"Error",value:"Unknown error",stack:$.syntheticException?.stack,synthetic:!0}}parseStacktrace($,Z){let G;if($.cause!=null)G=this.parseStacktrace($.cause,Z);let X;if($.stack!=""&&$.stack!=null)X=this.applyChunkIds(this.stackParser($.stack,$.synthetic?Z.skipFirstLines:0),Z.chunkIdMap);return{...$,cause:G,stack:X}}applyChunkIds($,Z){return $.map((G)=>{if(G.filename&&Z)G.chunk_id=Z[G.filename];return G})}applyCoercers($,Z){for(let G of this.coercers)if(G.match($))return G.coerce($,Z);return this.coerceFallback(Z)}async applyModifiers($){let Z=$;for(let G of this.modifiers)Z=await G(Z);return Z}convertToExceptionList($,Z){let G={type:$.type,value:$.value,mechanism:{type:Z.type??"generic",handled:Z.handled??!0,synthetic:$.synthetic??!1}};if($.stack)G.stacktrace={type:"raw",frames:$.stack};let X=[G];if($.cause!=null)X.push(...this.convertToExceptionList($.cause,{...Z,handled:!0}));return X}buildParsingContext($){return{chunkIdMap:YA0(this.stackParser),skipFirstLines:$.skipFirstLines??1}}buildCoercingContext($,Z,G=0){let X=(Y,J)=>{if(!(J<=oG8))return;{let W=this.buildCoercingContext($,Z,J);return this.applyCoercers(Y,W)}};return{...Z,syntheticException:G==0?Z.syntheticException:void 0,mechanism:$,apply:(Y)=>X(Y,G),next:(Y)=>X(Y,G+1)}}}var oG8=4;var KA0=D(()=>{wG();JA0()});function f3($,Z,G,X,Q){let Y={platform:$,filename:Z,function:G==="<anonymous>"?eZ:G,in_app:!0};if(!oC(X))Y.lineno=X;if(!oC(Q))Y.colno=Q;return Y}var eZ="?";var IH=D(()=>{wG()});var fs=($,Z)=>{let G=$.indexOf("safari-extension")!==-1,X=$.indexOf("safari-web-extension")!==-1;return G||X?[$.indexOf("@")!==-1?$.split("@")[0]:eZ,G?`safari-extension:${Z}`:`safari-web-extension:${Z}`]:[$,Z]};var TM1=D(()=>{IH()});var rG8,aG8,sG8,qM1=($,Z)=>{let G=rG8.exec($);if(G){let[,Q,Y,J]=G;return f3(Z,Q,eZ,+Y,+J)}let X=aG8.exec($);if(X){if(X[2]&&X[2].indexOf("eval")===0){let W=sG8.exec(X[2]);if(W)X[2]=W[1],X[3]=W[2],X[4]=W[3]}let[Y,J]=fs(X[1]||eZ,X[2]);return f3(Z,J,Y,X[3]?+X[3]:void 0,X[4]?+X[4]:void 0)}};var UA0=D(()=>{IH();TM1();rG8=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,aG8=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,sG8=/\((\S*)(?::(\d+))(?::(\d+))\)/});var eG8,$X8,MM1=($,Z)=>{let G=eG8.exec($);if(G){if(G[3]&&G[3].indexOf(" > eval")>-1){let J=$X8.exec(G[3]);if(J)G[1]=G[1]||"eval",G[3]=J[1],G[4]=J[2],G[5]=""}let Q=G[3],Y=G[1]||eZ;return[Y,Q]=fs(Y,Q),f3(Z,Q,Y,G[4]?+G[4]:void 0,G[5]?+G[5]:void 0)}};var FA0=D(()=>{IH();TM1();eG8=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,$X8=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var ZX8,HA0=($,Z)=>{let G=ZX8.exec($);return G?f3(Z,G[2],G[1]||eZ,+G[3],G[4]?+G[4]:void 0):void 0};var NA0=D(()=>{IH();ZX8=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var GX8,OA0=($,Z)=>{let G=GX8.exec($);return G?f3(Z,G[2],G[3]||eZ,+G[1]):void 0},XX8,BA0=($,Z)=>{let G=XX8.exec($);return G?f3(Z,G[5],G[3]||G[4]||eZ,+G[1],+G[2]):void 0};var DA0=D(()=>{IH();GX8=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,XX8=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function JX8($,Z=!1){return!(Z||$&&!$.startsWith("/")&&!$.match(/^[A-Z]:/)&&!$.startsWith(".")&&!$.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&$!==void 0&&!$.includes("node_modules/")}function LA0($){return parseInt($||"",10)||void 0}var QX8,YX8,EA0=($,Z)=>{let G=$.match(YX8);if(G){let X,Q,Y,J,W;if(G[1]){Y=G[1];let F=Y.lastIndexOf(".");if(Y[F-1]===".")F--;if(F>0){X=Y.slice(0,F),Q=Y.slice(F+1);let H=X.indexOf(".Module");if(H>0)Y=Y.slice(H+1),X=X.slice(0,H)}J=void 0}if(Q)J=X,W=Q;if(Q==="<anonymous>")W=void 0,Y=void 0;if(Y===void 0)W=W||eZ,Y=J?`${J}.${W}`:W;let K=G[2]?.startsWith("file://")?G[2].slice(7):G[2],U=G[5]==="native";if(K?.match(/\/[A-Z]:/))K=K.slice(1);if(!K&&G[5]&&!U)K=G[5];return{filename:K?decodeURI(K):void 0,module:void 0,function:Y,lineno:LA0(G[3]),colno:LA0(G[4]),in_app:JX8(K||"",U),platform:Z}}if($.match(QX8))return{filename:$,platform:Z}};var wA0=D(()=>{IH();QX8=/^\s*[-]{4,}$/,YX8=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function PA0($){if(!$.length)return[];let Z=Array.from($);return Z.reverse(),Z.slice(0,jA0).map((G)=>({...G,filename:G.filename||WX8(Z).filename,function:G.function||eZ}))}function WX8($){return $[$.length-1]||{}}function KX8(){return AA0("web:javascript",qM1,MM1)}function AA0($,...Z){return(G,X=0)=>{let Q=[],Y=G.split(`
|
|
84
|
+
`.trim();_z0=Oq1("site-diagnostics_"),tZ8=_z0.is,oZ8=_z0.get,iX={AGENT_MANAGER:($)=>`studio-agent-manager_${$}`,AUTOMATION_MANAGER:($)=>`studio-automation-manager_${$}`,CONNECTION_MANAGER:($)=>`studio-connection-manager_${$}`,STORE_MANAGER:($)=>`studio-store-manager_${$}`,BRAND_MANAGER:($)=>`studio-brand-manager_${$}`,USAGE_MANAGER:($)=>`studio-usage-manager_${$}`}});var vz0=D(()=>{fI1();wr();ra();sa()});var fz0=D(()=>{eF()});var xz0=D(()=>{Q9();eF()});var yz0=D(()=>{Q9();eF()});var gz0=D(()=>{yI1();wr();ra();sa();eF()});var hz0=D(()=>{wr();vz0();ra();fz0();xz0();yz0();gz0()});import{z as M$}from"zod";function v3($){return $!==null&&$!==void 0&&"command"in $}function bB($){if(!$||!$.startsWith("virtual://"))return null;return $.replace("virtual://","")}function vB($){return`virtual://${$}`}var k78,uz0,V78,S78,C78,DG,og,rg;var cz0=D(()=>{Q9();k78=M$.object({authorizationEndpoint:M$.string().url(),tokenEndpoint:M$.string().url(),introspectionEndpoint:M$.string().url().optional(),clientId:M$.string(),clientSecret:M$.string().optional(),scopes:M$.array(M$.string()),grantType:M$.enum(["authorization_code","client_credentials"])}),uz0=M$.object({type:M$.literal("object"),properties:M$.record(M$.string(),M$.unknown()).optional(),required:M$.array(M$.string()).optional()}).catchall(M$.unknown()),V78=xr.extend({inputSchema:uz0,outputSchema:uz0.optional()}),S78=M$.object({headers:M$.record(M$.string(),M$.string()).optional()}),C78=M$.object({command:M$.string().describe("Command to run (e.g., 'npx', 'node')"),args:M$.array(M$.string()).optional().describe("Command arguments"),cwd:M$.string().optional().describe("Working directory"),envVars:M$.record(M$.string(),M$.string()).optional().describe("Environment variables (encrypted in storage)")}),DG=M$.object({id:M$.string().describe("Unique identifier for the connection"),title:M$.string().describe("Human-readable name for the connection"),created_at:M$.string().describe("When the connection was created"),updated_at:M$.string().describe("When the connection was last updated"),created_by:M$.string().describe("User ID who created the connection"),updated_by:M$.string().optional().describe("User ID who last updated the connection"),organization_id:M$.string().describe("Organization ID this connection belongs to"),description:M$.string().nullable().describe("Description of the connection"),icon:M$.string().nullable().describe("Icon URL for the connection"),app_name:M$.string().nullable().describe("Associated app name"),app_id:M$.string().nullable().describe("Associated app ID"),slug:M$.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),connection_type:M$.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:M$.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:M$.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:M$.union([C78,S78]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:k78.nullable().describe("OAuth configuration"),configuration_state:M$.record(M$.string(),M$.unknown()).nullable().describe("Configuration state (decrypted)"),configuration_scopes:M$.array(M$.string()).nullable().optional().describe("Configuration scopes"),metadata:M$.record(M$.string(),M$.unknown()).nullable().describe("Additional metadata (includes repository info)"),tools:M$.array(V78).nullable().describe("Discovered tools from MCP"),bindings:M$.array(M$.string()).nullable().describe("Detected bindings"),status:M$.enum(["active","inactive","error"]).describe("Current status")}),og=DG.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:M$.string().nullish()}),rg=DG.partial()});import{z as s1}from"zod";function ea($){let Z=$?.homeTiles;if(Array.isArray(Z)&&Z.length>0)return Z;let G=$?.homeTile;return G?[G]:[]}function $s($){return $==="cluster"?"agent-sandbox":$}function Mq1($){let Z=x78.parse($);return Zs.parse({...Z,sandboxProviderKind:Z.sandboxProviderKind?$s(Z.sandboxProviderKind):void 0})}function uK($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z=$,G={};for(let[X,Q]of Object.entries(Z)){if(!Q||typeof Q!=="object")continue;if(X!=="cluster"&&X!=="agent-sandbox"&&X!=="user-desktop")continue;let Y=$s(X);try{if(X==="cluster"&&G[Y])continue;G[Y]=Mq1(Q)}catch{}}return G}function Gs($){if(!$||typeof $!=="object"||Array.isArray($))return{};let Z={};for(let[G,X]of Object.entries($)){if(!X||typeof X!=="object"||Array.isArray(X))continue;let Q={};for(let[Y,J]of Object.entries(X)){let W=uK(J);if(Object.keys(W).length>0)Q[Y]=W}if(Object.keys(Q).length>0)Z[G]=Q}return Z}var ag,mz0,_78,Aq1,Rq1,lz0,Iq1,sg,dz0,b78,Tq1,qq1,v78,f78,iz0,Zs,x78,eg,LG,$h,Zh;var nz0=D(()=>{ag=s1.object({connection_id:s1.string().describe("Connection ID"),selected_tools:s1.array(s1.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:s1.array(s1.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:s1.array(s1.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),mz0=ag.extend({selected_tools:ag.shape.selected_tools.optional(),selected_resources:ag.shape.selected_resources.optional(),selected_prompts:ag.shape.selected_prompts.optional()}),_78=s1.object({connectionId:s1.string(),toolName:s1.string(),label:s1.string(),icon:s1.string().nullable().optional()}),Aq1=s1.object({id:s1.string().describe("Stable id; used as React key and ?tab= value"),title:s1.string().describe("Tab label"),icon:s1.string().optional().describe("Optional lucide icon name"),view:s1.object({type:s1.literal("ext-app"),appId:s1.string(),args:s1.record(s1.string(),s1.unknown()).optional()})}),Rq1=s1.object({defaultMainView:s1.object({type:s1.string(),id:s1.string().optional(),toolName:s1.string().optional()}).nullable().optional(),chatDefaultOpen:s1.boolean().nullable().optional(),tabs:s1.array(Aq1).optional()}),lz0=s1.object({connectionId:s1.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:s1.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),minHeight:s1.number().int().positive().optional(),maxHeight:s1.number().int().positive().optional()}),Iq1=s1.object({banner:s1.string().nullable().optional(),bannerColor:s1.string().nullable().optional(),icon:s1.string().nullable().optional(),themeColor:s1.string().nullable().optional(),pinnedViews:s1.array(_78).nullable().optional(),layout:Rq1.nullable().optional(),homeTile:lz0.nullable().optional(),homeTiles:s1.array(lz0).nullable().optional(),homePrompts:s1.array(s1.string()).nullable().optional()});sg=/^[A-Za-z_][A-Za-z0-9_]*$/,dz0=s1.string().min(1).regex(sg,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),b78=s1.discriminatedUnion("kind",[s1.object({key:dz0,kind:s1.literal("literal"),value:s1.string()}),s1.object({key:dz0,kind:s1.literal("secret"),secretId:s1.string().min(1)})]),Tq1=s1.object({selected:s1.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:s1.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:s1.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:s1.array(b78).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that mesh resolves via the credential vault before posting /_sandbox/config.")}),qq1=s1.object({url:s1.string().describe("GitHub repository URL"),owner:s1.string().describe("Repository owner"),name:s1.string().describe("Repository name"),installationId:s1.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:s1.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials.")}),v78=s1.enum(["agent-sandbox","user-desktop"]),f78=s1.enum(["agent-sandbox","user-desktop","cluster"]);iz0={sandboxHandle:s1.string().describe("Provider-specific handle"),previewUrl:s1.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:s1.string().nullable().optional().describe("Daemon's public URL \u2014 what cluster\u2192daemon RPCs target. Equal to previewUrl for user-desktop; null/absent for the agent-sandbox provider (routes through hosted ingress)."),sandboxProviderKind:v78.optional(),createdAt:s1.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:s1.object({packageManager:s1.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:s1.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:s1.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},Zs=s1.object(iz0),x78=s1.object({...iz0,sandboxProviderKind:f78.optional()});eg=s1.record(s1.string().describe("userId"),s1.record(s1.string().describe("branch"),s1.record(s1.string().describe("sandboxProviderKind"),Zs)));LG=s1.object({id:s1.string().describe("Unique identifier"),title:s1.string().describe("Human-readable name"),description:s1.string().nullable().describe("Description"),icon:s1.string().nullable().describe("Icon URL"),created_at:s1.string().describe("Creation timestamp"),updated_at:s1.string().describe("Last update timestamp"),created_by:s1.string().describe("User ID who created this item"),updated_by:s1.string().optional().describe("User ID who last updated this item"),organization_id:s1.string().describe("Organization ID this item belongs to"),status:s1.enum(["active","inactive"]).describe("Current status"),pinned:s1.boolean().describe("Whether this space is pinned to the sidebar"),metadata:s1.object({instructions:s1.string().nullable().describe("Instructions also used as system prompt"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:s1.array(ag).describe("Connections with their selected tools, resources, and prompts")}),$h=s1.object({title:s1.string().min(1).max(255).describe("Name for the virtual MCP"),description:s1.string().nullable().optional().describe("Optional description"),icon:s1.string().nullish().describe("Optional icon URL"),status:s1.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:s1.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:s1.object({instructions:s1.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:s1.array(mz0).describe("Connections to include/exclude (can be empty for exclusion mode)")}),Zh=s1.object({title:s1.string().min(1).max(255).optional().describe("New name"),description:s1.string().nullable().optional().describe("New description (null to clear)"),icon:s1.string().nullish().describe("New icon URL"),status:s1.enum(["active","inactive"]).optional().describe("New status"),pinned:s1.boolean().optional().describe("Pin/unpin from sidebar"),metadata:s1.object({instructions:s1.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:s1.array(s1.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:s1.array(s1.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:Iq1.nullable().optional().describe("UI customization settings"),githubRepo:qq1.nullable().optional().describe("Linked GitHub repository"),runtime:Tq1.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:eg.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:s1.array(mz0).optional().describe("New connections (replaces existing)")})});var sZ;var pz0=D(()=>{sZ=["deco","anthropic","openrouter","google","claude-code","codex","openai-compatible"]});function Xs($,Z){return{id:crypto.randomUUID(),type:hC.STEP,source:"decopilot",subject:$,data:{stepCount:Z},time:new Date().toISOString()}}function wH($,Z){return{id:crypto.randomUUID(),type:hC.FINISH,source:"decopilot",subject:$,data:{status:Z},time:new Date().toISOString()}}function eQ($,Z,G){return{id:crypto.randomUUID(),type:hC.THREAD_STATUS,source:"decopilot",subject:$,data:{status:Z,...G?.virtualMcpId!==void 0&&{virtual_mcp_id:G.virtualMcpId},...G?.createdBy!==void 0&&{created_by:G.createdBy},...G?.triggerId!==void 0&&{trigger_id:G.triggerId},...G?.title!==void 0&&{title:G.title},...G?.branch!==void 0&&{branch:G.branch},...G?.createdAt!==void 0&&{created_at:G.createdAt},...G?.updatedAt!==void 0&&{updated_at:G.updatedAt},...G?.metadata!==void 0&&{metadata:G.metadata}},time:new Date().toISOString()}}var gC,tz0,hC,oz0;var rz0=D(()=>{gC=["in_progress","requires_action","failed","completed"],tz0=[...gC,"expired"],hC={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},oz0=Object.values(hC)});var Qs=D(()=>{cz0();nz0();pz0();rz0()});function g78(){let $=new az0.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return sz0.default($),$}class ez0{#$=g78();#Z=new Map;getValidator($){let Z=h78($),G=this.#Z.get(Z);if(!G)G=this.#$.compile($),this.#Z.set(Z,G);let X=G;return(Q)=>{if(X(Q))return{valid:!0,data:Q,errorMessage:void 0};return{valid:!1,data:void 0,errorMessage:this.#$.errorsText(X.errors)}}}}function h78($){return JSON.stringify($,(Z,G)=>{if(G&&typeof G==="object"&&!Array.isArray(G))return Object.fromEntries(Object.keys(G).sort().map((X)=>[X,G[X]]));return G})}var az0,sz0,u9;var kq1=D(()=>{az0=f(Sa(),1),sz0=f(m21(),1);u9=new ez0});class uC{innerTransport;constructor($){this.innerTransport=$}get sessionId(){return this.innerTransport.sessionId}async start(){return this.innerTransport.onmessage=($)=>{this.handleIncomingMessage($)},this.innerTransport.onerror=($)=>{this.onerror?.($)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send($){return this.handleOutgoingMessage($)}async close(){return this.innerTransport.close()}async handleOutgoingMessage($){return this.innerTransport.send($)}handleIncomingMessage($){this.onmessage?.($)}isRequest($){return"method"in $&&$.method!==void 0}isResponse($){return"result"in $||"error"in $&&!("method"in $)}onmessage;onerror;onclose}function cC($,...Z){return Z.reduce((G,X)=>X(G),$)}class Vq1{constructor($){this._server=$}requestStream($,Z,G){return this._server.requestStream($,Z,G)}createMessageStream($,Z){let G=this._server.getClientCapabilities();if(($.tools||$.toolChoice)&&!G?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if($.messages.length>0){let X=$.messages[$.messages.length-1],Q=Array.isArray(X.content)?X.content:[X.content],Y=Q.some((U)=>U.type==="tool_result"),J=$.messages.length>1?$.messages[$.messages.length-2]:void 0,W=J?Array.isArray(J.content)?J.content:[J.content]:[],K=W.some((U)=>U.type==="tool_use");if(Y){if(Q.some((U)=>U.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!K)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(K){let U=new Set(W.filter((H)=>H.type==="tool_use").map((H)=>H.id)),F=new Set(Q.filter((H)=>H.type==="tool_result").map((H)=>H.toolUseId));if(U.size!==F.size||![...U].every((H)=>F.has(H)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:$},RB,Z)}elicitInputStream($,Z){let G=this._server.getClientCapabilities(),X=$.mode??"form";switch(X){case"url":{if(!G?.elicitation?.url)throw Error("Client does not support url elicitation.");break}case"form":{if(!G?.elicitation?.form)throw Error("Client does not support form elicitation.");break}}let Q=X==="form"&&$.mode===void 0?{...$,mode:"form"}:$;return this.requestStream({method:"elicitation/create",params:Q},WH,Z)}async getTask($,Z){return this._server.getTask({taskId:$},Z)}async getTaskResult($,Z,G){return this._server.getTaskResult({taskId:$},Z,G)}async listTasks($,Z){return this._server.listTasks($?{cursor:$}:void 0,Z)}async cancelTask($,Z){return this._server.cancelTask({taskId:$},Z)}}var $j0=D(()=>{Q9()});var Sq1;var Zj0=D(()=>{cT1();Q9();i21();OC();$j0();Sq1=class Sq1 extends Rg{constructor($,Z){super(Z);if(this._serverInfo=$,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(zg.options.map((G,X)=>[G,X])),this.isMessageIgnored=(G,X)=>{let Q=this._loggingLevels.get(X);return Q?this.LOG_LEVEL_SEVERITY.get(G)<this.LOG_LEVEL_SEVERITY.get(Q):!1},this._capabilities=Z?.capabilities??{},this._instructions=Z?.instructions,this._jsonSchemaValidator=Z?.jsonSchemaValidator??new pg,this.setRequestHandler(qr,(G)=>this._oninitialize(G)),this.setNotificationHandler(Mr,()=>this.oninitialized?.()),this._capabilities.logging)this.setRequestHandler(QT1,async(G,X)=>{let Q=X.sessionId||X.requestInfo?.headers["mcp-session-id"]||void 0,{level:Y}=G.params,J=zg.safeParse(Y);if(J.success)this._loggingLevels.set(Q,J.data);return{}})}get experimental(){if(!this._experimental)this._experimental={tasks:new Vq1(this)};return this._experimental}registerCapabilities($){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=pr(this._capabilities,$)}setRequestHandler($,Z){let X=q3($)?.method;if(!X)throw Error("Schema is missing a method literal");let Q;if(iG(X)){let J=X;Q=J._zod?.def?.value??J.value}else{let J=X;Q=J._def?.value??J.value}if(typeof Q!=="string")throw Error("Schema method literal must be a string");if(Q==="tools/call"){let J=async(W,K)=>{let U=HG(JH,W);if(!U.success){let O=U.error instanceof Error?U.error.message:String(U.error);throw new V0(y0.InvalidParams,`Invalid tools/call request: ${O}`)}let{params:F}=U.data,H=await Promise.resolve(Z(W,K));if(F.task){let O=HG(vK,H);if(!O.success){let B=O.error instanceof Error?O.error.message:String(O.error);throw new V0(y0.InvalidParams,`Invalid task creation result: ${B}`)}return O.data}let N=HG(k3,H);if(!N.success){let O=N.error instanceof Error?N.error.message:String(N.error);throw new V0(y0.InvalidParams,`Invalid tools/call result: ${O}`)}return N.data};return super.setRequestHandler($,J)}return super.setRequestHandler($,Z)}assertCapabilityForMethod($){switch($){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${$})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${$})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${$})`);break;case"ping":break}}assertNotificationCapability($){switch($){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${$})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${$})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${$})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${$})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability($){if(!this._capabilities)return;switch($){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${$})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${$})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${$})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${$})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${$})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${$})`);break;case"ping":case"initialize":break}}assertTaskCapability($){ba(this._clientCapabilities?.tasks?.requests,$,"Client")}assertTaskHandlerCapability($){if(!this._capabilities)return;_a(this._capabilities.tasks?.requests,$,"Server")}async _oninitialize($){let Z=$.params.protocolVersion;return this._clientCapabilities=$.params.capabilities,this._clientVersion=$.params.clientInfo,{protocolVersion:ZH.includes(Z)?Z:$H,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},bK)}async createMessage($,Z){if($.tools||$.toolChoice){if(!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.")}if($.messages.length>0){let G=$.messages[$.messages.length-1],X=Array.isArray(G.content)?G.content:[G.content],Q=X.some((K)=>K.type==="tool_result"),Y=$.messages.length>1?$.messages[$.messages.length-2]:void 0,J=Y?Array.isArray(Y.content)?Y.content:[Y.content]:[],W=J.some((K)=>K.type==="tool_use");if(Q){if(X.some((K)=>K.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!W)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(W){let K=new Set(J.filter((F)=>F.type==="tool_use").map((F)=>F.id)),U=new Set(X.filter((F)=>F.type==="tool_result").map((F)=>F.toolUseId));if(K.size!==U.size||![...K].every((F)=>U.has(F)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}if($.tools)return this.request({method:"sampling/createMessage",params:$},jg,Z);return this.request({method:"sampling/createMessage",params:$},RB,Z)}async elicitInput($,Z){switch($.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");let X=$;return this.request({method:"elicitation/create",params:X},WH,Z)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let X=$.mode==="form"?$:{...$,mode:"form"},Q=await this.request({method:"elicitation/create",params:X},WH,Z);if(Q.action==="accept"&&Q.content&&X.requestedSchema)try{let J=this._jsonSchemaValidator.getValidator(X.requestedSchema)(Q.content);if(!J.valid)throw new V0(y0.InvalidParams,`Elicitation response content does not match requested schema: ${J.errorMessage}`)}catch(Y){if(Y instanceof V0)throw Y;throw new V0(y0.InternalError,`Error validating elicitation response: ${Y instanceof Error?Y.message:String(Y)}`)}return Q}}}createElicitationCompletionNotifier($,Z){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:$}},Z)}async listRoots($,Z){return this.request({method:"roots/list",params:$},KT1,Z)}async sendLoggingMessage($,Z){if(this._capabilities.logging){if(!this.isMessageIgnored($.level,Z))return this.notification({method:"notifications/message",params:$})}}async sendResourceUpdated($){return this.notification({method:"notifications/resources/updated",params:$})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function Cq1($){return!!$&&typeof $==="object"&&Xj0 in $}function Qj0($){return $[Xj0]?.complete}var Xj0,Gj0;var Yj0=D(()=>{Xj0=Symbol.for("mcp.completable");(function($){$.Completable="McpCompletable"})(Gj0||(Gj0={}))});function c78($){let Z=[];if($.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if($.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${$.length})`]};if($.includes(" "))Z.push("Tool name contains spaces, which may cause parsing issues");if($.includes(","))Z.push("Tool name contains commas, which may cause parsing issues");if($.startsWith("-")||$.endsWith("-"))Z.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts");if($.startsWith(".")||$.endsWith("."))Z.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts");if(!u78.test($)){let G=$.split("").filter((X)=>!/[A-Za-z0-9._-]/.test(X)).filter((X,Q,Y)=>Y.indexOf(X)===Q);return Z.push(`Tool name contains invalid characters: ${G.map((X)=>`"${X}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:Z}}return{isValid:!0,warnings:Z}}function l78($,Z){if(Z.length>0){console.warn(`Tool name validation warning for "${$}":`);for(let G of Z)console.warn(` - ${G}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function _q1($){let Z=c78($);return l78($,Z.warnings),Z.isValid}var u78;var Jj0=D(()=>{u78=/^[A-Za-z0-9._-]{1,128}$/});class bq1{constructor($){this._mcpServer=$}registerToolTask($,Z,G){let X={taskSupport:"required",...Z.execution};if(X.taskSupport==="forbidden")throw Error(`Cannot register task-based tool '${$}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool($,Z.title,Z.description,Z.inputSchema,Z.outputSchema,Z.annotations,X,Z._meta,G)}}import{ZodOptional as d78}from"zod";class cK{constructor($,Z){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Sq1($,Z)}get experimental(){if(!this._experimental)this._experimental={tasks:new bq1(this)};return this._experimental}async connect($){return await this.server.connect($)}async close(){await this.server.close()}setToolRequestHandlers(){if(this._toolHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(zC)),this.server.assertCanSetRequestHandler(zH(JH)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(zC,()=>({tools:Object.entries(this._registeredTools).filter(([,$])=>$.enabled).map(([$,Z])=>{let G={name:$,title:Z.title,description:Z.description,inputSchema:(()=>{let X=NC(Z.inputSchema);return X?yT1(X,{strictUnions:!0,pipeStrategy:"input"}):m78})(),annotations:Z.annotations,execution:Z.execution,_meta:Z._meta};if(Z.outputSchema){let X=NC(Z.outputSchema);if(X)G.outputSchema=yT1(X,{strictUnions:!0,pipeStrategy:"output"})}return G})})),this.server.setRequestHandler(JH,async($,Z)=>{try{let G=this._registeredTools[$.params.name];if(!G)throw new V0(y0.InvalidParams,`Tool ${$.params.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Tool ${$.params.name} disabled`);let X=!!$.params.task,Q=G.execution?.taskSupport,Y="createTask"in G.handler;if((Q==="required"||Q==="optional")&&!Y)throw new V0(y0.InternalError,`Tool ${$.params.name} has taskSupport '${Q}' but was not registered with registerToolTask`);if(Q==="required"&&!X)throw new V0(y0.MethodNotFound,`Tool ${$.params.name} requires task augmentation (taskSupport: 'required')`);if(Q==="optional"&&!X&&Y)return await this.handleAutomaticTaskPolling(G,$,Z);let J=await this.validateToolInput(G,$.params.arguments,$.params.name),W=await this.executeToolHandler(G,J,Z);if(X)return W;return await this.validateToolOutput(G,W,$.params.name),W}catch(G){if(G instanceof V0){if(G.code===y0.UrlElicitationRequired)throw G}return this.createToolError(G instanceof Error?G.message:String(G))}}),this._toolHandlersInitialized=!0}createToolError($){return{content:[{type:"text",text:$}],isError:!0}}async validateToolInput($,Z,G){if(!$.inputSchema)return;let Q=NC($.inputSchema)??$.inputSchema,Y=await zr(Q,Z);if(!Y.success){let J="error"in Y?Y.error:"Unknown error",W=jr(J);throw new V0(y0.InvalidParams,`Input validation error: Invalid arguments for tool ${G}: ${W}`)}return Y.data}async validateToolOutput($,Z,G){if(!$.outputSchema)return;if(!("content"in Z))return;if(Z.isError)return;if(!Z.structuredContent)throw new V0(y0.InvalidParams,`Output validation error: Tool ${G} has an output schema but no structured content was provided`);let X=NC($.outputSchema),Q=await zr(X,Z.structuredContent);if(!Q.success){let Y="error"in Q?Q.error:"Unknown error",J=jr(Y);throw new V0(y0.InvalidParams,`Output validation error: Invalid structured content for tool ${G}: ${J}`)}}async executeToolHandler($,Z,G){let X=$.handler;if("createTask"in X){if(!G.taskStore)throw Error("No task store provided.");let Y={...G,taskStore:G.taskStore};if($.inputSchema)return await Promise.resolve(X.createTask(Z,Y));else return await Promise.resolve(X.createTask(Y))}if($.inputSchema)return await Promise.resolve(X(Z,G));else return await Promise.resolve(X(G))}async handleAutomaticTaskPolling($,Z,G){if(!G.taskStore)throw Error("No task store provided for task-capable tool.");let X=await this.validateToolInput($,Z.params.arguments,Z.params.name),Q=$.handler,Y={...G,taskStore:G.taskStore},J=X?await Promise.resolve(Q.createTask(X,Y)):await Promise.resolve(Q.createTask(Y)),W=J.task.taskId,K=J.task,U=K.pollInterval??5000;while(K.status!=="completed"&&K.status!=="failed"&&K.status!=="cancelled"){await new Promise((H)=>setTimeout(H,U));let F=await G.taskStore.getTask(W);if(!F)throw new V0(y0.InternalError,`Task ${W} not found during polling`);K=F}return await G.taskStore.getTaskResult(W)}setCompletionRequestHandler(){if(this._completionHandlerInitialized)return;this.server.assertCanSetRequestHandler(zH(yr)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(yr,async($)=>{switch($.params.ref.type){case"ref/prompt":return tO0($),this.handlePromptCompletion($,$.params.ref);case"ref/resource":return oO0($),this.handleResourceCompletion($,$.params.ref);default:throw new V0(y0.InvalidParams,`Invalid completion reference: ${$.params.ref}`)}}),this._completionHandlerInitialized=!0}async handlePromptCompletion($,Z){let G=this._registeredPrompts[Z.name];if(!G)throw new V0(y0.InvalidParams,`Prompt ${Z.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Prompt ${Z.name} disabled`);if(!G.argsSchema)return Gh;let Q=q3(G.argsSchema)?.[$.params.argument.name];if(!Cq1(Q))return Gh;let Y=Qj0(Q);if(!Y)return Gh;let J=await Y($.params.argument.value,$.params.context);return Kj0(J)}async handleResourceCompletion($,Z){let G=Object.values(this._registeredResourceTemplates).find((Y)=>Y.resourceTemplate.uriTemplate.toString()===Z.uri);if(!G){if(this._registeredResources[Z.uri])return Gh;throw new V0(y0.InvalidParams,`Resource template ${$.params.ref.uri} not found`)}let X=G.resourceTemplate.completeCallback($.params.argument.name);if(!X)return Gh;let Q=await X($.params.argument.value,$.params.context);return Kj0(Q)}setResourceRequestHandlers(){if(this._resourceHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(XH)),this.server.assertCanSetRequestHandler(zH(QH)),this.server.assertCanSetRequestHandler(zH(EC)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(XH,async($,Z)=>{let G=Object.entries(this._registeredResources).filter(([Q,Y])=>Y.enabled).map(([Q,Y])=>({uri:Q,name:Y.name,...Y.metadata})),X=[];for(let Q of Object.values(this._registeredResourceTemplates)){if(!Q.resourceTemplate.listCallback)continue;let Y=await Q.resourceTemplate.listCallback(Z);for(let J of Y.resources)X.push({...Q.metadata,...J})}return{resources:[...G,...X]}}),this.server.setRequestHandler(QH,async()=>{return{resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([Z,G])=>({name:Z,uriTemplate:G.resourceTemplate.uriTemplate.toString(),...G.metadata}))}}),this.server.setRequestHandler(EC,async($,Z)=>{let G=new URL($.params.uri),X=this._registeredResources[G.toString()];if(X){if(!X.enabled)throw new V0(y0.InvalidParams,`Resource ${G} disabled`);return X.readCallback(G,Z)}for(let Q of Object.values(this._registeredResourceTemplates)){let Y=Q.resourceTemplate.uriTemplate.match(G.toString());if(Y)return Q.readCallback(G,Y,Z)}throw new V0(y0.InvalidParams,`Resource ${G} not found`)}),this._resourceHandlersInitialized=!0}setPromptRequestHandlers(){if(this._promptHandlersInitialized)return;this.server.assertCanSetRequestHandler(zH(YH)),this.server.assertCanSetRequestHandler(zH(wC)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(YH,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,$])=>$.enabled).map(([$,Z])=>{return{name:$,title:Z.title,description:Z.description,arguments:Z.argsSchema?i78(Z.argsSchema):void 0}})})),this.server.setRequestHandler(wC,async($,Z)=>{let G=this._registeredPrompts[$.params.name];if(!G)throw new V0(y0.InvalidParams,`Prompt ${$.params.name} not found`);if(!G.enabled)throw new V0(y0.InvalidParams,`Prompt ${$.params.name} disabled`);if(G.argsSchema){let X=NC(G.argsSchema),Q=await zr(X,$.params.arguments);if(!Q.success){let W="error"in Q?Q.error:"Unknown error",K=jr(W);throw new V0(y0.InvalidParams,`Invalid arguments for prompt ${$.params.name}: ${K}`)}let Y=Q.data,J=G.callback;return await Promise.resolve(J(Y,Z))}else{let X=G.callback;return await Promise.resolve(X(Z))}}),this._promptHandlersInitialized=!0}resource($,Z,...G){let X;if(typeof G[0]==="object")X=G.shift();let Q=G[0];if(typeof Z==="string"){if(this._registeredResources[Z])throw Error(`Resource ${Z} is already registered`);let Y=this._createRegisteredResource($,void 0,Z,X,Q);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Y}else{if(this._registeredResourceTemplates[$])throw Error(`Resource template ${$} is already registered`);let Y=this._createRegisteredResourceTemplate($,void 0,Z,X,Q);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Y}}registerResource($,Z,G,X){if(typeof Z==="string"){if(this._registeredResources[Z])throw Error(`Resource ${Z} is already registered`);let Q=this._createRegisteredResource($,G.title,Z,G,X);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Q}else{if(this._registeredResourceTemplates[$])throw Error(`Resource template ${$} is already registered`);let Q=this._createRegisteredResourceTemplate($,G.title,Z,G,X);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),Q}}_createRegisteredResource($,Z,G,X,Q){let Y={name:$,title:Z,metadata:X,readCallback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({uri:null}),update:(J)=>{if(typeof J.uri<"u"&&J.uri!==G){if(delete this._registeredResources[G],J.uri)this._registeredResources[J.uri]=Y}if(typeof J.name<"u")Y.name=J.name;if(typeof J.title<"u")Y.title=J.title;if(typeof J.metadata<"u")Y.metadata=J.metadata;if(typeof J.callback<"u")Y.readCallback=J.callback;if(typeof J.enabled<"u")Y.enabled=J.enabled;this.sendResourceListChanged()}};return this._registeredResources[G]=Y,Y}_createRegisteredResourceTemplate($,Z,G,X,Q){let Y={resourceTemplate:G,title:Z,metadata:X,readCallback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({name:null}),update:(K)=>{if(typeof K.name<"u"&&K.name!==$){if(delete this._registeredResourceTemplates[$],K.name)this._registeredResourceTemplates[K.name]=Y}if(typeof K.title<"u")Y.title=K.title;if(typeof K.template<"u")Y.resourceTemplate=K.template;if(typeof K.metadata<"u")Y.metadata=K.metadata;if(typeof K.callback<"u")Y.readCallback=K.callback;if(typeof K.enabled<"u")Y.enabled=K.enabled;this.sendResourceListChanged()}};this._registeredResourceTemplates[$]=Y;let J=G.uriTemplate.variableNames;if(Array.isArray(J)&&J.some((K)=>!!G.completeCallback(K)))this.setCompletionRequestHandler();return Y}_createRegisteredPrompt($,Z,G,X,Q){let Y={title:Z,description:G,argsSchema:X===void 0?void 0:AB(X),callback:Q,enabled:!0,disable:()=>Y.update({enabled:!1}),enable:()=>Y.update({enabled:!0}),remove:()=>Y.update({name:null}),update:(J)=>{if(typeof J.name<"u"&&J.name!==$){if(delete this._registeredPrompts[$],J.name)this._registeredPrompts[J.name]=Y}if(typeof J.title<"u")Y.title=J.title;if(typeof J.description<"u")Y.description=J.description;if(typeof J.argsSchema<"u")Y.argsSchema=AB(J.argsSchema);if(typeof J.callback<"u")Y.callback=J.callback;if(typeof J.enabled<"u")Y.enabled=J.enabled;this.sendPromptListChanged()}};if(this._registeredPrompts[$]=Y,X){if(Object.values(X).some((W)=>{let K=W instanceof d78?W._def?.innerType:W;return Cq1(K)}))this.setCompletionRequestHandler()}return Y}_createRegisteredTool($,Z,G,X,Q,Y,J,W,K){_q1($);let U={title:Z,description:G,inputSchema:Wj0(X),outputSchema:Wj0(Q),annotations:Y,execution:J,_meta:W,handler:K,enabled:!0,disable:()=>U.update({enabled:!1}),enable:()=>U.update({enabled:!0}),remove:()=>U.update({name:null}),update:(F)=>{if(typeof F.name<"u"&&F.name!==$){if(typeof F.name==="string")_q1(F.name);if(delete this._registeredTools[$],F.name)this._registeredTools[F.name]=U}if(typeof F.title<"u")U.title=F.title;if(typeof F.description<"u")U.description=F.description;if(typeof F.paramsSchema<"u")U.inputSchema=AB(F.paramsSchema);if(typeof F.outputSchema<"u")U.outputSchema=AB(F.outputSchema);if(typeof F.callback<"u")U.handler=F.callback;if(typeof F.annotations<"u")U.annotations=F.annotations;if(typeof F._meta<"u")U._meta=F._meta;if(typeof F.enabled<"u")U.enabled=F.enabled;this.sendToolListChanged()}};return this._registeredTools[$]=U,this.setToolRequestHandlers(),this.sendToolListChanged(),U}tool($,...Z){if(this._registeredTools[$])throw Error(`Tool ${$} is already registered`);let G,X,Q,Y;if(typeof Z[0]==="string")G=Z.shift();if(Z.length>1){let W=Z[0];if(vq1(W)){if(X=Z.shift(),Z.length>1&&typeof Z[0]==="object"&&Z[0]!==null&&!vq1(Z[0]))Y=Z.shift()}else if(typeof W==="object"&&W!==null){if(Object.values(W).some((K)=>typeof K==="object"&&K!==null))throw Error(`Tool ${$} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);Y=Z.shift()}}let J=Z[0];return this._createRegisteredTool($,void 0,G,X,Q,Y,{taskSupport:"forbidden"},void 0,J)}registerTool($,Z,G){if(this._registeredTools[$])throw Error(`Tool ${$} is already registered`);let{title:X,description:Q,inputSchema:Y,outputSchema:J,annotations:W,_meta:K}=Z;return this._createRegisteredTool($,X,Q,Y,J,W,{taskSupport:"forbidden"},K,G)}prompt($,...Z){if(this._registeredPrompts[$])throw Error(`Prompt ${$} is already registered`);let G;if(typeof Z[0]==="string")G=Z.shift();let X;if(Z.length>1)X=Z.shift();let Q=Z[0],Y=this._createRegisteredPrompt($,void 0,G,X,Q);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),Y}registerPrompt($,Z,G){if(this._registeredPrompts[$])throw Error(`Prompt ${$} is already registered`);let{title:X,description:Q,argsSchema:Y}=Z,J=this._createRegisteredPrompt($,X,Q,Y,G);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),J}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage($,Z){return this.server.sendLoggingMessage($,Z)}sendResourceListChanged(){if(this.isConnected())this.server.sendResourceListChanged()}sendToolListChanged(){if(this.isConnected())this.server.sendToolListChanged()}sendPromptListChanged(){if(this.isConnected())this.server.sendPromptListChanged()}}function Uj0($){return $!==null&&typeof $==="object"&&"parse"in $&&typeof $.parse==="function"&&"safeParse"in $&&typeof $.safeParse==="function"}function Fj0($){return"_def"in $||"_zod"in $||Uj0($)}function vq1($){if(typeof $!=="object"||$===null)return!1;if(Fj0($))return!1;if(Object.keys($).length===0)return!0;return Object.values($).some(Uj0)}function Wj0($){if(!$)return;if(vq1($))return AB($);if(!Fj0($))throw Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return $}function i78($){let Z=q3($);if(!Z)return[];return Object.entries(Z).map(([G,X])=>{let Q=CO0(X),Y=_O0(X);return{name:G,description:Q,required:!Y}})}function zH($){let G=q3($)?.method;if(!G)throw Error("Schema is missing a method literal");let X=Pr(G);if(typeof X==="string")return X;throw Error("Schema method literal must be a string")}function Kj0($){return{completion:{values:$.slice(0,100),total:$.length,hasMore:$.length>100}}}var m78,Gh;var Xh=D(()=>{Zj0();OC();uT1();Q9();Yj0();Jj0();m78={type:"object",properties:{}};Gh={completion:{values:[],hasMore:!1}}});function lK($,Z,G){let X=G?.capabilities??$.getServerCapabilities(),Q=G?.instructions??$.getInstructions(),Y=new cK(Z,{capabilities:X,instructions:Q,jsonSchemaValidator:u9});if(Y.server.setRequestHandler(zC,async(J)=>{let W=await $.listTools(J.params);return{...W,tools:W.tools.map(({outputSchema:K,...U})=>U)}}),Y.server.setRequestHandler(JH,(J)=>$.callTool(J.params,void 0,G?.toolCallTimeoutMs?{timeout:G.toolCallTimeoutMs}:void 0)),X?.resources)Y.server.setRequestHandler(XH,(J)=>$.listResources(J.params)),Y.server.setRequestHandler(EC,(J)=>$.readResource(J.params)),Y.server.setRequestHandler(QH,(J)=>$.listResourceTemplates(J.params));if(X?.prompts)Y.server.setRequestHandler(YH,(J)=>$.listPrompts(J.params)),Y.server.setRequestHandler(wC,(J)=>$.getPrompt({...J.params,arguments:J.params.arguments??{}}));return Y}var Hj0=D(()=>{Xh();kq1();Q9()});class Nj0{clientQueue=[];serverQueue=[];clientClosed=!1;serverClosed=!1;clientFlushScheduled=!1;serverFlushScheduled=!1;clientTransport;serverTransport;registerTransports($,Z){this.clientTransport=$,this.serverTransport=Z,$.setOppositeTransport(Z),Z.setOppositeTransport($)}getQueue($){return $==="client"?this.clientQueue:this.serverQueue}isClosed($){return $==="client"?this.clientClosed:this.serverClosed}close($){if($==="client")this.clientClosed=!0,this.clientQueue=[];else this.serverClosed=!0,this.serverQueue=[]}enqueue($,Z){if(this.isClosed($))return;let G=this.getQueue($);if(G.length>=1e4)throw Error(`BridgeTransport: ${$} queue overflow (max 10000 messages). The receiver may not be processing messages fast enough.`);if(G.push(Z),$==="client"&&!this.clientFlushScheduled)this.scheduleFlush("client");else if($==="server"&&!this.serverFlushScheduled)this.scheduleFlush("server")}scheduleFlush($){if($==="client")this.clientFlushScheduled=!0;else this.serverFlushScheduled=!0;queueMicrotask(()=>{this.flush($)})}flush($){let Z=this.getQueue($);if($==="client")this.clientFlushScheduled=!1;else this.serverFlushScheduled=!1;if(this.isClosed($)){Z.length=0;return}let G=$==="client"?this.clientTransport:this.serverTransport;if(!G)return;if(!G.started)return;let X=Z.splice(0);for(let Q of X)G.deliverMessage(Q)}closeBoth(){this.close("client"),this.close("server")}}class fq1{channel;side;started=!1;closed=!1;_onmessage;_onerror;_onclose;constructor($,Z){this.channel=$,this.side=Z}get onmessage(){return this._onmessage}set onmessage($){if(this._onmessage=$,$&&this.started&&!this.closed)this.channel.flush(this.side)}get onerror(){return this._onerror}set onerror($){this._onerror=$}get onclose(){return this._onclose}set onclose($){this._onclose=$}async start(){if(this.started)throw Error(`${this.side==="client"?"BridgeClientTransport":"BridgeServerTransport"} already started! If using Client/Server class, note that connect() calls start() automatically.`);if(this.started=!0,this._onmessage&&!this.closed)this.channel.flush(this.side)}async send($){if(this.closed)return Promise.resolve();let Z=this.side==="client"?"server":"client";return this.channel.enqueue(Z,$),Promise.resolve()}async close(){if(!this.started||this.closed)return;this.closed=!0,this.channel.close(this.side);let $=this.getOppositeTransport();if($&&!$.closed)$._onclose?.();this._onclose?.()}deliverMessage($){if(!this.started||this.channel.isClosed(this.side))return;try{this._onmessage?.($)}catch(Z){this._onerror?.(Z)}}}function Qh(){let $=new Nj0,Z=new lC($),G=new dC($);return $.registerTransports(Z,G),{client:Z,server:G,channel:$}}var lC,dC;var Oj0=D(()=>{lC=class lC extends fq1{oppositeTransport;constructor($){super($,"client")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport($){if(!($ instanceof dC))throw Error("Opposite transport must be BridgeServerTransport");this.oppositeTransport=$}async start(){await super.start()}async send($){await super.send($)}};dC=class dC extends fq1{oppositeTransport;constructor($){super($,"server")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport($){if(!($ instanceof lC))throw Error("Opposite transport must be BridgeClientTransport");this.oppositeTransport=$}async start(){await super.start()}async send($){await super.send($)}}});var nX=D(()=>{kq1();Hj0();Oj0()});var Bj0=D(()=>{nX()});var Dj0=D(()=>{nX()});function Yh($,Z,G,X){for(let Q of G){let Y=$.find((J)=>J.modelId===Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}for(let Q of G){let Y=$.find((J)=>J.modelId.includes(Q));if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}if(X){let Q=$.find(X);if(Q)return{keyId:Z,modelId:Q.modelId,title:Q.title}}return null}function xq1($,Z){let G={chat:{fast:null,smart:null,thinking:null},image:null,webResearch:null};for(let X of $){let Q=Z[X.id]??[],Y=X.providerId;if(!G.chat.fast)G.chat.fast=Yh(Q,X.id,Lj0[Y]??[]);if(!G.chat.smart)G.chat.smart=Yh(Q,X.id,Ej0[Y]??[]);if(!G.chat.thinking)G.chat.thinking=Yh(Q,X.id,wj0[Y]??[]);if(!G.image)G.image=Yh(Q,X.id,zj0[Y]??[],(J)=>J.capabilities?.includes("image")===!0);if(!G.webResearch)G.webResearch=Yh(Q,X.id,jj0[Y]??[],(J)=>{let W=J.modelId.toLowerCase().replace(/[^a-z0-9]/g,"");return W.includes("sonar")||W.includes("deepresearch")})}return G}var Lj0,Ej0,wj0,zj0,jj0;var Pj0=D(()=>{Lj0={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],google:["gemini-2.5-flash","gemini-3-flash"],"claude-code":["claude-code:haiku","claude-code:sonnet"],codex:["codex:gpt-5.4-mini"]},Ej0={anthropic:["claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude"],google:["gemini-3-pro","gemini-3-flash"],"claude-code":["claude-code:sonnet"],codex:["codex:gpt-5.4"]},wj0={anthropic:["claude-opus-4-8","claude-sonnet-4-6","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8","anthropic/claude-sonnet-4.6:extended","anthropic/claude-sonnet-4.6","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],google:["gemini-3-pro"],"claude-code":["claude-code:opus-1m","claude-code:opus","claude-code:sonnet"],codex:["codex:gpt-5.5"]},zj0={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],google:["gemini-2.0-flash-image"]},jj0={openrouter:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"],deco:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"]}});var Aj0=D(()=>{ta()});function Jh($){if(!$)return;let Z={};for(let G in $){let X=$[G];if(typeof X==="object"&&X!==null){let Q={};for(let Y of n78)if(Y in X)Q[Y]=X[Y];Z[G]=Q}}return Object.keys(Z).length>0?Z:void 0}var n78;var Rj0=D(()=>{n78=["usage","cost","model"]});var _8=D(()=>{yI1();hz0();Qs();Kq1();Bj0();Dj0();eF();Pj0();Aj0();Rj0();sa()});import{z as Ij0}from"zod";function OJ(){return uX()===null}function Ys($,Z){return $===K4.DEV_ASSETS(Z)}function mC($,Z){let G=Nq1(Z,$),X=new Date().toISOString();return{id:G.id??K4.DEV_ASSETS($),title:G.title,description:G.description??null,icon:G.icon??null,app_name:G.app_name??null,app_id:G.app_id??null,organization_id:$,created_by:"system",created_at:X,updated_at:X,connection_type:G.connection_type,connection_url:G.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:G.metadata??null,tools:p78,bindings:["OBJECT_STORAGE"],status:"active"}}var p78;var iC=D(()=>{zB();Fg();_8();p78=jB.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:Ij0.toJSONSchema($.inputSchema),outputSchema:Ij0.toJSONSchema($.outputSchema)}))});function qj0($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"&&$!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var Tj0="https://studio.decocms.com/org/deco/registry/mcp";var yq1=($,Z,G)=>{return(X,Q)=>{let Y=-1;return J(0);async function J(W){if(W<=Y)throw Error("next() called multiple times");Y=W;let K,U=!1,F;if($[W])F=$[W][0][0],X.req.routeIndex=W;else F=W===$.length&&Q||void 0;if(F)try{K=await F(X,()=>J(W+1))}catch(H){if(H instanceof Error&&Z)X.error=H,K=await Z(H,X),U=!0;else throw H}else if(X.finalized===!1&&G)K=await G(X);if(K&&(X.finalized===!1||U))X.res=K;return X}}};var Mj0=()=>{};var a$;var BJ=D(()=>{a$=class extends Error{res;status;constructor($=500,Z){super(Z?.message,{cause:Z?.cause});this.res=Z?.res,this.status=$}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var kj0;var Vj0=D(()=>{kj0=Symbol()});async function t78($,Z){let G=await $.formData();if(G)return o78(G,Z);return{}}function o78($,Z){let G=Object.create(null);if($.forEach((X,Q)=>{if(!(Z.all||Q.endsWith("[]")))G[Q]=X;else r78(G,Q,X)}),Z.dot)Object.entries(G).forEach(([X,Q])=>{if(X.includes("."))a78(G,X,Q),delete G[X]});return G}var Sj0=async($,Z=Object.create(null))=>{let{all:G=!1,dot:X=!1}=Z,Y=($ instanceof Js?$.raw.headers:$.headers).get("Content-Type");if(Y?.startsWith("multipart/form-data")||Y?.startsWith("application/x-www-form-urlencoded"))return t78($,{all:G,dot:X});return{}},r78=($,Z,G)=>{if($[Z]!==void 0)if(Array.isArray($[Z]))$[Z].push(G);else $[Z]=[$[Z],G];else if(!Z.endsWith("[]"))$[Z]=G;else $[Z]=[G]},a78=($,Z,G)=>{if(/(?:^|\.)__proto__\./.test(Z))return;let X=$,Q=Z.split(".");Q.forEach((Y,J)=>{if(J===Q.length-1)X[Y]=G;else{if(!X[Y]||typeof X[Y]!=="object"||Array.isArray(X[Y])||X[Y]instanceof File)X[Y]=Object.create(null);X=X[Y]}})};var Cj0=D(()=>{gq1()});var uq1=($)=>{let Z=$.split("/");if(Z[0]==="")Z.shift();return Z},_j0=($)=>{let{groups:Z,path:G}=s78($),X=uq1(G);return e78(X,Z)},s78=($)=>{let Z=[];return $=$.replace(/\{[^}]+\}/g,(G,X)=>{let Q=`@${X}`;return Z.push([Q,G]),Q}),{groups:Z,path:$}},e78=($,Z)=>{for(let G=Z.length-1;G>=0;G--){let[X]=Z[G];for(let Q=$.length-1;Q>=0;Q--)if($[Q].includes(X)){$[Q]=$[Q].replace(X,Z[G][1]);break}}return $},Ws,bj0=($,Z)=>{if($==="*")return"*";let G=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(G){let X=`${$}#${Z}`;if(!Ws[X])if(G[2])Ws[X]=Z&&Z[0]!==":"&&Z[0]!=="*"?[X,G[1],new RegExp(`^${G[2]}(?=/${Z})`)]:[$,G[1],new RegExp(`^${G[2]}$`)];else Ws[X]=[$,G[1],!0];return Ws[X]}return null},nC=($,Z)=>{try{return Z($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(G)=>{try{return Z(G)}catch{return G}})}},vj0=($)=>nC($,decodeURI),cq1=($)=>{let Z=$.url,G=Z.indexOf("/",Z.indexOf(":")+4),X=G;for(;X<Z.length;X++){let Q=Z.charCodeAt(X);if(Q===37){let Y=Z.indexOf("?",X),J=Z.indexOf("#",X),W=Y===-1?J===-1?void 0:J:J===-1?Y:Math.min(Y,J),K=Z.slice(G,W);return vj0(K.includes("%25")?K.replace(/%25/g,"%2525"):K)}else if(Q===63||Q===35)break}return Z.slice(G,X)},fj0=($)=>{let Z=cq1($);return Z.length>1&&Z.at(-1)==="/"?Z.slice(0,-1):Z},fB=($,Z,...G)=>{if(G.length)Z=fB(Z,...G);return`${$?.[0]==="/"?"":"/"}${$}${Z==="/"?"":`${$?.at(-1)==="/"?"":"/"}${Z?.[0]==="/"?Z.slice(1):Z}`}`},Ks=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let Z=$.split("/"),G=[],X="";return Z.forEach((Q)=>{if(Q!==""&&!/\:/.test(Q))X+="/"+Q;else if(/\:/.test(Q))if(/\?/.test(Q)){if(G.length===0&&X==="")G.push("/");else G.push(X);let Y=Q.replace("?","");X+="/"+Y,G.push(X)}else X+="/"+Q}),G.filter((Q,Y,J)=>J.indexOf(Q)===Y)},hq1=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?nC($,Wh):$},xj0=($,Z,G)=>{let X;if(!G&&Z&&!/[%+]/.test(Z)){let J=$.indexOf("?",8);if(J===-1)return;if(!$.startsWith(Z,J+1))J=$.indexOf(`&${Z}`,J+1);while(J!==-1){let W=$.charCodeAt(J+Z.length+1);if(W===61){let K=J+Z.length+2,U=$.indexOf("&",K);return hq1($.slice(K,U===-1?void 0:U))}else if(W==38||isNaN(W))return"";J=$.indexOf(`&${Z}`,J+1)}if(X=/[%+]/.test($),!X)return}let Q={};X??=/[%+]/.test($);let Y=$.indexOf("?",8);while(Y!==-1){let J=$.indexOf("&",Y+1),W=$.indexOf("=",Y);if(W>J&&J!==-1)W=-1;let K=$.slice(Y+1,W===-1?J===-1?void 0:J:W);if(X)K=hq1(K);if(Y=J,K==="")continue;let U;if(W===-1)U="";else if(U=$.slice(W+1,J===-1?void 0:J),X)U=hq1(U);if(G){if(!(Q[K]&&Array.isArray(Q[K])))Q[K]=[];Q[K].push(U)}else Q[K]??=U}return Z?Q[Z]:Q},yj0,gj0=($,Z)=>{return xj0($,Z,!0)},Wh;var jH=D(()=>{Ws={},yj0=xj0,Wh=decodeURIComponent});var hj0=($)=>nC($,Wh),Js;var gq1=D(()=>{BJ();Vj0();Cj0();jH();Js=class{raw;#$;#Z;routeIndex=0;path;bodyCache={};constructor($,Z="/",G=[[]]){this.raw=$,this.path=Z,this.#Z=G,this.#$={}}param($){return $?this.#G($):this.#Y()}#G($){let Z=this.#Z[0][this.routeIndex][1][$],G=this.#Q(Z);return G&&/\%/.test(G)?hj0(G):G}#Y(){let $={},Z=Object.keys(this.#Z[0][this.routeIndex][1]);for(let G of Z){let X=this.#Q(this.#Z[0][this.routeIndex][1][G]);if(X!==void 0)$[G]=/\%/.test(X)?hj0(X):X}return $}#Q($){return this.#Z[1]?this.#Z[1][$]:$}query($){return yj0(this.url,$)}queries($){return gj0(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let Z={};return this.raw.headers.forEach((G,X)=>{Z[X]=G}),Z}async parseBody($){return Sj0(this,$)}#X=($)=>{let{bodyCache:Z,raw:G}=this,X=Z[$];if(X)return X;let Q=Object.keys(Z)[0];if(Q)return Z[Q].then((Y)=>{if(Q==="json")Y=JSON.stringify(Y);return new Response(Y)[$]()});return Z[$]=G[$]()};json(){return this.#X("text").then(($)=>JSON.parse($))}text(){return this.#X("text")}arrayBuffer(){return this.#X("arrayBuffer")}blob(){return this.#X("blob")}formData(){return this.#X("formData")}addValidatedData($,Z){this.#$[$]=Z}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[kj0](){return this.#Z}get matchedRoutes(){return this.#Z[0].map(([[,$]])=>$)}get routePath(){return this.#Z[0].map(([[,$]])=>$)[this.routeIndex].path}}});var Us,uj0=($,Z)=>{let G=new String($);return G.isEscaped=!0,G.callbacks=Z,G},Kh=async($,Z,G,X,Q)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let Y=$.callbacks;if(!Y?.length)return Promise.resolve($);if(Q)Q[0]+=$;else Q=[$];let J=Promise.all(Y.map((W)=>W({phase:Z,buffer:Q,context:X}))).then((W)=>Promise.all(W.filter(Boolean).map((K)=>Kh(K,Z,!1,X,Q))).then(()=>Q[0]));if(G)return uj0(await J,Y);else return J};var Fs=D(()=>{Us={Stringify:1,BeforeStream:2,Stream:3}});var cj0="text/plain; charset=UTF-8",lq1=($,Z)=>{return{"Content-Type":$,...Z}},Uh=($,Z)=>new Response($,Z),lj0=class{#$;#Z;env={};#G;finalized=!1;error;#Y;#Q;#X;#J;#W;#K;#F;#H;#N;constructor($,Z){if(this.#$=$,Z)this.#Q=Z.executionCtx,this.env=Z.env,this.#K=Z.notFoundHandler,this.#N=Z.path,this.#H=Z.matchResult}get req(){return this.#Z??=new Js(this.#$,this.#N,this.#H),this.#Z}get event(){if(this.#Q&&"respondWith"in this.#Q)return this.#Q;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Q)return this.#Q;else throw Error("This context has no ExecutionContext")}get res(){return this.#X||=Uh(null,{headers:this.#F??=new Headers})}set res($){if(this.#X&&$){$=Uh($.body,$);for(let[Z,G]of this.#X.headers.entries()){if(Z==="content-type")continue;if(Z==="set-cookie"){let X=this.#X.headers.getSetCookie();$.headers.delete("set-cookie");for(let Q of X)$.headers.append("set-cookie",Q)}else $.headers.set(Z,G)}}this.#X=$,this.finalized=!0}render=(...$)=>{return this.#W??=(Z)=>this.html(Z),this.#W(...$)};setLayout=($)=>this.#J=$;getLayout=()=>this.#J;setRenderer=($)=>{this.#W=$};header=($,Z,G)=>{if(this.finalized)this.#X=Uh(this.#X.body,this.#X);let X=this.#X?this.#X.headers:this.#F??=new Headers;if(Z===void 0)X.delete($);else if(G?.append)X.append($,Z);else X.set($,Z)};status=($)=>{this.#Y=$};set=($,Z)=>{this.#G??=new Map,this.#G.set($,Z)};get=($)=>{return this.#G?this.#G.get($):void 0};get var(){if(!this.#G)return{};return Object.fromEntries(this.#G)}#U($,Z,G){let X=this.#X?new Headers(this.#X.headers):this.#F??new Headers;if(typeof Z==="object"&&"headers"in Z){let Y=Z.headers instanceof Headers?Z.headers:new Headers(Z.headers);for(let[J,W]of Y)if(J.toLowerCase()==="set-cookie")X.append(J,W);else X.set(J,W)}if(G)for(let[Y,J]of Object.entries(G))if(typeof J==="string")X.set(Y,J);else{X.delete(Y);for(let W of J)X.append(Y,W)}let Q=typeof Z==="number"?Z:Z?.status??this.#Y;return Uh($,{status:Q,headers:X})}newResponse=(...$)=>this.#U(...$);body=($,Z,G)=>this.#U($,Z,G);text=($,Z,G)=>{return!this.#F&&!this.#Y&&!Z&&!G&&!this.finalized?new Response($):this.#U($,Z,lq1(cj0,G))};json=($,Z,G)=>{return this.#U(JSON.stringify($),Z,lq1("application/json",G))};html=($,Z,G)=>{let X=(Q)=>this.#U(Q,Z,lq1("text/html; charset=UTF-8",G));return typeof $==="object"?Kh($,Us.Stringify,!1,{}).then(X):X($)};redirect=($,Z)=>{let G=String($);return this.header("Location",!/[^\x00-\xFF]/.test(G)?G:encodeURI(G)),this.newResponse(null,Z??302)};notFound=()=>{return this.#K??=()=>Uh(),this.#K(this)}};var Hs=D(()=>{gq1();Fs()});var p6="ALL",dj0="all",mj0,Ns="Can not add a route since the matcher is already built.",Os;var PH=D(()=>{mj0=["get","post","put","delete","options","patch"],Os=class extends Error{}});var dq1="__COMPOSED_HANDLER";var mq1=()=>{};var $G8=($)=>{return $.text("404 Not Found",404)},ij0=($,Z)=>{if("getResponse"in $){let G=$.getResponse();return Z.newResponse(G.body,G)}return console.error($),Z.text("Internal Server Error",500)},nj0=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(Z={}){[...mj0,dj0].forEach((Y)=>{this[Y]=(J,...W)=>{if(typeof J==="string")this.#$=J;else this.#Y(Y,this.#$,J);return W.forEach((K)=>{this.#Y(Y,this.#$,K)}),this}}),this.on=(Y,J,...W)=>{for(let K of[J].flat()){this.#$=K;for(let U of[Y].flat())W.map((F)=>{this.#Y(U.toUpperCase(),this.#$,F)})}return this},this.use=(Y,...J)=>{if(typeof Y==="string")this.#$=Y;else this.#$="*",J.unshift(Y);return J.forEach((W)=>{this.#Y(p6,this.#$,W)}),this};let{strict:X,...Q}=Z;Object.assign(this,Q),this.getPath=X??!0?Z.getPath??cq1:fj0}#Z(){let Z=new $({router:this.router,getPath:this.getPath});return Z.errorHandler=this.errorHandler,Z.#G=this.#G,Z.routes=this.routes,Z}#G=$G8;errorHandler=ij0;route(Z,G){let X=this.basePath(Z);return G.routes.map((Q)=>{let Y;if(G.errorHandler===ij0)Y=Q.handler;else Y=async(J,W)=>(await yq1([],G.errorHandler)(J,()=>Q.handler(J,W))).res,Y[dq1]=Q.handler;X.#Y(Q.method,Q.path,Y)}),this}basePath(Z){let G=this.#Z();return G._basePath=fB(this._basePath,Z),G}onError=(Z)=>{return this.errorHandler=Z,this};notFound=(Z)=>{return this.#G=Z,this};mount(Z,G,X){let Q,Y;if(X)if(typeof X==="function")Y=X;else if(Y=X.optionHandler,X.replaceRequest===!1)Q=(K)=>K;else Q=X.replaceRequest;let J=Y?(K)=>{let U=Y(K);return Array.isArray(U)?U:[U]}:(K)=>{let U=void 0;try{U=K.executionCtx}catch{}return[K.env,U]};Q||=(()=>{let K=fB(this._basePath,Z),U=K==="/"?0:K.length;return(F)=>{let H=new URL(F.url);return H.pathname=H.pathname.slice(U)||"/",new Request(H,F)}})();let W=async(K,U)=>{let F=await G(Q(K.req.raw),...J(K));if(F)return F;await U()};return this.#Y(p6,fB(Z,"*"),W),this}#Y(Z,G,X){Z=Z.toUpperCase(),G=fB(this._basePath,G);let Q={basePath:this._basePath,path:G,method:Z,handler:X};this.router.add(Z,G,[X,Q]),this.routes.push(Q)}#Q(Z,G){if(Z instanceof Error)return this.errorHandler(Z,G);throw Z}#X(Z,G,X,Q){if(Q==="HEAD")return(async()=>new Response(null,await this.#X(Z,G,X,"GET")))();let Y=this.getPath(Z,{env:X}),J=this.router.match(Q,Y),W=new lj0(Z,{path:Y,matchResult:J,env:X,executionCtx:G,notFoundHandler:this.#G});if(J[0].length===1){let U;try{U=J[0][0][0][0](W,async()=>{W.res=await this.#G(W)})}catch(F){return this.#Q(F,W)}return U instanceof Promise?U.then((F)=>F||(W.finalized?W.res:this.#G(W))).catch((F)=>this.#Q(F,W)):U??this.#G(W)}let K=yq1(J[0],this.errorHandler,this.#G);return(async()=>{try{let U=await K(W);if(!U.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return U.res}catch(U){return this.#Q(U,W)}})()}fetch=(Z,...G)=>{return this.#X(Z,G[1],G[0],Z.method)};request=(Z,G,X,Q)=>{if(Z instanceof Request)return this.fetch(G?new Request(Z,G):Z,X,Q);return Z=Z.toString(),this.fetch(new Request(/^https?:\/\//.test(Z)?Z:`http://localhost${fB("/",Z)}`,G),X,Q)};fire=()=>{addEventListener("fetch",(Z)=>{Z.respondWith(this.#X(Z.request,Z,void 0,Z.request.method))})}};var pj0=D(()=>{Mj0();Hs();PH();mq1();jH()});function Bs($,Z){let G=this.buildAllMatchers(),X=(Q,Y)=>{let J=G[Q]||G[p6],W=J[2][Y];if(W)return W;let K=Y.match(J[0]);if(!K)return[[],Fh];let U=K.indexOf("",1);return[J[1][U],K]};return this.match=X,X($,Z)}var Fh;var iq1=D(()=>{PH();Fh=[]});function GG8($,Z){if($.length===1)return Z.length===1?$<Z?-1:1:-1;if(Z.length===1)return 1;if($===Hh||$===Nh)return 1;else if(Z===Hh||Z===Nh)return-1;if($===Ds)return 1;else if(Z===Ds)return-1;return $.length===Z.length?$<Z?-1:1:Z.length-$.length}var Ds="[^/]+",Hh=".*",Nh="(?:|/.*)",xB,ZG8,tj0=class ${#$;#Z;#G=Object.create(null);insert(Z,G,X,Q,Y){if(Z.length===0){if(this.#$!==void 0)throw xB;if(Y)return;this.#$=G;return}let[J,...W]=Z,K=J==="*"?W.length===0?["","",Hh]:["","",Ds]:J==="/*"?["","",Nh]:J.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),U;if(K){let F=K[1],H=K[2]||Ds;if(F&&K[2]){if(H===".*")throw xB;if(H=H.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(H))throw xB}if(U=this.#G[H],!U){if(Object.keys(this.#G).some((N)=>N!==Hh&&N!==Nh))throw xB;if(Y)return;if(U=this.#G[H]=new $,F!=="")U.#Z=Q.varIndex++}if(!Y&&F!=="")X.push([F,U.#Z])}else if(U=this.#G[J],!U){if(Object.keys(this.#G).some((F)=>F.length>1&&F!==Hh&&F!==Nh))throw xB;if(Y)return;U=this.#G[J]=new $}U.insert(W,G,X,Q,Y)}buildRegExpStr(){let G=Object.keys(this.#G).sort(GG8).map((X)=>{let Q=this.#G[X];return(typeof Q.#Z==="number"?`(${X})@${Q.#Z}`:ZG8.has(X)?`\\${X}`:X)+Q.buildRegExpStr()});if(typeof this.#$==="number")G.unshift(`#${this.#$}`);if(G.length===0)return"";if(G.length===1)return G[0];return"(?:"+G.join("|")+")"}};var nq1=D(()=>{xB=Symbol(),ZG8=new Set(".\\+*[^]$()")});var oj0=class{#$={varIndex:0};#Z=new tj0;insert($,Z,G){let X=[],Q=[];for(let J=0;;){let W=!1;if($=$.replace(/\{[^}]+\}/g,(K)=>{let U=`@\\${J}`;return Q[J]=[U,K],J++,W=!0,U}),!W)break}let Y=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let J=Q.length-1;J>=0;J--){let[W]=Q[J];for(let K=Y.length-1;K>=0;K--)if(Y[K].indexOf(W)!==-1){Y[K]=Y[K].replace(W,Q[J][1]);break}}return this.#Z.insert(Y,Z,X,this.#$,G),X}buildRegExp(){let $=this.#Z.buildRegExpStr();if($==="")return[/^$/,[],[]];let Z=0,G=[],X=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Q,Y,J)=>{if(Y!==void 0)return G[++Z]=Number(Y),"$()";if(J!==void 0)return X[Number(J)]=++Z,"";return""}),[new RegExp(`^${$}`),G,X]}};var rj0=D(()=>{nq1()});function sj0($){return aj0[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(Z,G)=>G?`\\${G}`:"(?:|/.*)")}$`)}function QG8(){aj0=Object.create(null)}function YG8($){let Z=new oj0,G=[];if($.length===0)return XG8;let X=$.map((U)=>[!/\*|\/:/.test(U[0]),...U]).sort(([U,F],[H,N])=>U?1:H?-1:F.length-N.length),Q=Object.create(null);for(let U=0,F=-1,H=X.length;U<H;U++){let[N,O,B]=X[U];if(N)Q[O]=[B.map(([w])=>[w,Object.create(null)]),Fh];else F++;let L;try{L=Z.insert(O,F,N)}catch(w){throw w===xB?new Os(O):w}if(N)continue;G[F]=B.map(([w,z])=>{let j=Object.create(null);z-=1;for(;z>=0;z--){let[P,R]=L[z];j[P]=R}return[w,j]})}let[Y,J,W]=Z.buildRegExp();for(let U=0,F=G.length;U<F;U++)for(let H=0,N=G[U].length;H<N;H++){let O=G[U][H]?.[1];if(!O)continue;let B=Object.keys(O);for(let L=0,w=B.length;L<w;L++)O[B[L]]=W[O[B[L]]]}let K=[];for(let U in J)K[U]=G[J[U]];return[Y,K,Q]}function pC($,Z){if(!$)return;for(let G of Object.keys($).sort((X,Q)=>Q.length-X.length))if(sj0(G).test(Z))return[...$[G]];return}var XG8,aj0,Ls=class{name="RegExpRouter";#$;#Z;constructor(){this.#$={[p6]:Object.create(null)},this.#Z={[p6]:Object.create(null)}}add($,Z,G){let X=this.#$,Q=this.#Z;if(!X||!Q)throw Error(Ns);if(!X[$])[X,Q].forEach((W)=>{W[$]=Object.create(null),Object.keys(W[p6]).forEach((K)=>{W[$][K]=[...W[p6][K]]})});if(Z==="/*")Z="*";let Y=(Z.match(/\/:/g)||[]).length;if(/\*$/.test(Z)){let W=sj0(Z);if($===p6)Object.keys(X).forEach((K)=>{X[K][Z]||=pC(X[K],Z)||pC(X[p6],Z)||[]});else X[$][Z]||=pC(X[$],Z)||pC(X[p6],Z)||[];Object.keys(X).forEach((K)=>{if($===p6||$===K)Object.keys(X[K]).forEach((U)=>{W.test(U)&&X[K][U].push([G,Y])})}),Object.keys(Q).forEach((K)=>{if($===p6||$===K)Object.keys(Q[K]).forEach((U)=>W.test(U)&&Q[K][U].push([G,Y]))});return}let J=Ks(Z)||[Z];for(let W=0,K=J.length;W<K;W++){let U=J[W];Object.keys(Q).forEach((F)=>{if($===p6||$===F)Q[F][U]||=[...pC(X[F],U)||pC(X[p6],U)||[]],Q[F][U].push([G,Y-K+W+1])})}}match=Bs;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#Z).concat(Object.keys(this.#$)).forEach((Z)=>{$[Z]||=this.#G(Z)}),this.#$=this.#Z=void 0,QG8(),$}#G($){let Z=[],G=$===p6;if([this.#$,this.#Z].forEach((X)=>{let Q=X[$]?Object.keys(X[$]).map((Y)=>[Y,X[$][Y]]):[];if(Q.length!==0)G||=!0,Z.push(...Q);else if($!==p6)Z.push(...Object.keys(X[p6]).map((Y)=>[Y,X[p6][Y]]))}),!G)return null;else return YG8(Z)}};var pq1=D(()=>{PH();jH();iq1();nq1();rj0();XG8=[/^$/,[],Object.create(null)],aj0=Object.create(null)});var JG8=class{name="PreparedRegExpRouter";#$;#Z;constructor($,Z){this.#$=$,this.#Z=Z}#G($,Z){let G=this.#$[$];G[1].forEach((X)=>X&&X.push(Z)),Object.values(G[2]).forEach((X)=>X[0].push(Z))}#Y($,Z,G,X,Q){let Y=this.#$[$];if(!Q)Y[2][Z][0].push([G,{}]);else X.forEach((J)=>{if(typeof J==="number")Y[1][J].push([G,Q]);else Y[2][J||Z][0].push([G,Q])})}add($,Z,G){if(!this.#$[$]){let Q=this.#$[p6],Y={};for(let J in Q[2])Y[J]=[Q[2][J][0].slice(),Fh];this.#$[$]=[Q[0],Q[1].map((J)=>Array.isArray(J)?J.slice():0),Y]}if(Z==="/*"||Z==="*"){let Q=[G,{}];if($===p6)for(let Y in this.#$)this.#G(Y,Q);else this.#G($,Q);return}let X=this.#Z[Z];if(!X)throw Error(`Path ${Z} is not registered`);for(let[Q,Y]of X)if($===p6)for(let J in this.#$)this.#Y(J,Z,G,Q,Y);else this.#Y($,Z,G,Q,Y)}buildAllMatchers(){return this.#$}match=Bs};var ej0=D(()=>{PH();iq1();pq1()});var $P0=D(()=>{pq1();ej0()});var tq1=class{name="SmartRouter";#$=[];#Z=[];constructor($){this.#$=$.routers}add($,Z,G){if(!this.#Z)throw Error(Ns);this.#Z.push([$,Z,G])}match($,Z){if(!this.#Z)throw Error("Fatal error");let G=this.#$,X=this.#Z,Q=G.length,Y=0,J;for(;Y<Q;Y++){let W=G[Y];try{for(let K=0,U=X.length;K<U;K++)W.add(...X[K]);J=W.match($,Z)}catch(K){if(K instanceof Os)continue;throw K}this.match=W.match.bind(W),this.#$=[W],this.#Z=void 0;break}if(Y===Q)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,J}get activeRouter(){if(this.#Z||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var ZP0=D(()=>{PH()});var GP0=D(()=>{ZP0()});var Oh,WG8=($)=>{for(let Z in $)return!0;return!1},XP0=class ${#$;#Z;#G;#Y=0;#Q=Oh;constructor(Z,G,X){if(this.#Z=X||Object.create(null),this.#$=[],Z&&G){let Q=Object.create(null);Q[Z]={handler:G,possibleKeys:[],score:0},this.#$=[Q]}this.#G=[]}insert(Z,G,X){this.#Y=++this.#Y;let Q=this,Y=_j0(G),J=[];for(let W=0,K=Y.length;W<K;W++){let U=Y[W],F=Y[W+1],H=bj0(U,F),N=Array.isArray(H)?H[0]:U;if(N in Q.#Z){if(Q=Q.#Z[N],H)J.push(H[1]);continue}if(Q.#Z[N]=new $,H)Q.#G.push(H),J.push(H[1]);Q=Q.#Z[N]}return Q.#$.push({[Z]:{handler:X,possibleKeys:J.filter((W,K,U)=>U.indexOf(W)===K),score:this.#Y}}),Q}#X(Z,G,X,Q,Y){for(let J=0,W=G.#$.length;J<W;J++){let K=G.#$[J],U=K[X]||K[p6],F={};if(U!==void 0){if(U.params=Object.create(null),Z.push(U),Q!==Oh||Y&&Y!==Oh)for(let H=0,N=U.possibleKeys.length;H<N;H++){let O=U.possibleKeys[H],B=F[U.score];U.params[O]=Y?.[O]&&!B?Y[O]:Q[O]??Y?.[O],F[U.score]=!0}}}}search(Z,G){let X=[];this.#Q=Oh;let Y=[this],J=uq1(G),W=[],K=J.length,U=null;for(let F=0;F<K;F++){let H=J[F],N=F===K-1,O=[];for(let L=0,w=Y.length;L<w;L++){let z=Y[L],j=z.#Z[H];if(j)if(j.#Q=z.#Q,N){if(j.#Z["*"])this.#X(X,j.#Z["*"],Z,z.#Q);this.#X(X,j,Z,z.#Q)}else O.push(j);for(let P=0,R=z.#G.length;P<R;P++){let A=z.#G[P],q=z.#Q===Oh?{}:{...z.#Q};if(A==="*"){let x=z.#Z["*"];if(x)this.#X(X,x,Z,z.#Q),x.#Q=q,O.push(x);continue}let[S,k,C]=A;if(!H&&!(C instanceof RegExp))continue;let u=z.#Z[S];if(C instanceof RegExp){if(U===null){U=Array(K);let e=G[0]==="/"?1:0;for(let d=0;d<K;d++)U[d]=e,e+=J[d].length+1}let x=G.substring(U[F]),y=C.exec(x);if(y){if(q[k]=y[0],this.#X(X,u,Z,z.#Q,q),WG8(u.#Z)){u.#Q=q;let e=y[0].match(/\//)?.length??0;(W[e]||=[]).push(u)}continue}}if(C===!0||C.test(H))if(q[k]=H,N){if(this.#X(X,u,Z,q,z.#Q),u.#Z["*"])this.#X(X,u.#Z["*"],Z,q,z.#Q)}else u.#Q=q,O.push(u)}}let B=W.shift();Y=B?O.concat(B):O}if(X.length>1)X.sort((F,H)=>{return F.score-H.score});return[X.map(({handler:F,params:H})=>[F,H])]}};var QP0=D(()=>{PH();jH();Oh=Object.create(null)});var oq1=class{name="TrieRouter";#$;constructor(){this.#$=new XP0}add($,Z,G){let X=Ks(Z);if(X){for(let Q=0,Y=X.length;Q<Y;Q++)this.#$.insert($,X[Q],G);return}this.#$.insert($,Z,G)}match($,Z){return this.#$.search($,Z)}};var YP0=D(()=>{jH();QP0()});var JP0=D(()=>{YP0()});var v0;var rq1=D(()=>{pj0();$P0();GP0();JP0();v0=class extends nj0{constructor($={}){super($);this.router=$.router??new tq1({routers:[new Ls,new oq1]})}}});var o4=D(()=>{rq1()});var KP0,KG8,WP0=($)=>{let Z=0,G=$.length;while(Z<G){let X=$.charCodeAt(Z);if(X!==32&&X!==9)break;Z++}while(G>Z){let X=$.charCodeAt(G-1);if(X!==32&&X!==9)break;G--}return Z===0&&G===$.length?$:$.slice(Z,G)},aq1=($,Z)=>{if(Z&&$.indexOf(Z)===-1)return{};let G=$.split(";"),X={};for(let Q of G){let Y=Q.indexOf("=");if(Y===-1)continue;let J=WP0(Q.substring(0,Y));if(Z&&Z!==J||!KP0.test(J))continue;let W=WP0(Q.substring(Y+1));if(W.startsWith('"')&&W.endsWith('"'))W=W.slice(1,-1);if(KG8.test(W)){if(X[J]=W.indexOf("%")!==-1?nC(W,Wh):W,Z)break}}return X},UG8=($,Z,G={})=>{if(!KP0.test($))throw Error("Invalid cookie name");let X=`${$}=${Z}`;if($.startsWith("__Secure-")&&!G.secure)throw Error("__Secure- Cookie must have Secure attributes");if($.startsWith("__Host-")){if(!G.secure)throw Error("__Host- Cookie must have Secure attributes");if(G.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(G.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let Q of["domain","path"])if(G[Q]&&/[;\r\n]/.test(G[Q]))throw Error(`${Q} must not contain ";", "\\r", or "\\n"`);if(G&&typeof G.maxAge==="number"&&G.maxAge>=0){if(G.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");X+=`; Max-Age=${G.maxAge|0}`}if(G.domain&&G.prefix!=="host")X+=`; Domain=${G.domain}`;if(G.path)X+=`; Path=${G.path}`;if(G.expires){if(G.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");X+=`; Expires=${G.expires.toUTCString()}`}if(G.httpOnly)X+="; HttpOnly";if(G.secure)X+="; Secure";if(G.sameSite)X+=`; SameSite=${G.sameSite.charAt(0).toUpperCase()+G.sameSite.slice(1)}`;if(G.priority)X+=`; Priority=${G.priority.charAt(0).toUpperCase()+G.priority.slice(1)}`;if(G.partitioned){if(!G.secure)throw Error("Partitioned Cookie must have Secure attributes");X+="; Partitioned"}return X},Es=($,Z,G)=>{return Z=encodeURIComponent(Z),UG8($,Z,G)};var UP0=D(()=>{jH();KP0=/^[\w!#$%&'*.^`|~+-]+$/,KG8=/^[ !#-:<-[\]-~]*$/});var ws=($,Z,G)=>{let X=$.req.raw.headers.get("Cookie");if(typeof Z==="string"){if(!X)return;let Y=Z;if(G==="secure")Y="__Secure-"+Z;else if(G==="host")Y="__Host-"+Z;return aq1(X,Y)[Y]}if(!X)return{};return aq1(X)},FG8=($,Z,G)=>{let X;if(G?.prefix==="secure")X=Es("__Secure-"+$,Z,{path:"/",...G,secure:!0});else if(G?.prefix==="host")X=Es("__Host-"+$,Z,{...G,path:"/",secure:!0,domain:void 0});else X=Es($,Z,{path:"/",...G});return X},sq1=($,Z,G,X)=>{let Q=FG8(Z,G,X);$.header("Set-Cookie",Q,{append:!0})};var eq1=D(()=>{UP0()});var FP0=($)=>{let G={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...$},X=((Y)=>{if(typeof Y==="string")if(Y==="*"){if(G.credentials)return(J)=>J||null;return()=>Y}else return(J)=>Y===J?J:null;else if(typeof Y==="function")return Y;else return(J)=>Y.includes(J)?J:null})(G.origin),Q=((Y)=>{if(typeof Y==="function")return Y;else if(Array.isArray(Y))return()=>Y;else return()=>[]})(G.allowMethods);return async function(J,W){function K(F,H){J.res.headers.set(F,H)}let U=await X(J.req.header("origin")||"",J);if(U)K("Access-Control-Allow-Origin",U);if(G.credentials)K("Access-Control-Allow-Credentials","true");if(G.exposeHeaders?.length)K("Access-Control-Expose-Headers",G.exposeHeaders.join(","));if(J.req.method==="OPTIONS"){if(G.origin!=="*"||G.credentials)K("Vary","Origin");if(G.maxAge!=null)K("Access-Control-Max-Age",G.maxAge.toString());let F=await Q(J.req.header("origin")||"",J);if(F.length)K("Access-Control-Allow-Methods",F.join(","));let H=G.allowHeaders;if(!H?.length){let N=J.req.header("Access-Control-Request-Headers");if(N)H=N.split(/\s*,\s*/)}if(H?.length)K("Access-Control-Allow-Headers",H.join(",")),J.res.headers.append("Vary","Access-Control-Request-Headers");return J.res.headers.delete("Content-Length"),J.res.headers.delete("Content-Type"),new Response(null,{headers:J.res.headers,status:204,statusText:"No Content"})}if(await W(),G.origin!=="*"||G.credentials)J.header("Vary","Origin",{append:!0})}};var HP0=()=>{};var NP0=()=>{try{return performance.now()}catch{}return Date.now()},$M1=($)=>{let Z={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...$};return async function(X,Q){let Y=[],J=new Map;if(X.get("metric"))return await Q();if(X.set("metric",{headers:Y,timers:J}),Z.total)$Y(X,"total",Z.totalDescription);if(await Q(),Z.total)pX(X,"total");if(Z.autoEnd)J.forEach((K,U)=>pX(X,U));if(typeof Z.enabled==="function"?Z.enabled(X):Z.enabled){X.res.headers.append("Server-Timing",Y.join(","));let K=typeof Z.crossOrigin==="function"?Z.crossOrigin(X):Z.crossOrigin;if(K)X.res.headers.append("Timing-Allow-Origin",typeof K==="string"?K:"*")}}},OP0=($,Z,G,X,Q)=>{let Y=$.get("metric");if(!Y){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof G==="number"){let J=G.toFixed(Q||1),W=X?`${Z};dur=${J};desc="${X}"`:`${Z};dur=${J}`;Y.headers.push(W)}else{let J=G?`${Z};desc="${G}"`:`${Z}`;Y.headers.push(J)}},$Y=($,Z,G)=>{let X=$.get("metric");if(!X){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}X.timers.set(Z,{description:G,start:NP0()})},pX=($,Z,G)=>{let X=$.get("metric");if(!X){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let Q=X.timers.get(Z);if(!Q){console.warn(`Timer "${Z}" does not exist!`);return}let{description:Y,start:J}=Q,W=NP0()-J;OP0($,Z,W,Y,G),X.timers.delete(Z)};var BP0=D(()=>{Hs()});var ZM1=D(()=>{BP0()});function LP0(){let $={};for(let Z of zs){if(Z.id==="basic-usage")continue;$[Z.id]=!0}return $}function XM1($){let Z=$,G=(J)=>{let W=Z[J];return Array.isArray(W)?W:[]},X=G("*").includes("*")||G("self").includes("*"),Q=new Set;if(!X)for(let J of Object.values(Z)){if(!Array.isArray(J))continue;for(let W of J)Q.add(W)}let Y={};for(let J of zs){if(J.id==="basic-usage")continue;Y[J.id]=X||J.tools.every((W)=>Q.has(W))}return Y}function yB(){let $={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],"Event Bus":[],Tags:[],"AI Providers":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[],Links:[],Search:[]};for(let Z of GM1)$[Z.category]?.push(Z);return $}var GM1,zs,DP0,HG8,js;var tC=D(()=>{GM1=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_GET",description:"Get organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_SET",description:"Set organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Update organization domain settings",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_CLEAR",description:"Clear organization domain claim",category:"Organizations"},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"MONITORING_THREAD_USAGE",description:"View per-thread token usage and cost",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"EVENT_PUBLISH",description:"Publish events",category:"Event Bus"},{name:"EVENT_SUBSCRIBE",description:"Subscribe to events",category:"Event Bus"},{name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events",category:"Event Bus"},{name:"EVENT_CANCEL",description:"Cancel recurring events",category:"Event Bus"},{name:"EVENT_ACK",description:"Acknowledge event delivery",category:"Event Bus"},{name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions",category:"Event Bus"},{name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state",category:"Event Bus"},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"AUTOMATION_RUN_STATS",description:"View aggregated run counts and token/cost for an automation",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info for one or more virtual MCPs",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_KEY_UPDATE",description:"Update AI provider API key label or credential",category:"AI Providers"},{name:"AI_PROVIDER_KEY_PREVIEW",description:"Get masked preview of AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"SECRET_CREATE",description:"Create a secret in the credential vault",category:"Secrets"},{name:"SECRET_LIST",description:"List secrets visible to the caller (no values returned)",category:"Secrets"},{name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration for the org",category:"File Configs"},{name:"FILE_CONFIG_LIST",description:"List S3 bucket configurations for the org (no creds returned)",category:"File Configs"},{name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes from their GitHub sources",category:"File Configs"},{name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration, optionally rotating credentials",category:"File Configs"},{name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration",category:"File Configs"},{name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured bucket",category:"File Configs"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_SET",description:"Set monitor schedule",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_CANCEL",description:"Cancel monitor schedule",category:"Registry"},{name:"SANDBOX_START",description:"Start a sandbox VM with dev server preview",category:"VM"},{name:"SANDBOX_DELETE",description:"Stop and delete a sandbox VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"},{name:"LINK_CURRENT_GET",description:"Return the calling user's current desktop link status (online/offline, capabilities)",category:"Links"},{name:"LINK_DISCONNECT",description:"Disconnect the calling user's desktop link (stops the daemon, removes the presence claim)",category:"Links"},{name:"GLOBAL_SEARCH",description:"Search across organization resources (currently threads). Returns a typed union of matches.",category:"Search"}],zs=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","VIRTUAL_MCP_LAST_USED_LIST","AUTOMATION_GET","AUTOMATION_LIST","AUTOMATION_RUN_STATS","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_CREDITS","AI_PROVIDER_TOPUP_URL","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","FILE_OBJECTS_LIST","SANDBOX_START","SANDBOX_DELETE","GLOBAL_SEARCH","ORGANIZATION_SETTINGS_GET","USER_GET","LINK_CURRENT_GET","LINK_DISCONNECT","BRAND_CONTEXT_LIST","COLLECTION_THREADS_CREATE","COLLECTION_THREADS_LIST","COLLECTION_THREADS_GET","COLLECTION_THREADS_UPDATE","COLLECTION_THREADS_DELETE","COLLECTION_THREAD_MESSAGES_LIST"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_GET","ORGANIZATION_DOMAIN_SET","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_CLEAR"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_TRIGGER_ROTATE_TOKEN","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS","MONITORING_THREAD_USAGE"]},{id:"secrets:manage",label:"Manage secrets",description:"Create and list secrets stored in the credential vault",section:"Organization",tools:["SECRET_CREATE","SECRET_LIST"]},{id:"file-configs:manage",label:"Manage file configs",description:"Create, list, update and delete S3 bucket configurations",section:"Organization",tools:["FILE_CONFIG_CREATE","FILE_CONFIG_LIST","FILE_CONFIG_UPDATE","FILE_CONFIG_DELETE","FILE_OBJECTS_LIST"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_KEY_UPDATE","AI_PROVIDER_KEY_PREVIEW","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH","REGISTRY_MONITOR_SCHEDULE_SET","REGISTRY_MONITOR_SCHEDULE_CANCEL"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"event-bus:use",label:"Use event bus",description:"Publish events and manage subscriptions",section:"Developer",tools:["EVENT_PUBLISH","EVENT_SUBSCRIBE","EVENT_UNSUBSCRIBE","EVENT_CANCEL","EVENT_ACK","EVENT_SUBSCRIPTION_LIST","EVENT_SYNC_SUBSCRIPTIONS"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],DP0=new Set([...zs.find(($)=>$.id==="basic-usage")?.tools??[],"ORG_FS_READ","ORG_FS_WRITE"]),HG8=["agents:manage","connections:manage"],js=new Set(zs.filter(($)=>HG8.includes($.id)).flatMap(($)=>$.tools))});import{z as n5}from"zod";function EP0(){return OG8.parse(process.env)}var QM1=($)=>n5.enum(["true","false","1","0"]).optional().transform((Z)=>Z===void 0?$:Z==="true"||Z==="1"),NG8=($)=>n5.string().optional().transform((Z)=>Z?Z.split(",").map((G)=>G.trim()):$),OG8;var wP0=D(()=>{OG8=n5.object({AUTH_EMAIL_PASSWORD_ENABLED:QM1(!0),AUTH_GOOGLE_CLIENT_ID:n5.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:n5.string().optional(),AUTH_GITHUB_CLIENT_ID:n5.string().optional(),AUTH_GITHUB_CLIENT_SECRET:n5.string().optional(),AUTH_RESEND_API_KEY:n5.string().optional(),AUTH_RESEND_FROM_EMAIL:n5.string().optional(),AUTH_SENDGRID_API_KEY:n5.string().optional(),AUTH_SENDGRID_FROM_EMAIL:n5.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:QM1(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:QM1(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:n5.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:n5.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:n5.coerce.number().optional(),AUTH_SSO_DOMAIN:n5.string().optional(),AUTH_SSO_MS_TENANT_ID:n5.string().optional(),AUTH_SSO_MS_CLIENT_ID:n5.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:n5.string().optional(),AUTH_SSO_SCOPES:NG8(["openid","email","profile"]),AUTH_SSO_GOOGLE_CLIENT_ID:n5.string().optional(),AUTH_SSO_GOOGLE_CLIENT_SECRET:n5.string().optional()}).transform(($)=>{let Z={};if($.AUTH_GOOGLE_CLIENT_ID)Z.google={clientId:$.AUTH_GOOGLE_CLIENT_ID,clientSecret:$.AUTH_GOOGLE_CLIENT_SECRET??""};if($.AUTH_GITHUB_CLIENT_ID)Z.github={clientId:$.AUTH_GITHUB_CLIENT_ID,clientSecret:$.AUTH_GITHUB_CLIENT_SECRET??""};let G=[];if($.AUTH_RESEND_API_KEY)G.push({id:"resend",provider:"resend",config:{apiKey:$.AUTH_RESEND_API_KEY,fromEmail:$.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if($.AUTH_SENDGRID_API_KEY)G.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:$.AUTH_SENDGRID_API_KEY,fromEmail:$.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let X=G[0]?.id,Q;if($.AUTH_SSO_MS_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Q={providerId:"microsoft",domain:$.AUTH_SSO_DOMAIN,MS_TENANT_ID:$.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:$.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:$.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};else if($.AUTH_SSO_GOOGLE_CLIENT_ID&&$.AUTH_SSO_DOMAIN)Q={providerId:"google",domain:$.AUTH_SSO_DOMAIN,GOOGLE_CLIENT_ID:$.AUTH_SSO_GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:$.AUTH_SSO_GOOGLE_CLIENT_SECRET??"",scopes:$.AUTH_SSO_SCOPES};let Y;if($.AUTH_MAGIC_LINK_ENABLED)Y={enabled:!0,emailProviderId:$.AUTH_MAGIC_LINK_EMAIL_PROVIDER??X??""};let J;if($.AUTH_EMAIL_OTP_ENABLED)J={enabled:!0,emailProviderId:$.AUTH_EMAIL_OTP_EMAIL_PROVIDER??X??"",...$.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:$.AUTH_EMAIL_OTP_LENGTH},...$.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:$.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:$.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Z).length>0?Z:void 0,emailProviders:G.length>0?G:void 0,inviteEmailProviderId:$.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:$.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:Q,magicLinkConfig:Y,emailOtpConfig:J}})});var Ps;var zP0=D(()=>{Ps={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as BG8,readFileSync as DG8}from"fs";function LG8(){let $=EP0(),Z=q0().configPath;if(!BG8(Z))return{auth:$,monitoring:Ps};try{let G=JSON.parse(DG8(Z,"utf-8"));if(G.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:$,monitoring:G.monitoring??Ps,theme:G.theme,logo:G.logo,autoCreateOrganizationOnSignup:G.autoCreateOrganizationOnSignup}}catch{return{auth:$,monitoring:Ps}}}function gB(){if(!YM1)YM1=LG8();return YM1}function jP0(){return gB().theme}var YM1=null;var JM1=D(()=>{wP0();zP0();M4()});import{dirname as EG8,posix as wG8,sep as zG8}from"path";function AP0(){let $=jG8();return async(Z)=>{for(let G of Z)G.module=$(G.filename);return Z}}function jG8($=process.argv[1]?EG8(process.argv[1]):process.cwd(),Z=zG8==="\\"){let G=Z?PP0($):$;return(X)=>{if(!X)return;let Q=Z?PP0(X):X,{dir:Y,base:J,ext:W}=wG8.parse(Q);if(W===".js"||W===".mjs"||W===".cjs")J=J.slice(0,-1*W.length);let K=decodeURIComponent(J);if(!Y)Y=".";let U=Y.lastIndexOf("/node_modules");if(U>-1)return`${Y.slice(U+14).replace(/\//g,".")}:${K}`;if(Y.startsWith(G)){let F=Y.slice(G.length+1).replace(/\//g,".");return F?`${F}:${K}`:K}return K}}function PP0($){return $.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var RP0=()=>{};function PG8($,Z,G){return{key:$,enabled:typeof Z=="string"?!0:Z,variant:typeof Z=="string"?Z:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:G?JSON.stringify(G):void 0,description:void 0}}}var WM1=($)=>{if("flags"in $){let Z=IP0($.flags),G=TP0($.flags);return{...$,featureFlags:Z,featureFlagPayloads:G}}{let Z=$.featureFlags??{},G=Object.fromEntries(Object.entries($.featureFlagPayloads||{}).map(([Q,Y])=>[Q,KM1(Y)])),X=Object.fromEntries(Object.entries(Z).map(([Q,Y])=>[Q,PG8(Q,Y,G[Q])]));return{...$,featureFlags:Z,featureFlagPayloads:G,flags:X}}},IP0=($)=>Object.fromEntries(Object.entries($??{}).map(([Z,G])=>[Z,Bh(G)]).filter(([,Z])=>Z!==void 0)),TP0=($)=>{let Z=$??{};return Object.fromEntries(Object.keys(Z).filter((G)=>{let X=Z[G];return X.enabled&&X.metadata&&X.metadata.payload!==void 0}).map((G)=>{let X=Z[G].metadata?.payload;return[G,X?KM1(X):void 0]}))},Bh=($)=>$===void 0?void 0:$.variant??$.enabled,KM1=($)=>{if(typeof $!="string")return $;try{return JSON.parse($)}catch{return $}};var As=()=>{};function qP0(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function Rs($,Z=!0,G){try{let X=new CompressionStream("gzip"),Q=X.writable.getWriter(),Y=Q.write(new TextEncoder().encode($)).then(()=>Q.close()).catch(async(K)=>{try{await Q.abort(K)}catch{}throw K}),J=new Response(X.readable).blob(),[W]=await Promise.all([J,Y]);return W}catch(X){if(G?.rethrow)throw X;if(Z)console.error("Failed to gzip compress data",X);return null}}var UM1=()=>{};var AG8,MP0=function($,Z=[]){if(!$)return!1;let G=$.toLowerCase();return AG8.concat(Z).some((X)=>{let Q=X.toLowerCase();return G.indexOf(Q)!==-1})};var kP0=D(()=>{AG8=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var _7;var hB=D(()=>{_7=function($){return $.AnonymousId="anonymous_id",$.DistinctId="distinct_id",$.Props="props",$.EnablePersonProcessing="enable_person_processing",$.PersonMode="person_mode",$.FeatureFlagDetails="feature_flag_details",$.FeatureFlags="feature_flags",$.FeatureFlagPayloads="feature_flag_payloads",$.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",$.BootstrapFeatureFlags="bootstrap_feature_flags",$.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",$.OverrideFeatureFlags="override_feature_flags",$.Queue="queue",$.LogsQueue="logs_queue",$.OptedOut="opted_out",$.SessionId="session_id",$.SessionStartTimestamp="session_start_timestamp",$.SessionLastTimestamp="session_timestamp",$.PersonProperties="person_properties",$.GroupProperties="group_properties",$.InstalledAppBuild="installed_app_build",$.InstalledAppVersion="installed_app_version",$.SessionReplay="session_replay",$.SurveyLastSeenDate="survey_last_seen_date",$.SurveysSeen="surveys_seen",$.Surveys="surveys",$.RemoteConfig="remote_config",$.FlagsEndpointWasHit="flags_endpoint_was_hit",$.DeviceId="device_id",$}({})});var Is=()=>{};function qs($){return $===null||typeof $!="object"}function uB($,Z){return Object.prototype.toString.call($)===`[object ${Z}]`}function CP0($){return uB($,"ErrorEvent")}function rC($){return typeof Event<"u"&&TG8($,Event)}function _P0($){return uB($,"Object")}function TG8($,Z){try{return $ instanceof Z}catch{return!1}}var IG8,VP0,mt4,FM1,Ts,Dh=($)=>$===Object($)&&!Ts($),oC=($)=>$===void 0,AH=($)=>FM1.call($)=="[object String]",SP0=($)=>AH($)&&$.trim().length===0,Lh=($)=>FM1.call($)=="[object Number]"&&$===$,HM1=($)=>$ instanceof Error;var Eh=D(()=>{hB();Is();IG8=Array.isArray,VP0=Object.prototype,mt4=VP0.hasOwnProperty,FM1=VP0.toString,Ts=IG8||function($){return FM1.call($)==="[object Array]"}});function wh($,Z,G,X,Q){if(Z>G)X.warn("min cannot be greater than max."),Z=G;if(Lh($))if($>G)return X.warn(" cannot be greater than max: "+G+". Using max value instead."),G;else{if(!($<Z))return $;return X.warn(" cannot be less than min: "+Z+". Using min value instead."),Z}return X.warn(" must be a number. using max or fallback. max: "+G+", fallback: "+Q),wh(Q||G,Z,G,X)}var NM1=D(()=>{Eh()});class OM1{constructor($){this._buckets={},this._onBucketRateLimited=$._onBucketRateLimited,this._bucketSize=wh($.bucketSize,0,100,$._logger),this._refillRate=wh($.refillRate,0,this._bucketSize,$._logger),this._refillInterval=wh($.refillInterval,0,qG8,$._logger)}_applyRefill($,Z){let G=Z-$.lastAccess,X=Math.floor(G/this._refillInterval);if(X>0){let Q=X*this._refillRate;$.tokens=Math.min($.tokens+Q,this._bucketSize),$.lastAccess=$.lastAccess+X*this._refillInterval}}consumeRateLimit($){let Z=Date.now(),G=String($),X=this._buckets[G];if(X)this._applyRefill(X,Z);else X={tokens:this._bucketSize,lastAccess:Z},this._buckets[G]=X;if(X.tokens===0)return!0;if(X.tokens--,X.tokens===0)this._onBucketRateLimited?.($);return X.tokens===0}stop(){this._buckets={}}}var qG8=86400000;var bP0=D(()=>{NM1()});class cB{constructor($){this.bytes=$}static ofInner($){if($.length===16)return new cB($);throw TypeError("not 128-bit length")}static fromFieldsV7($,Z,G,X){if(!Number.isInteger($)||!Number.isInteger(Z)||!Number.isInteger(G)||!Number.isInteger(X)||$<0||Z<0||G<0||X<0||$>281474976710655||Z>4095||G>1073741823||X>4294967295)throw RangeError("invalid field value");let Q=new Uint8Array(16);return Q[0]=$/1099511627776,Q[1]=$/4294967296,Q[2]=$/16777216,Q[3]=$/65536,Q[4]=$/256,Q[5]=$,Q[6]=112|Z>>>8,Q[7]=Z,Q[8]=128|G>>>24,Q[9]=G>>>16,Q[10]=G>>>8,Q[11]=G,Q[12]=X>>>24,Q[13]=X>>>16,Q[14]=X>>>8,Q[15]=X,new cB(Q)}static parse($){let Z;switch($.length){case 32:Z=/^[0-9a-f]{32}$/i.exec($)?.[0];break;case 36:Z=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;case 38:Z=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec($)?.slice(1,6).join("");break;case 45:Z=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec($)?.slice(1,6).join("");break;default:break}if(Z){let G=new Uint8Array(16);for(let X=0;X<16;X+=4){let Q=parseInt(Z.substring(2*X,2*X+8),16);G[X+0]=Q>>>24,G[X+1]=Q>>>16,G[X+2]=Q>>>8,G[X+3]=Q}return new cB(G)}throw SyntaxError("could not parse UUID string")}toString(){let $="";for(let Z=0;Z<this.bytes.length;Z++)if($+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]),Z===3||Z===5||Z===7||Z===9)$+="-";return $}toHex(){let $="";for(let Z=0;Z<this.bytes.length;Z++)$+="0123456789abcdef".charAt(this.bytes[Z]>>>4),$+="0123456789abcdef".charAt(15&this.bytes[Z]);return $}toJSON(){return this.toString()}getVariant(){let $=this.bytes[8]>>>4;if($<0)throw Error("unreachable");if($<=7)return this.bytes.every((Z)=>Z===0)?"NIL":"VAR_0";if($<=11)return"VAR_10";if($<=13)return"VAR_110";if($<=15)return this.bytes.every((Z)=>Z===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new cB(this.bytes.slice(0))}equals($){return this.compareTo($)===0}compareTo($){for(let Z=0;Z<16;Z++){let G=this.bytes[Z]-$.bytes[Z];if(G!==0)return Math.sign(G)}return 0}}class fP0{constructor($){this.timestamp=0,this.counter=0,this.random=$??MG8()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore($,Z){let G=this.generateOrAbortCore($,Z);if(G===void 0)this.timestamp=0,G=this.generateOrAbortCore($,Z);return G}generateOrAbortCore($,Z){if(!Number.isInteger($)||$<1||$>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Z<0||Z>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if($>this.timestamp)this.timestamp=$,this.resetCounter();else{if(!($+Z>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return cB.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let $=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return $[6]=64|$[6]>>>4,$[8]=128|$[8]>>>2,cB.ofInner($)}}var MG8=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),vP0,RH=()=>kG8().toString(),kG8=()=>(vP0||(vP0=new fP0)).generate();var zh=D(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class BM1{add($){let Z=RH();return this.promiseByIds[Z]=$,$.catch(()=>{}).finally(()=>{delete this.promiseByIds[Z]}),$}async join(){let $=Object.values(this.promiseByIds),Z=$.length;while(Z>0)await Promise.all($),$=Object.values(this.promiseByIds),Z=$.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var xP0=D(()=>{zh()});function VG8($=console){return{log:$.log.bind($),warn:$.warn.bind($),error:$.error.bind($),debug:$.debug.bind($)}}function gP0($,Z=SG8){return yP0($,Z,VG8())}var yP0=($,Z,G)=>{function X(Y,...J){Z(()=>{let W=G[Y];W($,...J)})}return{info:(...Y)=>{X("log",...Y)},warn:(...Y)=>{X("warn",...Y)},error:(...Y)=>{X("error",...Y)},critical:(...Y)=>{G.error($,...Y)},createLogger:(Y)=>yP0(`${$} ${Y}`,Z,G)}},SG8=($)=>$();var hP0=()=>{};var sC="Mobile",ks="iOS",aC="Android",uP0="Tablet",Go4,_G8="Apple",Xo4,cP0="Safari",Vs="BlackBerry",lP0="Samsung",bG8,vG8,Ss="Chrome",fG8,xG8,dP0="Internet Explorer",yG8,LM1="Opera",Qo4,mP0="Edge",gG8,EM1="Firefox",hG8,wM1="Nintendo",zM1="PlayStation",Ms="Xbox",uG8,cG8,jh="Windows",lG8,iP0="Generic",Yo4,Jo4,dG8="Konqueror",EG="(\\d+(\\.\\d+)?)",DM1,Wo4,Ko4,Uo4,mG8,iG8,Fo4,Ho4;var nP0=D(()=>{Is();Eh();Go4=aC+" "+uP0,Xo4=_G8+" Watch",bG8=lP0+"Browser",vG8=lP0+" Internet",fG8=Ss+" OS",xG8=Ss+" "+ks,yG8=dP0+" "+sC,Qo4=LM1+" Mini",gG8="Microsoft "+mP0,hG8=EM1+" "+ks,uG8=aC+" "+sC,cG8=sC+" "+cP0,lG8=jh+" Phone",Yo4=iP0+" "+sC.toLowerCase(),Jo4=iP0+" "+uP0.toLowerCase(),DM1=new RegExp("Version/"+EG),Wo4=new RegExp(Ms,"i"),Ko4=new RegExp(zM1+" \\w+","i"),Uo4=new RegExp(wM1+" \\w+","i"),mG8=new RegExp(Vs+"|PlayBook|BB10","i"),iG8={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},Fo4={[yG8]:[new RegExp("rv:"+EG)],[gG8]:[new RegExp(mP0+"?\\/"+EG)],[Ss]:[new RegExp("("+Ss+"|CrMo)\\/"+EG)],[xG8]:[new RegExp("CriOS\\/"+EG)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+EG)],[cP0]:[DM1],[cG8]:[DM1],[LM1]:[new RegExp("("+LM1+"|OPR)\\/"+EG)],[EM1]:[new RegExp(EM1+"\\/"+EG)],[hG8]:[new RegExp("FxiOS\\/"+EG)],[dG8]:[new RegExp("Konqueror[:/]?"+EG,"i")],[Vs]:[new RegExp(Vs+" "+EG),DM1],[uG8]:[new RegExp("android\\s"+EG,"i")],[vG8]:[new RegExp(bG8+"\\/"+EG)],[dP0]:[new RegExp("(rv:|MSIE )"+EG)],Mozilla:[new RegExp("rv:"+EG)]},Ho4=[[new RegExp(Ms+"; "+Ms+" (.*?)[);]","i"),($)=>[Ms,$&&$[1]||""]],[new RegExp(wM1,"i"),[wM1,""]],[new RegExp(zM1,"i"),[zM1,""]],[mG8,[Vs,""]],[new RegExp(jh,"i"),($,Z)=>{if(/Phone/.test(Z)||/WPDesktop/.test(Z))return[lG8,""];if(new RegExp(sC).test(Z)&&!/IEMobile\b/.test(Z))return[jh+" "+sC,""];let G=/Windows NT ([0-9.]+)/i.exec(Z);if(G&&G[1]){let X=G[1],Q=iG8[X]||"";if(/arm/i.test(Z))Q="RT";return[jh,Q]}return[jh,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,($)=>{if($&&$[3]){let Z=[$[3],$[4],$[5]||"0"];return[ks,Z.join(".")]}return[ks,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,($)=>{let Z="";if($&&$.length>=3)Z=oC($[2])?$[3]:$[2];return["watchOS",Z]}],[new RegExp("("+aC+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+aC+")","i"),($)=>{if($&&$[2]){let Z=[$[2],$[3],$[4]||"0"];return[aC,Z.join(".")]}return[aC,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,($)=>{let Z=["Mac OS X",""];if($&&$[1]){let G=[$[1],$[2],$[3]||"0"];Z[1]=G.join(".")}return Z}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[fG8,""]],[/Linux|debian/i,["Linux",""]]]});function tP0($){return $?.replace(/\/+$/,"")}async function oP0($,Z){let G=null;for(let X=0;X<Z.retryCount+1;X++){if(X>0)await new Promise((Q)=>setTimeout(Q,Z.retryDelay));try{return await $()}catch(Q){if(G=Q,!Z.retryCheck(Q))throw Q}}throw G}function Cs(){return new Date().toISOString()}function dK($,Z){let G=setTimeout($,Z);return G?.unref&&G?.unref(),G}function jM1($){return Promise.all($.map((Z)=>(Z??Promise.resolve()).then((G)=>({status:"fulfilled",value:G}),(G)=>({status:"rejected",reason:G}))))}var pP0="utf8",rP0=($)=>$ instanceof Error;var wG=D(()=>{kP0();bP0();NM1();Is();Eh();xP0();hP0();nP0()});var nG8,To4;var PM1=D(()=>{wG();nG8={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},To4=nG8.info});var aP0=D(()=>{PM1();hB()});var sP0=D(()=>{hB()});class AM1{constructor(){this.events={},this.events={}}on($,Z){if(!this.events[$])this.events[$]=[];return this.events[$].push(Z),()=>{this.events[$]=this.events[$].filter((G)=>G!==Z)}}emit($,Z){for(let G of this.events[$]||[])G(Z);for(let G of this.events["*"]||[])G($,Z)}}var eP0=()=>{};async function $A0($){if($ instanceof eC){let Z="";try{Z=await $.text}catch{}console.error(`Error while flushing PostHog: message=${$.message}, response body=${Z}`,$)}else console.error("Error while flushing PostHog",$);return Promise.resolve()}function RM1($){return typeof $=="object"&&($ instanceof eC||$ instanceof Ph)}function ZA0($){return typeof $=="object"&&$ instanceof eC&&$.status===413}class _s{constructor($,Z={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new BM1,this._events=new AM1,this._isInitialized=!1;let G=typeof $=="string"?$.trim():"",X=typeof Z.host=="string"?Z.host.trim():"",Q=!G;if(this._logger=gP0("[PostHog]",this.logMsgIfDebug.bind(this)),Q)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=G,this.host=tP0(X||"https://us.i.posthog.com"),this.flushAt=Z.flushAt?Math.max(Z.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Z.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Z.maxQueueSize??1000),this.flushInterval=Z.flushInterval??1e4,this.preloadFeatureFlags=Z.preloadFeatureFlags??!0,this.defaultOptIn=Z.defaultOptIn??!0,this.disableSurveys=Z.disableSurveys??!1,this._retryOptions={retryCount:Z.fetchRetryCount??3,retryDelay:Z.fetchRetryDelay??3000,retryCheck:RM1},this.requestTimeout=Z.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Z.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Z.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Z.disableGeoip??!0,this.disabled=(Z.disabled??!1)||Q,this.historicalMigration=Z?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Z?.evaluationContexts??Z?.evaluationEnvironments,Z?.evaluationEnvironments&&!Z?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!qP0()||(Z?.disableCompression??!1)}logMsgIfDebug($){if(this.isDebug)$()}wrap($){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return $();this._initPromise.then(()=>$())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(_7.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(_7.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(_7.OptedOut,!0)})}on($,Z){return this._events.on($,Z)}debug($=!0){if(this.removeDebugCallback?.(),$){let Z=this.on("*",(G,X)=>this._logger.info(G,X));this.removeDebugCallback=()=>{Z(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload($){return{distinct_id:$.distinct_id,event:$.event,properties:{...$.properties||{},...this.getCommonEventProperties()}}}addPendingPromise($){return this.promiseQueue.add($)}identifyStateless($,Z,G){this.wrap(()=>{let X={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};this.enqueue("identify",X,G)})}async identifyStatelessImmediate($,Z,G){let X={...this.buildPayload({distinct_id:$,event:"$identify",properties:Z})};await this.sendImmediate("identify",X,G)}captureStateless($,Z,G,X){this.wrap(()=>{let Q=this.buildPayload({distinct_id:$,event:Z,properties:G});this.enqueue("capture",Q,X)})}async captureStatelessImmediate($,Z,G,X){let Q=this.buildPayload({distinct_id:$,event:Z,properties:G});await this.sendImmediate("capture",Q,X)}aliasStateless($,Z,G,X){this.wrap(()=>{let Q=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...G||{},distinct_id:Z,alias:$}});this.enqueue("alias",Q,X)})}async aliasStatelessImmediate($,Z,G,X){let Q=this.buildPayload({event:"$create_alias",distinct_id:Z,properties:{...G||{},distinct_id:Z,alias:$}});await this.sendImmediate("alias",Q,X)}groupIdentifyStateless($,Z,G,X,Q,Y){this.wrap(()=>{let J=this.buildPayload({distinct_id:Q||`$${$}_${Z}`,event:"$groupidentify",properties:{$group_type:$,$group_key:Z,$group_set:G||{},...Y||{}}});this.enqueue("capture",J,X)})}async getRemoteConfig(){await this._initPromise;let $=this.host;if($==="https://us.i.posthog.com")$="https://us-assets.i.posthog.com";else if($==="https://eu.i.posthog.com")$="https://eu-assets.i.posthog.com";let Z=`${$}/array/${this.apiKey}/config`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Z,G,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((X)=>X.json()).catch((X)=>{this._logger.error("Remote config could not be loaded",X),this._events.emit("error",X)})}async getFlags($,Z={},G={},X={},Q={},Y=!1){await this._initPromise;let J=Y?"&config=true":"",W=`${this.host}/flags/?v=2${J}`,K={token:this.apiKey,distinct_id:$,groups:Z,person_properties:G,group_properties:X,...Q};if(G.$device_id)K.$device_id=G.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)K.evaluation_contexts=this.evaluationContexts;let U={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(K)};return this._logger.info("Flags URL",W),this.fetchWithRetry(W,U,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((F)=>F.json()).then((F)=>({success:!0,response:WM1(F)})).catch((F)=>{return this._events.emit("error",F),{success:!1,error:this.categorizeRequestError(F)}})}categorizeRequestError($){if($ instanceof eC)return{type:"api_error",statusCode:$.status};if($ instanceof Ph){let Z=$.error;if(Z instanceof Error&&(Z.name==="AbortError"||Z.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagDetailStateless($,Z,G,X,Q,Y);if(J===void 0)return{response:void 0,requestId:void 0};let W=Bh(J.response);if(W===void 0)W=!1;return{response:W,requestId:J.requestId}}async getFeatureFlagDetailStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless(Z,G,X,Q,Y,[$]);if(J===void 0)return;return{response:J.flags[$],requestId:J.requestId,evaluatedAt:J.evaluatedAt}}async getFeatureFlagPayloadStateless($,Z,G={},X={},Q={},Y){await this._initPromise;let J=await this.getFeatureFlagPayloadsStateless(Z,G,X,Q,Y,[$]);if(!J)return;let W=J[$];if(W===void 0)return null;return W}async getFeatureFlagPayloadsStateless($,Z={},G={},X={},Q,Y){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless($,Z,G,X,Q,Y)).payloads}async getFeatureFlagsStateless($,Z={},G={},X={},Q,Y){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless($,Z,G,X,Q,Y)}async getFeatureFlagsAndPayloadsStateless($,Z={},G={},X={},Q,Y){await this._initPromise;let J=await this.getFeatureFlagDetailsStateless($,Z,G,X,Q,Y);if(!J)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:J.featureFlags,payloads:J.featureFlagPayloads,requestId:J.requestId}}async getFeatureFlagDetailsStateless($,Z={},G={},X={},Q,Y){await this._initPromise;let J={};if(Q??this.disableGeoip)J.geoip_disable=!0;if(Y)J.flag_keys_to_evaluate=Y;let W=await this.getFlags($,Z,G,X,J);if(!W.success)return;let K=W.response;if(K.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(K.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:K?.requestId,quotaLimited:K.quotaLimited};return K}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let $=`${this.host}/api/surveys/?token=${this.apiKey}`,Z={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},X=(await this.fetchWithRetry($,Z).then((Q)=>{if(Q.status!==200||!Q.json){let Y=`Surveys API could not be loaded: ${Q.status}`,J=Error(Y);this._logger.error(J),this._events.emit("error",Error(Y));return}return Q.json()}).catch((Q)=>{this._logger.error("Surveys API could not be loaded",Q),this._events.emit("error",Q)}))?.surveys;if(X)this._logger.info("Surveys fetched from API: ",JSON.stringify(X));return X??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(_7.Props);return this._props||{}}set props($){this._props=$}async register($){this.wrap(()=>{this.props={...this.props,...$},this.setPersistedProperty(_7.Props,this.props)})}async unregister($){this.wrap(()=>{delete this.props[$],this.setPersistedProperty(_7.Props,this.props)})}processBeforeEnqueue($){return $}async flushStorage(){}enqueue($,Z,G){this.wrap(()=>{if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let X=this.prepareMessage($,Z,G);if(X=this.processBeforeEnqueue(X),X===null)return;let Q=this.getPersistedProperty(_7.Queue)||[];if(Q.length>=this.maxQueueSize)Q.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(Q.push({message:X}),this.setPersistedProperty(_7.Queue,Q),this._events.emit($,X),Q.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=dK(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate($,Z,G){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit($,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let X=this.prepareMessage($,Z,G);if(X=this.processBeforeEnqueue(X),X===null)return;let Q={api_key:this.apiKey,batch:[X],sent_at:Cs()};if(this.historicalMigration)Q.historical_migration=!0;let Y=JSON.stringify(Q),J=`${this.host}/batch/`,W=this.disableCompression?null:await Rs(Y,this.isDebug),K={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...W!==null&&{"Content-Encoding":"gzip"}},body:W||Y};try{await this.fetchWithRetry(J,K)}catch(U){this._events.emit("error",U)}}prepareMessage($,Z,G){let X={...Z,type:$,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:G?.timestamp?G?.timestamp:Cs(),uuid:G?.uuid?G.uuid:RH()};if(G?.disableGeoip??this.disableGeoip){if(!X.properties)X.properties={};X.properties.$geoip_disable=!0}if(X.distinctId)X.distinct_id=X.distinctId,delete X.distinctId;return X}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async($)=>{await $A0($)})}async flush(){let $=jM1([this.flushPromise]).then(()=>this._flush());return this.flushPromise=$,this.addPendingPromise($),jM1([$]).then(()=>{if(this.flushPromise===$)this.flushPromise=null}),$}getCustomHeaders(){let $=this.getCustomUserAgent(),Z={};if($&&$!=="")Z["User-Agent"]=$;return Z}async _flush(){this.clearFlushTimer(),await this._initPromise;let $=this.getPersistedProperty(_7.Queue)||[];if(!$.length)return;let Z=[],G=$.length;while($.length>0&&Z.length<G){let X=$.slice(0,this.maxBatchSize),Q=X.map((N)=>N.message),Y=async()=>{let O=(this.getPersistedProperty(_7.Queue)||[]).slice(X.length);this.setPersistedProperty(_7.Queue,O),$=O,await this.flushStorage()},J={api_key:this.apiKey,batch:Q,sent_at:Cs()};if(this.historicalMigration)J.historical_migration=!0;let W=JSON.stringify(J),K=`${this.host}/batch/`,U=this.disableCompression?null:await Rs(W,this.isDebug),F={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...U!==null&&{"Content-Encoding":"gzip"}},body:U||W},H={retryCheck:(N)=>{if(ZA0(N))return!1;return RM1(N)}};try{await this.fetchWithRetry(K,F,H)}catch(N){if(ZA0(N)&&Q.length>1){this.maxBatchSize=Math.max(1,Math.floor(Q.length/2)),this._logger.warn(`Received 413 when sending batch of size ${Q.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(N instanceof Ph))await Y();throw this._events.emit("error",N),N}await Y(),Z.push(...Q)}this._events.emit("flush",Z)}async fetchWithRetry($,Z,G,X){let Q=Z.body?Z.body:"",Y=-1;try{Y=Q instanceof Blob?Q.size:Buffer.byteLength(Q,pP0)}catch{if(Q instanceof Blob)Y=Q.size;else Y=new TextEncoder().encode(Q).length}return await oP0(async()=>{let J=new AbortController,W=X??this.requestTimeout,K=dK(()=>J.abort(),W),U=null;try{U=await this.fetch($,{signal:J.signal,...Z})}catch(H){throw new Ph(H)}finally{clearTimeout(K)}if(Z.mode!=="no-cors"&&(U.status<200||U.status>=400))throw new eC(U,Y);return U},{...this._retryOptions,...G})}async _shutdown($=30000){await this._initPromise;let Z=!1;this.clearFlushTimer();let G=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(_7.Queue)||[]).length===0)break;if(await this.flush(),Z)break}}catch(Q){if(!RM1(Q))throw Q;await $A0(Q)}},X;try{return await Promise.race([new Promise((Q,Y)=>{X=dK(()=>{this._logger.error("Timed out while shutting down PostHog"),Z=!0,Y("Timeout while shutting down PostHog. Some events may not have been sent.")},$)}),G()])}finally{clearTimeout(X)}}async shutdown($=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown($).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var eC,Ph;var IM1=D(()=>{eP0();As();UM1();hB();wG();zh();eC=class eC extends Error{constructor($,Z){super("HTTP error while fetching PostHog: status="+$.status+", reqByteLength="+Z),this.response=$,this.reqByteLength=Z,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};Ph=class Ph extends Error{constructor($){super("Network error while fetching PostHog",$ instanceof Error?{cause:$}:{}),this.error=$,this.name="PostHogFetchNetworkError"}}});var GA0=D(()=>{As();hB();IM1();zh();wG()});var XA0=D(()=>{Eh()});function YA0($){let Z=globalThis._posthogChunkIds;if(!Z)return;let G=Object.keys(Z);if(vs&&G.length===QA0)return vs;return QA0=G.length,vs=G.reduce((X,Q)=>{if(!bs)bs={};let Y=bs[Q];if(Y)X[Y[0]]=Y[1];else{let J=$(Q);for(let W=J.length-1;W>=0;W--){let U=J[W]?.filename,F=Z[Q];if(U&&F){X[U]=F,bs[Q]=[U,F];break}}}return X},{}),vs}var bs,QA0,vs;var JA0=()=>{};class WA0{constructor($,Z,G=[]){this.coercers=$,this.stackParser=Z,this.modifiers=G}buildFromUnknown($,Z={}){let X=Z&&Z.mechanism||{handled:!0,type:"generic"},Y=this.buildCoercingContext(X,Z,0).apply($),J=this.buildParsingContext(Z),W=this.parseStacktrace(Y,J);return{$exception_list:this.convertToExceptionList(W,X),$exception_level:"error"}}async modifyFrames($){for(let Z of $)if(Z.stacktrace&&Z.stacktrace.frames&&Ts(Z.stacktrace.frames))Z.stacktrace.frames=await this.applyModifiers(Z.stacktrace.frames);return $}coerceFallback($){return{type:"Error",value:"Unknown error",stack:$.syntheticException?.stack,synthetic:!0}}parseStacktrace($,Z){let G;if($.cause!=null)G=this.parseStacktrace($.cause,Z);let X;if($.stack!=""&&$.stack!=null)X=this.applyChunkIds(this.stackParser($.stack,$.synthetic?Z.skipFirstLines:0),Z.chunkIdMap);return{...$,cause:G,stack:X}}applyChunkIds($,Z){return $.map((G)=>{if(G.filename&&Z)G.chunk_id=Z[G.filename];return G})}applyCoercers($,Z){for(let G of this.coercers)if(G.match($))return G.coerce($,Z);return this.coerceFallback(Z)}async applyModifiers($){let Z=$;for(let G of this.modifiers)Z=await G(Z);return Z}convertToExceptionList($,Z){let G={type:$.type,value:$.value,mechanism:{type:Z.type??"generic",handled:Z.handled??!0,synthetic:$.synthetic??!1}};if($.stack)G.stacktrace={type:"raw",frames:$.stack};let X=[G];if($.cause!=null)X.push(...this.convertToExceptionList($.cause,{...Z,handled:!0}));return X}buildParsingContext($){return{chunkIdMap:YA0(this.stackParser),skipFirstLines:$.skipFirstLines??1}}buildCoercingContext($,Z,G=0){let X=(Y,J)=>{if(!(J<=oG8))return;{let W=this.buildCoercingContext($,Z,J);return this.applyCoercers(Y,W)}};return{...Z,syntheticException:G==0?Z.syntheticException:void 0,mechanism:$,apply:(Y)=>X(Y,G),next:(Y)=>X(Y,G+1)}}}var oG8=4;var KA0=D(()=>{wG();JA0()});function f3($,Z,G,X,Q){let Y={platform:$,filename:Z,function:G==="<anonymous>"?eZ:G,in_app:!0};if(!oC(X))Y.lineno=X;if(!oC(Q))Y.colno=Q;return Y}var eZ="?";var IH=D(()=>{wG()});var fs=($,Z)=>{let G=$.indexOf("safari-extension")!==-1,X=$.indexOf("safari-web-extension")!==-1;return G||X?[$.indexOf("@")!==-1?$.split("@")[0]:eZ,G?`safari-extension:${Z}`:`safari-web-extension:${Z}`]:[$,Z]};var TM1=D(()=>{IH()});var rG8,aG8,sG8,qM1=($,Z)=>{let G=rG8.exec($);if(G){let[,Q,Y,J]=G;return f3(Z,Q,eZ,+Y,+J)}let X=aG8.exec($);if(X){if(X[2]&&X[2].indexOf("eval")===0){let W=sG8.exec(X[2]);if(W)X[2]=W[1],X[3]=W[2],X[4]=W[3]}let[Y,J]=fs(X[1]||eZ,X[2]);return f3(Z,J,Y,X[3]?+X[3]:void 0,X[4]?+X[4]:void 0)}};var UA0=D(()=>{IH();TM1();rG8=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,aG8=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,sG8=/\((\S*)(?::(\d+))(?::(\d+))\)/});var eG8,$X8,MM1=($,Z)=>{let G=eG8.exec($);if(G){if(G[3]&&G[3].indexOf(" > eval")>-1){let J=$X8.exec(G[3]);if(J)G[1]=G[1]||"eval",G[3]=J[1],G[4]=J[2],G[5]=""}let Q=G[3],Y=G[1]||eZ;return[Y,Q]=fs(Y,Q),f3(Z,Q,Y,G[4]?+G[4]:void 0,G[5]?+G[5]:void 0)}};var FA0=D(()=>{IH();TM1();eG8=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,$X8=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var ZX8,HA0=($,Z)=>{let G=ZX8.exec($);return G?f3(Z,G[2],G[1]||eZ,+G[3],G[4]?+G[4]:void 0):void 0};var NA0=D(()=>{IH();ZX8=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var GX8,OA0=($,Z)=>{let G=GX8.exec($);return G?f3(Z,G[2],G[3]||eZ,+G[1]):void 0},XX8,BA0=($,Z)=>{let G=XX8.exec($);return G?f3(Z,G[5],G[3]||G[4]||eZ,+G[1],+G[2]):void 0};var DA0=D(()=>{IH();GX8=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,XX8=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function JX8($,Z=!1){return!(Z||$&&!$.startsWith("/")&&!$.match(/^[A-Z]:/)&&!$.startsWith(".")&&!$.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&$!==void 0&&!$.includes("node_modules/")}function LA0($){return parseInt($||"",10)||void 0}var QX8,YX8,EA0=($,Z)=>{let G=$.match(YX8);if(G){let X,Q,Y,J,W;if(G[1]){Y=G[1];let F=Y.lastIndexOf(".");if(Y[F-1]===".")F--;if(F>0){X=Y.slice(0,F),Q=Y.slice(F+1);let H=X.indexOf(".Module");if(H>0)Y=Y.slice(H+1),X=X.slice(0,H)}J=void 0}if(Q)J=X,W=Q;if(Q==="<anonymous>")W=void 0,Y=void 0;if(Y===void 0)W=W||eZ,Y=J?`${J}.${W}`:W;let K=G[2]?.startsWith("file://")?G[2].slice(7):G[2],U=G[5]==="native";if(K?.match(/\/[A-Z]:/))K=K.slice(1);if(!K&&G[5]&&!U)K=G[5];return{filename:K?decodeURI(K):void 0,module:void 0,function:Y,lineno:LA0(G[3]),colno:LA0(G[4]),in_app:JX8(K||"",U),platform:Z}}if($.match(QX8))return{filename:$,platform:Z}};var wA0=D(()=>{IH();QX8=/^\s*[-]{4,}$/,YX8=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function PA0($){if(!$.length)return[];let Z=Array.from($);return Z.reverse(),Z.slice(0,jA0).map((G)=>({...G,filename:G.filename||WX8(Z).filename,function:G.function||eZ}))}function WX8($){return $[$.length-1]||{}}function KX8(){return AA0("web:javascript",qM1,MM1)}function AA0($,...Z){return(G,X=0)=>{let Q=[],Y=G.split(`
|
|
85
85
|
`);for(let J=X;J<Y.length;J++){let W=Y[J];if(W.length>1024)continue;let K=zA0.test(W)?W.replace(zA0,"$1"):W;if(!K.match(/\S*Error: /)){for(let U of Z){let F=U(K,$);if(F){Q.push(F);break}}if(Q.length>=jA0)break}}return PA0(Q)}}var zA0,jA0=50;var RA0=D(()=>{IH();UA0();FA0();NA0();DA0();wA0();zA0=/\(error: (.*)\)/});class IA0{match($){return this.isDOMException($)||this.isDOMError($)}coerce($,Z){let G=AH($.stack);return{type:this.getType($),value:this.getValue($),stack:G?$.stack:void 0,cause:$.cause?Z.next($.cause):void 0,synthetic:!1}}getType($){return this.isDOMError($)?"DOMError":"DOMException"}getValue($){let Z=$.name||(this.isDOMError($)?"DOMError":"DOMException");return $.message?`${Z}: ${$.message}`:Z}isDOMException($){return uB($,"DOMException")}isDOMError($){return uB($,"DOMError")}}var TA0=D(()=>{wG()});class qA0{match($){return HM1($)}coerce($,Z){return{type:this.getType($),value:this.getMessage($,Z),stack:this.getStack($),cause:$.cause?Z.next($.cause):void 0,synthetic:!1}}getType($){return $.name||$.constructor.name}getMessage($,Z){let G=$.message;if(G.error&&typeof G.error.message=="string")return String(G.error.message);return String(G)}getStack($){return $.stacktrace||$.stack||void 0}}var MA0=D(()=>{wG()});class kA0{constructor(){}match($){return CP0($)&&$.error!=null}coerce($,Z){let G=Z.apply($.error);if(!G)return{type:"ErrorEvent",value:$.message,stack:Z.syntheticException?.stack,synthetic:!0};return G}}var VA0=D(()=>{wG()});class SA0{match($){return typeof $=="string"}coerce($,Z){let[G,X]=this.getInfos($);return{type:G??"Error",value:X??$,stack:Z.syntheticException?.stack,synthetic:!0}}getInfos($){let Z="Error",G=$,X=$.match(UX8);if(X)Z=X[1],G=X[2];return[Z,G]}}var UX8;var CA0=D(()=>{UX8=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i});var _A0;var bA0=D(()=>{_A0=["fatal","error","warning","log","info","debug"]});function xs($,Z=40){let G=Object.keys($);if(G.sort(),!G.length)return"[object has no keys]";for(let X=G.length;X>0;X--){let Q=G.slice(0,X).join(", ");if(!(Q.length>Z)){if(X===G.length)return Q;return Q.length<=Z?Q:`${Q.slice(0,Z)}...`}}return""}var kM1=()=>{};class vA0{match($){return typeof $=="object"&&$!==null}coerce($,Z){let G=this.getErrorPropertyFromObject($);if(G)return Z.apply(G);return{type:this.getType($),value:this.getValue($),stack:Z.syntheticException?.stack,level:this.isSeverityLevel($.level)?$.level:"error",synthetic:!0}}getType($){return rC($)?$.constructor.name:"Error"}getValue($){if("name"in $&&typeof $.name=="string"){let X=`'${$.name}' captured as exception`;if("message"in $&&typeof $.message=="string")X+=` with message: '${$.message}'`;return X}if("message"in $&&typeof $.message=="string")return $.message;let Z=this.getObjectClassName($),G=xs($);return`${Z&&Z!=="Object"?`'${Z}'`:"Object"} captured as exception with keys: ${G}`}isSeverityLevel($){return AH($)&&!SP0($)&&_A0.indexOf($)>=0}getErrorPropertyFromObject($){for(let Z in $)if(Object.prototype.hasOwnProperty.call($,Z)){let G=$[Z];if(rP0(G))return G}}getObjectClassName($){try{let Z=Object.getPrototypeOf($);return Z?Z.constructor.name:void 0}catch(Z){return}}}var fA0=D(()=>{wG();bA0();kM1()});class xA0{match($){return rC($)}coerce($,Z){let G=$.constructor.name;return{type:G,value:`${G} captured as exception with keys: ${xs($)}`,stack:Z.syntheticException?.stack,synthetic:!0}}}var yA0=D(()=>{wG();kM1()});class gA0{match($){return qs($)}coerce($,Z){return{type:"Error",value:`Primitive value captured as exception: ${String($)}`,stack:Z.syntheticException?.stack,synthetic:!0}}}var hA0=D(()=>{wG()});class uA0{match($){return uB($,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection($)}isCustomEventWrappingRejection($){if(!rC($))return!1;try{let Z=$.detail;return Z!=null&&typeof Z=="object"&&"reason"in Z}catch{return!1}}coerce($,Z){let G=this.getUnhandledRejectionReason($);if(qs(G))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(G)}`,stack:Z.syntheticException?.stack,synthetic:!0};return Z.apply(G)}getUnhandledRejectionReason($){try{if("reason"in $)return $.reason;if("detail"in $&&$.detail!=null&&typeof $.detail=="object"&&"reason"in $.detail)return $.detail.reason}catch{}return $}}var cA0=D(()=>{wG()});var lA0=D(()=>{TA0();MA0();VA0();CA0();fA0();yA0();hA0();cA0()});class dA0{constructor($){this._maxSize=$,this._cache=new Map}get($){let Z=this._cache.get($);if(Z===void 0)return;return this._cache.delete($),this._cache.set($,Z),Z}set($,Z){this._cache.set($,Z)}reduce(){while(this._cache.size>=this._maxSize){let $=this._cache.keys().next().value;if($)this._cache.delete($)}}}var mA0=()=>{};function VM1($){if(!$)return{...ys};return{enabled:$.enabled??ys.enabled,max_bytes:NX8($.max_bytes,ys.max_bytes)}}function HX8($){if(!$)return{sanitizedProperties:{},droppedKeys:[]};let Z=[];return{sanitizedProperties:Object.keys($).reduce((X,Q)=>{if(FX8.has(Q))return Z.push(Q),X;return X[Q]=$[Q],X},{}),droppedKeys:Z}}class iA0{constructor($){this._entries=[],this._totalBytes=0,this._config=VM1($)}setConfig($){this._config=VM1($),this._trimToMaxBytes()}add($){let Z=OX8($);if(!Z)return;let G=nA0(Z.json);if(G>this._config.max_bytes)return;this._entries.push({step:Z.step,bytes:G}),this._totalBytes+=G,this._trimToMaxBytes()}getAttachable(){return this._entries.map(($)=>$.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let $=this._entries.shift();if($)this._totalBytes-=$.bytes}}}function NX8($,Z){if(!Lh($)||$===1/0||$===-1/0)return Z;let G=Math.floor($);if(G<0)return Z;return G}function OX8($){let Z=BX8($);if(!Z)return;try{let G=JSON.parse(Z);if(!Dh(G))return;let X=G,Q=X[Ah.MESSAGE],Y=X[Ah.TIMESTAMP];if(!AH(Q)||Q.trim().length===0)return;if(!AH(Y)&&!Lh(Y))return;return{step:X,json:Z}}catch{return}}function BX8($){let Z=new WeakSet;try{return JSON.stringify($,(G,X)=>{if(typeof X=="bigint")return X.toString();if(typeof X=="function"||typeof X=="symbol")return;if(X instanceof Date)return X.toISOString();if(X instanceof Error)return{name:X.name,message:X.message,stack:X.stack};if(X&&typeof X=="object"){if(Z.has(X))return"[Circular]";Z.add(X)}return X})}catch{return}}function nA0($){if(typeof TextEncoder<"u")return new TextEncoder().encode($).length;let Z=encodeURIComponent($),G=0;for(let X=0;X<Z.length;X++)if(Z[X]==="%")G+=1,X+=2;else G+=1;return G}var Ah,FX8,ys;var pA0=D(()=>{wG();Ah={MESSAGE:"$message",TIMESTAMP:"$timestamp"},FX8=new Set([Ah.MESSAGE,Ah.TIMESTAMP]),ys={enabled:!0,max_bytes:32768}});var aG={};p4(aG,{winjsStackLineParser:()=>HA0,stripReservedExceptionStepFields:()=>HX8,reverseAndStripFrames:()=>PA0,resolveExceptionStepsConfig:()=>VM1,opera11StackLineParser:()=>BA0,opera10StackLineParser:()=>OA0,nodeStackLineParser:()=>EA0,getUtf8ByteLength:()=>nA0,geckoStackLineParser:()=>MM1,createStackParser:()=>AA0,createDefaultStackParser:()=>KX8,chromeStackLineParser:()=>qM1,StringCoercer:()=>SA0,ReduceableCache:()=>dA0,PromiseRejectionEventCoercer:()=>uA0,PrimitiveCoercer:()=>gA0,ObjectCoercer:()=>vA0,ExceptionStepsBuffer:()=>iA0,EventCoercer:()=>xA0,ErrorPropertiesBuilder:()=>WA0,ErrorEventCoercer:()=>kA0,ErrorCoercer:()=>qA0,EXCEPTION_STEP_INTERNAL_FIELDS:()=>Ah,DOMExceptionCoercer:()=>IA0,DEFAULT_EXCEPTION_STEPS_CONFIG:()=>ys});var tA0=D(()=>{KA0();RA0();lA0();mA0();pA0()});var lB=D(()=>{As();UM1();PM1();aP0();zh();sP0();tA0();wG();GA0();IM1();XA0();hB()});import{createReadStream as DX8}from"fs";import{createInterface as LX8}from"readline";async function sA0($){let Z={};for(let Q=$.length-1;Q>=0;Q--){let Y=$[Q],J=Y?.filename;if(!Y||typeof J!="string"||typeof Y.lineno!="number"||AX8(J)||RX8(Y))continue;if(!Z[J])Z[J]=[];Z[J].push(Y.lineno)}let G=Object.keys(Z);if(G.length==0)return $;let X=[];for(let Q of G){if(aA0.get(Q))continue;let Y=Z[Q];if(!Y)continue;Y.sort((K,U)=>K-U);let J=TX8(Y);if(J.every((K)=>IX8(Q,K)))continue;let W=qX8(gs,Q,{});X.push(zX8(Q,J,W))}if(await Promise.all(X).catch(()=>{}),$&&$.length>0)jX8($,gs);return gs.reduce(),$}function zX8($,Z,G){return new Promise((X)=>{let Q=DX8($),Y=LX8({input:Q});function J(){Q.destroy(),X()}let W=0,K=0,U=Z[K];if(U===void 0)return void J();let F=U[0],H=U[1];function N(){aA0.set($,1),Y.close(),Y.removeAllListeners(),J()}Q.on("error",N),Y.on("error",N),Y.on("close",J),Y.on("line",(O)=>{if(W++,W<F)return;if(G[W]=MX8(O,0),W>=H){if(K===Z.length-1){Y.close(),Y.removeAllListeners();return}K++;let B=Z[K];if(B===void 0){Y.close(),Y.removeAllListeners();return}F=B[0],H=B[1]}})})}function jX8($,Z){for(let G of $)if(G.filename&&G.context_line===void 0&&typeof G.lineno=="number"){let X=Z.get(G.filename);if(X===void 0)continue;PX8(G.lineno,G,X)}}function PX8($,Z,G){if(Z.lineno===void 0||G===void 0)return;Z.pre_context=[];for(let Q=eA0($);Q<$;Q++){let Y=G[Q];if(Y===void 0)return void oA0(Z);Z.pre_context.push(Y)}if(G[$]===void 0)return void oA0(Z);Z.context_line=G[$];let X=$R0($);Z.post_context=[];for(let Q=$+1;Q<=X;Q++){let Y=G[Q];if(Y===void 0)break;Z.post_context.push(Y)}}function oA0($){delete $.pre_context,delete $.context_line,delete $.post_context}function AX8($){return $.startsWith("node:")||$.endsWith(".min.js")||$.endsWith(".min.cjs")||$.endsWith(".min.mjs")||$.startsWith("data:")}function RX8($){if($.lineno!==void 0&&$.lineno>wX8)return!0;if($.colno!==void 0&&$.colno>EX8)return!0;return!1}function IX8($,Z){let G=gs.get($);if(G===void 0)return!1;for(let X=Z[0];X<=Z[1];X++)if(G[X]===void 0)return!1;return!0}function TX8($){if(!$.length)return[];let Z=0,G=$[0];if(typeof G!="number")return[];let X=rA0(G),Q=[];while(!0){if(Z===$.length-1){Q.push(X);break}let Y=$[Z+1];if(typeof Y!="number")break;if(Y<=X[1])X[1]=Y+SM1;else Q.push(X),X=rA0(Y);Z++}return Q}function rA0($){return[eA0($),$R0($)]}function eA0($){return Math.max(1,$-SM1)}function $R0($){return $+SM1}function qX8($,Z,G){let X=$.get(Z);if(X===void 0)return $.set(Z,G),G;return X}function MX8($,Z){let G=$,X=G.length;if(X<=150)return G;if(Z>X)Z=X;let Q=Math.max(Z-60,0);if(Q<5)Q=0;let Y=Math.min(Q+140,X);if(Y>X-5)Y=X;if(Y===X)Q=Math.max(Y-140,0);if(G=G.slice(Q,Y),Q>0)G=`...${G}`;if(Y<X)G+="...";return G}var gs,aA0,SM1=7,EX8=1000,wX8=1e4;var ZR0=D(()=>{lB();gs=new aG.ReduceableCache(25),aA0=new aG.ReduceableCache(20)});import{isAbsolute as kX8,relative as VX8,sep as SX8}from"path";function GR0($=process.cwd()){let Z=SX8==="\\",G=(Q)=>Z?Q.replace(/\\/g,"/"):Q,X=G($);return async(Q)=>{for(let Y of Q)if(!(!Y.filename||Y.filename.startsWith("node:")||Y.filename.startsWith("data:"))){if(kX8(Y.filename))Y.filename=G(VX8(X,G(Y.filename)))}return Q}}var XR0=()=>{};function CX8($,Z){let G=!1;return Object.assign((X)=>{let Y=global.process.listeners("uncaughtException").filter((J)=>J.name!=="domainUncaughtExceptionClear"&&J._posthogErrorHandler!==!0).length===0;if($(X,{mechanism:{type:"onuncaughtexception",handled:!1}}),!G&&Y)G=!0,Z(X)},{_posthogErrorHandler:!0})}function QR0($,Z){globalThis.process?.on("uncaughtException",CX8($,Z))}function YR0($){globalThis.process?.on("unhandledRejection",(Z)=>$(Z,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var JR0=()=>{};class ZY{constructor($,Z,G){this.client=$,this._exceptionAutocaptureEnabled=Z.enableExceptionAutocapture||!1,this._logger=G,this._rateLimiter=new OM1({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError($){return Dh($)&&"__posthog_previously_captured_error"in $&&$.__posthog_previously_captured_error===!0}static async buildEventMessage($,Z,G,X){let Q={...X},Y=this.errorPropertiesBuilder.buildFromUnknown($,Z);return Y.$exception_list=await this.errorPropertiesBuilder.modifyFrames(Y.$exception_list),{event:"$exception",distinctId:G,properties:{...Y,...Q},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())QR0(this.onException.bind(this),this.onFatalError.bind(this)),YR0(this.onException.bind(this))}onException($,Z){this.client.addPendingPromise((async()=>{if(!ZY.isPreviouslyCapturedError($)){let G=await ZY.buildEventMessage($,Z),Q=G.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(Q))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:Q});return this.client.capture(G)}})())}async onFatalError($){console.error($),await this.client.shutdown(_X8),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}var _X8=2000;var hs=D(()=>{JR0();lB()});var WR0="5.30.6";var KR0=()=>{};var Rh;var CM1=D(()=>{Rh={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"}});async function UR0($){let Z=globalThis.crypto?.subtle;if(!Z)throw Error("SubtleCrypto API not available");let G=await Z.digest("SHA-1",new TextEncoder().encode($));return Array.from(new Uint8Array(G)).map((Q)=>Q.toString(16).padStart(2,"0")).join("")}var FR0=()=>{};class _M1{constructor({pollingInterval:$,personalApiKey:Z,projectApiKey:G,timeout:X,host:Q,customHeaders:Y,...J}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=$,this.personalApiKey=Z,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=X,this.projectApiKey=G,this.host=Q,this.poller=void 0,this.fetch=J.fetch||fetch,this.onError=J.onError,this.customHeaders=Y,this.onLoad=J.onLoad,this.cacheProvider=J.cacheProvider,this.strictLocalEvaluation=J.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug($=!0){this.debugMode=$}logMsgIfDebug($){if(this.debugMode)$()}createEvaluationContext($,Z={},G={},X={},Q={}){return{distinctId:$,groups:Z,personProperties:G,groupProperties:X,evaluationCache:Q}}async getFeatureFlag($,Z,G={},X={},Q={}){await this.loadFeatureFlags();let Y,J;if(!this.loadedSuccessfullyOnce)return Y;if(J=this.featureFlagsByKey[$],J!==void 0){let W=this.createEvaluationContext(Z,G,X,Q);try{Y=(await this.computeFlagAndPayloadLocally(J,W)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${$} -> ${Y}`))}catch(K){if(K instanceof x3||K instanceof g4)this.logMsgIfDebug(()=>console.debug(`${K.name} when computing flag locally: ${$}: ${K.message}`));else if(K instanceof Error)this.onError?.(Error(`Error computing flag locally: ${$}: ${K}`))}}return Y}async getAllFlagsAndPayloads($,Z){await this.loadFeatureFlags();let G={},X={},Q=this.featureFlags.length==0,Y=Z?Z.map((W)=>this.featureFlagsByKey[W]).filter(Boolean):this.featureFlags,J={...$,evaluationCache:$.evaluationCache??{}};return await Promise.all(Y.map(async(W)=>{try{let{value:K,payload:U}=await this.computeFlagAndPayloadLocally(W,J);if(G[W.key]=K,U)X[W.key]=U}catch(K){if(K instanceof x3||K instanceof g4)this.logMsgIfDebug(()=>console.debug(`${K.name} when computing flag locally: ${W.key}: ${K.message}`));else if(K instanceof Error)this.onError?.(Error(`Error computing flag locally: ${W.key}: ${K}`));Q=!0}})),{response:G,payloads:X,fallbackToFlags:Q}}async computeFlagAndPayloadLocally($,Z,G={}){let{matchValue:X,skipLoadCheck:Q=!1}=G;if(!Q)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let Y;Y=X!==void 0?X:await this.computeFlagValueLocally($,Z);let J=this.getFeatureFlagPayload($.key,Y);return{value:Y,payload:J}}async computeFlagValueLocally($,Z){let{distinctId:G,groups:X,personProperties:Q,groupProperties:Y}=Z;if($.ensure_experience_continuity)throw new g4("Flag has experience continuity enabled");if(!$.active)return!1;let W=($.filters||{}).aggregation_group_type_index;if(W!=null){let K=this.groupTypeMapping[String(W)];if(!K)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${W} for feature flag ${$.key}`)),new g4("Flag has unknown group type index");if(!(K in X))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${$.key} without group names passed in`)),!1;if($.bucketing_identifier==="device_id"&&(Q?.$device_id===void 0||Q?.$device_id===null||Q?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${$.key}`));let U=Y[K];return await this.matchFeatureFlagProperties($,X[K],U,Z)}{let K=this.getBucketingValueForFlag($,G,Q);if(K===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${$.key} without $device_id, falling back to server evaluation`)),new g4(`Can't compute feature flag: ${$.key} without $device_id`);return await this.matchFeatureFlagProperties($,K,Q,Z)}}getBucketingValueForFlag($,Z,G){if($.filters?.aggregation_group_type_index!=null)return Z;if($.bucketing_identifier==="device_id"){let X=G?.$device_id;if(X==null||X==="")return;return X}return Z}getFeatureFlagPayload($,Z){let G=null;if(Z!==!1&&Z!=null){if(typeof Z=="boolean")G=this.featureFlagsByKey?.[$]?.filters?.payloads?.[Z.toString()]||null;else if(typeof Z=="string")G=this.featureFlagsByKey?.[$]?.filters?.payloads?.[Z]||null;if(G!=null){if(typeof G=="object")return G;if(typeof G=="string")try{return JSON.parse(G)}catch{}return G}}return null}async evaluateFlagDependency($,Z,G){let{evaluationCache:X}=G,Q=$.key;if(!this.featureFlagsByKey)throw new g4("Feature flags not available for dependency evaluation");if(!("dependency_chain"in $))throw new g4(`Flag dependency property for '${Q}' is missing required 'dependency_chain' field`);let Y=$.dependency_chain;if(!Array.isArray(Y))throw new g4(`Flag dependency property for '${Q}' has an invalid 'dependency_chain' (expected array, got ${typeof Y})`);if(Y.length===0)throw new g4(`Circular dependency detected for flag '${Q}' (empty dependency chain)`);for(let W of Y){if(!(W in X)){let U=this.featureFlagsByKey[W];if(U)if(U.active)try{let F=await this.computeFlagValueLocally(U,G);X[W]=F}catch(F){throw new g4(`Error evaluating flag dependency '${W}' for flag '${Q}': ${F}`)}else X[W]=!1;else throw new g4(`Missing flag dependency '${W}' for flag '${Q}'`)}if(X[W]==null)throw new g4(`Dependency '${W}' could not be evaluated`)}let J=X[Q];return this.flagEvaluatesToExpectedValue($.value,J)}flagEvaluatesToExpectedValue($,Z){if(typeof $=="boolean")return $===Z||typeof Z=="string"&&Z!==""&&$===!0;if(typeof $=="string")return Z===$;return!1}async matchFeatureFlagProperties($,Z,G,X){let Q=$.filters||{},Y=Q.groups||[],J=!1,W;for(let K of Y)try{if(await this.isConditionMatch($,Z,K,G,X)){let U=K.variant,F=Q.multivariate?.variants||[];W=U&&F.some((H)=>H.key===U)?U:await this.getMatchingVariant($,Z)||!0;break}}catch(U){if(U instanceof x3)throw U;if(U instanceof g4)J=!0;else throw U}if(W!==void 0)return W;if(J)throw new g4("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch($,Z,G,X,Q){let Y=G.rollout_percentage,J=(W)=>{this.logMsgIfDebug(()=>console.warn(W))};if((G.properties||[]).length>0){for(let W of G.properties){let K=W.type,U=!1;if(U=K==="cohort"?DR0(W,X,this.cohorts,this.debugMode):K==="flag"?await this.evaluateFlagDependency(W,X,Q):BR0(W,X,J),!U)return!1}if(Y==null)return!0}if(Y!=null&&await HR0($.key,Z)>Y/100)return!1;return!0}async getMatchingVariant($,Z){let G=await HR0($.key,Z,"variant"),X=this.variantLookupTable($).find((Q)=>G>=Q.valueMin&&G<Q.valueMax);if(X)return X.key}variantLookupTable($){let Z=[],G=0,X=0;return(($.filters||{}).multivariate?.variants||[]).forEach((J)=>{X=G+J.rollout_percentage/100,Z.push({valueMin:G,valueMax:X,key:J.key}),G=X}),Z}updateFlagState($){this.featureFlags=$.flags,this.featureFlagsByKey=$.flags.reduce((Z,G)=>(Z[G.key]=G,Z),{}),this.groupTypeMapping=$.groupTypeMapping,this.cohorts=$.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags($){if(this.strictLocalEvaluation)return;let Z=$.filter((G)=>G.ensure_experience_continuity);if(Z.length>0)console.warn(`[PostHog] You are using local evaluation but ${Z.length} flag(s) have experience continuity enabled: ${Z.map((G)=>G.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache($){if(!this.cacheProvider)return!1;try{let Z=await this.cacheProvider.getFlagDefinitions();if(Z)return this.updateFlagState(Z),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${$} (${Z.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(Z.flags),!0;return!1}catch(Z){return this.onError?.(Error(`Failed to load from cache: ${Z}`)),!1}}async loadFeatureFlags($=!1){if(this.loadedSuccessfullyOnce&&!$)return;if(!$&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((Z)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${Z}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(bX8,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let $=!0;if(this.cacheProvider)try{$=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(G){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${G}`))}if(!$){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let Z=await this._requestFeatureFlagDefinitions();if(!Z)return;switch(Z.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=Z.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new $_(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new $_(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new $_(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let G=await Z.json()??{};if(!("flags"in G))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(G)}`));this.flagsEtag=Z.headers?.get("ETag")??void 0;let X={flags:G.flags??[],groupTypeMapping:G.group_type_mapping||{},cohorts:G.cohorts||{}};if(this.updateFlagState(X),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&$)try{await this.cacheProvider.onFlagDefinitionsReceived(X)}catch(Q){this.onError?.(Error(`Failed to store in cache: ${Q}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(X.flags);break}default:return}}catch($){if($ instanceof $_)this.onError?.($)}}getPersonalApiKeyRequestOptions($="GET",Z){let G={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(Z)G["If-None-Match"]=Z;return{method:$,headers:G}}_requestFeatureFlagDefinitions(){let $=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,Z=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),G=null;if(this.timeout&&typeof this.timeout=="number"){let X=new AbortController;G=dK(()=>{X.abort()},this.timeout),Z.signal=X.signal}try{let X=this.fetch;return X($,Z)}finally{clearTimeout(G)}}async stopPoller($=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let Z=this.cacheProvider.shutdown();if(Z instanceof Promise)await Promise.race([Z,new Promise((G,X)=>setTimeout(()=>X(Error(`Cache shutdown timeout after ${$}ms`)),$))])}catch(Z){this.onError?.(Error(`Error during cache shutdown: ${Z}`))}}}async function HR0($,Z,G=""){let X=await UR0(`${$}.${Z}${G}`);return parseInt(X.slice(0,15),16)/vX8}function BR0($,Z,G){let{key:X,value:Q}=$,Y=$.operator||"exact";if(X in Z){if(Y==="is_not_set")throw new g4("Operator is_not_set is not supported")}else throw new g4(`Property ${X} not found in propertyValues`);let J=Z[X];if(J==null&&!fX8.includes(Y)){if(G)G(`Property ${X} cannot have a value of null/undefined with the ${Y} operator`);return!1}function W(U,F){if(Array.isArray(U))return U.map((H)=>String(H).toLowerCase()).includes(String(F).toLowerCase());return String(U).toLowerCase()===String(F).toLowerCase()}function K(U,F,H){if(H==="gt")return U>F;if(H==="gte")return U>=F;if(H==="lt")return U<F;if(H==="lte")return U<=F;throw Error(`Invalid operator: ${H}`)}switch(Y){case"exact":return W(Q,J);case"is_not":return!W(Q,J);case"is_set":return X in Z;case"icontains":return String(J).toLowerCase().includes(String(Q).toLowerCase());case"not_icontains":return!String(J).toLowerCase().includes(String(Q).toLowerCase());case"regex":return NR0(String(Q))&&String(J).match(String(Q))!==null;case"not_regex":return NR0(String(Q))&&String(J).match(String(Q))===null;case"gt":case"gte":case"lt":case"lte":{let U=typeof Q=="number"?Q:null;if(typeof Q=="string")try{U=parseFloat(Q)}catch(F){}if(U==null||J==null)return K(String(J),String(Q),Y);if(typeof J=="string")return K(J,String(Q),Y);return K(J,U,Y)}case"is_date_after":case"is_date_before":{if(typeof Q=="boolean")throw new g4("Date operations cannot be performed on boolean values");let U=uX8(String(Q));if(U==null)U=OR0(Q);if(U==null)throw new g4(`Invalid date: ${Q}`);let F=OR0(J);if(["is_date_before"].includes(Y))return F<U;return F>U}case"semver_eq":return GY($7(String(J)),$7(String(Q)))===0;case"semver_neq":return GY($7(String(J)),$7(String(Q)))!==0;case"semver_gt":return GY($7(String(J)),$7(String(Q)))>0;case"semver_gte":return GY($7(String(J)),$7(String(Q)))>=0;case"semver_lt":return GY($7(String(J)),$7(String(Q)))<0;case"semver_lte":return GY($7(String(J)),$7(String(Q)))<=0;case"semver_tilde":{let U=$7(String(J)),{lower:F,upper:H}=yX8(String(Q));return GY(U,F)>=0&&GY(U,H)<0}case"semver_caret":{let U=$7(String(J)),{lower:F,upper:H}=gX8(String(Q));return GY(U,F)>=0&&GY(U,H)<0}case"semver_wildcard":{let U=$7(String(J)),{lower:F,upper:H}=hX8(String(Q));return GY(U,F)>=0&&GY(U,H)<0}default:throw new g4(`Unknown operator: ${Y}`)}}function xX8($,Z){if(!($ in Z))throw new x3(`cohort ${$} not found in local cohorts - likely a static cohort that requires server evaluation`)}function DR0($,Z,G,X=!1){let Q=String($.value);xX8(Q,G);let Y=G[Q];return LR0(Y,Z,G,X)}function LR0($,Z,G,X=!1){if(!$)return!0;let{type:Q,values:Y}=$;if(!Y||Y.length===0)return!0;let J=!1;if("values"in Y[0]){for(let W of Y)try{let K=LR0(W,Z,G,X);if(Q==="AND"){if(!K)return!1}else if(K)return!0}catch(K){if(K instanceof x3)throw K;if(K instanceof g4){if(X)console.debug(`Failed to compute property ${W} locally: ${K}`);J=!0}else throw K}if(J)throw new g4("Can't match cohort without a given cohort property value");return Q==="AND"}for(let W of Y)try{let K;if(W.type==="cohort")K=DR0(W,Z,G,X);else if(W.type==="flag"){if(X)console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${W.key||"unknown"}'`);continue}else K=BR0(W,Z);let U=W.negation||!1;if(Q==="AND"){if(!K&&!U)return!1;if(K&&U)return!1}else{if(K&&!U)return!0;if(!K&&U)return!0}}catch(K){if(K instanceof x3)throw K;if(K instanceof g4){if(X)console.debug(`Failed to compute property ${W} locally: ${K}`);J=!0}else throw K}if(J)throw new g4("can't match cohort without a given cohort property value");return Q==="AND"}function NR0($){try{return new RegExp($),!0}catch(Z){return!1}}function $7($){let G=String($).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!G||G.startsWith("."))throw new g4(`Invalid semver: ${$}`);let X=G.split("."),Q=(K)=>{if(K===void 0||K==="")return 0;if(!/^\d+$/.test(K))throw new g4(`Invalid semver: ${$}`);return parseInt(K,10)},Y=Q(X[0]),J=Q(X[1]),W=Q(X[2]);return[Y,J,W]}function GY($,Z){for(let G=0;G<3;G++){if($[G]<Z[G])return-1;if($[G]>Z[G])return 1}return 0}function yX8($){let Z=$7($),G=[Z[0],Z[1],Z[2]],X=[Z[0],Z[1]+1,0];return{lower:G,upper:X}}function gX8($){let Z=$7($),[G,X,Q]=Z,Y=[G,X,Q],J;return J=G>0?[G+1,0,0]:X>0?[0,X+1,0]:[0,0,Q+1],{lower:Y,upper:J}}function hX8($){let G=String($).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!G)throw new g4(`Invalid wildcard semver: ${$}`);let X=G.split("."),Q=parseInt(X[0],10);if(isNaN(Q))throw new g4(`Invalid wildcard semver: ${$}`);let Y,J;if(X.length===1)Y=[Q,0,0],J=[Q+1,0,0];else{let W=parseInt(X[1],10);if(isNaN(W))throw new g4(`Invalid wildcard semver: ${$}`);Y=[Q,W,0],J=[Q,W+1,0]}return{lower:Y,upper:J}}function OR0($){if($ instanceof Date)return $;if(typeof $=="string"||typeof $=="number"){let Z=new Date($);if(!isNaN(Z.valueOf()))return Z;throw new g4(`${$} is in an invalid date format`)}throw new g4(`The date provided ${$} must be a string, number, or date object`)}function uX8($){let Z=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,G=$.match(Z),X=new Date(new Date().toISOString());if(!G)return null;{if(!G.groups)return null;let Q=parseInt(G.groups.number);if(Q>=1e4)return null;let Y=G.groups.interval;if(Y=="h")X.setUTCHours(X.getUTCHours()-Q);else if(Y=="d")X.setUTCDate(X.getUTCDate()-Q);else if(Y=="w")X.setUTCDate(X.getUTCDate()-7*Q);else if(Y=="m")X.setUTCMonth(X.getUTCMonth()-Q);else{if(Y!="y")return null;X.setUTCFullYear(X.getUTCFullYear()-Q)}return X}}var bX8=60000,vX8=1152921504606847000,fX8,$_,g4,x3;var ER0=D(()=>{lB();FR0();fX8=["is_not"];$_=class $_ extends Error{constructor($){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=$,Object.setPrototypeOf(this,$_.prototype)}};g4=class g4 extends Error{constructor($){super($);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,g4.prototype)}};x3=class x3 extends Error{constructor($){super($);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,x3.prototype)}}});class bM1{getProperty($){return this._memoryStorage[$]}setProperty($,Z){this._memoryStorage[$]=Z!==null?Z:void 0}constructor(){this._memoryStorage={}}}var wR0=()=>{};function nX8($){return typeof $=="string"?$.trim():""}function pX8($){return(typeof $=="string"?$.trim():"")||void 0}function tX8($){return(typeof $=="string"?$.trim():"")||iX8}var cX8=100,zR0=30000,lX8=50000,dX8=50,mX8=500,iX8="https://us.i.posthog.com",vM1;var jR0=D(()=>{KR0();lB();CM1();ER0();hs();wR0();vM1=class vM1 extends _s{constructor($,Z={}){let G=nX8($),X={...Z,host:tX8(Z.host),personalApiKey:pX8(Z.personalApiKey)};if(super(G,X),this._memoryStorage=new bM1,this.options=X,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof X.featureFlagsPollingInterval=="number"?Math.max(X.featureFlagsPollingInterval,cX8):zR0,typeof X.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(X.waitUntilDebounceMs,0);if(typeof X.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(X.waitUntilMaxWaitMs,0);if(X.personalApiKey){if(X.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(X.enableLocalEvaluation!==!1)this.featureFlagsPoller=new _M1({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:X.personalApiKey,projectApiKey:G,timeout:X.requestTimeout??1e4,host:this.host,fetch:X.fetch,onError:(Y)=>{this._events.emit("error",Y)},onLoad:(Y)=>{this._events.emit("localEvaluationFlagsLoaded",Y)},customHeaders:this.getCustomHeaders(),cacheProvider:X.flagDefinitionCacheProvider,strictLocalEvaluation:X.strictLocalEvaluation})}this.errorTracking=new ZY(this,X,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=X.maxCacheSize||lX8}enqueue($,Z,G){super.enqueue($,Z,G),this.scheduleDebouncedFlush()}async flush(){let $=super.flush(),Z=this.options.waitUntil;if(Z&&!this._waitUntilCycle)try{Z($.catch(()=>{}))}catch{}return $}scheduleDebouncedFlush(){let $=this.options.waitUntil;if(!$)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let Y,J=new Promise((W)=>{Y=W});try{$(J)}catch{return}this._waitUntilCycle={resolve:Y,startedAt:Date.now(),timer:void 0}}let Z=Date.now()-this._waitUntilCycle.startedAt,G=this.options.waitUntilMaxWaitMs??mX8,X=Z>=G;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(X)return void this.resolveWaitUntilFlush();let Q=this.options.waitUntilDebounceMs??dX8;this._waitUntilCycle.timer=dK(()=>{this.resolveWaitUntilFlush()},Q)}_consumeWaitUntilCycle(){let $=this._waitUntilCycle;if($)clearTimeout($.timer),this._waitUntilCycle=void 0;return $?.resolve}async resolveWaitUntilFlush(){let $=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{$?.()}}getPersistedProperty($){return this._memoryStorage.getProperty($)}setPersistedProperty($,Z){return this._memoryStorage.setProperty($,Z)}fetch($,Z){return this.options.fetch?this.options.fetch($,Z):fetch($,Z)}getLibraryVersion(){return WR0}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug($=!0){super.debug($),this.featureFlagsPoller?.debug($)}capture($){if(typeof $=="string")this._logger.warn("Called capture() with a string as the first argument when an object was expected.");if($.event==="$exception"&&!$._originatedFromCaptureException)this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically.");this.addPendingPromise(this.prepareEventMessage($).then(({distinctId:Z,event:G,properties:X,options:Q})=>super.captureStateless(Z,G,X,{timestamp:Q.timestamp,disableGeoip:Q.disableGeoip,uuid:Q.uuid})).catch((Z)=>{if(Z)console.error(Z)}))}async captureImmediate($){if(typeof $=="string")this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected.");if($.event==="$exception"&&!$._originatedFromCaptureException)this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default.");return this.addPendingPromise(this.prepareEventMessage($).then(({distinctId:Z,event:G,properties:X,options:Q})=>super.captureStatelessImmediate(Z,G,X,{timestamp:Q.timestamp,disableGeoip:Q.disableGeoip,uuid:Q.uuid})).catch((Z)=>{if(Z)console.error(Z)}))}identify({distinctId:$,properties:Z={},disableGeoip:G}){let{$set:X,$set_once:Q,$anon_distinct_id:Y,...J}=Z,U={$set:X||J,$set_once:Q||{},$anon_distinct_id:Y??void 0};super.identifyStateless($,U,{disableGeoip:G})}async identifyImmediate({distinctId:$,properties:Z={},disableGeoip:G}){let{$set:X,$set_once:Q,$anon_distinct_id:Y,...J}=Z,U={$set:X||J,$set_once:Q||{},$anon_distinct_id:Y??void 0};super.identifyStatelessImmediate($,U,{disableGeoip:G})}alias($){super.aliasStateless($.alias,$.distinctId,void 0,{disableGeoip:$.disableGeoip})}async aliasImmediate($){await super.aliasStatelessImmediate($.alias,$.distinctId,void 0,{disableGeoip:$.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady($=zR0){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((Z)=>{let G=setTimeout(()=>{X(),Z(!1)},$),X=this._events.on("localEvaluationFlagsLoaded",(Q)=>{clearTimeout(G),X(),Z(Q>0)})})}_resolveDistinctId($,Z){if(typeof $=="string")return{distinctId:$,options:Z};return{distinctId:this.context?.get()?.distinctId,options:$}}async _getFeatureFlagResult($,Z,G={},X){let Q=G.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&$ in this._flagOverrides){let A=this._flagOverrides[$];if(A===void 0)return;let q=this._payloadOverrides?.[$];return{key:$,enabled:A!==!1,variant:typeof A=="string"?A:void 0,payload:q}}let{groups:Y,disableGeoip:J}=G,{onlyEvaluateLocally:W,personProperties:K,groupProperties:U}=G,F=this.addLocalPersonAndGroupProperties(Z,Y,K,U);K=F.allPersonProperties,U=F.allGroupProperties;let H=this.createFeatureFlagEvaluationContext(Z,Y,K,U);if(W==null)W=this.options.strictLocalEvaluation??!1;let N,O=!1,B,L,w,z,j,P;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let A=this.featureFlagsPoller?.featureFlagsByKey[$];if(A)try{let q=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(A,H,{matchValue:X});if(q){O=!0;let S=q.value;z=A.id,P="Evaluated locally",N={key:$,enabled:S!==!1,variant:typeof S=="string"?S:void 0,payload:q.payload??void 0}}}catch(q){if(q instanceof x3||q instanceof g4)this._logger?.info(`${q.name} when computing flag locally: ${$}: ${q.message}`);else throw q}}if(!O&&!W){let A=await super.getFeatureFlagDetailsStateless(H.distinctId,H.groups,H.personProperties,H.groupProperties,J,[$]);if(A===void 0)w=Rh.UNKNOWN_ERROR;else{B=A.requestId,L=A.evaluatedAt;let q=[];if(A.errorsWhileComputingFlags)q.push(Rh.ERRORS_WHILE_COMPUTING);if(A.quotaLimited?.includes("feature_flags"))q.push(Rh.QUOTA_LIMITED);let S=A.flags[$];if(S===void 0)q.push(Rh.FLAG_MISSING);else{z=S.metadata?.id,j=S.metadata?.version,P=S.reason?.description??S.reason?.code;let k;if(S.metadata?.payload!==void 0)try{k=JSON.parse(S.metadata.payload)}catch{k=S.metadata.payload}N={key:$,enabled:S.enabled,variant:S.variant,payload:k}}if(q.length>0)w=q.join(",")}}if(Q){let A=N===void 0?void 0:N.enabled===!1?!1:N.variant??!0,q=`${$}_${A}`;if(!(Z in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[Z].includes(q)){if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(Array.isArray(this.distinctIdHasSentFlagCalls[Z]))this.distinctIdHasSentFlagCalls[Z].push(q);else this.distinctIdHasSentFlagCalls[Z]=[q];let S={$feature_flag:$,$feature_flag_response:A,$feature_flag_id:z,$feature_flag_version:j,$feature_flag_reason:P,locally_evaluated:O,[`$feature/${$}`]:A,$feature_flag_request_id:B,$feature_flag_evaluated_at:O?Date.now():L};if(O&&this.featureFlagsPoller){let k=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(k!==void 0)S.$feature_flag_definitions_loaded_at=k}if(w)S.$feature_flag_error=w;this.capture({distinctId:Z,event:"$feature_flag_called",properties:S,groups:Y,disableGeoip:J})}}if(N!==void 0&&this._payloadOverrides!==void 0&&$ in this._payloadOverrides)N={...N,payload:this._payloadOverrides[$]};return N}async getFeatureFlag($,Z,G){let X=await this._getFeatureFlagResult($,Z,{...G,sendFeatureFlagEvents:G?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(X===void 0)return;if(X.enabled===!1)return!1;return X.variant??!0}async getFeatureFlagPayload($,Z,G,X){if(this._payloadOverrides!==void 0&&$ in this._payloadOverrides)return this._payloadOverrides[$];let Q=await this._getFeatureFlagResult($,Z,{...X,sendFeatureFlagEvents:!1},G);if(Q===void 0)return;return Q.payload??null}async getFeatureFlagResult($,Z,G){let{distinctId:X,options:Q}=this._resolveDistinctId(Z,G);if(!X)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult($,X,{...Q,sendFeatureFlagEvents:Q?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload($){if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let Z=await this._requestRemoteConfigPayload($);if(!Z)return;let G=await Z.json();if(typeof G=="string")try{return JSON.parse(G)}catch(X){}return G}async isFeatureEnabled($,Z,G){let X=await this.getFeatureFlag($,Z,G);if(X===void 0)return;return!!X||!1}async getAllFlags($,Z){let{distinctId:G,options:X}=this._resolveDistinctId($,Z);if(!G)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(G,X)).featureFlags||{}}async getAllFlagsAndPayloads($,Z){let{distinctId:G,options:X}=this._resolveDistinctId($,Z);if(!G)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:Q,disableGeoip:Y,flagKeys:J}=X||{},{onlyEvaluateLocally:W,personProperties:K,groupProperties:U}=X||{},F=this.addLocalPersonAndGroupProperties(G,Q,K,U);K=F.allPersonProperties,U=F.allGroupProperties;let H=this.createFeatureFlagEvaluationContext(G,Q,K,U);if(W==null)W=this.options.strictLocalEvaluation??!1;let N=await this.featureFlagsPoller?.getAllFlagsAndPayloads(H,J),O={},B={},L=!0;if(N)O=N.response,B=N.payloads,L=N.fallbackToFlags;if(L&&!W){let w=await super.getFeatureFlagsAndPayloadsStateless(H.distinctId,H.groups,H.personProperties,H.groupProperties,Y,J);O={...O,...w.flags||{}},B={...B,...w.payloads||{}}}if(this._flagOverrides!==void 0)O={...O,...this._flagOverrides};if(this._payloadOverrides!==void 0)B={...B,...this._payloadOverrides};return{featureFlags:O,featureFlagPayloads:B}}groupIdentify({groupType:$,groupKey:Z,properties:G,distinctId:X,disableGeoip:Q}){super.groupIdentifyStateless($,Z,G,{disableGeoip:Q},X)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags($){let Z=(G)=>Object.fromEntries(G.map((X)=>[X,!0]));if($===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray($)){this._flagOverrides=Z($);return}if(this._isFeatureFlagOverrideOptions($)){if("flags"in $){if($.flags===!1)this._flagOverrides=void 0;else if(Array.isArray($.flags))this._flagOverrides=Z($.flags);else if($.flags!==void 0)this._flagOverrides={...$.flags}}if("payloads"in $){if($.payloads===!1)this._payloadOverrides=void 0;else if($.payloads!==void 0)this._payloadOverrides={...$.payloads}}return}this._flagOverrides={...$}}_isFeatureFlagOverrideOptions($){if(typeof $!="object"||$===null||Array.isArray($))return!1;let Z=$;if("flags"in Z){let G=Z.flags;if(G===!1||Array.isArray(G)||typeof G=="object"&&G!==null)return!0}if("payloads"in Z){let G=Z.payloads;if(G===!1||typeof G=="object"&&G!==null)return!0}return!1}withContext($,Z,G){if(!this.context)return Z();return this.context.run($,Z,G)}getContext(){return this.context?.get()}enterContext($,Z){this.context?.enter($,Z)}async _shutdown($){let Z=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller($),this.errorTracking.shutdown();try{return await super._shutdown($)}finally{Z?.()}}async _requestRemoteConfigPayload($){if(!this.options.personalApiKey)return;let Z=`${this.host}/api/projects/@current/feature_flags/${$}/remote_config?token=${encodeURIComponent(this.apiKey)}`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},X=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let Q=new AbortController;X=dK(()=>{Q.abort()},this.options.requestTimeout),G.signal=Q.signal}try{return await this.fetch(Z,G)}catch(Q){this._events.emit("error",Q);return}finally{if(X)clearTimeout(X)}}extractPropertiesFromEvent($,Z){if(!$)return{personProperties:{},groupProperties:{}};let G={},X={};for(let[Q,Y]of Object.entries($))if(_P0(Y)&&Z&&Q in Z){let J={};for(let[W,K]of Object.entries(Y))J[String(W)]=String(K);X[String(Q)]=J}else G[String(Q)]=String(Y);return{personProperties:G,groupProperties:X}}async getFeatureFlagsForEvent($,Z,G,X){let Q=X?.personProperties||{},Y=X?.groupProperties||{},J=X?.flagKeys;if(X?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let K={};for(let[U,F]of Object.entries(Z||{}))K[U]=String(F);return await this.getAllFlags($,{groups:K,personProperties:Q,groupProperties:Y,disableGeoip:G,onlyEvaluateLocally:!0,flagKeys:J})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let K={};for(let[U,F]of Object.entries(Z||{}))K[U]=String(F);return await this.getAllFlags($,{groups:K,personProperties:Q,groupProperties:Y,disableGeoip:G,onlyEvaluateLocally:!0,flagKeys:J})}return(await super.getFeatureFlagsStateless($,Z,Q,Y,G)).flags}addLocalPersonAndGroupProperties($,Z,G,X){let Q={distinct_id:$,...G||{}},Y={};if(Z)for(let J of Object.keys(Z))Y[J]={$group_key:Z[J],...X?.[J]||{}};return{allPersonProperties:Q,allGroupProperties:Y}}createFeatureFlagEvaluationContext($,Z,G,X){return{distinctId:$,groups:Z||{},personProperties:G||{},groupProperties:X||{},evaluationCache:{}}}captureException($,Z,G,X){if(!ZY.isPreviouslyCapturedError($)){let Q=Error("PostHog syntheticException");this.addPendingPromise(ZY.buildEventMessage($,{syntheticException:Q},Z,G).then((Y)=>this.capture({...Y,uuid:X})))}}async captureExceptionImmediate($,Z,G){if(!ZY.isPreviouslyCapturedError($)){let X=Error("PostHog syntheticException");return this.addPendingPromise(ZY.buildEventMessage($,{syntheticException:X},Z,G).then((Q)=>this.captureImmediate(Q)))}}async prepareEventMessage($){let{distinctId:Z,event:G,properties:X,groups:Q,sendFeatureFlags:Y,timestamp:J,disableGeoip:W,uuid:K}=$,U=this.context?.get(),F=Z||U?.distinctId,H={...this.props,...U?.properties||{},...X||{}};if(!F)F=RH(),H.$process_person_profile=!1;if(U?.sessionId&&!H.$session_id)H.$session_id=U.sessionId;let N=this._runBeforeSend({distinctId:F,event:G,properties:H,groups:Q,sendFeatureFlags:Y,timestamp:J,disableGeoip:W,uuid:K});if(!N)return Promise.reject(null);let O=await Promise.resolve().then(async()=>{if(Y){let B=typeof Y=="object"?Y:void 0;return await this.getFeatureFlagsForEvent(N.distinctId,Q,W,B)}return N.event,{}}).then((B)=>{let L={};if(B)for(let[z,j]of Object.entries(B))L[`$feature/${z}`]=j;let w=Object.keys(B||{}).filter((z)=>B?.[z]!==!1).sort();if(w.length>0)L.$active_feature_flags=w;return L}).catch(()=>({})).then((B)=>{return{...B,...N.properties||{},$groups:N.groups||Q}});if(N.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof O.$raw_user_agent=="string"){if(MP0(O.$raw_user_agent,this.options.custom_blocked_useragents||[]))N.event="$bot_pageview",O.$browser_type="bot"}return{distinctId:N.distinctId,event:N.event,properties:O,options:{timestamp:N.timestamp,disableGeoip:N.disableGeoip,uuid:N.uuid}}}_runBeforeSend($){let Z=this.options.before_send;if(!Z)return $;let G=Array.isArray(Z)?Z:[Z],X=$;for(let Q of G){if(X=Q(X),!X)return this._logger.info(`Event '${$.event}' was rejected in beforeSend function`),null;if(!X.properties||Object.keys(X.properties).length===0){let Y=`Event '${X.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(Y)}}return X}}});import{AsyncLocalStorage as oX8}from"async_hooks";class fM1{constructor(){this.storage=new oX8}get(){return this.storage.getStore()}run($,Z,G){return this.storage.run(this.resolve($,G),Z)}enter($,Z){this.storage.enterWith(this.resolve($,Z))}resolve($,Z){if(Z?.fresh===!0)return $;let G=this.get()||{};return{distinctId:$.distinctId??G.distinctId,sessionId:$.sessionId??G.sessionId,properties:{...G.properties||{},...$.properties||{}}}}}var PR0=()=>{};function rX8($,{organization:Z,projectId:G,prefix:X,severityAllowList:Q=["error"],sendExceptionsToPostHog:Y=!0}={}){return(J)=>{if(!(Q==="*"||Q.includes(J.level)))return J;if(!J.tags)J.tags={};let K=J.tags[AR0.POSTHOG_ID_TAG];if(K===void 0)return J;let U=$.options.host??"https://us.i.posthog.com",F=new URL(`/project/${$.apiKey}/person/${K}`,U).toString();J.tags["PostHog Person URL"]=F;let H=J.exception?.values||[],N=H.map((B)=>({...B,stacktrace:B.stacktrace?{...B.stacktrace,type:"raw",frames:(B.stacktrace.frames||[]).map((L)=>({...L,platform:"node:javascript"}))}:void 0})),O={$exception_message:H[0]?.value||J.message,$exception_type:H[0]?.type,$exception_level:J.level,$exception_list:N,$sentry_event_id:J.event_id,$sentry_exception:J.exception,$sentry_exception_message:H[0]?.value||J.message,$sentry_exception_type:H[0]?.type,$sentry_tags:J.tags};if(Z&&G)O.$sentry_url=(X||"https://sentry.io/organizations/")+Z+"/issues/?project="+G+"&query="+J.event_id;if(Y)$.capture({event:"$exception",distinctId:K,properties:O});return J}}var AR0;var RR0=D(()=>{AR0=class AR0{static#$=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor($,Z,G,X,Q){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(Y,J){let W=J()?.getClient()?.getDsn()?.projectId;Y(rX8($,{organization:Z,projectId:W,prefix:G,severityAllowList:X,sendExceptionsToPostHog:Q??!0}))}}}});var IR0=D(()=>{hs()});var TR0=D(()=>{lB();RR0();IR0();CM1()});var xM1;var qR0=D(()=>{RP0();ZR0();XR0();hs();jR0();lB();PR0();TR0();ZY.errorPropertiesBuilder=new aG.ErrorPropertiesBuilder([new aG.EventCoercer,new aG.ErrorCoercer,new aG.ObjectCoercer,new aG.StringCoercer,new aG.PrimitiveCoercer],aG.createStackParser("node:javascript",aG.nodeStackLineParser),[AP0(),sA0,GR0()]);xM1=class xM1 extends vM1{getLibraryId(){return"posthog-node"}initializeContext(){return new fM1}}});function aX8(){return{capture:()=>{},identify:()=>{},captureException:()=>{},groupIdentify:()=>{},shutdown:async()=>{}}}var yM1,MR0,z$;var N5=D(()=>{qR0();yM1=process.env.POSTHOG_KEY,MR0=process.env.POSTHOG_HOST;z$=yM1?new xM1(yM1,{...MR0?{host:MR0}:{},enableExceptionAutocapture:!0,flushAt:1,flushInterval:0}):aX8();if(yM1){let $=()=>{z$.shutdown().catch(()=>{})};process.on("SIGTERM",$),process.on("SIGINT",$)}});import{Kysely as sX8,PostgresDialect as SR0}from"kysely";import{Pool as CR0}from"pg";function GQ8($){let Z=$.connect.bind($);return $.connect=(G)=>{if(typeof G==="function")return Z(G);let X=performance.now(),Q=us(),Y=$.idleCount===0&&$.totalCount>=Q,J=$.idleCount;return Z().then((W)=>{let K=performance.now()-X;if(kR0().record(K,{"db.pool.outcome":Y?"contended":"available"}),K>$Q8)if(Y)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:K,total:$.totalCount,idle:$.idleCount,waiting:$.waitingCount,max:Q});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:K,idleAtStart:J,total:$.totalCount,max:Q});return W},(W)=>{throw kR0().record(performance.now()-X,{"db.pool.outcome":"error"}),W})},$}function bR0(){try{return q0().databasePgSsl}catch{return!1}}function us(){try{return q0().databasePoolMax}catch{return 10}}function XQ8($){let Z=GQ8(new CR0({connectionString:$,max:us(),ssl:bR0(),..._R0})),G=new SR0({pool:Z});return{type:"postgres",db:new sX8({dialect:G,log:ZQ8(Z)}),pool:Z}}function Th(){return q0().databaseUrl}function vR0($){let Z=$||Th();return new SR0({pool:new CR0({connectionString:Z,max:us(),ssl:bR0(),..._R0})})}function QQ8($){let Z=$||Th();return XQ8(Z)}async function fR0($){if(await $.db.destroy(),!$.pool.ended)await $.pool.end();if($===Ih)Ih=null}function P6(){if(!Ih)Ih=QQ8(Th());return Ih}var eX8=()=>i6.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),kR0=()=>i6.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),VR0=400,$Q8=100,ZQ8=($)=>(Z)=>{let G={"db.statement":Z.query.sql,"db.status":Z.level==="error"?"error":"success"};if(Z.queryDurationMillis>VR0){let X=go1(),Q=X>VR0/2;console.error(Q?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:Z.queryDurationMillis,eventLoopLagMs:Math.round(X),sql:Z.query.sql,pool:{total:$.totalCount,idle:$.idleCount,waiting:$.waitingCount,max:us()}})}if(eX8().record(Z.queryDurationMillis,G),Z.level==="error")console.error("Query failed:",{durationMs:Z.queryDurationMillis,error:Z.error,sql:Z.query.sql})},_R0,Ih=null;var DJ=D(()=>{M4();f9();IB1();_R0={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0}});class gM1{apiKey;constructor($){this.apiKey=$}async sendEmail({to:$,from:Z,subject:G,html:X}){let Q=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:$,from:Z,subject:G,html:X})});if(!Q.ok)throw Error(`Failed to send email: ${Q.statusText}`)}}class hM1{apiKey;constructor($){this.apiKey=$}async sendEmail({to:$,from:Z,subject:G,html:X}){let Q=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:$}]}],from:{email:Z},subject:G,content:[{type:"text/html",value:X}]})});if(!Q.ok){let Y=await Q.text();throw Error(`Failed to send email via SendGrid: ${Q.statusText} - ${Y}`)}}}function dB($){let Z=WQ8[$.provider];if(!Z)throw Error(`Unknown email provider: ${$.provider}`);return Z($)}function mB($,Z){return $.find((G)=>G.id===Z)}var YQ8=($)=>{let Z=new gM1($.config.apiKey);return async({to:G,subject:X,html:Q})=>{await Z.sendEmail({to:G,from:$.config.fromEmail,subject:X,html:Q})}},JQ8=($)=>{let Z=new hM1($.config.apiKey);return async({to:G,subject:X,html:Q})=>{await Z.sendEmail({to:G,from:$.config.fromEmail,subject:X,html:Q})}},WQ8;var cs=D(()=>{WQ8={resend:YQ8,sendgrid:JQ8}});function iB({preheader:$="",heading:Z,subheading:G,body:X,footnote:Q}){return`<!DOCTYPE html>
|
|
86
86
|
<html lang="en">
|
|
87
87
|
<head>
|
|
@@ -1204,7 +1204,7 @@ data:
|
|
|
1204
1204
|
</head>`+$.slice(F)}return`<head>
|
|
1205
1205
|
`+X+`
|
|
1206
1206
|
</head>
|
|
1207
|
-
`+$}function f41($){if(!$||$.length===0)return[];return $.filter((Z)=>fg8.test(Z))}function xg8($){if($.csp)return $.csp;let Z=$.resourceCsp;if(!Z)return ao0;let G=f41(Z.resourceDomains),X=f41(Z.connectDomains),Q=f41(Z.frameDomains),Y=f41(Z.baseUriDomains),J=G.length>0,W=X.length>0,K=Q.length>0,U=Y.length>0;if(!J&&!W&&!K&&!U)return ao0;let F=G.join(" ");return["default-src 'none'",J?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${F}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",J?`style-src 'unsafe-inline' ${F}`:"style-src 'unsafe-inline'",J?`img-src * data: blob: ${F}`:"img-src * data: blob:",J?`media-src * data: blob: ${F}`:"media-src * data: blob:",J?`font-src data: ${F}`:"font-src data:",W?`connect-src ${X.join(" ")}`:"connect-src 'none'",K?`frame-src ${Q.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",U?`base-uri ${Y.join(" ")}`:"base-uri 'none'"].join("; ")}var ao0,fg8;var eo0=D(()=>{ao0=["default-src 'none'","script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'","style-src 'unsafe-inline'","img-src * data: blob:","media-src * data: blob:","font-src data:","connect-src 'none'","frame-src 'none'","worker-src blob:","form-action 'none'","base-uri 'none'"].join("; ");fg8=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function yg8($){let Z=$.lastFailureAt-$.firstFailureAt;return $.count>=uc0&&Z>=cc0}class Ih1{options;kv=null;codec=sv.JSONCodec();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await $.views.kv(gg8,{storage:sv.StorageType.Memory,ttl:sv.nanos(lc0)})}async recordFailure($){if(!this.kv)return Rh1;let Z=Date.now();for(let G=0;G<hg8;G++)try{let X=await this.kv.get($);if(!(X&&X.operation!=="DEL"&&X.operation!=="PURGE"&&X.value?.length)){let W={count:1,firstFailureAt:Z,lastFailureAt:Z};return await this.kv.create($,this.codec.encode(W)),{count:W.count,shouldDisable:!1}}let Y=this.codec.decode(X.value),J={count:Y.count+1,firstFailureAt:Y.firstFailureAt,lastFailureAt:Z};return await this.kv.update($,this.codec.encode(J),X.revision),{count:J.count,shouldDisable:yg8(J)}}catch{}return Rh1}async recordSuccess($){if(!this.kv)return;try{await this.kv.delete($)}catch{}}teardown(){this.kv=null}}class Dm{async recordFailure(){return Rh1}async recordSuccess(){}teardown(){}}function Th1($){$r0=$??new Dm}function qh1(){return $r0}var sv,Rh1,gg8="DECOCMS_CONN_CIRCUIT",hg8=5,$r0;var Mh1=D(()=>{sv=f(LU(),1),Rh1={count:0,shouldDisable:!1};$r0=new Dm});function Zr0($){if(!$)return{decision:"skip"};if($.startsWith("notifications/"))return{decision:"skip"};if(cg8.has($))return{decision:"skip"};let Z=ug8[$];if(Z)return{decision:"skip-if-list-cached",listType:Z};return{decision:"probe"}}async function Gr0($){if($.method!=="POST")return;let Z=$.headers.get("content-length");if(Z&&Number(Z)>lg8)return;try{let G=await $.clone().json(),Q=(Array.isArray(G)?G[0]:G)?.method;return typeof Q==="string"?Q:void 0}catch{return}}var ug8,cg8,lg8=64000;var Xr0=D(()=>{ug8={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},cg8=new Set(["ping"])});import{SpanStatusCode as x41}from"@opentelemetry/api";async function y41($,Z){let G=$.get("meshContext");try{let X=$.req.header("x-org-id"),Q=$.req.header("x-org-slug"),Y=X?X:Q?await G.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst().then((O)=>O?.id):null,J=Z?Z:Y?EH(Y):null;if(!J)return $.json({error:"Agent ID or organization ID is required"},400);let W=await G.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":J}},async(O)=>{try{let B=await G.storage.virtualMcps.findById(J,Y??void 0);return O.setStatus({code:x41.OK}),B}catch(B){throw O.setStatus({code:x41.ERROR,message:B.message}),O.recordException(B),B}finally{O.end()}});if(!W)return $.json({error:"Agent not found"},404);if(Y&&W.organization_id!==Y)return $.json({error:"Agent not found"},404);if(W.status!=="active")return $.json({error:`Agent is inactive: ${W.id??"Decopilot"}`},503);if(G.organization?.id&&W.organization_id!==G.organization.id)return $.json({error:"Forbidden: Agent does not belong to your organization"},403);G.connectionId=W.id??void 0;let K=await G.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",W.organization_id).executeTakeFirst();if(K)G.organization={id:K.id,slug:K.slug,name:K.name};let U=await G.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":W.id??"decopilot"}},async(O)=>{try{let B=await xU(W,G,"passthrough");return O.setStatus({code:x41.OK}),B}catch(B){throw O.setStatus({code:x41.ERROR,message:B.message}),O.recordException(B),B}finally{O.end()}}),F={name:W.id??"Decopilot",version:"1.0.0",title:W.title??void 0,description:W.description??void 0,icons:W.icon?[{src:W.icon}]:void 0},H=lK(U,F,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof W.metadata?.instructions==="string"?W.metadata.instructions:void 0,toolCallTimeoutMs:Gv}),N=new CY({enableJsonResponse:$.req.header("Accept")?.includes("application/json")??!1});return await H.connect(N),await mU(H,N,$.req.raw,`virtual-mcp:${W.id??"decopilot"}`,{onClose:()=>U.close()})}catch(X){let Q=X;return console.error("[virtual-mcp] Error handling virtual MCP request:",Q),$.json({error:"Internal server error",message:Q.message},500)}}var g41=()=>{let $=new v0;return $.all("/gateway/:virtualMcpId?",async(Z)=>{let G=Z.req.param("virtualMcpId")||Z.req.header("x-virtual-mcp-id");return y41(Z,G)}),$.all("/virtual-mcp/:virtualMcpId?",async(Z)=>{let G=Z.req.param("virtualMcpId")||Z.req.header("x-virtual-mcp-id");return y41(Z,G)}),$};var h41=D(()=>{_8();av();o4();lv();Bm()});import{SpanStatusCode as u41}from"@opentelemetry/api";var Qr0=($,Z)=>{if($ instanceof Qv)return Z.header("Retry-After",String(Math.ceil($.cooldownRemainingMs/1000))),Z.json({error:$.message},503);if($.message.includes("not found"))return Z.json({error:$.message},404);if($.message.includes("does not belong to the active organization"))return Z.json({error:"Connection not found"},404);if($.message.includes("inactive"))return Z.json({error:$.message},503);return Z.json({error:"Internal server error",message:$.message},500)},c41=()=>{let $=new v0;return $.all("/",async(Z)=>{return y41(Z,void 0)}),$.get("/:connectionId/ui-resource",async(Z)=>{let G=Z.get("meshContext"),X=Z.req.param("connectionId"),Q=Z.req.query("uri");if(!Q)return Z.json({error:"uri query param is required"},400);if(!G.organization?.id)return Z.json({error:"Organization context is required"},403);let Y=await G.storage.connections.findById(X,G.organization.id);if(!Y||Y.organization_id!==G.organization.id)return Z.json({error:"Connection not found"},404);let J=TN(Y,G,!1,A9()??void 0),W,K;try{let O=(await J.readResource({uri:Q})).contents?.[0];W=O?.text,K=O?._meta?.ui?.csp}catch(N){return Z.json({error:N.message},502)}finally{await J.close().catch(()=>{})}if(typeof W!=="string")return Z.json({error:"Resource has no text content"},404);let U=so0(W,{resourceCsp:K}),F=`"${Bun.hash(U).toString(36)}"`,H="private, no-cache";if(Z.req.header("if-none-match")===F)return new Response(null,{status:304,headers:{ETag:F,"Cache-Control":H}});return new Response(U,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:F,"Cache-Control":H}})}),$.all("/:connectionId",async(Z)=>{let G=Z.req.param("connectionId"),X=Z.get("meshContext");if(G.endsWith("_self")){let Q=G.slice(0,-5);if(!X.organization||X.organization.id!==Q)return Z.json({error:"Connection not found"},404);let Y=await ev(X),J=new CY({enableJsonResponse:Z.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),uL.run(X,()=>mU(Y,J,Z.req.raw,`mcp:self:${G}`))}try{try{if(!X.organization?.id)return Z.json({error:"Organization context is required"},403);let Q=await X.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":G}},async(N)=>{$Y(Z,"mcp.find_connection");try{let O=await X.storage.connections.findById(G,X.organization.id);return N.setStatus({code:u41.OK}),O}catch(O){throw N.setStatus({code:u41.ERROR,message:O.message}),N.recordException(O),O}finally{pX(Z,"mcp.find_connection"),N.end()}});if(!Q)throw Error("Connection not found");if(Q.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(Q.status!=="active")throw Error(`Connection inactive: ${Q.status}`);let Y=await Gr0(Z.req.raw),{decision:J,listType:W}=Zr0(Y),K=J==="probe";if(J==="skip-if-list-cached"&&W){let N=A9();K=N?await N.get(W,G)===null:!0}if(Q.connection_url&&K)d$1(G),await X.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":G,"connection.url":Q.connection_url}},async(N)=>{$Y(Z,"mcp.client_handshake");try{await kG(Q,X,!1),m$1(G),qh1().recordSuccess(G),N.setStatus({code:u41.OK})}catch(O){throw N.setStatus({code:u41.ERROR,message:O.message}),N.recordException(O),O}finally{pX(Z,"mcp.client_handshake"),N.end()}});$Y(Z,"mcp.create_server");let U=cy1(Q,X,!1);pX(Z,"mcp.create_server");let F=new CY({enableJsonResponse:Z.req.raw.headers.get("Accept")?.includes("application/json")??!1});$Y(Z,"mcp.server_connect"),await U.connect(F),pX(Z,"mcp.server_connect"),$Y(Z,"mcp.handle_request");let H=await mU(U,F,Z.req.raw,`mcp:${G}`);return pX(Z,"mcp.handle_request"),H}catch(Q){if(Q instanceof Qv)throw Q;let Y=await X.storage.connections.findById(G,X.organization?.id);if(Y?.connection_url){let J=await Sy1({error:Q,reqUrl:new URL(Z.req.raw.url),connectionId:G,connectionUrl:Y.connection_url,headers:{},orgSlug:X.organization?.slug});if(J)return J;i$1(G);let{shouldDisable:W}=await qh1().recordFailure(G);if(W&&Y.status==="active")await X.storage.connections.update(G,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:G,org:X.organization?.slug,error:Q.message})}throw Q}}catch(Q){return Qr0(Q,Z)}}),$.all("/:connectionId/call-tool/:toolName",async(Z)=>{let G=Z.req.param("connectionId"),X=Z.req.param("toolName"),Q=Z.get("meshContext");try{let Y=await Q.storage.connections.findById(G,Q.organization?.id);if(!Y)return Z.json({error:"Connection not found"},404);let W=await(await kG(Y,Q,!1)).callTool({name:X,arguments:await Z.req.json()});if(W.isError)return new Response(JSON.stringify(W.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(W.structuredContent??W.content),{headers:{"Content-Type":"application/json"}})}catch(Y){let J=await Q.storage.connections.findById(G,Q.organization?.id);if(J?.connection_url){let W=await Sy1({error:Y,reqUrl:new URL(Z.req.raw.url),connectionId:G,connectionUrl:J.connection_url,headers:{},orgSlug:Q.organization?.slug});if(W)return W}return Qr0(Y,Z)}}),$};var l41=D(()=>{dv();av();o4();ZM1();mv();Bm();td();KQ();Ml();eo0();xv1();Mh1();Xr0();h41();r$1()});async function rN($,Z,G,X){if(Z.type!=="event"||!Z.connection_id)return{success:!0};let Q=await $.storage.connections.findById(Z.connection_id);if(!Q)return{success:!0};let Y=$.organization?.id,J=$.organization?.slug;try{let W=await kG(Q,$,!0),K=__1.forClient(kl(W)),U,F,H;if(G&&X&&Y){let z=await X.generateTokenPair();F=z.plaintext,H=z.hash,U=J?`${$.baseUrl}/api/${J}/trigger-callback`:`${$.baseUrl}/api/trigger-callback`}let N=5000,O=!1,B=new Promise((z,j)=>setTimeout(()=>{O=!0,j(Error("TRIGGER_CONFIGURE timeout"))},N)),L;try{L=await Promise.race([K.TRIGGER_CONFIGURE({type:Z.event_type,params:JSON.parse(Z.params??"{}"),enabled:G,callbackUrl:U,callbackToken:F}),B])}catch(z){if(O&&G&&X&&Y&&H)await X.persistTokenHash(Y,Z.connection_id,H);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${Z.connection_id} type=${Z.event_type}:`,z),{success:!1,error:String(z)}}let w=L;if(!w||w.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${Z.connection_id} type=${Z.event_type}. Raw payload:`,JSON.stringify(L)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(L)})`};try{if(G&&X&&Y&&H)await X.persistTokenHash(Y,Z.connection_id,H);if(!G&&X&&Y)await X.deleteByConnection(Z.connection_id,Y)}catch(z){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",z)}return{success:!0}}catch(W){return{success:!1,error:String(W)}}}var Lm=D(()=>{dv();l41();b_1()});import{z as K5}from"zod";var kh1;var Yr0=D(()=>{hL();n1();hU();Lm();kh1=Z1({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:K5.object({id:K5.string(),name:K5.string().min(1).max(255).optional(),active:K5.boolean().optional(),messages:K5.union([K5.string(),K5.array(K5.looseObject({id:K5.string().optional(),role:K5.enum(["user","assistant","system"]),parts:K5.array(K5.record(K5.string(),K5.unknown())),metadata:K5.unknown().optional()}))]).optional(),models:K5.object({tier:P41,modelId:K5.string().optional(),credentialId:K5.string().optional()}).loose().optional(),tools:K5.array(K5.string()).nullable().optional(),maxAgentSteps:K5.number().int().min(1).max(100).nullable().optional(),temperature:K5.number().optional()}),outputSchema:K5.object({id:K5.string(),name:K5.string(),active:K5.boolean(),updated_at:K5.string()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findById($.id,G.id);if(!X)throw Error("Automation not found");let Q={};if($.name!==void 0)Q.name=$.name;if($.active!==void 0)Q.active=$.active;if($.messages!==void 0){let J=M41($.messages);Q.messages=JSON.stringify(J)}if($.models!==void 0)Q.models=JSON.stringify($.models);if($.tools!==void 0)Q.tools=$.tools===null?null:JSON.stringify($.tools);if($.temperature!==void 0)Q.temperature=$.temperature;if($.maxAgentSteps!==void 0)Q.max_agent_steps=$.maxAgentSteps;let Y=await Z.storage.automations.update($.id,G.id,Q);if($.active!==void 0&&$.active!==X.active){let J=await Z.storage.automations.listTriggers(Y.id),W=J.filter((K)=>K.type==="event");await Promise.allSettled(W.map(async(K)=>{let U=await rN(Z,K,$.active);if(!U.success)console.warn(`Failed to configure trigger ${K.id}: ${U.error}`)})),await no0(J,$.active)}return{id:Y.id,name:Y.name,active:Y.active,updated_at:Y.updated_at}}})});import{z as d41}from"zod";var Vh1;var Jr0=D(()=>{hL();N5();n1();Lm();Vh1=Z1({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:d41.object({id:d41.string()}),outputSchema:d41.object({success:d41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),!await Z.storage.automations.findById($.id,G.id))throw Error("Automation not found");let Q=await Z.storage.automations.listTriggers($.id),Y=Q.filter((K)=>K.type==="event");await Promise.allSettled(Y.map(async(K)=>{let U=await rN(Z,K,!1);if(!U.success)console.warn(`Failed to disable trigger ${K.id}: ${U.error}`)}));let{success:J}=await Z.storage.automations.delete($.id,G.id);await po0(Q);let W=L$(Z);if(W)z$.capture({distinctId:W,event:"automation_deleted",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:$.id,trigger_count:Q.length}});return{success:J}}})});function $f($){return`webhook_${$}`}function m41($,Z,G){if(!Z)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${$}/api/${Z}/webhooks/${G}`}import{z as D7}from"zod";var Wr0=300000,dg8=10,Sh1;var Kr0=D(()=>{Lh1();hL();Hm();n1();Lm();Sh1=Z1({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron, event, or webhook trigger to an automation. For webhook triggers the response includes a one-time URL + secret token.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:D7.object({automation_id:D7.string(),type:D7.enum(["cron","event","webhook"]),cron_expression:D7.string().optional(),connection_id:D7.string().optional(),event_type:D7.string().optional(),params:D7.record(D7.string(),D7.string()).optional()}),outputSchema:D7.object({id:D7.string(),automation_id:D7.string(),type:D7.enum(["cron","event","webhook"]),created_at:D7.string(),webhook:D7.object({url:D7.string(),token:D7.string()}).nullable().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findById($.automation_id,G.id);if(!X)throw Error("Automation not found");if($.type==="cron"){if(!$.cron_expression)throw Error("cron_expression is required for cron triggers");let K=new tN($.cron_expression,{timezone:"UTC"}).nextRuns(dg8);if(K.length===0)throw Error("Cron expression has no future runs");let U=1/0;for(let F=1;F<K.length;F++){let H=K[F].getTime()-K[F-1].getTime();if(H<U)U=H}if(K.length>=2&&Number.isFinite(U)&&U<Wr0){let F=Wr0/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${F}s between runs (observed ${U/1000}s)`)}}if($.type==="event"){if(!$.connection_id)throw Error("connection_id is required for event triggers");if(!$.event_type)throw Error("event_type is required for event triggers");if(!await Z.storage.connections.findById($.connection_id,G.id))throw Error("Connection not found");let K={id:"",automation_id:$.automation_id,type:"event",cron_expression:null,connection_id:$.connection_id,event_type:$.event_type,params:$.params?JSON.stringify($.params):null,last_run_at:null,next_run_at:null,api_key_id:null,created_at:""},U=await rN(Z,K,!0,Z.storage.triggerCallbackTokens);if(!U.success)throw Error(`Failed to configure trigger on connection: ${U.error}`)}let Q=$.type==="cron"&&$.cron_expression?C41($.cron_expression,new Date):null,Y=await Z.storage.automations.addTrigger({automation_id:$.automation_id,type:$.type,cron_expression:$.type==="cron"?$.cron_expression:null,connection_id:$.type==="event"?$.connection_id:null,event_type:$.type==="event"?$.event_type:null,params:$.params?JSON.stringify($.params):null,next_run_at:Q?.toISOString()??null}),J=null;if($.type==="webhook")try{let W=await Z.boundAuth.apiKey.create({name:`webhook:${X.name}:${Y.id.slice(0,8)}`,permissions:{[$f(Y.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:X.id,trigger_id:Y.id}});await Z.storage.automations.setTriggerApiKeyId(Y.id,W.id),J={url:m41(Z.baseUrl,G.slug,Y.id),token:W.key}}catch(W){await Z.storage.automations.removeTrigger(Y.id,Y.automation_id);let K=W instanceof Error?W.message:String(W);throw Error(`Failed to mint webhook token: ${K}`)}return await v41(Y,X),{id:Y.id,automation_id:Y.automation_id,type:Y.type,created_at:Y.created_at,webhook:J}}})});import{z as i41}from"zod";var Ch1;var Ur0=D(()=>{hL();n1();Lm();Ch1=Z1({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:i41.object({trigger_id:i41.string()}),outputSchema:i41.object({success:i41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findTriggerById($.trigger_id);if(!X)throw Error("Trigger not found");if(!await Z.storage.automations.findById(X.automation_id,G.id))throw Error("Automation not found");if(X.type==="event"){let J=await rN(Z,X,!1,Z.storage.triggerCallbackTokens);if(!J.success)console.warn(`Failed to disable trigger ${X.id}: ${J.error}`)}let{success:Y}=await Z.storage.automations.removeTrigger(X.id,X.automation_id);if(X.type==="cron")await Ph1(X.id);if(X.type==="webhook"&&X.api_key_id)try{await Z.boundAuth.apiKey.delete(X.api_key_id)}catch(J){console.warn(`[trigger-remove] failed to delete api key ${X.api_key_id} for trigger ${X.id}:`,J instanceof Error?J.message:J)}return{success:Y}}})});import{z as Zf}from"zod";var _h1;var Fr0=D(()=>{n1();_h1=Z1({name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger. Returns a new token; the old token is revoked.",annotations:{title:"Rotate Webhook Token",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:Zf.object({trigger_id:Zf.string()}),outputSchema:Zf.object({trigger_id:Zf.string(),url:Zf.string(),token:Zf.string()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findTriggerById($.trigger_id);if(!X)throw Error("Trigger not found");if(X.type!=="webhook")throw Error("Trigger is not a webhook trigger");let Q=await Z.storage.automations.findById(X.automation_id,G.id);if(!Q)throw Error("Automation not found");let Y=X.api_key_id,J=await Z.boundAuth.apiKey.create({name:`webhook:${Q.name}:${X.id.slice(0,8)}`,permissions:{[$f(X.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:Q.id,trigger_id:X.id}});if(await Z.storage.automations.setTriggerApiKeyId(X.id,J.id),Y)try{await Z.boundAuth.apiKey.delete(Y)}catch(W){console.warn(`[trigger-rotate] failed to delete old key ${Y} for trigger ${X.id}:`,W instanceof Error?W.message:W)}return{trigger_id:X.id,url:m41(Z.baseUrl,G.slug,X.id),token:J.key}}})});import{z as Gf}from"zod";var bh1;var Hr0=D(()=>{N5();n1();bh1=Z1({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Gf.object({id:Gf.string()}),outputSchema:Gf.object({threadId:Gf.string().optional(),error:Gf.string().optional(),skipped:Gf.string().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),!Z.automationRunner)throw Error("Automation runner not available");let X=L$(Z);if(!X)throw Error("User ID not available");let Q=await Z.automationRunner($.id,G.id,X);if(z$.capture({distinctId:X,event:"automation_run",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:$.id,thread_id:"taskId"in Q?Q.taskId:void 0,status:"skipped"in Q?"skipped":("error"in Q)?"error":"started",skip_reason:"skipped"in Q?Q.skipped:void 0,error_message:"error"in Q?Q.error:void 0}}),"skipped"in Q)return{skipped:Q.skipped};if("error"in Q)return{threadId:Q.taskId,error:Q.error};return{threadId:Q.taskId}}})});import{z as vZ}from"zod";var mg8=500,vh1;var Nr0=D(()=>{f9();n1();vh1=Z1({name:"AUTOMATION_RUN_STATS",description:"Aggregate run counts (by status) and LLM token/cost totals for a single automation.",annotations:{title:"Automation Run Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:vZ.object({automation_id:vZ.string(),startDate:vZ.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:vZ.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:vZ.object({runs:vZ.object({total:vZ.number(),completed:vZ.number(),failed:vZ.number(),inProgress:vZ.number()}),usage:vZ.object({calls:vZ.number(),inputTokens:vZ.number(),outputTokens:vZ.number(),totalTokens:vZ.number(),costUsd:vZ.number(),sampledRuns:vZ.number(),truncated:vZ.boolean()})}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),await fQ(),!await Z.storage.automations.findById($.automation_id,G.id))throw Error("Automation not found");let Q=await Z.storage.automations.getRunStats($.automation_id,G.id,{startDate:$.startDate,endDate:$.endDate}),Y=await Z.storage.automations.listRunThreadIds($.automation_id,G.id,{startDate:$.startDate,endDate:$.endDate,limit:mg8}),J={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:Y.length,truncated:Q.total>Y.length};if(Y.length>0){let W=await Z.storage.monitoring.queryThreadUsage({organizationId:G.id,connectionId:"decopilot",threadIds:Y,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});for(let K of W)J.calls+=K.calls,J.inputTokens+=K.inputTokens,J.outputTokens+=K.outputTokens,J.totalTokens+=K.totalTokens,J.costUsd+=K.costUsd}return{runs:Q,usage:J}}})});var Or0=D(()=>{Co0();_o0();bo0();Yr0();Jr0();Kr0();Ur0();Fr0();Hr0();Nr0()});import{z as aN}from"zod";var ng8,pg8,fh1;var Br0=D(()=>{n1();ng8=aN.object({id:aN.string().min(1)}),pg8=aN.object({user:aN.object({id:aN.string(),name:aN.string(),email:aN.string(),image:aN.string().nullable()}).nullable()}),fh1=Z1({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ng8,outputSchema:pg8,handler:async($,Z)=>{await Z.access.check(),A1(Z);let G=L$(Z);if(!G)throw Error("Authentication required");let X=await Z.storage.users.findById($.id,G);if(!X)return{user:null};return{user:{id:X.id,name:X.name,email:X.email,image:X.image??null}}}})});var Dr0=D(()=>{Br0()});import RQ from"zod";var xh1;var Lr0=D(()=>{n1();fU();xh1=Z1({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:RQ.object({}),outputSchema:RQ.object({providers:RQ.array(RQ.object({id:RQ.string(),name:RQ.string(),description:RQ.string(),logo:RQ.string().optional(),supportedMethods:RQ.array(RQ.enum(["api-key","oauth-pkce"])),supportsTopUp:RQ.boolean().optional(),supportsCredits:RQ.boolean().optional(),supportsProvision:RQ.boolean().optional()}))}),handler:async($,Z)=>{return A1(Z),N1(Z),await Z.access.check(),{providers:Object.values(O7()).filter((X)=>!!X).map((X)=>({...X.info,supportedMethods:X.supportedMethods,supportsTopUp:!!X.getTopUpUrl,supportsCredits:!!X.getCreditsBalance,supportsProvision:!!X.provisionKey}))}}})});function og8($){if(!$)return;if(!("models"in $))return;return $.models??void 0}function Er0($,Z){if(!$)return!0;if($.includes("*:*"))return!0;return $.some((G)=>G.startsWith(`${Z}:`))}function sN($,Z,G){if(!$)return!0;return $.includes("*:*")||$.includes(`${Z}:*`)||$.includes(`${Z}:${G}`)}function n41($,Z){if($===void 0)return Z;let G=Z;if(G.image&&!sN($,G.image.credentialId,G.image.id)){let{image:X,...Q}=G;G=Q}if(G.deepResearch&&!sN($,G.deepResearch.credentialId,G.deepResearch.id)){let{deepResearch:X,...Q}=G;G=Q}return G}function wr0($){if(!$)return{allowAll:!0,models:{}};if($.includes("*:*"))return{allowAll:!0,models:{}};let Z={};for(let G of $){let X=G.indexOf(":");if(X===-1)continue;let Q=G.slice(0,X),Y=G.slice(X+1);if(!Z[Q])Z[Q]=[];Z[Q].push(Y)}return{allowAll:!1,models:Z}}async function iU($,Z,G){if(!G||HW.includes(G))return;let X=await $.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Z).where("role","=",G).executeTakeFirst();if(!X?.permission)return;try{let Q=JSON.parse(X.permission);return og8(Q)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${G}`),[]}}var Em=D(()=>{KL()});var yh1;var zr0=D(()=>{yh1=[{providerId:"claude-code",modelId:"claude-code:haiku",title:"Claude Code Haiku",description:"Fast and lightweight",capabilities:["text"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:sonnet",title:"Claude Code Sonnet",description:"Balanced performance",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus",title:"Claude Code Opus",description:"Most capable",capabilities:["text","reasoning"],limits:null,costs:null}]});var jr0=D(()=>{zr0()});var gh1;var Pr0=D(()=>{gh1=[{providerId:"codex",modelId:"codex:gpt-5.5",title:"GPT-5.5",description:"Frontier model for complex coding, research, and real-world work",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4",title:"GPT-5.4",description:"Strong model for everyday coding",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4-mini",title:"GPT-5.4 Mini",description:"Small, fast, and cost-efficient model for simpler coding tasks",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.3-codex-spark",title:"GPT-5.3 Codex Spark",description:"Ultra-fast coding model",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null}]});var Ar0=D(()=>{Pr0()});import DZ from"zod";var hh1;var Rr0=D(()=>{n1();Em();jr0();Ar0();hh1=Z1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:DZ.object({keyId:DZ.string().describe("The provider key ID to use")}),outputSchema:DZ.object({models:DZ.array(DZ.object({providerId:DZ.string(),modelId:DZ.string(),title:DZ.string(),description:DZ.string().nullish(),logo:DZ.string().nullish(),capabilities:DZ.array(DZ.string()),limits:DZ.object({contextWindow:DZ.coerce.number(),maxOutputTokens:DZ.coerce.number().nullable()}).nullish(),costs:DZ.object({input:DZ.coerce.number(),output:DZ.coerce.number()}).nullish(),asyncResearch:DZ.boolean().optional()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.findById($.keyId,G.id).catch(()=>null);if(X?.providerId==="claude-code")return{models:yh1};if(X?.providerId==="codex")return{models:gh1};let[Q,Y]=await Promise.all([Z.aiProviders.listModels($.keyId,G.id),iU(Z.db,G.id,Z.auth.user?.role)]);return{models:Q.filter((W)=>sN(Y,$.keyId,W.modelId))}}})});import nU from"zod";var uh1;var Ir0=D(()=>{n1();fU();uh1=Z1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:nU.object({}),outputSchema:nU.object({providers:nU.array(nU.object({id:nU.string(),name:nU.string(),description:nU.string(),logo:nU.string().optional(),keyCount:nU.number()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.list({organizationId:G.id}),Q=new Map;for(let J of X)Q.set(J.providerId,(Q.get(J.providerId)??0)+1);return{providers:[...Q.entries()].flatMap(([J,W])=>{let U=O7()[J];if(!U)return console.warn(`AI provider "${J}" has stored keys but is not in the registry; skipping.`),[];return[{...U.info,keyCount:W}]})}}})});var eN=D(()=>{_8()});import rJ from"zod";var cL,ch1;var wm=D(()=>{N5();n1();eN();cL=rJ.object({id:rJ.string(),providerId:rJ.string(),label:rJ.string(),presetId:rJ.string().nullable(),createdAt:rJ.string()}),ch1=Z1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:rJ.object({providerId:rJ.enum(sZ),label:rJ.string().min(1).max(100),apiKey:rJ.string().min(1),presetId:rJ.string().min(1).max(64).optional()}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.create({providerId:$.providerId,label:$.label,apiKey:$.apiKey,organizationId:G.id,createdBy:Z.auth.user.id,presetId:$.presetId??null});return z$.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_created",groups:{organization:G.id},properties:{organization_id:G.id,provider_id:X.providerId,preset_id:X.presetId,key_id:X.id,label:X.label}}),{id:X.id,providerId:X.providerId,label:X.label,presetId:X.presetId,createdAt:X.createdAt}}})});import p41 from"zod";var zm=($,Z)=>$&&$.keyId===Z?null:$,rg8=($,Z)=>{let G={tiers:{fast:zm($.tiers.fast,Z),smart:zm($.tiers.smart,Z),thinking:zm($.tiers.thinking,Z),image:zm($.tiers.image,Z),web_research:zm($.tiers.web_research,Z)}},X=G.tiers.fast!==$.tiers.fast||G.tiers.smart!==$.tiers.smart||G.tiers.thinking!==$.tiers.thinking||G.tiers.image!==$.tiers.image||G.tiers.web_research!==$.tiers.web_research;return{config:G,changed:X}},lh1;var Tr0=D(()=>{N5();n1();lh1=Z1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:p41.object({keyId:p41.string().describe("The provider key ID to delete")}),outputSchema:p41.object({success:p41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.organizationSettings.get(G.id);if(X?.simple_mode){let{config:Q,changed:Y}=rg8(X.simple_mode,$.keyId);if(Y)await Z.storage.organizationSettings.upsert(G.id,{simple_mode:Q})}return await Z.storage.aiProviderKeys.delete($.keyId,G.id),z$.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:G.id},properties:{organization_id:G.id,key_id:$.keyId}}),{success:!0}}})});import t41 from"zod";var dh1;var qr0=D(()=>{n1();wm();dh1=Z1({name:"AI_PROVIDER_KEY_UPDATE",description:"Update the label and/or API key of a stored AI provider key. Pass apiKey to rotate the stored credential.",inputSchema:t41.object({keyId:t41.string(),label:t41.string().min(1).max(100).optional(),apiKey:t41.string().min(1).optional()}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.updateKey($.keyId,G.id,{label:$.label,apiKey:$.apiKey});return{id:X.id,providerId:X.providerId,label:X.label,presetId:X.presetId,createdAt:X.createdAt}}})});import Xf from"zod";var mh1;var Mr0=D(()=>{n1();mh1=Z1({name:"AI_PROVIDER_KEY_PREVIEW",description:"Get the label and a masked preview of a stored AI provider API key. The API key is partially obscured (only the last 4 characters are visible). For openai-compatible keys the baseUrl is also returned.",inputSchema:Xf.object({keyId:Xf.string()}),outputSchema:Xf.object({label:Xf.string(),maskedKey:Xf.string(),baseUrl:Xf.string().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),Z.storage.aiProviderKeys.getPreview($.keyId,G.id)}})});import aJ from"zod";var ih1;var kr0=D(()=>{n1();eN();Em();ih1=Z1({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:aJ.object({providerId:aJ.enum(sZ).optional()}),outputSchema:aJ.object({keys:aJ.array(aJ.object({id:aJ.string(),providerId:aJ.string(),label:aJ.string(),presetId:aJ.string().nullable(),createdBy:aJ.string(),createdAt:aJ.string()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let[X,Q]=await Promise.all([Z.storage.aiProviderKeys.list({organizationId:G.id,providerId:$.providerId}),iU(Z.db,G.id,Z.auth.user?.role)]);return{keys:X.filter((W)=>Er0(Q,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as ag8,randomBytes as sg8}from"crypto";function Vr0(){return sg8(32).toString("base64url")}function Sr0($){return ag8("sha256").update($).digest("base64url")}var Cr0=()=>{};import Qf from"zod";var nh1;var _r0=D(()=>{n1();eN();fU();Cr0();M4();nh1=Z1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:Qf.object({providerId:Qf.enum(sZ),callbackUrl:Qf.string().url().refine(($)=>{let Z=q0(),G=Z.baseUrl??`http://localhost:${Z.port}`;return new URL($).origin===new URL(G).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:Qf.object({url:Qf.string(),stateToken:Qf.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=O7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.supportedMethods.includes("oauth-pkce")||!X.getOAuthUrl)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let Q=Vr0(),Y=Sr0(Q),J=await Z.storage.oauthPkceStates.create(Q,G.id,Z.auth.user.id),W=new URL($.callbackUrl);W.searchParams.set("state",J);let K={callbackUrl:W.toString(),codeChallenge:Y,codeChallengeMethod:"S256",organizationId:G.id};return{url:X.getOAuthUrl(K),stateToken:J}}})});import jm from"zod";var ph1;var br0=D(()=>{n1();eN();fU();wm();ph1=Z1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:jm.object({providerId:jm.enum(sZ),code:jm.string(),stateToken:jm.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:jm.string().min(1).max(100)}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=O7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.supportedMethods.includes("oauth-pkce")||!X.exchangeOAuthCode)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let Q=L$(Z);if(!Q)throw Error("Unable to determine user ID");let Y=await Z.storage.oauthPkceStates.consume($.stateToken,G.id,Q),{apiKey:J}=await X.exchangeOAuthCode({code:$.code,codeVerifier:Y,codeChallengeMethod:"S256"}),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:$.label,apiKey:J,organizationId:G.id,createdBy:Q});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import vr0 from"zod";var th1;var fr0=D(()=>{n1();eN();fU();ZD();wm();th1=Z1({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:vr0.object({providerId:vr0.enum(sZ)}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.provisionKey)throw Error(`Provider ${$.providerId} does not support key provisioning`);let Y=await CH(X),J=await Q.provisionKey(Y,G.id),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:"Auto-provisioned",apiKey:J,organizationId:G.id,createdBy:X});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import Yf from"zod";var oh1;var xr0=D(()=>{n1();eN();fU();ZD();oh1=Z1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:Yf.object({providerId:Yf.enum(sZ),amountCents:Yf.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:Yf.enum(["usd","brl"]).default("usd")}),outputSchema:Yf.object({url:Yf.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.getTopUpUrl)throw Error(`Provider ${$.providerId} does not support credit top-ups`);let Y=await CH(X);return{url:await Q.getTopUpUrl(Y,G.id,$.amountCents,$.currency)}}})});import o41 from"zod";var rh1;var yr0=D(()=>{n1();eN();fU();ZD();rh1=Z1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:o41.object({providerId:o41.enum(sZ)}),outputSchema:o41.object({balanceCents:o41.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.getCreditsBalance)throw Error(`Provider ${$.providerId} does not expose a credits balance`);let Y=await CH(X);return Q.getCreditsBalance(Y,G.id)}})});var gr0=D(()=>{Lr0();Rr0();Ir0();wm();Tr0();qr0();Mr0();kr0();_r0();br0();fr0();xr0();yr0()});import TW from"zod";var r41;var ah1=D(()=>{r41=TW.object({id:TW.string(),scope:TW.enum(["user","organization"]),userId:TW.string().nullable(),name:TW.string(),description:TW.string().nullable(),createdBy:TW.string(),createdAt:TW.string(),updatedBy:TW.string(),updatedAt:TW.string()})});import Pm from"zod";var sh1;var hr0=D(()=>{n1();ah1();sh1=Z1({name:"SECRET_CREATE",description:"Create a secret. The value is encrypted at rest in the credential vault and never returned by any tool. Scope 'user' is private to the caller within this organization; scope 'organization' is visible to all org members.",inputSchema:Pm.object({scope:Pm.enum(["user","organization"]),name:Pm.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:Pm.string().min(1),description:Pm.string().max(500).optional()}),outputSchema:r41,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=Z.auth.user.id,Q=$.scope==="user"?{kind:"user",userId:X}:{kind:"organization"};return await Z.storage.secrets.create({organizationId:G.id,scope:Q,name:$.name,value:$.value,description:$.description??null,createdBy:X})}})});import a41 from"zod";var eh1;var ur0=D(()=>{n1();ah1();eh1=Z1({name:"SECRET_LIST",description:"List secrets visible to the caller: all organization-scoped secrets, plus user-scoped secrets owned by the caller. Values are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:a41.object({scope:a41.enum(["user","organization"]).optional()}),outputSchema:a41.object({secrets:a41.array(r41)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=Z.auth.user.id,Q=$.scope==="user"?{kind:"user",userId:X}:$.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await Z.storage.secrets.list({organizationId:G.id,callerUserId:X,scope:Q})}}})});var cr0=D(()=>{hr0();ur0()});import _G from"zod";function e41($){if($==null)return null;let Z=$.trim().replace(/^\/+/,"");if(Z==="")return null;return Z.endsWith("/")?Z:`${Z}/`}function $61($){if($==null)return null;let Z=$.trim().replace(/\/+$/,"");return Z===""?null:Z}var Jf,s41;var Z61=D(()=>{Jf=_G.object({id:_G.string(),name:_G.string(),description:_G.string().nullable(),bucket:_G.string(),region:_G.string(),endpoint:_G.string().nullable(),forcePathStyle:_G.boolean(),prefix:_G.string().nullable(),publicUrlBase:_G.string().nullable(),createdBy:_G.string(),createdAt:_G.string(),updatedBy:_G.string(),updatedAt:_G.string()}),s41=_G.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."})});import qW from"zod";var $u1;var lr0=D(()=>{n1();Z61();$u1=Z1({name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration scoped to the organization. The access key and secret key are encrypted at rest in the credential vault and never returned by any tool.",inputSchema:qW.object({name:s41,description:qW.string().max(500).optional(),bucket:qW.string().min(1).max(255),region:qW.string().min(1).max(64),endpoint:qW.string().url().optional(),forcePathStyle:qW.boolean().optional(),prefix:qW.string().max(512).optional(),publicUrlBase:qW.string().url().optional(),accessKeyId:qW.string().min(1),secretAccessKey:qW.string().min(1)}),outputSchema:Jf,handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),Z.storage.orgFileConfigs.create({organizationId:G.id,name:$.name,description:$.description??null,bucket:$.bucket,region:$.region,endpoint:$.endpoint??null,forcePathStyle:$.forcePathStyle??!1,prefix:e41($.prefix),publicUrlBase:$61($.publicUrlBase),credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},createdBy:Z.auth.user.id})}})});import Zu1 from"zod";var Gu1;var dr0=D(()=>{n1();Z61();Gu1=Z1({name:"FILE_CONFIG_LIST",description:"List S3-compatible bucket configurations for the organization. Credentials are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Zu1.object({}),outputSchema:Zu1.object({configs:Zu1.array(Jf)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),{configs:await Z.storage.orgFileConfigs.list(G.id)}}})});import sJ from"zod";var Xu1;var mr0=D(()=>{n1();Z61();Xu1=Z1({name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration. Credentials can be rotated by providing both accessKeyId and secretAccessKey; omit them to leave existing credentials untouched.",inputSchema:sJ.object({id:sJ.string().min(1),name:s41.optional(),description:sJ.string().max(500).nullable().optional(),bucket:sJ.string().min(1).max(255).optional(),region:sJ.string().min(1).max(64).optional(),endpoint:sJ.string().url().nullable().optional(),forcePathStyle:sJ.boolean().optional(),prefix:sJ.string().max(512).nullable().optional(),publicUrlBase:sJ.string().url().nullable().optional(),accessKeyId:sJ.string().min(1).optional(),secretAccessKey:sJ.string().min(1).optional()}).refine(($)=>$.accessKeyId===void 0===($.secretAccessKey===void 0),{message:"accessKeyId and secretAccessKey must be provided together when rotating credentials."}),outputSchema:Jf,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=$.accessKeyId&&$.secretAccessKey?{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey}:void 0;return Z.storage.orgFileConfigs.update({id:$.id,organizationId:G.id,name:$.name,description:$.description,bucket:$.bucket,region:$.region,endpoint:$.endpoint,forcePathStyle:$.forcePathStyle,prefix:$.prefix===void 0?void 0:e41($.prefix),publicUrlBase:$.publicUrlBase===void 0?void 0:$61($.publicUrlBase),credentials:X,updatedBy:Z.auth.user.id})}})});import G61 from"zod";var Qu1;var ir0=D(()=>{n1();Qu1=Z1({name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration by id.",inputSchema:G61.object({id:G61.string().min(1)}),outputSchema:G61.object({success:G61.literal(!0)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),await Z.storage.orgFileConfigs.delete($.id,G.id),{success:!0}}})});function Zh8($){return new pZ({region:$.info.region,endpoint:$.info.endpoint??void 0,forcePathStyle:$.info.forcePathStyle,credentials:{accessKeyId:$.credentials.accessKeyId,secretAccessKey:$.credentials.secretAccessKey},requestChecksumCalculation:"WHEN_REQUIRED",responseChecksumValidation:"WHEN_REQUIRED"})}function Ju1($,Z){if($.publicUrlBase)return`${$.publicUrlBase}/${X61(Z)}`;if($.endpoint)return`${$.endpoint.replace(/\/+$/,"")}/${$.bucket}/${X61(Z)}`;return $.forcePathStyle?`https://s3.${$.region}.amazonaws.com/${$.bucket}/${X61(Z)}`:`https://${$.bucket}.s3.${$.region}.amazonaws.com/${X61(Z)}`}function X61($){return $.split("/").map(encodeURIComponent).join("/")}async function nr0($,Z,G){return $.resolveById(Z,G)}async function pr0($){let Z=Zh8($.ctx),G=Math.min($.maxKeys??50,200),X=$.ctx.info.prefix??"",Q=new Date,Y=String(Q.getUTCFullYear()),J=String(Q.getUTCFullYear()-1),W=[`${X}${Y}/`,`${X}${J}/`];if($.cursor){let B=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:X||void 0,MaxKeys:G,ContinuationToken:$.cursor}));return Gh8(B,$.ctx,G,!1,W)}let K=W,U=new Map;for(let B of K){if(U.size>=G)break;let L=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:B,MaxKeys:G-U.size}));for(let w of L.Contents??[]){if(!w.Key||w.Key.endsWith("/")||U.has(w.Key))continue;U.set(w.Key,Yu1(w,$.ctx))}}let F=Math.max(1,G-U.size),H=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:X||void 0,MaxKeys:F}));for(let B of H.Contents??[]){if(U.size>=G)break;if(!B.Key||B.Key.endsWith("/")||U.has(B.Key))continue;if(W.some((L)=>B.Key.startsWith(L)))continue;U.set(B.Key,Yu1(B,$.ctx))}let N=H.IsTruncated?H.NextContinuationToken??null:null;return{items:Array.from(U.values()).sort(tr0),nextCursor:N}}function Yu1($,Z){return{key:$.Key,size:$.Size??0,lastModified:$.LastModified?$.LastModified.toISOString():null,publicUrl:Ju1(Z.info,$.Key)}}function tr0($,Z){if(!$.lastModified&&!Z.lastModified)return 0;if(!$.lastModified)return 1;if(!Z.lastModified)return-1;return Z.lastModified.localeCompare($.lastModified)}function Gh8($,Z,G,X,Q=[]){let Y=($.Contents??[]).filter((J)=>J.Key&&!J.Key.endsWith("/")&&!Q.some((W)=>J.Key.startsWith(W))).slice(0,G).map((J)=>Yu1(J,Z));if(X)Y.sort(tr0);return{items:Y,nextCursor:$.IsTruncated?$.NextContinuationToken??null:null}}var Wu1=D(()=>{$g()});import _Y from"zod";var Ku1;var or0=D(()=>{n1();Wu1();Ku1=Z1({name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured S3 bucket (newest first). Returns public URLs computed from the config's publicUrlBase or the bucket's S3 host. Used by the picker dialog to let users select previously uploaded files.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:_Y.object({configId:_Y.string().min(1),cursor:_Y.string().nullable().optional(),maxKeys:_Y.number().int().min(1).max(200).optional()}),outputSchema:_Y.object({items:_Y.array(_Y.object({key:_Y.string(),size:_Y.number(),lastModified:_Y.string().nullable(),publicUrl:_Y.string()})),nextCursor:_Y.string().nullable()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await nr0(Z.storage.orgFileConfigs,$.configId,G.id);return pr0({ctx:X,cursor:$.cursor,maxKeys:$.maxKeys})}})});var rr0=D(()=>{lr0();dr0();mr0();ir0();or0()});import bY from"zod";var ar0;var sr0=D(()=>{n1();lX();bI1();ar0=Z1({name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes (org/public/*) from their configured GitHub repos. Returns per-set written/deleted/unchanged counts.",inputSchema:bY.object({}),outputSchema:bY.object({results:bY.array(bY.union([bY.object({set:bY.string(),written:bY.number(),deleted:bY.number(),unchanged:bY.number()}),bY.object({set:bY.string(),error:bY.string()})]))}),handler:async($,Z)=>{return A1(Z),await Z.access.check(),{results:await RO0(Z.db,{baseUrl:T3()})}}})});var er0,$a0;var Za0=D(()=>{er0=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
|
|
1207
|
+
`+$}function f41($){if(!$||$.length===0)return[];return $.filter((Z)=>fg8.test(Z))}function xg8($){if($.csp)return $.csp;let Z=$.resourceCsp;if(!Z)return ao0;let G=f41(Z.resourceDomains),X=f41(Z.connectDomains),Q=f41(Z.frameDomains),Y=f41(Z.baseUriDomains),J=G.length>0,W=X.length>0,K=Q.length>0,U=Y.length>0;if(!J&&!W&&!K&&!U)return ao0;let F=G.join(" ");return["default-src 'none'",J?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${F}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",J?`style-src 'unsafe-inline' ${F}`:"style-src 'unsafe-inline'",J?`img-src * data: blob: ${F}`:"img-src * data: blob:",J?`media-src * data: blob: ${F}`:"media-src * data: blob:",J?`font-src data: ${F}`:"font-src data:",W?`connect-src ${X.join(" ")}`:"connect-src 'none'",K?`frame-src ${Q.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",U?`base-uri ${Y.join(" ")}`:"base-uri 'none'"].join("; ")}var ao0,fg8;var eo0=D(()=>{ao0=["default-src 'none'","script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'","style-src 'unsafe-inline'","img-src * data: blob:","media-src * data: blob:","font-src data:","connect-src 'none'","frame-src 'none'","worker-src blob:","form-action 'none'","base-uri 'none'"].join("; ");fg8=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function yg8($){let Z=$.lastFailureAt-$.firstFailureAt;return $.count>=uc0&&Z>=cc0}class Ih1{options;kv=null;codec=sv.JSONCodec();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await $.views.kv(gg8,{storage:sv.StorageType.Memory,ttl:sv.nanos(lc0)})}async recordFailure($){if(!this.kv)return Rh1;let Z=Date.now();for(let G=0;G<hg8;G++)try{let X=await this.kv.get($);if(!(X&&X.operation!=="DEL"&&X.operation!=="PURGE"&&X.value?.length)){let W={count:1,firstFailureAt:Z,lastFailureAt:Z};return await this.kv.create($,this.codec.encode(W)),{count:W.count,shouldDisable:!1}}let Y=this.codec.decode(X.value),J={count:Y.count+1,firstFailureAt:Y.firstFailureAt,lastFailureAt:Z};return await this.kv.update($,this.codec.encode(J),X.revision),{count:J.count,shouldDisable:yg8(J)}}catch{}return Rh1}async recordSuccess($){if(!this.kv)return;try{await this.kv.delete($)}catch{}}teardown(){this.kv=null}}class Dm{async recordFailure(){return Rh1}async recordSuccess(){}teardown(){}}function Th1($){$r0=$??new Dm}function qh1(){return $r0}var sv,Rh1,gg8="DECOCMS_CONN_CIRCUIT",hg8=5,$r0;var Mh1=D(()=>{sv=f(LU(),1),Rh1={count:0,shouldDisable:!1};$r0=new Dm});function Zr0($){if(!$)return{decision:"skip"};if($.startsWith("notifications/"))return{decision:"skip"};if(cg8.has($))return{decision:"skip"};let Z=ug8[$];if(Z)return{decision:"skip-if-list-cached",listType:Z};return{decision:"probe"}}async function Gr0($){if($.method!=="POST")return;let Z=$.headers.get("content-length");if(Z&&Number(Z)>lg8)return;try{let G=await $.clone().json(),Q=(Array.isArray(G)?G[0]:G)?.method;return typeof Q==="string"?Q:void 0}catch{return}}var ug8,cg8,lg8=64000;var Xr0=D(()=>{ug8={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},cg8=new Set(["ping"])});import{SpanStatusCode as x41}from"@opentelemetry/api";async function y41($,Z){let G=$.get("meshContext");try{let X=$.req.header("x-org-id"),Q=$.req.header("x-org-slug"),Y=X?X:Q?await G.db.selectFrom("organization").select("id").where("slug","=",Q).executeTakeFirst().then((O)=>O?.id):null,J=Z?Z:Y?EH(Y):null;if(!J)return $.json({error:"Agent ID or organization ID is required"},400);let W=await G.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":J}},async(O)=>{try{let B=await G.storage.virtualMcps.findById(J,Y??void 0);return O.setStatus({code:x41.OK}),B}catch(B){throw O.setStatus({code:x41.ERROR,message:B.message}),O.recordException(B),B}finally{O.end()}});if(!W)return $.json({error:"Agent not found"},404);if(Y&&W.organization_id!==Y)return $.json({error:"Agent not found"},404);if(W.status!=="active")return $.json({error:`Agent is inactive: ${W.id??"Decopilot"}`},503);if(G.organization?.id&&W.organization_id!==G.organization.id)return $.json({error:"Forbidden: Agent does not belong to your organization"},403);G.connectionId=W.id??void 0;let K=await G.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",W.organization_id).executeTakeFirst();if(K)G.organization={id:K.id,slug:K.slug,name:K.name};let U=await G.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":W.id??"decopilot"}},async(O)=>{try{let B=await xU(W,G,"passthrough");return O.setStatus({code:x41.OK}),B}catch(B){throw O.setStatus({code:x41.ERROR,message:B.message}),O.recordException(B),B}finally{O.end()}}),F={name:W.id??"Decopilot",version:"1.0.0",title:W.title??void 0,description:W.description??void 0,icons:W.icon?[{src:W.icon}]:void 0},H=lK(U,F,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof W.metadata?.instructions==="string"?W.metadata.instructions:void 0,toolCallTimeoutMs:Gv}),N=new CY({enableJsonResponse:$.req.header("Accept")?.includes("application/json")??!1});return await H.connect(N),await mU(H,N,$.req.raw,`virtual-mcp:${W.id??"decopilot"}`,{onClose:()=>U.close()})}catch(X){let Q=X;return console.error("[virtual-mcp] Error handling virtual MCP request:",Q),$.json({error:"Internal server error",message:Q.message},500)}}var g41=()=>{let $=new v0;return $.all("/gateway/:virtualMcpId?",async(Z)=>{let G=Z.req.param("virtualMcpId")||Z.req.header("x-virtual-mcp-id");return y41(Z,G)}),$.all("/virtual-mcp/:virtualMcpId?",async(Z)=>{let G=Z.req.param("virtualMcpId")||Z.req.header("x-virtual-mcp-id");return y41(Z,G)}),$};var h41=D(()=>{_8();av();o4();lv();Bm()});import{SpanStatusCode as u41}from"@opentelemetry/api";var Qr0=($,Z)=>{if($ instanceof Qv)return Z.header("Retry-After",String(Math.ceil($.cooldownRemainingMs/1000))),Z.json({error:$.message},503);if($.message.includes("not found"))return Z.json({error:$.message},404);if($.message.includes("does not belong to the active organization"))return Z.json({error:"Connection not found"},404);if($.message.includes("inactive"))return Z.json({error:$.message},503);return Z.json({error:"Internal server error",message:$.message},500)},c41=()=>{let $=new v0;return $.all("/",async(Z)=>{return y41(Z,void 0)}),$.get("/:connectionId/ui-resource",async(Z)=>{let G=Z.get("meshContext"),X=Z.req.param("connectionId"),Q=Z.req.query("uri");if(!Q)return Z.json({error:"uri query param is required"},400);if(!G.organization?.id)return Z.json({error:"Organization context is required"},403);let Y=await G.storage.connections.findById(X,G.organization.id);if(!Y||Y.organization_id!==G.organization.id)return Z.json({error:"Connection not found"},404);let J=TN(Y,G,!1,A9()??void 0),W,K;try{let O=(await J.readResource({uri:Q})).contents?.[0];W=O?.text,K=O?._meta?.ui?.csp}catch(N){return Z.json({error:N.message},502)}finally{await J.close().catch(()=>{})}if(typeof W!=="string")return Z.json({error:"Resource has no text content"},404);let U=so0(W,{resourceCsp:K}),F=`"${Bun.hash(U).toString(36)}"`,H="private, no-cache";if(Z.req.header("if-none-match")===F)return new Response(null,{status:304,headers:{ETag:F,"Cache-Control":H}});return new Response(U,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:F,"Cache-Control":H}})}),$.all("/:connectionId",async(Z)=>{let G=Z.req.param("connectionId"),X=Z.get("meshContext");if(G.endsWith("_self")){let Q=G.slice(0,-5);if(!X.organization||X.organization.id!==Q)return Z.json({error:"Connection not found"},404);let Y=await ev(X),J=new CY({enableJsonResponse:Z.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),uL.run(X,()=>mU(Y,J,Z.req.raw,`mcp:self:${G}`))}try{try{if(!X.organization?.id)return Z.json({error:"Organization context is required"},403);let Q=await X.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":G}},async(N)=>{$Y(Z,"mcp.find_connection");try{let O=await X.storage.connections.findById(G,X.organization.id);return N.setStatus({code:u41.OK}),O}catch(O){throw N.setStatus({code:u41.ERROR,message:O.message}),N.recordException(O),O}finally{pX(Z,"mcp.find_connection"),N.end()}});if(!Q)throw Error("Connection not found");if(Q.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(Q.status!=="active")throw Error(`Connection inactive: ${Q.status}`);let Y=await Gr0(Z.req.raw),{decision:J,listType:W}=Zr0(Y),K=J==="probe";if(J==="skip-if-list-cached"&&W){let N=A9();K=N?await N.get(W,G)===null:!0}if(Q.connection_url&&K)d$1(G),await X.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":G,"connection.url":Q.connection_url}},async(N)=>{$Y(Z,"mcp.client_handshake");try{await kG(Q,X,!1),m$1(G),qh1().recordSuccess(G),N.setStatus({code:u41.OK})}catch(O){throw N.setStatus({code:u41.ERROR,message:O.message}),N.recordException(O),O}finally{pX(Z,"mcp.client_handshake"),N.end()}});$Y(Z,"mcp.create_server");let U=cy1(Q,X,!1);pX(Z,"mcp.create_server");let F=new CY({enableJsonResponse:Z.req.raw.headers.get("Accept")?.includes("application/json")??!1});$Y(Z,"mcp.server_connect"),await U.connect(F),pX(Z,"mcp.server_connect"),$Y(Z,"mcp.handle_request");let H=await mU(U,F,Z.req.raw,`mcp:${G}`);return pX(Z,"mcp.handle_request"),H}catch(Q){if(Q instanceof Qv)throw Q;let Y=await X.storage.connections.findById(G,X.organization?.id);if(Y?.connection_url){let J=await Sy1({error:Q,reqUrl:new URL(Z.req.raw.url),connectionId:G,connectionUrl:Y.connection_url,headers:{},orgSlug:X.organization?.slug});if(J)return J;i$1(G);let{shouldDisable:W}=await qh1().recordFailure(G);if(W&&Y.status==="active")await X.storage.connections.update(G,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:G,org:X.organization?.slug,error:Q.message})}throw Q}}catch(Q){return Qr0(Q,Z)}}),$.all("/:connectionId/call-tool/:toolName",async(Z)=>{let G=Z.req.param("connectionId"),X=Z.req.param("toolName"),Q=Z.get("meshContext");try{let Y=await Q.storage.connections.findById(G,Q.organization?.id);if(!Y)return Z.json({error:"Connection not found"},404);let W=await(await kG(Y,Q,!1)).callTool({name:X,arguments:await Z.req.json()});if(W.isError)return new Response(JSON.stringify(W.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(W.structuredContent??W.content),{headers:{"Content-Type":"application/json"}})}catch(Y){let J=await Q.storage.connections.findById(G,Q.organization?.id);if(J?.connection_url){let W=await Sy1({error:Y,reqUrl:new URL(Z.req.raw.url),connectionId:G,connectionUrl:J.connection_url,headers:{},orgSlug:Q.organization?.slug});if(W)return W}return Qr0(Y,Z)}}),$};var l41=D(()=>{dv();av();o4();ZM1();mv();Bm();td();KQ();Ml();eo0();xv1();Mh1();Xr0();h41();r$1()});async function rN($,Z,G,X){if(Z.type!=="event"||!Z.connection_id)return{success:!0};let Q=await $.storage.connections.findById(Z.connection_id);if(!Q)return{success:!0};let Y=$.organization?.id,J=$.organization?.slug;try{let W=await kG(Q,$,!0),K=__1.forClient(kl(W)),U,F,H;if(G&&X&&Y){let z=await X.generateTokenPair();F=z.plaintext,H=z.hash,U=J?`${$.baseUrl}/api/${J}/trigger-callback`:`${$.baseUrl}/api/trigger-callback`}let N=5000,O=!1,B=new Promise((z,j)=>setTimeout(()=>{O=!0,j(Error("TRIGGER_CONFIGURE timeout"))},N)),L;try{L=await Promise.race([K.TRIGGER_CONFIGURE({type:Z.event_type,params:JSON.parse(Z.params??"{}"),enabled:G,callbackUrl:U,callbackToken:F}),B])}catch(z){if(O&&G&&X&&Y&&H)await X.persistTokenHash(Y,Z.connection_id,H);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${Z.connection_id} type=${Z.event_type}:`,z),{success:!1,error:String(z)}}let w=L;if(!w||w.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${Z.connection_id} type=${Z.event_type}. Raw payload:`,JSON.stringify(L)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(L)})`};try{if(G&&X&&Y&&H)await X.persistTokenHash(Y,Z.connection_id,H);if(!G&&X&&Y)await X.deleteByConnection(Z.connection_id,Y)}catch(z){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",z)}return{success:!0}}catch(W){return{success:!1,error:String(W)}}}var Lm=D(()=>{dv();l41();b_1()});import{z as K5}from"zod";var kh1;var Yr0=D(()=>{hL();n1();hU();Lm();kh1=Z1({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:K5.object({id:K5.string(),name:K5.string().min(1).max(255).optional(),active:K5.boolean().optional(),messages:K5.union([K5.string(),K5.array(K5.looseObject({id:K5.string().optional(),role:K5.enum(["user","assistant","system"]),parts:K5.array(K5.record(K5.string(),K5.unknown())),metadata:K5.unknown().optional()}))]).optional(),models:K5.object({tier:P41,modelId:K5.string().optional(),credentialId:K5.string().optional()}).loose().optional(),tools:K5.array(K5.string()).nullable().optional(),maxAgentSteps:K5.number().int().min(1).max(100).nullable().optional(),temperature:K5.number().optional()}),outputSchema:K5.object({id:K5.string(),name:K5.string(),active:K5.boolean(),updated_at:K5.string()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findById($.id,G.id);if(!X)throw Error("Automation not found");let Q={};if($.name!==void 0)Q.name=$.name;if($.active!==void 0)Q.active=$.active;if($.messages!==void 0){let J=M41($.messages);Q.messages=JSON.stringify(J)}if($.models!==void 0)Q.models=JSON.stringify($.models);if($.tools!==void 0)Q.tools=$.tools===null?null:JSON.stringify($.tools);if($.temperature!==void 0)Q.temperature=$.temperature;if($.maxAgentSteps!==void 0)Q.max_agent_steps=$.maxAgentSteps;let Y=await Z.storage.automations.update($.id,G.id,Q);if($.active!==void 0&&$.active!==X.active){let J=await Z.storage.automations.listTriggers(Y.id),W=J.filter((K)=>K.type==="event");await Promise.allSettled(W.map(async(K)=>{let U=await rN(Z,K,$.active);if(!U.success)console.warn(`Failed to configure trigger ${K.id}: ${U.error}`)})),await no0(J,$.active)}return{id:Y.id,name:Y.name,active:Y.active,updated_at:Y.updated_at}}})});import{z as d41}from"zod";var Vh1;var Jr0=D(()=>{hL();N5();n1();Lm();Vh1=Z1({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:d41.object({id:d41.string()}),outputSchema:d41.object({success:d41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),!await Z.storage.automations.findById($.id,G.id))throw Error("Automation not found");let Q=await Z.storage.automations.listTriggers($.id),Y=Q.filter((K)=>K.type==="event");await Promise.allSettled(Y.map(async(K)=>{let U=await rN(Z,K,!1);if(!U.success)console.warn(`Failed to disable trigger ${K.id}: ${U.error}`)}));let{success:J}=await Z.storage.automations.delete($.id,G.id);await po0(Q);let W=L$(Z);if(W)z$.capture({distinctId:W,event:"automation_deleted",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:$.id,trigger_count:Q.length}});return{success:J}}})});function $f($){return`webhook_${$}`}function m41($,Z,G){if(!Z)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${$}/api/${Z}/webhooks/${G}`}import{z as D7}from"zod";var Wr0=300000,dg8=10,Sh1;var Kr0=D(()=>{Lh1();hL();Hm();n1();Lm();Sh1=Z1({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron, event, or webhook trigger to an automation. For webhook triggers the response includes a one-time URL + secret token.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:D7.object({automation_id:D7.string(),type:D7.enum(["cron","event","webhook"]),cron_expression:D7.string().optional(),connection_id:D7.string().optional(),event_type:D7.string().optional(),params:D7.record(D7.string(),D7.string()).optional()}),outputSchema:D7.object({id:D7.string(),automation_id:D7.string(),type:D7.enum(["cron","event","webhook"]),created_at:D7.string(),webhook:D7.object({url:D7.string(),token:D7.string()}).nullable().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findById($.automation_id,G.id);if(!X)throw Error("Automation not found");if($.type==="cron"){if(!$.cron_expression)throw Error("cron_expression is required for cron triggers");let K=new tN($.cron_expression,{timezone:"UTC"}).nextRuns(dg8);if(K.length===0)throw Error("Cron expression has no future runs");let U=1/0;for(let F=1;F<K.length;F++){let H=K[F].getTime()-K[F-1].getTime();if(H<U)U=H}if(K.length>=2&&Number.isFinite(U)&&U<Wr0){let F=Wr0/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${F}s between runs (observed ${U/1000}s)`)}}if($.type==="event"){if(!$.connection_id)throw Error("connection_id is required for event triggers");if(!$.event_type)throw Error("event_type is required for event triggers");if(!await Z.storage.connections.findById($.connection_id,G.id))throw Error("Connection not found");let K={id:"",automation_id:$.automation_id,type:"event",cron_expression:null,connection_id:$.connection_id,event_type:$.event_type,params:$.params?JSON.stringify($.params):null,last_run_at:null,next_run_at:null,api_key_id:null,created_at:""},U=await rN(Z,K,!0,Z.storage.triggerCallbackTokens);if(!U.success)throw Error(`Failed to configure trigger on connection: ${U.error}`)}let Q=$.type==="cron"&&$.cron_expression?C41($.cron_expression,new Date):null,Y=await Z.storage.automations.addTrigger({automation_id:$.automation_id,type:$.type,cron_expression:$.type==="cron"?$.cron_expression:null,connection_id:$.type==="event"?$.connection_id:null,event_type:$.type==="event"?$.event_type:null,params:$.params?JSON.stringify($.params):null,next_run_at:Q?.toISOString()??null}),J=null;if($.type==="webhook")try{let W=await Z.boundAuth.apiKey.create({name:`webhook:${X.name}:${Y.id.slice(0,8)}`,permissions:{[$f(Y.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:X.id,trigger_id:Y.id}});await Z.storage.automations.setTriggerApiKeyId(Y.id,W.id),J={url:m41(Z.baseUrl,G.slug,Y.id),token:W.key}}catch(W){await Z.storage.automations.removeTrigger(Y.id,Y.automation_id);let K=W instanceof Error?W.message:String(W);throw Error(`Failed to mint webhook token: ${K}`)}return await v41(Y,X),{id:Y.id,automation_id:Y.automation_id,type:Y.type,created_at:Y.created_at,webhook:J}}})});import{z as i41}from"zod";var Ch1;var Ur0=D(()=>{hL();n1();Lm();Ch1=Z1({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:i41.object({trigger_id:i41.string()}),outputSchema:i41.object({success:i41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findTriggerById($.trigger_id);if(!X)throw Error("Trigger not found");if(!await Z.storage.automations.findById(X.automation_id,G.id))throw Error("Automation not found");if(X.type==="event"){let J=await rN(Z,X,!1,Z.storage.triggerCallbackTokens);if(!J.success)console.warn(`Failed to disable trigger ${X.id}: ${J.error}`)}let{success:Y}=await Z.storage.automations.removeTrigger(X.id,X.automation_id);if(X.type==="cron")await Ph1(X.id);if(X.type==="webhook"&&X.api_key_id)try{await Z.boundAuth.apiKey.delete(X.api_key_id)}catch(J){console.warn(`[trigger-remove] failed to delete api key ${X.api_key_id} for trigger ${X.id}:`,J instanceof Error?J.message:J)}return{success:Y}}})});import{z as Zf}from"zod";var _h1;var Fr0=D(()=>{n1();_h1=Z1({name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger. Returns a new token; the old token is revoked.",annotations:{title:"Rotate Webhook Token",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:Zf.object({trigger_id:Zf.string()}),outputSchema:Zf.object({trigger_id:Zf.string(),url:Zf.string(),token:Zf.string()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.automations.findTriggerById($.trigger_id);if(!X)throw Error("Trigger not found");if(X.type!=="webhook")throw Error("Trigger is not a webhook trigger");let Q=await Z.storage.automations.findById(X.automation_id,G.id);if(!Q)throw Error("Automation not found");let Y=X.api_key_id,J=await Z.boundAuth.apiKey.create({name:`webhook:${Q.name}:${X.id.slice(0,8)}`,permissions:{[$f(X.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:Q.id,trigger_id:X.id}});if(await Z.storage.automations.setTriggerApiKeyId(X.id,J.id),Y)try{await Z.boundAuth.apiKey.delete(Y)}catch(W){console.warn(`[trigger-rotate] failed to delete old key ${Y} for trigger ${X.id}:`,W instanceof Error?W.message:W)}return{trigger_id:X.id,url:m41(Z.baseUrl,G.slug,X.id),token:J.key}}})});import{z as Gf}from"zod";var bh1;var Hr0=D(()=>{N5();n1();bh1=Z1({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Gf.object({id:Gf.string()}),outputSchema:Gf.object({threadId:Gf.string().optional(),error:Gf.string().optional(),skipped:Gf.string().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),!Z.automationRunner)throw Error("Automation runner not available");let X=L$(Z);if(!X)throw Error("User ID not available");let Q=await Z.automationRunner($.id,G.id,X);if(z$.capture({distinctId:X,event:"automation_run",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:$.id,thread_id:"taskId"in Q?Q.taskId:void 0,status:"skipped"in Q?"skipped":("error"in Q)?"error":"started",skip_reason:"skipped"in Q?Q.skipped:void 0,error_message:"error"in Q?Q.error:void 0}}),"skipped"in Q)return{skipped:Q.skipped};if("error"in Q)return{threadId:Q.taskId,error:Q.error};return{threadId:Q.taskId}}})});import{z as vZ}from"zod";var mg8=500,vh1;var Nr0=D(()=>{f9();n1();vh1=Z1({name:"AUTOMATION_RUN_STATS",description:"Aggregate run counts (by status) and LLM token/cost totals for a single automation.",annotations:{title:"Automation Run Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:vZ.object({automation_id:vZ.string(),startDate:vZ.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:vZ.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:vZ.object({runs:vZ.object({total:vZ.number(),completed:vZ.number(),failed:vZ.number(),inProgress:vZ.number()}),usage:vZ.object({calls:vZ.number(),inputTokens:vZ.number(),outputTokens:vZ.number(),totalTokens:vZ.number(),costUsd:vZ.number(),sampledRuns:vZ.number(),truncated:vZ.boolean()})}),handler:async($,Z)=>{A1(Z);let G=N1(Z);if(await Z.access.check(),await fQ(),!await Z.storage.automations.findById($.automation_id,G.id))throw Error("Automation not found");let Q=await Z.storage.automations.getRunStats($.automation_id,G.id,{startDate:$.startDate,endDate:$.endDate}),Y=await Z.storage.automations.listRunThreadIds($.automation_id,G.id,{startDate:$.startDate,endDate:$.endDate,limit:mg8}),J={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:Y.length,truncated:Q.total>Y.length};if(Y.length>0){let W=await Z.storage.monitoring.queryThreadUsage({organizationId:G.id,connectionId:"decopilot",threadIds:Y,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});for(let K of W)J.calls+=K.calls,J.inputTokens+=K.inputTokens,J.outputTokens+=K.outputTokens,J.totalTokens+=K.totalTokens,J.costUsd+=K.costUsd}return{runs:Q,usage:J}}})});var Or0=D(()=>{Co0();_o0();bo0();Yr0();Jr0();Kr0();Ur0();Fr0();Hr0();Nr0()});import{z as aN}from"zod";var ng8,pg8,fh1;var Br0=D(()=>{n1();ng8=aN.object({id:aN.string().min(1)}),pg8=aN.object({user:aN.object({id:aN.string(),name:aN.string(),email:aN.string(),image:aN.string().nullable()}).nullable()}),fh1=Z1({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ng8,outputSchema:pg8,handler:async($,Z)=>{await Z.access.check(),A1(Z);let G=L$(Z);if(!G)throw Error("Authentication required");let X=await Z.storage.users.findById($.id,G);if(!X)return{user:null};return{user:{id:X.id,name:X.name,email:X.email,image:X.image??null}}}})});var Dr0=D(()=>{Br0()});import RQ from"zod";var xh1;var Lr0=D(()=>{n1();fU();xh1=Z1({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:RQ.object({}),outputSchema:RQ.object({providers:RQ.array(RQ.object({id:RQ.string(),name:RQ.string(),description:RQ.string(),logo:RQ.string().optional(),supportedMethods:RQ.array(RQ.enum(["api-key","oauth-pkce"])),supportsTopUp:RQ.boolean().optional(),supportsCredits:RQ.boolean().optional(),supportsProvision:RQ.boolean().optional()}))}),handler:async($,Z)=>{return A1(Z),N1(Z),await Z.access.check(),{providers:Object.values(O7()).filter((X)=>!!X).map((X)=>({...X.info,supportedMethods:X.supportedMethods,supportsTopUp:!!X.getTopUpUrl,supportsCredits:!!X.getCreditsBalance,supportsProvision:!!X.provisionKey}))}}})});function og8($){if(!$)return;if(!("models"in $))return;return $.models??void 0}function Er0($,Z){if(!$)return!0;if($.includes("*:*"))return!0;return $.some((G)=>G.startsWith(`${Z}:`))}function sN($,Z,G){if(!$)return!0;return $.includes("*:*")||$.includes(`${Z}:*`)||$.includes(`${Z}:${G}`)}function n41($,Z){if($===void 0)return Z;let G=Z;if(G.image&&!sN($,G.image.credentialId,G.image.id)){let{image:X,...Q}=G;G=Q}if(G.deepResearch&&!sN($,G.deepResearch.credentialId,G.deepResearch.id)){let{deepResearch:X,...Q}=G;G=Q}return G}function wr0($){if(!$)return{allowAll:!0,models:{}};if($.includes("*:*"))return{allowAll:!0,models:{}};let Z={};for(let G of $){let X=G.indexOf(":");if(X===-1)continue;let Q=G.slice(0,X),Y=G.slice(X+1);if(!Z[Q])Z[Q]=[];Z[Q].push(Y)}return{allowAll:!1,models:Z}}async function iU($,Z,G){if(!G||HW.includes(G))return;let X=await $.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Z).where("role","=",G).executeTakeFirst();if(!X?.permission)return;try{let Q=JSON.parse(X.permission);return og8(Q)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${G}`),[]}}var Em=D(()=>{KL()});var yh1;var zr0=D(()=>{yh1=[{providerId:"claude-code",modelId:"claude-code:haiku",title:"Claude Code Haiku",description:"Fast and lightweight",capabilities:["text"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:sonnet",title:"Claude Code Sonnet",description:"Balanced performance",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus",title:"Claude Code Opus",description:"Most capable",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus-1m",title:"Claude Code Opus 4.8 1M",description:"Most capable, 1M context window",capabilities:["text","reasoning"],limits:{contextWindow:1e6,maxOutputTokens:null},costs:null}]});var jr0=D(()=>{zr0()});var gh1;var Pr0=D(()=>{gh1=[{providerId:"codex",modelId:"codex:gpt-5.5",title:"GPT-5.5",description:"Frontier model for complex coding, research, and real-world work",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4",title:"GPT-5.4",description:"Strong model for everyday coding",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4-mini",title:"GPT-5.4 Mini",description:"Small, fast, and cost-efficient model for simpler coding tasks",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.3-codex-spark",title:"GPT-5.3 Codex Spark",description:"Ultra-fast coding model",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null}]});var Ar0=D(()=>{Pr0()});import DZ from"zod";var hh1;var Rr0=D(()=>{n1();Em();jr0();Ar0();hh1=Z1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:DZ.object({keyId:DZ.string().describe("The provider key ID to use")}),outputSchema:DZ.object({models:DZ.array(DZ.object({providerId:DZ.string(),modelId:DZ.string(),title:DZ.string(),description:DZ.string().nullish(),logo:DZ.string().nullish(),capabilities:DZ.array(DZ.string()),limits:DZ.object({contextWindow:DZ.coerce.number(),maxOutputTokens:DZ.coerce.number().nullable()}).nullish(),costs:DZ.object({input:DZ.coerce.number(),output:DZ.coerce.number()}).nullish(),asyncResearch:DZ.boolean().optional()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.findById($.keyId,G.id).catch(()=>null);if(X?.providerId==="claude-code")return{models:yh1};if(X?.providerId==="codex")return{models:gh1};let[Q,Y]=await Promise.all([Z.aiProviders.listModels($.keyId,G.id),iU(Z.db,G.id,Z.auth.user?.role)]);return{models:Q.filter((W)=>sN(Y,$.keyId,W.modelId))}}})});import nU from"zod";var uh1;var Ir0=D(()=>{n1();fU();uh1=Z1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:nU.object({}),outputSchema:nU.object({providers:nU.array(nU.object({id:nU.string(),name:nU.string(),description:nU.string(),logo:nU.string().optional(),keyCount:nU.number()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.list({organizationId:G.id}),Q=new Map;for(let J of X)Q.set(J.providerId,(Q.get(J.providerId)??0)+1);return{providers:[...Q.entries()].flatMap(([J,W])=>{let U=O7()[J];if(!U)return console.warn(`AI provider "${J}" has stored keys but is not in the registry; skipping.`),[];return[{...U.info,keyCount:W}]})}}})});var eN=D(()=>{_8()});import rJ from"zod";var cL,ch1;var wm=D(()=>{N5();n1();eN();cL=rJ.object({id:rJ.string(),providerId:rJ.string(),label:rJ.string(),presetId:rJ.string().nullable(),createdAt:rJ.string()}),ch1=Z1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:rJ.object({providerId:rJ.enum(sZ),label:rJ.string().min(1).max(100),apiKey:rJ.string().min(1),presetId:rJ.string().min(1).max(64).optional()}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.create({providerId:$.providerId,label:$.label,apiKey:$.apiKey,organizationId:G.id,createdBy:Z.auth.user.id,presetId:$.presetId??null});return z$.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_created",groups:{organization:G.id},properties:{organization_id:G.id,provider_id:X.providerId,preset_id:X.presetId,key_id:X.id,label:X.label}}),{id:X.id,providerId:X.providerId,label:X.label,presetId:X.presetId,createdAt:X.createdAt}}})});import p41 from"zod";var zm=($,Z)=>$&&$.keyId===Z?null:$,rg8=($,Z)=>{let G={tiers:{fast:zm($.tiers.fast,Z),smart:zm($.tiers.smart,Z),thinking:zm($.tiers.thinking,Z),image:zm($.tiers.image,Z),web_research:zm($.tiers.web_research,Z)}},X=G.tiers.fast!==$.tiers.fast||G.tiers.smart!==$.tiers.smart||G.tiers.thinking!==$.tiers.thinking||G.tiers.image!==$.tiers.image||G.tiers.web_research!==$.tiers.web_research;return{config:G,changed:X}},lh1;var Tr0=D(()=>{N5();n1();lh1=Z1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:p41.object({keyId:p41.string().describe("The provider key ID to delete")}),outputSchema:p41.object({success:p41.boolean()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.organizationSettings.get(G.id);if(X?.simple_mode){let{config:Q,changed:Y}=rg8(X.simple_mode,$.keyId);if(Y)await Z.storage.organizationSettings.upsert(G.id,{simple_mode:Q})}return await Z.storage.aiProviderKeys.delete($.keyId,G.id),z$.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:G.id},properties:{organization_id:G.id,key_id:$.keyId}}),{success:!0}}})});import t41 from"zod";var dh1;var qr0=D(()=>{n1();wm();dh1=Z1({name:"AI_PROVIDER_KEY_UPDATE",description:"Update the label and/or API key of a stored AI provider key. Pass apiKey to rotate the stored credential.",inputSchema:t41.object({keyId:t41.string(),label:t41.string().min(1).max(100).optional(),apiKey:t41.string().min(1).optional()}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await Z.storage.aiProviderKeys.updateKey($.keyId,G.id,{label:$.label,apiKey:$.apiKey});return{id:X.id,providerId:X.providerId,label:X.label,presetId:X.presetId,createdAt:X.createdAt}}})});import Xf from"zod";var mh1;var Mr0=D(()=>{n1();mh1=Z1({name:"AI_PROVIDER_KEY_PREVIEW",description:"Get the label and a masked preview of a stored AI provider API key. The API key is partially obscured (only the last 4 characters are visible). For openai-compatible keys the baseUrl is also returned.",inputSchema:Xf.object({keyId:Xf.string()}),outputSchema:Xf.object({label:Xf.string(),maskedKey:Xf.string(),baseUrl:Xf.string().optional()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),Z.storage.aiProviderKeys.getPreview($.keyId,G.id)}})});import aJ from"zod";var ih1;var kr0=D(()=>{n1();eN();Em();ih1=Z1({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:aJ.object({providerId:aJ.enum(sZ).optional()}),outputSchema:aJ.object({keys:aJ.array(aJ.object({id:aJ.string(),providerId:aJ.string(),label:aJ.string(),presetId:aJ.string().nullable(),createdBy:aJ.string(),createdAt:aJ.string()}))}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let[X,Q]=await Promise.all([Z.storage.aiProviderKeys.list({organizationId:G.id,providerId:$.providerId}),iU(Z.db,G.id,Z.auth.user?.role)]);return{keys:X.filter((W)=>Er0(Q,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as ag8,randomBytes as sg8}from"crypto";function Vr0(){return sg8(32).toString("base64url")}function Sr0($){return ag8("sha256").update($).digest("base64url")}var Cr0=()=>{};import Qf from"zod";var nh1;var _r0=D(()=>{n1();eN();fU();Cr0();M4();nh1=Z1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:Qf.object({providerId:Qf.enum(sZ),callbackUrl:Qf.string().url().refine(($)=>{let Z=q0(),G=Z.baseUrl??`http://localhost:${Z.port}`;return new URL($).origin===new URL(G).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:Qf.object({url:Qf.string(),stateToken:Qf.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=O7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.supportedMethods.includes("oauth-pkce")||!X.getOAuthUrl)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let Q=Vr0(),Y=Sr0(Q),J=await Z.storage.oauthPkceStates.create(Q,G.id,Z.auth.user.id),W=new URL($.callbackUrl);W.searchParams.set("state",J);let K={callbackUrl:W.toString(),codeChallenge:Y,codeChallengeMethod:"S256",organizationId:G.id};return{url:X.getOAuthUrl(K),stateToken:J}}})});import jm from"zod";var ph1;var br0=D(()=>{n1();eN();fU();wm();ph1=Z1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:jm.object({providerId:jm.enum(sZ),code:jm.string(),stateToken:jm.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:jm.string().min(1).max(100)}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=O7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.supportedMethods.includes("oauth-pkce")||!X.exchangeOAuthCode)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let Q=L$(Z);if(!Q)throw Error("Unable to determine user ID");let Y=await Z.storage.oauthPkceStates.consume($.stateToken,G.id,Q),{apiKey:J}=await X.exchangeOAuthCode({code:$.code,codeVerifier:Y,codeChallengeMethod:"S256"}),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:$.label,apiKey:J,organizationId:G.id,createdBy:Q});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import vr0 from"zod";var th1;var fr0=D(()=>{n1();eN();fU();ZD();wm();th1=Z1({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:vr0.object({providerId:vr0.enum(sZ)}),outputSchema:cL,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.provisionKey)throw Error(`Provider ${$.providerId} does not support key provisioning`);let Y=await CH(X),J=await Q.provisionKey(Y,G.id),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:"Auto-provisioned",apiKey:J,organizationId:G.id,createdBy:X});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import Yf from"zod";var oh1;var xr0=D(()=>{n1();eN();fU();ZD();oh1=Z1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:Yf.object({providerId:Yf.enum(sZ),amountCents:Yf.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:Yf.enum(["usd","brl"]).default("usd")}),outputSchema:Yf.object({url:Yf.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.getTopUpUrl)throw Error(`Provider ${$.providerId} does not support credit top-ups`);let Y=await CH(X);return{url:await Q.getTopUpUrl(Y,G.id,$.amountCents,$.currency)}}})});import o41 from"zod";var rh1;var yr0=D(()=>{n1();eN();fU();ZD();rh1=Z1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:o41.object({providerId:o41.enum(sZ)}),outputSchema:o41.object({balanceCents:o41.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=L$(Z);if(!X)throw Error("Unable to determine user ID");let Q=O7()[$.providerId];if(!Q)throw Error(`Unknown provider: ${$.providerId}`);if(!Q.getCreditsBalance)throw Error(`Provider ${$.providerId} does not expose a credits balance`);let Y=await CH(X);return Q.getCreditsBalance(Y,G.id)}})});var gr0=D(()=>{Lr0();Rr0();Ir0();wm();Tr0();qr0();Mr0();kr0();_r0();br0();fr0();xr0();yr0()});import TW from"zod";var r41;var ah1=D(()=>{r41=TW.object({id:TW.string(),scope:TW.enum(["user","organization"]),userId:TW.string().nullable(),name:TW.string(),description:TW.string().nullable(),createdBy:TW.string(),createdAt:TW.string(),updatedBy:TW.string(),updatedAt:TW.string()})});import Pm from"zod";var sh1;var hr0=D(()=>{n1();ah1();sh1=Z1({name:"SECRET_CREATE",description:"Create a secret. The value is encrypted at rest in the credential vault and never returned by any tool. Scope 'user' is private to the caller within this organization; scope 'organization' is visible to all org members.",inputSchema:Pm.object({scope:Pm.enum(["user","organization"]),name:Pm.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:Pm.string().min(1),description:Pm.string().max(500).optional()}),outputSchema:r41,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=Z.auth.user.id,Q=$.scope==="user"?{kind:"user",userId:X}:{kind:"organization"};return await Z.storage.secrets.create({organizationId:G.id,scope:Q,name:$.name,value:$.value,description:$.description??null,createdBy:X})}})});import a41 from"zod";var eh1;var ur0=D(()=>{n1();ah1();eh1=Z1({name:"SECRET_LIST",description:"List secrets visible to the caller: all organization-scoped secrets, plus user-scoped secrets owned by the caller. Values are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:a41.object({scope:a41.enum(["user","organization"]).optional()}),outputSchema:a41.object({secrets:a41.array(r41)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=Z.auth.user.id,Q=$.scope==="user"?{kind:"user",userId:X}:$.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await Z.storage.secrets.list({organizationId:G.id,callerUserId:X,scope:Q})}}})});var cr0=D(()=>{hr0();ur0()});import _G from"zod";function e41($){if($==null)return null;let Z=$.trim().replace(/^\/+/,"");if(Z==="")return null;return Z.endsWith("/")?Z:`${Z}/`}function $61($){if($==null)return null;let Z=$.trim().replace(/\/+$/,"");return Z===""?null:Z}var Jf,s41;var Z61=D(()=>{Jf=_G.object({id:_G.string(),name:_G.string(),description:_G.string().nullable(),bucket:_G.string(),region:_G.string(),endpoint:_G.string().nullable(),forcePathStyle:_G.boolean(),prefix:_G.string().nullable(),publicUrlBase:_G.string().nullable(),createdBy:_G.string(),createdAt:_G.string(),updatedBy:_G.string(),updatedAt:_G.string()}),s41=_G.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."})});import qW from"zod";var $u1;var lr0=D(()=>{n1();Z61();$u1=Z1({name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration scoped to the organization. The access key and secret key are encrypted at rest in the credential vault and never returned by any tool.",inputSchema:qW.object({name:s41,description:qW.string().max(500).optional(),bucket:qW.string().min(1).max(255),region:qW.string().min(1).max(64),endpoint:qW.string().url().optional(),forcePathStyle:qW.boolean().optional(),prefix:qW.string().max(512).optional(),publicUrlBase:qW.string().url().optional(),accessKeyId:qW.string().min(1),secretAccessKey:qW.string().min(1)}),outputSchema:Jf,handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),Z.storage.orgFileConfigs.create({organizationId:G.id,name:$.name,description:$.description??null,bucket:$.bucket,region:$.region,endpoint:$.endpoint??null,forcePathStyle:$.forcePathStyle??!1,prefix:e41($.prefix),publicUrlBase:$61($.publicUrlBase),credentials:{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey},createdBy:Z.auth.user.id})}})});import Zu1 from"zod";var Gu1;var dr0=D(()=>{n1();Z61();Gu1=Z1({name:"FILE_CONFIG_LIST",description:"List S3-compatible bucket configurations for the organization. Credentials are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Zu1.object({}),outputSchema:Zu1.object({configs:Zu1.array(Jf)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),{configs:await Z.storage.orgFileConfigs.list(G.id)}}})});import sJ from"zod";var Xu1;var mr0=D(()=>{n1();Z61();Xu1=Z1({name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration. Credentials can be rotated by providing both accessKeyId and secretAccessKey; omit them to leave existing credentials untouched.",inputSchema:sJ.object({id:sJ.string().min(1),name:s41.optional(),description:sJ.string().max(500).nullable().optional(),bucket:sJ.string().min(1).max(255).optional(),region:sJ.string().min(1).max(64).optional(),endpoint:sJ.string().url().nullable().optional(),forcePathStyle:sJ.boolean().optional(),prefix:sJ.string().max(512).nullable().optional(),publicUrlBase:sJ.string().url().nullable().optional(),accessKeyId:sJ.string().min(1).optional(),secretAccessKey:sJ.string().min(1).optional()}).refine(($)=>$.accessKeyId===void 0===($.secretAccessKey===void 0),{message:"accessKeyId and secretAccessKey must be provided together when rotating credentials."}),outputSchema:Jf,handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=$.accessKeyId&&$.secretAccessKey?{accessKeyId:$.accessKeyId,secretAccessKey:$.secretAccessKey}:void 0;return Z.storage.orgFileConfigs.update({id:$.id,organizationId:G.id,name:$.name,description:$.description,bucket:$.bucket,region:$.region,endpoint:$.endpoint,forcePathStyle:$.forcePathStyle,prefix:$.prefix===void 0?void 0:e41($.prefix),publicUrlBase:$.publicUrlBase===void 0?void 0:$61($.publicUrlBase),credentials:X,updatedBy:Z.auth.user.id})}})});import G61 from"zod";var Qu1;var ir0=D(()=>{n1();Qu1=Z1({name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration by id.",inputSchema:G61.object({id:G61.string().min(1)}),outputSchema:G61.object({success:G61.literal(!0)}),handler:async($,Z)=>{A1(Z);let G=N1(Z);return await Z.access.check(),await Z.storage.orgFileConfigs.delete($.id,G.id),{success:!0}}})});function Zh8($){return new pZ({region:$.info.region,endpoint:$.info.endpoint??void 0,forcePathStyle:$.info.forcePathStyle,credentials:{accessKeyId:$.credentials.accessKeyId,secretAccessKey:$.credentials.secretAccessKey},requestChecksumCalculation:"WHEN_REQUIRED",responseChecksumValidation:"WHEN_REQUIRED"})}function Ju1($,Z){if($.publicUrlBase)return`${$.publicUrlBase}/${X61(Z)}`;if($.endpoint)return`${$.endpoint.replace(/\/+$/,"")}/${$.bucket}/${X61(Z)}`;return $.forcePathStyle?`https://s3.${$.region}.amazonaws.com/${$.bucket}/${X61(Z)}`:`https://${$.bucket}.s3.${$.region}.amazonaws.com/${X61(Z)}`}function X61($){return $.split("/").map(encodeURIComponent).join("/")}async function nr0($,Z,G){return $.resolveById(Z,G)}async function pr0($){let Z=Zh8($.ctx),G=Math.min($.maxKeys??50,200),X=$.ctx.info.prefix??"",Q=new Date,Y=String(Q.getUTCFullYear()),J=String(Q.getUTCFullYear()-1),W=[`${X}${Y}/`,`${X}${J}/`];if($.cursor){let B=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:X||void 0,MaxKeys:G,ContinuationToken:$.cursor}));return Gh8(B,$.ctx,G,!1,W)}let K=W,U=new Map;for(let B of K){if(U.size>=G)break;let L=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:B,MaxKeys:G-U.size}));for(let w of L.Contents??[]){if(!w.Key||w.Key.endsWith("/")||U.has(w.Key))continue;U.set(w.Key,Yu1(w,$.ctx))}}let F=Math.max(1,G-U.size),H=await Z.send(new $J({Bucket:$.ctx.info.bucket,Prefix:X||void 0,MaxKeys:F}));for(let B of H.Contents??[]){if(U.size>=G)break;if(!B.Key||B.Key.endsWith("/")||U.has(B.Key))continue;if(W.some((L)=>B.Key.startsWith(L)))continue;U.set(B.Key,Yu1(B,$.ctx))}let N=H.IsTruncated?H.NextContinuationToken??null:null;return{items:Array.from(U.values()).sort(tr0),nextCursor:N}}function Yu1($,Z){return{key:$.Key,size:$.Size??0,lastModified:$.LastModified?$.LastModified.toISOString():null,publicUrl:Ju1(Z.info,$.Key)}}function tr0($,Z){if(!$.lastModified&&!Z.lastModified)return 0;if(!$.lastModified)return 1;if(!Z.lastModified)return-1;return Z.lastModified.localeCompare($.lastModified)}function Gh8($,Z,G,X,Q=[]){let Y=($.Contents??[]).filter((J)=>J.Key&&!J.Key.endsWith("/")&&!Q.some((W)=>J.Key.startsWith(W))).slice(0,G).map((J)=>Yu1(J,Z));if(X)Y.sort(tr0);return{items:Y,nextCursor:$.IsTruncated?$.NextContinuationToken??null:null}}var Wu1=D(()=>{$g()});import _Y from"zod";var Ku1;var or0=D(()=>{n1();Wu1();Ku1=Z1({name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured S3 bucket (newest first). Returns public URLs computed from the config's publicUrlBase or the bucket's S3 host. Used by the picker dialog to let users select previously uploaded files.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:_Y.object({configId:_Y.string().min(1),cursor:_Y.string().nullable().optional(),maxKeys:_Y.number().int().min(1).max(200).optional()}),outputSchema:_Y.object({items:_Y.array(_Y.object({key:_Y.string(),size:_Y.number(),lastModified:_Y.string().nullable(),publicUrl:_Y.string()})),nextCursor:_Y.string().nullable()}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=await nr0(Z.storage.orgFileConfigs,$.configId,G.id);return pr0({ctx:X,cursor:$.cursor,maxKeys:$.maxKeys})}})});var rr0=D(()=>{lr0();dr0();mr0();ir0();or0()});import bY from"zod";var ar0;var sr0=D(()=>{n1();lX();bI1();ar0=Z1({name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes (org/public/*) from their configured GitHub repos. Returns per-set written/deleted/unchanged counts.",inputSchema:bY.object({}),outputSchema:bY.object({results:bY.array(bY.union([bY.object({set:bY.string(),written:bY.number(),deleted:bY.number(),unchanged:bY.number()}),bY.object({set:bY.string(),error:bY.string()})]))}),handler:async($,Z)=>{return A1(Z),await Z.access.check(),{results:await RO0(Z.db,{baseUrl:T3()})}}})});var er0,$a0;var Za0=D(()=>{er0=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
|
|
1208
1208
|
|
|
1209
1209
|
Goal: create a new agent that has a clear role, the correct connections, and instructions that are specific enough to be reliable.
|
|
1210
1210
|
|
|
@@ -2224,7 +2224,7 @@ Caused by: ${Z.stack}`}};kV=class kV extends r9{constructor($,Z){super($,Z);this
|
|
|
2224
2224
|
ORDER BY d.created_at ASC
|
|
2225
2225
|
LIMIT ${$}
|
|
2226
2226
|
FOR UPDATE OF d SKIP LOCKED
|
|
2227
|
-
)`).where("status","=","pending").returning(["id"]).execute()).map((Y)=>Y.id);if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((Y)=>({delivery:{id:Y.delivery_id,eventId:Y.event_id,subscriptionId:Y.subscription_id,status:Y.delivery_status,attempts:Y.delivery_attempts,lastError:Y.delivery_last_error,deliveredAt:Y.delivered_at,nextRetryAt:Y.delivery_next_retry_at,createdAt:Y.delivery_created_at},event:{id:Y.event_id,organizationId:Y.organization_id,type:Y.type,source:Y.source,specversion:Y.specversion,subject:Y.subject,time:Y.time,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema,data:Y.data?JSON.parse(Y.data):null,cron:Y.cron,status:Y.event_status,attempts:Y.event_attempts,lastError:Y.event_last_error,nextRetryAt:Y.next_retry_at,createdAt:Y.event_created_at,updatedAt:Y.event_updated_at},subscription:{id:Y.subscription_id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.subscription_created_at,updatedAt:Y.subscription_updated_at}}))}async markDeliveriesDelivered($){if($.length===0)return;let Z=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:Z}).where("id","in",$).execute()}async markDeliveriesPermanentlyFailed($,Z){if($.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:Z,next_retry_at:null}).where("id","in",$).execute()}async markDeliveriesFailed($,Z,G=20,X=1000,Q=3600000){if($.length===0)return;for(let Y of $){let J=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",Y).executeTakeFirst();if(!J)continue;let W=J.attempts+1;if(W>=G)await this.db.updateTable("event_deliveries").set({attempts:W,last_error:Z,status:"failed",next_retry_at:null}).where("id","=",Y).execute();else{let K=e9(Q,X,W-1,2,0),U=new Date(Date.now()+K).toISOString();await this.db.updateTable("event_deliveries").set({attempts:W,last_error:Z,status:"pending",next_retry_at:U}).where("id","=",Y).execute()}}}async updateEventStatus($){let Z=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",$).execute();if(Z.length===0)return;let G=Z.every((Y)=>Y.status==="delivered"),X=Z.some((Y)=>Y.status==="failed"),Q=Z.some((Y)=>Y.status==="pending"||Y.status==="processing");if(G)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",$).execute();else if(X&&!Q)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",$).execute()}async resetStuckDeliveries(){if((await wm1`SELECT pg_try_advisory_lock(hashtext('event_bus_reset_stuck')) as locked`.execute(this.db)).rows[0]?.locked!==!0)return 0;try{let G=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(G.numUpdatedRows??0)}finally{await wm1`SELECT pg_advisory_unlock(hashtext('event_bus_reset_stuck'))`.execute(this.db)}}async getEvent($,Z){let G=await this.db.selectFrom("events").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async findActiveCronEvent($,Z,G,X){let Q=await this.db.selectFrom("events").selectAll().where("organization_id","=",$).where("type","=",Z).where("source","=",G).where("cron","=",X).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,type:Q.type,source:Q.source,specversion:Q.specversion,subject:Q.subject,time:Q.time,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema,data:Q.data?JSON.parse(Q.data):null,cron:Q.cron,status:Q.status,attempts:Q.attempts,lastError:Q.last_error,nextRetryAt:Q.next_retry_at,createdAt:Q.created_at,updatedAt:Q.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((Z)=>Z.not(Z.exists(Z.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((Z)=>({id:Z.id,organizationId:Z.organization_id,type:Z.type,source:Z.source,specversion:Z.specversion,subject:Z.subject,time:Z.time,datacontenttype:Z.datacontenttype,dataschema:Z.dataschema,data:Z.data?JSON.parse(Z.data):null,cron:Z.cron,status:Z.status,attempts:Z.attempts,lastError:Z.last_error,nextRetryAt:Z.next_retry_at,createdAt:Z.created_at,updatedAt:Z.updated_at}))}async cancelEvent($,Z,G){let X=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("source","=",G).where("status","in",["pending","processing"]).executeTakeFirst();if((X.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",$).where("status","in",["pending","processing"]).execute();return{success:(X.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement($,Z){if($.length===0)return;let G=new Date(Date.now()+Z).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:G}).where("id","in",$).execute()}async ackDelivery($,Z,G){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",$).where("organization_id","=",Z).executeTakeFirst())return{success:!1};let Y=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",$).where("status","in",["pending","processing"]).where((J)=>J.exists(J.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",G).where("event_subscriptions.organization_id","=",Z))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(Y)await this.updateEventStatus($);return{success:Y}}async syncSubscriptions($){let{organizationId:Z,connectionId:G,subscriptions:X}=$,Q=(z,j)=>{return`${z}::${j??""}`},Y=await this.listSubscriptions(Z,G),J=new Map;for(let z of Y)J.set(Q(z.eventType,z.publisher),z);let W=new Map;for(let z of X)W.set(Q(z.eventType,z.publisher),z);let K=new Date().toISOString(),U=[],F=[],H=[],N=0;for(let[z,j]of W){let P=J.get(z);if(!P)U.push({id:crypto.randomUUID(),organization_id:Z,connection_id:G,event_type:j.eventType,publisher:j.publisher??null,filter:j.filter??null,enabled:!0,created_at:K,updated_at:K});else{let R=P.filter??null,A=j.filter??null;if(R!==A)F.push({id:P.id,filter:A});else N++}}for(let[z,j]of J)if(!W.has(z))H.push(j.id);if(U.length>0)await this.db.insertInto("event_subscriptions").values(U).execute();if(F.length>0)await Promise.all(F.map((z)=>this.db.updateTable("event_subscriptions").set({filter:z.filter,updated_at:K}).where("id","=",z.id).execute()));if(H.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",H).execute();let O=U.length,B=F.length,L=H.length,w=await this.listSubscriptions(Z,G);return{created:O,updated:B,deleted:L,unchanged:N,subscriptions:w}}}function GQ$($){return new ZQ$($)}var XQ$=D(()=>{hZ()});class QQ${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,G)=>this.localEmit(Z,G)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (50)`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let G=this.listeners.get($);if(!G)return;if(G.delete(Z)){if(this.totalCount--,G.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let G=this.listeners.get($);if(!G||G.size===0)return;for(let X of G.values()){if(X.typePatterns&&!c$4(Z.type,X.typePatterns))continue;try{X.push(Z)}catch{this.remove($,X.id)}}}}function c$4($,Z){for(let G of Z){if(G===$)return!0;if(G.endsWith(".*")){let X=G.slice(0,-1);if($.startsWith(X))return!0}}return!1}function YQ$($){return{id:$.id,type:$.type,source:$.source,subject:$.subject,data:$.data?l$4($.data):void 0,time:$.time}}function l$4($){if(typeof $==="string")try{return JSON.parse($)}catch{return $}return $}var ZG;var VH1=D(()=>{ZG=new QQ$});function JQ$($){if(typeof $==="object"&&$!==null){let X=$,Q=X.status??X.code;if(typeof Q==="number"&&d$4.has(Q))return!0}let Z=$ instanceof Error?$.message:typeof $==="string"?$:"";if(!Z)return!1;let G=Z.toLowerCase();if(/\b401\b/.test(G))return!0;return m$4.some((X)=>G.includes(X))}function WQ$($){let Z=$ instanceof Error?$.message:typeof $==="string"?$:"";if(!Z)return!1;let G=Z.toLowerCase();return i$4.some((X)=>G.includes(X))}var d$4,m$4,i$4,Ii;var zm1=D(()=>{d$4=new Set([401]),m$4=["unauthorized","invalid_token","invalid api key","api key required","api-key required"],i$4=["tool on_events not found","tool not found"];Ii=class Ii extends Error{constructor($){super($);this.name="PermanentDeliveryError"}}});var SH1;var jm1=D(()=>{SH1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function n$4($){return $.endsWith("_self")}function p$4($){return $.slice(0,-5)}function KQ$(){return async($,Z)=>{try{if(n$4($)){let J=p$4($),W=await nJ.create(),K={organizationId:J,connectionId:$,publish:async(H,N,O,B)=>{await W.eventBus.publish(J,$,{type:H,subject:N,data:O,deliverAt:B?.deliverAt})},createMCPProxy:async(H)=>{let N={...W,getOrCreateClient:Uv()},O=await uv1(H,N);return{callTool:async(B,L,w)=>{let z=await O.callTool(B,L,w);return{content:z.content,structuredContent:z.structuredContent,isError:z.isError}},close:()=>O.close()}}},U=Z.filter((H)=>H.type==="registry.monitor.scheduled");if(U.length>0){let{parseMonitorConfig:H}=await Promise.resolve().then(() => (gY(),X8$)),N=await K.createMCPProxy($);try{for(let O of U){let B=O.data&&typeof O.data==="object"?O.data:{},L=B.config&&typeof B.config==="object"?B.config:{},w=H(L);await N.callTool({name:"REGISTRY_MONITOR_RUN_START",arguments:{config:w}})}}finally{await N.close()}if(U.length===Z.length)return{success:!0}}if(await HC0(Z,K))return{success:!0}}let G=await nJ.create(),X=await uv1($,G),Y=await C_1.forClient(kl(X)).ON_EVENTS({events:Z});return{success:Y.success,error:Y.error,retryAfter:Y.retryAfter,results:Y.results}}catch(G){let X=G instanceof Error?G.message:String(G);if(console.error(`[EventBus] Failed to notify connection ${$}:`,X),JQ$(G)||WQ$(G))throw new Ii(X);return{success:!1,error:X}}}}var UQ$=D(()=>{vv();w11();X81();Kc();r$1();zm1()});function FQ$($){return{specversion:"1.0",id:$.id,source:$.source,type:$.type,time:$.time,subject:$.subject??void 0,datacontenttype:$.datacontenttype,dataschema:$.dataschema??void 0,data:$.data??void 0}}function t$4($){let Z=new Map;for(let X of $){let Q=X.subscription.connectionId,Y=Z.get(Q);if(Y){if(Y.deliveryIds.push(X.delivery.id),!Y.seenEventIds.has(X.event.id))Y.seenEventIds.add(X.event.id),Y.events.push(FQ$(X.event))}else Z.set(Q,{connectionId:X.subscription.connectionId,deliveryIds:[X.delivery.id],events:[FQ$(X.event)],seenEventIds:new Set([X.event.id])})}let G=new Map;for(let[X,Q]of Z)G.set(X,{connectionId:Q.connectionId,deliveryIds:Q.deliveryIds,events:Q.events});return G}class Pm1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;automationEventDispatcher;constructor($,Z,G){this.storage=$;this.notifySubscriber=G??KQ$(),this.config={...SH1,...Z}}setAutomationEventDispatcher($){this.automationEventDispatcher=$}async start(){if(this.running)return;await this.storage.resetStuckDeliveries();let $=await this.storage.findOrphanedCronEvents();for(let Z of $)await this.scheduleNextCronDelivery(Z);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch($){console.error("[EventBus] Error processing events:",$)}finally{this.processing=!1}}async processEvents(){let $=await this.storage.claimPendingDeliveries(this.config.batchSize);if($.length===0)return;let Z=t$4($),G=await Promise.allSettled(Array.from(Z.entries()).map(async([Y,J])=>{let W=new Set;try{let U=await this.notifySubscriber(J.connectionId,J.events);if(U.results&&Object.keys(U.results).length>0)await this.processPerEventResults(J,U);else if(U.success)await this.storage.markDeliveriesDelivered(J.deliveryIds);else if(U.retryAfter&&U.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(J.deliveryIds,U.retryAfter);else await this.storage.markDeliveriesFailed(J.deliveryIds,U.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(U){if(U instanceof Ii){await this.storage.markDeliveriesPermanentlyFailed(J.deliveryIds,U.message);for(let F of J.events)W.add(F.id)}else{let F=U instanceof Error?U.message:String(U);console.error(`[EventBus] Failed to notify subscription ${Y}:`,F),await this.storage.markDeliveriesFailed(J.deliveryIds,F,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let K=new Set;for(let U of $)if(J.deliveryIds.includes(U.delivery.id))K.add(U.event.id);return{eventIds:K,permanentlyFailed:W}})),X=new Set,Q=new Set;for(let Y of G)if(Y.status==="fulfilled"){for(let J of Y.value.eventIds)X.add(J);for(let J of Y.value.permanentlyFailed)Q.add(J)}for(let Y of X)try{await this.storage.updateEventStatus(Y);let J=$.find((W)=>W.event.id===Y)?.event;if(J?.cron&&!Q.has(Y))await this.scheduleNextCronDelivery(J)}catch(J){console.error(`[EventBus] Failed to update event status ${Y}:`,J)}if(this.automationEventDispatcher){let Y=new Set,J=[];for(let W of $){if(W.delivery.attempts>0)continue;if(!Y.has(W.event.id))Y.add(W.event.id),J.push({id:W.event.id,source:W.event.source,type:W.event.type,data:W.event.data,organizationId:W.event.organizationId})}if(J.length>0)this.automationEventDispatcher.dispatchForEvents(J)}}async processPerEventResults($,Z){let G=[],X=new Map,Q=[],Y=new Map;for(let J=0;J<$.events.length;J++){let W=$.events?.[J];if(!W)continue;let K=$.deliveryIds?.[J];if(!K)continue;Y.set(W.id,K)}for(let J of $.events){let W=Y.get(J.id);if(!W)continue;let K=Z.results?.[J.id];if(K)if(K.success)G.push(W);else if(K.retryAfter&&K.retryAfter>0){let U=X.get(K.retryAfter)||[];U.push(W),X.set(K.retryAfter,U)}else Q.push({deliveryId:W,error:K.error||"Event processing failed"});else if(Z.success)G.push(W);else if(Z.retryAfter&&Z.retryAfter>0){let U=X.get(Z.retryAfter)||[];U.push(W),X.set(Z.retryAfter,U)}else Q.push({deliveryId:W,error:Z.error||"Batch processing failed"})}if(G.length>0)await this.storage.markDeliveriesDelivered(G);for(let[J,W]of X)await this.storage.scheduleRetryWithoutAttemptIncrement(W,J);if(Q.length>0){let J=new Map;for(let{deliveryId:W,error:K}of Q){let U=J.get(K)||[];U.push(W),J.set(K,U)}for(let[W,K]of J)await this.storage.markDeliveriesFailed(K,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery($){if(!$.cron)return;try{let G=new tN($.cron,{timezone:"UTC"}).nextRun();if(!G)return;let X=G.toISOString(),Q=await this.storage.getMatchingSubscriptions($);if(Q.length===0)return;await this.storage.createDeliveries($.id,Q.map((Y)=>Y.id),X)}catch(Z){console.error(`[EventBus] Failed to schedule next cron delivery for event ${$.id}:`,Z)}}}var HQ$=D(()=>{Hm();zm1();jm1();UQ$()});class Am1{storage;worker;notifyStrategy;running=!1;constructor($){this.storage=$.storage,this.notifyStrategy=$.notifyStrategy,this.worker=new Pm1(this.storage,$.config)}setAutomationEventDispatcher($){this.worker.setAutomationEventDispatcher($)}async publish($,Z,G){if(G.deliverAt&&G.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let X;if(G.cron){try{let F=new tN(G.cron,{timezone:"UTC"}).nextRun();if(!F)throw Error("Cron expression does not produce a next run time");X=F.toISOString()}catch(U){throw Error(`Invalid cron expression: ${U instanceof Error?U.message:String(U)}`)}let K=await this.storage.findActiveCronEvent($,G.type,Z,G.cron);if(K)return K}let Q=crypto.randomUUID(),Y=new Date().toISOString(),J=await this.storage.publishEvent({id:Q,organizationId:$,type:G.type,source:Z,subject:G.subject,time:Y,data:G.data,cron:G.cron});ZG.emit($,YQ$(J));let W=await this.storage.getMatchingSubscriptions(J);if(W.length>0){let K=G.deliverAt??X;await this.storage.createDeliveries(Q,W.map((F)=>F.id),K);let U=K!=null&&new Date(K).getTime()<=Date.now();if(this.notifyStrategy&&(!K||U))await this.notifyStrategy.notify(Q).catch((F)=>{console.warn("[EventBus] Notify failed (non-critical):",F)})}return J}async subscribe($,Z){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:$,connectionId:Z.connectionId,publisher:Z.publisher,eventType:Z.eventType,filter:Z.filter})}async unsubscribe($,Z){return this.storage.unsubscribe(Z,$)}async listSubscriptions($,Z){return this.storage.listSubscriptions($,Z)}async getSubscription($,Z){return this.storage.getSubscription(Z,$)}async getEvent($,Z){return this.storage.getEvent(Z,$)}async cancelEvent($,Z,G){return this.storage.cancelEvent(Z,$,G)}async ackEvent($,Z,G){return this.storage.ackDelivery(Z,$,G)}async syncSubscriptions($,Z){return this.storage.syncSubscriptions({organizationId:$,...Z})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch(($)=>{console.error("[EventBus] Error processing after notify:",$)})});await this.worker.processNow().catch(($)=>{console.error("[EventBus] Error processing pending events on startup:",$)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch($){console.error("[EventBus] Error stopping notify strategy:",$)}}isRunning(){return this.running}}var NQ$=D(()=>{Hm();VH1();HQ$()});class Rm1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor($){this.options=$}async start($){if(this.sub)return;if($)this.onNotify=$;if(!this.onNotify)return;let Z=this.options.getConnection();if(!Z)return;this.sub=Z.subscribe("mesh.events.notify"),(async()=>{for await(let G of this.sub)this.onNotify?.()})().catch((G)=>{console.error("[NatsNotify] Subscription error:",G)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify($){try{let Z=this.options.getConnection();if(!Z)return;Z.publish("mesh.events.notify",this.encoder.encode($))}catch(Z){console.warn("[NatsNotify] Publish failed (non-critical):",Z)}}}class Im1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor($){this.options=$}async start($){if($)this.localEmit=$;if(this.sub)return;if(!this.localEmit)return;let Z=this.options.getConnection();if(!Z)return;this.sub=Z.subscribe("mesh.sse.broadcast");let G=new TextDecoder;(async()=>{for await(let X of this.sub)try{let Q=JSON.parse(G.decode(X.data));if(typeof Q?.originId!=="string"||typeof Q?.organizationId!=="string"||typeof Q?.event?.id!=="string"||typeof Q?.event?.type!=="string")continue;if(Q.originId===this.originId)continue;this.localEmit?.(Q.organizationId,Q.event)}catch{}})().catch((X)=>{console.error("[NatsSSEBroadcast] Subscription error:",X)})}broadcast($,Z){this.localEmit?.($,Z);let G={originId:this.originId,organizationId:$,event:Z};try{let X=this.options.getConnection();if(!X)return;X.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(G)))}catch(X){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",X)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function OQ$(...$){return{async start(Z){await Promise.all($.map((G)=>G.start(Z)))},async stop(){await Promise.all($.map((Z)=>Z.stop().catch((G)=>{console.error("[NotifyStrategy] Error stopping strategy:",G)})))},async notify(Z){await Promise.all($.map((G)=>G.notify(Z).catch((X)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",X)})))}}}class Tm1{intervalMs;timer=null;onNotify=null;constructor($){this.intervalMs=$}async start($){if(this.timer)return;this.onNotify=$,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify($){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}async function BQ$($,Z,G=5){try{await Ix(Z,{maxAttempts:G,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof CO?X.cause:X)}}function DQ$($,Z,G){let X=GQ$($.db),Q=G?.pollIntervalMs??SH1.pollIntervalMs,Y=new Rm1({getConnection:()=>Z.getConnection()}),J=OQ$(new Tm1(Q),Y),W=new Im1({getConnection:()=>Z.getConnection()});return ZG.start(W).catch((K)=>{console.error("[SSEHub] Failed to start broadcast strategy:",K)}),Z.onReady(()=>{BQ$("[NatsNotify]",()=>Y.start()),BQ$("[NatsSSEBroadcast]",()=>W.start())}),new Am1({storage:X,config:G,notifyStrategy:J})}var qm1=D(()=>{hZ();XQ$();NQ$();jm1();VH1();VH1()});var LQ$=()=>{};var Mm1=()=>{};var EQ$=()=>{};var o$4,F09;var wQ$=D(()=>{LQ$();Mm1();jH();EQ$();o$4={br:".br",zstd:".zst",gzip:".gz"},F09=Object.keys(o$4)});var zQ$=D(()=>{wQ$()});var jQ$=()=>{};var PQ$=D(()=>{jQ$()});var AQ$=()=>{};var RQ$=D(()=>{mq1()});var km1=D(()=>{PH();RQ$()});var Vm1="x-hono-disable-ssg",V09;var Sm1=D(()=>{km1();V09=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Vm1]:"true"}})}catch{return null}})()});var IQ$=D(()=>{Fs()});var Cm1=D(()=>{IQ$()});var TQ$=D(()=>{PQ$();AQ$();Mm1();Sm1();Cm1();km1()});var qQ$=D(()=>{Sm1();Cm1();TQ$()});var H$9;var MQ$=D(()=>{qQ$();({write:H$9}=Bun)});var s$4=class{#$;constructor($){this.#$=$,this.raw=$.raw,this.url=$.url?new URL($.url):null,this.protocol=$.protocol??null}send($,Z){this.#$.send($,Z??{})}raw;binaryType="arraybuffer";get readyState(){return this.#$.readyState}url;protocol;close($,Z){this.#$.close($,Z)}},kQ$=($)=>{return(...Z)=>{if(typeof Z[0]==="function"){let[G,X]=Z;return async function(Y,J){let W=await G(Y),K=await $(Y,W,X);if(K)return K;await J()}}else{let[G,X,Q]=Z;return(async()=>{let Y=await $(G,X,Q);if(!Y)throw Error("Failed to upgrade WebSocket");return Y})()}}};var VQ$=()=>{};var Ti=($)=>("server"in $.env)?$.env.server:$.env;var CH1=()=>{};var e$4;var SQ$=D(()=>{VQ$();CH1();e$4=kQ$(($,Z)=>{let G=Ti($);if(!G)throw TypeError("env has to include the 2nd argument of fetch.");if(G.upgrade($.req.raw,{data:{events:Z,url:new URL($.req.url),protocol:$.req.url}}))return new Response(null);return})});var _m1=($)=>{let Z=Ti($);if(!Z)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof Z.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let G=Z.requestIP($.req.raw);if(!G)return{remote:{}};return{remote:{address:G.address,addressType:G.family==="IPv6"||G.family==="IPv4"?G.family:void 0,port:G.port}}};var CQ$=D(()=>{CH1()});var _Q$=D(()=>{zQ$();MQ$();SQ$();CQ$();CH1()});var bQ$;var vQ$=D(()=>{bQ$={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});var bH1={};p4(bH1,{waitForSeed:()=>J84,seedLocalMode:()=>X84,markSeedComplete:()=>Y84,isLocalMode:()=>K3,getLocalAdminUser:()=>qi,getLocalAdminPassword:()=>_H1});import{userInfo as $84}from"os";async function _H1(){return q0().betterAuthSecret||"local-mode-default"}function fQ$(){try{return $84().username||"local"}catch{return"local"}}function Z84($){return $.charAt(0).toUpperCase()+$.slice(1)}async function G84(){let $=P6(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function X84(){if(!await G84())return!1;let Z=fQ$(),G=`${Z}@localhost.mesh`,X=Z84(Z),Q=await _H1(),Y=await u6.api.signUpEmail({body:{email:G,password:Q,name:X}});if(!Y?.user?.id)throw Error("Failed to create local admin user");let J=Y.user.id,W=P6();await W.db.updateTable("user").set({role:"admin"}).where("id","=",J).execute();let K=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),U=`${X} Local`;return await W.db.updateTable("organization").set({name:U,slug:K}).where("id","in",(F)=>F.selectFrom("member").select("organizationId").where("userId","=",J)).execute(),!0}async function qi(){let $=P6(),Z=`${fQ$()}@localhost.mesh`;return $.db.selectFrom("user").where("email","=",Z).selectAll().executeTakeFirst()}function K3(){return q0().localMode}function Y84(){xQ$()}function J84(){return Q84}var xQ$,Q84;var AO=D(()=>{DJ();M4();cU();Q84=new Promise(($)=>{if(xQ$=$,!K3())$()})});function yQ$(){let $=Object.keys(i4.socialProviders??{}),Z=$.length>0,G=$.map((Q)=>({name:Q,icon:bQ$[Q].icon})),X=q0().localMode;return{emailAndPassword:{enabled:i4.emailAndPassword?.enabled??!1},magicLink:{enabled:i4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:i4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:kH1},socialProviders:{enabled:Z,providers:G},sso:i4.ssoConfig?{enabled:!0,providerId:i4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:K3()}}var bV,gQ$;var bm1=D(()=>{o4();_Q$();N5();M4();cU();DJ();_g1();Iv1();vQ$();AO();tC();bV=new v0;bV.post("/local-session",async($)=>{if(!K3())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=_m1($).remote.address}catch{}if(!(Z==="127.0.0.1"||Z==="::1"||Z==="::ffff:127.0.0.1"))return $.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:X}=await Promise.resolve().then(() => (AO(),bH1));await X();let{auth:Q}=await Promise.resolve().then(() => (cU(),eX$)),Y=await qi();if(!Y)return $.json({success:!1,error:"Local admin user not found"},500);let J=await _H1();return await Q.api.signInEmail({body:{email:Y.email,password:J},asResponse:!0})}catch(X){return console.error("Failed to create local session:",X),$.json({success:!1,error:X instanceof Error?X.message:"Failed to create local session"},500)}});bV.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),G=await u6.api.getSession({headers:$.req.raw.headers});if(!G?.user)return $.json({error:"Authentication required"},401);let X=P6().db,Q=await X.selectFrom("organization").select(["id"]).where("slug","=",Z).executeTakeFirst();if(!Q)return $.json({role:null,capabilities:{}});let J=(await X.selectFrom("member").select(["role"]).where("userId","=",G.user.id).where("organizationId","=",Q.id).executeTakeFirst())?.role??null;if(!J)return $.json({role:null,capabilities:{}});if(J==="owner"||J==="admin")return $.json({role:J,capabilities:LP0()});if(J==="user")return $.json({role:J,capabilities:XM1({self:[...js]})});let W=await X.selectFrom("organizationRole").select(["permission"]).where("role","=",J).where("organizationId","=",Q.id).executeTakeFirst(),K={},U=W?.permission;if(typeof U==="string")try{let F=JSON.parse(U);if(F&&typeof F==="object"&&!Array.isArray(F))K=F}catch{K={}}return $.json({role:J,capabilities:XM1(K)})});bV.get("/domain-lookup",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({found:!1,organizations:[]});let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({found:!1,organizations:[]});try{let Q=await new IN(P6().db).getAllByDomain(G);if(Q.length===0)return $.json({found:!1,organizations:[]});let Y=await P6().db.selectFrom("organization").select(["id","name","slug","logo"]).where("id","in",Q.map((K)=>K.organizationId)).execute(),J=new Map(Y.map((K)=>[K.id,K])),W=Q.map((K)=>{let U=J.get(K.organizationId);if(!U)return null;return{id:U.id,name:U.name,slug:U.slug,logo:U.logo,autoJoinEnabled:K.autoJoinEnabled}}).filter((K)=>K!==null);return $.json({found:W.length>0,organizations:W})}catch(X){return console.error("[Auth] Domain lookup failed:",X),$.json({success:!1,error:"Domain lookup failed"},500)}});bV.post("/domain-join",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to join"},403);let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({success:!1,error:"Generic email domains cannot auto-join"},403);let X=await $.req.json().catch(()=>({})),Q=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;try{let Y=P6().db,K=(await new IN(Y).getAllByDomain(G)).filter((F)=>F.autoJoinEnabled);if(K.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let U;if(Q){let F=await Y.selectFrom("organization").select(["id","slug"]).where("slug","=",Q).executeTakeFirst();if(!F||!K.some((H)=>H.organizationId===F.id))return $.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);U=F}else if(K.length===1){let F=await Y.selectFrom("organization").select(["id","slug"]).where("id","=",K[0].organizationId).executeTakeFirst();if(!F)return $.json({success:!1,error:"Organization not found"},404);U=F}else return $.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await u6.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:U.id}})}catch(F){if(!(F instanceof Error?F.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",F),$.json({success:!1,error:"Failed to join organization"},500)}return z$.capture({distinctId:Z.user.id,event:"organization_domain_joined",groups:{organization:U.id},properties:{organization_id:U.id,organization_slug:U.slug,email_domain:G}}),$.json({success:!0,slug:U.slug})}catch(Y){return z$.captureException(Y,Z.user.id),console.error("[Auth] Domain join failed:",Y),$.json({success:!1,error:"Failed to join organization"},500)}});bV.post("/domain-setup",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified"},403);let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({success:!1,error:"Corporate email required"},403);let X=await $.req.json().catch(()=>({})),Q=typeof X.name==="string"&&X.name.trim().length>0?X.name.trim():null,Y=typeof X.logo==="string"&&X.logo.length>0?X.logo:null,J=X.claimDomain!==!1;try{let W=P6().db,K=new IN(W),U=await K.getAllByDomain(G);if(U.length>0){let P=await W.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",Z.user.id).where("member.organizationId","in",U.map((R)=>R.organizationId)).executeTakeFirst();if(P)return $.json({success:!0,slug:P.slug,alreadyExists:!0})}let F=G.split(".")[0]??G,H=Q??F.charAt(0).toUpperCase()+F.slice(1),N=(Q??F).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||F.toLowerCase().replace(/[^a-z0-9-]/g,""),O=null;for(let R=0;R<3;R++){let A=R===0?"":`-${Math.random().toString(36).slice(2,6)}`,q=R===0?H:`${H}${A}`,S=`${N}${A}`;try{O=await u6.api.createOrganization({body:{name:q,slug:S,userId:Z.user.id}});break}catch(k){if(!(k instanceof Error&&("body"in k)&&k.body?.code==="ORGANIZATION_ALREADY_EXISTS")||R===2)throw k}}if(!O?.id)throw Error("Failed to create organization");let B=O.id;if(J)await K.setDomain(B,G,!0);let L=!1,w=null,z=null;try{let P=q0().firecrawlApiKey;if(P){let R=await A41(G,P,H);if(R){let A=new Tl(P6().db),q=await A.create(B,R);if(await A.setDefault(q.id,B),L=!0,R.name&&R.name!==H)w=R.name;z=R.favicon??R.logo??null}}}catch(P){console.error("[Auth] Brand extraction failed (non-fatal):",P)}let j={};if(!Q&&w)j.name=w;if(Y)j.logo=Y;else if(z)j.logo=z;if(Object.keys(j).length>0)try{await u6.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:B,data:j}})}catch(P){console.error("[Auth] Org update failed (non-fatal):",P)}return z$.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),z$.groupIdentify({groupType:"organization",groupKey:B,properties:{name:O.slug??N,slug:O.slug??N,email_domain:G,brand_extracted:L,created_at:new Date().toISOString()}}),z$.capture({distinctId:Z.user.id,event:"organization_created",groups:{organization:B},properties:{organization_id:B,organization_slug:O.slug??N,email_domain:G,brand_extracted:L}}),$.json({success:!0,slug:O.slug??N,brandExtracted:L})}catch(W){return z$.captureException(W,Z.user?.id),console.error("[Auth] Domain setup failed:",W),$.json({success:!1,error:"Failed to set up organization"},500)}});bV.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),G=await u6.api.getSession({headers:$.req.raw.headers});if(!G?.user)return $.json({success:!1,error:"Authentication required"},401);let X=P6().db,Q=await X.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",Z).executeTakeFirst();if(!Q)return $.json({status:"not-found"});let Y={id:Q.id,name:Q.name,slug:Q.slug,logo:Q.logo};if(await X.selectFrom("member").select(["id"]).where("userId","=",G.user.id).where("organizationId","=",Q.id).executeTakeFirst())return $.json({status:"member",organization:Y});try{let W=await u6.api.listUserInvitations({headers:$.req.raw.headers}),K=Date.now(),U=W.find((F)=>F.organizationId===Q.id&&F.status==="pending"&&new Date(F.expiresAt).getTime()>K);if(U)return $.json({status:"pending-invite",invitation:{id:U.id},organization:Y})}catch(W){console.error("[Auth] listUserInvitations failed:",W)}if(G.user.emailVerified){let W=G.user.email?.split("@")[1]?.toLowerCase();if(W&&!uU.has(W)){let K=await new IN(X).getByOrganizationId(Q.id);if(K?.autoJoinEnabled&&K.domain===W)return $.json({status:"auto-domain-join",organization:{...Y,domain:W}})}}return $.json({status:"no-access",organization:Y})});gQ$=bV});import*as fH1 from"jose";function W84($){$.get("/status",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!await fm1(G,G.auth.user.id,X))return Z.json({error:"Not a member of this organization"},403);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y||!Y.enforced)return Z.json({ssoRequired:!1});let J=await G.storage.orgSsoSessions.isValid(G.auth.user.id,X);return Z.json({ssoRequired:!0,authenticated:J,issuer:Y.issuer,domain:Y.domain})}),$.get("/authorize",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!await fm1(G,G.auth.user.id,X))return Z.json({error:"Not a member of this organization"},403);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y)return Z.json({error:"SSO not configured for this organization"},404);let J=await vm1(Y.issuer,Y.discoveryEndpoint),W=K84(),K=await U84(W),U=crypto.randomUUID(),F=JSON.stringify({state:U,codeVerifier:W,orgId:X,userId:G.auth.user.id});sq1(Z,"org_sso_state",F,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let H=new URLSearchParams({response_type:"code",client_id:Y.clientId,redirect_uri:`${G.baseUrl}/api/org-sso/callback`,scope:Y.scopes.join(" "),state:U,code_challenge:K,code_challenge_method:"S256"}),N=`${J.authorization_endpoint}?${H.toString()}`;return Z.redirect(N)}),$.get("/callback",async(Z)=>{let G=Z.get("meshContext"),X=Z.req.query("code"),Q=Z.req.query("state"),Y=Z.req.query("error");if(Y)return Z.redirect(`/?sso_error=${encodeURIComponent(Y)}`);if(!X||!Q)return Z.redirect("/?sso_error=missing_code_or_state");let J=ws(Z,"org_sso_state");if(!J)return Z.redirect("/?sso_error=state_expired");sq1(Z,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let W;try{W=JSON.parse(J)}catch{return Z.redirect("/?sso_error=invalid_state")}if(W.state!==Q)return Z.redirect("/?sso_error=state_mismatch");if(!G.auth.user||G.auth.user.id!==W.userId)return Z.redirect("/?sso_error=session_expired");let K=await G.storage.orgSsoConfig.getByOrgId(W.orgId);if(!K)return Z.redirect("/?sso_error=sso_not_configured");let U=await vm1(K.issuer,K.discoveryEndpoint),F=await fetch(U.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:X,redirect_uri:`${G.baseUrl}/api/org-sso/callback`,client_id:K.clientId,client_secret:K.clientSecret,code_verifier:W.codeVerifier})});if(!F.ok)return console.error("[org-sso] Token exchange failed:",await F.text()),Z.redirect("/?sso_error=token_exchange_failed");let H=await F.json();if(!H.id_token)return Z.redirect("/?sso_error=no_id_token");try{let B=fH1.createRemoteJWKSet(new URL(U.jwks_uri)),{payload:L}=await fH1.jwtVerify(H.id_token,B,{issuer:K.issuer,audience:K.clientId}),w=L.email?.toLowerCase(),z=G.auth.user.email?.toLowerCase();if(!w||w!==z)return console.error(`[org-sso] Email mismatch: token=${w}, user=${z}`),Z.redirect("/?sso_error=email_mismatch")}catch(B){return console.error("[org-sso] ID token verification failed:",B),Z.redirect("/?sso_error=token_verification_failed")}await G.storage.orgSsoSessions.upsert(G.auth.user.id,W.orgId);let N=await fm1(G,G.auth.user.id,W.orgId),O=N?.orgSlug?`/${N.orgSlug}`:"/";return Z.redirect(O)}),$.get("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!F84(G))return Z.json({error:"Admin role required"},403);let Q=await G.storage.orgSsoConfig.getByOrgId(X);if(!Q)return Z.json({configured:!1});return Z.json({configured:!0,config:G.storage.orgSsoConfig.toPublic(Q)})}),$.post("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);let Q=await Z.req.json();if(!Q.issuer||!Q.clientId||!Q.domain)return Z.json({error:"issuer, clientId, and domain are required"},400);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y&&!Q.clientSecret)return Z.json({error:"clientSecret is required for initial SSO setup"},400);let J=Q.clientSecret||Y?.clientSecret||"";try{await vm1(Q.issuer,Q.discoveryEndpoint)}catch(K){return Z.json({error:"Failed to reach OIDC discovery endpoint",details:K instanceof Error?K.message:String(K)},400)}let W=await G.storage.orgSsoConfig.upsert(X,{issuer:Q.issuer,clientId:Q.clientId,clientSecret:J,discoveryEndpoint:Q.discoveryEndpoint,scopes:Q.scopes,domain:Q.domain,enforced:Q.enforced});return Z.json({success:!0,config:G.storage.orgSsoConfig.toPublic(W)})}),$.post("/config/enforce",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);let Q=await Z.req.json();if(!await G.storage.orgSsoConfig.getByOrgId(X))return Z.json({error:"SSO must be configured before enforcing"},400);return await G.storage.orgSsoConfig.setEnforced(X,Q.enforced),Z.json({success:!0,enforced:Q.enforced})}),$.delete("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);return await G.storage.orgSsoConfig.delete(X),Z.json({success:!0})})}function vH1($){let Z;try{Z=new URL($)}catch{throw Error(`Invalid URL: ${$}`)}let G=q0().localMode;if(Z.protocol!=="https:"&&!(G&&Z.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${$}`);let X=Z.hostname,Q=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],Y=/^127\.|^\[::1\]$|^localhost$/i.test(X);if(G&&Y)return;for(let J of Q)if(J.test(X))throw Error(`OIDC URL must not point to a private network address: ${X}`)}async function vm1($,Z){let G=Z||$,X=hQ$.get(G);if(X&&X.expiresAt>Date.now())return X.doc;let Q=Z||`${$.replace(/\/$/,"")}/.well-known/openid-configuration`;vH1(Q);let Y=await fetch(Q);if(!Y.ok)throw Error(`OIDC discovery failed: ${Y.status} ${Y.statusText}`);let J=await Y.json();if(!J.authorization_endpoint||!J.token_endpoint||!J.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return vH1(J.authorization_endpoint),vH1(J.token_endpoint),vH1(J.jwks_uri),hQ$.set(G,{doc:J,expiresAt:Date.now()+3600000}),J}function K84(){let $=new Uint8Array(32);return crypto.getRandomValues($),btoa(String.fromCharCode(...$)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function U84($){let G=new TextEncoder().encode($),X=await crypto.subtle.digest("SHA-256",G);return btoa(String.fromCharCode(...new Uint8Array(X))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function fm1($,Z,G){return await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",Z).where("member.organizationId","=",G).executeTakeFirst()??null}function F84($){let Z=$.auth.user?.role;if(!Z)return!1;return HW.includes(Z)}function xm1($){return $.auth.user?.role==="owner"}var xH1=()=>{let $=new v0;return W84($),$},hQ$;var ym1=D(()=>{o4();eq1();M4();KL();hQ$=new Map});function O84($){if($==="claude-code")return H84;if($==="codex")return N84;return null}function uQ$($,Z){return O84($)?.[Z]??null}var H84,N84;var cQ$=D(()=>{H84={fast:{modelId:"claude-code:haiku",label:"Haiku 4.5"},smart:{modelId:"claude-code:sonnet",label:"Sonnet 4.6"},thinking:{modelId:"claude-code:fable",label:"Fable 5"}},N84={fast:{modelId:"codex:gpt-5.4-mini",label:"GPT-5.4 Mini"},smart:{modelId:"codex:gpt-5.4",label:"GPT-5.4"},thinking:{modelId:"codex:gpt-5.5",label:"GPT-5.5"}}});var lQ$=D(()=>{cQ$()});function dQ$($){return $.type==="tool-call"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function B84($){return $.type==="tool-result"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function mQ$($){let Z=null;for(let X=$.length-1;X>=0&&Z===null;X--){let Y=$[X].content;if(!Array.isArray(Y))continue;for(let J=Y.length-1;J>=0;J--){let W=Y[J];if(dQ$(W)){Z=W.toolCallId;break}}}if(Z===null)return $;let G=Z;return $.map((X)=>{let Q=X.content;if(!Array.isArray(Q))return X;let Y=Q.filter((J)=>{if(dQ$(J))return J.toolCallId===G;if(B84(J))return J.toolCallId===G;return!0});if(Y.length===Q.length)return X;return{...X,content:Y}})}function D84($){let Z=!1,G=$.map((X)=>{if(X.role!=="assistant")return X;if(!X.parts.some((Y)=>("state"in Y)&&Y.state==="approval-requested"))return X;return Z=!0,{...X,parts:X.parts.map((Y)=>{if(!("state"in Y)||Y.state!=="approval-requested"||!("approval"in Y)||!Y.approval)return Y;return{...Y,state:"output-denied",approval:{...Y.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return Z?G:$}function L84($){let[Z,G]=$.reduce((X,Q)=>{if(Q.role==="system")X[0].push(Q);else X[1].push(Q);return X},[[],[]]);return{systemMessages:Z,messages:G}}async function iQ$($,Z){let G=$.filter((H)=>H.role!=="assistant"||H.parts&&H.parts.length>0),X=await ym({messages:G}),Q=D84(X),Y=await $E(Q,{tools:Z.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:J,messages:W}=L84(Y),K=mQ$(W),F=Uc1({messages:K,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((H)=>{if(H.role!=="assistant")return H;let N=Array.isArray(H.content)?H.content.filter((O)=>O.type!=="reasoning"&&O.type!=="thinking"&&O.type!=="redacted-reasoning").map((O)=>{let B=O;if("providerOptions"in B||"providerMetadata"in B){let{providerOptions:L,providerMetadata:w,...z}=B;if(B.type==="tool-call"){let j=w?.google,P=L?.google;return{...z,...j?{providerMetadata:{google:j}}:{},...P?{providerOptions:{google:P}}:{}}}return z}return O}):H.content;return{...H,content:Array.isArray(N)&&N.length===0?[{type:"text",text:""}]:N,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:J,messages:F,originalMessages:X}}var nQ$=D(()=>{e4()});function pQ$($){let Z=$.filter((X)=>X.role==="system"),G=$.find((X)=>X.role!=="system");return{systemMessages:Z,requestMessage:G}}async function E84($,Z){return await $.loadHistory(Z)}function w84($,Z){let G=$.filter((Y)=>Y.parts&&Y.parts.length>0);if(!Z)return G;let X=G.findIndex((Y)=>Y.id===Z.id);return X>=0?[...G.slice(0,X),Z]:[...G,Z]}async function tQ$($,Z,G,X){let Q=await E84($,X),Y=w84(Q,Z);return[...G,...Y]}var gm1=()=>{};import{z as hm1}from"zod";function yH1($){let{toolOutputMap:Z}=$;return J8({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:U1(hm1.object({tool_call_id:hm1.string(),pattern:hm1.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:X})=>{if(!Z.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...Z.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let Q=Z.get(G),Y;try{Y=new RegExp(X)}catch{return{result:`Invalid regex pattern: ${X}`,matchCount:0,totalLines:0}}let J=Q.split(`
|
|
2227
|
+
)`).where("status","=","pending").returning(["id"]).execute()).map((Y)=>Y.id);if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((Y)=>({delivery:{id:Y.delivery_id,eventId:Y.event_id,subscriptionId:Y.subscription_id,status:Y.delivery_status,attempts:Y.delivery_attempts,lastError:Y.delivery_last_error,deliveredAt:Y.delivered_at,nextRetryAt:Y.delivery_next_retry_at,createdAt:Y.delivery_created_at},event:{id:Y.event_id,organizationId:Y.organization_id,type:Y.type,source:Y.source,specversion:Y.specversion,subject:Y.subject,time:Y.time,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema,data:Y.data?JSON.parse(Y.data):null,cron:Y.cron,status:Y.event_status,attempts:Y.event_attempts,lastError:Y.event_last_error,nextRetryAt:Y.next_retry_at,createdAt:Y.event_created_at,updatedAt:Y.event_updated_at},subscription:{id:Y.subscription_id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.subscription_created_at,updatedAt:Y.subscription_updated_at}}))}async markDeliveriesDelivered($){if($.length===0)return;let Z=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:Z}).where("id","in",$).execute()}async markDeliveriesPermanentlyFailed($,Z){if($.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:Z,next_retry_at:null}).where("id","in",$).execute()}async markDeliveriesFailed($,Z,G=20,X=1000,Q=3600000){if($.length===0)return;for(let Y of $){let J=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",Y).executeTakeFirst();if(!J)continue;let W=J.attempts+1;if(W>=G)await this.db.updateTable("event_deliveries").set({attempts:W,last_error:Z,status:"failed",next_retry_at:null}).where("id","=",Y).execute();else{let K=e9(Q,X,W-1,2,0),U=new Date(Date.now()+K).toISOString();await this.db.updateTable("event_deliveries").set({attempts:W,last_error:Z,status:"pending",next_retry_at:U}).where("id","=",Y).execute()}}}async updateEventStatus($){let Z=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",$).execute();if(Z.length===0)return;let G=Z.every((Y)=>Y.status==="delivered"),X=Z.some((Y)=>Y.status==="failed"),Q=Z.some((Y)=>Y.status==="pending"||Y.status==="processing");if(G)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",$).execute();else if(X&&!Q)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",$).execute()}async resetStuckDeliveries(){if((await wm1`SELECT pg_try_advisory_lock(hashtext('event_bus_reset_stuck')) as locked`.execute(this.db)).rows[0]?.locked!==!0)return 0;try{let G=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(G.numUpdatedRows??0)}finally{await wm1`SELECT pg_advisory_unlock(hashtext('event_bus_reset_stuck'))`.execute(this.db)}}async getEvent($,Z){let G=await this.db.selectFrom("events").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async findActiveCronEvent($,Z,G,X){let Q=await this.db.selectFrom("events").selectAll().where("organization_id","=",$).where("type","=",Z).where("source","=",G).where("cron","=",X).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,type:Q.type,source:Q.source,specversion:Q.specversion,subject:Q.subject,time:Q.time,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema,data:Q.data?JSON.parse(Q.data):null,cron:Q.cron,status:Q.status,attempts:Q.attempts,lastError:Q.last_error,nextRetryAt:Q.next_retry_at,createdAt:Q.created_at,updatedAt:Q.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((Z)=>Z.not(Z.exists(Z.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((Z)=>({id:Z.id,organizationId:Z.organization_id,type:Z.type,source:Z.source,specversion:Z.specversion,subject:Z.subject,time:Z.time,datacontenttype:Z.datacontenttype,dataschema:Z.dataschema,data:Z.data?JSON.parse(Z.data):null,cron:Z.cron,status:Z.status,attempts:Z.attempts,lastError:Z.last_error,nextRetryAt:Z.next_retry_at,createdAt:Z.created_at,updatedAt:Z.updated_at}))}async cancelEvent($,Z,G){let X=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("source","=",G).where("status","in",["pending","processing"]).executeTakeFirst();if((X.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",$).where("status","in",["pending","processing"]).execute();return{success:(X.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement($,Z){if($.length===0)return;let G=new Date(Date.now()+Z).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:G}).where("id","in",$).execute()}async ackDelivery($,Z,G){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",$).where("organization_id","=",Z).executeTakeFirst())return{success:!1};let Y=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",$).where("status","in",["pending","processing"]).where((J)=>J.exists(J.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",G).where("event_subscriptions.organization_id","=",Z))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(Y)await this.updateEventStatus($);return{success:Y}}async syncSubscriptions($){let{organizationId:Z,connectionId:G,subscriptions:X}=$,Q=(z,j)=>{return`${z}::${j??""}`},Y=await this.listSubscriptions(Z,G),J=new Map;for(let z of Y)J.set(Q(z.eventType,z.publisher),z);let W=new Map;for(let z of X)W.set(Q(z.eventType,z.publisher),z);let K=new Date().toISOString(),U=[],F=[],H=[],N=0;for(let[z,j]of W){let P=J.get(z);if(!P)U.push({id:crypto.randomUUID(),organization_id:Z,connection_id:G,event_type:j.eventType,publisher:j.publisher??null,filter:j.filter??null,enabled:!0,created_at:K,updated_at:K});else{let R=P.filter??null,A=j.filter??null;if(R!==A)F.push({id:P.id,filter:A});else N++}}for(let[z,j]of J)if(!W.has(z))H.push(j.id);if(U.length>0)await this.db.insertInto("event_subscriptions").values(U).execute();if(F.length>0)await Promise.all(F.map((z)=>this.db.updateTable("event_subscriptions").set({filter:z.filter,updated_at:K}).where("id","=",z.id).execute()));if(H.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",H).execute();let O=U.length,B=F.length,L=H.length,w=await this.listSubscriptions(Z,G);return{created:O,updated:B,deleted:L,unchanged:N,subscriptions:w}}}function GQ$($){return new ZQ$($)}var XQ$=D(()=>{hZ()});class QQ${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,G)=>this.localEmit(Z,G)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (50)`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let G=this.listeners.get($);if(!G)return;if(G.delete(Z)){if(this.totalCount--,G.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let G=this.listeners.get($);if(!G||G.size===0)return;for(let X of G.values()){if(X.typePatterns&&!c$4(Z.type,X.typePatterns))continue;try{X.push(Z)}catch{this.remove($,X.id)}}}}function c$4($,Z){for(let G of Z){if(G===$)return!0;if(G.endsWith(".*")){let X=G.slice(0,-1);if($.startsWith(X))return!0}}return!1}function YQ$($){return{id:$.id,type:$.type,source:$.source,subject:$.subject,data:$.data?l$4($.data):void 0,time:$.time}}function l$4($){if(typeof $==="string")try{return JSON.parse($)}catch{return $}return $}var ZG;var VH1=D(()=>{ZG=new QQ$});function JQ$($){if(typeof $==="object"&&$!==null){let X=$,Q=X.status??X.code;if(typeof Q==="number"&&d$4.has(Q))return!0}let Z=$ instanceof Error?$.message:typeof $==="string"?$:"";if(!Z)return!1;let G=Z.toLowerCase();if(/\b401\b/.test(G))return!0;return m$4.some((X)=>G.includes(X))}function WQ$($){let Z=$ instanceof Error?$.message:typeof $==="string"?$:"";if(!Z)return!1;let G=Z.toLowerCase();return i$4.some((X)=>G.includes(X))}var d$4,m$4,i$4,Ii;var zm1=D(()=>{d$4=new Set([401]),m$4=["unauthorized","invalid_token","invalid api key","api key required","api-key required"],i$4=["tool on_events not found","tool not found"];Ii=class Ii extends Error{constructor($){super($);this.name="PermanentDeliveryError"}}});var SH1;var jm1=D(()=>{SH1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function n$4($){return $.endsWith("_self")}function p$4($){return $.slice(0,-5)}function KQ$(){return async($,Z)=>{try{if(n$4($)){let J=p$4($),W=await nJ.create(),K={organizationId:J,connectionId:$,publish:async(H,N,O,B)=>{await W.eventBus.publish(J,$,{type:H,subject:N,data:O,deliverAt:B?.deliverAt})},createMCPProxy:async(H)=>{let N={...W,getOrCreateClient:Uv()},O=await uv1(H,N);return{callTool:async(B,L,w)=>{let z=await O.callTool(B,L,w);return{content:z.content,structuredContent:z.structuredContent,isError:z.isError}},close:()=>O.close()}}},U=Z.filter((H)=>H.type==="registry.monitor.scheduled");if(U.length>0){let{parseMonitorConfig:H}=await Promise.resolve().then(() => (gY(),X8$)),N=await K.createMCPProxy($);try{for(let O of U){let B=O.data&&typeof O.data==="object"?O.data:{},L=B.config&&typeof B.config==="object"?B.config:{},w=H(L);await N.callTool({name:"REGISTRY_MONITOR_RUN_START",arguments:{config:w}})}}finally{await N.close()}if(U.length===Z.length)return{success:!0}}if(await HC0(Z,K))return{success:!0}}let G=await nJ.create(),X=await uv1($,G),Y=await C_1.forClient(kl(X)).ON_EVENTS({events:Z});return{success:Y.success,error:Y.error,retryAfter:Y.retryAfter,results:Y.results}}catch(G){let X=G instanceof Error?G.message:String(G);if(console.error(`[EventBus] Failed to notify connection ${$}:`,X),JQ$(G)||WQ$(G))throw new Ii(X);return{success:!1,error:X}}}}var UQ$=D(()=>{vv();w11();X81();Kc();r$1();zm1()});function FQ$($){return{specversion:"1.0",id:$.id,source:$.source,type:$.type,time:$.time,subject:$.subject??void 0,datacontenttype:$.datacontenttype,dataschema:$.dataschema??void 0,data:$.data??void 0}}function t$4($){let Z=new Map;for(let X of $){let Q=X.subscription.connectionId,Y=Z.get(Q);if(Y){if(Y.deliveryIds.push(X.delivery.id),!Y.seenEventIds.has(X.event.id))Y.seenEventIds.add(X.event.id),Y.events.push(FQ$(X.event))}else Z.set(Q,{connectionId:X.subscription.connectionId,deliveryIds:[X.delivery.id],events:[FQ$(X.event)],seenEventIds:new Set([X.event.id])})}let G=new Map;for(let[X,Q]of Z)G.set(X,{connectionId:Q.connectionId,deliveryIds:Q.deliveryIds,events:Q.events});return G}class Pm1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;automationEventDispatcher;constructor($,Z,G){this.storage=$;this.notifySubscriber=G??KQ$(),this.config={...SH1,...Z}}setAutomationEventDispatcher($){this.automationEventDispatcher=$}async start(){if(this.running)return;await this.storage.resetStuckDeliveries();let $=await this.storage.findOrphanedCronEvents();for(let Z of $)await this.scheduleNextCronDelivery(Z);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch($){console.error("[EventBus] Error processing events:",$)}finally{this.processing=!1}}async processEvents(){let $=await this.storage.claimPendingDeliveries(this.config.batchSize);if($.length===0)return;let Z=t$4($),G=await Promise.allSettled(Array.from(Z.entries()).map(async([Y,J])=>{let W=new Set;try{let U=await this.notifySubscriber(J.connectionId,J.events);if(U.results&&Object.keys(U.results).length>0)await this.processPerEventResults(J,U);else if(U.success)await this.storage.markDeliveriesDelivered(J.deliveryIds);else if(U.retryAfter&&U.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(J.deliveryIds,U.retryAfter);else await this.storage.markDeliveriesFailed(J.deliveryIds,U.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(U){if(U instanceof Ii){await this.storage.markDeliveriesPermanentlyFailed(J.deliveryIds,U.message);for(let F of J.events)W.add(F.id)}else{let F=U instanceof Error?U.message:String(U);console.error(`[EventBus] Failed to notify subscription ${Y}:`,F),await this.storage.markDeliveriesFailed(J.deliveryIds,F,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let K=new Set;for(let U of $)if(J.deliveryIds.includes(U.delivery.id))K.add(U.event.id);return{eventIds:K,permanentlyFailed:W}})),X=new Set,Q=new Set;for(let Y of G)if(Y.status==="fulfilled"){for(let J of Y.value.eventIds)X.add(J);for(let J of Y.value.permanentlyFailed)Q.add(J)}for(let Y of X)try{await this.storage.updateEventStatus(Y);let J=$.find((W)=>W.event.id===Y)?.event;if(J?.cron&&!Q.has(Y))await this.scheduleNextCronDelivery(J)}catch(J){console.error(`[EventBus] Failed to update event status ${Y}:`,J)}if(this.automationEventDispatcher){let Y=new Set,J=[];for(let W of $){if(W.delivery.attempts>0)continue;if(!Y.has(W.event.id))Y.add(W.event.id),J.push({id:W.event.id,source:W.event.source,type:W.event.type,data:W.event.data,organizationId:W.event.organizationId})}if(J.length>0)this.automationEventDispatcher.dispatchForEvents(J)}}async processPerEventResults($,Z){let G=[],X=new Map,Q=[],Y=new Map;for(let J=0;J<$.events.length;J++){let W=$.events?.[J];if(!W)continue;let K=$.deliveryIds?.[J];if(!K)continue;Y.set(W.id,K)}for(let J of $.events){let W=Y.get(J.id);if(!W)continue;let K=Z.results?.[J.id];if(K)if(K.success)G.push(W);else if(K.retryAfter&&K.retryAfter>0){let U=X.get(K.retryAfter)||[];U.push(W),X.set(K.retryAfter,U)}else Q.push({deliveryId:W,error:K.error||"Event processing failed"});else if(Z.success)G.push(W);else if(Z.retryAfter&&Z.retryAfter>0){let U=X.get(Z.retryAfter)||[];U.push(W),X.set(Z.retryAfter,U)}else Q.push({deliveryId:W,error:Z.error||"Batch processing failed"})}if(G.length>0)await this.storage.markDeliveriesDelivered(G);for(let[J,W]of X)await this.storage.scheduleRetryWithoutAttemptIncrement(W,J);if(Q.length>0){let J=new Map;for(let{deliveryId:W,error:K}of Q){let U=J.get(K)||[];U.push(W),J.set(K,U)}for(let[W,K]of J)await this.storage.markDeliveriesFailed(K,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery($){if(!$.cron)return;try{let G=new tN($.cron,{timezone:"UTC"}).nextRun();if(!G)return;let X=G.toISOString(),Q=await this.storage.getMatchingSubscriptions($);if(Q.length===0)return;await this.storage.createDeliveries($.id,Q.map((Y)=>Y.id),X)}catch(Z){console.error(`[EventBus] Failed to schedule next cron delivery for event ${$.id}:`,Z)}}}var HQ$=D(()=>{Hm();zm1();jm1();UQ$()});class Am1{storage;worker;notifyStrategy;running=!1;constructor($){this.storage=$.storage,this.notifyStrategy=$.notifyStrategy,this.worker=new Pm1(this.storage,$.config)}setAutomationEventDispatcher($){this.worker.setAutomationEventDispatcher($)}async publish($,Z,G){if(G.deliverAt&&G.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let X;if(G.cron){try{let F=new tN(G.cron,{timezone:"UTC"}).nextRun();if(!F)throw Error("Cron expression does not produce a next run time");X=F.toISOString()}catch(U){throw Error(`Invalid cron expression: ${U instanceof Error?U.message:String(U)}`)}let K=await this.storage.findActiveCronEvent($,G.type,Z,G.cron);if(K)return K}let Q=crypto.randomUUID(),Y=new Date().toISOString(),J=await this.storage.publishEvent({id:Q,organizationId:$,type:G.type,source:Z,subject:G.subject,time:Y,data:G.data,cron:G.cron});ZG.emit($,YQ$(J));let W=await this.storage.getMatchingSubscriptions(J);if(W.length>0){let K=G.deliverAt??X;await this.storage.createDeliveries(Q,W.map((F)=>F.id),K);let U=K!=null&&new Date(K).getTime()<=Date.now();if(this.notifyStrategy&&(!K||U))await this.notifyStrategy.notify(Q).catch((F)=>{console.warn("[EventBus] Notify failed (non-critical):",F)})}return J}async subscribe($,Z){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:$,connectionId:Z.connectionId,publisher:Z.publisher,eventType:Z.eventType,filter:Z.filter})}async unsubscribe($,Z){return this.storage.unsubscribe(Z,$)}async listSubscriptions($,Z){return this.storage.listSubscriptions($,Z)}async getSubscription($,Z){return this.storage.getSubscription(Z,$)}async getEvent($,Z){return this.storage.getEvent(Z,$)}async cancelEvent($,Z,G){return this.storage.cancelEvent(Z,$,G)}async ackEvent($,Z,G){return this.storage.ackDelivery(Z,$,G)}async syncSubscriptions($,Z){return this.storage.syncSubscriptions({organizationId:$,...Z})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch(($)=>{console.error("[EventBus] Error processing after notify:",$)})});await this.worker.processNow().catch(($)=>{console.error("[EventBus] Error processing pending events on startup:",$)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch($){console.error("[EventBus] Error stopping notify strategy:",$)}}isRunning(){return this.running}}var NQ$=D(()=>{Hm();VH1();HQ$()});class Rm1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor($){this.options=$}async start($){if(this.sub)return;if($)this.onNotify=$;if(!this.onNotify)return;let Z=this.options.getConnection();if(!Z)return;this.sub=Z.subscribe("mesh.events.notify"),(async()=>{for await(let G of this.sub)this.onNotify?.()})().catch((G)=>{console.error("[NatsNotify] Subscription error:",G)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify($){try{let Z=this.options.getConnection();if(!Z)return;Z.publish("mesh.events.notify",this.encoder.encode($))}catch(Z){console.warn("[NatsNotify] Publish failed (non-critical):",Z)}}}class Im1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor($){this.options=$}async start($){if($)this.localEmit=$;if(this.sub)return;if(!this.localEmit)return;let Z=this.options.getConnection();if(!Z)return;this.sub=Z.subscribe("mesh.sse.broadcast");let G=new TextDecoder;(async()=>{for await(let X of this.sub)try{let Q=JSON.parse(G.decode(X.data));if(typeof Q?.originId!=="string"||typeof Q?.organizationId!=="string"||typeof Q?.event?.id!=="string"||typeof Q?.event?.type!=="string")continue;if(Q.originId===this.originId)continue;this.localEmit?.(Q.organizationId,Q.event)}catch{}})().catch((X)=>{console.error("[NatsSSEBroadcast] Subscription error:",X)})}broadcast($,Z){this.localEmit?.($,Z);let G={originId:this.originId,organizationId:$,event:Z};try{let X=this.options.getConnection();if(!X)return;X.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(G)))}catch(X){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",X)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function OQ$(...$){return{async start(Z){await Promise.all($.map((G)=>G.start(Z)))},async stop(){await Promise.all($.map((Z)=>Z.stop().catch((G)=>{console.error("[NotifyStrategy] Error stopping strategy:",G)})))},async notify(Z){await Promise.all($.map((G)=>G.notify(Z).catch((X)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",X)})))}}}class Tm1{intervalMs;timer=null;onNotify=null;constructor($){this.intervalMs=$}async start($){if(this.timer)return;this.onNotify=$,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify($){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}async function BQ$($,Z,G=5){try{await Ix(Z,{maxAttempts:G,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof CO?X.cause:X)}}function DQ$($,Z,G){let X=GQ$($.db),Q=G?.pollIntervalMs??SH1.pollIntervalMs,Y=new Rm1({getConnection:()=>Z.getConnection()}),J=OQ$(new Tm1(Q),Y),W=new Im1({getConnection:()=>Z.getConnection()});return ZG.start(W).catch((K)=>{console.error("[SSEHub] Failed to start broadcast strategy:",K)}),Z.onReady(()=>{BQ$("[NatsNotify]",()=>Y.start()),BQ$("[NatsSSEBroadcast]",()=>W.start())}),new Am1({storage:X,config:G,notifyStrategy:J})}var qm1=D(()=>{hZ();XQ$();NQ$();jm1();VH1();VH1()});var LQ$=()=>{};var Mm1=()=>{};var EQ$=()=>{};var o$4,F09;var wQ$=D(()=>{LQ$();Mm1();jH();EQ$();o$4={br:".br",zstd:".zst",gzip:".gz"},F09=Object.keys(o$4)});var zQ$=D(()=>{wQ$()});var jQ$=()=>{};var PQ$=D(()=>{jQ$()});var AQ$=()=>{};var RQ$=D(()=>{mq1()});var km1=D(()=>{PH();RQ$()});var Vm1="x-hono-disable-ssg",V09;var Sm1=D(()=>{km1();V09=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Vm1]:"true"}})}catch{return null}})()});var IQ$=D(()=>{Fs()});var Cm1=D(()=>{IQ$()});var TQ$=D(()=>{PQ$();AQ$();Mm1();Sm1();Cm1();km1()});var qQ$=D(()=>{Sm1();Cm1();TQ$()});var H$9;var MQ$=D(()=>{qQ$();({write:H$9}=Bun)});var s$4=class{#$;constructor($){this.#$=$,this.raw=$.raw,this.url=$.url?new URL($.url):null,this.protocol=$.protocol??null}send($,Z){this.#$.send($,Z??{})}raw;binaryType="arraybuffer";get readyState(){return this.#$.readyState}url;protocol;close($,Z){this.#$.close($,Z)}},kQ$=($)=>{return(...Z)=>{if(typeof Z[0]==="function"){let[G,X]=Z;return async function(Y,J){let W=await G(Y),K=await $(Y,W,X);if(K)return K;await J()}}else{let[G,X,Q]=Z;return(async()=>{let Y=await $(G,X,Q);if(!Y)throw Error("Failed to upgrade WebSocket");return Y})()}}};var VQ$=()=>{};var Ti=($)=>("server"in $.env)?$.env.server:$.env;var CH1=()=>{};var e$4;var SQ$=D(()=>{VQ$();CH1();e$4=kQ$(($,Z)=>{let G=Ti($);if(!G)throw TypeError("env has to include the 2nd argument of fetch.");if(G.upgrade($.req.raw,{data:{events:Z,url:new URL($.req.url),protocol:$.req.url}}))return new Response(null);return})});var _m1=($)=>{let Z=Ti($);if(!Z)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof Z.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let G=Z.requestIP($.req.raw);if(!G)return{remote:{}};return{remote:{address:G.address,addressType:G.family==="IPv6"||G.family==="IPv4"?G.family:void 0,port:G.port}}};var CQ$=D(()=>{CH1()});var _Q$=D(()=>{zQ$();MQ$();SQ$();CQ$();CH1()});var bQ$;var vQ$=D(()=>{bQ$={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});var bH1={};p4(bH1,{waitForSeed:()=>J84,seedLocalMode:()=>X84,markSeedComplete:()=>Y84,isLocalMode:()=>K3,getLocalAdminUser:()=>qi,getLocalAdminPassword:()=>_H1});import{userInfo as $84}from"os";async function _H1(){return q0().betterAuthSecret||"local-mode-default"}function fQ$(){try{return $84().username||"local"}catch{return"local"}}function Z84($){return $.charAt(0).toUpperCase()+$.slice(1)}async function G84(){let $=P6(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function X84(){if(!await G84())return!1;let Z=fQ$(),G=`${Z}@localhost.mesh`,X=Z84(Z),Q=await _H1(),Y=await u6.api.signUpEmail({body:{email:G,password:Q,name:X}});if(!Y?.user?.id)throw Error("Failed to create local admin user");let J=Y.user.id,W=P6();await W.db.updateTable("user").set({role:"admin"}).where("id","=",J).execute();let K=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),U=`${X} Local`;return await W.db.updateTable("organization").set({name:U,slug:K}).where("id","in",(F)=>F.selectFrom("member").select("organizationId").where("userId","=",J)).execute(),!0}async function qi(){let $=P6(),Z=`${fQ$()}@localhost.mesh`;return $.db.selectFrom("user").where("email","=",Z).selectAll().executeTakeFirst()}function K3(){return q0().localMode}function Y84(){xQ$()}function J84(){return Q84}var xQ$,Q84;var AO=D(()=>{DJ();M4();cU();Q84=new Promise(($)=>{if(xQ$=$,!K3())$()})});function yQ$(){let $=Object.keys(i4.socialProviders??{}),Z=$.length>0,G=$.map((Q)=>({name:Q,icon:bQ$[Q].icon})),X=q0().localMode;return{emailAndPassword:{enabled:i4.emailAndPassword?.enabled??!1},magicLink:{enabled:i4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:i4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:kH1},socialProviders:{enabled:Z,providers:G},sso:i4.ssoConfig?{enabled:!0,providerId:i4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:K3()}}var bV,gQ$;var bm1=D(()=>{o4();_Q$();N5();M4();cU();DJ();_g1();Iv1();vQ$();AO();tC();bV=new v0;bV.post("/local-session",async($)=>{if(!K3())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=_m1($).remote.address}catch{}if(!(Z==="127.0.0.1"||Z==="::1"||Z==="::ffff:127.0.0.1"))return $.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:X}=await Promise.resolve().then(() => (AO(),bH1));await X();let{auth:Q}=await Promise.resolve().then(() => (cU(),eX$)),Y=await qi();if(!Y)return $.json({success:!1,error:"Local admin user not found"},500);let J=await _H1();return await Q.api.signInEmail({body:{email:Y.email,password:J},asResponse:!0})}catch(X){return console.error("Failed to create local session:",X),$.json({success:!1,error:X instanceof Error?X.message:"Failed to create local session"},500)}});bV.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),G=await u6.api.getSession({headers:$.req.raw.headers});if(!G?.user)return $.json({error:"Authentication required"},401);let X=P6().db,Q=await X.selectFrom("organization").select(["id"]).where("slug","=",Z).executeTakeFirst();if(!Q)return $.json({role:null,capabilities:{}});let J=(await X.selectFrom("member").select(["role"]).where("userId","=",G.user.id).where("organizationId","=",Q.id).executeTakeFirst())?.role??null;if(!J)return $.json({role:null,capabilities:{}});if(J==="owner"||J==="admin")return $.json({role:J,capabilities:LP0()});if(J==="user")return $.json({role:J,capabilities:XM1({self:[...js]})});let W=await X.selectFrom("organizationRole").select(["permission"]).where("role","=",J).where("organizationId","=",Q.id).executeTakeFirst(),K={},U=W?.permission;if(typeof U==="string")try{let F=JSON.parse(U);if(F&&typeof F==="object"&&!Array.isArray(F))K=F}catch{K={}}return $.json({role:J,capabilities:XM1(K)})});bV.get("/domain-lookup",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({found:!1,organizations:[]});let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({found:!1,organizations:[]});try{let Q=await new IN(P6().db).getAllByDomain(G);if(Q.length===0)return $.json({found:!1,organizations:[]});let Y=await P6().db.selectFrom("organization").select(["id","name","slug","logo"]).where("id","in",Q.map((K)=>K.organizationId)).execute(),J=new Map(Y.map((K)=>[K.id,K])),W=Q.map((K)=>{let U=J.get(K.organizationId);if(!U)return null;return{id:U.id,name:U.name,slug:U.slug,logo:U.logo,autoJoinEnabled:K.autoJoinEnabled}}).filter((K)=>K!==null);return $.json({found:W.length>0,organizations:W})}catch(X){return console.error("[Auth] Domain lookup failed:",X),$.json({success:!1,error:"Domain lookup failed"},500)}});bV.post("/domain-join",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to join"},403);let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({success:!1,error:"Generic email domains cannot auto-join"},403);let X=await $.req.json().catch(()=>({})),Q=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;try{let Y=P6().db,K=(await new IN(Y).getAllByDomain(G)).filter((F)=>F.autoJoinEnabled);if(K.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let U;if(Q){let F=await Y.selectFrom("organization").select(["id","slug"]).where("slug","=",Q).executeTakeFirst();if(!F||!K.some((H)=>H.organizationId===F.id))return $.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);U=F}else if(K.length===1){let F=await Y.selectFrom("organization").select(["id","slug"]).where("id","=",K[0].organizationId).executeTakeFirst();if(!F)return $.json({success:!1,error:"Organization not found"},404);U=F}else return $.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await u6.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:U.id}})}catch(F){if(!(F instanceof Error?F.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",F),$.json({success:!1,error:"Failed to join organization"},500)}return z$.capture({distinctId:Z.user.id,event:"organization_domain_joined",groups:{organization:U.id},properties:{organization_id:U.id,organization_slug:U.slug,email_domain:G}}),$.json({success:!0,slug:U.slug})}catch(Y){return z$.captureException(Y,Z.user.id),console.error("[Auth] Domain join failed:",Y),$.json({success:!1,error:"Failed to join organization"},500)}});bV.post("/domain-setup",async($)=>{let Z=await u6.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified"},403);let G=Z.user.email?.split("@")[1]?.toLowerCase();if(!G||uU.has(G))return $.json({success:!1,error:"Corporate email required"},403);let X=await $.req.json().catch(()=>({})),Q=typeof X.name==="string"&&X.name.trim().length>0?X.name.trim():null,Y=typeof X.logo==="string"&&X.logo.length>0?X.logo:null,J=X.claimDomain!==!1;try{let W=P6().db,K=new IN(W),U=await K.getAllByDomain(G);if(U.length>0){let P=await W.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",Z.user.id).where("member.organizationId","in",U.map((R)=>R.organizationId)).executeTakeFirst();if(P)return $.json({success:!0,slug:P.slug,alreadyExists:!0})}let F=G.split(".")[0]??G,H=Q??F.charAt(0).toUpperCase()+F.slice(1),N=(Q??F).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||F.toLowerCase().replace(/[^a-z0-9-]/g,""),O=null;for(let R=0;R<3;R++){let A=R===0?"":`-${Math.random().toString(36).slice(2,6)}`,q=R===0?H:`${H}${A}`,S=`${N}${A}`;try{O=await u6.api.createOrganization({body:{name:q,slug:S,userId:Z.user.id}});break}catch(k){if(!(k instanceof Error&&("body"in k)&&k.body?.code==="ORGANIZATION_ALREADY_EXISTS")||R===2)throw k}}if(!O?.id)throw Error("Failed to create organization");let B=O.id;if(J)await K.setDomain(B,G,!0);let L=!1,w=null,z=null;try{let P=q0().firecrawlApiKey;if(P){let R=await A41(G,P,H);if(R){let A=new Tl(P6().db),q=await A.create(B,R);if(await A.setDefault(q.id,B),L=!0,R.name&&R.name!==H)w=R.name;z=R.favicon??R.logo??null}}}catch(P){console.error("[Auth] Brand extraction failed (non-fatal):",P)}let j={};if(!Q&&w)j.name=w;if(Y)j.logo=Y;else if(z)j.logo=z;if(Object.keys(j).length>0)try{await u6.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:B,data:j}})}catch(P){console.error("[Auth] Org update failed (non-fatal):",P)}return z$.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),z$.groupIdentify({groupType:"organization",groupKey:B,properties:{name:O.slug??N,slug:O.slug??N,email_domain:G,brand_extracted:L,created_at:new Date().toISOString()}}),z$.capture({distinctId:Z.user.id,event:"organization_created",groups:{organization:B},properties:{organization_id:B,organization_slug:O.slug??N,email_domain:G,brand_extracted:L}}),$.json({success:!0,slug:O.slug??N,brandExtracted:L})}catch(W){return z$.captureException(W,Z.user?.id),console.error("[Auth] Domain setup failed:",W),$.json({success:!1,error:"Failed to set up organization"},500)}});bV.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),G=await u6.api.getSession({headers:$.req.raw.headers});if(!G?.user)return $.json({success:!1,error:"Authentication required"},401);let X=P6().db,Q=await X.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",Z).executeTakeFirst();if(!Q)return $.json({status:"not-found"});let Y={id:Q.id,name:Q.name,slug:Q.slug,logo:Q.logo};if(await X.selectFrom("member").select(["id"]).where("userId","=",G.user.id).where("organizationId","=",Q.id).executeTakeFirst())return $.json({status:"member",organization:Y});try{let W=await u6.api.listUserInvitations({headers:$.req.raw.headers}),K=Date.now(),U=W.find((F)=>F.organizationId===Q.id&&F.status==="pending"&&new Date(F.expiresAt).getTime()>K);if(U)return $.json({status:"pending-invite",invitation:{id:U.id},organization:Y})}catch(W){console.error("[Auth] listUserInvitations failed:",W)}if(G.user.emailVerified){let W=G.user.email?.split("@")[1]?.toLowerCase();if(W&&!uU.has(W)){let K=await new IN(X).getByOrganizationId(Q.id);if(K?.autoJoinEnabled&&K.domain===W)return $.json({status:"auto-domain-join",organization:{...Y,domain:W}})}}return $.json({status:"no-access",organization:Y})});gQ$=bV});import*as fH1 from"jose";function W84($){$.get("/status",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!await fm1(G,G.auth.user.id,X))return Z.json({error:"Not a member of this organization"},403);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y||!Y.enforced)return Z.json({ssoRequired:!1});let J=await G.storage.orgSsoSessions.isValid(G.auth.user.id,X);return Z.json({ssoRequired:!0,authenticated:J,issuer:Y.issuer,domain:Y.domain})}),$.get("/authorize",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!await fm1(G,G.auth.user.id,X))return Z.json({error:"Not a member of this organization"},403);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y)return Z.json({error:"SSO not configured for this organization"},404);let J=await vm1(Y.issuer,Y.discoveryEndpoint),W=K84(),K=await U84(W),U=crypto.randomUUID(),F=JSON.stringify({state:U,codeVerifier:W,orgId:X,userId:G.auth.user.id});sq1(Z,"org_sso_state",F,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let H=new URLSearchParams({response_type:"code",client_id:Y.clientId,redirect_uri:`${G.baseUrl}/api/org-sso/callback`,scope:Y.scopes.join(" "),state:U,code_challenge:K,code_challenge_method:"S256"}),N=`${J.authorization_endpoint}?${H.toString()}`;return Z.redirect(N)}),$.get("/callback",async(Z)=>{let G=Z.get("meshContext"),X=Z.req.query("code"),Q=Z.req.query("state"),Y=Z.req.query("error");if(Y)return Z.redirect(`/?sso_error=${encodeURIComponent(Y)}`);if(!X||!Q)return Z.redirect("/?sso_error=missing_code_or_state");let J=ws(Z,"org_sso_state");if(!J)return Z.redirect("/?sso_error=state_expired");sq1(Z,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let W;try{W=JSON.parse(J)}catch{return Z.redirect("/?sso_error=invalid_state")}if(W.state!==Q)return Z.redirect("/?sso_error=state_mismatch");if(!G.auth.user||G.auth.user.id!==W.userId)return Z.redirect("/?sso_error=session_expired");let K=await G.storage.orgSsoConfig.getByOrgId(W.orgId);if(!K)return Z.redirect("/?sso_error=sso_not_configured");let U=await vm1(K.issuer,K.discoveryEndpoint),F=await fetch(U.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:X,redirect_uri:`${G.baseUrl}/api/org-sso/callback`,client_id:K.clientId,client_secret:K.clientSecret,code_verifier:W.codeVerifier})});if(!F.ok)return console.error("[org-sso] Token exchange failed:",await F.text()),Z.redirect("/?sso_error=token_exchange_failed");let H=await F.json();if(!H.id_token)return Z.redirect("/?sso_error=no_id_token");try{let B=fH1.createRemoteJWKSet(new URL(U.jwks_uri)),{payload:L}=await fH1.jwtVerify(H.id_token,B,{issuer:K.issuer,audience:K.clientId}),w=L.email?.toLowerCase(),z=G.auth.user.email?.toLowerCase();if(!w||w!==z)return console.error(`[org-sso] Email mismatch: token=${w}, user=${z}`),Z.redirect("/?sso_error=email_mismatch")}catch(B){return console.error("[org-sso] ID token verification failed:",B),Z.redirect("/?sso_error=token_verification_failed")}await G.storage.orgSsoSessions.upsert(G.auth.user.id,W.orgId);let N=await fm1(G,G.auth.user.id,W.orgId),O=N?.orgSlug?`/${N.orgSlug}`:"/";return Z.redirect(O)}),$.get("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!F84(G))return Z.json({error:"Admin role required"},403);let Q=await G.storage.orgSsoConfig.getByOrgId(X);if(!Q)return Z.json({configured:!1});return Z.json({configured:!0,config:G.storage.orgSsoConfig.toPublic(Q)})}),$.post("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);let Q=await Z.req.json();if(!Q.issuer||!Q.clientId||!Q.domain)return Z.json({error:"issuer, clientId, and domain are required"},400);let Y=await G.storage.orgSsoConfig.getByOrgId(X);if(!Y&&!Q.clientSecret)return Z.json({error:"clientSecret is required for initial SSO setup"},400);let J=Q.clientSecret||Y?.clientSecret||"";try{await vm1(Q.issuer,Q.discoveryEndpoint)}catch(K){return Z.json({error:"Failed to reach OIDC discovery endpoint",details:K instanceof Error?K.message:String(K)},400)}let W=await G.storage.orgSsoConfig.upsert(X,{issuer:Q.issuer,clientId:Q.clientId,clientSecret:J,discoveryEndpoint:Q.discoveryEndpoint,scopes:Q.scopes,domain:Q.domain,enforced:Q.enforced});return Z.json({success:!0,config:G.storage.orgSsoConfig.toPublic(W)})}),$.post("/config/enforce",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);let Q=await Z.req.json();if(!await G.storage.orgSsoConfig.getByOrgId(X))return Z.json({error:"SSO must be configured before enforcing"},400);return await G.storage.orgSsoConfig.setEnforced(X,Q.enforced),Z.json({success:!0,enforced:Q.enforced})}),$.delete("/config",async(Z)=>{let G=Z.get("meshContext");if(!G.auth.user)return Z.json({error:"Authentication required"},401);let X=G.organization?.id;if(!X)return Z.json({error:"Organization context required"},400);if(!xm1(G))return Z.json({error:"Owner role required"},403);return await G.storage.orgSsoConfig.delete(X),Z.json({success:!0})})}function vH1($){let Z;try{Z=new URL($)}catch{throw Error(`Invalid URL: ${$}`)}let G=q0().localMode;if(Z.protocol!=="https:"&&!(G&&Z.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${$}`);let X=Z.hostname,Q=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],Y=/^127\.|^\[::1\]$|^localhost$/i.test(X);if(G&&Y)return;for(let J of Q)if(J.test(X))throw Error(`OIDC URL must not point to a private network address: ${X}`)}async function vm1($,Z){let G=Z||$,X=hQ$.get(G);if(X&&X.expiresAt>Date.now())return X.doc;let Q=Z||`${$.replace(/\/$/,"")}/.well-known/openid-configuration`;vH1(Q);let Y=await fetch(Q);if(!Y.ok)throw Error(`OIDC discovery failed: ${Y.status} ${Y.statusText}`);let J=await Y.json();if(!J.authorization_endpoint||!J.token_endpoint||!J.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return vH1(J.authorization_endpoint),vH1(J.token_endpoint),vH1(J.jwks_uri),hQ$.set(G,{doc:J,expiresAt:Date.now()+3600000}),J}function K84(){let $=new Uint8Array(32);return crypto.getRandomValues($),btoa(String.fromCharCode(...$)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function U84($){let G=new TextEncoder().encode($),X=await crypto.subtle.digest("SHA-256",G);return btoa(String.fromCharCode(...new Uint8Array(X))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function fm1($,Z,G){return await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",Z).where("member.organizationId","=",G).executeTakeFirst()??null}function F84($){let Z=$.auth.user?.role;if(!Z)return!1;return HW.includes(Z)}function xm1($){return $.auth.user?.role==="owner"}var xH1=()=>{let $=new v0;return W84($),$},hQ$;var ym1=D(()=>{o4();eq1();M4();KL();hQ$=new Map});function O84($){if($==="claude-code")return H84;if($==="codex")return N84;return null}function uQ$($,Z){return O84($)?.[Z]??null}var H84,N84;var cQ$=D(()=>{H84={fast:{modelId:"claude-code:haiku",label:"Haiku 4.5"},smart:{modelId:"claude-code:sonnet",label:"Sonnet 4.6"},thinking:{modelId:"claude-code:opus-1m",label:"Opus 4.8 1M"}},N84={fast:{modelId:"codex:gpt-5.4-mini",label:"GPT-5.4 Mini"},smart:{modelId:"codex:gpt-5.4",label:"GPT-5.4"},thinking:{modelId:"codex:gpt-5.5",label:"GPT-5.5"}}});var lQ$=D(()=>{cQ$()});function dQ$($){return $.type==="tool-call"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function B84($){return $.type==="tool-result"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function mQ$($){let Z=null;for(let X=$.length-1;X>=0&&Z===null;X--){let Y=$[X].content;if(!Array.isArray(Y))continue;for(let J=Y.length-1;J>=0;J--){let W=Y[J];if(dQ$(W)){Z=W.toolCallId;break}}}if(Z===null)return $;let G=Z;return $.map((X)=>{let Q=X.content;if(!Array.isArray(Q))return X;let Y=Q.filter((J)=>{if(dQ$(J))return J.toolCallId===G;if(B84(J))return J.toolCallId===G;return!0});if(Y.length===Q.length)return X;return{...X,content:Y}})}function D84($){let Z=!1,G=$.map((X)=>{if(X.role!=="assistant")return X;if(!X.parts.some((Y)=>("state"in Y)&&Y.state==="approval-requested"))return X;return Z=!0,{...X,parts:X.parts.map((Y)=>{if(!("state"in Y)||Y.state!=="approval-requested"||!("approval"in Y)||!Y.approval)return Y;return{...Y,state:"output-denied",approval:{...Y.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return Z?G:$}function L84($){let[Z,G]=$.reduce((X,Q)=>{if(Q.role==="system")X[0].push(Q);else X[1].push(Q);return X},[[],[]]);return{systemMessages:Z,messages:G}}async function iQ$($,Z){let G=$.filter((H)=>H.role!=="assistant"||H.parts&&H.parts.length>0),X=await ym({messages:G}),Q=D84(X),Y=await $E(Q,{tools:Z.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:J,messages:W}=L84(Y),K=mQ$(W),F=Uc1({messages:K,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((H)=>{if(H.role!=="assistant")return H;let N=Array.isArray(H.content)?H.content.filter((O)=>O.type!=="reasoning"&&O.type!=="thinking"&&O.type!=="redacted-reasoning").map((O)=>{let B=O;if("providerOptions"in B||"providerMetadata"in B){let{providerOptions:L,providerMetadata:w,...z}=B;if(B.type==="tool-call"){let j=w?.google,P=L?.google;return{...z,...j?{providerMetadata:{google:j}}:{},...P?{providerOptions:{google:P}}:{}}}return z}return O}):H.content;return{...H,content:Array.isArray(N)&&N.length===0?[{type:"text",text:""}]:N,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:J,messages:F,originalMessages:X}}var nQ$=D(()=>{e4()});function pQ$($){let Z=$.filter((X)=>X.role==="system"),G=$.find((X)=>X.role!=="system");return{systemMessages:Z,requestMessage:G}}async function E84($,Z){return await $.loadHistory(Z)}function w84($,Z){let G=$.filter((Y)=>Y.parts&&Y.parts.length>0);if(!Z)return G;let X=G.findIndex((Y)=>Y.id===Z.id);return X>=0?[...G.slice(0,X),Z]:[...G,Z]}async function tQ$($,Z,G,X){let Q=await E84($,X),Y=w84(Q,Z);return[...G,...Y]}var gm1=()=>{};import{z as hm1}from"zod";function yH1($){let{toolOutputMap:Z}=$;return J8({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:U1(hm1.object({tool_call_id:hm1.string(),pattern:hm1.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:X})=>{if(!Z.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...Z.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let Q=Z.get(G),Y;try{Y=new RegExp(X)}catch{return{result:`Invalid regex pattern: ${X}`,matchCount:0,totalLines:0}}let J=Q.split(`
|
|
2228
2228
|
`),W=J.filter((F)=>Y.test(F)),K=W.join(`
|
|
2229
2229
|
`),U=s9(K);if(U>RO){let F=yG(K);return{result:`Output is still too long (${U} tokens), use a more specific pattern to reduce output.
|
|
2230
2230
|
|
|
@@ -2263,7 +2263,7 @@ ${j}`;if(Y.has(z))L(),N(z)}),L()}return{messagesPrompt:U,systemPrompt:X,...G.len
|
|
|
2263
2263
|
...[truncated ${$.length-Z} chars]`}if(typeof $!=="object"||$===null)return $;if(Array.isArray($)){let Y=-1,J=0;for(let W=0;W<$.length;W++){let K=$[W];if(typeof K==="string"&&K.length>J)Y=W,J=K.length}if(Y>=0&&J>Z){let W=$[Y].slice(0,Z)+`
|
|
2264
2264
|
...[truncated ${J-Z} chars]`,K=[...$];return K[Y]=W,K}return $}let G=$,X=null,Q=0;for(let[Y,J]of Object.entries(G))if(typeof J==="string"&&J.length>Q)X=Y,Q=J.length;if(X&&Q>Z){let Y=G[X].slice(0,Z)+`
|
|
2265
2265
|
...[truncated ${Q-Z} chars]`;return{...G,[X]:Y}}return $}function Qi1($={}){let Z=SJ$($.defaultSettings?.logger);if($.defaultSettings){let Q=PJ$($.defaultSettings);if(!Q.valid)throw Error(`Invalid default settings: ${Q.errors.join(", ")}`);if(Q.warnings.length>0)Q.warnings.forEach((Y)=>Z.warn(`Claude Code Provider: ${Y}`))}let G=(Q,Y={})=>{let J={...$.defaultSettings,...Y},W=PJ$(J);if(!W.valid)throw Error(`Invalid settings: ${W.errors.join(", ")}`);return new N64({id:Q,settings:J,settingsValidationWarnings:W.warnings})},X=function(Q,Y){if(new.target)throw Error("The Claude Code model function cannot be called with the new keyword.");return G(Q,Y)};return X.languageModel=G,X.chat=G,X.specificationVersion="v3",X.embeddingModel=(Q)=>{throw new cY({modelId:Q,modelType:"embeddingModel"})},X.imageModel=(Q)=>{throw new cY({modelId:Q,modelType:"imageModel"})},X}var g44="Image URLs are not supported by this provider; supply base64/data URLs.",iW="Unable to convert image content; supply base64/data URLs.",r44,a44,Z64,G64,RJ$="Claude Code SDK output ended unexpectedly; returning truncated response from buffered text. Await upstream fix to avoid data loss.",Q64=512,Y64,J64,TJ$="Claude Agent SDK features (hooks/MCP/images) require streaming input. Set `streamingInput: 'always'` or provide `canUseTool` (auto streams only when canUseTool is set).",K64,F64,H64=1e4,N64=class ${specificationVersion="v3";defaultObjectGenerationMode="json";supportsImageUrls=!1;supportedUrls={};supportsStructuredOutputs=!0;static UNKNOWN_TOOL_NAME="unknown-tool";static MAX_TOOL_INPUT_SIZE=1048576;static MAX_TOOL_INPUT_WARN=102400;static MAX_DELTA_CALC_SIZE=1e4;modelId;settings;sessionId;modelValidationWarning;settingsValidationWarnings;logger;constructor(Z){this.modelId=Z.id,this.settings=Z.settings??{},this.settingsValidationWarnings=Z.settingsValidationWarnings??[];let G=SJ$(this.settings.logger);if(this.logger=X64(G,this.settings.verbose??!1),!this.modelId||typeof this.modelId!=="string"||this.modelId.trim()==="")throw new cY({modelId:this.modelId,modelType:"languageModel"});if(this.modelValidationWarning=s44(this.modelId),this.modelValidationWarning)this.logger.warn(`Claude Code Model: ${this.modelValidationWarning}`)}get provider(){return"claude-code"}getModel(){return F64[this.modelId]??this.modelId}getSanitizedSdkOptions(){if(!this.settings.sdkOptions||typeof this.settings.sdkOptions!=="object")return;let Z={...this.settings.sdkOptions},G=Array.from(K64).filter((X)=>(X in Z));if(G.length>0)this.logger.warn(`[claude-code] sdkOptions includes provider-managed fields (${G.join(", ")}); these will be ignored.`),G.forEach((X)=>delete Z[X]);return Z}getEffectiveResume(Z){return Z?.resume??this.settings.resume??this.sessionId}extractTextAndThinking(Z){if(!Array.isArray(Z))return{text:"",thinking:[]};let G="",X=[];for(let Q of Z){if(!CJ$(Q))continue;if(Q.type==="text"&&typeof Q.text==="string")G+=Q.text;else if(Q.type==="thinking"&&typeof Q.thinking==="string")X.push(Q.thinking)}if(G.length>0&&typeof G!=="string")throw Error("extractTextAndThinking: accumulated text must be a string");if(X.some((Q)=>typeof Q!=="string"))throw Error("extractTextAndThinking: all thinking entries must be strings");return{text:G,thinking:X}}extractToolUses(Z){return Gi1(Z,"tool_use").map((G)=>{let{id:X,name:Q,input:Y,parent_tool_use_id:J}=G;return{id:typeof X==="string"&&X.length>0?X:E6(),name:typeof Q==="string"&&Q.length>0?Q:$.UNKNOWN_TOOL_NAME,input:Y,parentToolUseId:typeof J==="string"?J:null}})}extractToolResults(Z){return Gi1(Z,"tool_result").map((G)=>{let{tool_use_id:X,content:Q,is_error:Y,name:J}=G;return{id:typeof X==="string"&&X.length>0?X:E6(),name:typeof J==="string"&&J.length>0?J:void 0,result:Q,isError:Boolean(Y)}})}extractToolErrors(Z){return Gi1(Z,"tool_error").map((G)=>{let{tool_use_id:X,error:Q,name:Y}=G;return{id:typeof X==="string"&&X.length>0?X:E6(),name:typeof Y==="string"&&Y.length>0?Y:void 0,error:Q}})}serializeToolInput(Z){if(typeof Z==="string")return this.checkInputSize(Z);if(Z===void 0)return"";try{let G=JSON.stringify(Z);return this.checkInputSize(G)}catch{let G=String(Z);return this.checkInputSize(G)}}checkInputSize(Z){let G=Z.length;if(G>$.MAX_TOOL_INPUT_SIZE)throw Error(`Tool input exceeds maximum size of ${$.MAX_TOOL_INPUT_SIZE} bytes (got ${G} bytes). This may indicate a malformed request or an attempt to process excessively large data.`);if(G>$.MAX_TOOL_INPUT_WARN)this.logger.warn(`[claude-code] Large tool input detected: ${G} bytes. Performance may be impacted. Consider chunking or reducing input size.`);return Z}normalizeToolResult(Z){if(typeof Z==="string")try{return JSON.parse(Z)}catch{return Z}if(Array.isArray(Z)&&Z.length>0){let G=Z.filter((Q)=>Q?.type==="text"&&typeof Q.text==="string").map((Q)=>Q.text);if(G.length!==Z.length)return Z;if(G.length===1)try{return JSON.parse(G[0])}catch{return G[0]}let X=G.join(`
|
|
2266
|
-
`);try{return JSON.parse(X)}catch{return X}}return Z}generateAllWarnings(Z,G){let X=[],Q=[];if(Z.temperature!==void 0)Q.push("temperature");if(Z.topP!==void 0)Q.push("topP");if(Z.topK!==void 0)Q.push("topK");if(Z.presencePenalty!==void 0)Q.push("presencePenalty");if(Z.frequencyPenalty!==void 0)Q.push("frequencyPenalty");if(Z.stopSequences!==void 0&&Z.stopSequences.length>0)Q.push("stopSequences");if(Z.seed!==void 0)Q.push("seed");if(Q.length>0)for(let J of Q)X.push({type:"unsupported",feature:J,details:`Claude Code SDK does not support the ${J} parameter. It will be ignored.`});if(this.modelValidationWarning)X.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((J)=>{X.push({type:"other",message:J})}),Z.responseFormat?.type==="json"&&!Z.responseFormat.schema)X.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema for the Claude Code provider. The JSON responseFormat is ignored and the call is treated as plain text."});let Y=e44(G);if(Y)X.push({type:"other",message:Y});return X}createQueryOptions(Z,G,X,Q,Y){let J={model:this.getModel(),abortController:Z,resume:Y??this.settings.resume??this.sessionId,pathToClaudeCodeExecutable:this.settings.pathToClaudeCodeExecutable,maxTurns:this.settings.maxTurns,maxThinkingTokens:this.settings.maxThinkingTokens,thinking:this.settings.thinking,effort:this.settings.effort,promptSuggestions:this.settings.promptSuggestions,cwd:this.settings.cwd,executable:this.settings.executable,executableArgs:this.settings.executableArgs,permissionMode:this.settings.permissionMode,permissionPromptToolName:this.settings.permissionPromptToolName,continue:this.settings.continue,allowedTools:this.settings.allowedTools,disallowedTools:this.settings.disallowedTools,betas:this.settings.betas,allowDangerouslySkipPermissions:this.settings.allowDangerouslySkipPermissions,enableFileCheckpointing:this.settings.enableFileCheckpointing,maxBudgetUsd:this.settings.maxBudgetUsd,plugins:this.settings.plugins,resumeSessionAt:this.settings.resumeSessionAt,sandbox:this.settings.sandbox,tools:this.settings.tools,mcpServers:this.settings.mcpServers,canUseTool:this.settings.canUseTool};if(this.settings.systemPrompt!==void 0)J.systemPrompt=this.settings.systemPrompt;else if(this.settings.customSystemPrompt!==void 0)this.logger.warn("[claude-code] 'customSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt' instead (string or { type: 'preset', preset: 'claude_code', append? })."),J.systemPrompt=this.settings.customSystemPrompt;else if(this.settings.appendSystemPrompt!==void 0)this.logger.warn("[claude-code] 'appendSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt: { type: 'preset', preset: 'claude_code', append: <text> }' instead."),J.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)J.settingSources=this.settings.settingSources;if(this.settings.additionalDirectories!==void 0)J.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)J.agents=this.settings.agents;if(this.settings.includePartialMessages!==void 0)J.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)J.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)J.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)J.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)J.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)J.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)J.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)J.hooks=this.settings.hooks;if(this.settings.sessionId!==void 0)J.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)J.debug=this.settings.debug;if(this.settings.debugFile!==void 0)J.debugFile=this.settings.debugFile;let W=Q?Q:void 0,K=W&&typeof W.env==="object"&&W.env!==null?W.env:void 0,U=W&&typeof W.stderr==="function"?W.stderr:void 0;if(W){let H={...W};delete H.env,delete H.stderr,Object.assign(J,H)}let F=U??this.settings.stderr;if(X||F)J.stderr=(H)=>{if(X)X(H);if(F)F(H)};if(this.settings.env!==void 0||K!==void 0){let H=W64();J.env={...H,...this.settings.env,...K}}if(G?.type==="json"&&G.schema)J.outputFormat={type:"json_schema",schema:G.schema};return J}handleClaudeCodeError(Z,G,X){if(Zi1(Z))throw Z;let Q=(B)=>{return typeof B==="object"&&B!==null&&"message"in B},Y=(B)=>{return typeof B==="object"&&B!==null},J=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key"],W=Q(Z)&&Z.message?Z.message.toLowerCase():"",K=Y(Z)&&typeof Z.exitCode==="number"?Z.exitCode:void 0;if(J.some((B)=>W.includes(B))||K===401)return p44({message:Q(Z)&&Z.message?Z.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let F=Y(Z)&&typeof Z.code==="string"?Z.code:"";if(F==="ETIMEDOUT"||W.includes("timeout"))return t44({message:Q(Z)&&Z.message?Z.message:"Request timed out",promptExcerpt:G.substring(0,200)});let H=F==="ENOENT"||F==="ECONNREFUSED"||F==="ETIMEDOUT"||F==="ECONNRESET",O=(Y(Z)&&typeof Z.stderr==="string"?Z.stderr:void 0)||X||void 0;return n44({message:Q(Z)&&Z.message?Z.message:"Claude Code SDK error",code:F||void 0,exitCode:K,stderr:O,promptExcerpt:G.substring(0,200),isRetryable:H})}setSessionId(Z){this.sessionId=Z;let G=$64(Z);if(G)this.logger.warn(`Claude Code Session: ${G}`)}logMcpConnectionIssues(Z){if(!Array.isArray(Z)||Z.length===0)return;let G=Z.filter((Q)=>{let Y=typeof Q.status==="string"?Q.status.toLowerCase():"";return Y==="failed"||Y==="needs-auth"});if(G.length===0)return;let X=G.map((Q)=>{let Y=typeof Q.name==="string"&&Q.name.trim().length>0?Q.name:"<unknown>",J=typeof Q.status==="string"&&Q.status.trim().length>0?Q.status:"unknown",W=typeof Q.error==="string"&&Q.error.trim().length>0?` (${Q.error})`:"";return`${Y}:${J}${W}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${X}`)}async doGenerate(Z){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${Z.responseFormat?.type??"none"}`);let{messagesPrompt:G,warnings:X,streamingContentParts:Q,hasImageParts:Y}=zJ$(Z.prompt);this.logger.debug(`[claude-code] Converted ${Z.prompt.length} messages, hasImageParts: ${Y}`);let J=new AbortController,W;if(Z.abortSignal?.aborted)J.abort(Z.abortSignal.reason);else if(Z.abortSignal)W=()=>J.abort(Z.abortSignal?.reason),Z.abortSignal.addEventListener("abort",W,{once:!0});let K="",U=(d)=>{K+=d},F=this.getSanitizedSdkOptions(),H=this.getEffectiveResume(F),N=this.createQueryOptions(J,Z.responseFormat,U,F,H),O="",B=[],L,w=qJ$(),z={unified:"stop",raw:void 0},j=!1,P,R,A,q=this.generateAllWarnings(Z,G);if(X)X.forEach((d)=>{q.push({type:"other",message:d})});let S=this.settings.streamingInput??"auto",k=F?.canUseTool??this.settings.canUseTool,C=F?.permissionPromptToolName??this.settings.permissionPromptToolName,u=S==="always"||S==="auto"&&!!k;if(!u&&Y)q.push({type:"other",message:TJ$});let x=()=>{},y=new Promise((d)=>{x=()=>d(void 0)});try{if(k&&C)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let d=u?kJ$(G,y,H,Q,this.settings.onStreamStart):G;this.logger.debug(`[claude-code] Executing query with streamingInput: ${u}, session: ${H??"new"}`);let p=AJ$({prompt:d,options:N});this.settings.onQueryCreated?.(p);for await(let Q1 of p)if(this.logger.debug(`[claude-code] Received message type: ${Q1.type}`),Q1.type==="assistant"){let{text:G1,thinking:H1}=this.extractTextAndThinking(Q1.message.content);O+=G1,B.push(...H1)}else if(Q1.type==="result"){if(x(),this.setSessionId(Q1.session_id),P=Q1.total_cost_usd,R=Q1.duration_ms,A=Q1.modelUsage,"is_error"in Q1&&Q1.is_error===!0){let H1="result"in Q1&&typeof Q1.result==="string"?Q1.result:"Claude Code CLI returned an error";throw Object.assign(Error(H1),{exitCode:1})}if(Q1.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if("structured_output"in Q1&&Q1.structured_output!==void 0)L=Q1.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${Q1.session_id}, Cost: $${P?.toFixed(4)??"N/A"}, Duration: ${R??"N/A"}ms`),"usage"in Q1)w=MJ$(Q1.usage),this.logger.debug(`[claude-code] Token usage - Input: ${w.inputTokens.total}, Output: ${w.outputTokens.total}`);let G1="stop_reason"in Q1?Q1.stop_reason:void 0;z=jJ$(Q1.subtype,G1),this.logger.debug(`[claude-code] Finish reason: ${z.unified}`)}else if(Q1.type==="system"&&Q1.subtype==="init")this.logMcpConnectionIssues(Q1.mcp_servers),this.setSessionId(Q1.session_id),this.logger.info(`[claude-code] Session initialized: ${Q1.session_id}`)}catch(d){if(x(),this.logger.debug(`[claude-code] Error during doGenerate: ${d instanceof Error?d.message:String(d)}`),Zi1(d))throw this.logger.debug("[claude-code] Request aborted by user"),Z.abortSignal?.aborted?Z.abortSignal.reason:d;if(IJ$(d,O))this.logger.warn(`[claude-code] Detected truncated response, returning ${O.length} characters of buffered text`),j=!0,z={unified:"length",raw:"truncation"},q.push({type:"other",message:RJ$});else throw this.handleClaudeCodeError(d,G,K)}finally{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}let e=L!==void 0?JSON.stringify(L):O;return{content:[...B.map((d)=>({type:"reasoning",text:d})),{type:"text",text:e}],usage:w,finishReason:z,warnings:q,response:{id:E6(),timestamp:new Date,modelId:this.modelId},request:{body:G},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...P!==void 0&&{costUsd:P},...R!==void 0&&{durationMs:R},...A!==void 0&&{modelUsage:A},...j&&{truncated:!0},...B.length>0&&{thinkingTraces:B}}}}}async doStream(Z){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${Z.responseFormat?.type??"none"}`);let{messagesPrompt:G,warnings:X,streamingContentParts:Q,hasImageParts:Y}=zJ$(Z.prompt);this.logger.debug(`[claude-code] Converted ${Z.prompt.length} messages for streaming, hasImageParts: ${Y}`);let J=new AbortController,W;if(Z.abortSignal?.aborted)J.abort(Z.abortSignal.reason);else if(Z.abortSignal)W=()=>J.abort(Z.abortSignal?.reason),Z.abortSignal.addEventListener("abort",W,{once:!0});let K="",U=(P)=>{K+=P},F=this.getSanitizedSdkOptions(),H=this.getEffectiveResume(F),N=this.createQueryOptions(J,Z.responseFormat,U,F,H);if(N.includePartialMessages===void 0)N.includePartialMessages=!0;let O=this.generateAllWarnings(Z,G);if(X)X.forEach((P)=>{O.push({type:"other",message:P})});let B=this.settings.streamingInput??"auto",L=F?.canUseTool??this.settings.canUseTool,w=F?.permissionPromptToolName??this.settings.permissionPromptToolName,z=B==="always"||B==="auto"&&!!L;if(!z&&Y)O.push({type:"other",message:TJ$});return{stream:new ReadableStream({start:async(P)=>{let R=()=>{},A=new Promise((m1)=>{R=()=>m1(void 0)}),q=new Map,S=new Map,k=()=>{if(S.size===1)return S.keys().next().value??null;return null},C=[],u=(m1,V1)=>{if(!V1.inputClosed&&V1.inputStarted)P.enqueue({type:"tool-input-end",id:m1}),V1.inputClosed=!0},x=(m1,V1)=>{if(V1.callEmitted)return;u(m1,V1),P.enqueue({type:"tool-call",toolCallId:m1,toolName:V1.name,input:V1.lastSerializedInput??"",providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:V1.lastSerializedInput??"",parentToolCallId:V1.parentToolCallId??null}}}),V1.callEmitted=!0},y=()=>{for(let[m1,V1]of q)x(m1,V1);q.clear()},e=qJ$(),d="",p,Q1=0,G1=!1,H1=!1,m=new Map,K1=new Map,o=new Map,F1=!1,E1=new Map,L1;try{if(P.enqueue({type:"stream-start",warnings:O}),L&&w)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let m1=z?kJ$(G,A,H,Q,this.settings.onStreamStart):G;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${z}, session: ${H??"new"}`);let V1=AJ$({prompt:m1,options:N});this.settings.onQueryCreated?.(V1);for await(let I1 of V1){if(this.logger.debug(`[claude-code] Stream received message type: ${I1.type}`),I1.type==="stream_event"){let i1=I1.event;if(i1.type==="content_block_delta"&&i1.delta.type==="text_delta"&&"text"in i1.delta&&i1.delta.text){let $1=i1.delta.text;if(G1=!0,Z.responseFormat?.type==="json"){d+=$1,Q1+=$1.length;continue}if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:$1}),d+=$1,Q1+=$1.length}if(i1.type==="content_block_delta"&&i1.delta.type==="input_json_delta"&&"partial_json"in i1.delta&&i1.delta.partial_json){let $1=i1.delta.partial_json;G1=!0;let Y1="index"in i1?i1.index:-1;if(Z.responseFormat?.type==="json"){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:$1}),d+=$1,Q1+=$1.length,H1=!0;continue}let r=m.get(Y1);if(r){let t=(K1.get(r)??"")+$1;K1.set(r,t),P.enqueue({type:"tool-input-delta",id:r,delta:$1});continue}}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="tool_use"){let $1="index"in i1?i1.index:-1,Y1=i1.content_block,r=typeof Y1.id==="string"&&Y1.id.length>0?Y1.id:E6(),t=typeof Y1.name==="string"&&Y1.name.length>0?Y1.name:$.UNKNOWN_TOOL_NAME;if(G1=!0,p){let D1=p;P.enqueue({type:"text-end",id:D1}),p=void 0;for(let[W0,Z0]of o)if(Z0===D1){o.delete(W0);break}}m.set($1,r),K1.set(r,"");let x1=q.get(r);if(!x1){let D1=t==="Task"?null:k();x1={name:t,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:D1},q.set(r,x1)}if(!x1.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${t}, ID: ${r}, parent: ${x1.parentToolCallId}`),P.enqueue({type:"tool-input-start",id:r,toolName:t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:x1.parentToolCallId??null}}}),t==="Task")S.set(r,{startTime:Date.now()});x1.inputStarted=!0}continue}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="text"){let $1="index"in i1?i1.index:-1;G1=!0;let Y1=E6();o.set($1,Y1),p=Y1,this.logger.debug(`[claude-code] Text content block started - Index: ${$1}, ID: ${Y1}`),P.enqueue({type:"text-start",id:Y1}),F1=!0;continue}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="thinking"){let $1="index"in i1?i1.index:-1;if(G1=!0,p){let r=p;P.enqueue({type:"text-end",id:r}),p=void 0;for(let[t,x1]of o)if(x1===r){o.delete(t);break}}let Y1=E6();E1.set($1,Y1),L1=Y1,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${Y1}`),P.enqueue({type:"reasoning-start",id:Y1});continue}if(i1.type==="content_block_delta"&&i1.delta.type==="thinking_delta"&&"thinking"in i1.delta&&i1.delta.thinking){let $1="index"in i1?i1.index:-1,Y1=E1.get($1)??L1;if(G1=!0,Y1)P.enqueue({type:"reasoning-delta",id:Y1,delta:i1.delta.thinking});continue}if(i1.type==="content_block_stop"){let $1="index"in i1?i1.index:-1;G1=!0;let Y1=m.get($1);if(Y1){let x1=q.get(Y1);if(x1&&!x1.inputClosed){let D1=K1.get(Y1)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${$1}, Tool: ${x1.name}, ID: ${Y1}`),P.enqueue({type:"tool-input-end",id:Y1}),x1.inputClosed=!0;let W0=D1||x1.lastSerializedInput||"";if(x1.lastSerializedInput=W0,!x1.callEmitted)P.enqueue({type:"tool-call",toolCallId:Y1,toolName:x1.name,input:W0,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:W0,parentToolCallId:x1.parentToolCallId??null}}}),x1.callEmitted=!0}m.delete($1),K1.delete(Y1);continue}let r=o.get($1);if(r){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${$1}, ID: ${r}`),P.enqueue({type:"text-end",id:r}),o.delete($1),p===r)p=void 0;continue}let t=E1.get($1);if(t){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${t}`),P.enqueue({type:"reasoning-end",id:t}),E1.delete($1),L1===t)L1=void 0;continue}}continue}if(I1.type==="assistant"){if(!I1.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${I1.type}. This may indicate an SDK protocol violation.`);continue}let k1=I1.parent_tool_use_id,i1=I1.message.content,$1=this.extractToolUses(i1);if(p&&$1.length>0){let r=p;P.enqueue({type:"text-end",id:r}),p=void 0;for(let[t,x1]of o)if(x1===r){o.delete(t);break}}for(let r of $1){let t=r.id,x1=q.get(t);if(!x1){let W0=r.name==="Task"?null:k1??r.parentToolUseId??k();x1={name:r.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:W0},q.set(t,x1),this.logger.debug(`[claude-code] New tool use detected - Tool: ${r.name}, ID: ${t}, SDK parent: ${k1}, resolved parent: ${W0}`)}else if(!x1.parentToolCallId&&k1&&r.name!=="Task")x1.parentToolCallId=k1,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${r.name}, ID: ${t}, parent: ${k1}`);if(x1.name=r.name,!x1.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${r.name}, ID: ${t}`),P.enqueue({type:"tool-input-start",id:t,toolName:r.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:x1.parentToolCallId??null}}}),r.name==="Task")S.set(t,{startTime:Date.now()});x1.inputStarted=!0}let D1=this.serializeToolInput(r.input);if(D1){let W0="";if(x1.lastSerializedInput===void 0){if(D1.length<=$.MAX_DELTA_CALC_SIZE)W0=D1}else if(D1.length<=$.MAX_DELTA_CALC_SIZE&&x1.lastSerializedInput.length<=$.MAX_DELTA_CALC_SIZE&&D1.startsWith(x1.lastSerializedInput))W0=D1.slice(x1.lastSerializedInput.length);else if(D1!==x1.lastSerializedInput)W0="";if(W0)P.enqueue({type:"tool-input-delta",id:t,delta:W0});x1.lastSerializedInput=D1}}let Y1=i1.map((r)=>r.type==="text"?r.text:"").join("");if(Y1){if(G1){let r=Q1,t=Y1.length>r?Y1.slice(r):"";if(d=Y1,Z.responseFormat?.type!=="json"&&t){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:t})}Q1=Y1.length}else if(d+=Y1,Z.responseFormat?.type!=="json"){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:Y1})}}}else if(I1.type==="user"){if(!I1.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${I1.type}. This may indicate an SDK protocol violation.`);continue}if(p){let $1=p;P.enqueue({type:"text-end",id:$1}),p=void 0;for(let[Y1,r]of o)if(r===$1){o.delete(Y1);break}d="",Q1=0,this.logger.debug("[claude-code] Closed text part due to user message")}let k1=I1.parent_tool_use_id,i1=I1.message.content;for(let $1 of this.extractToolResults(i1)){let Y1=q.get($1.id),r=$1.name??Y1?.name??$.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${r}, ID: ${$1.id}`),!Y1){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${$1.id}`);let $0=r==="Task"?null:k1??k();if(Y1={name:r,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:$0},q.set($1.id,Y1),!Y1.inputStarted)P.enqueue({type:"tool-input-start",id:$1.id,toolName:r,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:Y1.parentToolCallId??null}}}),Y1.inputStarted=!0;if(!Y1.inputClosed)P.enqueue({type:"tool-input-end",id:$1.id}),Y1.inputClosed=!0}Y1.name=r;let t=this.normalizeToolResult($1.result),x1=typeof $1.result==="string"?$1.result:(()=>{try{return JSON.stringify($1.result)}catch{return String($1.result)}})(),D1=this.settings.maxToolResultSize,W0=VJ$(t,D1),Z0=VJ$(x1,D1),M1=Z0!==x1;if(x($1.id,Y1),r==="Task")S.delete($1.id);P.enqueue({type:"tool-result",toolCallId:$1.id,toolName:r,result:W0,isError:$1.isError,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:Z0,rawResultTruncated:M1,parentToolCallId:Y1.parentToolCallId??null}}})}for(let $1 of this.extractToolErrors(i1)){let Y1=q.get($1.id),r=$1.name??Y1?.name??$.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${r}, ID: ${$1.id}`),!Y1){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${$1.id}`);let x1=r==="Task"?null:k1??k();Y1={name:r,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:x1},q.set($1.id,Y1)}if(x($1.id,Y1),r==="Task")S.delete($1.id);let t=typeof $1.error==="string"?$1.error:typeof $1.error==="object"&&$1.error!==null?(()=>{try{return JSON.stringify($1.error)}catch{return String($1.error)}})():String($1.error);P.enqueue({type:"tool-error",toolCallId:$1.id,toolName:r,error:t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:t,parentToolCallId:Y1.parentToolCallId??null}}})}}else if(I1.type==="result"){if(R(),"is_error"in I1&&I1.is_error===!0){let t="result"in I1&&typeof I1.result==="string"?I1.result:"Claude Code CLI returned an error";throw Object.assign(Error(t),{exitCode:1})}if(I1.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if(this.logger.info(`[claude-code] Stream completed - Session: ${I1.session_id}, Cost: $${I1.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${I1.duration_ms??"N/A"}ms`),"usage"in I1)e=MJ$(I1.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${e.inputTokens.total}, Output: ${e.outputTokens.total}`);let k1="stop_reason"in I1?I1.stop_reason:void 0,i1=jJ$(I1.subtype,k1);this.logger.debug(`[claude-code] Stream finish reason: ${i1.unified}`),this.setSessionId(I1.session_id);let $1="structured_output"in I1?I1.structured_output:void 0;if(H1&&Z.responseFormat?.type==="json"&&G1){if(p)P.enqueue({type:"text-end",id:p})}else if($1!==void 0){let t=E6(),x1=JSON.stringify($1);P.enqueue({type:"text-start",id:t}),P.enqueue({type:"text-delta",id:t,delta:x1}),P.enqueue({type:"text-end",id:t})}else if(p)P.enqueue({type:"text-end",id:p});else if(d&&!F1){let t=E6();P.enqueue({type:"text-start",id:t}),P.enqueue({type:"text-delta",id:t,delta:d}),P.enqueue({type:"text-end",id:t})}y();let r=this.serializeWarningsForMetadata(C);P.enqueue({type:"finish",finishReason:i1,usage:e,providerMetadata:{"claude-code":{sessionId:I1.session_id,...I1.total_cost_usd!==void 0&&{costUsd:I1.total_cost_usd},...I1.duration_ms!==void 0&&{durationMs:I1.duration_ms},...I1.modelUsage!==void 0&&{modelUsage:I1.modelUsage},...C.length>0&&{warnings:r}}}}),P.close();return}else if(I1.type==="system"&&I1.subtype==="init")this.logMcpConnectionIssues(I1.mcp_servers),this.setSessionId(I1.session_id),this.logger.info(`[claude-code] Stream session initialized: ${I1.session_id}`),P.enqueue({type:"response-metadata",id:I1.session_id,timestamp:new Date,modelId:this.modelId})}y(),this.logger.debug("[claude-code] Stream finalized, closing stream"),P.close()}catch(m1){if(R(),this.logger.debug(`[claude-code] Error during doStream: ${m1 instanceof Error?m1.message:String(m1)}`),IJ$(m1,d)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${d.length} characters of buffered text`);let I1={type:"other",message:RJ$};if(C.push(I1),p)P.enqueue({type:"text-end",id:p});else if(d&&!F1){let i1=E6();P.enqueue({type:"text-start",id:i1}),P.enqueue({type:"text-delta",id:i1,delta:d}),P.enqueue({type:"text-end",id:i1})}y();let k1=this.serializeWarningsForMetadata(C);P.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:e,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...C.length>0&&{warnings:k1}}}}),P.close();return}y();let V1;if(Zi1(m1))V1=Z.abortSignal?.aborted?Z.abortSignal.reason:m1;else V1=this.handleClaudeCodeError(m1,G,K);P.enqueue({type:"error",error:V1}),P.close()}finally{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}},cancel:()=>{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}}),request:{body:G}}}serializeWarningsForMetadata(Z){return Z.map((X)=>{let Q={type:X.type};if("message"in X){let Y=X.message;if(Y!==void 0)Q.message=String(Y)}if(X.type==="unsupported"||X.type==="compatibility"){let Y=X.feature;if(Y!==void 0)Q.feature=String(Y);if("details"in X){let J=X.details;if(J!==void 0)Q.details=String(J)}}return Q})}},L49;var _J$=D(()=>{mW();mW();$i1();mW();r44=h1.object({debug:h1.any().refine(($)=>typeof $==="function",{message:"debug must be a function"}),info:h1.any().refine(($)=>typeof $==="function",{message:"info must be a function"}),warn:h1.any().refine(($)=>typeof $==="function",{message:"warn must be a function"}),error:h1.any().refine(($)=>typeof $==="function",{message:"error must be a function"})}),a44=h1.object({pathToClaudeCodeExecutable:h1.string().optional(),customSystemPrompt:h1.string().optional(),appendSystemPrompt:h1.string().optional(),systemPrompt:h1.union([h1.string(),h1.object({type:h1.literal("preset"),preset:h1.literal("claude_code"),append:h1.string().optional()})]).optional(),maxTurns:h1.number().int().min(1).max(100).optional(),maxThinkingTokens:h1.number().int().positive().max(1e5).optional(),thinking:h1.union([h1.object({type:h1.literal("adaptive")}).strict(),h1.object({type:h1.literal("enabled"),budgetTokens:h1.number().int().positive().optional()}).strict(),h1.object({type:h1.literal("disabled")}).strict()]).optional(),effort:h1.enum(["low","medium","high","max"]).optional(),promptSuggestions:h1.boolean().optional(),cwd:h1.string().refine(($)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!$||o44($)},{message:"Working directory must exist"}).optional(),executable:h1.enum(["bun","deno","node"]).optional(),executableArgs:h1.array(h1.string()).optional(),permissionMode:h1.enum(["default","acceptEdits","bypassPermissions","plan","delegate","dontAsk"]).optional(),permissionPromptToolName:h1.string().optional(),continue:h1.boolean().optional(),resume:h1.string().optional(),sessionId:h1.string().optional(),allowedTools:h1.array(h1.string()).optional(),disallowedTools:h1.array(h1.string()).optional(),betas:h1.array(h1.string()).optional(),allowDangerouslySkipPermissions:h1.boolean().optional(),enableFileCheckpointing:h1.boolean().optional(),maxBudgetUsd:h1.number().min(0).optional(),plugins:h1.array(h1.object({type:h1.string(),path:h1.string()}).passthrough()).optional(),resumeSessionAt:h1.string().optional(),sandbox:h1.any().refine(($)=>$===void 0||typeof $==="object",{message:"sandbox must be an object"}).optional(),tools:h1.union([h1.array(h1.string()),h1.object({type:h1.literal("preset"),preset:h1.literal("claude_code")})]).optional(),settingSources:h1.array(h1.enum(["user","project","local"])).optional(),streamingInput:h1.enum(["auto","always","off"]).optional(),canUseTool:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"canUseTool must be a function"}).optional(),hooks:h1.record(h1.string(),h1.array(h1.object({matcher:h1.string().optional(),hooks:h1.array(h1.any()).nonempty()}))).optional(),mcpServers:h1.record(h1.string(),h1.union([h1.object({type:h1.literal("stdio").optional(),command:h1.string(),args:h1.array(h1.string()).optional(),env:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("sse"),url:h1.string(),headers:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("http"),url:h1.string(),headers:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("sdk"),name:h1.string(),instance:h1.any()})])).optional(),verbose:h1.boolean().optional(),debug:h1.boolean().optional(),debugFile:h1.string().optional(),logger:h1.union([h1.literal(!1),r44]).optional(),env:h1.record(h1.string(),h1.string().optional()).optional(),additionalDirectories:h1.array(h1.string()).optional(),agents:h1.record(h1.string(),h1.object({description:h1.string(),tools:h1.array(h1.string()).optional(),disallowedTools:h1.array(h1.string()).optional(),prompt:h1.string(),model:h1.enum(["sonnet","opus","haiku","inherit"]).optional(),mcpServers:h1.array(h1.union([h1.string(),h1.record(h1.string(),h1.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:h1.string().optional()}).passthrough()).optional(),includePartialMessages:h1.boolean().optional(),fallbackModel:h1.string().optional(),forkSession:h1.boolean().optional(),stderr:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:h1.boolean().optional(),extraArgs:h1.record(h1.string(),h1.union([h1.string(),h1.null()])).optional(),persistSession:h1.boolean().optional(),spawnClaudeCodeProcess:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:h1.record(h1.string(),h1.any()).optional(),maxToolResultSize:h1.number().int().min(100).max(1e6).optional(),onQueryCreated:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"onStreamStart must be a function"}).optional()}).strict();Z64={debug:($)=>console.debug(`[DEBUG] ${$}`),info:($)=>console.info(`[INFO] ${$}`),warn:($)=>console.warn(`[WARN] ${$}`),error:($)=>console.error(`[ERROR] ${$}`)},G64={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};Y64=process.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],J64=["CLAUDE_CONFIG_DIR"];K64=new Set(["model","abortController","prompt","outputFormat"]);F64={opus:"opus",sonnet:"sonnet",haiku:"haiku"};L49=Qi1()});function Yi1($,Z){let G=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],X={mcpServers:Z?.mcpServers,cwd:Z?.cwd??process.cwd()};if(Z?.isPlanMode||Z?.toolApprovalLevel==="readonly")X.permissionMode="bypassPermissions",X.disallowedTools=[...G,"Write","Edit","Bash","NotebookEdit"];else X.permissionMode="bypassPermissions",X.disallowedTools=[...G];if(Z?.resume)X.resume=Z.resume;return Qi1({defaultSettings:X})($)}function Ji1($){return O64[$]??$}var O64;var bJ$=D(()=>{_J$();O64={"claude-code:opus":"opus","claude-code:sonnet":"sonnet","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function pH1($){return $==="default"?void 0:$}var vJ$="default",fJ$="/repo";function tH1($){return $E($,{ignoreIncompleteToolCalls:!0})}function oH1($){for(let Z=$.length-1;Z>=0;Z--){let G=$[Z];if(!G||G.role!=="user")continue;if(typeof G.content==="string")return G.content;if(Array.isArray(G.content))return G.content.filter((Q)=>typeof Q==="object"&&Q!==null&&Q.type==="text").map((Q)=>Q.text).join(`
|
|
2266
|
+
`);try{return JSON.parse(X)}catch{return X}}return Z}generateAllWarnings(Z,G){let X=[],Q=[];if(Z.temperature!==void 0)Q.push("temperature");if(Z.topP!==void 0)Q.push("topP");if(Z.topK!==void 0)Q.push("topK");if(Z.presencePenalty!==void 0)Q.push("presencePenalty");if(Z.frequencyPenalty!==void 0)Q.push("frequencyPenalty");if(Z.stopSequences!==void 0&&Z.stopSequences.length>0)Q.push("stopSequences");if(Z.seed!==void 0)Q.push("seed");if(Q.length>0)for(let J of Q)X.push({type:"unsupported",feature:J,details:`Claude Code SDK does not support the ${J} parameter. It will be ignored.`});if(this.modelValidationWarning)X.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((J)=>{X.push({type:"other",message:J})}),Z.responseFormat?.type==="json"&&!Z.responseFormat.schema)X.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema for the Claude Code provider. The JSON responseFormat is ignored and the call is treated as plain text."});let Y=e44(G);if(Y)X.push({type:"other",message:Y});return X}createQueryOptions(Z,G,X,Q,Y){let J={model:this.getModel(),abortController:Z,resume:Y??this.settings.resume??this.sessionId,pathToClaudeCodeExecutable:this.settings.pathToClaudeCodeExecutable,maxTurns:this.settings.maxTurns,maxThinkingTokens:this.settings.maxThinkingTokens,thinking:this.settings.thinking,effort:this.settings.effort,promptSuggestions:this.settings.promptSuggestions,cwd:this.settings.cwd,executable:this.settings.executable,executableArgs:this.settings.executableArgs,permissionMode:this.settings.permissionMode,permissionPromptToolName:this.settings.permissionPromptToolName,continue:this.settings.continue,allowedTools:this.settings.allowedTools,disallowedTools:this.settings.disallowedTools,betas:this.settings.betas,allowDangerouslySkipPermissions:this.settings.allowDangerouslySkipPermissions,enableFileCheckpointing:this.settings.enableFileCheckpointing,maxBudgetUsd:this.settings.maxBudgetUsd,plugins:this.settings.plugins,resumeSessionAt:this.settings.resumeSessionAt,sandbox:this.settings.sandbox,tools:this.settings.tools,mcpServers:this.settings.mcpServers,canUseTool:this.settings.canUseTool};if(this.settings.systemPrompt!==void 0)J.systemPrompt=this.settings.systemPrompt;else if(this.settings.customSystemPrompt!==void 0)this.logger.warn("[claude-code] 'customSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt' instead (string or { type: 'preset', preset: 'claude_code', append? })."),J.systemPrompt=this.settings.customSystemPrompt;else if(this.settings.appendSystemPrompt!==void 0)this.logger.warn("[claude-code] 'appendSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt: { type: 'preset', preset: 'claude_code', append: <text> }' instead."),J.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)J.settingSources=this.settings.settingSources;if(this.settings.additionalDirectories!==void 0)J.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)J.agents=this.settings.agents;if(this.settings.includePartialMessages!==void 0)J.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)J.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)J.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)J.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)J.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)J.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)J.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)J.hooks=this.settings.hooks;if(this.settings.sessionId!==void 0)J.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)J.debug=this.settings.debug;if(this.settings.debugFile!==void 0)J.debugFile=this.settings.debugFile;let W=Q?Q:void 0,K=W&&typeof W.env==="object"&&W.env!==null?W.env:void 0,U=W&&typeof W.stderr==="function"?W.stderr:void 0;if(W){let H={...W};delete H.env,delete H.stderr,Object.assign(J,H)}let F=U??this.settings.stderr;if(X||F)J.stderr=(H)=>{if(X)X(H);if(F)F(H)};if(this.settings.env!==void 0||K!==void 0){let H=W64();J.env={...H,...this.settings.env,...K}}if(G?.type==="json"&&G.schema)J.outputFormat={type:"json_schema",schema:G.schema};return J}handleClaudeCodeError(Z,G,X){if(Zi1(Z))throw Z;let Q=(B)=>{return typeof B==="object"&&B!==null&&"message"in B},Y=(B)=>{return typeof B==="object"&&B!==null},J=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key"],W=Q(Z)&&Z.message?Z.message.toLowerCase():"",K=Y(Z)&&typeof Z.exitCode==="number"?Z.exitCode:void 0;if(J.some((B)=>W.includes(B))||K===401)return p44({message:Q(Z)&&Z.message?Z.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let F=Y(Z)&&typeof Z.code==="string"?Z.code:"";if(F==="ETIMEDOUT"||W.includes("timeout"))return t44({message:Q(Z)&&Z.message?Z.message:"Request timed out",promptExcerpt:G.substring(0,200)});let H=F==="ENOENT"||F==="ECONNREFUSED"||F==="ETIMEDOUT"||F==="ECONNRESET",O=(Y(Z)&&typeof Z.stderr==="string"?Z.stderr:void 0)||X||void 0;return n44({message:Q(Z)&&Z.message?Z.message:"Claude Code SDK error",code:F||void 0,exitCode:K,stderr:O,promptExcerpt:G.substring(0,200),isRetryable:H})}setSessionId(Z){this.sessionId=Z;let G=$64(Z);if(G)this.logger.warn(`Claude Code Session: ${G}`)}logMcpConnectionIssues(Z){if(!Array.isArray(Z)||Z.length===0)return;let G=Z.filter((Q)=>{let Y=typeof Q.status==="string"?Q.status.toLowerCase():"";return Y==="failed"||Y==="needs-auth"});if(G.length===0)return;let X=G.map((Q)=>{let Y=typeof Q.name==="string"&&Q.name.trim().length>0?Q.name:"<unknown>",J=typeof Q.status==="string"&&Q.status.trim().length>0?Q.status:"unknown",W=typeof Q.error==="string"&&Q.error.trim().length>0?` (${Q.error})`:"";return`${Y}:${J}${W}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${X}`)}async doGenerate(Z){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${Z.responseFormat?.type??"none"}`);let{messagesPrompt:G,warnings:X,streamingContentParts:Q,hasImageParts:Y}=zJ$(Z.prompt);this.logger.debug(`[claude-code] Converted ${Z.prompt.length} messages, hasImageParts: ${Y}`);let J=new AbortController,W;if(Z.abortSignal?.aborted)J.abort(Z.abortSignal.reason);else if(Z.abortSignal)W=()=>J.abort(Z.abortSignal?.reason),Z.abortSignal.addEventListener("abort",W,{once:!0});let K="",U=(d)=>{K+=d},F=this.getSanitizedSdkOptions(),H=this.getEffectiveResume(F),N=this.createQueryOptions(J,Z.responseFormat,U,F,H),O="",B=[],L,w=qJ$(),z={unified:"stop",raw:void 0},j=!1,P,R,A,q=this.generateAllWarnings(Z,G);if(X)X.forEach((d)=>{q.push({type:"other",message:d})});let S=this.settings.streamingInput??"auto",k=F?.canUseTool??this.settings.canUseTool,C=F?.permissionPromptToolName??this.settings.permissionPromptToolName,u=S==="always"||S==="auto"&&!!k;if(!u&&Y)q.push({type:"other",message:TJ$});let x=()=>{},y=new Promise((d)=>{x=()=>d(void 0)});try{if(k&&C)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let d=u?kJ$(G,y,H,Q,this.settings.onStreamStart):G;this.logger.debug(`[claude-code] Executing query with streamingInput: ${u}, session: ${H??"new"}`);let p=AJ$({prompt:d,options:N});this.settings.onQueryCreated?.(p);for await(let Q1 of p)if(this.logger.debug(`[claude-code] Received message type: ${Q1.type}`),Q1.type==="assistant"){let{text:G1,thinking:H1}=this.extractTextAndThinking(Q1.message.content);O+=G1,B.push(...H1)}else if(Q1.type==="result"){if(x(),this.setSessionId(Q1.session_id),P=Q1.total_cost_usd,R=Q1.duration_ms,A=Q1.modelUsage,"is_error"in Q1&&Q1.is_error===!0){let H1="result"in Q1&&typeof Q1.result==="string"?Q1.result:"Claude Code CLI returned an error";throw Object.assign(Error(H1),{exitCode:1})}if(Q1.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if("structured_output"in Q1&&Q1.structured_output!==void 0)L=Q1.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${Q1.session_id}, Cost: $${P?.toFixed(4)??"N/A"}, Duration: ${R??"N/A"}ms`),"usage"in Q1)w=MJ$(Q1.usage),this.logger.debug(`[claude-code] Token usage - Input: ${w.inputTokens.total}, Output: ${w.outputTokens.total}`);let G1="stop_reason"in Q1?Q1.stop_reason:void 0;z=jJ$(Q1.subtype,G1),this.logger.debug(`[claude-code] Finish reason: ${z.unified}`)}else if(Q1.type==="system"&&Q1.subtype==="init")this.logMcpConnectionIssues(Q1.mcp_servers),this.setSessionId(Q1.session_id),this.logger.info(`[claude-code] Session initialized: ${Q1.session_id}`)}catch(d){if(x(),this.logger.debug(`[claude-code] Error during doGenerate: ${d instanceof Error?d.message:String(d)}`),Zi1(d))throw this.logger.debug("[claude-code] Request aborted by user"),Z.abortSignal?.aborted?Z.abortSignal.reason:d;if(IJ$(d,O))this.logger.warn(`[claude-code] Detected truncated response, returning ${O.length} characters of buffered text`),j=!0,z={unified:"length",raw:"truncation"},q.push({type:"other",message:RJ$});else throw this.handleClaudeCodeError(d,G,K)}finally{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}let e=L!==void 0?JSON.stringify(L):O;return{content:[...B.map((d)=>({type:"reasoning",text:d})),{type:"text",text:e}],usage:w,finishReason:z,warnings:q,response:{id:E6(),timestamp:new Date,modelId:this.modelId},request:{body:G},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...P!==void 0&&{costUsd:P},...R!==void 0&&{durationMs:R},...A!==void 0&&{modelUsage:A},...j&&{truncated:!0},...B.length>0&&{thinkingTraces:B}}}}}async doStream(Z){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${Z.responseFormat?.type??"none"}`);let{messagesPrompt:G,warnings:X,streamingContentParts:Q,hasImageParts:Y}=zJ$(Z.prompt);this.logger.debug(`[claude-code] Converted ${Z.prompt.length} messages for streaming, hasImageParts: ${Y}`);let J=new AbortController,W;if(Z.abortSignal?.aborted)J.abort(Z.abortSignal.reason);else if(Z.abortSignal)W=()=>J.abort(Z.abortSignal?.reason),Z.abortSignal.addEventListener("abort",W,{once:!0});let K="",U=(P)=>{K+=P},F=this.getSanitizedSdkOptions(),H=this.getEffectiveResume(F),N=this.createQueryOptions(J,Z.responseFormat,U,F,H);if(N.includePartialMessages===void 0)N.includePartialMessages=!0;let O=this.generateAllWarnings(Z,G);if(X)X.forEach((P)=>{O.push({type:"other",message:P})});let B=this.settings.streamingInput??"auto",L=F?.canUseTool??this.settings.canUseTool,w=F?.permissionPromptToolName??this.settings.permissionPromptToolName,z=B==="always"||B==="auto"&&!!L;if(!z&&Y)O.push({type:"other",message:TJ$});return{stream:new ReadableStream({start:async(P)=>{let R=()=>{},A=new Promise((m1)=>{R=()=>m1(void 0)}),q=new Map,S=new Map,k=()=>{if(S.size===1)return S.keys().next().value??null;return null},C=[],u=(m1,V1)=>{if(!V1.inputClosed&&V1.inputStarted)P.enqueue({type:"tool-input-end",id:m1}),V1.inputClosed=!0},x=(m1,V1)=>{if(V1.callEmitted)return;u(m1,V1),P.enqueue({type:"tool-call",toolCallId:m1,toolName:V1.name,input:V1.lastSerializedInput??"",providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:V1.lastSerializedInput??"",parentToolCallId:V1.parentToolCallId??null}}}),V1.callEmitted=!0},y=()=>{for(let[m1,V1]of q)x(m1,V1);q.clear()},e=qJ$(),d="",p,Q1=0,G1=!1,H1=!1,m=new Map,K1=new Map,o=new Map,F1=!1,E1=new Map,L1;try{if(P.enqueue({type:"stream-start",warnings:O}),L&&w)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let m1=z?kJ$(G,A,H,Q,this.settings.onStreamStart):G;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${z}, session: ${H??"new"}`);let V1=AJ$({prompt:m1,options:N});this.settings.onQueryCreated?.(V1);for await(let I1 of V1){if(this.logger.debug(`[claude-code] Stream received message type: ${I1.type}`),I1.type==="stream_event"){let i1=I1.event;if(i1.type==="content_block_delta"&&i1.delta.type==="text_delta"&&"text"in i1.delta&&i1.delta.text){let $1=i1.delta.text;if(G1=!0,Z.responseFormat?.type==="json"){d+=$1,Q1+=$1.length;continue}if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:$1}),d+=$1,Q1+=$1.length}if(i1.type==="content_block_delta"&&i1.delta.type==="input_json_delta"&&"partial_json"in i1.delta&&i1.delta.partial_json){let $1=i1.delta.partial_json;G1=!0;let Y1="index"in i1?i1.index:-1;if(Z.responseFormat?.type==="json"){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:$1}),d+=$1,Q1+=$1.length,H1=!0;continue}let r=m.get(Y1);if(r){let t=(K1.get(r)??"")+$1;K1.set(r,t),P.enqueue({type:"tool-input-delta",id:r,delta:$1});continue}}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="tool_use"){let $1="index"in i1?i1.index:-1,Y1=i1.content_block,r=typeof Y1.id==="string"&&Y1.id.length>0?Y1.id:E6(),t=typeof Y1.name==="string"&&Y1.name.length>0?Y1.name:$.UNKNOWN_TOOL_NAME;if(G1=!0,p){let D1=p;P.enqueue({type:"text-end",id:D1}),p=void 0;for(let[W0,Z0]of o)if(Z0===D1){o.delete(W0);break}}m.set($1,r),K1.set(r,"");let x1=q.get(r);if(!x1){let D1=t==="Task"?null:k();x1={name:t,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:D1},q.set(r,x1)}if(!x1.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${t}, ID: ${r}, parent: ${x1.parentToolCallId}`),P.enqueue({type:"tool-input-start",id:r,toolName:t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:x1.parentToolCallId??null}}}),t==="Task")S.set(r,{startTime:Date.now()});x1.inputStarted=!0}continue}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="text"){let $1="index"in i1?i1.index:-1;G1=!0;let Y1=E6();o.set($1,Y1),p=Y1,this.logger.debug(`[claude-code] Text content block started - Index: ${$1}, ID: ${Y1}`),P.enqueue({type:"text-start",id:Y1}),F1=!0;continue}if(i1.type==="content_block_start"&&"content_block"in i1&&i1.content_block?.type==="thinking"){let $1="index"in i1?i1.index:-1;if(G1=!0,p){let r=p;P.enqueue({type:"text-end",id:r}),p=void 0;for(let[t,x1]of o)if(x1===r){o.delete(t);break}}let Y1=E6();E1.set($1,Y1),L1=Y1,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${Y1}`),P.enqueue({type:"reasoning-start",id:Y1});continue}if(i1.type==="content_block_delta"&&i1.delta.type==="thinking_delta"&&"thinking"in i1.delta&&i1.delta.thinking){let $1="index"in i1?i1.index:-1,Y1=E1.get($1)??L1;if(G1=!0,Y1)P.enqueue({type:"reasoning-delta",id:Y1,delta:i1.delta.thinking});continue}if(i1.type==="content_block_stop"){let $1="index"in i1?i1.index:-1;G1=!0;let Y1=m.get($1);if(Y1){let x1=q.get(Y1);if(x1&&!x1.inputClosed){let D1=K1.get(Y1)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${$1}, Tool: ${x1.name}, ID: ${Y1}`),P.enqueue({type:"tool-input-end",id:Y1}),x1.inputClosed=!0;let W0=D1||x1.lastSerializedInput||"";if(x1.lastSerializedInput=W0,!x1.callEmitted)P.enqueue({type:"tool-call",toolCallId:Y1,toolName:x1.name,input:W0,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:W0,parentToolCallId:x1.parentToolCallId??null}}}),x1.callEmitted=!0}m.delete($1),K1.delete(Y1);continue}let r=o.get($1);if(r){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${$1}, ID: ${r}`),P.enqueue({type:"text-end",id:r}),o.delete($1),p===r)p=void 0;continue}let t=E1.get($1);if(t){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${t}`),P.enqueue({type:"reasoning-end",id:t}),E1.delete($1),L1===t)L1=void 0;continue}}continue}if(I1.type==="assistant"){if(!I1.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${I1.type}. This may indicate an SDK protocol violation.`);continue}let k1=I1.parent_tool_use_id,i1=I1.message.content,$1=this.extractToolUses(i1);if(p&&$1.length>0){let r=p;P.enqueue({type:"text-end",id:r}),p=void 0;for(let[t,x1]of o)if(x1===r){o.delete(t);break}}for(let r of $1){let t=r.id,x1=q.get(t);if(!x1){let W0=r.name==="Task"?null:k1??r.parentToolUseId??k();x1={name:r.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:W0},q.set(t,x1),this.logger.debug(`[claude-code] New tool use detected - Tool: ${r.name}, ID: ${t}, SDK parent: ${k1}, resolved parent: ${W0}`)}else if(!x1.parentToolCallId&&k1&&r.name!=="Task")x1.parentToolCallId=k1,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${r.name}, ID: ${t}, parent: ${k1}`);if(x1.name=r.name,!x1.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${r.name}, ID: ${t}`),P.enqueue({type:"tool-input-start",id:t,toolName:r.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:x1.parentToolCallId??null}}}),r.name==="Task")S.set(t,{startTime:Date.now()});x1.inputStarted=!0}let D1=this.serializeToolInput(r.input);if(D1){let W0="";if(x1.lastSerializedInput===void 0){if(D1.length<=$.MAX_DELTA_CALC_SIZE)W0=D1}else if(D1.length<=$.MAX_DELTA_CALC_SIZE&&x1.lastSerializedInput.length<=$.MAX_DELTA_CALC_SIZE&&D1.startsWith(x1.lastSerializedInput))W0=D1.slice(x1.lastSerializedInput.length);else if(D1!==x1.lastSerializedInput)W0="";if(W0)P.enqueue({type:"tool-input-delta",id:t,delta:W0});x1.lastSerializedInput=D1}}let Y1=i1.map((r)=>r.type==="text"?r.text:"").join("");if(Y1){if(G1){let r=Q1,t=Y1.length>r?Y1.slice(r):"";if(d=Y1,Z.responseFormat?.type!=="json"&&t){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:t})}Q1=Y1.length}else if(d+=Y1,Z.responseFormat?.type!=="json"){if(!p)p=E6(),P.enqueue({type:"text-start",id:p});P.enqueue({type:"text-delta",id:p,delta:Y1})}}}else if(I1.type==="user"){if(!I1.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${I1.type}. This may indicate an SDK protocol violation.`);continue}if(p){let $1=p;P.enqueue({type:"text-end",id:$1}),p=void 0;for(let[Y1,r]of o)if(r===$1){o.delete(Y1);break}d="",Q1=0,this.logger.debug("[claude-code] Closed text part due to user message")}let k1=I1.parent_tool_use_id,i1=I1.message.content;for(let $1 of this.extractToolResults(i1)){let Y1=q.get($1.id),r=$1.name??Y1?.name??$.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${r}, ID: ${$1.id}`),!Y1){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${$1.id}`);let $0=r==="Task"?null:k1??k();if(Y1={name:r,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:$0},q.set($1.id,Y1),!Y1.inputStarted)P.enqueue({type:"tool-input-start",id:$1.id,toolName:r,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:Y1.parentToolCallId??null}}}),Y1.inputStarted=!0;if(!Y1.inputClosed)P.enqueue({type:"tool-input-end",id:$1.id}),Y1.inputClosed=!0}Y1.name=r;let t=this.normalizeToolResult($1.result),x1=typeof $1.result==="string"?$1.result:(()=>{try{return JSON.stringify($1.result)}catch{return String($1.result)}})(),D1=this.settings.maxToolResultSize,W0=VJ$(t,D1),Z0=VJ$(x1,D1),M1=Z0!==x1;if(x($1.id,Y1),r==="Task")S.delete($1.id);P.enqueue({type:"tool-result",toolCallId:$1.id,toolName:r,result:W0,isError:$1.isError,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:Z0,rawResultTruncated:M1,parentToolCallId:Y1.parentToolCallId??null}}})}for(let $1 of this.extractToolErrors(i1)){let Y1=q.get($1.id),r=$1.name??Y1?.name??$.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${r}, ID: ${$1.id}`),!Y1){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${$1.id}`);let x1=r==="Task"?null:k1??k();Y1={name:r,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:x1},q.set($1.id,Y1)}if(x($1.id,Y1),r==="Task")S.delete($1.id);let t=typeof $1.error==="string"?$1.error:typeof $1.error==="object"&&$1.error!==null?(()=>{try{return JSON.stringify($1.error)}catch{return String($1.error)}})():String($1.error);P.enqueue({type:"tool-error",toolCallId:$1.id,toolName:r,error:t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:t,parentToolCallId:Y1.parentToolCallId??null}}})}}else if(I1.type==="result"){if(R(),"is_error"in I1&&I1.is_error===!0){let t="result"in I1&&typeof I1.result==="string"?I1.result:"Claude Code CLI returned an error";throw Object.assign(Error(t),{exitCode:1})}if(I1.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if(this.logger.info(`[claude-code] Stream completed - Session: ${I1.session_id}, Cost: $${I1.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${I1.duration_ms??"N/A"}ms`),"usage"in I1)e=MJ$(I1.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${e.inputTokens.total}, Output: ${e.outputTokens.total}`);let k1="stop_reason"in I1?I1.stop_reason:void 0,i1=jJ$(I1.subtype,k1);this.logger.debug(`[claude-code] Stream finish reason: ${i1.unified}`),this.setSessionId(I1.session_id);let $1="structured_output"in I1?I1.structured_output:void 0;if(H1&&Z.responseFormat?.type==="json"&&G1){if(p)P.enqueue({type:"text-end",id:p})}else if($1!==void 0){let t=E6(),x1=JSON.stringify($1);P.enqueue({type:"text-start",id:t}),P.enqueue({type:"text-delta",id:t,delta:x1}),P.enqueue({type:"text-end",id:t})}else if(p)P.enqueue({type:"text-end",id:p});else if(d&&!F1){let t=E6();P.enqueue({type:"text-start",id:t}),P.enqueue({type:"text-delta",id:t,delta:d}),P.enqueue({type:"text-end",id:t})}y();let r=this.serializeWarningsForMetadata(C);P.enqueue({type:"finish",finishReason:i1,usage:e,providerMetadata:{"claude-code":{sessionId:I1.session_id,...I1.total_cost_usd!==void 0&&{costUsd:I1.total_cost_usd},...I1.duration_ms!==void 0&&{durationMs:I1.duration_ms},...I1.modelUsage!==void 0&&{modelUsage:I1.modelUsage},...C.length>0&&{warnings:r}}}}),P.close();return}else if(I1.type==="system"&&I1.subtype==="init")this.logMcpConnectionIssues(I1.mcp_servers),this.setSessionId(I1.session_id),this.logger.info(`[claude-code] Stream session initialized: ${I1.session_id}`),P.enqueue({type:"response-metadata",id:I1.session_id,timestamp:new Date,modelId:this.modelId})}y(),this.logger.debug("[claude-code] Stream finalized, closing stream"),P.close()}catch(m1){if(R(),this.logger.debug(`[claude-code] Error during doStream: ${m1 instanceof Error?m1.message:String(m1)}`),IJ$(m1,d)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${d.length} characters of buffered text`);let I1={type:"other",message:RJ$};if(C.push(I1),p)P.enqueue({type:"text-end",id:p});else if(d&&!F1){let i1=E6();P.enqueue({type:"text-start",id:i1}),P.enqueue({type:"text-delta",id:i1,delta:d}),P.enqueue({type:"text-end",id:i1})}y();let k1=this.serializeWarningsForMetadata(C);P.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:e,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...C.length>0&&{warnings:k1}}}}),P.close();return}y();let V1;if(Zi1(m1))V1=Z.abortSignal?.aborted?Z.abortSignal.reason:m1;else V1=this.handleClaudeCodeError(m1,G,K);P.enqueue({type:"error",error:V1}),P.close()}finally{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}},cancel:()=>{if(Z.abortSignal&&W)Z.abortSignal.removeEventListener("abort",W)}}),request:{body:G}}}serializeWarningsForMetadata(Z){return Z.map((X)=>{let Q={type:X.type};if("message"in X){let Y=X.message;if(Y!==void 0)Q.message=String(Y)}if(X.type==="unsupported"||X.type==="compatibility"){let Y=X.feature;if(Y!==void 0)Q.feature=String(Y);if("details"in X){let J=X.details;if(J!==void 0)Q.details=String(J)}}return Q})}},L49;var _J$=D(()=>{mW();mW();$i1();mW();r44=h1.object({debug:h1.any().refine(($)=>typeof $==="function",{message:"debug must be a function"}),info:h1.any().refine(($)=>typeof $==="function",{message:"info must be a function"}),warn:h1.any().refine(($)=>typeof $==="function",{message:"warn must be a function"}),error:h1.any().refine(($)=>typeof $==="function",{message:"error must be a function"})}),a44=h1.object({pathToClaudeCodeExecutable:h1.string().optional(),customSystemPrompt:h1.string().optional(),appendSystemPrompt:h1.string().optional(),systemPrompt:h1.union([h1.string(),h1.object({type:h1.literal("preset"),preset:h1.literal("claude_code"),append:h1.string().optional()})]).optional(),maxTurns:h1.number().int().min(1).max(100).optional(),maxThinkingTokens:h1.number().int().positive().max(1e5).optional(),thinking:h1.union([h1.object({type:h1.literal("adaptive")}).strict(),h1.object({type:h1.literal("enabled"),budgetTokens:h1.number().int().positive().optional()}).strict(),h1.object({type:h1.literal("disabled")}).strict()]).optional(),effort:h1.enum(["low","medium","high","max"]).optional(),promptSuggestions:h1.boolean().optional(),cwd:h1.string().refine(($)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!$||o44($)},{message:"Working directory must exist"}).optional(),executable:h1.enum(["bun","deno","node"]).optional(),executableArgs:h1.array(h1.string()).optional(),permissionMode:h1.enum(["default","acceptEdits","bypassPermissions","plan","delegate","dontAsk"]).optional(),permissionPromptToolName:h1.string().optional(),continue:h1.boolean().optional(),resume:h1.string().optional(),sessionId:h1.string().optional(),allowedTools:h1.array(h1.string()).optional(),disallowedTools:h1.array(h1.string()).optional(),betas:h1.array(h1.string()).optional(),allowDangerouslySkipPermissions:h1.boolean().optional(),enableFileCheckpointing:h1.boolean().optional(),maxBudgetUsd:h1.number().min(0).optional(),plugins:h1.array(h1.object({type:h1.string(),path:h1.string()}).passthrough()).optional(),resumeSessionAt:h1.string().optional(),sandbox:h1.any().refine(($)=>$===void 0||typeof $==="object",{message:"sandbox must be an object"}).optional(),tools:h1.union([h1.array(h1.string()),h1.object({type:h1.literal("preset"),preset:h1.literal("claude_code")})]).optional(),settingSources:h1.array(h1.enum(["user","project","local"])).optional(),streamingInput:h1.enum(["auto","always","off"]).optional(),canUseTool:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"canUseTool must be a function"}).optional(),hooks:h1.record(h1.string(),h1.array(h1.object({matcher:h1.string().optional(),hooks:h1.array(h1.any()).nonempty()}))).optional(),mcpServers:h1.record(h1.string(),h1.union([h1.object({type:h1.literal("stdio").optional(),command:h1.string(),args:h1.array(h1.string()).optional(),env:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("sse"),url:h1.string(),headers:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("http"),url:h1.string(),headers:h1.record(h1.string(),h1.string()).optional()}),h1.object({type:h1.literal("sdk"),name:h1.string(),instance:h1.any()})])).optional(),verbose:h1.boolean().optional(),debug:h1.boolean().optional(),debugFile:h1.string().optional(),logger:h1.union([h1.literal(!1),r44]).optional(),env:h1.record(h1.string(),h1.string().optional()).optional(),additionalDirectories:h1.array(h1.string()).optional(),agents:h1.record(h1.string(),h1.object({description:h1.string(),tools:h1.array(h1.string()).optional(),disallowedTools:h1.array(h1.string()).optional(),prompt:h1.string(),model:h1.enum(["sonnet","opus","haiku","inherit"]).optional(),mcpServers:h1.array(h1.union([h1.string(),h1.record(h1.string(),h1.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:h1.string().optional()}).passthrough()).optional(),includePartialMessages:h1.boolean().optional(),fallbackModel:h1.string().optional(),forkSession:h1.boolean().optional(),stderr:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:h1.boolean().optional(),extraArgs:h1.record(h1.string(),h1.union([h1.string(),h1.null()])).optional(),persistSession:h1.boolean().optional(),spawnClaudeCodeProcess:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:h1.record(h1.string(),h1.any()).optional(),maxToolResultSize:h1.number().int().min(100).max(1e6).optional(),onQueryCreated:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:h1.any().refine(($)=>$===void 0||typeof $==="function",{message:"onStreamStart must be a function"}).optional()}).strict();Z64={debug:($)=>console.debug(`[DEBUG] ${$}`),info:($)=>console.info(`[INFO] ${$}`),warn:($)=>console.warn(`[WARN] ${$}`),error:($)=>console.error(`[ERROR] ${$}`)},G64={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};Y64=process.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],J64=["CLAUDE_CONFIG_DIR"];K64=new Set(["model","abortController","prompt","outputFormat"]);F64={opus:"opus",sonnet:"sonnet",haiku:"haiku"};L49=Qi1()});function Yi1($,Z){let G=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],X={mcpServers:Z?.mcpServers,cwd:Z?.cwd??process.cwd()};if(Z?.isPlanMode||Z?.toolApprovalLevel==="readonly")X.permissionMode="bypassPermissions",X.disallowedTools=[...G,"Write","Edit","Bash","NotebookEdit"];else X.permissionMode="bypassPermissions",X.disallowedTools=[...G];if(Z?.resume)X.resume=Z.resume;return Qi1({defaultSettings:X})($)}function Ji1($){return O64[$]??$}var O64;var bJ$=D(()=>{_J$();O64={"claude-code:opus":"opus","claude-code:opus-1m":"claude-opus-4.8-1m","claude-code:sonnet":"sonnet","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function pH1($){return $==="default"?void 0:$}var vJ$="default",fJ$="/repo";function tH1($){return $E($,{ignoreIncompleteToolCalls:!0})}function oH1($){for(let Z=$.length-1;Z>=0;Z--){let G=$[Z];if(!G||G.role!=="user")continue;if(typeof G.content==="string")return G.content;if(Array.isArray(G.content))return G.content.filter((Q)=>typeof Q==="object"&&Q!==null&&Q.type==="text").map((Q)=>Q.text).join(`
|
|
2267
2267
|
`);return""}return""}var Wi1=D(()=>{e4()});function B64($,Z){if(!Z)return;$.read+=Z.inputTokenDetails?.cacheReadTokens??0,$.write+=Z.inputTokenDetails?.cacheWriteTokens??0,$.input+=Z.inputTokens??0}function df(){let $={inputTokens:0,outputTokens:0,totalTokens:0},Z={read:0,write:0,input:0},G={inputTokens:0,outputTokens:0,totalTokens:0},X=0,Q,Y=0;function J(W){return W?.openrouter?.usage?.cost??0}return{addStep(W,K){if(K!==void 0)Q=K;return Y=W?.inputTokens??0,$={inputTokens:$.inputTokens+(W?.inputTokens??0),outputTokens:$.outputTokens+(W?.outputTokens??0),totalTokens:$.totalTokens+(W?.totalTokens??0)},B64(Z,W),X+=J(K),{...$}},addExternal(W){G.inputTokens+=W.inputTokens??0,G.outputTokens+=W.outputTokens??0,G.totalTokens+=W.totalTokens??0},buildStepUsage(){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,totalTokens:$.totalTokens,contextTokens:Y,cachedInputTokens:Z.read,inputTokenDetails:{cacheReadTokens:Z.read,cacheWriteTokens:Z.write,noCacheTokens:$.inputTokens-Z.read-Z.write},...X>0&&{providerMetadata:{openrouter:{usage:{cost:X}}}}}},buildFinalUsage({totalUsage:W,providerKey:K,fallbackProviderMetadata:U}){let F=Q??U,H=X>0&&F?{...F,openrouter:{...F.openrouter??{},usage:{...F.openrouter?.usage??{},cost:X}}}:F,N=W&&((W.inputTokens??0)>0||(W.outputTokens??0)>0)?W:$.totalTokens>0?$:W,O=G.inputTokens>0||G.outputTokens>0||G.totalTokens>0;if(!N&&!O)return;let B=N?.inputTokens??0,L=N?.outputTokens??0,w=N?.totalTokens??0;return{inputTokens:B+G.inputTokens,outputTokens:L+G.outputTokens,reasoningTokens:W?.reasoningTokens??void 0,totalTokens:w+G.totalTokens,contextTokens:Y,cachedInputTokens:Z.read,inputTokenDetails:{cacheReadTokens:Z.read,cacheWriteTokens:Z.write,noCacheTokens:B-Z.read-Z.write},providerMetadata:Jh(K&&H?{...H,[K]:{...H[K]??{},reasoning_details:void 0}}:H)}},totalTokens(){return{...$}},cacheTotals(){return{...Z}},cost(){return X}}}var rH1=D(()=>{_8()});function aH1($){let{input:Z}=$,G=df(),X;return({part:Y})=>{if(Y.type==="start")return{agent:{id:Z.agent.id??null},models:{credentialId:Z.models.thinking.credentialId,thinking:{...Z.models.thinking,title:Z.models.thinking.title??Z.models.thinking.id,provider:Z.models.thinking.provider??void 0}},created_at:new Date,thread_id:Z.threadId};if(Y.type==="finish-step"){let J=Y.providerMetadata,W=J?.[$.providerMetadataKey],K=$.extractSessionId(W);if(K)X=K;return G.addStep(Y.usage,J),{usage:G.buildStepUsage()}}if(Y.type==="finish"){let J=G.buildFinalUsage({totalUsage:Y.totalUsage,providerKey:Z.models.thinking.provider});return{...J&&{usage:J},...X&&{codingAgentSessionId:X,codingAgentProvider:$.providerName}}}return}}var Ki1=D(()=>{rH1()});function sH1($){return{type:"data-title-result",data:{title:$},transient:!0}}function xJ$($){return $.type==="data-title-input"}function yJ$($){return $.type==="data-title-result"}function GG($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null)try{return JSON.stringify($)}catch{return"[unserializable object]"}return String($)}function gJ$($){let G=$.split(/\.\s+/).filter((Q)=>!/https?:\/\//i.test(Q)&&!/openrouter/i.test(Q));if(G.length===0)return $;let X=G.join(". ").trim();return X.endsWith(".")?X:`${X}.`}function mf($){if($ instanceof Error&&$.name==="AbortError")return"aborted";let Z=($ instanceof Error?$.message:GG($)).toLowerCase();if(/insufficient|no credits|out of credits|balance|payment|quota exceeded|key limit|402/i.test(Z))return"insufficient_funds";if(/rate.?limit|too many requests|429/i.test(Z))return"rate_limit";if(/timeout|timed out|deadline/i.test(Z))return"timeout";if(/unauthor|forbidden|401|403|invalid.*(key|token)/i.test(Z))return"auth";if(/tool|mcp|connection/i.test(Z))return"tool_error";if(/model|provider|anthropic|openai|gemini|claude/i.test(Z))return"model_error";return"unknown"}function IO($){if($ instanceof Error){let Z=$.statusCode,G=$.message.toLowerCase();if(Z===402||G.includes("credit")||G.includes("insufficient funds")||G.includes("insufficient balance")||G.includes("billing")||G.includes("quota exceeded")||G.includes("key limit")||G.includes("payment required"))return`[CREDITS] ${gJ$($.message)}`;return gJ$($.message)}return GG($)}function nf($){return $.kind!=="subtask"&&$.currentThreadTitle===UL}async function*eH1($,Z){let G=$[Symbol.asyncIterator](),X=!1,Q=!1,Y=G.next().then((W)=>({kind:"main",value:W})),J=Z.promise.then((W)=>({kind:"title",value:W?sH1(W):null})).catch((W)=>{return console.warn("[harness:title] title generation failed",GG(W)),{kind:"title",value:null}});try{while(!X||!Q){let W=[];if(!X)W.push(Y);if(!Q)W.push(J);let K=await Promise.race(W);if(K.kind==="main"){if(K.value.done){if(X=!0,!Q)Z.finish();continue}yield K.value.value,Y=G.next().then((U)=>({kind:"main",value:U}));continue}if(Q=!0,K.value)yield K.value}}finally{if(!Q)Z.finish()}}var $N1=()=>{};import{z as hJ$}from"zod";function pf($){let{abortSignal:Z,model:G,userMessage:X}=$,Q=new AbortController,Y=()=>Q.abort();Z?.addEventListener("abort",Y,{once:!0});let J,W=()=>{J=setTimeout(()=>{Q.abort()},E64)},K=(()=>{let F=X.slice(0,10).trim();return uJ$(F)?F:"New chat"})();return{promise:(async()=>{try{let H=(await Wc1({model:G,schema:D64,system:L64,messages:[{role:"user",content:X}],temperature:0.2,abortSignal:Q.signal})).object.title.replace(/[.!?]$/,"").slice(0,60).trim();if(!uJ$(H))return K;return H}catch(F){let H=F;if(H.name==="AbortError")return console.warn("[decopilot:title] Title generation aborted (timeout or parent abort)"),null;return console.error("[decopilot:title] \u274C Failed to generate title:",H.message),K}finally{clearTimeout(J),Z?.removeEventListener("abort",Y)}})(),finish:W}}var D64,L64=`Generate a concise, sentence-case title (3-7 words) that captures the main topic or goal of this session. Use sentence case: capitalize only the first word and proper nouns.
|
|
2268
2268
|
|
|
2269
2269
|
Good examples:
|