decocms 4.329.0 → 4.329.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DnZRy-lI.js → AlertCircle-B_1bwOez.js} +1 -1
- package/dist/client/assets/{AreaChart-hLUEQsR1.js → AreaChart-CxY2iUbX.js} +1 -1
- package/dist/client/assets/{ArrowLeft-c6hy7QaT.js → ArrowLeft-BjExvx0V.js} +1 -1
- package/dist/client/assets/{ArrowUp-B7fXoQ8K.js → ArrowUp-DgVT42kZ.js} +1 -1
- package/dist/client/assets/{Check-DqkvAZC_.js → Check-BmP0GDvn.js} +1 -1
- package/dist/client/assets/{CheckCircle-dAswbt5g.js → CheckCircle-CeGWrtMp.js} +1 -1
- package/dist/client/assets/{ChevronRight-Dnr5nzeX.js → ChevronRight-CNXUEnI5.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-CdnRQZtm.js → ChevronSelectorVertical-BpxuGhOG.js} +1 -1
- package/dist/client/assets/{ChevronUp-C0G2CFMv.js → ChevronUp-xfjXJ2sT.js} +1 -1
- package/dist/client/assets/{Copy01-DJlCD7jO.js → Copy01-LcV42o-X.js} +1 -1
- package/dist/client/assets/{CreditCard01-IuowVCu9.js → CreditCard01-D3g2E8yg.js} +1 -1
- package/dist/client/assets/{DotsVertical-C29h8Xv8.js → DotsVertical-BhgzOJWF.js} +1 -1
- package/dist/client/assets/{Download01-Brvp6pb7.js → Download01-C0UjxGyP.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-T5DrqS6W.js → ErrorBarContext-DTKrWFlx.js} +1 -1
- package/dist/client/assets/{Eye-rX4kfSMD.js → Eye-C3r9wtre.js} +1 -1
- package/dist/client/assets/{GitBranch01-DUvDftRW.js → GitBranch01-DT4AbL-m.js} +1 -1
- package/dist/client/assets/{Globe01-CiJNQv1n.js → Globe01-BYv9cftf.js} +1 -1
- package/dist/client/assets/{HardDrive-4FoiNoUc.js → HardDrive-CgsFhwaQ.js} +1 -1
- package/dist/client/assets/{Image01-CJloNOdJ.js → Image01-GxWtLpiI.js} +1 -1
- package/dist/client/assets/{Key01-C9Lx78XG.js → Key01-C57Lez_q.js} +1 -1
- package/dist/client/assets/{Link01-BIP5kFZk.js → Link01-EBlmMRZH.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DpUREths.js → LinkExternal01-DHh1KWUs.js} +1 -1
- package/dist/client/assets/{Monitor01-f2aqf0dE.js → Monitor01-Bnd-_HOM.js} +1 -1
- package/dist/client/assets/{Package-B9yOhh5w.js → Package-ClC-jxvu.js} +1 -1
- package/dist/client/assets/{Palette-DTOzehxX.js → Palette-BptcDBZA.js} +1 -1
- package/dist/client/assets/{Play-g7SagoZC.js → Play-Bf6Clcfo.js} +1 -1
- package/dist/client/assets/{Plus-CXJoeJuL.js → Plus-DiEyY1MZ.js} +1 -1
- package/dist/client/assets/{SearchMd-DEz_eF3O.js → SearchMd-BHekLPNH.js} +1 -1
- package/dist/client/assets/{Sector-WHpn3Q-z.js → Sector-BP06-zu3.js} +1 -1
- package/dist/client/assets/{Settings02-CAV691CP.js → Settings02-B6haVyjm.js} +1 -1
- package/dist/client/assets/{Share07-B-JgXivK.js → Share07-BMtuKCEW.js} +1 -1
- package/dist/client/assets/{Shield01-CK4bteY0.js → Shield01-BNPD8ohV.js} +1 -1
- package/dist/client/assets/{Stars01-BxLhbISI.js → Stars01-BGfTKNXr.js} +1 -1
- package/dist/client/assets/{Sun-BTxuKIKR.js → Sun-C0UUghdd.js} +1 -1
- package/dist/client/assets/{Tool01-CNNIEuM9.js → Tool01-yoc-dG2k.js} +1 -1
- package/dist/client/assets/{Tool02-ClQJH9M4.js → Tool02-B6CDeSio.js} +1 -1
- package/dist/client/assets/{Trash01-7oo117ty.js → Trash01-jVgJ4fGm.js} +1 -1
- package/dist/client/assets/{TrendUp01-CHWZ6phK.js → TrendUp01-C4D9k0-P.js} +1 -1
- package/dist/client/assets/{Upload01-KxJokdCJ.js → Upload01-DZZoXNq4.js} +1 -1
- package/dist/client/assets/{User01-DfSgNwzq.js → User01-BfsxZ17b.js} +1 -1
- package/dist/client/assets/{UserSquare-DzUo-hnR.js → UserSquare-D50MJT5y.js} +1 -1
- package/dist/client/assets/{Users01-_DGneHXW.js → Users01-DpM48CGG.js} +1 -1
- package/dist/client/assets/{Users03-n3se40YQ.js → Users03-CIxXVNij.js} +1 -1
- package/dist/client/assets/{XCircle-BNUXW8R7.js → XCircle-CGhaHWix.js} +1 -1
- package/dist/client/assets/{XClose-19b7KBt6.js → XClose-B-5LFTLX.js} +1 -1
- package/dist/client/assets/{Zap-CU_oJwB1.js → Zap-ChFDF4ng.js} +1 -1
- package/dist/client/assets/{ZoomOut-zswVs_1E.js → ZoomOut-CY6Sh2Fl.js} +1 -1
- package/dist/client/assets/{access-gate-BTnQUHuo.js → access-gate-BAjtlg6r.js} +1 -1
- package/dist/client/assets/{agent-icon-CR_yNxom.js → agent-icon-BVAqzTse.js} +1 -1
- package/dist/client/assets/{agents-list-DOICn3z6.js → agents-list-ClLmApbx.js} +1 -1
- package/dist/client/assets/{ai-providers-C4KUcpmA.js → ai-providers-CIsXi9IW.js} +1 -1
- package/dist/client/assets/{alert-CYjW_rQs.js → alert-DsVjZo62.js} +1 -1
- package/dist/client/assets/{alert-dialog-DjwTQ9l3.js → alert-dialog-B7BPLPwk.js} +1 -1
- package/dist/client/assets/{analytics-tab-B3ugglZA.js → analytics-tab-D4NGGIf8.js} +1 -1
- package/dist/client/assets/api-keys-BxOjbpem.js +1 -0
- package/dist/client/assets/{api-keys-CZdALrCZ.js → api-keys-DzCMi9Yp.js} +1 -1
- package/dist/client/assets/{app-editor-rhelOGy6.js → app-editor-CmLu7M_9.js} +1 -1
- package/dist/client/assets/{auth-DBdsXrv1.js → auth-DSeksT1d.js} +1 -1
- package/dist/client/assets/{auth-catchall-yZa56SD-.js → auth-catchall-DYCMQmyd.js} +1 -1
- package/dist/client/assets/{auth-entry-TgT5wtRc.js → auth-entry-C5_Vfv9J.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Dt1zUDL2.js → auth-split-layout-BtYmRkYL.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BQPNzBLu.js → authenticate-and-persist-oauth-DvyQQzuy.js} +1 -1
- package/dist/client/assets/{automation-list-row-BPks4Utx.js → automation-list-row-BlgZvE4S.js} +1 -1
- package/dist/client/assets/{automation-runs-Bxsj8MZW.js → automation-runs-CKCntpAP.js} +1 -1
- package/dist/client/assets/automations-CVf5lVeq.js +1 -0
- package/dist/client/assets/{avatar-DfdRowC1.js → avatar-2bUzCm0h.js} +1 -1
- package/dist/client/assets/{badge-DOyv33vC.js → badge-CvFiYVx2.js} +1 -1
- package/dist/client/assets/{block-document-BZP-l524.js → block-document-Dx24Y5u4.js} +1 -1
- package/dist/client/assets/{breadcrumb-BDsYQtIj.js → breadcrumb-BVIqnGKs.js} +1 -1
- package/dist/client/assets/{buckets-z1T-WwNj.js → buckets-DicvI4cK.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DlP3q7K8.js → bulk-category-panel-CgXreOf9.js} +1 -1
- package/dist/client/assets/{capability-load-error-BPyH4s6Z.js → capability-load-error-CuZhrMXL.js} +1 -1
- package/dist/client/assets/{cards-CXU5Z_-Y.js → cards-BQKYAaKA.js} +1 -1
- package/dist/client/assets/{category-editor-B-BgAF6d.js → category-editor-3o-Hv1HI.js} +1 -1
- package/dist/client/assets/{cdn-tab-CWC3XTuW.js → cdn-tab-BHefx8Ex.js} +1 -1
- package/dist/client/assets/{chart-fGG1Sx1K.js → chart-cUhkAL1G.js} +1 -1
- package/dist/client/assets/{chat-context-DR_J4W7a.js → chat-context-xWb098gj.js} +1 -1
- package/dist/client/assets/{checkbox-BhUSFSbz.js → checkbox-CoCRtkFw.js} +1 -1
- package/dist/client/assets/{choose-editor-J54e5-lj.js → choose-editor-BuBIsIXz.js} +1 -1
- package/dist/client/assets/{cli-auth-success-B0egFAIA.js → cli-auth-success-BKYN6nOE.js} +1 -1
- package/dist/client/assets/{client-icons-JxGt8qCQ.js → client-icons-rl1L1bR8.js} +1 -1
- package/dist/client/assets/{collection-detail-CCY29Sm4.js → collection-detail-CCycwWOj.js} +1 -1
- package/dist/client/assets/{collection-display-button-DRXoFpwp.js → collection-display-button-DXjHMVgB.js} +1 -1
- package/dist/client/assets/{collection-search-D6RItXdp.js → collection-search-BtpPnHgt.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-C3d4-Hrt.js → collection-table-wrapper-g7HZKvPh.js} +1 -1
- package/dist/client/assets/{collection-tabs-onypRlLv.js → collection-tabs-DXXidg_g.js} +1 -1
- package/dist/client/assets/{command-CQ2T6hLA.js → command-BwEtvqmz.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DAwGLM_X.js → commerce-onboarding-CMZ4VqOe.js} +1 -1
- package/dist/client/assets/{connect-BjtxOBTV.js → connect-BNp45oxd.js} +1 -1
- package/dist/client/assets/{connect-layout-Ck_SxPpB.js → connect-layout-Dcn3JiSG.js} +1 -1
- package/dist/client/assets/{connection-DTU0URlY.js → connection-B7psEj97.js} +1 -1
- package/dist/client/assets/{connection-card-CKJ5VINY.js → connection-card-DmTfQY0Z.js} +1 -1
- package/dist/client/assets/{connection-detail-gWjQ_Ual.js → connection-detail-C_CI7Eq_.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BxLMfq3Z.js → connection-form-helpers-Bisy7nah.js} +1 -1
- package/dist/client/assets/{connections-CSOmwQFw.js → connections-Dc5vYbiK.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-DL5EbG9_.js → create-organization-dialog-jyb5Hqvo.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-hh9tFZe2.js → decopilot-sse-pool-8OMuGjSu.js} +1 -1
- package/dist/client/assets/{dialog-DMIWdNw5.js → dialog-C9MkeCLW.js} +1 -1
- package/dist/client/assets/{domain-settings-DZ7u0xuj.js → domain-settings-xgmBYF6d.js} +1 -1
- package/dist/client/assets/{download-app-dialog-DJHeXrut.js → download-app-dialog-DoJFTyCS.js} +1 -1
- package/dist/client/assets/{drawer-BSOQzxyI.js → drawer-DDx_r4uI.js} +1 -1
- package/dist/client/assets/{dropdown-menu-B01MPHxG.js → dropdown-menu-Cmn8nT21.js} +1 -1
- package/dist/client/assets/{e2e-tab-Dxv8NX56.js → e2e-tab-CofrEmHd.js} +1 -1
- package/dist/client/assets/{editor-DiKajmkI.js → editor-BgxyaCx1.js} +1 -1
- package/dist/client/assets/{empty-state-C4kl7eGm.js → empty-state-BzrUSZJH.js} +1 -1
- package/dist/client/assets/{empty-state-DEmTcgN-.js → empty-state-DgYUOiXi.js} +1 -1
- package/dist/client/assets/{extract-connection-data-6OYxZUUL.js → extract-connection-data-Ta5CfWdX.js} +1 -1
- package/dist/client/assets/{file-explorer-DqhzWeH3.js → file-explorer-my9Ey5gp.js} +1 -1
- package/dist/client/assets/{file-type-icon-C2CIDHKZ.js → file-type-icon-9SiPScqt.js} +1 -1
- package/dist/client/assets/{folder-icon-DiqeW7S8.js → folder-icon-BYpDtu9r.js} +1 -1
- package/dist/client/assets/{form-ltLNj2Fx.js → form-DQRYyHuE.js} +1 -1
- package/dist/client/assets/{general-BfI4YthA.js → general-BiyU04cf.js} +1 -1
- package/dist/client/assets/{github-repo-picker-BXiWztpZ.js → github-repo-picker-jjkr6gM_.js} +1 -1
- package/dist/client/assets/{hooks-t3wPMYIy.js → hooks-Cbo6FV71.js} +1 -1
- package/dist/client/assets/{hosting-tab-BHoFtNH-.js → hosting-tab-BsX_gWvo.js} +1 -1
- package/dist/client/assets/{index-D-ro9b19.js → index-2KFtIyPv.js} +1 -1
- package/dist/client/assets/{index-CFtXQE7B.js → index-5gf5YDcB.js} +1 -1
- package/dist/client/assets/{index-DaDPBTAE.js → index-BaV56Hgf.js} +1 -1
- package/dist/client/assets/{index-Jl0oZ6Wf.js → index-BhIEf0YW.js} +36 -36
- package/dist/client/assets/{index-CV2bU7jW.js → index-Bk9nLl13.js} +1 -1
- package/dist/client/assets/{index-BK7N9_p4.js → index-BpVGJw8l.js} +1 -1
- package/dist/client/assets/{index-BevJq7jf.js → index-DLcFGlgD.js} +1 -1
- package/dist/client/assets/{index-CkiqYKxg.js → index-DjGKlDpc.js} +2 -2
- package/dist/client/assets/{index-DLsNinrY.js → index-Mhox33WS.js} +1 -1
- package/dist/client/assets/{index-BWSCnwkU.js → index-pjDOZ5YX.js} +1 -1
- package/dist/client/assets/{index-redirect-vKExPe-P.js → index-redirect-B1BOKmdt.js} +1 -1
- package/dist/client/assets/{infra-billing-DyeTCmei.js → infra-billing-C9VaHH74.js} +1 -1
- package/dist/client/assets/{input-BUVsQT2c.js → input-wd-O5AQ7.js} +1 -1
- package/dist/client/assets/{integration-icon-DKXhuRuu.js → integration-icon-MYNRHpB-.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-D9QzbnHU.js → invite-member-dialog-Cb6lFc9U.js} +1 -1
- package/dist/client/assets/{label-BWvHiLn-.js → label-DNcrpS3C.js} +1 -1
- package/dist/client/assets/{layout-Dn1FlT2O.js → layout-BEM6tPG1.js} +1 -1
- package/dist/client/assets/{login-Ba1uV5Lo.js → login-BSt01fYl.js} +1 -1
- package/dist/client/assets/{markdown-DFATAteP.js → markdown-1HpDfl48.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CFC9mrrj.js → mcp-oauth-C6B-bjEy.js} +1 -1
- package/dist/client/assets/{members-Cq7Ejpoq.js → members-DRSBNGx_.js} +1 -1
- package/dist/client/assets/{monaco-editor-BnIR7G4t.js → monaco-editor-q9GZqpdG.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-G1sJWss3.js → monitoring-stats-row-DLyCVKva.js} +1 -1
- package/dist/client/assets/{multi-select-BVCDGlUL.js → multi-select-CFuJRMVa.js} +1 -1
- package/dist/client/assets/{oauth-callback-BKjohDva.js → oauth-callback-CFW0QFWH.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider--DfGbzn9.js → oauth-callback-ai-provider-BuikBThI.js} +1 -1
- package/dist/client/assets/{onboarding-CrLPFmEp.js → onboarding-BKUV8oZu.js} +1 -1
- package/dist/client/assets/org-layout-428-HISQ.js +1 -0
- package/dist/client/assets/{organization-choice-BrKQVQct.js → organization-choice-Dbl5MksN.js} +1 -1
- package/dist/client/assets/{orgs-Bwo380vC.js → orgs-C0--1SUX.js} +1 -1
- package/dist/client/assets/{page-seo-form-BiBIwrsw.js → page-seo-form-Iusc4dPm.js} +1 -1
- package/dist/client/assets/{popover-DOrGxxEd.js → popover-Bz4u0as0.js} +1 -1
- package/dist/client/assets/{post-calendar-DMVJbJcp.js → post-calendar-DUPmrQG0.js} +1 -1
- package/dist/client/assets/{post-editor-Cfyho3M2.js → post-editor-jhLQgMRM.js} +1 -1
- package/dist/client/assets/{primitives-BC2Cq-2p.js → primitives-DMgGeEfu.js} +1 -1
- package/dist/client/assets/{profile-DZh4_ij9.js → profile-BO2Mz7sb.js} +1 -1
- package/dist/client/assets/{project-app-view-BXK3mqF_.js → project-app-view-DwBS62sZ.js} +1 -1
- package/dist/client/assets/{project-icon-Cp7DzOMW.js → project-icon-B-AwUdvh.js} +1 -1
- package/dist/client/assets/{prompts-Cda2M-tH.js → prompts-DV7pN-FS.js} +1 -1
- package/dist/client/assets/record-editor-DZeep4ET.js +1 -0
- package/dist/client/assets/{redirect-editor-B-A4XVnf.js → redirect-editor-C7hGM4lQ.js} +1 -1
- package/dist/client/assets/registry-DXli8D0x.js +2 -0
- package/dist/client/assets/{registry-layout-CO2szVOb.js → registry-layout-CzoCdmsR.js} +1 -1
- package/dist/client/assets/{reports-BPMjJGid.js → reports-DYLkD6Dm.js} +1 -1
- package/dist/client/assets/{require-capability-B2jibZP0.js → require-capability-BLOwhWCj.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DFGUDyoQ.js → required-auth-layout-B3AAI2XB.js} +1 -1
- package/dist/client/assets/{reset-password-B_7V8msq.js → reset-password-BeVMvjdU.js} +1 -1
- package/dist/client/assets/{review-settings-Bkf20Rdg.js → review-settings-Cg2MRufY.js} +1 -1
- package/dist/client/assets/{roles-ArbjeTX4.js → roles-BiFvg0Qy.js} +1 -1
- package/dist/client/assets/{schema-BpLRTLgx.js → schema-D4FcgO9F.js} +1 -1
- package/dist/client/assets/{scroll-area-CT5oIGr2.js → scroll-area-BPYhikGx.js} +1 -1
- package/dist/client/assets/{search-input-5UpdYvCY.js → search-input-DMnK-NPB.js} +1 -1
- package/dist/client/assets/{secrets-nw838Qdu.js → secrets-B6BaGjxv.js} +1 -1
- package/dist/client/assets/{sections-editor-Khz24lu_.js → sections-editor-CmR9GU6k.js} +1 -1
- package/dist/client/assets/{select-DwlHfjzI.js → select-9uMZ0JuU.js} +1 -1
- package/dist/client/assets/{select-model-CiJBYaZ7.js → select-model-DQhM2Ar1.js} +1 -1
- package/dist/client/assets/{self-tool-result-CKWaG7Ja.js → self-tool-result-D9twr-TH.js} +1 -1
- package/dist/client/assets/{seo-editor-DsdZEewL.js → seo-editor-CJx6il94.js} +1 -1
- package/dist/client/assets/settings-layout-DRV9zQn7.js +1 -0
- package/dist/client/assets/{settings-sidebar-DSmEdbJv.js → settings-sidebar-Cyg-XKsj.js} +1 -1
- package/dist/client/assets/{shell-controls-CCXo3U4a.js → shell-controls-Bv0fBNdH.js} +1 -1
- package/dist/client/assets/{shell-layout-DIZ-2RdG.js → shell-layout---e9WdOL.js} +1 -1
- package/dist/client/assets/{skill-preview-DoS521HK.js → skill-preview-CQYKB_27.js} +1 -1
- package/dist/client/assets/{skills-BsQ1Xddn.js → skills-BaZab3oz.js} +1 -1
- package/dist/client/assets/{sso-DaAfGY3z.js → sso-B6yfDwAs.js} +1 -1
- package/dist/client/assets/{store-CG85GtRn.js → store-7yKkTFSQ.js} +1 -1
- package/dist/client/assets/store-registry-DJ7tHYY4.js +2 -0
- package/dist/client/assets/{switch-BCKnJQXt.js → switch-9AlGcAky.js} +1 -1
- package/dist/client/assets/{synced-repos-D1643iV_.js → synced-repos-DFMyqW_b.js} +1 -1
- package/dist/client/assets/{table-BAjvhBIX.js → table-CT63GHWc.js} +1 -1
- package/dist/client/assets/{tabs-BaUvMhVQ.js → tabs-CTSf8Cbz.js} +1 -1
- package/dist/client/assets/{task-board-DwW0oisN.js → task-board-BIak1E3v.js} +1 -1
- package/dist/client/assets/{task-route-qtYndhpS.js → task-route-CrxQp2Eb.js} +1 -1
- package/dist/client/assets/{tasks-RrhymwF6.js → tasks-BRTXgOTF.js} +1 -1
- package/dist/client/assets/{textarea-DZCIGmN9.js → textarea-BPPpFkS7.js} +1 -1
- package/dist/client/assets/{toggle-group-DuLYK6Sh.js → toggle-group-Djr9teJe.js} +1 -1
- package/dist/client/assets/{toolbar-CT5yw9f1.js → toolbar-DwOwcSY_.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-CEO78O-b.js → toolbar-icon-button-DLOAX-UT.js} +1 -1
- package/dist/client/assets/{track-Bnk1DzAU.js → track-BYurtGbZ.js} +1 -1
- package/dist/client/assets/{types-B3cQIWDL.js → types-Bx3gHThq.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BwN8WJ0k.js → use-ai-providers-Cw0K6TIk.js} +1 -1
- package/dist/client/assets/{use-automations-C_CbihAx.js → use-automations-DIaz55Fi.js} +1 -1
- package/dist/client/assets/{use-autosave-Dl6QGdsm.js → use-autosave-Dwf53x3t.js} +1 -1
- package/dist/client/assets/{use-connection-rbzKXapy.js → use-connection-ChhNbk9M.js} +1 -1
- package/dist/client/assets/{use-copy-BRmBUA2P.js → use-copy-D7-xsCp4.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DteYLdMP.js → use-create-virtual-mcp-DUUBAraH.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-C4na0sp1.js → use-debounced-autosave-B-u5R3yy.js} +1 -1
- package/dist/client/assets/{use-debounced-value-Be3pZb_Z.js → use-debounced-value-Dv61_1Jd.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BzDearPY.js → use-decopilot-events-rltJCsXB.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BA9mCd74.js → use-delete-connection-CPGh_oYO.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DBG3g7iC.js → use-deployment-admin-DR4qWEyy.js} +1 -1
- package/dist/client/assets/{use-destination-route-BLtNBm9p.js → use-destination-route-DeG1VNie.js} +1 -1
- package/dist/client/assets/{use-file-configs-gMkWU5js.js → use-file-configs-5cG2k75J.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Cswn2X3f.js → use-infinite-scroll-BuWiD3LM.js} +1 -1
- package/dist/client/assets/{use-join-requests-CBG3fNn6.js → use-join-requests-C8CIUv51.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-Dy_xEj7x.js → use-mcp-auth-status-KH3_aj7J.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DQMrY8qE.js → use-mcp-client-Co1Whr4B.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-CYQM5Dwm.js → use-mcp-prompts-Dp5vD0OR.js} +1 -1
- package/dist/client/assets/{use-members-DKtgnYTg.js → use-members-BLCC6OcQ.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-vjS3tAyN.js → use-navigate-to-agent-C2LAOCet.js} +3 -3
- package/dist/client/assets/{use-org-auth-client-B443qGCQ.js → use-org-auth-client-Dbwoi3Jr.js} +1 -1
- package/dist/client/assets/{use-org-sso-BkcHSheg.js → use-org-sso-SxJRk-2L.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BgbJnamb.js → use-organization-roles-C-uZzGUJ.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BxP2G3iy.js → use-organization-settings-BCG7WYXv.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-eTyLOZv7.js → use-panel-navigate-CrFXFTDL.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CxkeNc1D.js → use-registry-connections-340wegZj.js} +1 -1
- package/dist/client/assets/{use-secrets-BWfOYxAO.js → use-secrets-C1YeU41p.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-C-u3WOdP.js → use-section-preview-base-CW_kpp0-.js} +1 -1
- package/dist/client/assets/{use-status-sounds-BcIFE9I0.js → use-status-sounds-BuH2UnfF.js} +1 -1
- package/dist/client/assets/{use-tags-CT8CWprC.js → use-tags-CaXsZm3v.js} +1 -1
- package/dist/client/assets/{use-view-mode-DhlJwOF0.js → use-view-mode-xqNzfTBB.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-5W9dJJtr.js → use-virtual-mcp-AIb-B8yK.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DbIFSpRo.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-ESs36XTk.js +1 -0
- package/dist/client/assets/{users-B8h_GktS.js → users-CWOt6Jd4.js} +1 -1
- package/dist/client/assets/{variant-calendar-C0rhLJ_Z.js → variant-calendar-DgVO4w0k.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DHmTqpt2.js → view-mode-toggle-BOXOYJpA.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/api-keys-DCfUx9YO.js +0 -1
- package/dist/client/assets/automations-DX02xATh.js +0 -1
- package/dist/client/assets/org-layout-DwXUTyQJ.js +0 -1
- package/dist/client/assets/record-editor-Bt1fJkZO.js +0 -1
- package/dist/client/assets/registry-fFuGERhT.js +0 -2
- package/dist/client/assets/settings-layout-BmF2ixmU.js +0 -1
- package/dist/client/assets/store-registry-DSHHn3n1.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DiI2Ibp7.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-C-o-NbUB.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1545,7 +1545,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var dn1=L(()=>{wb()});f
|
|
|
1545
1545
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await my`
|
|
1546
1546
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
1547
1547
|
`.execute($)}}async function ts1($){await q04($),await M04($);let Z=new ps1({db:$,provider:{getMigrations:()=>Promise.resolve(xn0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function V04($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Pm0();let G=Q??c$(),J=async()=>{if(!Z&&!Q)await NO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ts1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function k04(){let $=c$(),Z=new ps1({db:$.db,provider:{getMigrations:()=>Promise.resolve(xn0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var rs1=L(()=>{is1();Am0();WQ()});async function u70($){let Z={...process.env},Q=_80($,Z);console.log(pE1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?Po1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (dZ0(),mZ0)),{outputs:G,services:J}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Am0(),To1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (WQ(),ht1)),{migrateToLatest:F}=await Promise.resolve().then(() => (rs1(),os1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return in1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var fn0=L(()=>{wb();Ao1();j$()});var $e1={};s($e1,{updateService:()=>Yj,subscribeCliState:()=>gn0,setTuiConsoleIntercepted:()=>c70,setServerUrl:()=>yp,setMigrationsDone:()=>bp,setDevMode:()=>C04,resetCliStateForTests:()=>S04,isTuiConsoleIntercepted:()=>l70,getCliState:()=>yn0,addLogEntry:()=>jO});function as1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ss1(){return{services:as1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function S04(){oX=ss1()}function fp(){for(let $ of bn0)$()}function yn0(){return oX}function gn0($){return bn0.add($),()=>bn0.delete($)}function Yj($){oX={...oX,services:oX.services.map((Z)=>Z.name===$.name?$:Z)},fp()}function bp(){oX={...oX,migrationsStatus:"done"},fp()}function yp($){oX={...oX,serverUrl:$},fp()}function jO($){let Z=[...oX.logs,$];oX={...oX,logs:Z.length>500?Z.slice(-500):Z},fp()}function C04(){oX={...oX,services:[...as1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},fp()}function c70($){es1=$}function l70(){return es1}var oX,bn0,es1=!1;var Gj=L(()=>{oX=ss1();bn0=new Set});import{createServer as Ze1}from"net";function _04($){return new Promise((Z)=>{let Q=Ze1();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function gp($){if(await _04($))return $;let Z=await new Promise((Q,X)=>{let Y=Ze1();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>Q(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var hn0=()=>{};var cn0={};s(cn0,{startDevServer:()=>x04,pipeToLogStore:()=>un0});import{join as v04}from"path";function un0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let G=X.split(`
|
|
1548
|
-
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function x04($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await u70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Yj({name:D.name,status:"ready",port:D.port});bp();let F=v04(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)un0(N.stdout),un0(N.stderr);yp(G),Yj({name:"Vite",status:"ready",port:Number(Y)}),Yj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (dZ0(),mZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var ln0=L(()=>{fn0();Gj();hn0()});var m70;var mn0=L(()=>{m70={name:"decocms",version:"4.329.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as b04,Text as Qe1}from"ink";import{jsx as y04,jsxs as Xe1}from"react/jsx-runtime";function Ye1({version:$}){return Xe1(b04,{flexDirection:"column",marginTop:1,children:[B70.map((Z,Q)=>y04(Qe1,{color:O70[Q],children:Z},Q)),Xe1(Qe1,{dimColor:!0,children:[" v",$]})]})}var Ge1=L(()=>{Tp()});import{Box as Jj,Text as zO}from"ink";import{Spinner as g04}from"@inkjs/ui";import{jsx as NG,jsxs as dy}from"react/jsx-runtime";function Je1({status:$}){if($==="pending")return NG(g04,{label:""});return NG(zO,{color:"green",children:"\u2713"})}function h04($){return`${$.name}: ${$.port||"...."}`}function Ke1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return dy(Jj,{flexDirection:"column",paddingBottom:1,children:[NG(Ye1,{version:m70.version}),NG(Jj,{marginBottom:1,children:NG(zO,{dimColor:!0,children:"\u2500".repeat(80)})}),NG(Jj,{children:dy(zO,{dimColor:!0,children:["Home: ",Q]})}),dy(Jj,{gap:2,children:[$.map((Y)=>dy(Jj,{gap:1,children:[NG(zO,{children:h04(Y)}),NG(Je1,{status:Y.status})]},Y.name)),dy(Jj,{gap:1,children:[NG(zO,{children:"Migrations"}),NG(Je1,{status:Z})]})]}),NG(Jj,{children:X?dy(zO,{children:["Open in browser: ",NG(zO,{color:"cyan",children:X})]}):NG(zO,{dimColor:!0,children:"Starting..."})})]})}var We1=L(()=>{mn0();Ge1()});import{Box as u04,Text as hp}from"ink";import{jsx as dn0,jsxs as in0}from"react/jsx-runtime";function c04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function He1({logs:$}){return dn0(u04,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return dn0(hp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return in0(hp,{children:[in0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),dn0(hp,{color:c04(Z.status),children:Z.status}),in0(hp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Fe1=()=>{};var pn0={};s(pn0,{App:()=>d04});import{Box as l04}from"ink";import{useSyncExternalStore as m04}from"react";import{jsx as Ue1,jsxs as i04}from"react/jsx-runtime";function d04({home:$}){let Z=m04(gn0,yn0);return i04(l04,{flexDirection:"column",children:[Ue1(Ke1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ue1(He1,{logs:Z.logs})]})}var nn0=L(()=>{We1();Fe1();Gj()});var a3="thread-gate",RU="decopilot-hosted-harness",IU="decopilot-hosted-harness-sandboxed",MJ="automations",PO="background-tools",Kj="task-board-github-reads";var Ne1="11";function Be1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ne1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Oe1=()=>{};import p04 from"pg";async function De1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=n04}=$,Y=$.log??((W)=>console.log(W)),G=new p04.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Le1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(t04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Le1.toString()])}catch{}await G.end().catch(()=>{})}}var Le1=8314027461559302n,n04=600000,t04=500;var we1=L(()=>{t8()});function o04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function tn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Ee1(){let $=o04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:tn0($,"--cpu-prof-dir")??process.cwd(),name:tn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(tn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function je1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=$j();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),d70=setInterval(()=>void Z().catch(()=>{}),$),d70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(d70)clearInterval(d70)}}var d70;var ze1=()=>{};import*as r04 from"bun:jsc";function Pe1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{a04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=s04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var a04,s04;var Ae1=L(()=>{({startSamplingProfiler:a04,samplingProfilerStackTraces:s04}=r04)});function Te1(){Ee1();let $=[je1(),Ct1(),Pe1()];return()=>{for(let Z of $)Z()}}var Re1=L(()=>{Nm0();ze1();Ae1()});var Wj=v((Ie1)=>{Object.defineProperty(Ie1,"__esModule",{value:!0});Ie1.RepublishHeaders=Ie1.DirectMsgHeaders=Ie1.JsHeaders=Ie1.AdvisoryKind=void 0;Ie1.isOrderedPushConsumerOptions=e04;Ie1.isPullConsumer=$14;Ie1.isPushConsumer=Z14;Ie1.isBoundPushConsumerOptions=Q14;function e04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function $14($){return $.isPullConsumer()}function Z14($){return $.isPushConsumer()}function Q14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ie1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ie1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ie1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ie1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var BG=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.TD=Me1.TE=Me1.Empty=void 0;Me1.encode=U14;Me1.decode=N14;Me1.Empty=new Uint8Array(0);Me1.TE=new TextEncoder;Me1.TD=new TextDecoder;function F14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function U14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Me1.TE.encode($[Q]));if(Z.length===0)return Me1.Empty;if(Z.length===1)return Z[0];return F14(...Z)}function N14($){if(!$||$.length===0)return"";return Me1.TD.decode($)}});var OG=v((Se1)=>{Object.defineProperty(Se1,"__esModule",{value:!0});Se1.errors=Se1.PermissionViolationError=Se1.NoRespondersError=Se1.TimeoutError=Se1.RequestError=Se1.ProtocolError=Se1.ConnectionError=Se1.DrainingConnectionError=Se1.ClosedConnectionError=Se1.AuthorizationError=Se1.UserAuthenticationExpiredError=Se1.InvalidOperationError=Se1.InvalidArgumentError=Se1.InvalidSubjectError=void 0;class rn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Se1.InvalidSubjectError=rn0;class i70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new i70(`${$} ${Z}`,Q)}}Se1.InvalidArgumentError=i70;class an0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Se1.InvalidOperationError=an0;class p70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new p70($);return null}}Se1.UserAuthenticationExpiredError=p70;class n70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new n70($);return null}}Se1.AuthorizationError=n70;class sn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Se1.ClosedConnectionError=sn0;class en0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Se1.DrainingConnectionError=en0;class $t0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Se1.ConnectionError=$t0;class Zt0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Se1.ProtocolError=Zt0;class Qt0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof t70}}Se1.RequestError=Qt0;class Xt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Se1.TimeoutError=Xt0;class t70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Se1.NoRespondersError=t70;class o70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new o70($,Q,X,Y)}}Se1.PermissionViolationError=o70;Se1.errors={AuthorizationError:n70,ClosedConnectionError:sn0,ConnectionError:$t0,DrainingConnectionError:en0,InvalidArgumentError:i70,InvalidOperationError:an0,InvalidSubjectError:rn0,NoRespondersError:t70,PermissionViolationError:o70,ProtocolError:Zt0,RequestError:Qt0,TimeoutError:Xt0,UserAuthenticationExpiredError:p70}});var s3=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.SimpleMutex=fe1.Perf=void 0;fe1.extend=k14;fe1.render=S14;fe1.timeout=C14;fe1.delay=_14;fe1.deadline=v14;fe1.deferred=Gt0;fe1.debugDeferred=x14;fe1.shuffle=f14;fe1.collect=b14;fe1.jitter=xe1;fe1.backoff=y14;fe1.nanos=g14;fe1.millis=h14;fe1.randomToken=l14;var V14=BG(),Yt0=OG();function k14($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function S14($){return V14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function C14($,Z=!0){let Q=Z?new Yt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Yt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function _14($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function v14($,Z=1000){let Q=Gt0(),X=setTimeout(()=>{Q.reject(new Yt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Gt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function x14(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function f14($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function b14($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class _e1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}fe1.Perf=_e1;class ve1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Gt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}fe1.SimpleMutex=ve1;function xe1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function y14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return xe1(Q>Z?$[Z]:$[Q])}}}function g14($){return $*1e6}function h14($){return Math.floor($/1e6)}var u14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qU=new Uint8Array(62);for(let $=0;$<62;$++)qU[$]=u14.charCodeAt($);var c14=218340105584896;function l14(){let $=Math.floor(Math.random()*c14),Z=$%62,Q=qU[Z];$=($-Z)/62,Z=$%62;let X=qU[Z];$=($-Z)/62,Z=$%62;let Y=qU[Z];$=($-Z)/62,Z=$%62;let G=qU[Z];$=($-Z)/62,Z=$%62;let J=qU[Z];$=($-Z)/62,Z=$%62;let K=qU[Z];$=($-Z)/62,Z=$%62;let W=qU[Z];$=($-Z)/62;let H=qU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var me1=v((ce1)=>{Object.defineProperty(ce1,"__esModule",{value:!0});ce1.nuid=ce1.NuidImpl=void 0;var Y$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",AO=62,a70=12,he1=10,ye1=33,G$4=333,ge1=a70+he1,Kt0=new Uint8Array(AO);for(let $=0;$<AO;$++)Kt0[$]=Y$4.charCodeAt($);var r70=4294967296,ue1=BigInt(AO)**BigInt(he1),up=Number(ue1/(1n<<32n)),Jt0=Number(ue1%(1n<<32n));function J$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function K$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J$4($)}class Wt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ge1),this.cbuf=new Uint8Array(a70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*r70);while($++<8&&this.seqHi===up&&this.seqLo>=Jt0);if(this.seqHi===up&&this.seqLo>=Jt0)this.seqLo=0;this.inc=Math.random()*(G$4-ye1)+ye1|0}setPre(){K$4(this.cbuf);for(let $=0;$<a70;$++)this.buf[$]=Kt0[this.cbuf[$]%AO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ge1-1;Q>=a70;Q--){let X=Math.floor($/AO),G=($-X*AO)*r70+Z,J=Math.floor(G/AO),K=G-J*AO;this.buf[Q]=Kt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=r70)this.seqLo-=r70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Jt0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}ce1.NuidImpl=Wt0;ce1.nuid=new Wt0});var ne1=v((ie1)=>{Object.defineProperty(ie1,"__esModule",{value:!0});ie1.nuid=ie1.Nuid=void 0;var de1=me1();ie1.Nuid=de1.NuidImpl;ie1.nuid=de1.nuid});var e70=v((s70)=>{Object.defineProperty(s70,"__esModule",{value:!0});s70.nuid=s70.Nuid=void 0;var te1=ne1();Object.defineProperty(s70,"Nuid",{enumerable:!0,get:function(){return te1.Nuid}});Object.defineProperty(s70,"nuid",{enumerable:!0,get:function(){return te1.nuid}})});var TO=v((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.DEFAULT_HOST=oe1.DEFAULT_PORT=oe1.Match=void 0;oe1.syncIterator=B$4;oe1.createInbox=O$4;var U$4=e70(),N$4=OG();oe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function B$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function O$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw N$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${U$4.nuid.next()}`}oe1.DEFAULT_PORT=4222;oe1.DEFAULT_HOST="127.0.0.1"});var cp=v((ee1)=>{Object.defineProperty(ee1,"__esModule",{value:!0});ee1.DataBuffer=void 0;var ae1=BG();class se1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ae1.TE.encode($)}static toAscii($){return ae1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ee1.DataBuffer=se1});var Hj=v((Q0$)=>{Object.defineProperty(Q0$,"__esModule",{value:!0});Q0$.LF=Q0$.CR=Q0$.CRLF=Q0$.CR_LF_LEN=Q0$.CR_LF=void 0;Q0$.setTransportFactory=A$4;Q0$.defaultPort=T$4;Q0$.getUrlParseFn=R$4;Q0$.newTransport=I$4;Q0$.getResolveFn=q$4;Q0$.protoLen=Z0$;Q0$.extractProtocolMessage=M$4;var j$4=BG(),z$4=TO(),P$4=cp(),LG;function A$4($){LG=$}function T$4(){return LG!==void 0&&LG.defaultPort!==void 0?LG.defaultPort:z$4.DEFAULT_PORT}function R$4(){return LG!==void 0&&LG.urlParseFn?LG.urlParseFn:void 0}function I$4(){if(!LG||typeof LG.factory!=="function")throw Error("transport fn is not set");return LG.factory()}function q$4(){return LG!==void 0&&LG.dnsResolveFn?LG.dnsResolveFn:void 0}Q0$.CR_LF=`\r
|
|
1548
|
+
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function x04($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await u70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Yj({name:D.name,status:"ready",port:D.port});bp();let F=v04(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)un0(N.stdout),un0(N.stderr);yp(G),Yj({name:"Vite",status:"ready",port:Number(Y)}),Yj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (dZ0(),mZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var ln0=L(()=>{fn0();Gj();hn0()});var m70;var mn0=L(()=>{m70={name:"decocms",version:"4.329.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as b04,Text as Qe1}from"ink";import{jsx as y04,jsxs as Xe1}from"react/jsx-runtime";function Ye1({version:$}){return Xe1(b04,{flexDirection:"column",marginTop:1,children:[B70.map((Z,Q)=>y04(Qe1,{color:O70[Q],children:Z},Q)),Xe1(Qe1,{dimColor:!0,children:[" v",$]})]})}var Ge1=L(()=>{Tp()});import{Box as Jj,Text as zO}from"ink";import{Spinner as g04}from"@inkjs/ui";import{jsx as NG,jsxs as dy}from"react/jsx-runtime";function Je1({status:$}){if($==="pending")return NG(g04,{label:""});return NG(zO,{color:"green",children:"\u2713"})}function h04($){return`${$.name}: ${$.port||"...."}`}function Ke1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return dy(Jj,{flexDirection:"column",paddingBottom:1,children:[NG(Ye1,{version:m70.version}),NG(Jj,{marginBottom:1,children:NG(zO,{dimColor:!0,children:"\u2500".repeat(80)})}),NG(Jj,{children:dy(zO,{dimColor:!0,children:["Home: ",Q]})}),dy(Jj,{gap:2,children:[$.map((Y)=>dy(Jj,{gap:1,children:[NG(zO,{children:h04(Y)}),NG(Je1,{status:Y.status})]},Y.name)),dy(Jj,{gap:1,children:[NG(zO,{children:"Migrations"}),NG(Je1,{status:Z})]})]}),NG(Jj,{children:X?dy(zO,{children:["Open in browser: ",NG(zO,{color:"cyan",children:X})]}):NG(zO,{dimColor:!0,children:"Starting..."})})]})}var We1=L(()=>{mn0();Ge1()});import{Box as u04,Text as hp}from"ink";import{jsx as dn0,jsxs as in0}from"react/jsx-runtime";function c04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function He1({logs:$}){return dn0(u04,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return dn0(hp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return in0(hp,{children:[in0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),dn0(hp,{color:c04(Z.status),children:Z.status}),in0(hp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Fe1=()=>{};var pn0={};s(pn0,{App:()=>d04});import{Box as l04}from"ink";import{useSyncExternalStore as m04}from"react";import{jsx as Ue1,jsxs as i04}from"react/jsx-runtime";function d04({home:$}){let Z=m04(gn0,yn0);return i04(l04,{flexDirection:"column",children:[Ue1(Ke1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ue1(He1,{logs:Z.logs})]})}var nn0=L(()=>{We1();Fe1();Gj()});var a3="thread-gate",RU="decopilot-hosted-harness",IU="decopilot-hosted-harness-sandboxed",MJ="automations",PO="background-tools",Kj="task-board-github-reads";var Ne1="11";function Be1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ne1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Oe1=()=>{};import p04 from"pg";async function De1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=n04}=$,Y=$.log??((W)=>console.log(W)),G=new p04.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Le1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(t04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Le1.toString()])}catch{}await G.end().catch(()=>{})}}var Le1=8314027461559302n,n04=600000,t04=500;var we1=L(()=>{t8()});function o04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function tn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Ee1(){let $=o04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:tn0($,"--cpu-prof-dir")??process.cwd(),name:tn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(tn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function je1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=$j();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),d70=setInterval(()=>void Z().catch(()=>{}),$),d70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(d70)clearInterval(d70)}}var d70;var ze1=()=>{};import*as r04 from"bun:jsc";function Pe1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{a04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=s04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var a04,s04;var Ae1=L(()=>{({startSamplingProfiler:a04,samplingProfilerStackTraces:s04}=r04)});function Te1(){Ee1();let $=[je1(),Ct1(),Pe1()];return()=>{for(let Z of $)Z()}}var Re1=L(()=>{Nm0();ze1();Ae1()});var Wj=v((Ie1)=>{Object.defineProperty(Ie1,"__esModule",{value:!0});Ie1.RepublishHeaders=Ie1.DirectMsgHeaders=Ie1.JsHeaders=Ie1.AdvisoryKind=void 0;Ie1.isOrderedPushConsumerOptions=e04;Ie1.isPullConsumer=$14;Ie1.isPushConsumer=Z14;Ie1.isBoundPushConsumerOptions=Q14;function e04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function $14($){return $.isPullConsumer()}function Z14($){return $.isPushConsumer()}function Q14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ie1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ie1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ie1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ie1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var BG=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.TD=Me1.TE=Me1.Empty=void 0;Me1.encode=U14;Me1.decode=N14;Me1.Empty=new Uint8Array(0);Me1.TE=new TextEncoder;Me1.TD=new TextDecoder;function F14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function U14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Me1.TE.encode($[Q]));if(Z.length===0)return Me1.Empty;if(Z.length===1)return Z[0];return F14(...Z)}function N14($){if(!$||$.length===0)return"";return Me1.TD.decode($)}});var OG=v((Se1)=>{Object.defineProperty(Se1,"__esModule",{value:!0});Se1.errors=Se1.PermissionViolationError=Se1.NoRespondersError=Se1.TimeoutError=Se1.RequestError=Se1.ProtocolError=Se1.ConnectionError=Se1.DrainingConnectionError=Se1.ClosedConnectionError=Se1.AuthorizationError=Se1.UserAuthenticationExpiredError=Se1.InvalidOperationError=Se1.InvalidArgumentError=Se1.InvalidSubjectError=void 0;class rn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Se1.InvalidSubjectError=rn0;class i70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new i70(`${$} ${Z}`,Q)}}Se1.InvalidArgumentError=i70;class an0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Se1.InvalidOperationError=an0;class p70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new p70($);return null}}Se1.UserAuthenticationExpiredError=p70;class n70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new n70($);return null}}Se1.AuthorizationError=n70;class sn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Se1.ClosedConnectionError=sn0;class en0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Se1.DrainingConnectionError=en0;class $t0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Se1.ConnectionError=$t0;class Zt0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Se1.ProtocolError=Zt0;class Qt0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof t70}}Se1.RequestError=Qt0;class Xt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Se1.TimeoutError=Xt0;class t70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Se1.NoRespondersError=t70;class o70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new o70($,Q,X,Y)}}Se1.PermissionViolationError=o70;Se1.errors={AuthorizationError:n70,ClosedConnectionError:sn0,ConnectionError:$t0,DrainingConnectionError:en0,InvalidArgumentError:i70,InvalidOperationError:an0,InvalidSubjectError:rn0,NoRespondersError:t70,PermissionViolationError:o70,ProtocolError:Zt0,RequestError:Qt0,TimeoutError:Xt0,UserAuthenticationExpiredError:p70}});var s3=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.SimpleMutex=fe1.Perf=void 0;fe1.extend=k14;fe1.render=S14;fe1.timeout=C14;fe1.delay=_14;fe1.deadline=v14;fe1.deferred=Gt0;fe1.debugDeferred=x14;fe1.shuffle=f14;fe1.collect=b14;fe1.jitter=xe1;fe1.backoff=y14;fe1.nanos=g14;fe1.millis=h14;fe1.randomToken=l14;var V14=BG(),Yt0=OG();function k14($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function S14($){return V14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function C14($,Z=!0){let Q=Z?new Yt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Yt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function _14($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function v14($,Z=1000){let Q=Gt0(),X=setTimeout(()=>{Q.reject(new Yt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Gt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function x14(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function f14($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function b14($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class _e1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}fe1.Perf=_e1;class ve1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Gt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}fe1.SimpleMutex=ve1;function xe1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function y14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return xe1(Q>Z?$[Z]:$[Q])}}}function g14($){return $*1e6}function h14($){return Math.floor($/1e6)}var u14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qU=new Uint8Array(62);for(let $=0;$<62;$++)qU[$]=u14.charCodeAt($);var c14=218340105584896;function l14(){let $=Math.floor(Math.random()*c14),Z=$%62,Q=qU[Z];$=($-Z)/62,Z=$%62;let X=qU[Z];$=($-Z)/62,Z=$%62;let Y=qU[Z];$=($-Z)/62,Z=$%62;let G=qU[Z];$=($-Z)/62,Z=$%62;let J=qU[Z];$=($-Z)/62,Z=$%62;let K=qU[Z];$=($-Z)/62,Z=$%62;let W=qU[Z];$=($-Z)/62;let H=qU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var me1=v((ce1)=>{Object.defineProperty(ce1,"__esModule",{value:!0});ce1.nuid=ce1.NuidImpl=void 0;var Y$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",AO=62,a70=12,he1=10,ye1=33,G$4=333,ge1=a70+he1,Kt0=new Uint8Array(AO);for(let $=0;$<AO;$++)Kt0[$]=Y$4.charCodeAt($);var r70=4294967296,ue1=BigInt(AO)**BigInt(he1),up=Number(ue1/(1n<<32n)),Jt0=Number(ue1%(1n<<32n));function J$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function K$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J$4($)}class Wt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ge1),this.cbuf=new Uint8Array(a70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*r70);while($++<8&&this.seqHi===up&&this.seqLo>=Jt0);if(this.seqHi===up&&this.seqLo>=Jt0)this.seqLo=0;this.inc=Math.random()*(G$4-ye1)+ye1|0}setPre(){K$4(this.cbuf);for(let $=0;$<a70;$++)this.buf[$]=Kt0[this.cbuf[$]%AO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ge1-1;Q>=a70;Q--){let X=Math.floor($/AO),G=($-X*AO)*r70+Z,J=Math.floor(G/AO),K=G-J*AO;this.buf[Q]=Kt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=r70)this.seqLo-=r70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Jt0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}ce1.NuidImpl=Wt0;ce1.nuid=new Wt0});var ne1=v((ie1)=>{Object.defineProperty(ie1,"__esModule",{value:!0});ie1.nuid=ie1.Nuid=void 0;var de1=me1();ie1.Nuid=de1.NuidImpl;ie1.nuid=de1.nuid});var e70=v((s70)=>{Object.defineProperty(s70,"__esModule",{value:!0});s70.nuid=s70.Nuid=void 0;var te1=ne1();Object.defineProperty(s70,"Nuid",{enumerable:!0,get:function(){return te1.Nuid}});Object.defineProperty(s70,"nuid",{enumerable:!0,get:function(){return te1.nuid}})});var TO=v((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.DEFAULT_HOST=oe1.DEFAULT_PORT=oe1.Match=void 0;oe1.syncIterator=B$4;oe1.createInbox=O$4;var U$4=e70(),N$4=OG();oe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function B$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function O$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw N$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${U$4.nuid.next()}`}oe1.DEFAULT_PORT=4222;oe1.DEFAULT_HOST="127.0.0.1"});var cp=v((ee1)=>{Object.defineProperty(ee1,"__esModule",{value:!0});ee1.DataBuffer=void 0;var ae1=BG();class se1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ae1.TE.encode($)}static toAscii($){return ae1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ee1.DataBuffer=se1});var Hj=v((Q0$)=>{Object.defineProperty(Q0$,"__esModule",{value:!0});Q0$.LF=Q0$.CR=Q0$.CRLF=Q0$.CR_LF_LEN=Q0$.CR_LF=void 0;Q0$.setTransportFactory=A$4;Q0$.defaultPort=T$4;Q0$.getUrlParseFn=R$4;Q0$.newTransport=I$4;Q0$.getResolveFn=q$4;Q0$.protoLen=Z0$;Q0$.extractProtocolMessage=M$4;var j$4=BG(),z$4=TO(),P$4=cp(),LG;function A$4($){LG=$}function T$4(){return LG!==void 0&&LG.defaultPort!==void 0?LG.defaultPort:z$4.DEFAULT_PORT}function R$4(){return LG!==void 0&&LG.urlParseFn?LG.urlParseFn:void 0}function I$4(){if(!LG||typeof LG.factory!=="function")throw Error("transport fn is not set");return LG.factory()}function q$4(){return LG!==void 0&&LG.dnsResolveFn?LG.dnsResolveFn:void 0}Q0$.CR_LF=`\r
|
|
1549
1549
|
`;Q0$.CR_LF_LEN=Q0$.CR_LF.length;Q0$.CRLF=P$4.DataBuffer.fromAscii(Q0$.CR_LF);Q0$.CR=new Uint8Array(Q0$.CRLF)[0];Q0$.LF=new Uint8Array(Q0$.CRLF)[1];function Z0$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===Q0$.CR&&$[Q]===Q0$.LF)return Q+1}return 0}function M$4($){let Z=Z0$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return j$4.TD.decode(X)}return""}});var Bt0=v((F0$)=>{Object.defineProperty(F0$,"__esModule",{value:!0});F0$.ipV4=K0$;F0$.isIP=g$4;F0$.parseIP=W0$;var lp=4,Fj=16,$Q0=48,J0$=57,Y0$=65,b$4=70,G0$=97,y$4=102,Nt0=16777215;function K0$($,Z,Q,X){let Y=new Uint8Array(Fj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function g$4($){return W0$($)!==void 0}function W0$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return H0$($);case":":return h$4($)}return}function H0$($){let Z=new Uint8Array(lp);for(let Q=0;Q<lp;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:G}=u$4($);if(!G||X>255)return;$=$.substring(Y),Z[Q]=X}return K0$(Z[0],Z[1],Z[2],Z[3])}function h$4($){let Z=new Uint8Array(Fj),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<Fj){let{n:Y,c:G,ok:J}=c$4($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(Q<0&&X!=Fj-lp)return;if(X+lp>Fj)return;let K=H0$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=lp;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<Fj){if(Q<0)return;let Y=Fj-X;for(let G=X-1;G>=Q;G--)Z[G+Y]=Z[G];for(let G=Q+Y-1;G>=Q;G--)Z[G]=0}else if(Q>=0)return;return Z}function u$4($){let Z=0,Q=0;for(Z=0;Z<$.length&&$Q0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=J0$;Z++)if(Q=Q*10+($.charCodeAt(Z)-$Q0),Q>=Nt0)return{n:Nt0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function c$4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if($Q0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=J0$)Z*=16,Z+=$.charCodeAt(Q)-$Q0;else if(G0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=y$4)Z*=16,Z+=$.charCodeAt(Q)-G0$+10;else if(Y0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=b$4)Z*=16,Z+=$.charCodeAt(Q)-Y0$+10;else break;if(Z>=Nt0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var jt0=v((N0$)=>{Object.defineProperty(N0$,"__esModule",{value:!0});N0$.Servers=N0$.ServerImpl=void 0;N0$.isIPV4OrHostname=U0$;N0$.hostPort=Et0;var Ot0=Hj(),Lt0=s3(),Dt0=Bt0(),i$4=TO(),p$4=OG();function U0$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function wt0($){return!U0$($)}function n$4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function Et0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=n$4($),wt0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=wt0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):i$4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:Q}}class iy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=Et0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Dt0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${wt0(X)?"["+X+"]":X}`);G.port=`${this.port}`;let J=new iy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Lt0.shuffle)(Z);return this.resolves=Z,Z}}N0$.ServerImpl=iy;class ZQ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw p$4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Ot0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Et0(Y),J=Q.get(G);if(J)J.gossiped=!1,X.push(J);else X.push(new iy(Y))}if(this.randomize)(0,Lt0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Dt0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Ot0.getUrlParseFn)();$=Q?Q($):$;let X=new iy($,Z);if((0,Dt0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return ZQ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return ZQ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Ot0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new iy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Lt0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}N0$.Servers=ZQ0});var QQ0=v((D0$)=>{Object.defineProperty(D0$,"__esModule",{value:!0});D0$.QueuedIteratorImpl=void 0;var zt0=s3(),O0$=OG();class L0${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,zt0.deferred)(),this.yields=[],this.iterClosed=(0,zt0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new O0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new O0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,zt0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}D0$.QueuedIteratorImpl=L0$});var Pt0=v((z0$)=>{Object.defineProperty(z0$,"__esModule",{value:!0});z0$.MuxSubscription=void 0;var a$4=TO(),E0$=OG();class j0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,a$4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new E0$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new E0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}z0$.MuxSubscription=j0$});var At0=v((T0$)=>{Object.defineProperty(T0$,"__esModule",{value:!0});T0$.Heartbeat=void 0;var s$4=s3();class A0${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,s$4.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}T0$.Heartbeat=A0$});var It0=v((V0$)=>{Object.defineProperty(V0$,"__esModule",{value:!0});V0$.DenoBuffer=V0$.MAX_SIZE=V0$.AssertionError=void 0;V0$.assert=q0$;V0$.concat=M0$;V0$.append=$84;V0$.readAll=Z84;V0$.writeAll=Q84;var e$4=BG();class Tt0 extends Error{constructor($){super($);this.name="AssertionError"}}V0$.AssertionError=Tt0;function q0$($,Z="Assertion failed."){if(!$)throw new Tt0(Z)}var I0$=32768;V0$.MAX_SIZE=4294967294;function XQ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function M0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function $84($,Z){return M0$($,Uint8Array.of(Z))}class Rt0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){q0$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=XQ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(e$4.TE.encode($))}write($){let Z=this._grow($.byteLength);return XQ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)XQ0(this._buf.subarray(this._off),this._buf);else if(X+$>V0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,V0$.MAX_SIZE));XQ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,V0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(I0$);while(!0){let X=this.capacity-this.length<I0$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(X)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}V0$.DenoBuffer=Rt0;function Z84($){let Z=new Rt0;return Z.readFrom($),Z.bytes()}function Q84($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Vt0=v((v0$)=>{Object.defineProperty(v0$,"__esModule",{value:!0});v0$.cc=v0$.State=v0$.Parser=v0$.Kind=void 0;v0$.describe=H84;var qt0=It0(),Mt0=BG();v0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function H84($){let Z,Q="";switch($.kind){case v0$.Kind.MSG:Z="MSG";break;case v0$.Kind.OK:Z="OK";break;case v0$.Kind.ERR:Z="ERR",Q=Mt0.TD.decode($.data);break;case v0$.Kind.PING:Z="PING";break;case v0$.Kind.PONG:Z="PONG";break;case v0$.Kind.INFO:Z="INFO",Q=Mt0.TD.decode($.data)}return`${Z}: ${Q}`}function S0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var C0$=48,F84=57,py=67108864;class _0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=v0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case v0$.State.OP_START:switch(Q){case v0$.cc.M:case v0$.cc.m:this.state=v0$.State.OP_M,this.hdr=-1,this.ma=S0$();break;case v0$.cc.H:case v0$.cc.h:this.state=v0$.State.OP_H,this.hdr=0,this.ma=S0$();break;case v0$.cc.P:case v0$.cc.p:this.state=v0$.State.OP_P;break;case v0$.cc.PLUS:this.state=v0$.State.OP_PLUS;break;case v0$.cc.MINUS:this.state=v0$.State.OP_MINUS;break;case v0$.cc.I:case v0$.cc.i:this.state=v0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_H:switch(Q){case v0$.cc.M:case v0$.cc.m:this.state=v0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_M:switch(Q){case v0$.cc.S:case v0$.cc.s:this.state=v0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MS:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MSG:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MSG_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.MSG_ARG,this.as=Z}break;case v0$.State.MSG_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=v0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case v0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:v0$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=v0$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:v0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=v0$.State.MSG_END;break;case v0$.State.MSG_END:switch(Q){case v0$.cc.NL:this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break;default:continue}break;case v0$.State.OP_PLUS:switch(Q){case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PLUS_O:switch(Q){case v0$.cc.K:case v0$.cc.k:this.state=v0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PLUS_OK:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.OK}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_MINUS:switch(Q){case v0$.cc.E:case v0$.cc.e:this.state=v0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_E:switch(Q){case v0$.cc.R:case v0$.cc.r:this.state=v0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ER:switch(Q){case v0$.cc.R:case v0$.cc.r:this.state=v0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ERR:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ERR_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.MINUS_ERR_ARG,this.as=Z}break;case v0$.State.MINUS_ERR_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:v0$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case v0$.State.OP_P:switch(Q){case v0$.cc.I:case v0$.cc.i:this.state=v0$.State.OP_PI;break;case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PO:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PON:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PONG:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.PONG}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_PI:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PIN:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PING:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.PING}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_I:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_IN:switch(Q){case v0$.cc.F:case v0$.cc.f:this.state=v0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INF:switch(Q){case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INFO:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INFO_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.INFO_ARG,this.as=Z}break;case v0$.State.INFO_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:v0$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===v0$.State.MSG_ARG||this.state===v0$.State.MINUS_ERR_ARG||this.state===v0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new qt0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===v0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new qt0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new qt0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case v0$.cc.SPACE:case v0$.cc.TAB:case v0$.cc.CR:case v0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],py);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],py);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${Mt0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case v0$.cc.SPACE:case v0$.cc.TAB:case v0$.cc.CR:case v0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],py),this.ma.size=this.protoParseInt(Z[3],py);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],py),this.ma.size=this.protoParseInt(Z[4],py);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<C0$||$[X]>F84)return-1;Q=Q*10+($[X]-C0$)}return Z!==void 0&&Q>Z?-1:Q}}v0$.Parser=_0$;v0$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};v0$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var JQ0=v((f0$)=>{Object.defineProperty(f0$,"__esModule",{value:!0});f0$.MsgHdrsImpl=void 0;f0$.canonicalMIMEHeaderKey=St0;f0$.headers=B84;var x0$=BG(),e3=TO(),GQ0=OG();function St0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw GQ0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function B84($=0,Z=""){if($===0&&Z!=="")throw GQ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw GQ0.InvalidArgumentError.format("description","is required");return new ny($,Z)}var kt0="NATS/1.0";class ny{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),G=[...X].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new ny,X=x0$.TD.decode($).split(`\r
|
|
1550
1550
|
`),Y=X[0];if(Y!==kt0){let G=Y.replace(kt0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(X.length>=1)X.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=kt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
1551
1551
|
${Z}: ${Q[X]}`;return`${$}\r
|
|
@@ -4481,7 +4481,7 @@ ${Do6}`}})}catch(F){throw await $.storage.taskBoard.unassignSuperAgent(K.id,X,Z.
|
|
|
4481
4481
|
`)});function V38($){let Z=new JB($.db,new WX($.encryptionKey));async function Q(Y,G){let J=q38(G);if(!J)return;let K=await Z.getByWebhookSecret(Y);if(!K?.enabled)return;let W=await ZF($.db,K.organizationId);if(!W)return;if(await XS0(W,K,J)==="started")console.log(`[jira-webhook] started a run for ${J.issueKey} entering "${J.toStatus}"`)}let X=new W1;return X.post("/webhook/:secret",K9({maxSize:jo6}),async(Y)=>{let G=Y.req.param("secret");if(!await Z.getByWebhookSecret(G))return Y.json({error:"Unknown webhook"},404);let K;try{K=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(G,K).catch((W)=>{console.error("[jira-webhook] trigger failed",W)}),Y.body(null,202)}),X}var jo6=1048576;var k38=L(()=>{t$();xF();_O();CL1();Rc()});import{DBOS as YS0,SchedulerMode as zo6}from"@dbos-inc/dbos-sdk";function C38($){vL1=$}function _38(){if(!vL1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return vL1}function v38(){let $=_38();return new JB($.db,new WX($.encryptionKey))}async function To6($,Z){try{let Q=await v38().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let X=await ZF(_38().db,Q.organizationId);if(!X)return{integrationId:$,started:0};if((await X.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let G=new uG(Q.siteUrl,Q.email,Q.apiToken),K=`(${await G.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${S38}m"`,W=0,H;for(let F=0;F<Ao6;F++){let U=await G.searchIssues({jql:K,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=M38(N,N.changelog?.histories??[],Z);for(let O of B)if(await XS0(X,Q,O)==="started")W++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:W}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Ro6($,Z){let Q=new Date($.getTime()-S38*60000),X=await YS0.runStep(()=>v38().listEnabledIds(),{name:"loadJiraIntegrations"});if(X.length===0)return;let Y=await Promise.all(X.map((G)=>YS0.runStep(()=>To6(G,Q),{name:`sweepJira:${G}`})));for(let G of Y)if(G.error)console.warn(`[jira-trigger] integration ${G.integrationId} failed: ${G.error}`);else if(G.started>0)console.log(`[jira-trigger] integration ${G.integrationId} started ${G.started} run(s) the webhook missed`)}function x38(){if(_L1)return;_L1=YS0.registerWorkflow(Ro6,{name:"jiraTriggerSweepWorkflow"}),YS0.registerScheduled(_L1,{name:"jiraTriggerSweepWorkflow",crontab:Po6,mode:zo6.ExactlyOncePerIntervalWhenActive})}var Po6="7-59/10 * * * *",S38=15,Ao6=5,vL1=null,_L1=null;var f38=L(()=>{_O();Rc();nv();CL1()});function b38($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var y38,Io6,qo6,g38;var h38=L(()=>{t$();RK();Vc();xz();y38=new W1,Io6=["range","if-none-match","if-modified-since"],qo6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];y38.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Sm($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Y$(401,{message:"Authentication required"})}if(!Q)throw new Y$(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new Y$(400,{message:"Missing file key"});let Y=await zs(X,Z);if(!Y)throw new Y$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&NY()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new Y$(500,{message:"Invalid data URL from storage"});let[,H,F]=W,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return b38(N,H),new Response(U,{status:200,headers:N})}let G=new Headers;for(let W of Io6){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Y$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,X),new Y$(502,{message:"Upstream storage error"});let K=new Headers;for(let W of qo6){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),b38(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});g38=y38});var S$0=v((lf)=>{var Mo6=lf&&lf.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),Vo6=lf&&lf.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Mo6(Z,$,Q)};Object.defineProperty(lf,"__esModule",{value:!0});Vo6(DG(),lf)});var l38=v((u38)=>{Object.defineProperty(u38,"__esModule",{value:!0});u38.version=void 0;u38.version="3.4.0"});var i38=v((lF)=>{var ko6=lF&&lF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(lF,"__esModule",{value:!0});lF.NodeTransport=lF.VERSION=void 0;lF.nodeResolveHost=fo6;var H5=S$0(),So6=J0("net"),xL1=J0("tls"),Co6=J0("path"),m38=J0("fs"),_o6=ko6(J0("dns")),vo6=l38();lF.VERSION=vo6.version;var xo6="nats.js";class d38{socket;version;lang;yields=[];signal=(0,H5.deferred)();closedNotification=(0,H5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=xo6,this.version=lF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:X}=Q||{};try{if(X===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,H5.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!X&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw H5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new H5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new H5.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,H5.deferred)(),Q,X=(0,So6.createConnection)($.port,$.hostname,()=>{Z.resolve(X),X.removeAllListeners()});return X.on("error",(Y)=>{Q=Y}),X.on("close",()=>{X.removeAllListeners(),Z.reject(Q)}),X.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,H5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=H5.DataBuffer.concat(...this.yields),Y=(0,H5.extractProtocolMessage)(X);if(Y!=="")try{let G=H5.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,H5.deferred)();try{if($=(0,Co6.resolve)($),!(0,m38.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,m38.readFile)($,(Q,X)=>{if(Q)return Z.reject(Q);Z.resolve(X)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:X,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(Q)$.cert=Q;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(X){let K=await this.loadFile(X);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Q=(0,H5.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new H5.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,H5.deferred)();try{let Y=(0,xL1.connect)($.port,$.hostname,Q,()=>{Y.removeAllListeners(),X.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{X.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){X.reject(new H5.errors.ConnectionError(Y.message,{cause:Y}))}return X}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Z=(0,H5.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new H5.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,H5.deferred)();try{let X=(0,xL1.connect)(Z,()=>{X.removeAllListeners(),Q.resolve(X)});X.on("error",(Y)=>{$=Y}),X.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Q.reject($),X.removeAllListeners()})}catch(X){Q.reject(new H5.errors.ConnectionError(X.message,{cause:X}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,H5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,H5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof xL1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,H5.render)($)}`);let Z=(0,H5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,H5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,H5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}lF.NodeTransport=d38;function fo6($){let Z=(0,H5.deferred)();return _o6.default.lookup($,{all:!0},(Q,X)=>{if(Q){Z.reject(Q);return}let Y=[];for(let G of X)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var r38=v((o38)=>{Object.defineProperty(o38,"__esModule",{value:!0});o38.connect=bo6;var p38=i38(),n38=S$0(),t38=S$0();function bo6($={}){if((0,t38.hasWsProtocol)($))return Promise.reject(t38.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,n38.setTransportFactory)({factory:()=>{return new p38.NodeTransport},dnsResolveFn:p38.nodeResolveHost}),n38.NatsConnectionImpl.connect($)}});var a38=v((jB)=>{var go6=jB&&jB.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),ho6=jB&&jB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))go6(Z,$,Q)};Object.defineProperty(jB,"__esModule",{value:!0});jB.connect=void 0;var uo6=r38();Object.defineProperty(jB,"connect",{enumerable:!0,get:function(){return uo6.connect}});ho6(S$0(),jB)});function ZK8($){let Z=$?.connectFn??do6,Q=null,X=null,Y=!1,G=!1,J=!1,K=[];function W(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let N of K)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,X=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!G)try{Q=await Z({servers:N,timeout:mo6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),X=null,J=!1,F(Q),H();return}catch{O++;let D=D7(lo6,co6,O-1,2,0.5);await F$(D)}}return{init(N,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?s38.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?Q:null},getJetStream(){if(!W())return null;if(!X)X=$K8.jetstream(Q);return X},onReady(N){if(K.push(N),W())try{N()}catch{}},async drain(){if(G=!0,Y=!1,X=null,J=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function do6($){return e38.connect($)}var s38,e38,$K8,co6=100,lo6=3000,mo6=3000;var QK8=L(()=>{t8();s38=k(sp(),1),e38=k(a38(),1),$K8=k(_U(),1)});function fL1($,Z){return`${$}.${Z}`}class bL1{cache;constructor($){this.cache=Lm({ttlMs:$?.ttlMs??io6,maxSize:$?.maxSize??po6})}async get($,Z){return this.cache.get(fL1($,Z))??null}async set($,Z,Q){this.cache.set(fL1($,Z),Q)}async invalidate($,Z){this.cache.delete(fL1($,Z))}teardown(){this.cache.clear()}}var io6=600000,po6=5000;var XK8=()=>{};function GS0($,Z){return`${$}:${Z}`}function yL1($){let Z=Lm({ttlMs:$?.ttlMs??no6,maxSize:$?.maxSize??to6}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let F=Q?.();if(!F)return;try{F.publish(YK8,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(GS0(W,H))},set(W,H,F){Z.set(GS0(W,H),F)},invalidate(W,H){Z.delete(GS0(W,H)),K(W,H)},start(){if(J)return;let W=Q?.();if(!W)return;J=W.subscribe(YK8),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===X)continue;Z.delete(GS0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var YK8="studio.ai-provider-keys.invalidate",no6=30000,to6=5000;var GK8=()=>{};class gL1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,X=Z.subscribe("studio.decopilot.cancel");this.subscription=X,(async()=>{for await(let Y of X)try{let G=JSON.parse(Q.decode(Y.data));if(G.originId===this.originId)continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var JK8=($)=>{let Z;return()=>Z??=$()},hL1,uL1;var KK8=L(()=>{H6();hL1=JK8(()=>X$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),uL1=JK8(()=>X$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Zr6($=FK8){return{name:WF,subjects:[`${oX1}.>`],storage:PW.StorageType.File,max_age:ao6,max_bytes:eo6,max_msgs_per_subject:$r6,discard:PW.DiscardPolicy.Old,retention:PW.RetentionPolicy.Limits,duplicate_window:so6,num_replicas:$}}class UK8{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function WK8($){let Z=HK8.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function Gr6($,Z){let Q=0;return{publish(X,Y,G,J){X.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(Q++,ro6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,K)})},get errorCount(){return Q}}}function Jr6($,Z){return $.info?.cluster?Z:1}function Kr6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class cL1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(X,Y)=>{let G=Zr6(Y);try{await X.streams.info(WF),await X.streams.update(WF,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await X.streams.add(G),await X.streams.update(WF,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await X.streams.delete(WF),await X.streams.add(G);else throw J}},Q=await o4(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await PW.jetstreamManager($),Y=Jr6($,FK8);try{await Z(X,Y)}catch(G){if(Y<=1||!Kr6(G))throw G;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${G.message}); falling back to an unreplicated stream`),await Z(X,1)}return X},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:hc});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,X){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=Gr6(Z,X),J=!1,K=()=>{if(J)return;J=!0;let H=Mg$(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",K,{once:!0});let W=(H)=>{let F=performance.now(),U=aX1(H,{runId:Z}),N=performance.now()-F;hL1().record(N),uL1().add(1,{"org.id":X??"unknown"}),Yr6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)G.publish(Y,B.subject,B.data,B.headers?WK8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(W(O),U++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),K(),Xr6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:G.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await o4(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:WK8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:hc}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let X=this.js;if(!X)return!1;let Y=performance.now(),G=aX1(Z,{runId:$,dedup:Q});hL1().record(performance.now()-Y),uL1().add(1);for(let J of G)if(!await this.publishSerialized(X,J))return!1;return!0}async publishDone($,Z,Q){let X=this.js;if(!X)return!1;let Y=qg$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(X,Y)}async createTailStream($,Z,Q){let X=this.js;if(!X)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=Q?.deliverPolicy==="new"?PW.DeliverPolicy.New:PW.DeliverPolicy.All,G=Q?.closeOnDone??!1,J=Zw($),K;try{K=await o4(async()=>{return(await X.consumers.get(WF,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:hc})}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=x20({messages:async function*(){try{for await(let D of K)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(S20()).pipeThrough(C20()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,K.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:w,value:E}=await F.read();if(w){O(),D.close();return}let j=E;if(j.kind==="done"){if(G){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(WF,{filter:Zw($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var PW,HK8,oo6=($)=>{let Z;return()=>Z??=$()},ro6,ao6=86400000000000,so6=120000000000,eo6=4294967296,FK8,$r6=500000,Qr6,Xr6,Yr6;var NK8=L(()=>{t8();sX1();f20();_20();H6();KK8();PW=k(_U(),1),HK8=k(sp(),1),ro6=oo6(()=>X$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),FK8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Qr6=process.env.STREAM_ENCODE_TRACE==="1",Xr6=process.env.DECOPILOT_STREAM_TRACE==="1";Yr6=Qr6?new UK8:null});function JS0($,Z,Q,X){if(!X)return!1;return $.emit(Z,ZH(Q,X.status,{title:X.title??void 0,virtualMcpId:X.virtual_mcp_id??void 0,createdBy:X.created_by??void 0,triggerId:X.trigger_id??null,branch:X.branch??null,harnessId:X.harness_id??void 0,createdAt:X.created_at,updatedAt:X.updated_at})),!0}var BK8=L(()=>{S8()});class lL1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function OK8($,Z,Q){let X=Z.organizationId;if(!_Y(Z))return!1;if(!ev(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),G=_H(Y?.flags),J=await $.storage.taskBoard.update(Z.id,X,{status:G},Z.updatedBy);return await C6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),F8(X,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var LK8=L(()=>{z4();SQ();Ac();aK();n5()});function Or6($){return $ instanceof IX}function Lr6($,Z){return Z-$>=Nr6}class mL1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,X={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??Wr6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??Fr6,Q=this.options.itemIntervalMs??Hr6,X=new Date(Date.now()-Q),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,X),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:K}of Y)try{if(await this.reconcileItem(J,K,X))$++}catch(W){console.error(`[task-board-review-sweeper] ${J} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-j71),_Q1);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-Br6));for(let{id:Q,organizationId:X,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await kQ1(this.taskBoard,Y,X),await SQ1(this.taskBoard,this.billing,Y,X)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,G)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:X,organizationId:Y,attempts:G}of Q)try{if(!await this.taskBoard.claimDueRetry(X,Y,new Date))continue;let J=await this.taskBoard.getById(X,Y);if(!J||J.status!==T$.progress||J.assigneeId!==o$)continue;let K=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!K)continue;await sK(K,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${X} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${X} failed`,J),Or6(J)){await this.returnToTodo(X,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(X,Y,G,new Date(Date.now()+Ur6)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,K))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==T$.progress)return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,X.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),F8(Z,Y)}catch(X){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,X)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!Lr6(KN(Q,Z.reviewCycleStartedAt),Date.now()))return;await eH($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(!_Y(X))return!1;let Y=X.assigneeId===o$,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,X);return!1}let K=await Promise.all(G.map(async(W)=>({...W,...await Ic(Z,W)})));if(K.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await OK8(J,X,K))return!0;if(await Eh$(J,X))return!0;if(await this.resolveConflictFromSweep(J,X,K))return!0;if(!Y)return!1;if(!MQ1(K))return!1;return await hT0(J,X,{previewMatchesHead:VQ1(K)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await dD($,Z.organizationId,Z,{pr:{number:X.number,url:X.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Wr6=60000,Hr6=300000,Fr6=50,Ur6=60000,Nr6=900000,Br6=120000;var DK8=L(()=>{z4();LQ1();$F();ls();aK();LK8();n5();nJ();vQ1();kZ();ws();Tc()});import{readdir as Dr6,rm as KS0}from"fs/promises";import{join as WS0}from"path";async function HS0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-wr6),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await mf($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await wK8($,Y,Z);else if(!Y.startsWith(".")){let G=WS0($,Y),J=await mf(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;Q+=await wK8(G,W,Z)}if((await mf(G)).length===0)await KS0(G,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function wK8($,Z,Q){let X=0,Y=WS0($,Z),G=await mf(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=WS0(Y,K),H=await mf(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=WS0(W,U);await KS0(B,{recursive:!0,force:!0}),X++}}if((await mf(W)).length===0)await KS0(W,{recursive:!0,force:!0})}if((await mf(Y)).length===0)await KS0(Y,{recursive:!0,force:!0});return X}async function mf($){try{return(await Dr6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var wr6=30;var dL1=()=>{};import{DBOS as iL1,SchedulerMode as Er6}from"@dbos-inc/dbos-sdk";async function zr6(){let $=[n3(),My(),PU()],Z=0;for(let Q of $)try{Z+=await HS0(Q)}catch(X){console.error("[monitoring-retention] cleanup failed:",X)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Pr6($,Z){await iL1.runStep(()=>zr6(),{name:"monitoringRetention"})}function jK8(){if(EK8)return;EK8=!0;let $=iL1.registerWorkflow(Pr6,{name:"monitoringRetentionWorkflow"});iL1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:jr6,mode:Er6.ExactlyOncePerIntervalWhenActive})}var jr6="23 4 * * *",EK8=!1;var zK8=L(()=>{FG();dL1()});function PK8($){return async(Z,Q)=>{let X=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!X)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let Y=await K3.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let G=await Rs($.db,Z,X.role);return Y.boundAuth=yN1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:G,userId:Q}),Y.access=new Uz(Q,void 0,Y.boundAuth,X.role,"self"),iD(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var AK8=L(()=>{kL();pD()});import{EventEmitter as Ar6}from"events";var pL1;var TK8=L(()=>{Gj();pL1=new Ar6;pL1.on("request",($)=>{jO($)})});function RK8(){return async($,Z)=>{let Q=Date.now(),X=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&X==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=Jd(N.params.name),O=N.params.arguments||{},D=Object.keys(O).map((E)=>Jd(E)),w=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${E5.tool}${B}${E5.dim}(${w})${E5.reset}`}else if(N.method)G=`${E5.dim}${Jd(N.method)}${E5.reset}`}}catch{}}let K=Jd(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";K=`/mcp/${E5.mcp}${Jd(F.slice(0,12))}\u2026${E5.reset}`}else if(Y==="/mcp")K=`${E5.mcp}/mcp${E5.reset}`;else if(Y==="/mcp/registry")K=`${E5.mcp}/mcp/registry${E5.reset}`;let W=Rr6(X),H=J?"\u25C0":"\u2190";if(!l70())console.log(`${E5.dim}${H}${E5.reset} ${W}${X}${E5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Tr6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!l70())console.log(`${E5.dim}${O}${E5.reset} ${W}${X}${E5.reset} ${K}${G?` ${G}`:""} ${N}${U}${E5.reset} ${E5.duration}${B}${E5.reset}`);pL1.emit("request",{method:X,path:Jd(Y),status:U,duration:F,timestamp:new Date})}}}var E5,Tr6=($)=>{if($>=500)return E5.serverError;if($>=400)return E5.clientError;if($>=300)return E5.redirect;return E5.ok},Rr6=($)=>{return E5[$]||E5.reset},Jd=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var IK8=L(()=>{Gj();TK8();E5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as kK8}from"crypto";import{mkdir as Ir6,readdir as qr6,rm as qK8,stat as SK8}from"fs/promises";import{join as tL1,relative as Mr6}from"path";import{z as V$}from"zod";function _K8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return tL1(Vr6,Z)}function vK8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function nL1($,Z){let Q=_K8($),X=vK8(Z);return tL1(Q,X)}function kr6($,Z,Q,X){let Y=C0().encryptionKey||"dev-secret",G=`${$}:${Z}:${Q}:${X}`;return kK8("sha256",Y).update(G).digest("hex")}function VK8($,Z,Q,X,Y){let G=Math.floor(Date.now()/1000)+X,J=kr6(Z,Q,G,Y),K=new URL(`/api/dev-assets/${Z}/${vK8(Q)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function xK8($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${kK8("md5","etag").update(X).digest("hex")}"`}async function fK8($,Z,Q,X,Y){try{let G=await qr6($,{withFileTypes:!0});for(let J of G){let K=tL1($,J.name),H=Mr6(Z,K).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(J.isDirectory())if(X){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await fK8(K,Z,Q,X,Y);else if(J.isFile()){if(X&&Q){let F=H.slice(Q.length);if(F.includes(X)){let U=F.indexOf(X),N=Q+F.slice(0,U+1);Y.commonPrefixes.add(N);continue}}try{let F=await SK8(K);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:xK8(K,F.mtime,F.size)})}catch{}}}}catch{}}function bK8($,Z){let X=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,F=_K8(X);await Ir6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await fK8(F,F,J,W,U),U.objects.sort((w,E)=>w.key.localeCompare(E.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+K),O=N+K<U.objects.length,D=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(Y)=>{let G=Y,J=nL1(X,G.key),K=await SK8(J);return{contentType:MB1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:xK8(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??MK8;return{url:VK8(Z,X,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??MK8;return{url:VK8(Z,X,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(Y)=>{let G=Y,J=nL1(X,G.key);try{return await qK8(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=nL1(X,W);try{await qK8(H),J.push(W)}catch(F){K.push({key:W,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function oL1($,Z,Q){let X=bK8(Z,Q),Y=new WH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:I5});for(let J of X){let K="shape"in J.inputSchema?J.inputSchema.shape:V$.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:V$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new vX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),D3(Y,G,$,"mcp:dev-assets")}async function yK8($,Z,Q,X){let G=bK8(Q,X).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var Vr6="./data/assets",MK8=3600,CK8,gK8;var hK8=L(()=>{j$();ic();t$();Xt();Mx();BX();Xk0();CK8=new W1;CK8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return oL1($.req.raw,Z,X)});gK8=CK8});var uK8={};s(uK8,{mountDevRoutes:()=>Sr6});function Sr6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(X)=>{let Y=X.get("studioContext"),G=new URL(X.req.url),J=`${G.protocol}//${G.host}`;return oL1(X.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(X)=>{let Y=X.get("studioContext"),G=new URL(X.req.url),J=`${G.protocol}//${G.host}`,K=X.req.param("toolName");if(!K)return X.json({error:"Missing tool name"},400);let W=await X.req.json(),H=await yK8(K,W,Y,J);if(H.isError)return X.json(H.content,500);return X.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",gK8);let Q=new W1;Q.use("*",jW({mountPath:"/api/dev-assets"})),Q.route("/",Qk0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var cK8=L(()=>{t$();jB1();Xk0();hK8()});import{sql as Cr6}from"kysely";import{randomUUID as lK8}from"crypto";import{z as _r6}from"zod";async function xr6($){let Z=new Date().toISOString(),Q=lK8(),X=h8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:X,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",X)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:lK8(),event_id:Q,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await Cr6`SELECT
|
|
4482
4482
|
pg_notify('studio_events', ${Q}),
|
|
4483
4483
|
pg_notify('mesh_events', ${Q})
|
|
4484
|
-
`.execute($.db)}catch{}}async function fr6($,Z){let X=(await $.selectFrom("organization").select(["id"]).where("id","=",Z).execute())[0];if(X?.id)return X.id;return(await $.selectFrom("organization").select(["id"]).where("slug","=",Z).execute())[0]?.id??null}async function br6($,Z){let Q=await $.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",Tf).execute();for(let X of Q){let Y=X.settings,G=typeof Y==="string"?(()=>{try{return JSON.parse(Y)}catch{return{}}})():Y??{};if(G.acceptPublishRequests===!0){let J=G.rateLimitWindow==="minute"?"minute":"hour",K=G.rateLimitMax,W=typeof K==="number"&&Number.isFinite(K)&&K>=1?Math.floor(K):dK8;return{acceptPublishRequests:!0,requireApiToken:G.requireApiToken===!0,rateLimitEnabled:G.rateLimitEnabled===void 0?mK8:G.rateLimitEnabled===!0,rateLimitWindow:J,rateLimitMax:W}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:mK8,rateLimitWindow:vr6,rateLimitMax:dK8}}async function yr6($,Z,Q){let X=Q==="minute"?60000:3600000,Y=new Date(Date.now()-X).toISOString(),G=await $.selectFrom("private_registry_publish_request").select((J)=>J.fn.countAll().as("count")).where("organization_id","=",Z).where("created_at",">=",Y).executeTakeFirst();return Number(G?.count??0)}async function gr6($,Z,Q,X){let Y=await $.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Z).where((G)=>G.or([G("id","=",Q),G("title","=",X)])).executeTakeFirst();return Y?{id:String(Y.id),title:String(Y.title)}:null}function iK8($){let{db:Z,db:Q}=$,X=new ph(Q),Y=new nh(Q);return async(G)=>{let J=G.req.param("orgRef")??G.req.param("org");if(!J)return G.json({error:"Organization not found"},404);let K=await fr6(Z,J);if(!K)return G.json({error:"Organization not found"},404);let W=await br6(Z,K);if(!W.acceptPublishRequests)return G.json({error:"Publish requests are not enabled for this registry."},403);if(W.requireApiToken){let B=G.req.header("Authorization"),O=B?.startsWith("Bearer ")?B.slice(7).trim():null;if(!O)return G.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await Y.validate(K,O))return G.json({error:"Invalid API key"},401)}if(W.rateLimitEnabled){if(await yr6(Q,K,W.rateLimitWindow)>=W.rateLimitMax)return G.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:W.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await G.req.json()}catch{return G.json({error:"Invalid JSON body"},400)}let F=j48.safeParse(H);if(!F.success)return G.json({error:"Invalid publish request payload",details:_r6.treeifyError(F.error)},400);let U=await gr6(Q,K,F.data.data.id,F.data.data.title);if(U)return G.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:U},409);let N=await X.createOrUpdate({organization_id:K,requested_id:F.data.data.id,title:F.data.data.title,description:F.data.data.description??null,_meta:F.data.data._meta,server:F.data.data.server,requester_name:F.data.requester?.name??null,requester_email:F.data.requester?.email??null});try{await xr6({db:Z,organizationId:K,request:N})}catch(B){console.warn("[private-registry] failed to emit publish-request event:",B)}return f1.capture({distinctId:F.data.requester?.email??`org:${K}`,event:"registry_publish_request_submitted",groups:{organization:K},properties:{organization_id:K,request_id:N.id,requested_id:N.requested_id,title:F.data.data.title,requester_email:F.data.requester?.email??null}}),G.json({id:N.id,requested_id:N.requested_id,status:N.status},201)}}var mK8=!0,vr6="hour",dK8=100;var pK8=L(()=>{y4();S8();wm();r01();a01();S9()});var nK8={};s(nK8,{createPublishRequestHandler:()=>iK8,createPublicMCPHandler:()=>I48});var tK8=L(()=>{Dm();pK8()});var YW8={};s(YW8,{watchHandler:()=>XW8,resolveCorsOrigin:()=>ZW8,isSsoExemptPath:()=>eK8,isAllowedOAuthRedirectUri:()=>QW8,createApp:()=>rr6});import{readFileSync as hr6}from"fs";import{PrometheusSerializer as ur6}from"@opentelemetry/exporter-prometheus";import{DBOS as pw}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as ir6,oAuthProtectedResourceMetadata as pr6}from"better-auth/plugins";async function cr6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,rK8(oK8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),rK8(oK8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function rK8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}async function lr6($,Z){let{items:Q}=await $.storage.connections.list(Z,{where:{field:["connection_url"],operator:"like",value:`${jZ8}%`},limit:1}),X=Q[0];if(!X?.configuration_state)return null;return X.configuration_state.project_locator}function mr6($){let Z=new URLSearchParams;if($){let[Q,X]=$.split("/");if(Q)Z.set("workspace_hint",Q);if(X)Z.set("project_hint",X)}else Z.set("auto_personal","true");return Z.set("force_new","true"),Z}function eK8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${WB1}/`)}function $W8($){return $==="local.studio.decocms.com"}function ZW8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if($W8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function QW8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||$W8($.hostname)}async function rr6($={}){let Z=$.database??c$(),Q=!1;p5.stop().catch((A0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",A0)});let X,Y,G,J,K=new bL1,W,H,F,U=null;if($.disableNats)W=yL1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,G=null,J=new os,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(A0)=>{return(async()=>{let K0=A0.getReader();try{while(!0){let{done:e0}=await K0.read();if(e0)break}}catch{}finally{K0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=ZK8();let A0=C0().natsCredsPath,K0;if(A0)try{K0=hr6(A0,"utf8")}catch(p){console.error(`[app] failed to read NATS_CREDS at ${A0}; connecting anonymously`,p)}U.init(C0().natsUrls,K0?{creds:K0}:void 0);let e0=L81()?new e$1({getJetStream:()=>U.getJetStream()}):null;e0?.init().catch(()=>{}),X=e0;let R1=new lZ1({getJetStream:()=>U.getJetStream()});R1.init().catch(()=>{}),Y=R1;let u$=new qc(PQ1,{getJetStream:()=>U.getJetStream()}),a4=new qc(AQ1,{getJetStream:()=>U.getJetStream()});u$.init().catch(()=>{}),a4.init().catch(()=>{}),G={reads:u$,cards:a4};let F5=new NG1({getJetStream:()=>U.getJetStream()});F5.init().catch(()=>{}),J=F5,W=yL1({getConnection:()=>U.getConnection()}),H=new gL1({getConnection:()=>U.getConnection()}),F=new cL1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),kZ8(U),U.onReady(()=>{e0?.init().catch((p)=>{console.error("[McpListCache] Deferred init failed:",p)}),R1.init().catch((p)=>{console.error("[SkillCatalogCache] Deferred init failed:",p)}),u$.init().catch((p)=>{console.error("[PrReadCache] Deferred init failed:",p)}),a4.init().catch((p)=>{console.error("[PrCardCache] Deferred init failed:",p)}),F5.init().catch((p)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",p)}),W.start(),ML$(()=>U.getConnection()),F.init().catch((p)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",p)})})}if(nw)await nw();$81(X),dZ1(Y),TQ1(G),BG1(J);let B={storage:new zc(Z.db),sseHub:p5,onThreadFinished:async(A0,K0)=>Mc(new cG(Z.db),A0,K0,new EH(Z.db))},O=new YY1(B),D=new b10(Z.db),w=new lL1(D);w.start(),Lh$(H),H.start((A0)=>{j20(A0),O.execute({type:"CANCEL",taskId:A0}).catch((K0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",K0)})}).catch((A0)=>{console.error("[Decopilot] CancelBroadcast start failed:",A0)}),U?.onReady(()=>{H.start().catch((A0)=>{console.error("[CancelBroadcast] Deferred start failed:",A0)})});let E=()=>U?.getConnection()??null;LB1(E),U?.onReady(()=>LB1(E)),F.init().catch((A0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",A0)}),nw=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),C78(),F.teardown(),X?.teardown(),Y?.teardown(),G?.reads.teardown(),G?.cards.teardown(),K.teardown(),W.teardown(),VL$(),J.teardown(),$81(null),dZ1(null),TQ1(null),BG1(null)};let j=new W1;if(j.use("*",HG1({enabled:(A0)=>km(A0,"debug")==="1"})),j.use("*",Xm0),j.use("/*",RZ8({origin:(A0,K0)=>ZW8(A0,{baseUrl:C0().baseUrl,requestOrigin:new URL(K0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),j.use("*",async(A0,K0)=>{if(await K0(),A0.req.path.includes("/files/"))return;if(A0.req.path.includes("/fs/")&&A0.req.path.endsWith("/read"))return;A0.header("X-Frame-Options","DENY"),A0.header("Content-Security-Policy","frame-ancestors 'none'")}),!C0().noTui)j.use("*",RK8());j.use("*",async(A0,K0)=>{if(await K0(),Fp(A0.req.path))return;if(A0.res.status>=500){let R1=await A0.res.clone().text();console.error(`[5xx Response] ${A0.req.method} ${A0.req.path} - ${A0.res.status}:`,R1)}}),j.get(QX.HEALTH,(A0)=>{if(Q)return A0.json({status:"shutting_down"},503);return A0.json({status:"ok"})}),j.get(QX.HEALTH_LIVE,(A0)=>{return A0.json({status:"ok"})}),j.get(QX.HEALTH_READY,async(A0)=>{if(Q)return A0.json({status:"shutting_down"},503);let K0={};if(K0.postgres={status:await cr6(Z.pool)?"up":"down"},U)K0.nats=U.isConnected()?{status:"up"}:{status:"down"};else K0.nats={status:"down"};let e0=K0.postgres.status==="up",R1=e0?200:503;return A0.json({status:e0?"ready":"not_ready",services:K0},R1)}),j.get(QX.METRICS,async(A0)=>{try{let K0=await Km0.collect(),e0=dr6.serialize(K0.resourceMetrics);return A0.text(e0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K0){return console.error("Failed to collect metrics:",K0),A0.text("# Error collecting metrics",500)}}),j.get(`${QX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(A0)=>{let K0=A0.req.param("queueName");if(!nr6.has(K0))return A0.json({error:`Unknown queue: ${K0}`},404);let e0=await pw.listQueuedWorkflows({queueName:K0,status:"ENQUEUED"});return A0.json({queue_length:e0.length})}),j.route("/api/config",X38),j.route("/api/_reports",O38),j.route("/api/_stripe",kL1),j.route("/api/_github",SL1);let z={db:Z.db,encryptionKey:C0().encryptionKey};j.route("/api/_jira",V38(z)),j.route("/api/_jira",R38(z)),j.route("/report",U38($.clientDir)),j.route("/api/auth/custom",rZ8),j.route("/api/auth/desktop",$78),j.all("/api/auth/admin/*",w78),j.all("/api/auth/*",async(A0)=>{return await G8.handler(A0.req.raw)});let P=N98();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",Vf),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",Vf),j.route("/",P),j.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",_10),j.route("/",w98()),j.use("/oauth-proxy/:connectionId/*",Vf),j.all("/oauth-proxy/:connectionId/*",aK8);let A=async(A0)=>{let e0=await tr6()(A0.req.raw),R1=await e0.json();return Response.json(R1,e0)};j.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",Vf),j.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let I=async(A0)=>{let e0=await or6()(A0.req.raw),R1=await e0.json();return Response.json(R1,e0)};j.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",I);let V=qZ8({ttlMs:120000}),q=await YZ8({db:Z.db,auth:G8,encryption:{key:C0().encryptionKey},observability:{tracer:HO,meter:X$},modelListCache:K,providerKeyCache:W,memberRoleCache:V});K3.set(q);let S=new WX(C0().encryptionKey);x8$({db:Z.db,baseUrl:O9()}),GZ8({db:Z.db}),HZ8({db:Z.db}),C38({db:Z.db,encryptionKey:C0().encryptionKey}),kv$({db:Z.db}),LZ8({db:Z.db}),Qx$({db:Z.db});let i=gG0(Z.db),f=new qo(Z.db),b=PK8({db:Z.db});GG1({storage:i,studioContextFactory:b}),OY1({studioContextFactory:b,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:p5}}),KY1({dispatchRunFn:jg$,studioContextFactory:b,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:p5}});let l=new zc(Z.db),y=new cG(Z.db),n=new EH(Z.db),X0=new mL1(y,b,n);if(C0().taskBoardReviewSweeperEnabled){X0.start();let A0=nw;nw=async()=>{await A0?.(),X0.dispose()}}ug$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let A0=U?.getConnection();return A0?await sK8.jetstreamManager(A0):null},messageParts:l.messageParts(),resolveRun:async(A0)=>{let K0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",A0).executeTakeFirst();return K0?{orgId:K0.organization_id,createdBy:K0.created_by,version:K0.message_storage_version??1,status:K0.status,runFenceToken:K0.run_fence_token,title:K0.title??null}:null},completeRunIfNotCompleted:async(A0,K0)=>{let e0=await l.completeRunIfNotCompleted(A0,K0);if(JS0(p5,K0,A0,e0),e0)await Mc(y,A0,K0,n);return e0},markRunRequiresAction:async(A0,K0)=>{let e0=await l.requiresActionIfInProgress(A0,K0);return JS0(p5,K0,A0,e0),e0},markRunFailed:async(A0,K0,e0,R1)=>{let u$=await l.markRunFailed(A0,K0,e0,R1);if(JS0(p5,K0,A0,u$),u$)await Mc(y,A0,K0,n);return u$},clearSynthesizedError:async(A0,K0)=>{await l.messageParts().replaceMessageParts(A0,$w(A0,K0),[])},persistTitle:(A0,K0,e0)=>l.update(A0,K0,{title:e0}),onTitleUpdated:async({runId:A0,orgId:K0,title:e0})=>{let R1=await l.get(A0,K0).catch(()=>null);p5.emit(K0,ZH(A0,R1?.status??"in_progress",{title:e0,virtualMcpId:R1?.virtual_mcp_id??void 0,createdBy:R1?.created_by,triggerId:R1?.trigger_id,branch:R1?.branch??null,harnessId:R1?.harness_id??void 0,createdAt:R1?.created_at,updatedAt:R1?.updated_at}))},bumpProgress:async({runId:A0,orgId:K0})=>{await l.bumpProgress(A0,K0)},recordCompleted:async({runId:A0,orgId:K0,distinctId:e0,usage:R1})=>{f1.capture({distinctId:e0,event:"chat_message_completed",groups:{organization:K0},properties:{organization_id:K0,thread_id:A0,transport:"projector",input_tokens:R1.inputTokens,output_tokens:R1.outputTokens,total_tokens:R1.totalTokens}})},recordFailed:async({runId:A0,orgId:K0,distinctId:e0,reason:R1,kind:u$})=>{f1.capture({distinctId:e0,event:"chat_message_failed",groups:{organization:K0},properties:{organization_id:K0,thread_id:A0,transport:"projector",error_category:u$,error_message:R1}})},purgeRun:async(A0)=>{F.purge(A0)}}),iy$({studioContextFactory:b,systemDatabaseUrl:Bm0(C0().databaseUrl,C0().databasePgSsl),streamBuffer:F}),jK8(),f8$(),KZ8(),UZ8(),x38(),xv$(),wZ8(),Xx$();let L0=async(A0,K0,e0)=>{let R1=await i.findById(A0,K0);if(!R1)throw Error("Automation not found");return WG1({automationId:R1.id,organizationId:R1.organization_id,triggerId:null})},a=new _m(i,({automation:A0,trigger:K0,contextMessages:e0,idempotencyKey:R1})=>ts({automationId:A0.id,organizationId:A0.organization_id,triggerId:K0.id,contextMessages:e0},{idempotencyKey:R1})),o=[n3(),My(),PU()];for(let A0 of o)HS0(A0).then(()=>{}).catch((K0)=>console.error("[monitoring] Retention cleanup failed:",K0));let D0=()=>G8.api.deleteAllExpiredApiKeys().catch((A0)=>console.error("[auth] Expired API key cleanup failed:",A0));D0(),setInterval(D0,86400000).unref(),j.use("*",async(A0,K0)=>{if(Zm0(A0.req.path))return K0();let e0={measure:async(u$,a4)=>{L3(A0,u$);try{return await a4()}finally{pG(A0,u$)}}},R1=await K3.create(A0.req.raw,{timings:e0});R1.automationRunner=L0,A0.set("studioContext",R1);try{await K0()}finally{let u$=R1.pendingRevalidations;if(u$.length>0)Promise.race([Promise.allSettled(u$),F$(30000)]).catch((F5)=>console.error("[studio] revalidation cleanup error:",F5))}}),j.use("/api/:org/decopilot/*",qf),j.use("/api/:org/v1/*",qf),j.use("/api/:org/files/*",qf),j.use("*",async(A0,K0)=>{if(eK8(A0.req.path))return K0();let e0=A0.get("studioContext");if(!e0?.organization?.id||!e0?.auth?.user?.id)return K0();if(!(await e0.storage.orgSsoConfig.getByOrgId(e0.organization.id))?.enforced)return K0();if(!await e0.storage.orgSsoSessions.isValid(e0.auth.user.id,e0.organization.id))return A0.json({error:"SSO authentication required for this organization"},403);return K0()});let e=new W1;e.use("*",jW({mountPath:"/api/org-sso"})),e.route("/",dV0()),j.route("/api/org-sso",e),j.get("/api/tools/management",(A0)=>{return A0.json({tools:$11,grouped:Fz()})}),j.use("/mcp/*",async(A0,K0)=>{L3(A0,"mcp");try{return await K0()}finally{pG(A0,"mcp")}});let E0=async(A0,K0)=>{let e0=A0.var.studioContext;if(!e0.auth.user?.id&&!e0.auth.apiKey?.id){let R1=new URL(A0.req.url),u$=A0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),a4=u$?`${u$}://${R1.host}`:R1.origin;return A0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${a4}${R1.pathname}/.well-known/oauth-protected-resource"`}})}return await K0()};if(j.use("/mcp/:connectionId?",E0),j.use("/mcp/gateway/:virtualMcpId?",E0),j.use("/mcp/virtual-mcp/:virtualMcpId?",E0),j.use("/mcp/self",E0),NY()){let{mountDevRoutes:A0}=(cK8(),LS0(uK8));A0(j,E0)}let h0=new W1;h0.use("*",jW({mountPath:"/mcp"})),h0.route("/",$R0()),j.route("/mcp",h0);let M0=new W1;M0.use("*",jW({mountPath:"/mcp/self"})),M0.route("/",_k0()),j.route("/mcp/self",M0);let l0=new W1;l0.use("*",jW({mountPath:"/mcp"})),l0.route("/",XR0()),j.route("/mcp",l0),j.use("/api/:org/models/*",async(A0,K0)=>{L3(A0,"llm_models");try{return await K0()}finally{pG(A0,"llm_models")}});let G0=v78({cancelBroadcast:H,streamBuffer:F,runRegistry:O});j.route("/api",G0),j.use("/api/:org/files/*",qf),j.route("/api",g38);let j0=new W1;j0.use("*",jW({mountPath:"/api"})),j0.route("/",vk0()),j.route("/api",j0),j.route("/api",sJ8);let P0=new W1;P0.use("*",jW({mountPath:"/api"})),P0.route("/",xk0({tokenStorage:f,automationEventDispatcher:a})),j.route("/api",P0);let k0=new Vo(Z.db),Z0=new W1;Z0.use("*",jW({mountPath:"/api"})),Z0.route("/",rV0()),j.route("/api",Z0),j.route("/api/deco-sites",n78()),j.route("/api/deco-apps",pJ8());let Y0=new W1;Y0.use("*",jW({mountPath:"/api/deco-sites"})),Y0.route("/",sV0()),j.route("/api/deco-sites",Y0);let{createPublishRequestHandler:S0,createPublicMCPHandler:U0}=await Promise.resolve().then(() => (tK8(),nK8)),O0={db:Z.db,vault:{encrypt:(A0)=>S.encrypt(A0),decrypt:(A0)=>S.decrypt(A0)}},z1=S0(O0),v0=U0(O0);j.use("/org/:orgRef/registry/publish-request",Vf),j.post("/org/:orgRef/registry/publish-request",z1),j.use("/org/:orgSlug/registry/*",Vf),j.all("/org/:orgSlug/registry/*",v0),j.post("/api/:org/registry/publish-request",z1),j.all("/api/:org/registry/*",v0),j.route(WB1,E78()),j.route("/api/_editor-resolve",$38()),j.route(Q78,X78());let n0=dJ8({kvStorage:k0,runRegistry:O,streamBuffer:F,sseHub:p5,cancelBroadcast:H,tokenStorage:f,automationEventDispatcher:a,mountDevAssets:NY(),mcpAuth:E0,oauthProxyHandler:aK8,watchHandler:XW8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return j.route("/api/:org",n0),j.notFound((A0)=>{return A0.json({error:"Not Found",path:A0.req.path},404)}),j.onError(b78),Object.assign(j,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([p5.stop(),nw?Promise.resolve(nw()).finally(()=>{nw=null}):Promise.resolve()]),U)await U.drain().catch((A0)=>console.error("[shutdown] NATS drain error:",A0));console.log("[shutdown] Flushing telemetry..."),await tX().catch((A0)=>console.error("[shutdown] Telemetry flush error:",A0)),console.log("[shutdown] Closing database..."),await NO(Z).catch((A0)=>console.error("[shutdown] Database close error:",A0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await pw.registerQueue(MJ,{partitionQueue:!0,concurrency:QG1,minPollingIntervalMs:XG1}),await pw.registerQueue(a3,{partitionQueue:!0,concurrency:NY1,priorityEnabled:!0}),await pw.registerQueue(RU,{workerConcurrency:C0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await pw.registerQueue(IU,{workerConcurrency:C0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await pw.registerQueue(PO,{partitionQueue:!0,concurrency:dy$}),await pw.registerQueue(Kj,Zx$),await zB1(i),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((A0)=>pw.deleteQueue(A0))),await YG1(Z.pool),IB$().catch((A0)=>{console.error("[studio-pack-backfill] failed:",A0)}),b8$().catch((A0)=>{console.error("[org-fs] public-sets boot sync kick failed:",A0)})}})}var sK8,oK8=5000,nw=null,aK8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),X=Q[Q.length-1],Y=$.get("studioContext");if(!Y)Y=await K3.create($.req.raw),$.set("studioContext",Y);let G=$.req.param("org")?Y.organization?.id:void 0,J=await Y.storage.connections.findById(Z,G);if(!J?.connection_url)return $.json({error:"Connection not found"},404);if(X==="register"&&J.oauth_config?.clientId)return $.json({client_id:J.oauth_config.clientId,...J.oauth_config.clientSecret?{client_secret:J.oauth_config.clientSecret}:{},client_secret_expires_at:0});let K=await qm(J.connection_url),W,H=new URL(J.connection_url),U=(typeof J.metadata?.oauthResource==="string"&&J.metadata.oauthResource.length>0?J.metadata.oauthResource:void 0)??J.connection_url;if(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let N=await v10(W);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(X==="authorize")O=B.authorization_endpoint;else if(X==="token")O=B.token_endpoint;else if(X==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let D=D98(O);if(D)return D;let w=new URL(O),E=new URL($.req.url);if(w.search=E.search,X==="authorize"){let f=w.searchParams.get("redirect_uri");if(f){let b=C0().baseUrl??E.origin;try{if(!QW8(new URL(f),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}w.searchParams.set("redirect_uri",f)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(zZ8(J.connection_url))try{let b=await lr6(Y,J.organization_id),l=mr6(b);for(let[y,n]of l)w.searchParams.set(y,n)}catch(b){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",b)}return $.redirect(w.toString(),302)}let j={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)j["Content-Type"]=z;let P=$.req.header("Authorization");if(P)j.Authorization=P;let A,I=null,V=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(P?.toLowerCase().startsWith("basic "))try{let n=atob(P.slice(6).trim()),X0=n.indexOf(":");if(X0!==-1){let L0=decodeURIComponent(n.slice(0,X0)),a=decodeURIComponent(n.slice(X0+1));I=L0||null,V=a||null}}catch{}let f=await $.req.formData();if(f.has("resource"))f.set("resource",U);let b=f.get("client_id"),l=f.get("client_secret");if(typeof b==="string"&&b)I=b;if(typeof l==="string"&&l)V=l;let y=new URLSearchParams;for(let[n,X0]of f.entries())y.append(n,X0.toString());A=y.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let f=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst(),b=await $.req.text(),l={};try{l=b?JSON.parse(b):{}}catch{A=b}let y=typeof l==="object"&&l!==null&&!Array.isArray(l);if(A===void 0&&!y)A=b;if(A===void 0){let n=l,X0=n.metadata&&typeof n.metadata==="object"?n.metadata:{};n.metadata={...X0,organization_id:J.organization_id,...f?.slug?{organization_slug:f.slug}:{},...f?.name?{organization_name:f.name}:{}},A=JSON.stringify(n),j["Content-Type"]="application/json"}}else A=$.req.raw.body??void 0;let q=await fetch(w.toString(),{method:$.req.method,headers:j,body:A,duplex:"half",redirect:"manual"}),S=new Headers,i=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[f,b]of q.headers.entries())if(!i.includes(f.toLowerCase()))S.set(f,b);if(X==="token"&&q.ok){let f=await q.text();try{let b=JSON.parse(f);if(typeof b.access_token==="string"&&b.access_token){let l=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,y=null;try{y=await Mm(J.connection_url)??O}catch{y=O}let n={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:l,clientId:I,clientSecret:V,tokenEndpoint:y};await new Z5(Y.db,Y.vault).upsert(n)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(f,{status:q.status,statusText:q.statusText,headers:S})}return new Response(q.body,{status:q.status,statusText:q.statusText,headers:S})},XW8=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),G=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,J=crypto.randomUUID();return DB($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:J,organizationId:X,typePatterns:G,connectedAt:new Date().toISOString()})}),!p5.add({id:J,organizationId:X,typePatterns:G?.length?G:null,push:(F)=>{K.writeSSE({id:F.id,event:F.type,data:JSON.stringify(F)}).catch(()=>{p5.remove(X,J)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((F)=>{K.onAbort(()=>{clearInterval(H),p5.remove(X,J),F()})})})},dr6,nr6,tr6=()=>pr6(G8),or6=()=>ir6(G8);var GW8=L(()=>{t8();j$();y8$();WZ8();NZ8();QQ1();EZ8();ws();y5();xz();S8();t$();bV0();IZ8();FG1();VG();pD();nN1();WQ();H6();y4();$B1();Z78();Y78();j78();NB1();x78();EB1();dJ();RV0();jB1();y78();gV0();iJ8();TB1();nJ8();ZR0();rs();eJ8();YR0();oO1();Z38();Y38();N38();L38();A38();T38();I38();k38();f38();h38();tO1();pO1();aZ0();_O();QK8();UY();lA0();qQ1();Mr();kr();LG1();XK8();GK8();DB1();NK8();GY1();BK8();VT0();sG0();vN();n5();IN1();DK8();zK8();J30();dL1();FG();PB1();_N();QY1();J30();k20();u01();c01();AK8();th();IK8();am();nN1();bc();z20();sK8=k(_U(),1);dr6=new ur6,nr6=new Set([MJ,a3,RU,IU,PO,Kj])});var HW8={};s(HW8,{resolveClientDir:()=>Xa6,resolveAssetPathWithTraversalCheck:()=>WW8,isPathWithinDirectory:()=>KW8,createAssetHandler:()=>Ya6});import{resolve as C$0,dirname as ar6,join as sr6,extname as er6,basename as $a6,sep as JW8}from"path";function Za6($,Z){if($===Z||$a6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${JW8}assets${JW8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function KW8($,Z){let Q=C$0(Z),X=C$0($);return X===Q||X.startsWith(Q+"/")}function WW8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=C$0(Z,Q);if(!KW8(X,Z))return null;return X}function Xa6($,Z="../client"){let Q=new URL($),X=ar6(Q.pathname);return C$0(X,Z)}function Ya6($={}){let{env:Z="production",clientDir:Q=Qa6,isServerPath:X=()=>!1}=$;if(Z==="development")return async function(G){return null};return async function(G){if(G.method!=="GET")return null;let J=new URL(G.url),K;try{K=decodeURIComponent(J.pathname)}catch{return null}if(X(K))return null;let W=WW8({requestPath:K,clientDir:Q});if(!W)return null;let H=sr6(W,"index.html"),F=C$0(Q,"index.html"),U=G.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(er6(W))?[H,F]:[];for(let O of[W,...B])try{let D=Bun.file(O);if(await D.exists())return new Response(D,{headers:Za6(O,F)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var Qa6="./dist/client";var FW8=()=>{};var UW8={};s(UW8,{tryUpgradePreviewWs:()=>Ua6,tryHandlePreviewHttp:()=>Fa6,previewWebSocketHandler:()=>Na6,parsePreviewBaseDomain:()=>Ha6,isPreviewWsData:()=>FS0,extractHandleFromHost:()=>rL1});function Ka6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function Wa6(){return new Response(Ja6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function Ha6($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let X=Q.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function rL1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),X=(Q>=0?$.slice(0,Q):$).toLowerCase(),G=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(G))return null;let J=X.slice(0,X.length-G.length);if(!J||J.includes("."))return null;return J}async function Fa6($,Z){let Q=rL1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return v$0(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(fv)&&Ka6($))return Wa6();return Y.headers.delete(fv),Y}function v$0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function FS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function Ua6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=rL1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return v$0(503,"preview proxy not configured");let G=await Y.resolvePreviewUpstreamUrl(X);if(!G)return v$0(404,"sandbox not found");let J=new URL($.url);if(J.pathname.startsWith("/_sandbox"))return v$0(404,"not found");let K=`${G.replace(/^http/,"ws")}${J.pathname}${J.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return v$0(426,"upgrade failed");return}function _$0($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var Ga6=256,Ja6='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',Na6;var NW8=L(()=>{TZ1();Na6={open($){let Z=$.data;if(!FS0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),_$0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)Q.send(X)}}),Q.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),Q.addEventListener("close",(X)=>{_$0($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{_$0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!FS0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=Ga6){_$0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!FS0(Z))return;_$0($,Z,1000,"")}}});var Sa6={};import{existsSync as za6}from"fs";function QD1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function Ta6($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(Aa6))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function ka6($){let Z;try{Z=await Ba6.create({systemDatabaseUrl:QD1(eY.databaseUrl,eY.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:a3,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=Q.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:a3}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function NS0($){if(DW8)return;DW8=!0,console.log(`
|
|
4484
|
+
`.execute($.db)}catch{}}async function fr6($,Z){let X=(await $.selectFrom("organization").select(["id"]).where("id","=",Z).execute())[0];if(X?.id)return X.id;return(await $.selectFrom("organization").select(["id"]).where("slug","=",Z).execute())[0]?.id??null}async function br6($,Z){let Q=await $.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",Tf).execute();for(let X of Q){let Y=X.settings,G=typeof Y==="string"?(()=>{try{return JSON.parse(Y)}catch{return{}}})():Y??{};if(G.acceptPublishRequests===!0){let J=G.rateLimitWindow==="minute"?"minute":"hour",K=G.rateLimitMax,W=typeof K==="number"&&Number.isFinite(K)&&K>=1?Math.floor(K):dK8;return{acceptPublishRequests:!0,requireApiToken:G.requireApiToken===!0,rateLimitEnabled:G.rateLimitEnabled===void 0?mK8:G.rateLimitEnabled===!0,rateLimitWindow:J,rateLimitMax:W}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:mK8,rateLimitWindow:vr6,rateLimitMax:dK8}}async function yr6($,Z,Q){let X=Q==="minute"?60000:3600000,Y=new Date(Date.now()-X).toISOString(),G=await $.selectFrom("private_registry_publish_request").select((J)=>J.fn.countAll().as("count")).where("organization_id","=",Z).where("created_at",">=",Y).executeTakeFirst();return Number(G?.count??0)}async function gr6($,Z,Q,X){let Y=await $.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Z).where((G)=>G.or([G("id","=",Q),G("title","=",X)])).executeTakeFirst();return Y?{id:String(Y.id),title:String(Y.title)}:null}function iK8($){let{db:Z,db:Q}=$,X=new ph(Q),Y=new nh(Q);return async(G)=>{let J=G.req.param("orgRef")??G.req.param("org");if(!J)return G.json({error:"Organization not found"},404);let K=await fr6(Z,J);if(!K)return G.json({error:"Organization not found"},404);let W=await br6(Z,K);if(!W.acceptPublishRequests)return G.json({error:"Publish requests are not enabled for this registry."},403);if(W.requireApiToken){let B=G.req.header("Authorization"),O=B?.startsWith("Bearer ")?B.slice(7).trim():null;if(!O)return G.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await Y.validate(K,O))return G.json({error:"Invalid API key"},401)}if(W.rateLimitEnabled){if(await yr6(Q,K,W.rateLimitWindow)>=W.rateLimitMax)return G.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:W.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await G.req.json()}catch{return G.json({error:"Invalid JSON body"},400)}let F=j48.safeParse(H);if(!F.success)return G.json({error:"Invalid publish request payload",details:_r6.treeifyError(F.error)},400);let U=await gr6(Q,K,F.data.data.id,F.data.data.title);if(U)return G.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:U},409);let N=await X.createOrUpdate({organization_id:K,requested_id:F.data.data.id,title:F.data.data.title,description:F.data.data.description??null,_meta:F.data.data._meta,server:F.data.data.server,requester_name:F.data.requester?.name??null,requester_email:F.data.requester?.email??null});try{await xr6({db:Z,organizationId:K,request:N})}catch(B){console.warn("[private-registry] failed to emit publish-request event:",B)}return f1.capture({distinctId:F.data.requester?.email??`org:${K}`,event:"registry_publish_request_submitted",groups:{organization:K},properties:{organization_id:K,request_id:N.id,requested_id:N.requested_id,title:F.data.data.title,requester_email:F.data.requester?.email??null}}),G.json({id:N.id,requested_id:N.requested_id,status:N.status},201)}}var mK8=!0,vr6="hour",dK8=100;var pK8=L(()=>{y4();S8();wm();r01();a01();S9()});var nK8={};s(nK8,{createPublishRequestHandler:()=>iK8,createPublicMCPHandler:()=>I48});var tK8=L(()=>{Dm();pK8()});var YW8={};s(YW8,{watchHandler:()=>XW8,resolveCorsOrigin:()=>ZW8,isSsoExemptPath:()=>eK8,isAllowedOAuthRedirectUri:()=>QW8,createApp:()=>rr6});import{readFileSync as hr6}from"fs";import{PrometheusSerializer as ur6}from"@opentelemetry/exporter-prometheus";import{DBOS as pw}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as ir6,oAuthProtectedResourceMetadata as pr6}from"better-auth/plugins";async function cr6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,rK8(oK8)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),rK8(oK8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function rK8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}async function lr6($,Z){let{items:Q}=await $.storage.connections.list(Z,{where:{field:["connection_url"],operator:"like",value:`${jZ8}%`},limit:1}),X=Q[0];if(!X?.configuration_state)return null;return X.configuration_state.project_locator}function mr6($){let Z=new URLSearchParams;if($){let[Q,X]=$.split("/");if(Q)Z.set("workspace_hint",Q);if(X)Z.set("project_hint",X)}else Z.set("auto_personal","true");return Z.set("force_new","true"),Z}function eK8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${WB1}/`)}function $W8($){return $==="local.studio.decocms.com"}function ZW8($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if($W8(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function QW8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||$W8($.hostname)}async function rr6($={}){let Z=$.database??c$(),Q=!1;p5.stop().catch((A0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",A0)});let X,Y,G,J,K=new bL1,W,H,F,U=null;if($.disableNats)W=yL1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,G=null,J=new os,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(A0)=>{return(async()=>{let K0=A0.getReader();try{while(!0){let{done:e0}=await K0.read();if(e0)break}}catch{}finally{K0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=ZK8();let A0=C0().natsCredsPath,K0;if(A0)try{K0=hr6(A0,"utf8")}catch(p){console.error(`[app] failed to read NATS_CREDS at ${A0}; connecting anonymously`,p)}U.init(C0().natsUrls,K0?{creds:K0}:void 0);let e0=L81()?new e$1({getJetStream:()=>U.getJetStream()}):null;e0?.init().catch(()=>{}),X=e0;let R1=new lZ1({getJetStream:()=>U.getJetStream()});R1.init().catch(()=>{}),Y=R1;let u$=new qc(PQ1,{getJetStream:()=>U.getJetStream()}),a4=new qc(AQ1,{getJetStream:()=>U.getJetStream()});u$.init().catch(()=>{}),a4.init().catch(()=>{}),G={reads:u$,cards:a4};let F5=new NG1({getJetStream:()=>U.getJetStream()});F5.init().catch(()=>{}),J=F5,W=yL1({getConnection:()=>U.getConnection()}),H=new gL1({getConnection:()=>U.getConnection()}),F=new cL1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),kZ8(U),U.onReady(()=>{e0?.init().catch((p)=>{console.error("[McpListCache] Deferred init failed:",p)}),R1.init().catch((p)=>{console.error("[SkillCatalogCache] Deferred init failed:",p)}),u$.init().catch((p)=>{console.error("[PrReadCache] Deferred init failed:",p)}),a4.init().catch((p)=>{console.error("[PrCardCache] Deferred init failed:",p)}),F5.init().catch((p)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",p)}),W.start(),ML$(()=>U.getConnection()),F.init().catch((p)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",p)})})}if(nw)await nw();$81(X),dZ1(Y),TQ1(G),BG1(J);let B={storage:new zc(Z.db),sseHub:p5,onThreadFinished:async(A0,K0)=>Mc(new cG(Z.db),A0,K0,new EH(Z.db))},O=new YY1(B),D=new b10(Z.db),w=new lL1(D);w.start(),Lh$(H),H.start((A0)=>{j20(A0),O.execute({type:"CANCEL",taskId:A0}).catch((K0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",K0)})}).catch((A0)=>{console.error("[Decopilot] CancelBroadcast start failed:",A0)}),U?.onReady(()=>{H.start().catch((A0)=>{console.error("[CancelBroadcast] Deferred start failed:",A0)})});let E=()=>U?.getConnection()??null;LB1(E),U?.onReady(()=>LB1(E)),F.init().catch((A0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",A0)}),nw=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),C78(),F.teardown(),X?.teardown(),Y?.teardown(),G?.reads.teardown(),G?.cards.teardown(),K.teardown(),W.teardown(),VL$(),J.teardown(),$81(null),dZ1(null),TQ1(null),BG1(null)};let j=new W1;if(j.use("*",HG1({enabled:(A0)=>km(A0,"debug")==="1"})),j.use("*",Xm0),j.use("/*",RZ8({origin:(A0,K0)=>ZW8(A0,{baseUrl:C0().baseUrl,requestOrigin:new URL(K0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),j.use("*",async(A0,K0)=>{if(await K0(),A0.req.path.includes("/files/"))return;if(A0.req.path.includes("/fs/")&&A0.req.path.endsWith("/read"))return;A0.header("X-Frame-Options","DENY"),A0.header("Content-Security-Policy","frame-ancestors 'none'")}),!C0().noTui)j.use("*",RK8());j.use("*",async(A0,K0)=>{if(await K0(),Fp(A0.req.path))return;if(A0.res.status>=500){let R1=await A0.res.clone().text();console.error(`[5xx Response] ${A0.req.method} ${A0.req.path} - ${A0.res.status}:`,R1)}}),j.get(QX.HEALTH,(A0)=>{if(Q)return A0.json({status:"shutting_down"},503);return A0.json({status:"ok"})}),j.get(QX.HEALTH_LIVE,(A0)=>{return A0.json({status:"ok"})}),j.get(QX.HEALTH_READY,async(A0)=>{if(Q)return A0.json({status:"shutting_down"},503);let K0={};if(K0.postgres={status:await cr6(Z.pool)?"up":"down"},U)K0.nats=U.isConnected()?{status:"up"}:{status:"down"};else K0.nats={status:"down"};let e0=K0.postgres.status==="up",R1=e0?200:503;return A0.json({status:e0?"ready":"not_ready",services:K0},R1)}),j.get(QX.METRICS,async(A0)=>{try{let K0=await Km0.collect(),e0=dr6.serialize(K0.resourceMetrics);return A0.text(e0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(K0){return console.error("Failed to collect metrics:",K0),A0.text("# Error collecting metrics",500)}}),j.get(`${QX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(A0)=>{let K0=A0.req.param("queueName");if(!nr6.has(K0))return A0.json({error:`Unknown queue: ${K0}`},404);let e0=await pw.listQueuedWorkflows({queueName:K0,status:"ENQUEUED"});return A0.json({queue_length:e0.length})}),j.route("/api/config",X38),j.route("/api/_reports",O38),j.route("/api/_stripe",kL1),j.route("/api/_github",SL1);let z={db:Z.db,encryptionKey:C0().encryptionKey};j.route("/api/_jira",V38(z)),j.route("/api/_jira",R38(z)),j.route("/report",U38($.clientDir)),j.route("/api/auth/custom",rZ8),j.route("/api/auth/desktop",$78),j.all("/api/auth/admin/*",w78),j.all("/api/auth/*",async(A0)=>{return await G8.handler(A0.req.raw)});let P=N98();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",Vf),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",Vf),j.route("/",P),j.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",_10),j.route("/",w98()),j.use("/oauth-proxy/:connectionId/*",Vf),j.all("/oauth-proxy/:connectionId/*",aK8);let A=async(A0)=>{let e0=await tr6()(A0.req.raw),R1=await e0.json();return Response.json(R1,e0)};j.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",Vf),j.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let I=async(A0)=>{let e0=await or6()(A0.req.raw),R1=await e0.json();return Response.json(R1,e0)};j.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",I);let V=qZ8({ttlMs:120000}),q=await YZ8({db:Z.db,auth:G8,encryption:{key:C0().encryptionKey},observability:{tracer:HO,meter:X$},modelListCache:K,providerKeyCache:W,memberRoleCache:V});K3.set(q);let S=new WX(C0().encryptionKey);x8$({db:Z.db,baseUrl:O9()}),GZ8({db:Z.db}),HZ8({db:Z.db}),C38({db:Z.db,encryptionKey:C0().encryptionKey}),kv$({db:Z.db}),LZ8({db:Z.db}),Qx$({db:Z.db});let i=gG0(Z.db),f=new qo(Z.db),b=PK8({db:Z.db});GG1({storage:i,studioContextFactory:b}),OY1({studioContextFactory:b,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:p5}}),KY1({dispatchRunFn:jg$,studioContextFactory:b,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:p5}});let l=new zc(Z.db),y=new cG(Z.db),n=new EH(Z.db),X0=new mL1(y,b,n);if(C0().taskBoardReviewSweeperEnabled){X0.start();let A0=nw;nw=async()=>{await A0?.(),X0.dispose()}}ug$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let A0=U?.getConnection();return A0?await sK8.jetstreamManager(A0):null},messageParts:l.messageParts(),resolveRun:async(A0)=>{let K0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",A0).executeTakeFirst();return K0?{orgId:K0.organization_id,createdBy:K0.created_by,version:K0.message_storage_version??1,status:K0.status,runFenceToken:K0.run_fence_token,title:K0.title??null}:null},completeRunIfNotCompleted:async(A0,K0)=>{let e0=await l.completeRunIfNotCompleted(A0,K0);if(JS0(p5,K0,A0,e0),e0)await Mc(y,A0,K0,n);return e0},markRunRequiresAction:async(A0,K0)=>{let e0=await l.requiresActionIfInProgress(A0,K0);return JS0(p5,K0,A0,e0),e0},markRunFailed:async(A0,K0,e0,R1)=>{let u$=await l.markRunFailed(A0,K0,e0,R1);if(JS0(p5,K0,A0,u$),u$)await Mc(y,A0,K0,n);return u$},clearSynthesizedError:async(A0,K0)=>{await l.messageParts().replaceMessageParts(A0,$w(A0,K0),[])},persistTitle:(A0,K0,e0)=>l.update(A0,K0,{title:e0}),onTitleUpdated:async({runId:A0,orgId:K0,title:e0})=>{let R1=await l.get(A0,K0).catch(()=>null);p5.emit(K0,ZH(A0,R1?.status??"in_progress",{title:e0,virtualMcpId:R1?.virtual_mcp_id??void 0,createdBy:R1?.created_by,triggerId:R1?.trigger_id,branch:R1?.branch??null,harnessId:R1?.harness_id??void 0,createdAt:R1?.created_at,updatedAt:R1?.updated_at}))},bumpProgress:async({runId:A0,orgId:K0})=>{await l.bumpProgress(A0,K0)},recordCompleted:async({runId:A0,orgId:K0,distinctId:e0,usage:R1})=>{f1.capture({distinctId:e0,event:"chat_message_completed",groups:{organization:K0},properties:{organization_id:K0,thread_id:A0,transport:"projector",input_tokens:R1.inputTokens,output_tokens:R1.outputTokens,total_tokens:R1.totalTokens}})},recordFailed:async({runId:A0,orgId:K0,distinctId:e0,reason:R1,kind:u$})=>{f1.capture({distinctId:e0,event:"chat_message_failed",groups:{organization:K0},properties:{organization_id:K0,thread_id:A0,transport:"projector",error_category:u$,error_message:R1}})},purgeRun:async(A0)=>{F.purge(A0)}}),iy$({studioContextFactory:b,systemDatabaseUrl:Bm0(C0().databaseUrl,C0().databasePgSsl),streamBuffer:F}),jK8(),f8$(),KZ8(),UZ8(),x38(),xv$(),wZ8(),Xx$();let L0=async(A0,K0,e0)=>{let R1=await i.findById(A0,K0);if(!R1)throw Error("Automation not found");return WG1({automationId:R1.id,organizationId:R1.organization_id,triggerId:null})},a=new _m(i,({automation:A0,trigger:K0,contextMessages:e0,idempotencyKey:R1})=>ts({automationId:A0.id,organizationId:A0.organization_id,triggerId:K0.id,contextMessages:e0},{idempotencyKey:R1})),o=[n3(),My(),PU()];for(let A0 of o)HS0(A0).then(()=>{}).catch((K0)=>console.error("[monitoring] Retention cleanup failed:",K0));let D0=()=>G8.api.deleteAllExpiredApiKeys().catch((A0)=>console.error("[auth] Expired API key cleanup failed:",A0));D0(),setInterval(D0,86400000).unref(),j.use("*",async(A0,K0)=>{if(Zm0(A0.req.path))return K0();let e0={measure:async(u$,a4)=>{L3(A0,u$);try{return await a4()}finally{pG(A0,u$)}}},R1=await K3.create(A0.req.raw,{timings:e0});R1.automationRunner=L0,A0.set("studioContext",R1);try{await K0()}finally{let u$=R1.pendingRevalidations;if(u$.length>0)Promise.race([Promise.allSettled(u$),F$(30000)]).catch((F5)=>console.error("[studio] revalidation cleanup error:",F5))}}),j.use("/api/:org/decopilot/*",qf),j.use("/api/:org/v1/*",qf),j.use("/api/:org/files/*",qf),j.use("*",async(A0,K0)=>{if(eK8(A0.req.path))return K0();let e0=A0.get("studioContext");if(!e0?.organization?.id||!e0?.auth?.user?.id)return K0();if(!(await e0.storage.orgSsoConfig.getByOrgId(e0.organization.id))?.enforced)return K0();if(!await e0.storage.orgSsoSessions.isValid(e0.auth.user.id,e0.organization.id))return A0.json({error:"SSO authentication required for this organization"},403);return K0()});let e=new W1;e.use("*",jW({mountPath:"/api/org-sso"})),e.route("/",dV0()),j.route("/api/org-sso",e),j.get("/api/tools/management",(A0)=>{return A0.json({tools:$11,grouped:Fz()})}),j.use("/mcp/*",async(A0,K0)=>{L3(A0,"mcp");try{return await K0()}finally{pG(A0,"mcp")}});let E0=async(A0,K0)=>{let e0=A0.var.studioContext;if(!e0.auth.user?.id&&!e0.auth.apiKey?.id){let R1=new URL(A0.req.url),u$=A0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),a4=u$?`${u$}://${R1.host}`:R1.origin;return A0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${a4}${R1.pathname}/.well-known/oauth-protected-resource"`}})}return await K0()};if(j.use("/mcp/:connectionId?",E0),j.use("/mcp/gateway/:virtualMcpId?",E0),j.use("/mcp/virtual-mcp/:virtualMcpId?",E0),j.use("/mcp/self",E0),NY()){let{mountDevRoutes:A0}=(cK8(),LS0(uK8));A0(j,E0)}let h0=new W1;h0.use("*",jW({mountPath:"/mcp"})),h0.route("/",$R0()),j.route("/mcp",h0);let M0=new W1;M0.use("*",jW({mountPath:"/mcp/self"})),M0.route("/",_k0()),j.route("/mcp/self",M0);let l0=new W1;l0.use("*",jW({mountPath:"/mcp"})),l0.route("/",XR0()),j.route("/mcp",l0),j.use("/api/:org/models/*",async(A0,K0)=>{L3(A0,"llm_models");try{return await K0()}finally{pG(A0,"llm_models")}});let G0=v78({cancelBroadcast:H,streamBuffer:F,runRegistry:O});j.route("/api",G0),j.use("/api/:org/files/*",qf),j.route("/api",g38);let j0=new W1;j0.use("*",jW({mountPath:"/api"})),j0.route("/",vk0()),j.route("/api",j0),j.route("/api",sJ8);let P0=new W1;P0.use("*",jW({mountPath:"/api"})),P0.route("/",xk0({tokenStorage:f,automationEventDispatcher:a})),j.route("/api",P0);let k0=new Vo(Z.db),Z0=new W1;Z0.use("*",jW({mountPath:"/api"})),Z0.route("/",rV0()),j.route("/api",Z0),j.route("/api/deco-sites",n78()),j.route("/api/deco-apps",pJ8());let Y0=new W1;Y0.use("*",jW({mountPath:"/api/deco-sites"})),Y0.route("/",sV0()),j.route("/api/deco-sites",Y0);let{createPublishRequestHandler:S0,createPublicMCPHandler:U0}=await Promise.resolve().then(() => (tK8(),nK8)),O0={db:Z.db,vault:{encrypt:(A0)=>S.encrypt(A0),decrypt:(A0)=>S.decrypt(A0)}},z1=S0(O0),v0=U0(O0);j.use("/org/:orgRef/registry/publish-request",Vf),j.post("/org/:orgRef/registry/publish-request",z1),j.use("/org/:orgSlug/registry/*",Vf),j.all("/org/:orgSlug/registry/*",v0),j.post("/api/:org/registry/publish-request",z1),j.all("/api/:org/registry/*",v0),j.route(WB1,E78()),j.route("/api/_editor-resolve",$38()),j.route(Q78,X78());let n0=dJ8({kvStorage:k0,runRegistry:O,streamBuffer:F,sseHub:p5,cancelBroadcast:H,tokenStorage:f,automationEventDispatcher:a,mountDevAssets:NY(),mcpAuth:E0,oauthProxyHandler:aK8,watchHandler:XW8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return j.route("/api/:org",n0),j.notFound((A0)=>{return A0.json({error:"Not Found",path:A0.req.path},404)}),j.onError(b78),Object.assign(j,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([p5.stop(),nw?Promise.resolve(nw()).finally(()=>{nw=null}):Promise.resolve()]),U)await U.drain().catch((A0)=>console.error("[shutdown] NATS drain error:",A0));console.log("[shutdown] Flushing telemetry..."),await tX().catch((A0)=>console.error("[shutdown] Telemetry flush error:",A0)),console.log("[shutdown] Closing database..."),await NO(Z).catch((A0)=>console.error("[shutdown] Database close error:",A0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await pw.registerQueue(MJ,{partitionQueue:!0,concurrency:QG1,minPollingIntervalMs:XG1}),await pw.registerQueue(a3,{partitionQueue:!0,concurrency:NY1,priorityEnabled:!0}),await pw.registerQueue(RU,{workerConcurrency:C0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await pw.registerQueue(IU,{workerConcurrency:C0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await pw.registerQueue(PO,{partitionQueue:!0,concurrency:dy$}),await pw.registerQueue(Kj,Zx$),await zB1(i),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((A0)=>pw.deleteQueue(A0))),await YG1(Z.pool),IB$().catch((A0)=>{console.error("[studio-pack-backfill] failed:",A0)}),b8$().catch((A0)=>{console.error("[org-fs] public-sets boot sync kick failed:",A0)})}})}var sK8,oK8=5000,nw=null,aK8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),X=Q[Q.length-1],Y=$.get("studioContext");if(!Y)Y=await K3.create($.req.raw),$.set("studioContext",Y);let G=$.req.param("org")?Y.organization?.id:void 0,J=await Y.storage.connections.findById(Z,G);if(!J?.connection_url)return $.json({error:"Connection not found"},404);if(X==="register"&&J.oauth_config?.clientId){let f=await $.req.json().catch(()=>({}));return $.json({...typeof f==="object"&&f!==null?f:{},client_id:J.oauth_config.clientId,...J.oauth_config.clientSecret?{client_secret:J.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let K=await qm(J.connection_url),W,H=new URL(J.connection_url),U=(typeof J.metadata?.oauthResource==="string"&&J.metadata.oauthResource.length>0?J.metadata.oauthResource:void 0)??J.connection_url;if(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let N=await v10(W);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(X==="authorize")O=B.authorization_endpoint;else if(X==="token")O=B.token_endpoint;else if(X==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let D=D98(O);if(D)return D;let w=new URL(O),E=new URL($.req.url);if(w.search=E.search,X==="authorize"){let f=w.searchParams.get("redirect_uri");if(f){let b=C0().baseUrl??E.origin;try{if(!QW8(new URL(f),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}w.searchParams.set("redirect_uri",f)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(zZ8(J.connection_url))try{let b=await lr6(Y,J.organization_id),l=mr6(b);for(let[y,n]of l)w.searchParams.set(y,n)}catch(b){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",b)}return $.redirect(w.toString(),302)}let j={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)j["Content-Type"]=z;let P=$.req.header("Authorization");if(P)j.Authorization=P;let A,I=null,V=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&z?.includes("application/x-www-form-urlencoded")){if(P?.toLowerCase().startsWith("basic "))try{let n=atob(P.slice(6).trim()),X0=n.indexOf(":");if(X0!==-1){let L0=decodeURIComponent(n.slice(0,X0)),a=decodeURIComponent(n.slice(X0+1));I=L0||null,V=a||null}}catch{}let f=await $.req.formData();if(f.has("resource"))f.set("resource",U);let b=f.get("client_id"),l=f.get("client_secret");if(typeof b==="string"&&b)I=b;if(typeof l==="string"&&l)V=l;let y=new URLSearchParams;for(let[n,X0]of f.entries())y.append(n,X0.toString());A=y.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let f=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst(),b=await $.req.text(),l={};try{l=b?JSON.parse(b):{}}catch{A=b}let y=typeof l==="object"&&l!==null&&!Array.isArray(l);if(A===void 0&&!y)A=b;if(A===void 0){let n=l,X0=n.metadata&&typeof n.metadata==="object"?n.metadata:{};n.metadata={...X0,organization_id:J.organization_id,...f?.slug?{organization_slug:f.slug}:{},...f?.name?{organization_name:f.name}:{}},A=JSON.stringify(n),j["Content-Type"]="application/json"}}else A=$.req.raw.body??void 0;let q=await fetch(w.toString(),{method:$.req.method,headers:j,body:A,duplex:"half",redirect:"manual"}),S=new Headers,i=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[f,b]of q.headers.entries())if(!i.includes(f.toLowerCase()))S.set(f,b);if(X==="token"&&q.ok){let f=await q.text();try{let b=JSON.parse(f);if(typeof b.access_token==="string"&&b.access_token){let l=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,y=null;try{y=await Mm(J.connection_url)??O}catch{y=O}let n={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:l,clientId:I,clientSecret:V,tokenEndpoint:y};await new Z5(Y.db,Y.vault).upsert(n)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(f,{status:q.status,statusText:q.statusText,headers:S})}return new Response(q.body,{status:q.status,statusText:q.statusText,headers:S})},XW8=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),G=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,J=crypto.randomUUID();return DB($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:J,organizationId:X,typePatterns:G,connectedAt:new Date().toISOString()})}),!p5.add({id:J,organizationId:X,typePatterns:G?.length?G:null,push:(F)=>{K.writeSSE({id:F.id,event:F.type,data:JSON.stringify(F)}).catch(()=>{p5.remove(X,J)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((F)=>{K.onAbort(()=>{clearInterval(H),p5.remove(X,J),F()})})})},dr6,nr6,tr6=()=>pr6(G8),or6=()=>ir6(G8);var GW8=L(()=>{t8();j$();y8$();WZ8();NZ8();QQ1();EZ8();ws();y5();xz();S8();t$();bV0();IZ8();FG1();VG();pD();nN1();WQ();H6();y4();$B1();Z78();Y78();j78();NB1();x78();EB1();dJ();RV0();jB1();y78();gV0();iJ8();TB1();nJ8();ZR0();rs();eJ8();YR0();oO1();Z38();Y38();N38();L38();A38();T38();I38();k38();f38();h38();tO1();pO1();aZ0();_O();QK8();UY();lA0();qQ1();Mr();kr();LG1();XK8();GK8();DB1();NK8();GY1();BK8();VT0();sG0();vN();n5();IN1();DK8();zK8();J30();dL1();FG();PB1();_N();QY1();J30();k20();u01();c01();AK8();th();IK8();am();nN1();bc();z20();sK8=k(_U(),1);dr6=new ur6,nr6=new Set([MJ,a3,RU,IU,PO,Kj])});var HW8={};s(HW8,{resolveClientDir:()=>Xa6,resolveAssetPathWithTraversalCheck:()=>WW8,isPathWithinDirectory:()=>KW8,createAssetHandler:()=>Ya6});import{resolve as C$0,dirname as ar6,join as sr6,extname as er6,basename as $a6,sep as JW8}from"path";function Za6($,Z){if($===Z||$a6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${JW8}assets${JW8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function KW8($,Z){let Q=C$0(Z),X=C$0($);return X===Q||X.startsWith(Q+"/")}function WW8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=C$0(Z,Q);if(!KW8(X,Z))return null;return X}function Xa6($,Z="../client"){let Q=new URL($),X=ar6(Q.pathname);return C$0(X,Z)}function Ya6($={}){let{env:Z="production",clientDir:Q=Qa6,isServerPath:X=()=>!1}=$;if(Z==="development")return async function(G){return null};return async function(G){if(G.method!=="GET")return null;let J=new URL(G.url),K;try{K=decodeURIComponent(J.pathname)}catch{return null}if(X(K))return null;let W=WW8({requestPath:K,clientDir:Q});if(!W)return null;let H=sr6(W,"index.html"),F=C$0(Q,"index.html"),U=G.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(er6(W))?[H,F]:[];for(let O of[W,...B])try{let D=Bun.file(O);if(await D.exists())return new Response(D,{headers:Za6(O,F)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var Qa6="./dist/client";var FW8=()=>{};var UW8={};s(UW8,{tryUpgradePreviewWs:()=>Ua6,tryHandlePreviewHttp:()=>Fa6,previewWebSocketHandler:()=>Na6,parsePreviewBaseDomain:()=>Ha6,isPreviewWsData:()=>FS0,extractHandleFromHost:()=>rL1});function Ka6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function Wa6(){return new Response(Ja6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function Ha6($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let X=Q.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function rL1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),X=(Q>=0?$.slice(0,Q):$).toLowerCase(),G=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(G))return null;let J=X.slice(0,X.length-G.length);if(!J||J.includes("."))return null;return J}async function Fa6($,Z){let Q=rL1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return v$0(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(fv)&&Ka6($))return Wa6();return Y.headers.delete(fv),Y}function v$0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function FS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function Ua6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=rL1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return v$0(503,"preview proxy not configured");let G=await Y.resolvePreviewUpstreamUrl(X);if(!G)return v$0(404,"sandbox not found");let J=new URL($.url);if(J.pathname.startsWith("/_sandbox"))return v$0(404,"not found");let K=`${G.replace(/^http/,"ws")}${J.pathname}${J.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return v$0(426,"upgrade failed");return}function _$0($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var Ga6=256,Ja6='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',Na6;var NW8=L(()=>{TZ1();Na6={open($){let Z=$.data;if(!FS0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),_$0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)Q.send(X)}}),Q.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),Q.addEventListener("close",(X)=>{_$0($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{_$0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!FS0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=Ga6){_$0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!FS0(Z))return;_$0($,Z,1000,"")}}});var Sa6={};import{existsSync as za6}from"fs";function QD1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}function Ta6($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(Aa6))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function ka6($){let Z;try{Z=await Ba6.create({systemDatabaseUrl:QD1(eY.databaseUrl,eY.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:a3,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=Q.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:a3}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function NS0($){if(DW8)return;DW8=!0,console.log(`
|
|
4485
4485
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),X=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);X.unref?.();let Y=0;try{Va6(),US0.markShuttingDown();let G=iE1(eY.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await F$(G),await Ma6.stop(!0);let J=x$0.executorID;await x$0.shutdown(),await ka6(J),await US0.shutdown()}catch(G){console.error("[shutdown] Error during shutdown:",G),Y=1}clearTimeout(X),process.exit(Y)}var eY,x$0,Ba6,Oa6,La6,Da6,wa6,Ea6,wW8,ja6,BW8,EW8,Pa6,Aa6,Ra6,Ia6,qa6,aL1,sL1,jW8,zW8,OW8,US0,eL1,LW8,$D1=5,ZD1=0,Ma6,Va6,DW8=!1;var PW8=L(async()=>{t8();Oe1();we1();j$();wb();H6();Re1();eY=C0();Pt1();({DBOS:x$0,DBOSClient:Ba6}=await import("@dbos-inc/dbos-sdk"));Oa6=[MJ,a3,RU,IU,PO,Kj],La6=eY.dispatchRole==="worker"?Oa6:eY.dispatchRole==="api"?[]:void 0;x$0.setConfig(Be1({systemDatabaseUrl:QD1(eY.databaseUrl,eY.databasePgSsl),poolSize:eY.dbosPoolSize,executorID:eY.podName,listenQueues:La6}));({createApp:Da6}=await Promise.resolve().then(() => (GW8(),YW8))),{isServerPath:wa6}=await Promise.resolve().then(() => (aZ0(),Yt1)),{createAssetHandler:Ea6,resolveClientDir:wW8}=await Promise.resolve().then(() => (FW8(),HW8)),ja6=eY.port,BW8=wW8(import.meta.url,"../client"),EW8=za6(BW8)?BW8:wW8(import.meta.url,"../dist/client"),Pa6=Ea6({clientDir:EW8,isServerPath:wa6}),Aa6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};({parsePreviewBaseDomain:Ra6,tryHandlePreviewHttp:Ia6,tryUpgradePreviewWs:qa6,previewWebSocketHandler:aL1,isPreviewWsData:sL1}=await Promise.resolve().then(() => (NW8(),UW8))),{getOrInitSharedRunner:jW8}=await Promise.resolve().then(() => (nK(),ek$)),zW8=Ra6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),OW8={baseDomain:zW8??"",getRunner:jW8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())jW8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});US0=await Da6({clientDir:EW8}),eL1=process.env.DBOS_CONDUCTOR_KEY?.trim(),LW8=process.env.DBOS_CONDUCTOR_URL?.trim();await De1({databaseUrl:QD1(eY.databaseUrl,eY.databasePgSsl)},()=>x$0.launch({...eL1?{conductorKey:eL1}:{},...eL1&&LW8?{conductorURL:LW8}:{}}));console.log(`[dbos] application version: ${x$0.applicationVersion}`);await o4(async()=>{ZD1++;try{return await US0.initDbos()}catch($){let Z=ZD1>=$D1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${ZD1}/${$D1} failed, ${Z}`,$),$}},{maxAttempts:$D1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!eY.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (Tp(),L70));console.log("");for(let Z of $())console.log(Z)}Ma6=Bun.serve({idleTimeout:0,port:ja6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(zW8){let X=await qa6($,Z,OW8);if(X===void 0)return;if(X)return X;let Y=await Ia6($,OW8);if(Y)return Y}let Q=await Pa6($);if(Q)return Ta6(Q);return US0.fetch($,{server:Z})},websocket:{open($){if(sL1($.data))aL1.open($)},message($,Z){if(sL1($.data))aL1.message($,Z)},close($){if(sL1($.data))aL1.close($)}},development:!1}),Va6=Te1();if(eY.localMode)Promise.resolve().then(() => (Hx(),$20)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let X=await Q();if(X>0)console.log(`[local-mode] cleared ${X} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let Y=await $()}catch(X){console.error("Failed to seed local mode:",X)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Hx(),$20));Z()}catch{}});process.on("SIGTERM",()=>NS0("SIGTERM"));process.on("SIGINT",()=>NS0("SIGINT"));process.on("SIGHUP",()=>NS0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),NS0("uncaughtException")})});var XD1={};s(XD1,{startServer:()=>_a6,interceptConsoleForTui:()=>Ca6});function Ca6(){let{log:$,warn:Z,error:Q}=console;function X(...Y){let G=Y.map((J)=>typeof J==="string"?J:Bun.inspect(J)).join(" ");for(let J of G.split(`
|
|
4486
4486
|
`)){let K=Bun.stripANSI(J).trim();if(!K)continue;jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}return console.log=X,console.warn=X,console.error=X,c70(!0),()=>{console.log=$,console.warn=Z,console.error=Q,c70(!1)}}async function _a6($){let Z=await gp(Number($.port)),{settings:Q,services:X}=await u70({port:String(Z),home:$.home,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui});for(let Y of X)Yj({name:Y.name,status:"ready",port:Y.port});bp(),await PW8().then(() => Sa6),yp(`http://localhost:${Q.port}`)}var YD1=L(()=>{fn0();Gj();hn0()});import{parseArgs as va6}from"util";import{homedir as GD1}from"os";import{join as TW8}from"path";function DS0($){if($.noTui)return!1;return $.isTty===!0}function Wd($,Z,Q){if(Z===void 0)return;let X=Number(Z);if(!Number.isSafeInteger(X)||X<=0||Q!==void 0&&X>Q)throw Error(`Invalid --${$} "${Z}" \u2014 must be a positive integer${Q!==void 0?` up to ${Q}`:""}.`);return X}var{values:H9,positionals:f$0}=va6({args:process.argv.slice(2),options:{port:{type:"string",short:"p",default:process.env.PORT||"3000"},"vite-port":{type:"string",default:process.env.VITE_PORT||"4000"},home:{type:"string"},"base-url":{type:"string"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1},"skip-migrations":{type:"boolean",default:!1},"no-tui":{type:"boolean",default:!1},"no-local-mode":{type:"boolean",default:!1},target:{type:"string"},"dry-run":{type:"boolean",default:!1},batch:{type:"string"},limit:{type:"string"},org:{type:"string"}},allowPositionals:!0});try{Wd("port",H9.port,65535),Wd("vite-port",H9["vite-port"],65535)}catch($){console.error($.message),process.exit(1)}if(H9.help)console.log(`
|
|
4487
4487
|
Deco CMS \u2014 Open-source control plane for your AI agents
|