decocms 4.328.0 → 4.328.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-DFzG-esg.js → AlertCircle-au3Fn39C.js} +1 -1
- package/dist/client/assets/{AreaChart-PdHHh_Dn.js → AreaChart-Cm6MgpyL.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BBnsNP0J.js → ArrowLeft-CXl_aI_O.js} +1 -1
- package/dist/client/assets/{ArrowUp-BXaZzcaa.js → ArrowUp-DXmMak_H.js} +1 -1
- package/dist/client/assets/{Check-C5l_z_PW.js → Check-CfSbtyN_.js} +1 -1
- package/dist/client/assets/{CheckCircle-Onxl1pJs.js → CheckCircle-BWJYLSaj.js} +1 -1
- package/dist/client/assets/{ChevronRight-CIbVHD54.js → ChevronRight-DWx0RRzM.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-Bpz_kIxh.js → ChevronSelectorVertical-dxJtU13v.js} +1 -1
- package/dist/client/assets/{ChevronUp--gUiABx2.js → ChevronUp-Cy5R1EA-.js} +1 -1
- package/dist/client/assets/{Copy01-DYNpOI_C.js → Copy01-B7TBYYX_.js} +1 -1
- package/dist/client/assets/{CreditCard01-DINt_l5H.js → CreditCard01-BvSl92bb.js} +1 -1
- package/dist/client/assets/{DotsVertical-DtCZQfz7.js → DotsVertical-Cfzw5W0f.js} +1 -1
- package/dist/client/assets/{Download01-Cv5Oxdwd.js → Download01-B_owVG6y.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-6kZlInxu.js → ErrorBarContext-D7JLbUF5.js} +1 -1
- package/dist/client/assets/{Eye-DgONBiT6.js → Eye-CXchTesC.js} +1 -1
- package/dist/client/assets/{GitBranch01-DsDQQu5x.js → GitBranch01-D2FI5wfO.js} +1 -1
- package/dist/client/assets/{Globe01-6tjGt9Xg.js → Globe01-BntY2tto.js} +1 -1
- package/dist/client/assets/{HardDrive-DOKUKDz6.js → HardDrive-eRF7uTQ3.js} +1 -1
- package/dist/client/assets/{Image01-C-EN7-TS.js → Image01-BGRv9bxo.js} +1 -1
- package/dist/client/assets/{Key01-zxWaTQRe.js → Key01-CdckdSCG.js} +1 -1
- package/dist/client/assets/{Link01-BGfy_VoS.js → Link01-gRPs_8Lw.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DU0tq8Q8.js → LinkExternal01-BQ9dmnMG.js} +1 -1
- package/dist/client/assets/{Monitor01-BiF54KR1.js → Monitor01-D-0T1bLk.js} +1 -1
- package/dist/client/assets/{Package-xc76PLXz.js → Package-BykDqR5M.js} +1 -1
- package/dist/client/assets/{Palette-DJJ5i9M1.js → Palette-DjuMH2Lp.js} +1 -1
- package/dist/client/assets/{Play-DArR8Qwq.js → Play-Cd-tmr2X.js} +1 -1
- package/dist/client/assets/{Plus-BnxTY41Q.js → Plus-Bqm8ivvY.js} +1 -1
- package/dist/client/assets/{SearchMd-BCZehxe9.js → SearchMd-DzG1cD0r.js} +1 -1
- package/dist/client/assets/{Sector-BnbjwJYd.js → Sector-BFFsLbbn.js} +1 -1
- package/dist/client/assets/{Settings02-UYOhqVZO.js → Settings02-ldgfnbnm.js} +1 -1
- package/dist/client/assets/{Share07-TwQe5hbo.js → Share07-Bd20v21B.js} +1 -1
- package/dist/client/assets/{Shield01-XNOWku4V.js → Shield01-BGputy06.js} +1 -1
- package/dist/client/assets/{Stars01-Bma4YQjQ.js → Stars01-Cvu1Ezmf.js} +1 -1
- package/dist/client/assets/{Sun-agiNlD2Y.js → Sun-8A49iwNK.js} +1 -1
- package/dist/client/assets/{Tool01-k_Vl64IC.js → Tool01-D2l82pqe.js} +1 -1
- package/dist/client/assets/{Tool02-D5kkt2ya.js → Tool02-C7NPchtx.js} +1 -1
- package/dist/client/assets/{Trash01-z_b2Oxgp.js → Trash01-jyFLH25r.js} +1 -1
- package/dist/client/assets/{TrendUp01-N7POWJ_7.js → TrendUp01-DMPxibq8.js} +1 -1
- package/dist/client/assets/{Upload01-BCDC9pFj.js → Upload01-BBC4TymO.js} +1 -1
- package/dist/client/assets/{User01-DAFMFdmB.js → User01-COiRkKjw.js} +1 -1
- package/dist/client/assets/{UserSquare-A7bQQCTW.js → UserSquare-D3fPc0DS.js} +1 -1
- package/dist/client/assets/{Users01-B9f7zHaR.js → Users01-Cg0ojcOe.js} +1 -1
- package/dist/client/assets/{Users03-DD2JN0RC.js → Users03-C9K72nSk.js} +1 -1
- package/dist/client/assets/{XCircle-BUs23B37.js → XCircle-C7hVHSPy.js} +1 -1
- package/dist/client/assets/{XClose-2L8Wqp9G.js → XClose-Biynbi2t.js} +1 -1
- package/dist/client/assets/{Zap-BzuIe6M5.js → Zap-DGVWh_l3.js} +1 -1
- package/dist/client/assets/{ZoomOut-BPOlS5AK.js → ZoomOut-D7RyN_dN.js} +1 -1
- package/dist/client/assets/{access-gate-Dj06sJQp.js → access-gate-CHP9CzCu.js} +1 -1
- package/dist/client/assets/{agent-icon-BCVz0c1t.js → agent-icon-Bkex66mL.js} +1 -1
- package/dist/client/assets/{agents-list-DQ3j6nCC.js → agents-list-BMUJZ1RA.js} +1 -1
- package/dist/client/assets/{ai-providers-DtZAgPyB.js → ai-providers-Cb8e-cUr.js} +1 -1
- package/dist/client/assets/{alert-CbeSktxH.js → alert-BkQ0yOv3.js} +1 -1
- package/dist/client/assets/{alert-dialog-ChT6uoQk.js → alert-dialog-C1MwCtTQ.js} +1 -1
- package/dist/client/assets/{analytics-tab-DwGkoken.js → analytics-tab-J4nORwCH.js} +1 -1
- package/dist/client/assets/{api-keys-C5dqm0iR.js → api-keys-B3DpN3nT.js} +1 -1
- package/dist/client/assets/api-keys-CDoawg2e.js +1 -0
- package/dist/client/assets/{app-editor-B9l5iE_F.js → app-editor-05nSliYD.js} +1 -1
- package/dist/client/assets/{auth-catchall-ChXyVLNF.js → auth-catchall-CCxeGjWc.js} +1 -1
- package/dist/client/assets/{auth-entry-BZ8yxKc5.js → auth-entry-CwgNe0sZ.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DvRMgKxh.js → auth-split-layout-OmIHoib5.js} +1 -1
- package/dist/client/assets/{auth-CS4b2-Lf.js → auth-ux5puQHK.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DPPJCD5J.js → authenticate-and-persist-oauth-d0AFeb6e.js} +1 -1
- package/dist/client/assets/{automation-list-row-Gnqfw86c.js → automation-list-row-DGPJ9IwI.js} +1 -1
- package/dist/client/assets/{automation-runs-lGTdINHW.js → automation-runs-sLil6To3.js} +1 -1
- package/dist/client/assets/automations-DOqR7_IQ.js +1 -0
- package/dist/client/assets/{avatar-Dnqf2CRp.js → avatar-BJawEWJs.js} +1 -1
- package/dist/client/assets/{badge-CbNpSEER.js → badge-CkgU71aZ.js} +1 -1
- package/dist/client/assets/block-document-CFmxsYnW.js +3 -0
- package/dist/client/assets/{breadcrumb-hz-W1m-q.js → breadcrumb-DnaLLerR.js} +1 -1
- package/dist/client/assets/{buckets-CBGCwe6L.js → buckets-CXTaAyis.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DWF4BOpi.js → bulk-category-panel-B-GUipsg.js} +1 -1
- package/dist/client/assets/{capability-load-error-Dsxeb9Ek.js → capability-load-error-Ds1Jop1T.js} +1 -1
- package/dist/client/assets/{cards-B_YkcoQ1.js → cards-CPwEMn7-.js} +1 -1
- package/dist/client/assets/{category-editor-C4HQA-GU.js → category-editor-BSADsxAd.js} +1 -1
- package/dist/client/assets/{cdn-tab-BMm7w_t7.js → cdn-tab-B4FW8naR.js} +1 -1
- package/dist/client/assets/{chart-oosM99Ho.js → chart-Bxh2ceRW.js} +1 -1
- package/dist/client/assets/{chat-context-DNR7_SlQ.js → chat-context-9NDQ-Ucj.js} +1 -1
- package/dist/client/assets/{checkbox-CvOP80gu.js → checkbox-KWPcScC7.js} +1 -1
- package/dist/client/assets/{choose-editor-CdYLZJo-.js → choose-editor-w2enSMk3.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CMXHXKtQ.js → cli-auth-success-DyiRV800.js} +1 -1
- package/dist/client/assets/{client-icons-BhE2VLY4.js → client-icons-BusxlXvJ.js} +1 -1
- package/dist/client/assets/{collection-detail-D5Tr71al.js → collection-detail-DxlOBm4F.js} +1 -1
- package/dist/client/assets/{collection-display-button-DMVDmPMU.js → collection-display-button-CcXXqj1x.js} +1 -1
- package/dist/client/assets/{collection-search-bYiZQozb.js → collection-search-CjPdxmWQ.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-D0vzcHIr.js → collection-table-wrapper-CboUHLR0.js} +1 -1
- package/dist/client/assets/{collection-tabs-B5lpnLJk.js → collection-tabs-BFjJTZzz.js} +1 -1
- package/dist/client/assets/{command-BlHP3oFQ.js → command-C6OJjbCR.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-o79TAj0t.js → commerce-onboarding-CkeXNzOv.js} +1 -1
- package/dist/client/assets/{connect-BDJoynUr.js → connect-T5IClLbk.js} +1 -1
- package/dist/client/assets/{connect-layout-KvWxu9Yg.js → connect-layout-C0BkI0bR.js} +1 -1
- package/dist/client/assets/{connection-BXTjWPAb.js → connection-DjS5tsV1.js} +1 -1
- package/dist/client/assets/{connection-card-DLbNuXZg.js → connection-card-BbaCHR40.js} +1 -1
- package/dist/client/assets/{connection-detail-sGBpQB3r.js → connection-detail-CEPQ8Tnw.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-Bn0IKzhS.js → connection-form-helpers-D32jFhwe.js} +1 -1
- package/dist/client/assets/{connections-DZjN7tZd.js → connections-1CyvSIfT.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-Cm1KnUyr.js → create-organization-dialog-Bu9IW2rQ.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BQdxkHf7.js → decopilot-sse-pool-DPq8Mkb-.js} +1 -1
- package/dist/client/assets/{dialog-cVCH6HJP.js → dialog-BJ0ilre6.js} +1 -1
- package/dist/client/assets/{domain-settings-BqB6FNDX.js → domain-settings-DLzhHieP.js} +1 -1
- package/dist/client/assets/{download-app-dialog-CDqAt30j.js → download-app-dialog-1iqz6a-Z.js} +1 -1
- package/dist/client/assets/{drawer-kcgPxEpH.js → drawer-BRiTpDzf.js} +1 -1
- package/dist/client/assets/{dropdown-menu-Dp-f0JD-.js → dropdown-menu-hSMlNUJe.js} +1 -1
- package/dist/client/assets/{e2e-tab-ChHZnjdm.js → e2e-tab-BMsuZ5eJ.js} +1 -1
- package/dist/client/assets/{editor-BVFg1QbC.js → editor-C7XKRkfe.js} +1 -1
- package/dist/client/assets/{empty-state-C16aqLne.js → empty-state-DbPtzmGP.js} +1 -1
- package/dist/client/assets/{empty-state-DrDcox3f.js → empty-state-EYqGxdtw.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BvkpBZjm.js → extract-connection-data-D_7UkKW4.js} +1 -1
- package/dist/client/assets/{file-explorer-BVINT_-V.js → file-explorer-AshMil-l.js} +1 -1
- package/dist/client/assets/{file-type-icon-E7xONn3F.js → file-type-icon-DE-toDQV.js} +1 -1
- package/dist/client/assets/{folder-icon-DeON0Uyp.js → folder-icon-B96F2I9L.js} +1 -1
- package/dist/client/assets/{form-BL3Czf07.js → form-C1-V47FR.js} +1 -1
- package/dist/client/assets/{general-DcI7bWu_.js → general-BarKE6_m.js} +1 -1
- package/dist/client/assets/{github-repo-picker-COkN_DDo.js → github-repo-picker-BGL5sblJ.js} +1 -1
- package/dist/client/assets/{hooks-CIsOCxDM.js → hooks-R666qX_p.js} +1 -1
- package/dist/client/assets/{hosting-tab-DTx9BTTg.js → hosting-tab-DrgYXtmf.js} +1 -1
- package/dist/client/assets/{index--X_HYqkZ.js → index-224TO6g2.js} +1 -1
- package/dist/client/assets/{index-BCVa2bv7.js → index-B4UKVcC0.js} +1 -1
- package/dist/client/assets/{index-BbfGzy1b.js → index-CijWj0Hs.js} +1 -1
- package/dist/client/assets/{index-D3kfCyxo.js → index-CoVCJjU1.js} +56 -56
- package/dist/client/assets/{index-DAiDvB8d.js → index-D-a9p8_v.js} +1 -1
- package/dist/client/assets/{index-D5VnzAEU.js → index-D0blV36d.js} +1 -1
- package/dist/client/assets/{index-BKSeV4Lu.js → index-D3mLUEUn.js} +1 -1
- package/dist/client/assets/{index-CNA2aKj-.js → index-DDWOfiOg.js} +6 -6
- package/dist/client/assets/{index-FEJHOOLc.js → index-DaKYfjv_.js} +1 -1
- package/dist/client/assets/{index-ibrqOEzy.js → index-QLrGy_qp.js} +1 -1
- package/dist/client/assets/{index-redirect-CnDGKibg.js → index-redirect-C4WskUF3.js} +1 -1
- package/dist/client/assets/{infra-billing-CQChNrUx.js → infra-billing-DOHiHkiS.js} +1 -1
- package/dist/client/assets/{input-dV3u2KmE.js → input-jsFmVJiu.js} +1 -1
- package/dist/client/assets/{integration-icon-D4ibhV_E.js → integration-icon-BqYTvxAn.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BLP32IlT.js → invite-member-dialog-BZRlJ69n.js} +1 -1
- package/dist/client/assets/{label-DyMskFeo.js → label-DdZN2H5L.js} +1 -1
- package/dist/client/assets/{layout-Cq1gwFdW.js → layout-B7uwC-Rr.js} +1 -1
- package/dist/client/assets/{login-BZAPh7Gj.js → login-Bx0IGLbG.js} +1 -1
- package/dist/client/assets/{markdown-Dd6lS9iV.js → markdown-Dn0qT1pp.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Dm6xugd7.js → mcp-oauth-BXCewfly.js} +1 -1
- package/dist/client/assets/{members-BhuPf8T6.js → members-B7BpecuN.js} +1 -1
- package/dist/client/assets/{monaco-editor-CxnJFkUF.js → monaco-editor-DYeiQBrb.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CFKyTTVI.js → monitoring-stats-row-Cn-TNlkk.js} +1 -1
- package/dist/client/assets/{multi-select-B63KpOwe.js → multi-select-CeHfdiP6.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Gao4H2pz.js → oauth-callback-ai-provider-Du7D2WWh.js} +1 -1
- package/dist/client/assets/{oauth-callback-CsZds5s2.js → oauth-callback-u9SoNdsB.js} +1 -1
- package/dist/client/assets/{onboarding-BRtWsjad.js → onboarding-BPUfc3jT.js} +1 -1
- package/dist/client/assets/org-layout-B0sEBtJf.js +1 -0
- package/dist/client/assets/{organization-choice-DyI8tVXc.js → organization-choice-2HzT2-ZY.js} +1 -1
- package/dist/client/assets/{orgs-BqYr0Y3Q.js → orgs-xJ27VfXR.js} +1 -1
- package/dist/client/assets/{page-seo-form-BLfUTWcl.js → page-seo-form-h9U0qrQ7.js} +1 -1
- package/dist/client/assets/{popover-D3GuKHrW.js → popover-BhR1LK-8.js} +1 -1
- package/dist/client/assets/{post-calendar-BRVwuoAD.js → post-calendar-DB7tbrli.js} +1 -1
- package/dist/client/assets/{post-editor-CLdwTvKu.js → post-editor-BRHEI06x.js} +1 -1
- package/dist/client/assets/{primitives-CGKD0DY_.js → primitives-Vdx7tH9l.js} +1 -1
- package/dist/client/assets/{profile-DYP7VcI_.js → profile-BzHsD5-g.js} +1 -1
- package/dist/client/assets/{project-app-view-DK46_45r.js → project-app-view-DpEJGxwq.js} +1 -1
- package/dist/client/assets/{project-icon-C9mu35VG.js → project-icon-DI1QLom9.js} +1 -1
- package/dist/client/assets/{prompts-BMihKjer.js → prompts-Mrk1Uv5N.js} +1 -1
- package/dist/client/assets/record-editor-N8A8q30r.js +1 -0
- package/dist/client/assets/{redirect-editor-C6rlcRfp.js → redirect-editor-BNdxLoFT.js} +1 -1
- package/dist/client/assets/registry-C9kveP6w.js +2 -0
- package/dist/client/assets/{registry-layout-BF-ylLnL.js → registry-layout-C9hgm-_q.js} +1 -1
- package/dist/client/assets/{reports-CRbaRLrR.js → reports-D__1082d.js} +1 -1
- package/dist/client/assets/{require-capability-Cnj74j-E.js → require-capability-kGWP57Mn.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DwZfwBeQ.js → required-auth-layout-DtZ7J4m9.js} +1 -1
- package/dist/client/assets/{reset-password-CohjtoVW.js → reset-password-56xa0VQC.js} +1 -1
- package/dist/client/assets/{review-settings-C3kDelhr.js → review-settings-ZEeyhvlb.js} +1 -1
- package/dist/client/assets/{roles-DTYXMdSA.js → roles-0yWNoNFD.js} +1 -1
- package/dist/client/assets/{schema-Cm8abQWS.js → schema-coI2XhbM.js} +1 -1
- package/dist/client/assets/{scroll-area-CDmnKKAw.js → scroll-area-Bi9tbye3.js} +1 -1
- package/dist/client/assets/{search-input-h7Vc38CY.js → search-input-BhxUMLwR.js} +1 -1
- package/dist/client/assets/{secrets-a3FwVevu.js → secrets-Bsas6TOt.js} +1 -1
- package/dist/client/assets/{sections-editor-CS2S3Xqd.js → sections-editor-CS60pZVo.js} +1 -1
- package/dist/client/assets/{select-KvcEVO48.js → select-DamhTWKW.js} +1 -1
- package/dist/client/assets/{select-model-CMFCCosn.js → select-model-BMNdtT0o.js} +1 -1
- package/dist/client/assets/{self-tool-result-C0gXoPrt.js → self-tool-result-BTriZBuU.js} +1 -1
- package/dist/client/assets/{seo-editor-Cm5YvVas.js → seo-editor-DiAqKQrW.js} +1 -1
- package/dist/client/assets/settings-layout-ocYkLqBb.js +1 -0
- package/dist/client/assets/{settings-sidebar-xO4zrux7.js → settings-sidebar-BoV7GDID.js} +1 -1
- package/dist/client/assets/{shell-controls-BTI_dAAN.js → shell-controls-Dm-0lcIC.js} +1 -1
- package/dist/client/assets/{shell-layout-D_QVXZOb.js → shell-layout-8enAJb5D.js} +1 -1
- package/dist/client/assets/{skill-preview-D2pc3oTM.js → skill-preview-DGOsdsqU.js} +1 -1
- package/dist/client/assets/{skills-BRaGzQe4.js → skills-BdaH5eTA.js} +1 -1
- package/dist/client/assets/{sso-DFBW-zlG.js → sso-IbVaaJle.js} +1 -1
- package/dist/client/assets/{store-BNpaR7ze.js → store-D84v-nT5.js} +1 -1
- package/dist/client/assets/store-registry-STWJZJOx.js +2 -0
- package/dist/client/assets/{switch-CyqYeNOv.js → switch-B9YkkU2t.js} +1 -1
- package/dist/client/assets/{synced-repos-VNUSQWkp.js → synced-repos-CsPByO9k.js} +1 -1
- package/dist/client/assets/{table-Bu_MycZP.js → table-CMWlAR-F.js} +1 -1
- package/dist/client/assets/{tabs-nC1PwHDS.js → tabs-C-oWgGuk.js} +1 -1
- package/dist/client/assets/{task-board-nVCEq9U3.js → task-board-CO9EQUZz.js} +1 -1
- package/dist/client/assets/{task-route-gFfnhqaQ.js → task-route-CFxliq0Q.js} +1 -1
- package/dist/client/assets/{tasks-C6W4SR_W.js → tasks-DSYfXVyf.js} +1 -1
- package/dist/client/assets/{textarea-B8Dgnvn8.js → textarea-wN8rLNuE.js} +1 -1
- package/dist/client/assets/{toggle-group-CK6ks2u2.js → toggle-group-B4SjpGtP.js} +1 -1
- package/dist/client/assets/{toolbar-CwoPPXkT.js → toolbar-C5vDC3Wr.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-BPiIyHE7.js → toolbar-icon-button-MAO0Nt-N.js} +1 -1
- package/dist/client/assets/{track-CVOwYte-.js → track-C_bZy9Hu.js} +1 -1
- package/dist/client/assets/{types-DqwLGfEW.js → types-BjiKLIxK.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BuTYsFl9.js → use-ai-providers-BssjgSnV.js} +1 -1
- package/dist/client/assets/{use-automations-B7RB5tnn.js → use-automations-x83Wp7vS.js} +1 -1
- package/dist/client/assets/{use-autosave-Dee7u9bU.js → use-autosave-C7MD64_4.js} +1 -1
- package/dist/client/assets/{use-connection-BSW7xya5.js → use-connection-BH7twH1b.js} +1 -1
- package/dist/client/assets/{use-copy-5yHO-Nb_.js → use-copy-CVgHRjIG.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DhGPebOk.js → use-create-virtual-mcp-D7QgCEFz.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DnBREfzy.js → use-debounced-autosave-CXc6cPU8.js} +1 -1
- package/dist/client/assets/{use-debounced-value-RsiEOG9A.js → use-debounced-value-BUKNjrta.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CrSzAy0n.js → use-decopilot-events-BE7eA-Et.js} +1 -1
- package/dist/client/assets/{use-delete-connection-ClJMCQ3H.js → use-delete-connection-0OW_BK3E.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CwSSc_2T.js → use-deployment-admin-CzYYWoaP.js} +1 -1
- package/dist/client/assets/{use-destination-route-sUTDnD4b.js → use-destination-route-Dmk9Er2_.js} +1 -1
- package/dist/client/assets/{use-file-configs-B8ZmK_7d.js → use-file-configs-CfZQH5jo.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-BDeQcE-m.js → use-infinite-scroll-CkQ4tjcu.js} +1 -1
- package/dist/client/assets/{use-join-requests-Dvsp40yc.js → use-join-requests-DPJkzS07.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DKlTzK7k.js → use-mcp-auth-status-NK8rNBnE.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CuNdd4UC.js → use-mcp-client-BKvL1mHn.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-7xAjH7e8.js → use-mcp-prompts-DicN6aCt.js} +1 -1
- package/dist/client/assets/{use-members-DGmM8edP.js → use-members-BI9IW0cw.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Cs9CtUkd.js → use-navigate-to-agent-b7OkibDW.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-90bQa2rB.js → use-org-auth-client-C1oxLBbX.js} +1 -1
- package/dist/client/assets/{use-org-sso-BZg4b7by.js → use-org-sso-CF8_sHYG.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CiJ5pgIW.js → use-organization-roles-CAaXQnle.js} +1 -1
- package/dist/client/assets/{use-organization-settings-B6_b0aKa.js → use-organization-settings-B57QqEBw.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-UCeZ968V.js → use-panel-navigate-D682snM5.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DcZQKSKM.js → use-registry-connections-D9u5Cr9M.js} +1 -1
- package/dist/client/assets/{use-secrets-BEulFTCd.js → use-secrets-DQSKNRdi.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-Cp3qDqdF.js → use-section-preview-base-DUIo714x.js} +1 -1
- package/dist/client/assets/{use-status-sounds-HFmppPyn.js → use-status-sounds-0p7b6ODM.js} +1 -1
- package/dist/client/assets/{use-tags-DWjESW2v.js → use-tags-Clxj_VzH.js} +1 -1
- package/dist/client/assets/{use-view-mode-Bhhb9pjz.js → use-view-mode-Bv4eaATO.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-6JccVrwi.js → use-virtual-mcp-lV2WBVGo.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-dhpiaAX1.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DN9fSmf_.js +1 -0
- package/dist/client/assets/{users-XiVtj7_C.js → users-DnqowkIP.js} +1 -1
- package/dist/client/assets/{variant-calendar-C86TR1NZ.js → variant-calendar-CkJ0BPnx.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-0d3N3G6d.js → view-mode-toggle-X1EdvTgX.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/api-keys-BAi2F_ms.js +0 -1
- package/dist/client/assets/automations-BD_fJ4p5.js +0 -1
- package/dist/client/assets/block-document-DIiud6mT.js +0 -3
- package/dist/client/assets/org-layout-CtHyzAXR.js +0 -1
- package/dist/client/assets/record-editor-D3Ze9EAh.js +0 -1
- package/dist/client/assets/registry-Brj2IaWc.js +0 -2
- package/dist/client/assets/settings-layout-CgaGTYZO.js +0 -1
- package/dist/client/assets/store-registry-CSjZCW4Q.js +0 -2
- package/dist/client/assets/useInfiniteQuery-Cuu5QAJi.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Cu42hLTr.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1545,7 +1545,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var gn1=L(()=>{Bb()});f
|
|
|
1545
1545
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await hy`
|
|
1546
1546
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1547
1547
|
`.execute($)}}async function ls1($){await z04($),await P04($);let Z=new us1({db:$,provider:{getMigrations:()=>Promise.resolve(kn0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function A04($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Dm0();let G=X??c$(),J=async()=>{if(!Z&&!X)await HO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ls1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function T04(){let $=c$(),Z=new us1({db:$.db,provider:{getMigrations:()=>Promise.resolve(kn0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var ds1=L(()=>{hs1();wm0();KX()});async function f70($){let Z={...process.env},X=M80($,Z);console.log(uE1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Lo1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (hZ0(),gZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (wm0(),wo1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (KX(),vt1)),{migrateToLatest:F}=await Promise.resolve().then(() => (ds1(),ms1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return hn1(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 Sn0=L(()=>{Bb();Do1();j$()});var ts1={};s(ts1,{updateService:()=>$j,subscribeCliState:()=>vn0,setTuiConsoleIntercepted:()=>b70,setServerUrl:()=>_p,setMigrationsDone:()=>Cp,setDevMode:()=>I04,resetCliStateForTests:()=>R04,isTuiConsoleIntercepted:()=>y70,getCliState:()=>_n0,addLogEntry:()=>DO});function is1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ps1(){return{services:is1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function R04(){tQ=ps1()}function Sp(){for(let $ of Cn0)$()}function _n0(){return tQ}function vn0($){return Cn0.add($),()=>Cn0.delete($)}function $j($){tQ={...tQ,services:tQ.services.map((Z)=>Z.name===$.name?$:Z)},Sp()}function Cp(){tQ={...tQ,migrationsStatus:"done"},Sp()}function _p($){tQ={...tQ,serverUrl:$},Sp()}function DO($){let Z=[...tQ.logs,$];tQ={...tQ,logs:Z.length>500?Z.slice(-500):Z},Sp()}function I04(){tQ={...tQ,services:[...is1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Sp()}function b70($){ns1=$}function y70(){return ns1}var tQ,Cn0,ns1=!1;var Zj=L(()=>{tQ=ps1();Cn0=new Set});import{createServer as os1}from"net";function q04($){return new Promise((Z)=>{let X=os1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function vp($){if(await q04($))return $;let Z=await new Promise((X,Q)=>{let Y=os1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var xn0=()=>{};var bn0={};s(bn0,{startDevServer:()=>V04,pipeToLogStore:()=>fn0});import{join as M04}from"path";function fn0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1548
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;DO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)DO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function V04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await vp(Number(Y)+1):await vp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await f70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)$j({name:D.name,status:"ready",port:D.port});Cp();let F=M04(import.meta.dir,"..","..","..","..",".."),U=X===!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)fn0(N.stdout),fn0(N.stderr);_p(G),$j({name:"Vite",status:"ready",port:Number(Y)}),$j({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(() => (hZ0(),gZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var yn0=L(()=>{Sn0();Zj();xn0()});var g70;var gn0=L(()=>{g70={name:"decocms",version:"4.328.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 S04,Text as rs1}from"ink";import{jsx as C04,jsxs as as1}from"react/jsx-runtime";function ss1({version:$}){return as1(S04,{flexDirection:"column",marginTop:1,children:[W70.map((Z,X)=>C04(rs1,{color:H70[X],children:Z},X)),as1(rs1,{dimColor:!0,children:[" v",$]})]})}var es1=L(()=>{Ep()});import{Box as Xj,Text as wO}from"ink";import{Spinner as _04}from"@inkjs/ui";import{jsx as NG,jsxs as uy}from"react/jsx-runtime";function $e1({status:$}){if($==="pending")return NG(_04,{label:""});return NG(wO,{color:"green",children:"\u2713"})}function v04($){return`${$.name}: ${$.port||"...."}`}function Ze1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return uy(Xj,{flexDirection:"column",paddingBottom:1,children:[NG(ss1,{version:g70.version}),NG(Xj,{marginBottom:1,children:NG(wO,{dimColor:!0,children:"\u2500".repeat(80)})}),NG(Xj,{children:uy(wO,{dimColor:!0,children:["Home: ",X]})}),uy(Xj,{gap:2,children:[$.map((Y)=>uy(Xj,{gap:1,children:[NG(wO,{children:v04(Y)}),NG($e1,{status:Y.status})]},Y.name)),uy(Xj,{gap:1,children:[NG(wO,{children:"Migrations"}),NG($e1,{status:Z})]})]}),NG(Xj,{children:Q?uy(wO,{children:["Open in browser: ",NG(wO,{color:"cyan",children:Q})]}):NG(wO,{dimColor:!0,children:"Starting..."})})]})}var Xe1=L(()=>{gn0();es1()});import{Box as x04,Text as xp}from"ink";import{jsx as hn0,jsxs as un0}from"react/jsx-runtime";function f04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Qe1({logs:$}){return hn0(x04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return hn0(xp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return un0(xp,{children:[un0(xp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),hn0(xp,{color:f04(Z.status),children:Z.status}),un0(xp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Ye1=()=>{};var cn0={};s(cn0,{App:()=>g04});import{Box as b04}from"ink";import{useSyncExternalStore as y04}from"react";import{jsx as Ge1,jsxs as h04}from"react/jsx-runtime";function g04({home:$}){let Z=y04(vn0,_n0);return h04(b04,{flexDirection:"column",children:[Ge1(Ze1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ge1(Qe1,{logs:Z.logs})]})}var ln0=L(()=>{Xe1();Ye1();Zj()});var o3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",qJ="automations",EO="background-tools",Qj="task-board-github-reads";var Je1="11";function Ke1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Je1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var We1=()=>{};import u04 from"pg";async function Fe1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=c04}=$,Y=$.log??((W)=>console.log(W)),G=new u04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[He1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(l04)}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)",[He1.toString()])}catch{}await G.end().catch(()=>{})}}var He1=8314027461559302n,c04=600000,l04=500;var Ue1=L(()=>{t8()});function m04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function mn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ne1(){let $=m04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:mn0($,"--cpu-prof-dir")??process.cwd(),name:mn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(mn0($,"--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 Be1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=rE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),h70=setInterval(()=>void Z().catch(()=>{}),$),h70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(h70)clearInterval(h70)}}var h70;var Oe1=()=>{};import*as d04 from"bun:jsc";function Le1(){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{i04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=p04()?.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}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var i04,p04;var De1=L(()=>{({startSamplingProfiler:i04,samplingProfilerStackTraces:p04}=d04)});function we1(){Ne1();let $=[Be1(),It1(),Le1()];return()=>{for(let Z of $)Z()}}var Ee1=L(()=>{Km0();Oe1();De1()});var Yj=v((je1)=>{Object.defineProperty(je1,"__esModule",{value:!0});je1.RepublishHeaders=je1.DirectMsgHeaders=je1.JsHeaders=je1.AdvisoryKind=void 0;je1.isOrderedPushConsumerOptions=n04;je1.isPullConsumer=t04;je1.isPushConsumer=o04;je1.isBoundPushConsumerOptions=r04;function n04($){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 t04($){return $.isPullConsumer()}function o04($){return $.isPushConsumer()}function r04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}je1.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"};je1.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"};je1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};je1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var BG=v((Pe1)=>{Object.defineProperty(Pe1,"__esModule",{value:!0});Pe1.TD=Pe1.TE=Pe1.Empty=void 0;Pe1.encode=G14;Pe1.decode=J14;Pe1.Empty=new Uint8Array(0);Pe1.TE=new TextEncoder;Pe1.TD=new TextDecoder;function Y14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function G14(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Pe1.TE.encode($[X]));if(Z.length===0)return Pe1.Empty;if(Z.length===1)return Z[0];return Y14(...Z)}function J14($){if(!$||$.length===0)return"";return Pe1.TD.decode($)}});var OG=v((Re1)=>{Object.defineProperty(Re1,"__esModule",{value:!0});Re1.errors=Re1.PermissionViolationError=Re1.NoRespondersError=Re1.TimeoutError=Re1.RequestError=Re1.ProtocolError=Re1.ConnectionError=Re1.DrainingConnectionError=Re1.ClosedConnectionError=Re1.AuthorizationError=Re1.UserAuthenticationExpiredError=Re1.InvalidOperationError=Re1.InvalidArgumentError=Re1.InvalidSubjectError=void 0;class in0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Re1.InvalidSubjectError=in0;class u70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new u70(`${$} ${Z}`,X)}}Re1.InvalidArgumentError=u70;class pn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Re1.InvalidOperationError=pn0;class c70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new c70($);return null}}Re1.UserAuthenticationExpiredError=c70;class l70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new l70($);return null}}Re1.AuthorizationError=l70;class nn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Re1.ClosedConnectionError=nn0;class tn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Re1.DrainingConnectionError=tn0;class on0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Re1.ConnectionError=on0;class rn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Re1.ProtocolError=rn0;class an0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof m70}}Re1.RequestError=an0;class sn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Re1.TimeoutError=sn0;class m70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Re1.NoRespondersError=m70;class d70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new d70($,X,Q,Y)}}Re1.PermissionViolationError=d70;Re1.errors={AuthorizationError:l70,ClosedConnectionError:nn0,ConnectionError:on0,DrainingConnectionError:tn0,InvalidArgumentError:u70,InvalidOperationError:pn0,InvalidSubjectError:in0,NoRespondersError:m70,PermissionViolationError:d70,ProtocolError:rn0,RequestError:an0,TimeoutError:sn0,UserAuthenticationExpiredError:c70}});var r3=v((ke1)=>{Object.defineProperty(ke1,"__esModule",{value:!0});ke1.SimpleMutex=ke1.Perf=void 0;ke1.extend=T14;ke1.render=R14;ke1.timeout=I14;ke1.delay=q14;ke1.deadline=M14;ke1.deferred=$t0;ke1.debugDeferred=V14;ke1.shuffle=k14;ke1.collect=S14;ke1.jitter=Ve1;ke1.backoff=C14;ke1.nanos=_14;ke1.millis=v14;ke1.randomToken=b14;var A14=BG(),en0=OG();function T14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function R14($){return A14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function I14($,Z=!0){let X=Z?new en0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new en0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function q14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function M14($,Z=1000){let X=$t0(),Q=setTimeout(()=>{X.reject(new en0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function $t0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function V14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function k14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function S14($){let Z=[];for await(let X of $)Z.push(X);return Z}class qe1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}ke1.Perf=qe1;class Me1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=$t0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}ke1.SimpleMutex=Me1;function Ve1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function C14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Ve1(X>Z?$[Z]:$[X])}}}function _14($){return $*1e6}function v14($){return Math.floor($/1e6)}var x14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",RU=new Uint8Array(62);for(let $=0;$<62;$++)RU[$]=x14.charCodeAt($);var f14=218340105584896;function b14(){let $=Math.floor(Math.random()*f14),Z=$%62,X=RU[Z];$=($-Z)/62,Z=$%62;let Q=RU[Z];$=($-Z)/62,Z=$%62;let Y=RU[Z];$=($-Z)/62,Z=$%62;let G=RU[Z];$=($-Z)/62,Z=$%62;let J=RU[Z];$=($-Z)/62,Z=$%62;let K=RU[Z];$=($-Z)/62,Z=$%62;let W=RU[Z];$=($-Z)/62;let H=RU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ye1=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.nuid=fe1.NuidImpl=void 0;var s14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",jO=62,p70=12,ve1=10,Ce1=33,e14=333,_e1=p70+ve1,Xt0=new Uint8Array(jO);for(let $=0;$<jO;$++)Xt0[$]=s14.charCodeAt($);var i70=4294967296,xe1=BigInt(jO)**BigInt(ve1),fp=Number(xe1/(1n<<32n)),Zt0=Number(xe1%(1n<<32n));function $$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Z$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else $$4($)}class Qt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(_e1),this.cbuf=new Uint8Array(p70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(fp+1)),this.seqLo=Math.floor(Math.random()*i70);while($++<8&&this.seqHi===fp&&this.seqLo>=Zt0);if(this.seqHi===fp&&this.seqLo>=Zt0)this.seqLo=0;this.inc=Math.random()*(e14-Ce1)+Ce1|0}setPre(){Z$4(this.cbuf);for(let $=0;$<p70;$++)this.buf[$]=Xt0[this.cbuf[$]%jO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=_e1-1;X>=p70;X--){let Q=Math.floor($/jO),G=($-Q*jO)*i70+Z,J=Math.floor(G/jO),K=G-J*jO;this.buf[X]=Xt0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=i70)this.seqLo-=i70,this.seqHi+=1;if(this.seqHi>fp||this.seqHi===fp&&this.seqLo>=Zt0)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()}}fe1.NuidImpl=Qt0;fe1.nuid=new Qt0});var ce1=v((he1)=>{Object.defineProperty(he1,"__esModule",{value:!0});he1.nuid=he1.Nuid=void 0;var ge1=ye1();he1.Nuid=ge1.NuidImpl;he1.nuid=ge1.nuid});var t70=v((n70)=>{Object.defineProperty(n70,"__esModule",{value:!0});n70.nuid=n70.Nuid=void 0;var le1=ce1();Object.defineProperty(n70,"Nuid",{enumerable:!0,get:function(){return le1.Nuid}});Object.defineProperty(n70,"nuid",{enumerable:!0,get:function(){return le1.nuid}})});var zO=v((me1)=>{Object.defineProperty(me1,"__esModule",{value:!0});me1.DEFAULT_HOST=me1.DEFAULT_PORT=me1.Match=void 0;me1.syncIterator=K$4;me1.createInbox=W$4;var G$4=t70(),J$4=OG();me1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function K$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function W$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw J$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${G$4.nuid.next()}`}me1.DEFAULT_PORT=4222;me1.DEFAULT_HOST="127.0.0.1"});var bp=v((ne1)=>{Object.defineProperty(ne1,"__esModule",{value:!0});ne1.DataBuffer=void 0;var ie1=BG();class pe1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ie1.TE.encode($)}static toAscii($){return ie1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ne1.DataBuffer=pe1});var Gj=v((re1)=>{Object.defineProperty(re1,"__esModule",{value:!0});re1.LF=re1.CR=re1.CRLF=re1.CR_LF_LEN=re1.CR_LF=void 0;re1.setTransportFactory=D$4;re1.defaultPort=w$4;re1.getUrlParseFn=E$4;re1.newTransport=j$4;re1.getResolveFn=z$4;re1.protoLen=oe1;re1.extractProtocolMessage=P$4;var B$4=BG(),O$4=zO(),L$4=bp(),LG;function D$4($){LG=$}function w$4(){return LG!==void 0&&LG.defaultPort!==void 0?LG.defaultPort:O$4.DEFAULT_PORT}function E$4(){return LG!==void 0&&LG.urlParseFn?LG.urlParseFn:void 0}function j$4(){if(!LG||typeof LG.factory!=="function")throw Error("transport fn is not set");return LG.factory()}function z$4(){return LG!==void 0&&LG.dnsResolveFn?LG.dnsResolveFn:void 0}re1.CR_LF=`\r
|
|
1548
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;DO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)DO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function V04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await vp(Number(Y)+1):await vp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await f70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)$j({name:D.name,status:"ready",port:D.port});Cp();let F=M04(import.meta.dir,"..","..","..","..",".."),U=X===!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)fn0(N.stdout),fn0(N.stderr);_p(G),$j({name:"Vite",status:"ready",port:Number(Y)}),$j({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(() => (hZ0(),gZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var yn0=L(()=>{Sn0();Zj();xn0()});var g70;var gn0=L(()=>{g70={name:"decocms",version:"4.328.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 S04,Text as rs1}from"ink";import{jsx as C04,jsxs as as1}from"react/jsx-runtime";function ss1({version:$}){return as1(S04,{flexDirection:"column",marginTop:1,children:[W70.map((Z,X)=>C04(rs1,{color:H70[X],children:Z},X)),as1(rs1,{dimColor:!0,children:[" v",$]})]})}var es1=L(()=>{Ep()});import{Box as Xj,Text as wO}from"ink";import{Spinner as _04}from"@inkjs/ui";import{jsx as NG,jsxs as uy}from"react/jsx-runtime";function $e1({status:$}){if($==="pending")return NG(_04,{label:""});return NG(wO,{color:"green",children:"\u2713"})}function v04($){return`${$.name}: ${$.port||"...."}`}function Ze1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return uy(Xj,{flexDirection:"column",paddingBottom:1,children:[NG(ss1,{version:g70.version}),NG(Xj,{marginBottom:1,children:NG(wO,{dimColor:!0,children:"\u2500".repeat(80)})}),NG(Xj,{children:uy(wO,{dimColor:!0,children:["Home: ",X]})}),uy(Xj,{gap:2,children:[$.map((Y)=>uy(Xj,{gap:1,children:[NG(wO,{children:v04(Y)}),NG($e1,{status:Y.status})]},Y.name)),uy(Xj,{gap:1,children:[NG(wO,{children:"Migrations"}),NG($e1,{status:Z})]})]}),NG(Xj,{children:Q?uy(wO,{children:["Open in browser: ",NG(wO,{color:"cyan",children:Q})]}):NG(wO,{dimColor:!0,children:"Starting..."})})]})}var Xe1=L(()=>{gn0();es1()});import{Box as x04,Text as xp}from"ink";import{jsx as hn0,jsxs as un0}from"react/jsx-runtime";function f04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Qe1({logs:$}){return hn0(x04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return hn0(xp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return un0(xp,{children:[un0(xp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),hn0(xp,{color:f04(Z.status),children:Z.status}),un0(xp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Ye1=()=>{};var cn0={};s(cn0,{App:()=>g04});import{Box as b04}from"ink";import{useSyncExternalStore as y04}from"react";import{jsx as Ge1,jsxs as h04}from"react/jsx-runtime";function g04({home:$}){let Z=y04(vn0,_n0);return h04(b04,{flexDirection:"column",children:[Ge1(Ze1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ge1(Qe1,{logs:Z.logs})]})}var ln0=L(()=>{Xe1();Ye1();Zj()});var o3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",qJ="automations",EO="background-tools",Qj="task-board-github-reads";var Je1="11";function Ke1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Je1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var We1=()=>{};import u04 from"pg";async function Fe1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=c04}=$,Y=$.log??((W)=>console.log(W)),G=new u04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[He1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(l04)}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)",[He1.toString()])}catch{}await G.end().catch(()=>{})}}var He1=8314027461559302n,c04=600000,l04=500;var Ue1=L(()=>{t8()});function m04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function mn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ne1(){let $=m04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:mn0($,"--cpu-prof-dir")??process.cwd(),name:mn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(mn0($,"--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 Be1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=rE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),h70=setInterval(()=>void Z().catch(()=>{}),$),h70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(h70)clearInterval(h70)}}var h70;var Oe1=()=>{};import*as d04 from"bun:jsc";function Le1(){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{i04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=p04()?.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}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var i04,p04;var De1=L(()=>{({startSamplingProfiler:i04,samplingProfilerStackTraces:p04}=d04)});function we1(){Ne1();let $=[Be1(),It1(),Le1()];return()=>{for(let Z of $)Z()}}var Ee1=L(()=>{Km0();Oe1();De1()});var Yj=v((je1)=>{Object.defineProperty(je1,"__esModule",{value:!0});je1.RepublishHeaders=je1.DirectMsgHeaders=je1.JsHeaders=je1.AdvisoryKind=void 0;je1.isOrderedPushConsumerOptions=n04;je1.isPullConsumer=t04;je1.isPushConsumer=o04;je1.isBoundPushConsumerOptions=r04;function n04($){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 t04($){return $.isPullConsumer()}function o04($){return $.isPushConsumer()}function r04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}je1.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"};je1.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"};je1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};je1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var BG=v((Pe1)=>{Object.defineProperty(Pe1,"__esModule",{value:!0});Pe1.TD=Pe1.TE=Pe1.Empty=void 0;Pe1.encode=G14;Pe1.decode=J14;Pe1.Empty=new Uint8Array(0);Pe1.TE=new TextEncoder;Pe1.TD=new TextDecoder;function Y14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function G14(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Pe1.TE.encode($[X]));if(Z.length===0)return Pe1.Empty;if(Z.length===1)return Z[0];return Y14(...Z)}function J14($){if(!$||$.length===0)return"";return Pe1.TD.decode($)}});var OG=v((Re1)=>{Object.defineProperty(Re1,"__esModule",{value:!0});Re1.errors=Re1.PermissionViolationError=Re1.NoRespondersError=Re1.TimeoutError=Re1.RequestError=Re1.ProtocolError=Re1.ConnectionError=Re1.DrainingConnectionError=Re1.ClosedConnectionError=Re1.AuthorizationError=Re1.UserAuthenticationExpiredError=Re1.InvalidOperationError=Re1.InvalidArgumentError=Re1.InvalidSubjectError=void 0;class in0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Re1.InvalidSubjectError=in0;class u70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new u70(`${$} ${Z}`,X)}}Re1.InvalidArgumentError=u70;class pn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Re1.InvalidOperationError=pn0;class c70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new c70($);return null}}Re1.UserAuthenticationExpiredError=c70;class l70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new l70($);return null}}Re1.AuthorizationError=l70;class nn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Re1.ClosedConnectionError=nn0;class tn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Re1.DrainingConnectionError=tn0;class on0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Re1.ConnectionError=on0;class rn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Re1.ProtocolError=rn0;class an0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof m70}}Re1.RequestError=an0;class sn0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Re1.TimeoutError=sn0;class m70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Re1.NoRespondersError=m70;class d70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new d70($,X,Q,Y)}}Re1.PermissionViolationError=d70;Re1.errors={AuthorizationError:l70,ClosedConnectionError:nn0,ConnectionError:on0,DrainingConnectionError:tn0,InvalidArgumentError:u70,InvalidOperationError:pn0,InvalidSubjectError:in0,NoRespondersError:m70,PermissionViolationError:d70,ProtocolError:rn0,RequestError:an0,TimeoutError:sn0,UserAuthenticationExpiredError:c70}});var r3=v((ke1)=>{Object.defineProperty(ke1,"__esModule",{value:!0});ke1.SimpleMutex=ke1.Perf=void 0;ke1.extend=T14;ke1.render=R14;ke1.timeout=I14;ke1.delay=q14;ke1.deadline=M14;ke1.deferred=$t0;ke1.debugDeferred=V14;ke1.shuffle=k14;ke1.collect=S14;ke1.jitter=Ve1;ke1.backoff=C14;ke1.nanos=_14;ke1.millis=v14;ke1.randomToken=b14;var A14=BG(),en0=OG();function T14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function R14($){return A14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function I14($,Z=!0){let X=Z?new en0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new en0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function q14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function M14($,Z=1000){let X=$t0(),Q=setTimeout(()=>{X.reject(new en0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function $t0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function V14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function k14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function S14($){let Z=[];for await(let X of $)Z.push(X);return Z}class qe1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}ke1.Perf=qe1;class Me1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=$t0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}ke1.SimpleMutex=Me1;function Ve1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function C14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Ve1(X>Z?$[Z]:$[X])}}}function _14($){return $*1e6}function v14($){return Math.floor($/1e6)}var x14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",RU=new Uint8Array(62);for(let $=0;$<62;$++)RU[$]=x14.charCodeAt($);var f14=218340105584896;function b14(){let $=Math.floor(Math.random()*f14),Z=$%62,X=RU[Z];$=($-Z)/62,Z=$%62;let Q=RU[Z];$=($-Z)/62,Z=$%62;let Y=RU[Z];$=($-Z)/62,Z=$%62;let G=RU[Z];$=($-Z)/62,Z=$%62;let J=RU[Z];$=($-Z)/62,Z=$%62;let K=RU[Z];$=($-Z)/62,Z=$%62;let W=RU[Z];$=($-Z)/62;let H=RU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ye1=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.nuid=fe1.NuidImpl=void 0;var s14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",jO=62,p70=12,ve1=10,Ce1=33,e14=333,_e1=p70+ve1,Xt0=new Uint8Array(jO);for(let $=0;$<jO;$++)Xt0[$]=s14.charCodeAt($);var i70=4294967296,xe1=BigInt(jO)**BigInt(ve1),fp=Number(xe1/(1n<<32n)),Zt0=Number(xe1%(1n<<32n));function $$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Z$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else $$4($)}class Qt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(_e1),this.cbuf=new Uint8Array(p70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(fp+1)),this.seqLo=Math.floor(Math.random()*i70);while($++<8&&this.seqHi===fp&&this.seqLo>=Zt0);if(this.seqHi===fp&&this.seqLo>=Zt0)this.seqLo=0;this.inc=Math.random()*(e14-Ce1)+Ce1|0}setPre(){Z$4(this.cbuf);for(let $=0;$<p70;$++)this.buf[$]=Xt0[this.cbuf[$]%jO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=_e1-1;X>=p70;X--){let Q=Math.floor($/jO),G=($-Q*jO)*i70+Z,J=Math.floor(G/jO),K=G-J*jO;this.buf[X]=Xt0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=i70)this.seqLo-=i70,this.seqHi+=1;if(this.seqHi>fp||this.seqHi===fp&&this.seqLo>=Zt0)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()}}fe1.NuidImpl=Qt0;fe1.nuid=new Qt0});var ce1=v((he1)=>{Object.defineProperty(he1,"__esModule",{value:!0});he1.nuid=he1.Nuid=void 0;var ge1=ye1();he1.Nuid=ge1.NuidImpl;he1.nuid=ge1.nuid});var t70=v((n70)=>{Object.defineProperty(n70,"__esModule",{value:!0});n70.nuid=n70.Nuid=void 0;var le1=ce1();Object.defineProperty(n70,"Nuid",{enumerable:!0,get:function(){return le1.Nuid}});Object.defineProperty(n70,"nuid",{enumerable:!0,get:function(){return le1.nuid}})});var zO=v((me1)=>{Object.defineProperty(me1,"__esModule",{value:!0});me1.DEFAULT_HOST=me1.DEFAULT_PORT=me1.Match=void 0;me1.syncIterator=K$4;me1.createInbox=W$4;var G$4=t70(),J$4=OG();me1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function K$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function W$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw J$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${G$4.nuid.next()}`}me1.DEFAULT_PORT=4222;me1.DEFAULT_HOST="127.0.0.1"});var bp=v((ne1)=>{Object.defineProperty(ne1,"__esModule",{value:!0});ne1.DataBuffer=void 0;var ie1=BG();class pe1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ie1.TE.encode($)}static toAscii($){return ie1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ne1.DataBuffer=pe1});var Gj=v((re1)=>{Object.defineProperty(re1,"__esModule",{value:!0});re1.LF=re1.CR=re1.CRLF=re1.CR_LF_LEN=re1.CR_LF=void 0;re1.setTransportFactory=D$4;re1.defaultPort=w$4;re1.getUrlParseFn=E$4;re1.newTransport=j$4;re1.getResolveFn=z$4;re1.protoLen=oe1;re1.extractProtocolMessage=P$4;var B$4=BG(),O$4=zO(),L$4=bp(),LG;function D$4($){LG=$}function w$4(){return LG!==void 0&&LG.defaultPort!==void 0?LG.defaultPort:O$4.DEFAULT_PORT}function E$4(){return LG!==void 0&&LG.urlParseFn?LG.urlParseFn:void 0}function j$4(){if(!LG||typeof LG.factory!=="function")throw Error("transport fn is not set");return LG.factory()}function z$4(){return LG!==void 0&&LG.dnsResolveFn?LG.dnsResolveFn:void 0}re1.CR_LF=`\r
|
|
1549
1549
|
`;re1.CR_LF_LEN=re1.CR_LF.length;re1.CRLF=L$4.DataBuffer.fromAscii(re1.CR_LF);re1.CR=new Uint8Array(re1.CRLF)[0];re1.LF=new Uint8Array(re1.CRLF)[1];function oe1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===re1.CR&&$[X]===re1.LF)return X+1}return 0}function P$4($){let Z=oe1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return B$4.TD.decode(Q)}return""}});var Wt0=v((Y0$)=>{Object.defineProperty(Y0$,"__esModule",{value:!0});Y0$.ipV4=Z0$;Y0$.isIP=_$4;Y0$.parseIP=X0$;var yp=4,Jj=16,o70=48,$0$=57,se1=65,S$4=70,ee1=97,C$4=102,Kt0=16777215;function Z0$($,Z,X,Q){let Y=new Uint8Array(Jj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function _$4($){return X0$($)!==void 0}function X0$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Q0$($);case":":return v$4($)}return}function Q0$($){let Z=new Uint8Array(yp);for(let X=0;X<yp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=x$4($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Z0$(Z[0],Z[1],Z[2],Z[3])}function v$4($){let Z=new Uint8Array(Jj),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<Jj){let{n:Y,c:G,ok:J}=f$4($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=Jj-yp)return;if(Q+yp>Jj)return;let K=Q0$($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=yp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<Jj){if(X<0)return;let Y=Jj-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function x$4($){let Z=0,X=0;for(Z=0;Z<$.length&&o70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=$0$;Z++)if(X=X*10+($.charCodeAt(Z)-o70),X>=Kt0)return{n:Kt0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function f$4($){let Z=0,X=0;for(X=0;X<$.length;X++){if(o70<=$.charCodeAt(X)&&$.charCodeAt(X)<=$0$)Z*=16,Z+=$.charCodeAt(X)-o70;else if(ee1<=$.charCodeAt(X)&&$.charCodeAt(X)<=C$4)Z*=16,Z+=$.charCodeAt(X)-ee1+10;else if(se1<=$.charCodeAt(X)&&$.charCodeAt(X)<=S$4)Z*=16,Z+=$.charCodeAt(X)-se1+10;else break;if(Z>=Kt0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Ot0=v((J0$)=>{Object.defineProperty(J0$,"__esModule",{value:!0});J0$.Servers=J0$.ServerImpl=void 0;J0$.isIPV4OrHostname=G0$;J0$.hostPort=Bt0;var Ht0=Gj(),Ft0=r3(),Ut0=Wt0(),h$4=zO(),u$4=OG();function G0$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Nt0($){return!G0$($)}function c$4($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Bt0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=c$4($),Nt0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Nt0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):h$4.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class cy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Bt0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Ut0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Nt0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new cy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Ft0.shuffle)(Z);return this.resolves=Z,Z}}J0$.ServerImpl=cy;class r70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw u$4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Ht0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Bt0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new cy(Y))}if(this.randomize)(0,Ft0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Ut0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Ht0.getUrlParseFn)();$=X?X($):$;let Q=new cy($,Z);if((0,Ut0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return r70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return r70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Ht0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new cy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Ft0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}J0$.Servers=r70});var a70=v((F0$)=>{Object.defineProperty(F0$,"__esModule",{value:!0});F0$.QueuedIteratorImpl=void 0;var Lt0=r3(),W0$=OG();class H0${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,Lt0.deferred)(),this.yields=[],this.iterClosed=(0,Lt0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new W0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new W0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Lt0.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}}F0$.QueuedIteratorImpl=H0$});var Dt0=v((O0$)=>{Object.defineProperty(O0$,"__esModule",{value:!0});O0$.MuxSubscription=void 0;var i$4=zO(),N0$=OG();class B0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,i$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((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new N0$.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new N0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}O0$.MuxSubscription=B0$});var wt0=v((w0$)=>{Object.defineProperty(w0$,"__esModule",{value:!0});w0$.Heartbeat=void 0;var p$4=r3();class D0${ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,p$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})}}w0$.Heartbeat=D0$});var zt0=v((A0$)=>{Object.defineProperty(A0$,"__esModule",{value:!0});A0$.DenoBuffer=A0$.MAX_SIZE=A0$.AssertionError=void 0;A0$.assert=z0$;A0$.concat=P0$;A0$.append=t$4;A0$.readAll=o$4;A0$.writeAll=r$4;var n$4=BG();class Et0 extends Error{constructor($){super($);this.name="AssertionError"}}A0$.AssertionError=Et0;function z0$($,Z="Assertion failed."){if(!$)throw new Et0(Z)}var j0$=32768;A0$.MAX_SIZE=4294967294;function s70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function P0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function t$4($,Z){return P0$($,Uint8Array.of(Z))}class jt0{_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($){z0$($<=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=s70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(n$4.TE.encode($))}write($){let Z=this._grow($.byteLength);return s70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)s70(this._buf.subarray(this._off),this._buf);else if(Q+$>A0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,A0$.MAX_SIZE));s70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,A0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(j0$);while(!0){let Q=this.capacity-this.length<j0$,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}A0$.DenoBuffer=jt0;function o$4($){let Z=new jt0;return Z.readFrom($),Z.bytes()}function r$4($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Tt0=v((M0$)=>{Object.defineProperty(M0$,"__esModule",{value:!0});M0$.cc=M0$.State=M0$.Parser=M0$.Kind=void 0;M0$.describe=Q84;var Pt0=zt0(),At0=BG();M0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Q84($){let Z,X="";switch($.kind){case M0$.Kind.MSG:Z="MSG";break;case M0$.Kind.OK:Z="OK";break;case M0$.Kind.ERR:Z="ERR",X=At0.TD.decode($.data);break;case M0$.Kind.PING:Z="PING";break;case M0$.Kind.PONG:Z="PONG";break;case M0$.Kind.INFO:Z="INFO",X=At0.TD.decode($.data)}return`${Z}: ${X}`}function R0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var I0$=48,Y84=57,ly=67108864;class q0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=M0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case M0$.State.OP_START:switch(X){case M0$.cc.M:case M0$.cc.m:this.state=M0$.State.OP_M,this.hdr=-1,this.ma=R0$();break;case M0$.cc.H:case M0$.cc.h:this.state=M0$.State.OP_H,this.hdr=0,this.ma=R0$();break;case M0$.cc.P:case M0$.cc.p:this.state=M0$.State.OP_P;break;case M0$.cc.PLUS:this.state=M0$.State.OP_PLUS;break;case M0$.cc.MINUS:this.state=M0$.State.OP_MINUS;break;case M0$.cc.I:case M0$.cc.i:this.state=M0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_H:switch(X){case M0$.cc.M:case M0$.cc.m:this.state=M0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_M:switch(X){case M0$.cc.S:case M0$.cc.s:this.state=M0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MS:switch(X){case M0$.cc.G:case M0$.cc.g:this.state=M0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MSG:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:this.state=M0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MSG_SPC:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:continue;default:this.state=M0$.State.MSG_ARG,this.as=Z}break;case M0$.State.MSG_ARG:switch(X){case M0$.cc.CR:this.drop=1;break;case M0$.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=M0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case M0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:M0$.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=M0$.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:M0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=M0$.State.MSG_END;break;case M0$.State.MSG_END:switch(X){case M0$.cc.NL:this.drop=0,this.as=Z+1,this.state=M0$.State.OP_START;break;default:continue}break;case M0$.State.OP_PLUS:switch(X){case M0$.cc.O:case M0$.cc.o:this.state=M0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PLUS_O:switch(X){case M0$.cc.K:case M0$.cc.k:this.state=M0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PLUS_OK:switch(X){case M0$.cc.NL:this.dispatcher.push({kind:M0$.Kind.OK}),this.drop=0,this.state=M0$.State.OP_START;break}break;case M0$.State.OP_MINUS:switch(X){case M0$.cc.E:case M0$.cc.e:this.state=M0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MINUS_E:switch(X){case M0$.cc.R:case M0$.cc.r:this.state=M0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MINUS_ER:switch(X){case M0$.cc.R:case M0$.cc.r:this.state=M0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MINUS_ERR:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:this.state=M0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_MINUS_ERR_SPC:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:continue;default:this.state=M0$.State.MINUS_ERR_ARG,this.as=Z}break;case M0$.State.MINUS_ERR_ARG:switch(X){case M0$.cc.CR:this.drop=1;break;case M0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:M0$.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=M0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case M0$.State.OP_P:switch(X){case M0$.cc.I:case M0$.cc.i:this.state=M0$.State.OP_PI;break;case M0$.cc.O:case M0$.cc.o:this.state=M0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PO:switch(X){case M0$.cc.N:case M0$.cc.n:this.state=M0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PON:switch(X){case M0$.cc.G:case M0$.cc.g:this.state=M0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PONG:switch(X){case M0$.cc.NL:this.dispatcher.push({kind:M0$.Kind.PONG}),this.drop=0,this.state=M0$.State.OP_START;break}break;case M0$.State.OP_PI:switch(X){case M0$.cc.N:case M0$.cc.n:this.state=M0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PIN:switch(X){case M0$.cc.G:case M0$.cc.g:this.state=M0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_PING:switch(X){case M0$.cc.NL:this.dispatcher.push({kind:M0$.Kind.PING}),this.drop=0,this.state=M0$.State.OP_START;break}break;case M0$.State.OP_I:switch(X){case M0$.cc.N:case M0$.cc.n:this.state=M0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_IN:switch(X){case M0$.cc.F:case M0$.cc.f:this.state=M0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_INF:switch(X){case M0$.cc.O:case M0$.cc.o:this.state=M0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_INFO:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:this.state=M0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case M0$.State.OP_INFO_SPC:switch(X){case M0$.cc.SPACE:case M0$.cc.TAB:continue;default:this.state=M0$.State.INFO_ARG,this.as=Z}break;case M0$.State.INFO_ARG:switch(X){case M0$.cc.CR:this.drop=1;break;case M0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:M0$.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=M0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===M0$.State.MSG_ARG||this.state===M0$.State.MINUS_ERR_ARG||this.state===M0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Pt0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===M0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Pt0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new Pt0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case M0$.cc.SPACE:case M0$.cc.TAB:case M0$.cc.CR:case M0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],ly);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],ly);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}: ${At0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case M0$.cc.SPACE:case M0$.cc.TAB:case M0$.cc.CR:case M0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],ly),this.ma.size=this.protoParseInt(Z[3],ly);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],ly),this.ma.size=this.protoParseInt(Z[4],ly);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<I0$||$[Q]>Y84)return-1;X=X*10+($[Q]-I0$)}return Z!==void 0&&X>Z?-1:X}}M0$.Parser=q0$;M0$.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};M0$.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 ZX0=v((k0$)=>{Object.defineProperty(k0$,"__esModule",{value:!0});k0$.MsgHdrsImpl=void 0;k0$.canonicalMIMEHeaderKey=It0;k0$.headers=K84;var V0$=BG(),a3=zO(),$X0=OG();function It0($){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 $X0.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 K84($=0,Z=""){if($===0&&Z!=="")throw $X0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw $X0.InvalidArgumentError.format("description","is required");return new my($,Z)}var Rt0="NATS/1.0";class my{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new my,Q=V0$.TD.decode($).split(`\r
|
|
1550
1550
|
`),Y=Q[0];if(Y!==Rt0){let G=Y.replace(Rt0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Rt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1551
1551
|
${Z}: ${X[Q]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2980,7 +2980,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
2980
2980
|
${G.join(`
|
|
2981
2981
|
`)}`:Y}function XB6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2982
2982
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Ad$=200,pN6=12,tN6,rN6=300,s71=3;var e71=D(()=>{aD();vT0();tN6={aheadBy:0,behindBy:0,files:[]}});function YB6($){if(!$||$.includes(".."))return!1;return QB6.test($)}function Rd$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!YB6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Id$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var QB6;var qd$=D(()=>{QB6=/^[\w./@-]+$/});function Ms($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Md$($,Z,X,Q){if(!Q.connectionId)throw new Sv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Sv(H9);await yO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let U=H instanceof Error?H.message:H9;throw new Sv(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await fK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((H)=>{let{code:U,message:N}=q9$(H instanceof Error?H.message:String(H));throw U?new Sv(N):H}),K=$l($),F=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await xO(F,GB6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var GB6=10485760,Sv;var $X1=D(()=>{KJ();AT0();wn();li0();my();Sv=class Sv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function WB6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!JB6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Cv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(FB6)])}async function UB6($,Z){let X=$.var.studioContext,Q=JJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=kC(J?.metadata?.runtime);if(W)return W;let K=KD0(Z.virtualMcpMetadata),F=K==="cms"?await f71(X,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",U=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(U&&J)mn(X,J.id,H);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:F,resolved:H,stamped:U});return H}async function NB6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await KQ($.var.studioContext)}catch{return null}}function _v($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Gl($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Ms(Z,X);if(!Y)throw new m4(404,"AUTH","repo","Project has no GitHub repository");let G=n(Q);return TT0(Q,G.id,Y)}function ZX1($,Z){if(Z instanceof IA0)return $.json({error:Z.message},429,{...I5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,I5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,I5)}async function Sd$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Cd$($){try{let Z=await Gl($),X=await fT0(Z,$.get("vmClaim").branch);return $.json(X,200,I5)}catch(Z){return ZX1($,Z)}}function ks($,Z){let Q=(yT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return yT0.set($,Y),Y.finally(()=>{if(yT0.get($)===Y)yT0.delete($)}),Q}async function sZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,I5);let Q=X?.runner??_v($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,F=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,F.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=X?.signal,U={method:W,headers:F,body:K,...H?{signal:H}:{}},N=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...I5}})}}let O=await B.text(),w=X?.redactRepoDir?BB6(O):O,L=B.headers.get("content-type")??"application/json";return new Response(w,{status:B.status,headers:{"content-type":L,...I5}})};try{if(H){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((w,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function BB6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function gT0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function OB6($){return _d$.includes($)}var JB6,kd$=524288,KB6=65536,FB6=1e4,Vd$=2000,HB6,yT0,I5,_d$,vd$=()=>{let $=new J1;$.use("/:virtualMcpId/:branch/*",HB6),$.post("/:virtualMcpId/:branch/write",(X)=>sZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>sZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>sZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>sZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>sZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>sZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>sZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Cv(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return sZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return sZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>sZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>sZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!OB6(Q))return X.json({error:`step must be one of: ${_d$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await f71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await NB6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,I5);if(Q==="start"){let J=n(X.var.studioContext),W=cy(Y.virtualMcpMetadata);try{await M70({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let F=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${F}`},502)}}return sZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return eU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vc$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Cd$(X);return Z(X)});let Z=(X)=>sZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Vd$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Cd$(X);return sZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Vd$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await Gl(X),J=await bT0(G,Q.branch,Y.base);return X.json(J,200,I5)}catch(Y){return ZX1(X,Y)}return sZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,I5);let Q=_v(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return ks(Y,async()=>{try{await b71(W,Q,Y);let K=Ms(G,J);if(K)await Md$(W,Q,Y,K)}catch(K){if(K instanceof Sv)return X.json({error:K.message},403,I5);let F=K instanceof Error?K.message:String(K);return X.json({error:F},502,I5)}return sZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return ks(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,I5);try{let J=await Gl(X);return await Td$(J,Q.branch,G),X.json({ok:!0},200,I5)}catch(J){let W=J instanceof m4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,I5)}});return ks(Q.claimName,()=>sZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return ks(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Gl(X),F=W.base??await K.getDefaultBranch();return await xT0(K,Q.branch,F),X.json({ok:!0},200,I5)}catch(W){return ZX1(X,W)}});let Y=_v(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return ks(G,async()=>{try{await b71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,I5)}return sZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",a5({maxSize:kd$,onError:(X)=>X.json({error:"Payload too large"},413,I5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=_v(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=g71(H)&&N?[H,U]:Y?await Promise.all([gT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),gT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Gl(X);return Promise.all([fT0(L,Q.branch),bT0(L,Q.branch)])})(),w=await gc$(K,B,O);return X.json(w,200,I5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,I5);return X.json({error:H},502,I5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",a5({maxSize:kd$,onError:(X)=>X.json({error:"Payload too large"},413,I5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=_v(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=g71(H)&&N?[H,U]:Y?await Promise.all([gT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),gT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Gl(X);return Promise.all([fT0(L,Q.branch),bT0(L,Q.branch)])})(),w=await uc$(K,B,O,typeof F.language==="string"?F.language:void 0);return X.json(w,200,I5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,I5);return X.json({error:H},502,I5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=_v(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return Sd$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",a5({maxSize:KB6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=_v(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Rd$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Id$(G,W.resolveType);return Sd$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var fd$=D(()=>{d$();MF();eu();v71();Hn();Sc$();i3();Wg();Cc$();r3();_c$();fc$();gi0();On();l71();lc$();d71();aD();e71();qd$();$X1();JB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;HB6=PT0(async($,Z)=>{let X=$.var.studioContext;try{t(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=t0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=n(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{WB6(J)}catch(w){let L=w instanceof Error?w.message:String(w);return $.json({error:L},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Kn({orgId:Y.id,virtualMcpId:G,branch:J}),F=await _i0(X,J),H=vi0(F,Q),U=Vc$({userId:H,projectRef:K}),N=W.metadata??null,B=await UB6($,{claimName:U,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:N,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z();let O;try{O=await KQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z()});yT0=new Map;I5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};_d$=["clone","install","start"]});function bd$($,Z,X){let Q=XX1.get($);if(!Q)Q={pending:null,running:!1},XX1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)wB6($,Q);return G}async function wB6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await LB6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)XX1.delete($)}}async function LB6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Yl(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=r71(W,Q),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,w]of $.set){let L=a71(K,O),E=`${JSON.stringify(w,null,2)}
|
|
2983
|
-
`,j=await Z.createBlob(E);await jd$(Z.owner,Z.repo,j,E);let z=L[0]??`${_T0(Q)}/${i71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of a71(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ts(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:EB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=DB6-1)throw O;await L$(Z7(2000,200,Y,2,0.5))}}}function EB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Ai0(Q,$.deps.coAuthor)}var DB6=3,XX1;var xd$=D(()=>{A70();IT0();a8();aD();vT0();XX1=new Map});import{createHmac as yd$,randomBytes as jB6,timingSafeEqual as zB6}from"crypto";function gd$(){if(hT0)return hT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return hT0=$?Buffer.from($):jB6(32),hT0}function QX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+PB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=yd$("sha256",gd$()).update(Q).digest("base64url");return`${Q}.${Y}`}function hd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(yd$("sha256",gd$()).update(Q).digest("base64url"));if(Y.length!==G.length||!zB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var PB6=21600000,hT0=null;var ud$=D(()=>{D$()});import{z as Jl}from"zod";function TB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&AB6.test($)}function id$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Vs($){let Z=$.get("decofileScope");return TT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ss($,Z){if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function pd$(){let $=new J1;return $.use("/:virtualMcpId/:branch",md$),$.use("/:virtualMcpId/:branch/*",md$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await zd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=QX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(id$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ss(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Vs(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ss(Z,Y)}}),$.patch("/:virtualMcpId/:branch",IB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=qB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{RT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(m71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Vs(Z),W=await bd$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:$l(Q)},G),K=QX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:id$(Z)})}catch(J){return Ss(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof m4&&W.status===409))throw W;await xT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof m4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof m4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ss(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof m4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ss(Z,Q)}}),$}var AB6,ld$=500,cd$=1048576,dd$=1024,RB6=8388608,IB6,qB6,md$;var nd$=D(()=>{Jt0();IT0();d$();MF();v71();AT0();$X1();d71();xd$();ud$();e71();aD();vT0();AB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;IB6=a5({maxSize:RB6,onError:($)=>$.json({error:"Payload too large"},413)}),qB6=Jl.object({set:Jl.record(Jl.string(),Jl.unknown()).optional(),delete:Jl.array(Jl.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=ld$,{message:`Patch cannot touch more than ${ld$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=cd$),{message:`Each block must be at most ${cd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=dd$),{message:`Each block key must be at most ${dd$} characters`}),md$=PT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!TB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!hd$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!WD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Ms(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var td$=($)=>{let Z=new J1;if(Z.use("*",Ev),Z.route("/",bA0()),Z.route("/",Hh$()),Z.route("/",wc$()),Z.route("/",Bc$()),Z.route("/",ET0()),Z.route("/tools",Tc$()),Z.route("/",zc$()),Z.route("/",pl$({kvStorage:$.kvStorage})),Z.route("/",ml$()),Z.route("/fs",Jc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",vd$()),Z.route("/decofile",pd$()),Z.route("/",Hc$()),Z.route("/deco-sites",yA0()),Z.route("/hosting",eg$()),Z.route("/monitor",Jh$()),Z.route("/sso",VA0()),Z.route("/",jT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",tg$()),$.mountDevAssets)Z.route("/dev-assets",lA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Lx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Kc$()),Z.route("/mcp",gL0()),Z.route("/mcp/self",LT0()),Z.route("/mcp",lL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var od$=D(()=>{d$();TA0();og$();QZ1();$h$();Wh$();cA0();oa();s91();il$();nl$();Wc$();rt();p91();cL0();q71();Fc$();Uc$();Oc$();Lc$();Pc$();k71();Rc$();V71();hL0();fd$();nd$()});function MB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var kB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},rd$=()=>{let $=new J1;return $.use("*",kB6),$.get("/",async(Z)=>{let X=V0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await PY(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:MB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var ad$=D(()=>{d$();D$();_P0()});import{z as q1}from"zod";function vF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function gB6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function hB6($,Z,X){try{return JSON.parse($)}catch{throw new $m$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function uB6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:hB6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function lB6($){let Z=$.map((X)=>{let Q=X.function.parameters?sY(X.function.parameters):sY({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function cB6($){if(!$)return;return{openai:{response_format:$}}}function dB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function sd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function ed$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var VB6=256,SB6,CB6,_B6,vB6,fB6,bB6,xB6,yB6,$m$,Zm$,Xm$;var Qm$=D(()=>{h4();d$();eu();CU();SB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),CB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),_B6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(CB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),vB6=q1.object({type:q1.literal("text")}),fB6=q1.object({type:q1.literal("json_object")}),bB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),xB6=q1.union([vB6,fB6,bB6]),yB6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(_B6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(SB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:xB6.optional(),user:q1.string().optional()});$m$=class $m$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Zm$=new J1;Zm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(vF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=yB6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=gB6(G.model);if(!J)return $.json(vF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>OL(j.providerId));if(!E)return $.json(vF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(vF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=uB6(G.messages),N=G.tools?lB6(G.tools):void 0,B=cB6(G.response_format),O=dB6(),w=Math.floor(Date.now()/1000);if(G.stream)return eU($,async(L)=>{let E=sd$(H,U,N,G,B,$.req.raw.signal);try{let j=CO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=VB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:ed$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=sd$(H,U,N,G,B,$.req.raw.signal),E=await VO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:ed$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(vF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vF(Y.message,"server_error"),500)}});Xm$=Zm$});function mB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Ym$(){let $=new J1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=t0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let U of H){if(te1(U)!==G)continue;if(!mB6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Gm$=D(()=>{d$();uH()});var Wm$;var Jm$=D(()=>{Wm$={name:"decocms",version:"4.328.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"}}});function nB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??pB6}}var Km$,pB6="https://ph.studio.decocms.com",Fm$;var Hm$=D(()=>{d$();X90();Z_();u5();D$();f91();Jm$();Km$=new J1;Km$.get("/",($)=>{let Z={version:Wm$.version,theme:Hp1(),...vH().logo&&{logo:vH().logo},...EU()&&{internalUrl:b_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:ey$(),posthog:nB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:gs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Fm$=Km$});function Wl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function YX1($){return(Wl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Nm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Wl($))}&sz=${Z}`}function Um$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Bm$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Um$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Um$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var vv,tB6,oB6,rB6,aB6,Om$;var Dm$=D(()=>{vv=l0.enum(["good","bad","neutral"]),tB6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:vv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),oB6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(tB6)),rB6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},aB6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:vv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:vv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:vv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:vv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(oB6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:vv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:vv.optional()})).min(1)})]),Om$=l0.object({...rB6,template:aB6})});function uT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Om$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var GX1=D(()=>{Dm$()});import{join as wm$}from"path";async function eB6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(sB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=uT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||YX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function $O6($,Z){let X=Wl($),Q=Z?.brand?.trim()||YX1(X),Y=Nm$(X,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Bm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
|
|
2983
|
+
`,j=await Z.createBlob(E);await jd$(Z.owner,Z.repo,j,E);let z=L[0]??`${_T0(Q)}/${i71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of a71(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ts(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:EB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=DB6-1)throw O;await L$(Z7(2000,200,Y,2,0.5))}}}function EB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Ai0(Q,$.deps.coAuthor)}var DB6=3,XX1;var xd$=D(()=>{A70();IT0();a8();aD();vT0();XX1=new Map});import{createHmac as yd$,randomBytes as jB6,timingSafeEqual as zB6}from"crypto";function gd$(){if(hT0)return hT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return hT0=$?Buffer.from($):jB6(32),hT0}function QX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+PB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=yd$("sha256",gd$()).update(Q).digest("base64url");return`${Q}.${Y}`}function hd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(yd$("sha256",gd$()).update(Q).digest("base64url"));if(Y.length!==G.length||!zB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var PB6=21600000,hT0=null;var ud$=D(()=>{D$()});import{z as Jl}from"zod";function TB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&AB6.test($)}function id$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Vs($){let Z=$.get("decofileScope");return TT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ss($,Z){if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function pd$(){let $=new J1;return $.use("/:virtualMcpId/:branch",md$),$.use("/:virtualMcpId/:branch/*",md$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await zd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=QX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(id$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ss(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Vs(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ss(Z,Y)}}),$.patch("/:virtualMcpId/:branch",IB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=qB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{RT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(m71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Vs(Z),W=await bd$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:$l(Q)},G),K=QX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:id$(Z)})}catch(J){return Ss(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof m4&&W.status===409))throw W;await xT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof m4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof m4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ss(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Vs(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof m4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ss(Z,Q)}}),$}var AB6,ld$=500,cd$=1048576,dd$=1024,RB6=8388608,IB6,qB6,md$;var nd$=D(()=>{Jt0();IT0();d$();MF();v71();AT0();$X1();d71();xd$();ud$();e71();aD();vT0();AB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;IB6=a5({maxSize:RB6,onError:($)=>$.json({error:"Payload too large"},413)}),qB6=Jl.object({set:Jl.record(Jl.string(),Jl.unknown()).optional(),delete:Jl.array(Jl.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=ld$,{message:`Patch cannot touch more than ${ld$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=cd$),{message:`Each block must be at most ${cd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=dd$),{message:`Each block key must be at most ${dd$} characters`}),md$=PT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!TB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!hd$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!WD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Ms(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var td$=($)=>{let Z=new J1;if(Z.use("*",Ev),Z.route("/",bA0()),Z.route("/",Hh$()),Z.route("/",wc$()),Z.route("/",Bc$()),Z.route("/",ET0()),Z.route("/tools",Tc$()),Z.route("/",zc$()),Z.route("/",pl$({kvStorage:$.kvStorage})),Z.route("/",ml$()),Z.route("/fs",Jc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",vd$()),Z.route("/decofile",pd$()),Z.route("/",Hc$()),Z.route("/deco-sites",yA0()),Z.route("/hosting",eg$()),Z.route("/monitor",Jh$()),Z.route("/sso",VA0()),Z.route("/",jT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",tg$()),$.mountDevAssets)Z.route("/dev-assets",lA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Lx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Kc$()),Z.route("/mcp",gL0()),Z.route("/mcp/self",LT0()),Z.route("/mcp",lL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var od$=D(()=>{d$();TA0();og$();QZ1();$h$();Wh$();cA0();oa();s91();il$();nl$();Wc$();rt();p91();cL0();q71();Fc$();Uc$();Oc$();Lc$();Pc$();k71();Rc$();V71();hL0();fd$();nd$()});function MB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var kB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},rd$=()=>{let $=new J1;return $.use("*",kB6),$.get("/",async(Z)=>{let X=V0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await PY(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:MB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var ad$=D(()=>{d$();D$();_P0()});import{z as q1}from"zod";function vF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function gB6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function hB6($,Z,X){try{return JSON.parse($)}catch{throw new $m$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function uB6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:hB6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function lB6($){let Z=$.map((X)=>{let Q=X.function.parameters?sY(X.function.parameters):sY({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function cB6($){if(!$)return;return{openai:{response_format:$}}}function dB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function sd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function ed$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var VB6=256,SB6,CB6,_B6,vB6,fB6,bB6,xB6,yB6,$m$,Zm$,Xm$;var Qm$=D(()=>{h4();d$();eu();CU();SB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),CB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),_B6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(CB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),vB6=q1.object({type:q1.literal("text")}),fB6=q1.object({type:q1.literal("json_object")}),bB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),xB6=q1.union([vB6,fB6,bB6]),yB6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(_B6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(SB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:xB6.optional(),user:q1.string().optional()});$m$=class $m$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Zm$=new J1;Zm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(vF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=yB6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=gB6(G.model);if(!J)return $.json(vF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>OL(j.providerId));if(!E)return $.json(vF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(vF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=uB6(G.messages),N=G.tools?lB6(G.tools):void 0,B=cB6(G.response_format),O=dB6(),w=Math.floor(Date.now()/1000);if(G.stream)return eU($,async(L)=>{let E=sd$(H,U,N,G,B,$.req.raw.signal);try{let j=CO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=VB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:ed$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=sd$(H,U,N,G,B,$.req.raw.signal),E=await VO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:ed$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(vF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vF(Y.message,"server_error"),500)}});Xm$=Zm$});function mB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Ym$(){let $=new J1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=t0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let U of H){if(te1(U)!==G)continue;if(!mB6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Gm$=D(()=>{d$();uH()});var Wm$;var Jm$=D(()=>{Wm$={name:"decocms",version:"4.328.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"}}});function nB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??pB6}}var Km$,pB6="https://ph.studio.decocms.com",Fm$;var Hm$=D(()=>{d$();X90();Z_();u5();D$();f91();Jm$();Km$=new J1;Km$.get("/",($)=>{let Z={version:Wm$.version,theme:Hp1(),...vH().logo&&{logo:vH().logo},...EU()&&{internalUrl:b_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:ey$(),posthog:nB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:gs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Fm$=Km$});function Wl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function YX1($){return(Wl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Nm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Wl($))}&sz=${Z}`}function Um$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Bm$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Um$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Um$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var vv,tB6,oB6,rB6,aB6,Om$;var Dm$=D(()=>{vv=l0.enum(["good","bad","neutral"]),tB6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:vv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),oB6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(tB6)),rB6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},aB6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:vv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:vv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:vv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:vv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(oB6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:vv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:vv.optional()})).min(1)})]),Om$=l0.object({...rB6,template:aB6})});function uT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Om$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var GX1=D(()=>{Dm$()});import{join as wm$}from"path";async function eB6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(sB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=uT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||YX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function $O6($,Z){let X=Wl($),Q=Z?.brand?.trim()||YX1(X),Y=Nm$(X,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Bm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
|
|
2984
2984
|
`)}function ZO6($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
|
|
2985
2985
|
</head>`)}function Lm$($){let Z=new J1;return Z.get("/:domain/og.png",async(X)=>{let Q=Wl(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(wm$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(XO6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?wm$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await eB6(Wl(Q)),K=$O6(Q,W);return X.html(ZO6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var sB6=2500,XO6=1e4;var Em$=D(()=>{d$();GX1();jE();D$()});function Cs($,Z){return fetch(`${DK({})}${$}`,Z)}async function QO6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Cs(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=uT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var YO6,ZN,jm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},zm$;var Pm$=D(()=>{d$();tY();jE();GX1();YO6=new Set(["complete","errored","terminated","unknown"]),ZN=new J1;ZN.use("*",async($,Z)=>{let X=await $8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});ZN.use("/link-token/*",jm$);ZN.use("/suggest",jm$);ZN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await QO6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});ZN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Cs("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${EE({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});ZN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Cs(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${EE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:YO6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});ZN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Cs(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});ZN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Cs(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});zm$=ZN});import{createHmac as GO6,timingSafeEqual as JO6}from"crypto";function Tm$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let U=F.slice(0,H).trim(),N=F.slice(H+1).trim();if(U==="t")Y=N;else if(U==="v1")G.push(N)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>WO6)return!1;let W=GO6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&JO6(K,H)})}function Rm$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=cJ(Z),Q=cJ(cJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:fF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Im$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function fF($){return typeof $==="string"?$:void 0}function cJ($){return typeof $==="object"&&$!==null?$:void 0}function lT0($){return typeof $==="number"?new Date($*1000):null}function KX1($){return fF($)??fF(cJ($)?.id)}function KO6($){return KX1($.subscription)??fF(cJ(cJ($.parent)?.subscription_details)?.subscription)}function FO6($){let Z=lT0($.current_period_end);if(Z)return Z;let X=cJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=cJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function JX1($,Z){let X=lT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function WX1($,Z){let X=lT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function HO6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=fF(cJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(fF(cJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(fF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=fF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(cJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:cJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(fF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=KX1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(JX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:KX1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:WX1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=fF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&JX1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Im$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:FO6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:WX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=KO6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(JX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:lT0(X.period_end),lastStripeEventAt:WX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function UO6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Im$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Am$($,Z){let X=UO6($,Z);if(!X)return;mY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Et1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function qm$($){let Z=new UK(B8().db),X=await HO6(Z,$);if(!(X.handled&&X.topUp))Am$($,X);if(X.handled&&X.topUp)await dj$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Am$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await o0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof oY&&(Q.status===400||Q.status===404)))throw Q}return X}var WO6=300;var Mm$=D(()=>{rG();f4();b50();CE();D11()});var NO6=1048576,FX1;var km$=D(()=>{d$();MF();D$();Mm$();FX1=new J1;FX1.post("/webhook",a5({maxSize:NO6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=V0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Tm$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Rm$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await qm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as BO6}from"crypto";function DO6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return BO6(Buffer.from(Y),Buffer.from(Q))}var OO6=5242880,HX1;var Vm$=D(()=>{d$();MF();r3();HX1=new J1;HX1.post("/webhook",a5({maxSize:OO6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!DO6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Yt0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Sm$($){let Z=new dU($.db,new gX($.encryptionKey)),X=new J1;return X.get("/attachments/:token",async(Q)=>{let Y=cK$(Q.req.param("token"));if(!Y)return Q.json({error:"Invalid or expired link"},404);let G=await Z.getByOrg(Y.organizationId);if(!G)return Q.json({error:"Jira is not connected"},404);let W=await new JG(G.siteUrl,G.email,G.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return Q.json({error:"Jira refused the download"},502);let K=new Headers;for(let F of["content-type","content-length","content-disposition"]){let H=W.headers.get(F);if(H)K.set(F,H)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),X}var Cm$=D(()=>{d$();iN();Zo0();hC()});function _m$($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let X=Z.issue?.id,Q=Z.issue?.key,Y=Z.changelog?.id;if(typeof X!=="string"&&typeof X!=="number"||typeof Q!=="string"||typeof Y!=="string"&&typeof Y!=="number")return null;let G=Z.changelog?.items?.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")return null;return{issueId:String(X),issueKey:Q,toStatus:G.toString,changelogId:String(Y)}}function vm$($,Z,X){let Q=[];for(let Y of Z){if(new Date(Y.created).getTime()<X.getTime())continue;let G=Y.items.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")continue;Q.push({issueId:$.id,issueKey:$.key,toStatus:G.toString,changelogId:Y.id})}return Q.sort((Y,G)=>Number(Y.changelogId)-Number(G.changelogId))}function EO6($){return`Jira ${$.key}: ${$.summary}`}async function cT0($,Z,X){if(!Z.enabled)return"disabled";let Q=Z.organizationId,Y=await $.storage.jiraIntegrations.getAutomation(Q,X.toStatus);if(!Y)return"no_rule";let G=new JG(Z.siteUrl,Z.email,Z.apiToken),J=await $w0(G,Z.siteUrl,X.issueId),W=await jO6($,Z,X,J);if(!await $.storage.jiraIntegrations.claimTrigger(Q,X.issueId,X.changelogId))return"duplicate";let F=await $.storage.taskBoard.update(W.id,Q,{assigneeId:m$,assignedBy:Z.createdBy},Z.createdBy);try{await ZW($,F,{instruction:Y.prompt??wO6,source:{kind:"jira",issueKey:J.key,title:EO6(J),body:`${Zw0(J)}
|
|
2986
2986
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as o,j as r}from"./index-CNA2aKj-.js";import{O as m}from"./api-keys-C5dqm0iR.js";import{R as p}from"./require-capability-Cnj74j-E.js";import"./AlertCircle-DFzG-esg.js";import"./Copy01-DYNpOI_C.js";import"./Key01-zxWaTQRe.js";import"./Plus-BnxTY41Q.js";import"./Trash01-z_b2Oxgp.js";import"./alert-dialog-ChT6uoQk.js";import"./dialog-cVCH6HJP.js";import"./input-dV3u2KmE.js";import"./label-DyMskFeo.js";import"./use-mcp-client-CuNdd4UC.js";import"./constants-DNuUCxmW.js";import"./auth-CS4b2-Lf.js";import"./access-gate-Dj06sJQp.js";import"./capability-load-error-Dsxeb9Ek.js";function A(){const t=o.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=r.jsx(p,{capability:"api-keys:manage",area:"api-keys",children:r.jsx(m,{})}),t[0]=i):i=t[0],i}export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,j as o,b as $,W as D,d as M,r as q,P as d,B as V,o as R}from"./index-CNA2aKj-.js";import{s as W}from"./Plus-BnxTY41Q.js";import{i as S}from"./Zap-BzuIe6M5.js";import{S as F}from"./search-input-h7Vc38CY.js";import{E as T}from"./empty-state-C16aqLne.js";import{c as G}from"./use-automations-B7RB5tnn.js";import{u as H}from"./use-navigate-to-agent-Cs9CtUkd.js";import{A as J}from"./automation-list-row-Gnqfw86c.js";import{h as K}from"./constants-DNuUCxmW.js";import{a as O}from"./use-virtual-mcp-6JccVrwi.js";import{R as Q}from"./require-capability-Cnj74j-E.js";import"./SearchMd-BCZehxe9.js";import"./use-mcp-client-CuNdd4UC.js";import"./auth-CS4b2-Lf.js";import"./use-destination-route-sUTDnD4b.js";import"./hooks-CIsOCxDM.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BQdxkHf7.js";import"./task-board-nVCEq9U3.js";import"./schema-Cm8abQWS.js";import"./chat-context-DNR7_SlQ.js";import"./use-panel-navigate-UCeZ968V.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-BuTYsFl9.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CrSzAy0n.js";import"./use-organization-settings-B6_b0aKa.js";import"./github-repo-COLY3wWI.js";import"./alert-dialog-ChT6uoQk.js";import"./dropdown-menu-Dp-f0JD-.js";import"./Check-C5l_z_PW.js";import"./ChevronRight-CIbVHD54.js";import"./DotsVertical-DtCZQfz7.js";import"./agent-icon-BCVz0c1t.js";import"./AlertCircle-DFzG-esg.js";import"./Tool01-k_Vl64IC.js";import"./ArrowUp-BXaZzcaa.js";import"./ArrowLeft-BBnsNP0J.js";import"./Tool02-D5kkt2ya.js";import"./XCircle-BUs23B37.js";import"./TrendUp01-N7POWJ_7.js";import"./ZoomOut-BPOlS5AK.js";import"./Users03-DD2JN0RC.js";import"./CheckCircle-Onxl1pJs.js";import"./ChevronUp--gUiABx2.js";import"./ChevronSelectorVertical-Bpz_kIxh.js";import"./UserSquare-A7bQQCTW.js";import"./Copy01-DYNpOI_C.js";import"./CreditCard01-DINt_l5H.js";import"./Download01-Cv5Oxdwd.js";import"./Settings02-UYOhqVZO.js";import"./Eye-DgONBiT6.js";import"./Share07-TwQe5hbo.js";import"./GitBranch01-DsDQQu5x.js";import"./Globe01-6tjGt9Xg.js";import"./XClose-2L8Wqp9G.js";import"./HardDrive-DOKUKDz6.js";import"./Image01-C-EN7-TS.js";import"./Key01-zxWaTQRe.js";import"./Link01-BGfy_VoS.js";import"./LinkExternal01-DU0tq8Q8.js";import"./Monitor01-BiF54KR1.js";import"./Sun-agiNlD2Y.js";import"./Package-xc76PLXz.js";import"./Palette-DJJ5i9M1.js";import"./Play-DArR8Qwq.js";import"./Shield01-XNOWku4V.js";import"./Stars01-Bma4YQjQ.js";import"./Trash01-z_b2Oxgp.js";import"./Upload01-BCDC9pFj.js";import"./User01-DAFMFdmB.js";import"./Users01-B9f7zHaR.js";import"./access-gate-Dj06sJQp.js";import"./capability-load-error-Dsxeb9Ek.js";function U(){const t=B.c(20),i=$(),{org:l}=D(),{data:C}=G(void 0),g=C===void 0?[]:C,k=O(),P=H(),f=M(),[x,E]=q.useState(""),h=x.toLowerCase(),A=new Map(k.map(X)),b=g.filter(e=>{if(!h||e.name.toLowerCase().includes(h))return!0;if(e.virtual_mcp_id){const p=A.get(e.virtual_mcp_id);if(p&&p.title.toLowerCase().includes(h))return!0}return!1}),z=(e,p)=>{const N=p&&A.has(p)?p:K(l.id);R("automations_list_row_clicked",{automation_id:e,agent_id:N,source:"settings_automations"}),P(N,{panel:`automation:${e}`})};let c;t[0]!==f||t[1]!==l.slug?(c=()=>{R("automations_empty_state_browse_agents_clicked"),f({to:"/$org/settings/agents",params:{org:l.slug}})},t[0]=f,t[1]=l.slug,t[2]=c):c=t[2];const L=c,j=d,v=d,w=d;let s;t[3]!==i?(s=i("settings.automations.pageTitle"),t[3]=i,t[4]=s):s=t[4];let r;t[5]!==s?(r=o.jsx(d.Title,{children:s}),t[5]=s,t[6]=r):r=t[6];const _=g.length>0&&o.jsx(F,{value:x,onChange:E,placeholder:i("settings.automations.searchPlaceholder"),className:"w-full md:w-[375px]"});let m;t[7]!==r||t[8]!==_?(m=o.jsxs("div",{className:"flex flex-col gap-6",children:[r,_]}),t[7]=r,t[8]=_,t[9]=m):m=t[9];const y=g.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.emptyTitle"),description:i("settings.automations.emptyDescription"),actions:o.jsxs(V,{size:"sm",onClick:L,children:[o.jsx(W,{size:14}),i("settings.automations.browseAgentsButton")]})})}):b.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.noResultsTitle"),description:i("settings.automations.noResultsDescription",{search:x})})}):o.jsx("div",{className:"mt-6 rounded-xl border border-border overflow-hidden",children:b.map(e=>o.jsx(J,{automation:e,showAgent:!0,onClick:()=>z(e.id,e.virtual_mcp_id)},e.id))});let n;t[10]!==w.Body||t[11]!==m||t[12]!==y?(n=o.jsxs(w.Body,{children:[m,y]}),t[10]=w.Body,t[11]=m,t[12]=y,t[13]=n):n=t[13];let a;t[14]!==v.Content||t[15]!==n?(a=o.jsx(v.Content,{children:n}),t[14]=v.Content,t[15]=n,t[16]=a):a=t[16];let u;return t[17]!==j||t[18]!==a?(u=o.jsx(j,{children:a}),t[17]=j,t[18]=a,t[19]=u):u=t[19],u}function X(t){return[t.id,t]}function wo(){const t=B.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Q,{capability:"automations:manage",area:"automations",children:o.jsx(U,{})}),t[0]=i):i=t[0],i}export{wo as default};
|