decocms 4.331.2 → 4.332.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-BeqK9vLj.js → AlertCircle-DGaWwPgQ.js} +1 -1
- package/dist/client/assets/{AreaChart-CsMYZQn7.js → AreaChart-CdnhzLvb.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CN1hBjtr.js → ArrowLeft-CWVS1rl4.js} +1 -1
- package/dist/client/assets/{ArrowUp-BjhAjJq1.js → ArrowUp-tbXPz6Pt.js} +1 -1
- package/dist/client/assets/{Check-DjbhZve0.js → Check-BfBGeuul.js} +1 -1
- package/dist/client/assets/{CheckCircle-git3rlqu.js → CheckCircle-Bd4fTOjH.js} +1 -1
- package/dist/client/assets/{ChevronRight-3dlQWzgE.js → ChevronRight-CFzWSZUg.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-BOzPuKrx.js → ChevronSelectorVertical-CafPMJW2.js} +1 -1
- package/dist/client/assets/{ChevronUp-D3F3YlZD.js → ChevronUp-wXVrCZI1.js} +1 -1
- package/dist/client/assets/{Copy01-BsaQgoj1.js → Copy01-3zYOadUJ.js} +1 -1
- package/dist/client/assets/{CreditCard01-C_6AxVf0.js → CreditCard01-CGpVReoa.js} +1 -1
- package/dist/client/assets/{DotsVertical-CbPW2qju.js → DotsVertical-Bnzh51DN.js} +1 -1
- package/dist/client/assets/{Download01-BulEednD.js → Download01-DgtF4BB5.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-D9dK_YZc.js → ErrorBarContext-C7JRDdSX.js} +1 -1
- package/dist/client/assets/{Eye-CfTm4nPD.js → Eye-C4MrrakN.js} +1 -1
- package/dist/client/assets/{GitBranch01-8cxvPvq5.js → GitBranch01-DPV5Y5N7.js} +1 -1
- package/dist/client/assets/{Globe01-DUeSgj8X.js → Globe01-DMQbJ5et.js} +1 -1
- package/dist/client/assets/{HardDrive-DjCXqX6t.js → HardDrive-C1E6V6Yk.js} +1 -1
- package/dist/client/assets/{Image01-DwrWIWvg.js → Image01-DyQdO4x_.js} +1 -1
- package/dist/client/assets/{Key01-cfBryPvV.js → Key01-BYudX7Yc.js} +1 -1
- package/dist/client/assets/{Link01-B7wdC4b4.js → Link01-3tlXT_aK.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BZdQAjTA.js → LinkExternal01-Dpq3cwMH.js} +1 -1
- package/dist/client/assets/{Monitor01-BL14QWXf.js → Monitor01-B3Lw1jH5.js} +1 -1
- package/dist/client/assets/{Package-DX-ASn28.js → Package-BJ25qVC3.js} +1 -1
- package/dist/client/assets/{Palette-BXVUWnOJ.js → Palette-BedlZSuj.js} +1 -1
- package/dist/client/assets/{Play-UUaLLIEu.js → Play-D8kc57eX.js} +1 -1
- package/dist/client/assets/{Plus-CpqsIXI9.js → Plus-I156OmA3.js} +1 -1
- package/dist/client/assets/{SearchMd-BVPcVzid.js → SearchMd-CKfC5TmJ.js} +1 -1
- package/dist/client/assets/{Sector-CNrTPP8O.js → Sector-CkAjItYp.js} +1 -1
- package/dist/client/assets/{Settings02-kQ_iz7Na.js → Settings02-CqqtLHmZ.js} +1 -1
- package/dist/client/assets/{Share07-qJyiNf2L.js → Share07-BPxCIUue.js} +1 -1
- package/dist/client/assets/{Shield01-BVa09cGH.js → Shield01-0x-yz50P.js} +1 -1
- package/dist/client/assets/{Stars01-CVaT1-mP.js → Stars01-DEDp8TU-.js} +1 -1
- package/dist/client/assets/{Sun-ClDHYwC4.js → Sun-rrOh04Rw.js} +1 -1
- package/dist/client/assets/{Tool01-DDfwzv0E.js → Tool01-Bw9MLeJG.js} +1 -1
- package/dist/client/assets/{Tool02-mjTC5cbv.js → Tool02-pQUInAOa.js} +1 -1
- package/dist/client/assets/{Trash01-DQ7by04L.js → Trash01-JMhZ3Tty.js} +1 -1
- package/dist/client/assets/{TrendUp01-DD4S_VSX.js → TrendUp01-CKJmSlQn.js} +1 -1
- package/dist/client/assets/{Upload01-BXzxyyOQ.js → Upload01-CLeyxvQd.js} +1 -1
- package/dist/client/assets/{User01-6qHgTIdo.js → User01-DN5UquSh.js} +1 -1
- package/dist/client/assets/{UserSquare-1qJS6xRb.js → UserSquare-DQc4Fwqd.js} +1 -1
- package/dist/client/assets/{Users01-C8gkmUtm.js → Users01-CHQT_dsi.js} +1 -1
- package/dist/client/assets/{Users03-B0YfD5hY.js → Users03-Cy6ggfv3.js} +1 -1
- package/dist/client/assets/{XCircle-BcMeYIi2.js → XCircle-e3s9N7iZ.js} +1 -1
- package/dist/client/assets/{XClose-DVUXrLHk.js → XClose-Cx_5p9-p.js} +1 -1
- package/dist/client/assets/{Zap-ClD9aw0I.js → Zap-BOPEKw8B.js} +1 -1
- package/dist/client/assets/{ZoomOut-C-dp4U-B.js → ZoomOut-D7X89Xml.js} +1 -1
- package/dist/client/assets/{access-gate-CsSFWw4h.js → access-gate-fms1ON4q.js} +1 -1
- package/dist/client/assets/{agent-icon-DN8AgOdx.js → agent-icon-DawhRDaM.js} +1 -1
- package/dist/client/assets/agents-list-CJK-Vy61.js +1 -0
- package/dist/client/assets/ai-providers-CskGQgeR.js +1 -0
- package/dist/client/assets/{alert-DpsVltMr.js → alert-CdKOT2Ni.js} +1 -1
- package/dist/client/assets/{alert-dialog-CusoR2MF.js → alert-dialog-hhud4Gab.js} +1 -1
- package/dist/client/assets/{analytics-tab-HkIuUgFN.js → analytics-tab-CilEmRZN.js} +1 -1
- package/dist/client/assets/api-keys-BlVxWO-h.js +1 -0
- package/dist/client/assets/{api-keys--ufsDW4o.js → api-keys-CK_ST-j2.js} +1 -1
- package/dist/client/assets/app-editor-DLs3Ul6d.js +1 -0
- package/dist/client/assets/{auth-DbQBRQ4Z.js → auth-CNjmGQ4V.js} +1 -1
- package/dist/client/assets/{auth-catchall-CF8DsHxc.js → auth-catchall-DXqEMCGT.js} +1 -1
- package/dist/client/assets/{auth-entry-BBbQbX1N.js → auth-entry-BvSY5US-.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Flrtx9xK.js → auth-split-layout-DTB4MUWT.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Bgm1wW1L.js → authenticate-and-persist-oauth-DYNv1LQw.js} +1 -1
- package/dist/client/assets/{automation-list-row-D4FZWyMU.js → automation-list-row-C7_DXjLv.js} +1 -1
- package/dist/client/assets/{automation-runs-Z276Tdfx.js → automation-runs-azd6G8Ha.js} +1 -1
- package/dist/client/assets/{automations-CgvUL0Wl.js → automations-B8mQch9W.js} +1 -1
- package/dist/client/assets/autosend-Zbzr4Vs8.js +1 -0
- package/dist/client/assets/{avatar-D27fcx4E.js → avatar-DLnW_949.js} +1 -1
- package/dist/client/assets/{badge-BcnJOpMB.js → badge-C1kl4ba0.js} +1 -1
- package/dist/client/assets/{block-document-W_9nY7DW.js → block-document-DH8Isg3s.js} +1 -1
- package/dist/client/assets/{breadcrumb-CqVV0Zcy.js → breadcrumb-D5SbFXUe.js} +1 -1
- package/dist/client/assets/{buckets-Cxf0uPjr.js → buckets-DirQGsQr.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-Ti7hVFO0.js → bulk-category-panel-D7_IfBbp.js} +1 -1
- package/dist/client/assets/{capability-load-error-56aZftmi.js → capability-load-error-C8TJPwv6.js} +1 -1
- package/dist/client/assets/{cards-vocTSBsd.js → cards-Wa7u18LE.js} +1 -1
- package/dist/client/assets/category-editor-BMbJSK8e.js +1 -0
- package/dist/client/assets/{cdn-tab-COaAZAZ-.js → cdn-tab-5JOA8bgA.js} +1 -1
- package/dist/client/assets/{chart-CIkrG501.js → chart-CfvkUrRB.js} +1 -1
- package/dist/client/assets/{chat-context-aTj9Qvdp.js → chat-context-BQg2wAMj.js} +6 -6
- package/dist/client/assets/{checkbox-OhwqzmfR.js → checkbox-DsDwNSVc.js} +1 -1
- package/dist/client/assets/{choose-editor-Bcb2EhmD.js → choose-editor-BasnEC2z.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CKXXh2rf.js → cli-auth-success-B5otSQlc.js} +1 -1
- package/dist/client/assets/{client-icons-Bp4gZmgX.js → client-icons-LV5EpOIE.js} +1 -1
- package/dist/client/assets/collection-detail-CbPr-uNE.js +1 -0
- package/dist/client/assets/{collection-display-button-181XCBV1.js → collection-display-button-Cm4gc9dR.js} +1 -1
- package/dist/client/assets/{collection-search-CQ7b80uM.js → collection-search-BI6GHzBt.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CXCbeysI.js → collection-table-wrapper-KQkly3Tg.js} +1 -1
- package/dist/client/assets/{collection-tabs-By6Tb-WH.js → collection-tabs-DfU20xoC.js} +1 -1
- package/dist/client/assets/{command-Ckd7DXZH.js → command-BX8CujxT.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-rFlOBO_a.js → commerce-onboarding-DyZHm08C.js} +1 -1
- package/dist/client/assets/{connect-Ci7mBsZ7.js → connect-D950dKsM.js} +1 -1
- package/dist/client/assets/{connect-layout-QTFyeU1i.js → connect-layout-Dpf1obeP.js} +1 -1
- package/dist/client/assets/{connection-BX5mPQpz.js → connection-WYMfQ7DQ.js} +1 -1
- package/dist/client/assets/{connection-card-BPioxrIv.js → connection-card-05tNuu4H.js} +1 -1
- package/dist/client/assets/{connection-detail-RraPOmdC.js → connection-detail-B1j7Of_y.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-_LjGMZdA.js → connection-form-helpers-D4jcXsjA.js} +1 -1
- package/dist/client/assets/{connections-Dl5MnCHC.js → connections-B-UAtE_8.js} +1 -1
- package/dist/client/assets/{constants-DNuUCxmW.js → constants-DNw8DKoD.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-CQedtadz.js → create-organization-dialog-28UaaE2I.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-gYBZKhpd.js → decopilot-sse-pool-BKsExghb.js} +1 -1
- package/dist/client/assets/{dialog-Bd599x3P.js → dialog-CDo4MBP6.js} +1 -1
- package/dist/client/assets/{domain-settings-CaN1_d2e.js → domain-settings-IOS-08Mq.js} +1 -1
- package/dist/client/assets/{drawer-BKomctGS.js → drawer-_AK9bFi8.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CY5iTV-e.js → dropdown-menu-CAWZ0_tm.js} +1 -1
- package/dist/client/assets/e2e-tab-WMCH4fNR.js +1 -0
- package/dist/client/assets/{editor-CA29izQ6.js → editor-BdizNDCH.js} +1 -1
- package/dist/client/assets/{empty-state-8UJLsM1P.js → empty-state-Dm2ymREG.js} +1 -1
- package/dist/client/assets/{empty-state-CkBTnzIe.js → empty-state-TkcHS3uK.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CVbr2Fgo.js → extract-connection-data-Dlz-gEi2.js} +1 -1
- package/dist/client/assets/file-explorer-CI0IoPMh.js +2 -0
- package/dist/client/assets/{file-type-icon-DcpGkosI.js → file-type-icon-BmQruxfN.js} +1 -1
- package/dist/client/assets/{folder-icon-BUlfJvCw.js → folder-icon-DP4Eplxl.js} +1 -1
- package/dist/client/assets/{form-DUbigyul.js → form-O4m2UJg-.js} +1 -1
- package/dist/client/assets/{general-DrPYZgnl.js → general-DZ1hmTnf.js} +1 -1
- package/dist/client/assets/github-icon-lgC-aA3H.js +1 -0
- package/dist/client/assets/github-repo-picker-Bk-rnLOl.js +1 -0
- package/dist/client/assets/{hooks-xH3j9z4h.js → hooks-DN_zGTIJ.js} +5 -5
- package/dist/client/assets/{hosting-tab-DGV7JupH.js → hosting-tab-DHkqEzCF.js} +1 -1
- package/dist/client/assets/{index-B35rA57u.js → index-B7C-ZaiU.js} +1 -1
- package/dist/client/assets/index-Bj1-n2mq.css +1 -0
- package/dist/client/assets/index-BwkRidSO.js +1 -0
- package/dist/client/assets/index-DRK_p8qT.js +1 -0
- package/dist/client/assets/{index-Cy0AzIGX.js → index-DZCNxaHh.js} +47 -47
- package/dist/client/assets/{index-Ceii15GN.js → index-DhHjpqKm.js} +7 -7
- package/dist/client/assets/{index--e6gVzRr.js → index-IqcBeCvj.js} +1 -1
- package/dist/client/assets/{index-BLrvJdPf.js → index-M57K5T0Z.js} +1 -1
- package/dist/client/assets/{index-DaYo5gUO.js → index-XIJbFabv.js} +1 -1
- package/dist/client/assets/{index-N1d6ct61.js → index-e0KmpkK1.js} +1 -1
- package/dist/client/assets/{index-redirect-CZn5wIYB.js → index-redirect-DPvLnxQn.js} +1 -1
- package/dist/client/assets/{index-C_VkTp_2.js → index-z6Y9RqfX.js} +2 -2
- package/dist/client/assets/{infra-billing-c-RgpShK.js → infra-billing-Cjmo2bh1.js} +1 -1
- package/dist/client/assets/{input-DbojEF15.js → input-DnEgOlRJ.js} +1 -1
- package/dist/client/assets/{integration-icon-Bj6aC4Ym.js → integration-icon-BjZkBlSG.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DczR9Nn3.js → invite-member-dialog-BVMecNUA.js} +1 -1
- package/dist/client/assets/{label-CF4jhvOs.js → label-Cyr0LGLV.js} +1 -1
- package/dist/client/assets/{layout-CjtROQqq.js → layout-DE84R04T.js} +1 -1
- package/dist/client/assets/{login-BwJ6JF-9.js → login-D1O00RvQ.js} +1 -1
- package/dist/client/assets/{markdown-3zqu2ODi.js → markdown-DAfH1D5-.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DQrt-mrP.js → mcp-oauth-CaoImyB-.js} +1 -1
- package/dist/client/assets/{members-BXWT9wMX.js → members-Ob32Kz-U.js} +1 -1
- package/dist/client/assets/{monaco-editor-DyETaTcg.js → monaco-editor-DPoZHBwS.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DHyFgX57.js → monitoring-stats-row-BlmTojKr.js} +1 -1
- package/dist/client/assets/{multi-select-lJlTnI2g.js → multi-select-D54d5PTk.js} +1 -1
- package/dist/client/assets/{oauth-callback-Bzv4nZA1.js → oauth-callback-PCgYqee5.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Ca2sy-AQ.js → oauth-callback-ai-provider-DCIyCyU7.js} +1 -1
- package/dist/client/assets/{onboarding-CCkvjEDc.js → onboarding-CUr_wbDT.js} +1 -1
- package/dist/client/assets/org-layout-Dg7l-Ap0.js +1 -0
- package/dist/client/assets/{organization-choice-DOdB9L3a.js → organization-choice-BdteFlL9.js} +1 -1
- package/dist/client/assets/{orgs-Bs84vGFX.js → orgs-CUUtSHps.js} +1 -1
- package/dist/client/assets/{page-seo-form-CWW9LJ4P.js → page-seo-form-C4qJ07ER.js} +1 -1
- package/dist/client/assets/{popover-AiANmij8.js → popover-Cpk2uyjT.js} +1 -1
- package/dist/client/assets/post-calendar-C-BfuwDg.js +1 -0
- package/dist/client/assets/post-editor-4tXoAdKb.js +1 -0
- package/dist/client/assets/{primitives-CTzNLGKe.js → primitives-C6GKZmtg.js} +1 -1
- package/dist/client/assets/{profile-CPCLlrTW.js → profile-EYoF6PIG.js} +1 -1
- package/dist/client/assets/project-app-view-CdFEr6Ly.js +1 -0
- package/dist/client/assets/{project-icon-CWAsum16.js → project-icon-DLH9NBIU.js} +1 -1
- package/dist/client/assets/{prompts-DgXbCEaV.js → prompts-Cq-4_sxA.js} +1 -1
- package/dist/client/assets/record-editor-D5PxPrrO.js +1 -0
- package/dist/client/assets/redirect-editor-BE7taHvV.js +1 -0
- package/dist/client/assets/registry-C6W1ce9p.js +2 -0
- package/dist/client/assets/{registry-layout-EMoCkiKV.js → registry-layout-BlPof7lD.js} +1 -1
- package/dist/client/assets/{reports-C8jeAjE8.js → reports-C14_u8Ch.js} +1 -1
- package/dist/client/assets/{require-capability-B8ZhyEcB.js → require-capability-DEUybljI.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CUYqsQrd.js → required-auth-layout-BOqWdRqm.js} +1 -1
- package/dist/client/assets/{reset-password-CIh748_v.js → reset-password-DSJ8Mouw.js} +1 -1
- package/dist/client/assets/{review-settings-Uyv6Wj6T.js → review-settings-B-i0ALKF.js} +1 -1
- package/dist/client/assets/{roles-DgP0QZfB.js → roles-BVpzW1nf.js} +1 -1
- package/dist/client/assets/{schema-EMzeKiD8.js → schema-C25dJcYR.js} +1 -1
- package/dist/client/assets/{scroll-area-DksmVOA3.js → scroll-area-BqxVdfZi.js} +1 -1
- package/dist/client/assets/{search-input-BT4wQO0L.js → search-input-DlaBJqle.js} +1 -1
- package/dist/client/assets/{secrets-BZLbpf_f.js → secrets-sNWfSHqh.js} +1 -1
- package/dist/client/assets/{sections-editor-CrEO3muv.js → sections-editor-C-t_63u5.js} +2 -2
- package/dist/client/assets/{select-p3YkP5QY.js → select-CqYqady4.js} +1 -1
- package/dist/client/assets/{select-model-CqA2Sywa.js → select-model-BjbPH6OP.js} +1 -1
- package/dist/client/assets/{self-tool-result-CorOxwzp.js → self-tool-result-By068BHj.js} +1 -1
- package/dist/client/assets/seo-editor-BtW6iZAv.js +1 -0
- package/dist/client/assets/settings-layout-C8hCzUST.js +1 -0
- package/dist/client/assets/settings-sidebar-Do2Z0gSA.js +1 -0
- package/dist/client/assets/{shell-controls-CRkW_fMZ.js → shell-controls-BF2mDZK8.js} +1 -1
- package/dist/client/assets/shell-layout-Dgrq59kd.js +1 -0
- package/dist/client/assets/{skill-preview-Cne1vIDc.js → skill-preview-ByiphwPr.js} +1 -1
- package/dist/client/assets/{skills-MlRO4FY9.js → skills-B5M8KH3K.js} +1 -1
- package/dist/client/assets/source-system-tabs-CnEGUb4r.js +1 -0
- package/dist/client/assets/{sso-Cq5qt9ar.js → sso-BnayN86e.js} +1 -1
- package/dist/client/assets/{store-CAwa736B.js → store-DBMb2FsJ.js} +1 -1
- package/dist/client/assets/store-registry-B1Cst9Oy.js +2 -0
- package/dist/client/assets/{switch-BB4k41J_.js → switch-I8bTUVFa.js} +1 -1
- package/dist/client/assets/synced-repos-Dh7t-B8L.js +1 -0
- package/dist/client/assets/{table-CLlz1eE0.js → table-BFhelDKC.js} +1 -1
- package/dist/client/assets/{tabs-BfSNDViV.js → tabs-CMNN0Zg_.js} +1 -1
- package/dist/client/assets/{task-board-DC-z7Ntm.js → task-board-DGWa1Gm0.js} +1 -1
- package/dist/client/assets/task-route-DcwB5pXS.js +1 -0
- package/dist/client/assets/{tasks-D_DOTfom.js → tasks-BLNKFP5x.js} +1 -1
- package/dist/client/assets/{textarea-30WcclEI.js → textarea-B0r0ti_p.js} +1 -1
- package/dist/client/assets/{thread-intent-BytT8JCA.js → thread-intent-C73EBMZL.js} +1 -1
- package/dist/client/assets/thread-route-BvKduPsE.js +1 -0
- package/dist/client/assets/{toggle-group-DQbxaZEL.js → toggle-group-B_iZpGTL.js} +1 -1
- package/dist/client/assets/{toolbar-BRcXBknP.js → toolbar-Vt-Ej5Vf.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-UaK_jMZb.js → toolbar-icon-button-DO1_O4bx.js} +1 -1
- package/dist/client/assets/{track-CeG-qWML.js → track-BbSwhz7U.js} +1 -1
- package/dist/client/assets/{types-ym8B3p9C.js → types-C8fYYKqc.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BJrECpw9.js → use-ai-providers-Be7UvucI.js} +1 -1
- package/dist/client/assets/{use-automations-DoveMeCT.js → use-automations-Bh8ZbMuK.js} +1 -1
- package/dist/client/assets/{use-autosave-CWZtBcLH.js → use-autosave-DV3OL7r_.js} +1 -1
- package/dist/client/assets/{use-connection-B8SWnPTA.js → use-connection-Cwa0QgBQ.js} +1 -1
- package/dist/client/assets/{use-copy-DOX31Nmc.js → use-copy-BQnJ2OB1.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BqIi8-0x.js → use-create-virtual-mcp-Dq2DpQVL.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-XulojnGJ.js → use-debounced-autosave-C_SsQJXi.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DkmKNtWo.js → use-debounced-value-Chh3I3P4.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DKW4RKRT.js → use-decopilot-events-DYUs2Qhl.js} +1 -1
- package/dist/client/assets/{use-delete-connection-C4awezeC.js → use-delete-connection-DD6t7mTf.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CYkhXHRz.js → use-deployment-admin-ErQeZKsW.js} +1 -1
- package/dist/client/assets/{use-destination-route--qpdvTj3.js → use-destination-route-D3sPU3yn.js} +1 -1
- package/dist/client/assets/{use-file-configs-DlNRjVwb.js → use-file-configs-CEbI4yf1.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-BDctOfTY.js → use-infinite-scroll-DOiRhnJW.js} +1 -1
- package/dist/client/assets/{use-join-requests-BGh-sfMY.js → use-join-requests-oXvpcC9A.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-BXbMXkbX.js → use-mcp-auth-status-C7WOQgUm.js} +1 -1
- package/dist/client/assets/{use-mcp-client-B897_7pp.js → use-mcp-client-DqhPCNA-.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-DnQVH29L.js → use-mcp-prompts-RqxRElya.js} +1 -1
- package/dist/client/assets/{use-members-D765rESt.js → use-members-C6y22kN0.js} +1 -1
- package/dist/client/assets/use-navigate-to-agent-CrljNh9U.js +5 -0
- package/dist/client/assets/{use-org-auth-client-BsnXbSrQ.js → use-org-auth-client-CHgS0aCH.js} +1 -1
- package/dist/client/assets/use-org-notice-Br9Yvstr.js +1 -0
- package/dist/client/assets/{use-org-sso-aeP8x90Q.js → use-org-sso-Djh-Wjrr.js} +1 -1
- package/dist/client/assets/{use-organization-roles-bDIwKlrS.js → use-organization-roles--fV6OhgA.js} +1 -1
- package/dist/client/assets/{use-organization-settings--lk0xig1.js → use-organization-settings-CLrP5LP7.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-B2q5dGNh.js → use-panel-navigate-D9syj7R6.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DbU4jZw7.js → use-registry-connections-MhIa_jkH.js} +1 -1
- package/dist/client/assets/{use-secrets-DrYqXQyo.js → use-secrets-BjPyeyhU.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-Dmgpg5wN.js → use-section-preview-base-BT9ezAUh.js} +1 -1
- package/dist/client/assets/{use-status-sounds-ZhLe50N2.js → use-status-sounds-BJVy_x05.js} +1 -1
- package/dist/client/assets/{use-tags-DGfqaFuE.js → use-tags-56ZtFwCf.js} +1 -1
- package/dist/client/assets/{use-view-mode-Bsn87cCu.js → use-view-mode-SaJmHW_e.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Bo6cr0ng.js → use-virtual-mcp-DEiMy5Jt.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CFoJuuUN.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DSQqqgPb.js +1 -0
- package/dist/client/assets/{users-B2mvNtKc.js → users-DYF88Y5H.js} +1 -1
- package/dist/client/assets/variant-calendar-DU8m6GPF.js +1 -0
- package/dist/client/assets/{view-mode-toggle-B8rG-Kcn.js → view-mode-toggle-DzbBgRGw.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agents-list-CnbNxW7u.js +0 -1
- package/dist/client/assets/ai-providers-B-dmbWxQ.js +0 -1
- package/dist/client/assets/api-keys-Dq44XdXC.js +0 -1
- package/dist/client/assets/app-editor-DEHSgOZI.js +0 -1
- package/dist/client/assets/category-editor-ChGqUqZN.js +0 -1
- package/dist/client/assets/collection-detail-D5K8HWMy.js +0 -1
- package/dist/client/assets/e2e-tab-DqrWTyik.js +0 -1
- package/dist/client/assets/file-explorer-BUa8qiyh.js +0 -2
- package/dist/client/assets/github-repo-picker-DUwxSg4W.js +0 -1
- package/dist/client/assets/index-BOtdAgVM.js +0 -1
- package/dist/client/assets/index-BP-qj0LS.css +0 -1
- package/dist/client/assets/index-C8gxhtiZ.js +0 -1
- package/dist/client/assets/org-layout-DsfH2Fjq.js +0 -1
- package/dist/client/assets/post-calendar-BOZODqDm.js +0 -1
- package/dist/client/assets/post-editor-SEddXe0k.js +0 -1
- package/dist/client/assets/project-app-view-CxUWETfA.js +0 -1
- package/dist/client/assets/record-editor-D99Fs_el.js +0 -1
- package/dist/client/assets/redirect-editor-CNP-1CMW.js +0 -1
- package/dist/client/assets/registry-B3dnNI2W.js +0 -2
- package/dist/client/assets/seo-editor-CIU9FQBY.js +0 -1
- package/dist/client/assets/settings-layout-BHq4U_SH.js +0 -1
- package/dist/client/assets/settings-sidebar-f3bEtSkJ.js +0 -1
- package/dist/client/assets/shell-layout-DpsynfYk.js +0 -1
- package/dist/client/assets/store-registry-DrbOstlv.js +0 -2
- package/dist/client/assets/synced-repos-XaXN9mFS.js +0 -1
- package/dist/client/assets/task-route-CmOuMnfg.js +0 -1
- package/dist/client/assets/thread-route-D5wRx4Mj.js +0 -1
- package/dist/client/assets/use-navigate-to-agent-mgrnOdkU.js +0 -5
- package/dist/client/assets/useInfiniteQuery-CQmA1tEO.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DhFZhKH3.js +0 -1
- package/dist/client/assets/variant-calendar-Bv0Z3FIl.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as K,b as X,r as Z,j as n,l as rt,a1 as ut,a4 as ht,B as tt,a2 as xt}from"./index-DhHjpqKm.js";import{z as gt,a4 as at,aE as bt}from"./agent-icon-DawhRDaM.js";import{i as vt}from"./ChevronRight-CFzWSZUg.js";import{L as yt}from"./label-Cyr0LGLV.js";import{S as lt}from"./scroll-area-BqxVdfZi.js";import{S as jt}from"./switch-I8bTUVFa.js";import{V as Tt}from"./view-mode-toggle-DzbBgRGw.js";import{bs as ct,bt as mt,bu as Nt,bv as _t,bw as kt,bx as U,by as wt}from"./index-DZCNxaHh.js";import"./AlertCircle-DGaWwPgQ.js";import"./Tool01-Bw9MLeJG.js";import"./ArrowUp-tbXPz6Pt.js";import"./ArrowLeft-CWVS1rl4.js";import"./Tool02-pQUInAOa.js";import"./XCircle-e3s9N7iZ.js";import"./TrendUp01-CKJmSlQn.js";import"./ZoomOut-D7X89Xml.js";import"./Users03-Cy6ggfv3.js";import"./CheckCircle-Bd4fTOjH.js";import"./Check-BfBGeuul.js";import"./ChevronUp-wXVrCZI1.js";import"./ChevronSelectorVertical-CafPMJW2.js";import"./DotsVertical-Bnzh51DN.js";import"./UserSquare-DQc4Fwqd.js";import"./Copy01-3zYOadUJ.js";import"./CreditCard01-CGpVReoa.js";import"./Download01-DgtF4BB5.js";import"./Settings02-CqqtLHmZ.js";import"./Eye-C4MrrakN.js";import"./Share07-BPxCIUue.js";import"./GitBranch01-DPV5Y5N7.js";import"./Globe01-DMQbJ5et.js";import"./XClose-Cx_5p9-p.js";import"./HardDrive-C1E6V6Yk.js";import"./Image01-DyQdO4x_.js";import"./Key01-BYudX7Yc.js";import"./Link01-3tlXT_aK.js";import"./LinkExternal01-Dpq3cwMH.js";import"./Monitor01-B3Lw1jH5.js";import"./Sun-rrOh04Rw.js";import"./Package-BJ25qVC3.js";import"./Palette-BedlZSuj.js";import"./Play-D8kc57eX.js";import"./Plus-I156OmA3.js";import"./SearchMd-CKfC5TmJ.js";import"./Shield01-0x-yz50P.js";import"./Stars01-DEDp8TU-.js";import"./Trash01-JMhZ3Tty.js";import"./Upload01-CLeyxvQd.js";import"./User01-DN5UquSh.js";import"./Users01-CHQT_dsi.js";import"./Zap-BOPEKw8B.js";import"./select-CqYqady4.js";import"./chat-context-BQg2wAMj.js";import"./use-panel-navigate-D9syj7R6.js";import"./use-destination-route-D3sPU3yn.js";import"./autosend-Zbzr4Vs8.js";import"./thread-intent-C73EBMZL.js";import"./slugify-CEUa2lfQ.js";import"./hooks-DN_zGTIJ.js";import"./use-mcp-client-DqhPCNA-.js";import"./constants-DNw8DKoD.js";import"./auth-CNjmGQ4V.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BKsExghb.js";import"./task-board-DGWa1Gm0.js";import"./schema-C25dJcYR.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-DEiMy5Jt.js";import"./use-ai-providers-Be7UvucI.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DYUs2Qhl.js";import"./thread-route-BvKduPsE.js";import"./dialog-CDo4MBP6.js";import"./use-organization-settings-CLrP5LP7.js";import"./automation-runs-azd6G8Ha.js";import"./useInfiniteQuery-CFoJuuUN.js";import"./use-infinite-scroll-DOiRhnJW.js";import"./use-connection-Cwa0QgBQ.js";import"./table-BFhelDKC.js";import"./empty-state-Dm2ymREG.js";import"./use-members-C6y22kN0.js";import"./use-org-auth-client-CHgS0aCH.js";import"./use-automations-Bh8ZbMuK.js";import"./useSuspenseInfiniteQuery-DSQqqgPb.js";import"./avatar-DLnW_949.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-BQnJ2OB1.js";import"./markdown-DAfH1D5-.js";import"./monaco-editor-DPoZHBwS.js";import"./editor-BdizNDCH.js";import"./types-C8fYYKqc.js";import"./shell-layout-Dgrq59kd.js";import"./project-icon-DLH9NBIU.js";import"./github-repo-COLY3wWI.js";import"./source-system-tabs-CnEGUb4r.js";import"./command-BX8CujxT.js";import"./index-B7C-ZaiU.js";import"./required-auth-layout-BOqWdRqm.js";import"./use-org-sso-Djh-Wjrr.js";import"./use-org-notice-Br9Yvstr.js";import"./integration-icon-BjZkBlSG.js";import"./use-navigate-to-agent-CrljNh9U.js";import"./use-mcp-prompts-RqxRElya.js";import"./form-O4m2UJg-.js";import"./input-DnEgOlRJ.js";import"./file-type-icon-BmQruxfN.js";import"./drawer-_AK9bFi8.js";import"./collection-search-BI6GHzBt.js";import"./tabs-CMNN0Zg_.js";import"./toggle-group-B_iZpGTL.js";import"./task-route-DcwB5pXS.js";import"./extract-connection-data-Dlz-gEi2.js";import"./metadata-dUsYcpuu.js";import"./connection-WYMfQ7DQ.js";import"./connection-card-05tNuu4H.js";import"./use-registry-connections-MhIa_jkH.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-B0r0ti_p.js";import"./connection-form-helpers-D4jcXsjA.js";import"./authenticate-and-persist-oauth-DYNv1LQw.js";import"./mcp-oauth-CaoImyB-.js";import"./collection-tabs-DfU20xoC.js";import"./badge-C1kl4ba0.js";import"./use-file-configs-CEbI4yf1.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-CAWZ0_tm.js";import"./popover-Cpk2uyjT.js";import"./github-icon-lgC-aA3H.js";import"./get-initials-D-f_fDFw.js";import"./select-model-BjbPH6OP.js";import"./checkbox-DsDwNSVc.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-DP4Eplxl.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-BJVy_x05.js";import"./toolbar-Vt-Ej5Vf.js";import"./skill-preview-ByiphwPr.js";import"./pt-BR-CLy76QW2.js";import"./alert-dialog-hhud4Gab.js";import"./use-debounced-autosave-C_SsQJXi.js";import"./search-input-DlaBJqle.js";import"./use-mcp-auth-status-C7WOQgUm.js";import"./github-repo-picker-Bk-rnLOl.js";import"./use-debounced-value-Chh3I3P4.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./use-secrets-BjPyeyhU.js";import"./client-icons-LV5EpOIE.js";import"./connect-layout-Dpf1obeP.js";import"./self-tool-result-By068BHj.js";import"./track-BbSwhz7U.js";import"./use-tags-56ZtFwCf.js";import"./breadcrumb-D5SbFXUe.js";import"./toolbar-icon-button-DO1_O4bx.js";import"./safe-image-url-D5z803Ot.js";import"./automation-list-row-C7_DXjLv.js";import"./site-error--i37Vnuw.js";import"./cards-Wa7u18LE.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Mt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:r}=e,o=typeof t=="string",s=typeof r=="string";if(!o&&!s)return null;const i=o?new Date(t):Ct,a=s?new Date(r):Mt;return Number.isNaN(i.getTime())||Number.isNaN(a.getTime())||o&&s&&a.getTime()<=i.getTime()?null:{start:i,end:a,openStart:!o,openEnd:!s}}function pt(e,t){if(!e||typeof e!="object")return;const r=e.__resolveType;if(typeof r=="string"){if(Et.has(r)){const o=Rt(e);o&&t.push(o);return}if(St.has(r)){const o=e.matchers;if(Array.isArray(o))for(const s of o)pt(s,t)}}}function Dt(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const r=e.variants;return Array.isArray(r)}function Ot(e){if(typeof e=="string"){const c=e.trim();if(c.length===0)return null;try{const m=new URL(c).pathname.split("/").filter(Boolean),p=m[m.length-1];if(p)return decodeURIComponent(p)}catch{}return c.length>80?`${c.slice(0,77)}…`:c}if(!e||typeof e!="object")return null;const t=e,r=t.config,s=t.desktop?.media,i=[t.title,t.name,t.label,t.alt,r?.title,r?.name,r?.typeAlert?.message,s?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const c of i)if(typeof c=="string"&&c.trim().length>0)return c.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let r=0;r<e.length;r++){const o=e[r];typeof o=="number"?t.length>0?t[t.length-1]+=`[${o}]`:t.push(`[${o}]`):t.push(o)}return t.join(" · ")}function Q(e,t,r,o,s){if(Dt(e)){const i=e.variants,a=e.__resolveType,c=$t.test(a)?"":Pt(o);i.forEach((l,m)=>{if(!l||typeof l!="object")return;const p=l,h=[];if(pt(p.rule,h),h.length===0)return;const g=Ot(p.value)??(c||r);for(const u of h)s.push({blockKey:t,blockLabel:r,innerPath:c,variantIndex:m,start:u.start,end:u.end,openStart:u.openStart,openEnd:u.openEnd,label:g,flagResolveType:a})});for(let l=0;l<i.length;l++){const m=i[l];m&&typeof m=="object"&&Q(m.value,t,r,[...o,"variants",l,"value"],s)}return}if(Array.isArray(e)){for(let i=0;i<e.length;i++)Q(e[i],t,r,[...o,i],s);return}if(e&&typeof e=="object")for(const[i,a]of Object.entries(e))i!=="__resolveType"&&Q(a,t,r,[...o,i],s)}function It(e){if(!e)return[];const t=[];for(const[r,o]of Object.entries(e))Q(o,r,Lt(r),[],t);return t.sort((r,o)=>r.start.getTime()-o.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),r=new Map;return t.forEach((o,s)=>{const i=s*137.508%360;r.set(o,{bg:`oklch(0.62 0.14 ${i})`,text:"white",border:`oklch(0.50 0.14 ${i})`})}),r}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function dt(e,t){return e.get(t)??Ht}const ot=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Bt(e,t){const r=e.openStart?t("sandbox.variantCalendar.always"):ot.format(e.start),o=e.openEnd?t("sandbox.variantCalendar.ongoing"):ot.format(e.end);return`${r} → ${o}`}function Ft(e){const t=K.c(18),{variant:r}=e,o=X();let s;t[0]!==r.blockLabel?(s=n.jsx("div",{className:"font-semibold",children:r.blockLabel}),t[0]=r.blockLabel,t[1]=s):s=t[1];let i;t[2]!==r.innerPath?(i=r.innerPath&&n.jsx("div",{className:"text-muted-foreground",children:r.innerPath}),t[2]=r.innerPath,t[3]=i):i=t[3];let a;t[4]!==r.blockLabel||t[5]!==r.innerPath||t[6]!==r.label?(a=r.label!==r.blockLabel&&r.label!==r.innerPath&&n.jsx("div",{className:"text-muted-foreground",children:r.label}),t[4]=r.blockLabel,t[5]=r.innerPath,t[6]=r.label,t[7]=a):a=t[7];let c;t[8]!==o||t[9]!==r?(c=Bt(r,o),t[8]=o,t[9]=r,t[10]=c):c=t[10];let l;t[11]!==c?(l=n.jsx("div",{className:"mt-1",children:c}),t[11]=c,t[12]=l):l=t[12];let m;return t[13]!==s||t[14]!==i||t[15]!==a||t[16]!==l?(m=n.jsx(xt,{children:n.jsxs("div",{className:"text-xs",children:[s,i,a,l]})}),t[13]=s,t[14]=i,t[15]=a,t[16]=l,t[17]=m):m=t[17],m}const nt=16;function zt(e,t){const r=e?"transparent":"#000 0",o=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${r}, #000 ${nt}px, #000 calc(100% - ${nt}px), ${o})`}function ft(e){const t=K.c(26),{variant:r,color:o,style:s,children:i,fadeStart:a,fadeEnd:c}=e,l=a===void 0?!1:a,m=c===void 0?!1:c;let p;t[0]!==m||t[1]!==l?(p=zt(l,m),t[0]=m,t[1]=l,t[2]=p):p=t[2];const h=p;let f;t[3]!==l?(f=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=f):f=t[4];let g;t[5]!==m?(g=m&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=m,t[6]=g):g=t[6];let u;t[7]!==h?(u=h&&{maskImage:h,WebkitMaskImage:h},t[7]=h,t[8]=u):u=t[8];let x;t[9]!==o.bg||t[10]!==o.text||t[11]!==s||t[12]!==f||t[13]!==g||t[14]!==u?(x={background:o.bg,color:o.text,borderRadius:4,...f,...g,...u,...s},t[9]=o.bg,t[10]=o.text,t[11]=s,t[12]=f,t[13]=g,t[14]=u,t[15]=x):x=t[15];let b;t[16]!==i?(b=n.jsx("span",{className:"truncate",children:i}),t[16]=i,t[17]=b):b=t[17];let E;t[18]!==x||t[19]!==b?(E=n.jsx(ut,{asChild:!0,children:n.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:x,children:b})}),t[18]=x,t[19]=b,t[20]=E):E=t[20];let T;t[21]!==r?(T=n.jsx(Ft,{variant:r}),t[21]=r,t[22]=T):T=t[22];let d;return t[23]!==T||t[24]!==E?(d=n.jsxs(ht,{children:[E,T]}),t[23]=T,t[24]=E,t[25]=d):d=t[25],d}function on(e){const t=K.c(72),{decofile:r}=e,o=X(),[s,i]=Z.useState("calendar"),[a,c]=Z.useState(Kt),[l,m]=Z.useState(!1);let p,h,f;if(t[0]!==r||t[1]!==l){const I=It(r);p=I.filter(Ut).length,f=l?I:I.filter(Gt),h=Vt(f.map(Wt)),t[0]=r,t[1]=l,t[2]=p,t[3]=h,t[4]=f}else p=t[2],h=t[3],f=t[4];const g=h;let u;t[5]===Symbol.for("react.memo_cache_sentinel")?(u=()=>c(mt(new Date)),t[5]=u):u=t[5];const x=u;let b;t[6]!==s?(b=()=>c(I=>s==="calendar"?U(I,-1):U(I,-3)),t[6]=s,t[7]=b):b=t[7];const E=b;let T;t[8]!==s?(T=()=>c(I=>s==="calendar"?U(I,1):U(I,3)),t[8]=s,t[9]=T):T=t[9];const d=T;let v;t[10]!==o?(v=o("sandbox.variantCalendar.today"),t[10]=o,t[11]=v):v=t[11];let y;t[12]!==v?(y=n.jsx(tt,{variant:"outline",size:"sm",onClick:x,children:v}),t[12]=v,t[13]=y):y=t[13];let N;t[14]!==o?(N=o("sandbox.variantCalendar.previous"),t[14]=o,t[15]=N):N=t[15];let A;t[16]===Symbol.for("react.memo_cache_sentinel")?(A=n.jsx(gt,{size:16}),t[16]=A):A=t[16];let _;t[17]!==E||t[18]!==N?(_=n.jsx(tt,{variant:"ghost",size:"icon",className:"size-8",onClick:E,"aria-label":N,children:A}),t[17]=E,t[18]=N,t[19]=_):_=t[19];let k;t[20]!==o?(k=o("sandbox.variantCalendar.next"),t[20]=o,t[21]=k):k=t[21];let C;t[22]===Symbol.for("react.memo_cache_sentinel")?(C=n.jsx(vt,{size:16}),t[22]=C):C=t[22];let $;t[23]!==d||t[24]!==k?($=n.jsx(tt,{variant:"ghost",size:"icon",className:"size-8",onClick:d,"aria-label":k,children:C}),t[23]=d,t[24]=k,t[25]=$):$=t[25];const L=ct[a.getMonth()];let M;t[26]!==a?(M=a.getFullYear(),t[26]=a,t[27]=M):M=t[27];let w;t[28]!==L||t[29]!==M?(w=n.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[L," ",M]}),t[28]=L,t[29]=M,t[30]=w):w=t[30];let j;t[31]!==$||t[32]!==w||t[33]!==y||t[34]!==_?(j=n.jsxs("div",{className:"flex items-center gap-2",children:[y,_,$,w]}),t[31]=$,t[32]=w,t[33]=y,t[34]=_,t[35]=j):j=t[35];let R;t[36]!==p||t[37]!==l||t[38]!==o?(R=p>0&&n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(jt,{id:"show-ongoing",checked:l,onCheckedChange:m}),n.jsx(yt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:o("sandbox.variantCalendar.showOngoing",{count:p})})]}),t[36]=p,t[37]=l,t[38]=o,t[39]=R):R=t[39];let B;t[40]===Symbol.for("react.memo_cache_sentinel")?(B=n.jsx(at,{}),t[40]=B):B=t[40];let V;t[41]!==o?(V=o("sandbox.variantCalendar.calendarMode"),t[41]=o,t[42]=V):V=t[42];let S;t[43]!==V?(S={value:"calendar",icon:B,label:V},t[43]=V,t[44]=S):S=t[44];let F;t[45]===Symbol.for("react.memo_cache_sentinel")?(F=n.jsx(bt,{}),t[45]=F):F=t[45];let D;t[46]!==o?(D=o("sandbox.variantCalendar.timelineMode"),t[46]=o,t[47]=D):D=t[47];let O;t[48]!==D?(O={value:"timeline",icon:F,label:D},t[48]=D,t[49]=O):O=t[49];let P;t[50]!==S||t[51]!==O?(P=[S,O],t[50]=S,t[51]=O,t[52]=P):P=t[52];let H;t[53]!==P||t[54]!==s?(H=n.jsx(Tt,{value:s,onValueChange:i,options:P}),t[53]=P,t[54]=s,t[55]=H):H=t[55];let z;t[56]!==R||t[57]!==H?(z=n.jsxs("div",{className:"flex items-center gap-4",children:[R,H]}),t[56]=R,t[57]=H,t[58]=z):z=t[58];let W;t[59]!==j||t[60]!==z?(W=n.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[j,z]}),t[59]=j,t[60]=z,t[61]=W):W=t[61];let G;t[62]!==g||t[63]!==a||t[64]!==p||t[65]!==l||t[66]!==f||t[67]!==s?(G=f.length===0?n.jsx(Yt,{hiddenOngoing:l?0:p}):s==="calendar"?n.jsx(Jt,{monthStart:a,variants:f,colorMap:g}):n.jsx(te,{monthStart:a,variants:f,colorMap:g}),t[62]=g,t[63]=a,t[64]=p,t[65]=l,t[66]=f,t[67]=s,t[68]=G):G=t[68];let q;return t[69]!==W||t[70]!==G?(q=n.jsxs("div",{className:"flex h-full w-full flex-col",children:[W,G]}),t[69]=W,t[70]=G,t[71]=q):q=t[71],q}function Wt(e){return e.blockKey}function Gt(e){return!e.openEnd}function Ut(e){return e.openEnd}function Kt(){return mt(new Date)}function Yt(e){const t=K.c(4),{hiddenOngoing:r}=e,o=r===void 0?0:r,s=X();let i;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx(at,{size:24,className:"text-muted-foreground/60"}),t[0]=i):i=t[0];let a;return t[1]!==o||t[2]!==s?(a=n.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[i,o>0?n.jsxs(n.Fragment,{children:[n.jsx("div",{children:s("sandbox.variantCalendar.noDatedVariants")}),n.jsx("div",{className:"text-xs text-muted-foreground/80",children:s("sandbox.variantCalendar.hiddenOngoingVariants",{count:o})})]}):n.jsxs(n.Fragment,{children:[n.jsx("div",{children:s("sandbox.variantCalendar.noScheduledVariants")}),n.jsx("div",{className:"text-xs text-muted-foreground/80",children:s("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=o,t[2]=s,t[3]=a):a=t[3],a}const et=20,it=2,st=28,qt=6;function Jt(e){const t=K.c(17),{monthStart:r,variants:o,colorMap:s}=e;let i,a,c,l,m;if(t[0]!==s||t[1]!==r||t[2]!==o){const f=Nt(r),g=_t(new Date);i=lt,m="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(c=n.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:wt.map(Xt)}),t[8]=c):c=t[8],l=f.map((u,x)=>{const b=kt(u,o),E=b.reduce(Qt,0),T=st+E*(et+it)+8;return n.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:T},children:[u.map((d,v)=>{const y=d.getMonth()===r.getMonth(),N=d.getTime()===g.getTime();return n.jsx("div",{className:rt("border-r last:border-r-0 px-2 pt-1.5 text-xs",y?"bg-background":"bg-muted/30 text-muted-foreground"),children:n.jsx("span",{className:rt("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",N&&"bg-primary text-primary-foreground font-semibold"),children:d.getDate()})},v)}),b.map((d,v)=>{const y=dt(s,d.variant.blockKey),N=st+d.lane*(et+it),A=d.leftUnits/7*100,_=d.widthUnits/7*100,k=d.variant.openStart&&x===0,C=d.variant.openEnd&&x===f.length-1;return n.jsxs(ft,{variant:d.variant,color:y,fadeStart:k,fadeEnd:C,style:{top:N,left:`calc(${A}% + 2px)`,width:`calc(${_}% - 4px)`,minWidth:qt,height:et},children:[d.variant.blockLabel,d.variant.label!==d.variant.blockLabel&&n.jsxs("span",{className:"opacity-70",children:[" · ",d.variant.label]})]},`${x}-${v}`)})]},x)}),t[0]=s,t[1]=r,t[2]=o,t[3]=i,t[4]=a,t[5]=c,t[6]=l,t[7]=m}else i=t[3],a=t[4],c=t[5],l=t[6],m=t[7];let p;t[9]!==a||t[10]!==c||t[11]!==l?(p=n.jsxs("div",{className:a,children:[c,l]}),t[9]=a,t[10]=c,t[11]=l,t[12]=p):p=t[12];let h;return t[13]!==i||t[14]!==m||t[15]!==p?(h=n.jsx(i,{className:m,children:p}),t[13]=i,t[14]=m,t[15]=p,t[16]=h):h=t[16],h}function Qt(e,t){return Math.max(e,t.lane+1)}function Xt(e){return n.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const J=4,Zt=32,Y=240;function te(e){const t=K.c(23),{monthStart:r,variants:o,colorMap:s}=e,i=r,a=U(r,J),c=new Date,l=new Map;for(const w of o){const j=l.get(w.blockKey)??[];j.push(w),l.set(w.blockKey,j)}const m=Array.from(l.entries()).sort(oe),p=a.getTime()-i.getTime(),h=w=>(Math.max(i.getTime(),Math.min(a.getTime(),w.getTime()))-i.getTime())/p*100;let f;t[0]!==i?(f=(w,j)=>U(i,j),t[0]=i,t[1]=f):f=t[1];const g=Array.from({length:J},f),u=c.getTime()>=i.getTime()&&c.getTime()<=a.getTime()?h(c):null,x=X(),b=lt,E="flex-1 min-h-0",T="min-w-[900px] relative";let d;t[2]===Symbol.for("react.memo_cache_sentinel")?(d={width:Y},t[2]=d):d=t[2];let v;t[3]!==x?(v=x("sandbox.variantCalendar.variantBlock"),t[3]=x,t[4]=v):v=t[4];let y;t[5]!==v?(y=n.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:d,children:v}),t[5]=v,t[6]=y):y=t[6];let N;t[7]===Symbol.for("react.memo_cache_sentinel")?(N={gridTemplateColumns:`repeat(${J}, minmax(0, 1fr))`},t[7]=N):N=t[7];const A=g.map(re);let _;t[8]!==A?(_=n.jsx("div",{className:"flex-1 grid",style:N,children:A}),t[8]=A,t[9]=_):_=t[9];let k;t[10]!==y||t[11]!==_?(k=n.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[y,_]}),t[10]=y,t[11]=_,t[12]=k):k=t[12];let C;t[13]!==x||t[14]!==u?(C=u!==null&&n.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${Y}px + (100% - ${Y}px) * ${u} / 100)`},children:n.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:x("sandbox.variantCalendar.todayLabel")})}),t[13]=x,t[14]=u,t[15]=C):C=t[15];const $=m.map(w=>{const[j,R]=w,B=dt(s,j),V=R[0]?.blockLabel??j;return n.jsxs("div",{children:[n.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:n.jsx("div",{className:"px-3 truncate",style:{width:Y},children:V})}),R.map((S,F)=>n.jsxs("div",{className:"flex border-b items-center",style:{height:Zt},children:[n.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:Y},children:[n.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:B.bg}}),n.jsx("span",{className:"truncate text-foreground/80",children:S.label})]}),n.jsxs("div",{className:"relative flex-1 h-full",children:[n.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${J}, minmax(0, 1fr))`},children:g.map(ee)}),(()=>{const D=Math.max(S.start.getTime(),i.getTime()),O=Math.min(S.end.getTime(),a.getTime());if(O<=D)return null;const P=h(new Date(D)),H=h(new Date(O))-P;return n.jsx(ft,{variant:S,color:B,fadeStart:S.openStart,fadeEnd:S.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${P}%`,width:`calc(${H}% - 2px)`,height:22},children:S.label})})()]})]},F))]},j)});let L;t[16]!==k||t[17]!==C||t[18]!==$?(L=n.jsxs("div",{className:T,children:[k,C,$]}),t[16]=k,t[17]=C,t[18]=$,t[19]=L):L=t[19];let M;return t[20]!==b||t[21]!==L?(M=n.jsx(b,{className:E,children:L}),t[20]=b,t[21]=L,t[22]=M):M=t[22],M}function ee(e,t){return n.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function re(e,t){return n.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ct[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function oe(e,t){return e[0].localeCompare(t[0])}export{on as VariantCalendar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as $,r as C,l as f,j as i,a4 as k,a1 as I,a2 as P}from"./index-
|
|
1
|
+
import{c as $,r as C,l as f,j as i,a4 as k,a1 as I,a2 as P}from"./index-DhHjpqKm.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function A(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:L,fullWidth:R,className:z}=E,_=L===void 0?"sm":L,m=R===void 0?!1:R;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const T=C.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=C.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),b=T.current[e];b&&S({left:b.offsetLeft,width:b.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),C.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==m||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,b)=>{const j=i.jsxs("button",{ref:V=>{T.current[b]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",m?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=m,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=m?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{A as V};
|
package/dist/client/index.html
CHANGED
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
<meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
|
|
51
51
|
<meta name="twitter:image" content="/og-image.png" />
|
|
52
52
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
54
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-DhHjpqKm.js"></script>
|
|
54
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bj1-n2mq.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
|
57
57
|
<div id="root"></div>
|
package/dist/server/cli.js
CHANGED
|
@@ -1552,7 +1552,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Gt1=L(()=>{jb()});f
|
|
|
1552
1552
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await iy`
|
|
1553
1553
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
1554
1554
|
`.execute($)}}async function Ue1($){await a04($),await s04($);let Z=new He1({db:$,provider:{getMigrations:()=>Promise.resolve(ln0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function e04($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Vm0();let G=Q??g$(),J=async()=>{if(!Z&&!Q)await LO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Ue1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function $14(){let $=g$(),Z=new He1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ln0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var Be1=L(()=>{We1();km0();WQ()});async function i70($){let Z={...process.env},Q=y80($,Z);console.log(Kj1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?yo1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (oZ0(),tZ0)),{outputs:G,services:J}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (km0(),ho1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (WQ(),Zo1)),{migrateToLatest:F}=await Promise.resolve().then(() => (Be1(),Ne1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return Jt1(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 mn0=L(()=>{jb();go1();j$()});var we1={};e(we1,{updateService:()=>Gj,subscribeCliState:()=>pn0,setTuiConsoleIntercepted:()=>p70,setServerUrl:()=>cp,setMigrationsDone:()=>up,setDevMode:()=>Q14,resetCliStateForTests:()=>Z14,isTuiConsoleIntercepted:()=>n70,getCliState:()=>in0,addLogEntry:()=>AO});function Oe1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Le1(){return{services:Oe1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Z14(){oX=Le1()}function hp(){for(let $ of dn0)$()}function in0(){return oX}function pn0($){return dn0.add($),()=>dn0.delete($)}function Gj($){oX={...oX,services:oX.services.map((Z)=>Z.name===$.name?$:Z)},hp()}function up(){oX={...oX,migrationsStatus:"done"},hp()}function cp($){oX={...oX,serverUrl:$},hp()}function AO($){let Z=[...oX.logs,$];oX={...oX,logs:Z.length>500?Z.slice(-500):Z},hp()}function Q14(){oX={...oX,services:[...Oe1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},hp()}function p70($){De1=$}function n70(){return De1}var oX,dn0,De1=!1;var Jj=L(()=>{oX=Le1();dn0=new Set});import{createServer as Ee1}from"net";function X14($){return new Promise((Z)=>{let Q=Ee1();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function lp($){if(await X14($))return $;let Z=await new Promise((Q,X)=>{let Y=Ee1();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>Q(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var nn0=()=>{};var on0={};e(on0,{startDevServer:()=>G14,pipeToLogStore:()=>tn0});import{join as Y14}from"path";function tn0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let G=X.split(`
|
|
1555
|
-
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;AO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)AO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function G14($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await lp(Number(Y)+1):await lp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await i70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Gj({name:D.name,status:"ready",port:D.port});up();let F=Y14(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)tn0(N.stdout),tn0(N.stderr);cp(G),Gj({name:"Vite",status:"ready",port:Number(Y)}),Gj({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(() => (oZ0(),tZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var rn0=L(()=>{mn0();Jj();nn0()});var t70;var an0=L(()=>{t70={name:"decocms",version:"4.331.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 K14,Text as je1}from"ink";import{jsx as W14,jsxs as ze1}from"react/jsx-runtime";function Pe1({version:$}){return ze1(K14,{flexDirection:"column",marginTop:1,children:[E70.map((Z,Q)=>W14(je1,{color:j70[Q],children:Z},Q)),ze1(je1,{dimColor:!0,children:[" v",$]})]})}var Ae1=L(()=>{qp()});import{Box as Kj,Text as TO}from"ink";import{Spinner as H14}from"@inkjs/ui";import{jsx as UG,jsxs as py}from"react/jsx-runtime";function Te1({status:$}){if($==="pending")return UG(H14,{label:""});return UG(TO,{color:"green",children:"\u2713"})}function F14($){return`${$.name}: ${$.port||"...."}`}function Re1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return py(Kj,{flexDirection:"column",paddingBottom:1,children:[UG(Pe1,{version:t70.version}),UG(Kj,{marginBottom:1,children:UG(TO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Kj,{children:py(TO,{dimColor:!0,children:["Home: ",Q]})}),py(Kj,{gap:2,children:[$.map((Y)=>py(Kj,{gap:1,children:[UG(TO,{children:F14(Y)}),UG(Te1,{status:Y.status})]},Y.name)),py(Kj,{gap:1,children:[UG(TO,{children:"Migrations"}),UG(Te1,{status:Z})]})]}),UG(Kj,{children:X?py(TO,{children:["Open in browser: ",UG(TO,{color:"cyan",children:X})]}):UG(TO,{dimColor:!0,children:"Starting..."})})]})}var Ie1=L(()=>{an0();Ae1()});import{Box as U14,Text as mp}from"ink";import{jsx as sn0,jsxs as en0}from"react/jsx-runtime";function N14($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qe1({logs:$}){return sn0(U14,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return sn0(mp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return en0(mp,{children:[en0(mp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sn0(mp,{color:N14(Z.status),children:Z.status}),en0(mp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Me1=()=>{};var $t0={};e($t0,{App:()=>L14});import{Box as B14}from"ink";import{useSyncExternalStore as O14}from"react";import{jsx as Ve1,jsxs as D14}from"react/jsx-runtime";function L14({home:$}){let Z=O14(pn0,in0);return D14(B14,{flexDirection:"column",children:[Ve1(Re1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ve1(qe1,{logs:Z.logs})]})}var Zt0=L(()=>{Ie1();Me1();Jj()});var e3="thread-gate",MU="decopilot-hosted-harness",VU="decopilot-hosted-harness-sandboxed",VJ="automations",RO="background-tools",Wj="task-board-github-reads";var ke1="11";function Se1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ke1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ce1=()=>{};import w14 from"pg";async function ve1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=E14}=$,Y=$.log??((W)=>console.log(W)),G=new w14.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[_e1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(j14)}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)",[_e1.toString()])}catch{}await G.end().catch(()=>{})}}var _e1=8314027461559302n,E14=600000,j14=500;var xe1=L(()=>{t8()});function z14(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qt0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function fe1(){let $=z14();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qt0($,"--cpu-prof-dir")??process.cwd(),name:Qt0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qt0($,"--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 Q=Zj();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),o70=setInterval(()=>void Z().catch(()=>{}),$),o70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(o70)clearInterval(o70)}}var o70;var ye1=()=>{};import*as P14 from"bun:jsc";function ge1(){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{A14()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=T14()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var A14,T14;var he1=L(()=>{({startSamplingProfiler:A14,samplingProfilerStackTraces:T14}=P14)});function ue1(){fe1();let $=[be1(),nt1(),ge1()];return()=>{for(let Z of $)Z()}}var ce1=L(()=>{jm0();ye1();he1()});var Hj=v((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.RepublishHeaders=le1.DirectMsgHeaders=le1.JsHeaders=le1.AdvisoryKind=void 0;le1.isOrderedPushConsumerOptions=R14;le1.isPullConsumer=I14;le1.isPushConsumer=q14;le1.isBoundPushConsumerOptions=M14;function R14($){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 I14($){return $.isPullConsumer()}function q14($){return $.isPushConsumer()}function M14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}le1.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"};le1.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"};le1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};le1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((de1)=>{Object.defineProperty(de1,"__esModule",{value:!0});de1.TD=de1.TE=de1.Empty=void 0;de1.encode=b14;de1.decode=y14;de1.Empty=new Uint8Array(0);de1.TE=new TextEncoder;de1.TD=new TextDecoder;function f14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function b14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(de1.TE.encode($[Q]));if(Z.length===0)return de1.Empty;if(Z.length===1)return Z[0];return f14(...Z)}function y14($){if(!$||$.length===0)return"";return de1.TD.decode($)}});var BG=v((ne1)=>{Object.defineProperty(ne1,"__esModule",{value:!0});ne1.errors=ne1.PermissionViolationError=ne1.NoRespondersError=ne1.TimeoutError=ne1.RequestError=ne1.ProtocolError=ne1.ConnectionError=ne1.DrainingConnectionError=ne1.ClosedConnectionError=ne1.AuthorizationError=ne1.UserAuthenticationExpiredError=ne1.InvalidOperationError=ne1.InvalidArgumentError=ne1.InvalidSubjectError=void 0;class Yt0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}ne1.InvalidSubjectError=Yt0;class r70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new r70(`${$} ${Z}`,Q)}}ne1.InvalidArgumentError=r70;class Gt0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}ne1.InvalidOperationError=Gt0;class a70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new a70($);return null}}ne1.UserAuthenticationExpiredError=a70;class s70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new s70($);return null}}ne1.AuthorizationError=s70;class Jt0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}ne1.ClosedConnectionError=Jt0;class Kt0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}ne1.DrainingConnectionError=Kt0;class Wt0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}ne1.ConnectionError=Wt0;class Ht0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}ne1.ProtocolError=Ht0;class Ft0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof e70}}ne1.RequestError=Ft0;class Ut0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}ne1.TimeoutError=Ut0;class e70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}ne1.NoRespondersError=e70;class $Q0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new $Q0($,Q,X,Y)}}ne1.PermissionViolationError=$Q0;ne1.errors={AuthorizationError:s70,ClosedConnectionError:Jt0,ConnectionError:Wt0,DrainingConnectionError:Kt0,InvalidArgumentError:r70,InvalidOperationError:Gt0,InvalidSubjectError:Yt0,NoRespondersError:e70,PermissionViolationError:$Q0,ProtocolError:Ht0,RequestError:Ft0,TimeoutError:Ut0,UserAuthenticationExpiredError:a70}});var $K=v((se1)=>{Object.defineProperty(se1,"__esModule",{value:!0});se1.SimpleMutex=se1.Perf=void 0;se1.extend=$$4;se1.render=Z$4;se1.timeout=Q$4;se1.delay=X$4;se1.deadline=Y$4;se1.deferred=Bt0;se1.debugDeferred=G$4;se1.shuffle=J$4;se1.collect=K$4;se1.jitter=ae1;se1.backoff=W$4;se1.nanos=H$4;se1.millis=F$4;se1.randomToken=B$4;var e14=NG(),Nt0=BG();function $$4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function Z$4($){return e14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Q$4($,Z=!0){let Q=Z?new Nt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Nt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function X$4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function Y$4($,Z=1000){let Q=Bt0(),X=setTimeout(()=>{Q.reject(new Nt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Bt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function G$4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function J$4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function K$4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class oe1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}se1.Perf=oe1;class re1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}se1.SimpleMutex=re1;function ae1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function W$4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return ae1(Q>Z?$[Z]:$[Q])}}}function H$4($){return $*1e6}function F$4($){return Math.floor($/1e6)}var U$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kU=new Uint8Array(62);for(let $=0;$<62;$++)kU[$]=U$4.charCodeAt($);var N$4=218340105584896;function B$4(){let $=Math.floor(Math.random()*N$4),Z=$%62,Q=kU[Z];$=($-Z)/62,Z=$%62;let X=kU[Z];$=($-Z)/62,Z=$%62;let Y=kU[Z];$=($-Z)/62,Z=$%62;let G=kU[Z];$=($-Z)/62,Z=$%62;let J=kU[Z];$=($-Z)/62,Z=$%62;let K=kU[Z];$=($-Z)/62,Z=$%62;let W=kU[Z];$=($-Z)/62;let H=kU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var J0$=v((Y0$)=>{Object.defineProperty(Y0$,"__esModule",{value:!0});Y0$.nuid=Y0$.NuidImpl=void 0;var k$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IO=62,QQ0=12,Q0$=10,$0$=33,S$4=333,Z0$=QQ0+Q0$,Lt0=new Uint8Array(IO);for(let $=0;$<IO;$++)Lt0[$]=k$4.charCodeAt($);var ZQ0=4294967296,X0$=BigInt(IO)**BigInt(Q0$),dp=Number(X0$/(1n<<32n)),Ot0=Number(X0$%(1n<<32n));function C$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function _$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else C$4($)}class Dt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Z0$),this.cbuf=new Uint8Array(QQ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(dp+1)),this.seqLo=Math.floor(Math.random()*ZQ0);while($++<8&&this.seqHi===dp&&this.seqLo>=Ot0);if(this.seqHi===dp&&this.seqLo>=Ot0)this.seqLo=0;this.inc=Math.random()*(S$4-$0$)+$0$|0}setPre(){_$4(this.cbuf);for(let $=0;$<QQ0;$++)this.buf[$]=Lt0[this.cbuf[$]%IO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=Z0$-1;Q>=QQ0;Q--){let X=Math.floor($/IO),G=($-X*IO)*ZQ0+Z,J=Math.floor(G/IO),K=G-J*IO;this.buf[Q]=Lt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZQ0)this.seqLo-=ZQ0,this.seqHi+=1;if(this.seqHi>dp||this.seqHi===dp&&this.seqLo>=Ot0)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()}}Y0$.NuidImpl=Dt0;Y0$.nuid=new Dt0});var F0$=v((W0$)=>{Object.defineProperty(W0$,"__esModule",{value:!0});W0$.nuid=W0$.Nuid=void 0;var K0$=J0$();W0$.Nuid=K0$.NuidImpl;W0$.nuid=K0$.nuid});var YQ0=v((XQ0)=>{Object.defineProperty(XQ0,"__esModule",{value:!0});XQ0.nuid=XQ0.Nuid=void 0;var U0$=F0$();Object.defineProperty(XQ0,"Nuid",{enumerable:!0,get:function(){return U0$.Nuid}});Object.defineProperty(XQ0,"nuid",{enumerable:!0,get:function(){return U0$.nuid}})});var qO=v((N0$)=>{Object.defineProperty(N0$,"__esModule",{value:!0});N0$.DEFAULT_HOST=N0$.DEFAULT_PORT=N0$.Match=void 0;N0$.syncIterator=g$4;N0$.createInbox=h$4;var b$4=YQ0(),y$4=BG();N0$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function g$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function h$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw y$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${b$4.nuid.next()}`}N0$.DEFAULT_PORT=4222;N0$.DEFAULT_HOST="127.0.0.1"});var ip=v((D0$)=>{Object.defineProperty(D0$,"__esModule",{value:!0});D0$.DataBuffer=void 0;var O0$=NG();class L0${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return O0$.TE.encode($)}static toAscii($){return O0$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}D0$.DataBuffer=L0$});var Fj=v((j0$)=>{Object.defineProperty(j0$,"__esModule",{value:!0});j0$.LF=j0$.CR=j0$.CRLF=j0$.CR_LF_LEN=j0$.CR_LF=void 0;j0$.setTransportFactory=n$4;j0$.defaultPort=t$4;j0$.getUrlParseFn=o$4;j0$.newTransport=r$4;j0$.getResolveFn=a$4;j0$.protoLen=E0$;j0$.extractProtocolMessage=s$4;var d$4=NG(),i$4=qO(),p$4=ip(),OG;function n$4($){OG=$}function t$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:i$4.DEFAULT_PORT}function o$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function r$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function a$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}j0$.CR_LF=`\r
|
|
1555
|
+
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;AO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)AO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function G14($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await lp(Number(Y)+1):await lp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await i70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Gj({name:D.name,status:"ready",port:D.port});up();let F=Y14(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)tn0(N.stdout),tn0(N.stderr);cp(G),Gj({name:"Vite",status:"ready",port:Number(Y)}),Gj({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(() => (oZ0(),tZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var rn0=L(()=>{mn0();Jj();nn0()});var t70;var an0=L(()=>{t70={name:"decocms",version:"4.332.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 K14,Text as je1}from"ink";import{jsx as W14,jsxs as ze1}from"react/jsx-runtime";function Pe1({version:$}){return ze1(K14,{flexDirection:"column",marginTop:1,children:[E70.map((Z,Q)=>W14(je1,{color:j70[Q],children:Z},Q)),ze1(je1,{dimColor:!0,children:[" v",$]})]})}var Ae1=L(()=>{qp()});import{Box as Kj,Text as TO}from"ink";import{Spinner as H14}from"@inkjs/ui";import{jsx as UG,jsxs as py}from"react/jsx-runtime";function Te1({status:$}){if($==="pending")return UG(H14,{label:""});return UG(TO,{color:"green",children:"\u2713"})}function F14($){return`${$.name}: ${$.port||"...."}`}function Re1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return py(Kj,{flexDirection:"column",paddingBottom:1,children:[UG(Pe1,{version:t70.version}),UG(Kj,{marginBottom:1,children:UG(TO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Kj,{children:py(TO,{dimColor:!0,children:["Home: ",Q]})}),py(Kj,{gap:2,children:[$.map((Y)=>py(Kj,{gap:1,children:[UG(TO,{children:F14(Y)}),UG(Te1,{status:Y.status})]},Y.name)),py(Kj,{gap:1,children:[UG(TO,{children:"Migrations"}),UG(Te1,{status:Z})]})]}),UG(Kj,{children:X?py(TO,{children:["Open in browser: ",UG(TO,{color:"cyan",children:X})]}):UG(TO,{dimColor:!0,children:"Starting..."})})]})}var Ie1=L(()=>{an0();Ae1()});import{Box as U14,Text as mp}from"ink";import{jsx as sn0,jsxs as en0}from"react/jsx-runtime";function N14($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qe1({logs:$}){return sn0(U14,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return sn0(mp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return en0(mp,{children:[en0(mp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sn0(mp,{color:N14(Z.status),children:Z.status}),en0(mp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Me1=()=>{};var $t0={};e($t0,{App:()=>L14});import{Box as B14}from"ink";import{useSyncExternalStore as O14}from"react";import{jsx as Ve1,jsxs as D14}from"react/jsx-runtime";function L14({home:$}){let Z=O14(pn0,in0);return D14(B14,{flexDirection:"column",children:[Ve1(Re1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ve1(qe1,{logs:Z.logs})]})}var Zt0=L(()=>{Ie1();Me1();Jj()});var e3="thread-gate",MU="decopilot-hosted-harness",VU="decopilot-hosted-harness-sandboxed",VJ="automations",RO="background-tools",Wj="task-board-github-reads";var ke1="11";function Se1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ke1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ce1=()=>{};import w14 from"pg";async function ve1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=E14}=$,Y=$.log??((W)=>console.log(W)),G=new w14.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[_e1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(j14)}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)",[_e1.toString()])}catch{}await G.end().catch(()=>{})}}var _e1=8314027461559302n,E14=600000,j14=500;var xe1=L(()=>{t8()});function z14(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qt0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function fe1(){let $=z14();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qt0($,"--cpu-prof-dir")??process.cwd(),name:Qt0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qt0($,"--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 Q=Zj();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),o70=setInterval(()=>void Z().catch(()=>{}),$),o70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(o70)clearInterval(o70)}}var o70;var ye1=()=>{};import*as P14 from"bun:jsc";function ge1(){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{A14()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=T14()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var A14,T14;var he1=L(()=>{({startSamplingProfiler:A14,samplingProfilerStackTraces:T14}=P14)});function ue1(){fe1();let $=[be1(),nt1(),ge1()];return()=>{for(let Z of $)Z()}}var ce1=L(()=>{jm0();ye1();he1()});var Hj=v((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.RepublishHeaders=le1.DirectMsgHeaders=le1.JsHeaders=le1.AdvisoryKind=void 0;le1.isOrderedPushConsumerOptions=R14;le1.isPullConsumer=I14;le1.isPushConsumer=q14;le1.isBoundPushConsumerOptions=M14;function R14($){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 I14($){return $.isPullConsumer()}function q14($){return $.isPushConsumer()}function M14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}le1.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"};le1.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"};le1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};le1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((de1)=>{Object.defineProperty(de1,"__esModule",{value:!0});de1.TD=de1.TE=de1.Empty=void 0;de1.encode=b14;de1.decode=y14;de1.Empty=new Uint8Array(0);de1.TE=new TextEncoder;de1.TD=new TextDecoder;function f14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function b14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(de1.TE.encode($[Q]));if(Z.length===0)return de1.Empty;if(Z.length===1)return Z[0];return f14(...Z)}function y14($){if(!$||$.length===0)return"";return de1.TD.decode($)}});var BG=v((ne1)=>{Object.defineProperty(ne1,"__esModule",{value:!0});ne1.errors=ne1.PermissionViolationError=ne1.NoRespondersError=ne1.TimeoutError=ne1.RequestError=ne1.ProtocolError=ne1.ConnectionError=ne1.DrainingConnectionError=ne1.ClosedConnectionError=ne1.AuthorizationError=ne1.UserAuthenticationExpiredError=ne1.InvalidOperationError=ne1.InvalidArgumentError=ne1.InvalidSubjectError=void 0;class Yt0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}ne1.InvalidSubjectError=Yt0;class r70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new r70(`${$} ${Z}`,Q)}}ne1.InvalidArgumentError=r70;class Gt0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}ne1.InvalidOperationError=Gt0;class a70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new a70($);return null}}ne1.UserAuthenticationExpiredError=a70;class s70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new s70($);return null}}ne1.AuthorizationError=s70;class Jt0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}ne1.ClosedConnectionError=Jt0;class Kt0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}ne1.DrainingConnectionError=Kt0;class Wt0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}ne1.ConnectionError=Wt0;class Ht0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}ne1.ProtocolError=Ht0;class Ft0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof e70}}ne1.RequestError=Ft0;class Ut0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}ne1.TimeoutError=Ut0;class e70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}ne1.NoRespondersError=e70;class $Q0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new $Q0($,Q,X,Y)}}ne1.PermissionViolationError=$Q0;ne1.errors={AuthorizationError:s70,ClosedConnectionError:Jt0,ConnectionError:Wt0,DrainingConnectionError:Kt0,InvalidArgumentError:r70,InvalidOperationError:Gt0,InvalidSubjectError:Yt0,NoRespondersError:e70,PermissionViolationError:$Q0,ProtocolError:Ht0,RequestError:Ft0,TimeoutError:Ut0,UserAuthenticationExpiredError:a70}});var $K=v((se1)=>{Object.defineProperty(se1,"__esModule",{value:!0});se1.SimpleMutex=se1.Perf=void 0;se1.extend=$$4;se1.render=Z$4;se1.timeout=Q$4;se1.delay=X$4;se1.deadline=Y$4;se1.deferred=Bt0;se1.debugDeferred=G$4;se1.shuffle=J$4;se1.collect=K$4;se1.jitter=ae1;se1.backoff=W$4;se1.nanos=H$4;se1.millis=F$4;se1.randomToken=B$4;var e14=NG(),Nt0=BG();function $$4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function Z$4($){return e14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Q$4($,Z=!0){let Q=Z?new Nt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Nt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function X$4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function Y$4($,Z=1000){let Q=Bt0(),X=setTimeout(()=>{Q.reject(new Nt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Bt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function G$4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function J$4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function K$4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class oe1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}se1.Perf=oe1;class re1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}se1.SimpleMutex=re1;function ae1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function W$4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return ae1(Q>Z?$[Z]:$[Q])}}}function H$4($){return $*1e6}function F$4($){return Math.floor($/1e6)}var U$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kU=new Uint8Array(62);for(let $=0;$<62;$++)kU[$]=U$4.charCodeAt($);var N$4=218340105584896;function B$4(){let $=Math.floor(Math.random()*N$4),Z=$%62,Q=kU[Z];$=($-Z)/62,Z=$%62;let X=kU[Z];$=($-Z)/62,Z=$%62;let Y=kU[Z];$=($-Z)/62,Z=$%62;let G=kU[Z];$=($-Z)/62,Z=$%62;let J=kU[Z];$=($-Z)/62,Z=$%62;let K=kU[Z];$=($-Z)/62,Z=$%62;let W=kU[Z];$=($-Z)/62;let H=kU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var J0$=v((Y0$)=>{Object.defineProperty(Y0$,"__esModule",{value:!0});Y0$.nuid=Y0$.NuidImpl=void 0;var k$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IO=62,QQ0=12,Q0$=10,$0$=33,S$4=333,Z0$=QQ0+Q0$,Lt0=new Uint8Array(IO);for(let $=0;$<IO;$++)Lt0[$]=k$4.charCodeAt($);var ZQ0=4294967296,X0$=BigInt(IO)**BigInt(Q0$),dp=Number(X0$/(1n<<32n)),Ot0=Number(X0$%(1n<<32n));function C$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function _$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else C$4($)}class Dt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Z0$),this.cbuf=new Uint8Array(QQ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(dp+1)),this.seqLo=Math.floor(Math.random()*ZQ0);while($++<8&&this.seqHi===dp&&this.seqLo>=Ot0);if(this.seqHi===dp&&this.seqLo>=Ot0)this.seqLo=0;this.inc=Math.random()*(S$4-$0$)+$0$|0}setPre(){_$4(this.cbuf);for(let $=0;$<QQ0;$++)this.buf[$]=Lt0[this.cbuf[$]%IO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=Z0$-1;Q>=QQ0;Q--){let X=Math.floor($/IO),G=($-X*IO)*ZQ0+Z,J=Math.floor(G/IO),K=G-J*IO;this.buf[Q]=Lt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZQ0)this.seqLo-=ZQ0,this.seqHi+=1;if(this.seqHi>dp||this.seqHi===dp&&this.seqLo>=Ot0)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()}}Y0$.NuidImpl=Dt0;Y0$.nuid=new Dt0});var F0$=v((W0$)=>{Object.defineProperty(W0$,"__esModule",{value:!0});W0$.nuid=W0$.Nuid=void 0;var K0$=J0$();W0$.Nuid=K0$.NuidImpl;W0$.nuid=K0$.nuid});var YQ0=v((XQ0)=>{Object.defineProperty(XQ0,"__esModule",{value:!0});XQ0.nuid=XQ0.Nuid=void 0;var U0$=F0$();Object.defineProperty(XQ0,"Nuid",{enumerable:!0,get:function(){return U0$.Nuid}});Object.defineProperty(XQ0,"nuid",{enumerable:!0,get:function(){return U0$.nuid}})});var qO=v((N0$)=>{Object.defineProperty(N0$,"__esModule",{value:!0});N0$.DEFAULT_HOST=N0$.DEFAULT_PORT=N0$.Match=void 0;N0$.syncIterator=g$4;N0$.createInbox=h$4;var b$4=YQ0(),y$4=BG();N0$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function g$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function h$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw y$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${b$4.nuid.next()}`}N0$.DEFAULT_PORT=4222;N0$.DEFAULT_HOST="127.0.0.1"});var ip=v((D0$)=>{Object.defineProperty(D0$,"__esModule",{value:!0});D0$.DataBuffer=void 0;var O0$=NG();class L0${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return O0$.TE.encode($)}static toAscii($){return O0$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}D0$.DataBuffer=L0$});var Fj=v((j0$)=>{Object.defineProperty(j0$,"__esModule",{value:!0});j0$.LF=j0$.CR=j0$.CRLF=j0$.CR_LF_LEN=j0$.CR_LF=void 0;j0$.setTransportFactory=n$4;j0$.defaultPort=t$4;j0$.getUrlParseFn=o$4;j0$.newTransport=r$4;j0$.getResolveFn=a$4;j0$.protoLen=E0$;j0$.extractProtocolMessage=s$4;var d$4=NG(),i$4=qO(),p$4=ip(),OG;function n$4($){OG=$}function t$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:i$4.DEFAULT_PORT}function o$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function r$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function a$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}j0$.CR_LF=`\r
|
|
1556
1556
|
`;j0$.CR_LF_LEN=j0$.CR_LF.length;j0$.CRLF=p$4.DataBuffer.fromAscii(j0$.CR_LF);j0$.CR=new Uint8Array(j0$.CRLF)[0];j0$.LF=new Uint8Array(j0$.CRLF)[1];function E0$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===j0$.CR&&$[Q]===j0$.LF)return Q+1}return 0}function s$4($){let Z=E0$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return d$4.TD.decode(X)}return""}});var Pt0=v((M0$)=>{Object.defineProperty(M0$,"__esModule",{value:!0});M0$.ipV4=R0$;M0$.isIP=H84;M0$.parseIP=I0$;var pp=4,Uj=16,GQ0=48,T0$=57,P0$=65,K84=70,A0$=97,W84=102,zt0=16777215;function R0$($,Z,Q,X){let Y=new Uint8Array(Uj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function H84($){return I0$($)!==void 0}function I0$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return q0$($);case":":return F84($)}return}function q0$($){let Z=new Uint8Array(pp);for(let Q=0;Q<pp;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:G}=U84($);if(!G||X>255)return;$=$.substring(Y),Z[Q]=X}return R0$(Z[0],Z[1],Z[2],Z[3])}function F84($){let Z=new Uint8Array(Uj),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<Uj){let{n:Y,c:G,ok:J}=N84($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(Q<0&&X!=Uj-pp)return;if(X+pp>Uj)return;let K=q0$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=pp;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<Uj){if(Q<0)return;let Y=Uj-X;for(let G=X-1;G>=Q;G--)Z[G+Y]=Z[G];for(let G=Q+Y-1;G>=Q;G--)Z[G]=0}else if(Q>=0)return;return Z}function U84($){let Z=0,Q=0;for(Z=0;Z<$.length&&GQ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=T0$;Z++)if(Q=Q*10+($.charCodeAt(Z)-GQ0),Q>=zt0)return{n:zt0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function N84($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(GQ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=T0$)Z*=16,Z+=$.charCodeAt(Q)-GQ0;else if(A0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=W84)Z*=16,Z+=$.charCodeAt(Q)-A0$+10;else if(P0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=K84)Z*=16,Z+=$.charCodeAt(Q)-P0$+10;else break;if(Z>=zt0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Mt0=v((k0$)=>{Object.defineProperty(k0$,"__esModule",{value:!0});k0$.Servers=k0$.ServerImpl=void 0;k0$.isIPV4OrHostname=V0$;k0$.hostPort=qt0;var At0=Fj(),Tt0=$K(),Rt0=Pt0(),D84=qO(),w84=BG();function V0$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function It0($){return!V0$($)}function E84($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function qt0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=E84($),It0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=It0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):D84.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:Q}}class ny{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=qt0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Rt0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${It0(X)?"["+X+"]":X}`);G.port=`${this.port}`;let J=new ny(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Tt0.shuffle)(Z);return this.resolves=Z,Z}}k0$.ServerImpl=ny;class JQ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw w84.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,At0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=qt0(Y),J=Q.get(G);if(J)J.gossiped=!1,X.push(J);else X.push(new ny(Y))}if(this.randomize)(0,Tt0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Rt0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,At0.getUrlParseFn)();$=Q?Q($):$;let X=new ny($,Z);if((0,Rt0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return JQ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return JQ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,At0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new ny(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Tt0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}k0$.Servers=JQ0});var KQ0=v((v0$)=>{Object.defineProperty(v0$,"__esModule",{value:!0});v0$.QueuedIteratorImpl=void 0;var Vt0=$K(),C0$=BG();class _0${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,Vt0.deferred)(),this.yields=[],this.iterClosed=(0,Vt0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new C0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new C0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Vt0.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}}v0$.QueuedIteratorImpl=_0$});var kt0=v((y0$)=>{Object.defineProperty(y0$,"__esModule",{value:!0});y0$.MuxSubscription=void 0;var A84=qO(),f0$=BG();class b0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,A84.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new f0$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new f0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}y0$.MuxSubscription=b0$});var St0=v((u0$)=>{Object.defineProperty(u0$,"__esModule",{value:!0});u0$.Heartbeat=void 0;var T84=$K();class h0${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,T84.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})}}u0$.Heartbeat=h0$});var vt0=v((i0$)=>{Object.defineProperty(i0$,"__esModule",{value:!0});i0$.DenoBuffer=i0$.MAX_SIZE=i0$.AssertionError=void 0;i0$.assert=m0$;i0$.concat=d0$;i0$.append=I84;i0$.readAll=q84;i0$.writeAll=M84;var R84=NG();class Ct0 extends Error{constructor($){super($);this.name="AssertionError"}}i0$.AssertionError=Ct0;function m0$($,Z="Assertion failed."){if(!$)throw new Ct0(Z)}var l0$=32768;i0$.MAX_SIZE=4294967294;function WQ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function d0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function I84($,Z){return d0$($,Uint8Array.of(Z))}class _t0{_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($){m0$($<=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=WQ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(R84.TE.encode($))}write($){let Z=this._grow($.byteLength);return WQ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)WQ0(this._buf.subarray(this._off),this._buf);else if(X+$>i0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,i0$.MAX_SIZE));WQ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,i0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(l0$);while(!0){let X=this.capacity-this.length<l0$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(X)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}i0$.DenoBuffer=_t0;function q84($){let Z=new _t0;return Z.readFrom($),Z.bytes()}function M84($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var bt0=v((r0$)=>{Object.defineProperty(r0$,"__esModule",{value:!0});r0$.cc=r0$.State=r0$.Parser=r0$.Kind=void 0;r0$.describe=x84;var xt0=vt0(),ft0=NG();r0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function x84($){let Z,Q="";switch($.kind){case r0$.Kind.MSG:Z="MSG";break;case r0$.Kind.OK:Z="OK";break;case r0$.Kind.ERR:Z="ERR",Q=ft0.TD.decode($.data);break;case r0$.Kind.PING:Z="PING";break;case r0$.Kind.PONG:Z="PONG";break;case r0$.Kind.INFO:Z="INFO",Q=ft0.TD.decode($.data)}return`${Z}: ${Q}`}function n0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var t0$=48,f84=57,ty=67108864;class o0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=r0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case r0$.State.OP_START:switch(Q){case r0$.cc.M:case r0$.cc.m:this.state=r0$.State.OP_M,this.hdr=-1,this.ma=n0$();break;case r0$.cc.H:case r0$.cc.h:this.state=r0$.State.OP_H,this.hdr=0,this.ma=n0$();break;case r0$.cc.P:case r0$.cc.p:this.state=r0$.State.OP_P;break;case r0$.cc.PLUS:this.state=r0$.State.OP_PLUS;break;case r0$.cc.MINUS:this.state=r0$.State.OP_MINUS;break;case r0$.cc.I:case r0$.cc.i:this.state=r0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_H:switch(Q){case r0$.cc.M:case r0$.cc.m:this.state=r0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_M:switch(Q){case r0$.cc.S:case r0$.cc.s:this.state=r0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MS:switch(Q){case r0$.cc.G:case r0$.cc.g:this.state=r0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MSG:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:this.state=r0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MSG_SPC:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:continue;default:this.state=r0$.State.MSG_ARG,this.as=Z}break;case r0$.State.MSG_ARG:switch(Q){case r0$.cc.CR:this.drop=1;break;case r0$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=r0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case r0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:r0$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=r0$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:r0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=r0$.State.MSG_END;break;case r0$.State.MSG_END:switch(Q){case r0$.cc.NL:this.drop=0,this.as=Z+1,this.state=r0$.State.OP_START;break;default:continue}break;case r0$.State.OP_PLUS:switch(Q){case r0$.cc.O:case r0$.cc.o:this.state=r0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PLUS_O:switch(Q){case r0$.cc.K:case r0$.cc.k:this.state=r0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PLUS_OK:switch(Q){case r0$.cc.NL:this.dispatcher.push({kind:r0$.Kind.OK}),this.drop=0,this.state=r0$.State.OP_START;break}break;case r0$.State.OP_MINUS:switch(Q){case r0$.cc.E:case r0$.cc.e:this.state=r0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MINUS_E:switch(Q){case r0$.cc.R:case r0$.cc.r:this.state=r0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MINUS_ER:switch(Q){case r0$.cc.R:case r0$.cc.r:this.state=r0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MINUS_ERR:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:this.state=r0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_MINUS_ERR_SPC:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:continue;default:this.state=r0$.State.MINUS_ERR_ARG,this.as=Z}break;case r0$.State.MINUS_ERR_ARG:switch(Q){case r0$.cc.CR:this.drop=1;break;case r0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:r0$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=r0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case r0$.State.OP_P:switch(Q){case r0$.cc.I:case r0$.cc.i:this.state=r0$.State.OP_PI;break;case r0$.cc.O:case r0$.cc.o:this.state=r0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PO:switch(Q){case r0$.cc.N:case r0$.cc.n:this.state=r0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PON:switch(Q){case r0$.cc.G:case r0$.cc.g:this.state=r0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PONG:switch(Q){case r0$.cc.NL:this.dispatcher.push({kind:r0$.Kind.PONG}),this.drop=0,this.state=r0$.State.OP_START;break}break;case r0$.State.OP_PI:switch(Q){case r0$.cc.N:case r0$.cc.n:this.state=r0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PIN:switch(Q){case r0$.cc.G:case r0$.cc.g:this.state=r0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_PING:switch(Q){case r0$.cc.NL:this.dispatcher.push({kind:r0$.Kind.PING}),this.drop=0,this.state=r0$.State.OP_START;break}break;case r0$.State.OP_I:switch(Q){case r0$.cc.N:case r0$.cc.n:this.state=r0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_IN:switch(Q){case r0$.cc.F:case r0$.cc.f:this.state=r0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_INF:switch(Q){case r0$.cc.O:case r0$.cc.o:this.state=r0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_INFO:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:this.state=r0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case r0$.State.OP_INFO_SPC:switch(Q){case r0$.cc.SPACE:case r0$.cc.TAB:continue;default:this.state=r0$.State.INFO_ARG,this.as=Z}break;case r0$.State.INFO_ARG:switch(Q){case r0$.cc.CR:this.drop=1;break;case r0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:r0$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=r0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===r0$.State.MSG_ARG||this.state===r0$.State.MINUS_ERR_ARG||this.state===r0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new xt0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===r0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new xt0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new xt0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case r0$.cc.SPACE:case r0$.cc.TAB:case r0$.cc.CR:case r0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],ty);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],ty);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}: ${ft0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case r0$.cc.SPACE:case r0$.cc.TAB:case r0$.cc.CR:case r0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],ty),this.ma.size=this.protoParseInt(Z[3],ty);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],ty),this.ma.size=this.protoParseInt(Z[4],ty);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<t0$||$[X]>f84)return-1;Q=Q*10+($[X]-t0$)}return Z!==void 0&&Q>Z?-1:Q}}r0$.Parser=o0$;r0$.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};r0$.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 UQ0=v((s0$)=>{Object.defineProperty(s0$,"__esModule",{value:!0});s0$.MsgHdrsImpl=void 0;s0$.canonicalMIMEHeaderKey=gt0;s0$.headers=g84;var a0$=NG(),ZK=qO(),FQ0=BG();function gt0($){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 FQ0.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 g84($=0,Z=""){if($===0&&Z!=="")throw FQ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw FQ0.InvalidArgumentError.format("description","is required");return new oy($,Z)}var yt0="NATS/1.0";class oy{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),G=[...X].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new oy,X=a0$.TD.decode($).split(`\r
|
|
1557
1557
|
`),Y=X[0];if(Y!==yt0){let G=Y.replace(yt0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(X.length>=1)X.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=yt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
1558
1558
|
${Z}: ${Q[X]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2982,7 +2982,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
2982
2982
|
${G.join(`
|
|
2983
2983
|
`)}`:Y}function aB6($){let Z=new Set;for(let Q of $)for(let X of Q.split(`
|
|
2984
2984
|
`)){let Y=X.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var pd$=200,cB6=12,mB6,pB6=300,LQ1=3;var EQ1=D(()=>{Xw();iT0();mB6={aheadBy:0,behindBy:0,files:[]}});function $O6($){if(!$||$.includes(".."))return!1;return eB6.test($)}function td$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!$O6(Z))return null;let{__resolveType:Q,...X}=$;return{resolveType:Z,payload:X}}function od$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var eB6;var rd$=D(()=>{eB6=/^[\w./@-]+$/});function xa($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function sd$($,Z,Q,X){if(!X.connectionId)throw new xv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new xv(H9);await cO({ctx:$,connectionId:X.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let U=H instanceof Error?H.message:H9;throw new xv(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await uK(X.connectionId,X.owner,X.name,$.db,$.vault).catch((H)=>{let{code:U,message:N}=i9$(H instanceof Error?H.message:String(H));throw U?new xv(N):H}),K=Kl($),F=await Z.proxyDaemonRequest(Q,"/_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 lO(F,ZO6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var ZO6=10485760,xv;var jQ1=D(()=>{UJ();fT0();Mn();Wp0();ay();xv=class xv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function XO6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!QO6.test(Z))throw Error(`Invalid branch name: ${$}`)}function yv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(GO6)])}async function WO6($,Z){let Q=$.var.studioContext,X=KJ(Z.branch),Y=$.req.query("thread")??X,G=Y&&Y===X?Z.branchThread:Y?await Q.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=vC(J?.metadata?.runtime);if(W)return W;let K=zD0(Z.virtualMcpMetadata),F=K==="cms"?await e71(Q,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",U=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(U&&J)Qt(Q,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 KO6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await FX($.var.studioContext)}catch{return null}}function gv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Bl($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),X=$.var.studioContext,Y=xa(Z,Q);if(!Y)throw new m4(404,"AUTH","repo","Project has no GitHub repository");let G=t(X);return bT0(X,G.id,Y)}function zQ1($,Z){if(Z instanceof yA0)return $.json({error:Z.message},429,{...I5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof m4){let X=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},X,I5)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},502,I5)}async function $m$($,Z,Q){let X;try{X=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await X.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:X.status,headers:{"content-type":X.headers.get("content-type")??"application/json"}})}async function Zm$($){try{let Z=await Bl($),Q=await pT0(Z,$.get("vmClaim").branch);return $.json(Q,200,I5)}catch(Z){return zQ1($,Z)}}function ya($,Z){let X=(oT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=X.catch(()=>{});return oT0.set($,Y),Y.finally(()=>{if(oT0.get($)===Y)oT0.delete($)}),X}async function eZ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,I5);let X=Q?.runner??gv($);if(X instanceof Response)return X;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=Q?.method??"POST",K=null,F=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,F.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=Q?.signal,U={method:W,headers:F,body:K,...H?{signal:H}:{}},N=async()=>{let B=await X.proxyDaemonRequest(Y,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await X.adoptLiveClaim({userId:G,projectRef:J},Y))B=await X.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=Q?.redactRepoDir?FO6(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 FO6($){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 rT0($,Z,Q,X="GET",Y){let G=await $.proxyDaemonRequest(Z,Q,{method:X,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,Q,{method:X,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 HO6($){return Qm$.includes($)}var QO6,ad$=524288,YO6=65536,GO6=1e4,ed$=2000,JO6,oT0,I5,Qm$,Xm$=()=>{let $=new Y1;$.use("/:virtualMcpId/:branch/*",JO6),$.post("/:virtualMcpId/:branch/write",(Q)=>eZ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>eZ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>eZ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>eZ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>eZ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>eZ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>eZ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:yv(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let X=Q.req.param("step");if(!X||!HO6(X))return Q.json({error:`step must be one of: ${Qm$.join(", ")}`},400);let Y=Q.get("vmClaim"),G=await e71(Q.var.studioContext,{claimName:Y.claimName})==="gone"?null:await KO6(Q);if(!G)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,I5);if(X==="start"){let J=t(Q.var.studioContext),W=ry(Y.virtualMcpMetadata);try{await h70({ctx:Q.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 Q.json({error:`Failed to push env to daemon: ${F}`},502)}}return eZ(Q,`/_sandbox/setup/${X}`,{signal:Q.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let X=Q.get("vmClaim");if(!X.runner)return YN(Q,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Xd$(Q,{ctx:Q.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Zm$(Q);return Z(Q)});let Z=(Q)=>eZ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(ed$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Zm$(Q);return eZ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(ed$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")try{let Y=await Q.req.json().catch(()=>({})),G=await Bl(Q),J=await nT0(G,X.branch,Y.base);return Q.json(J,200,I5)}catch(Y){return zQ1(Q,Y)}return eZ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,I5);let X=gv(Q);if(X instanceof Response)return X;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=Q.get("vmClaim"),W=Q.var.studioContext;return ya(Y,async()=>{try{await $Q1(W,X,Y);let K=xa(G,J);if(K)await sd$(W,X,Y,K)}catch(K){if(K instanceof xv)return Q.json({error:K.message},403,I5);let F=K instanceof Error?K.message:String(K);return Q.json({error:F},502,I5)}return eZ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return ya(X.claimName,async()=>{let Y=await Q.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return Q.json({error:"filepaths is required"},400,I5);try{let J=await Bl(Q);return await nd$(J,X.branch,G),Q.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 Q.json({error:K},W,I5)}});return ya(X.claimName,()=>eZ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return ya(X.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Bl(Q),F=W.base??await K.getDefaultBranch();return await tT0(K,X.branch,F),Q.json({ok:!0},200,I5)}catch(W){return zQ1(Q,W)}});let Y=gv(Q);if(Y instanceof Response)return Y;let{claimName:G}=Q.get("vmClaim"),J=Q.var.studioContext;return ya(G,async()=>{try{await $Q1(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,I5)}return eZ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",s5({maxSize:ad$,onError:(Q)=>Q.json({error:"Payload too large"},413,I5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=gv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=XQ1(H)&&N?[H,U]:Y?await Promise.all([rT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),rT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Bl(Q);return Promise.all([pT0(L,X.branch),nT0(L,X.branch)])})(),w=await Kd$(K,B,O);return Q.json(w,200,I5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,I5);return Q.json({error:H},502,I5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",s5({maxSize:ad$,onError:(Q)=>Q.json({error:"Payload too large"},413,I5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=gv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=XQ1(H)&&N?[H,U]:Y?await Promise.all([rT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),rT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Bl(Q);return Promise.all([pT0(L,X.branch),nT0(L,X.branch)])})(),w=await Hd$(K,B,O,typeof F.language==="string"?F.language:void 0);return Q.json(w,200,I5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,I5);return Q.json({error:H},502,I5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let X=gv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G=Q.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Q.json({error:"Path not allowed"},403);let J;try{J=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return $m$(Q,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",s5({maxSize:YO6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let X=gv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G;try{G=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let J;try{J=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return Q.json({error:"Invalid JSON body"},400);let W=td$(J);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=od$(G,W.resolveType);return $m$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Ym$=D(()=>{h$();_F();Wl();a71();Pn();$d$();FJ();Dg();Zd$();e3();Qd$();Yd$();Yp0();In();JQ1();Ud$();KQ1();Xw();EQ1();rd$();jQ1();QO6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;JO6=vT0(async($,Z)=>{let Q=$.var.studioContext;try{o(Q)}catch{return $.json({error:"Unauthorized"},401)}let X=t0(Q);if(!X)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(Q)}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{XO6(J)}catch(w){let L=w instanceof Error?w.message:String(w);return $.json({error:L},400)}let W=await Q.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=jn({orgId:Y.id,virtualMcpId:G,branch:J}),F=await ai0(Q,J),H=ei0(F,X),U=ec$({userId:H,projectRef:K}),N=W.metadata??null,B=await WO6($,{claimName:U,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:N,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:X,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 FX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:X,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z()});oT0=new Map;I5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Qm$=["clone","install","start"]});function Gm$($,Z,Q){let X=PQ1.get($);if(!X)X={pending:null,running:!1},PQ1.set($,X);if(!X.pending)X.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=X.pending;Y.deps=Z;for(let[J,W]of Object.entries(Q.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of Q.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!X.running)NO6($,X);return G}async function NO6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let X=await BO6(Q);for(let Y of Q.resolvers)Y(X)}catch(X){for(let Y of Q.rejecters)Y(X)}}}finally{if(Z.running=!1,!Z.pending)PQ1.delete($)}}async function BO6($){let{client:Z,branch:Q,packagePath:X}=$.deps;for(let Y=0;;Y++){let G=await Nl(Z,Q),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,X),K=DQ1(W,X),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,w]of $.set){let L=wQ1(K,O),E=`${JSON.stringify(w,null,2)}
|
|
2985
|
-
`,j=await Z.createBlob(E);await dd$(Z.owner,Z.repo,j,E);let z=L[0]??`${mT0(X)}/${HQ1(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 wQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.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}=_a(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,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:OO6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=UO6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function OO6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return ci0(X,$.deps.coAuthor)}var UO6=3,PQ1;var Jm$=D(()=>{f70();yT0();s8();Xw();iT0();PQ1=new Map});import{createHmac as Wm$,randomBytes as DO6,timingSafeEqual as wO6}from"crypto";function Km$(){if(sT0)return sT0;let $;try{let Z=k0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return sT0=$?Buffer.from($):DO6(32),sT0}function AQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+LO6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=Wm$("sha256",Km$()).update(X).digest("base64url");return`${X}.${Y}`}function Fm$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(Wm$("sha256",Km$()).update(X).digest("base64url"));if(Y.length!==G.length||!wO6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"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 LO6=21600000,sT0=null;var Hm$=D(()=>{D$()});import{z as Ol}from"zod";function jO6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&EO6.test($)}function Dm$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ga($){let Z=$.get("decofileScope");return bT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ha($,Z){if(Z instanceof m4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function wm$(){let $=new Y1;return $.use("/:virtualMcpId/:branch",Om$),$.use("/:virtualMcpId/:branch/*",Om$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await md$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.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(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=AQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Dm$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return ha(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await ga(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}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 ha(Z,Y)}}),$.patch("/:virtualMcpId/:branch",PO6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=AO6.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{xT0(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(FQ1(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await ga(Z),W=await Gm$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Kl(X)},G),K=AQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Dm$(Z)})}catch(J){return ha(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof m4&&W.status===409))throw W;await tT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.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 X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return ha(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.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(X){return ha(Z,X)}}),$}var EO6,Um$=500,Nm$=1048576,Bm$=1024,zO6=8388608,PO6,AO6,Om$;var Lm$=D(()=>{Mt0();yT0();h$();_F();a71();fT0();jQ1();KQ1();Jm$();Hm$();EQ1();Xw();iT0();EO6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;PO6=s5({maxSize:zO6,onError:($)=>$.json({error:"Payload too large"},413)}),AO6=Ol.object({set:Ol.record(Ol.string(),Ol.unknown()).optional(),delete:Ol.array(Ol.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)<=Um$,{message:`Patch cannot touch more than ${Um$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Nm$),{message:`Each block must be at most ${Nm$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Bm$),{message:`Each block key must be at most ${Bm$} characters`}),Om$=vT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)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(!jO6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.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||!Fm$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!jD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=xa(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var Em$=($)=>{let Z=new Y1;if(Z.use("*",Av),Z.use("*",Kh$),Z.route("/",nA0()),Z.route("/",_h$()),Z.route("/",uc$()),Z.route("/",yc$()),Z.route("/",ST0()),Z.route("/tools",nc$()),Z.route("/",mc$()),Z.route("/",Oc$({kvStorage:$.kvStorage})),Z.route("/",Nc$()),Z.route("/fs",kc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Xm$()),Z.route("/decofile",wm$()),Z.route("/",fc$()),Z.route("/",Sc$()),Z.route("/deco-sites",oA0()),Z.route("/hosting",Ph$()),Z.route("/monitor",kh$()),Z.route("/sso",lA0()),Z.route("/",CT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",wh$()),$.mountDevAssets)Z.route("/dev-assets",eA0({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("/",bx$()),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",_c$()),Z.route("/mcp",rL0()),Z.route("/mcp/self",VT0()),Z.route("/mcp",eL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var jm$=D(()=>{h$();Fh$();bA0();Lh$();AZ1();Ah$();Vh$();$T0();Ya();LZ1();Bc$();Dc$();Vc$();Cc$();Wo();UZ1();$E0();i71();vc$();bc$();gc$();lc$();ic$();n71();tc$();t71();sL0();Ym$();Lm$()});function TO6($){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 RO6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},zm$=()=>{let $=new Y1;return $.use("*",RO6),$.get("/",async(Z)=>{let Q=k0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:TO6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Pm$=D(()=>{h$();D$();mP0()});import{z as I1}from"zod";function gF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function fO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function bO6($,Z,Q){try{return JSON.parse($)}catch{throw new Rm$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function xO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:bO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function yO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?eY(Q.function.parameters):eY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function gO6($){if(!$)return;return{openai:{response_format:$}}}function hO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Am$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Tm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var IO6=256,qO6,MO6,kO6,VO6,SO6,CO6,_O6,vO6,Rm$,Im$,qm$;var Mm$=D(()=>{h4();h$();Wl();xU();qO6=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),MO6=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),kO6=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(MO6).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),VO6=I1.object({type:I1.literal("text")}),SO6=I1.object({type:I1.literal("json_object")}),CO6=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),_O6=I1.union([VO6,SO6,CO6]),vO6=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(kO6),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array(qO6).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:_O6.optional(),user:I1.string().optional()});Rm$=class Rm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Im$=new Y1;Im$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(gF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=vO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=fO6(G.model);if(!J)return $.json(gF("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)=>jL(j.providerId));if(!E)return $.json(gF("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(gF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=xO6(G.messages),N=G.tools?yO6(G.tools):void 0,B=gO6(G.response_format),O=hO6(),w=Math.floor(Date.now()/1000);if(G.stream)return YN($,async(L)=>{let E=Am$(H,U,N,G,B,$.req.raw.signal);try{let j=yO(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>=IO6)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:Tm$(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=Am$(H,U,N,G,B,$.req.raw.signal),E=await bO(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:Tm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(gF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(gF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(gF(Y.message,"server_error"),500)}});qm$=Im$});function uO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function km$(){let $=new Y1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.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","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(D0$(U)!==G)continue;if(!uO6(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 Vm$=D(()=>{h$();iH()});var Cm$;var Sm$=D(()=>{Cm$={name:"decocms",version:"4.331.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 dO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cO6}}var _m$,cO6="https://ph.studio.decocms.com",vm$;var fm$=D(()=>{h$();N90();J_();h5();D$();e91();Sm$();_m$=new Y1;_m$.get("/",($)=>{let Z={version:Cm$.version,theme:Cp1(),...hH().logo&&{logo:hH().logo},...TU()&&{internalUrl:Zv1()},...k0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!k0().firecrawlApiKey,hostingEnabled:!!k0().controlplaneRestUrl&&!!k0().controlplaneServiceToken,hostingControlPlaneGa:k0().hostingControlPlaneGa,monitorEnabled:!!k0().clickhouseAnalyticsUrl&&!!k0().clickhouseAnalyticsPassword,monitorGa:k0().monitorGa,auth:Lg$(),posthog:dO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:na()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});vm$=_m$});function Dl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function TQ1($){return(Dl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function xm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Dl($))}&sz=${Z}`}function bm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function ym$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?bm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):bm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var hv,mO6,iO6,pO6,nO6,gm$;var hm$=D(()=>{hv=c0.enum(["good","bad","neutral"]),mO6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:hv.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),iO6=c0.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},c0.array(mO6)),pO6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},nO6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:hv.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:hv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:hv.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:hv.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(iO6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:hv.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:hv.optional()})).min(1)})]),gm$=c0.object({...pO6,template:nO6})});function aT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=gm$.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),X=Q.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:X},slides:Q},drops:Z}}var RQ1=D(()=>{hm$()});import{join as um$}from"path";async function oO6($){try{let Z=await fetch(`${jK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=aT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||TQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function rO6($,Z){let Q=Dl($),X=Z?.brand?.trim()||TQ1(Q),Y=xm$(Q,128),J=`${(k0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=ym$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${RG(W)}</title>`,`<meta name="description" content="${RG(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="${RG(W)}" />`,`<meta property="og:description" content="${RG(K)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(W)}" />`,`<meta name="twitter:description" content="${RG(K)}" />`,`<meta name="twitter:image" content="${RG(F)}" />`,`<meta name="twitter:image:alt" content="${RG(H)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
|
|
2985
|
+
`,j=await Z.createBlob(E);await dd$(Z.owner,Z.repo,j,E);let z=L[0]??`${mT0(X)}/${HQ1(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 wQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.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}=_a(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,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:OO6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=UO6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function OO6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return ci0(X,$.deps.coAuthor)}var UO6=3,PQ1;var Jm$=D(()=>{f70();yT0();s8();Xw();iT0();PQ1=new Map});import{createHmac as Wm$,randomBytes as DO6,timingSafeEqual as wO6}from"crypto";function Km$(){if(sT0)return sT0;let $;try{let Z=k0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return sT0=$?Buffer.from($):DO6(32),sT0}function AQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+LO6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=Wm$("sha256",Km$()).update(X).digest("base64url");return`${X}.${Y}`}function Fm$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(Wm$("sha256",Km$()).update(X).digest("base64url"));if(Y.length!==G.length||!wO6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"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 LO6=21600000,sT0=null;var Hm$=D(()=>{D$()});import{z as Ol}from"zod";function jO6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&EO6.test($)}function Dm$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ga($){let Z=$.get("decofileScope");return bT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ha($,Z){if(Z instanceof m4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function wm$(){let $=new Y1;return $.use("/:virtualMcpId/:branch",Om$),$.use("/:virtualMcpId/:branch/*",Om$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await md$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.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(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=AQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Dm$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return ha(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await ga(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}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 ha(Z,Y)}}),$.patch("/:virtualMcpId/:branch",PO6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=AO6.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{xT0(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(FQ1(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await ga(Z),W=await Gm$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Kl(X)},G),K=AQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Dm$(Z)})}catch(J){return ha(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof m4&&W.status===409))throw W;await tT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.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 X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return ha(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await ga(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.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(X){return ha(Z,X)}}),$}var EO6,Um$=500,Nm$=1048576,Bm$=1024,zO6=8388608,PO6,AO6,Om$;var Lm$=D(()=>{Mt0();yT0();h$();_F();a71();fT0();jQ1();KQ1();Jm$();Hm$();EQ1();Xw();iT0();EO6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;PO6=s5({maxSize:zO6,onError:($)=>$.json({error:"Payload too large"},413)}),AO6=Ol.object({set:Ol.record(Ol.string(),Ol.unknown()).optional(),delete:Ol.array(Ol.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)<=Um$,{message:`Patch cannot touch more than ${Um$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Nm$),{message:`Each block must be at most ${Nm$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Bm$),{message:`Each block key must be at most ${Bm$} characters`}),Om$=vT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)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(!jO6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.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||!Fm$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!jD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=xa(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var Em$=($)=>{let Z=new Y1;if(Z.use("*",Av),Z.use("*",Kh$),Z.route("/",nA0()),Z.route("/",_h$()),Z.route("/",uc$()),Z.route("/",yc$()),Z.route("/",ST0()),Z.route("/tools",nc$()),Z.route("/",mc$()),Z.route("/",Oc$({kvStorage:$.kvStorage})),Z.route("/",Nc$()),Z.route("/fs",kc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Xm$()),Z.route("/decofile",wm$()),Z.route("/",fc$()),Z.route("/",Sc$()),Z.route("/deco-sites",oA0()),Z.route("/hosting",Ph$()),Z.route("/monitor",kh$()),Z.route("/sso",lA0()),Z.route("/",CT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",wh$()),$.mountDevAssets)Z.route("/dev-assets",eA0({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("/",bx$()),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",_c$()),Z.route("/mcp",rL0()),Z.route("/mcp/self",VT0()),Z.route("/mcp",eL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var jm$=D(()=>{h$();Fh$();bA0();Lh$();AZ1();Ah$();Vh$();$T0();Ya();LZ1();Bc$();Dc$();Vc$();Cc$();Wo();UZ1();$E0();i71();vc$();bc$();gc$();lc$();ic$();n71();tc$();t71();sL0();Ym$();Lm$()});function TO6($){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 RO6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},zm$=()=>{let $=new Y1;return $.use("*",RO6),$.get("/",async(Z)=>{let Q=k0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:TO6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Pm$=D(()=>{h$();D$();mP0()});import{z as I1}from"zod";function gF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function fO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function bO6($,Z,Q){try{return JSON.parse($)}catch{throw new Rm$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function xO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:bO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function yO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?eY(Q.function.parameters):eY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function gO6($){if(!$)return;return{openai:{response_format:$}}}function hO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Am$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Tm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var IO6=256,qO6,MO6,kO6,VO6,SO6,CO6,_O6,vO6,Rm$,Im$,qm$;var Mm$=D(()=>{h4();h$();Wl();xU();qO6=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),MO6=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),kO6=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(MO6).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),VO6=I1.object({type:I1.literal("text")}),SO6=I1.object({type:I1.literal("json_object")}),CO6=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),_O6=I1.union([VO6,SO6,CO6]),vO6=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(kO6),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array(qO6).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:_O6.optional(),user:I1.string().optional()});Rm$=class Rm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Im$=new Y1;Im$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(gF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=vO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=fO6(G.model);if(!J)return $.json(gF("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)=>jL(j.providerId));if(!E)return $.json(gF("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(gF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=xO6(G.messages),N=G.tools?yO6(G.tools):void 0,B=gO6(G.response_format),O=hO6(),w=Math.floor(Date.now()/1000);if(G.stream)return YN($,async(L)=>{let E=Am$(H,U,N,G,B,$.req.raw.signal);try{let j=yO(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>=IO6)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:Tm$(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=Am$(H,U,N,G,B,$.req.raw.signal),E=await bO(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:Tm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(gF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(gF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(gF(Y.message,"server_error"),500)}});qm$=Im$});function uO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function km$(){let $=new Y1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.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","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(D0$(U)!==G)continue;if(!uO6(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 Vm$=D(()=>{h$();iH()});var Cm$;var Sm$=D(()=>{Cm$={name:"decocms",version:"4.332.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 dO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cO6}}var _m$,cO6="https://ph.studio.decocms.com",vm$;var fm$=D(()=>{h$();N90();J_();h5();D$();e91();Sm$();_m$=new Y1;_m$.get("/",($)=>{let Z={version:Cm$.version,theme:Cp1(),...hH().logo&&{logo:hH().logo},...TU()&&{internalUrl:Zv1()},...k0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!k0().firecrawlApiKey,hostingEnabled:!!k0().controlplaneRestUrl&&!!k0().controlplaneServiceToken,hostingControlPlaneGa:k0().hostingControlPlaneGa,monitorEnabled:!!k0().clickhouseAnalyticsUrl&&!!k0().clickhouseAnalyticsPassword,monitorGa:k0().monitorGa,auth:Lg$(),posthog:dO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:na()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});vm$=_m$});function Dl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function TQ1($){return(Dl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function xm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Dl($))}&sz=${Z}`}function bm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function ym$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?bm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):bm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var hv,mO6,iO6,pO6,nO6,gm$;var hm$=D(()=>{hv=c0.enum(["good","bad","neutral"]),mO6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:hv.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),iO6=c0.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},c0.array(mO6)),pO6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},nO6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:hv.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:hv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:hv.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:hv.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(iO6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:hv.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:hv.optional()})).min(1)})]),gm$=c0.object({...pO6,template:nO6})});function aT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=gm$.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),X=Q.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:X},slides:Q},drops:Z}}var RQ1=D(()=>{hm$()});import{join as um$}from"path";async function oO6($){try{let Z=await fetch(`${jK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=aT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||TQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function rO6($,Z){let Q=Dl($),X=Z?.brand?.trim()||TQ1(Q),Y=xm$(Q,128),J=`${(k0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=ym$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${RG(W)}</title>`,`<meta name="description" content="${RG(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="${RG(W)}" />`,`<meta property="og:description" content="${RG(K)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(W)}" />`,`<meta name="twitter:description" content="${RG(K)}" />`,`<meta name="twitter:image" content="${RG(F)}" />`,`<meta name="twitter:image:alt" content="${RG(H)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
|
|
2986
2986
|
`)}function sO6($,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}
|
|
2987
2987
|
</head>`)}function lm$($){let Z=new Y1;return Z.get("/:domain/og.png",async(Q)=>{let X=Dl(Q.req.param("domain")),Y=async()=>{let G=$?Bun.file(um$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return Q.notFound();return Q.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(`${jK({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(aO6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return Q.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?um$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return Q.notFound();let J=await G.text();try{let W=await oO6(Dl(X)),K=rO6(X,W);return Q.html(sO6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(J)}}),Z}var tO6=2500,aO6=1e4;var cm$=D(()=>{h$();RQ1();RE();D$()});function ua($,Z){return fetch(`${jK({})}${$}`,Z)}async function eO6($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",G=await ua(`/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}=aT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var $D6,JN,dm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},mm$;var im$=D(()=>{h$();oY();RE();RQ1();$D6=new Set(["complete","errored","terminated","unknown"]),JN=new Y1;JN.use("*",async($,Z)=>{let Q=await $8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});JN.use("/link-token/*",dm$);JN.use("/suggest",dm$);JN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await eO6(Z,X,Y);if($.header("Cache-Control","private, no-store"),Q||!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)}});JN.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let J=await ua("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${TE({})}`},body:JSON.stringify({url:X,...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)}});JN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ua(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${TE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",G={done:$D6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});JN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ua(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});JN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ua(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});mm$=JN});import{createHmac as ZD6,timingSafeEqual as QD6}from"crypto";function nm$($,Z,Q,X=Date.now()){if(!Z||!Q)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(X/1000-J)>XD6)return!1;let W=ZD6("sha256",Q).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&QD6(K,H)})}function tm$($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=pJ(Z),X=pJ(pJ(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!X)return null;return{id:hF(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:X}}}function om$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function hF($){return typeof $==="string"?$:void 0}function pJ($){return typeof $==="object"&&$!==null?$:void 0}function eT0($){return typeof $==="number"?new Date($*1000):null}function MQ1($){return hF($)??hF(pJ($)?.id)}function YD6($){return MQ1($.subscription)??hF(pJ(pJ($.parent)?.subscription_details)?.subscription)}function GD6($){let Z=eT0($.current_period_end);if(Z)return Z;let Q=pJ($.items)?.data;if(!Array.isArray(Q))return null;let X=0;for(let Y of Q){let G=pJ(Y)?.current_period_end;if(typeof G==="number"&&G>X)X=G}return X>0?new Date(X*1000):null}function IQ1($,Z){let Q=eT0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function qQ1($,Z){let Q=eT0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function JD6($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let X=hF(pJ(Q.metadata)?.orgId);if(!X)return{handled:!1,reason:"no orgId"};if(hF(pJ(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(hF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=hF(Q.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:X}),{handled:!1,reason:"topup session without id"};let W=Number(pJ(Q.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:X,creditCents:pJ(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:X,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(hF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(X);if(!Y)return{handled:!1,reason:"unknown org"};let G=MQ1(Q.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(IQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(X,{stripeCustomerId:MQ1(Q.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:qQ1(Z,Y)}),{handled:!0,organizationId:X}}case"customer.subscription.updated":case"customer.subscription.deleted":{let X=hF(Q.id);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&IQ1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":om$(Q.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:GD6(Q),...G&&{stripeSubscriptionId:null},lastStripeEventAt:qQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let X=YD6(Q);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};if(IQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:eT0(Q.period_end),lastStripeEventAt:qQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function WD6($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.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:om$(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function pm$($,Z){let Q=WD6($,Z);if(!Q)return;mY({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:ht1(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function rm$($){let Z=new DK(s$().db),Q=await JD6(Z,$);if(!(Q.handled&&Q.topUp))pm$($,Q);if(Q.handled&&Q.topUp)await Wz$({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),pm$($,Q);if(!Q.handled&&Q.orphanSubscriptionId)try{await D1$(Q.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:Q.orphanSubscriptionId,eventId:$.id})}catch(X){if(!(X instanceof rY&&(X.status===400||X.status===404)))throw X}return Q}var XD6=300;var sm$=D(()=>{aG();f4();t50();xE();b11()});var KD6=1048576,kQ1;var am$=D(()=>{h$();_F();D$();sm$();kQ1=new Y1;kQ1.post("/webhook",s5({maxSize:KD6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=k0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!nm$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=tm$(Q);if(!Y)return $.json({error:"invalid payload"},400);let G=await rm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as FD6}from"crypto";function UD6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return FD6(Buffer.from(Y),Buffer.from(X))}var HD6=5242880,VQ1;var em$=D(()=>{h$();_F();e3();VQ1=new Y1;VQ1.post("/webhook",s5({maxSize:HD6,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 Q=await $.req.text();if(!UD6(Q,$.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 X;try{X=JSON.parse(Q)}catch{return $.json({error:"invalid payload"},400)}let Y=X.ref,G=X.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await It0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function $i$($){let Z=new tU($.db,new uQ($.encryptionKey)),Q=new Y1;return Q.get("/attachments/:token",async(X)=>{let Y=JF$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let G=await Z.getByOrg(Y.organizationId);if(!G)return X.json({error:"Jira is not connected"},404);let W=await new WG(G.siteUrl,G.email,G.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.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})}),Q}var Zi$=D(()=>{h$();sN();Po0();mC()});function Qi$($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,X=Z.issue?.key,Y=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof X!=="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(Q),issueKey:X,toStatus:G.toString,changelogId:String(Y)}}function Xi$($,Z,Q){let X=[];for(let Y of Z){if(new Date(Y.created).getTime()<Q.getTime())continue;let G=Y.items.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")continue;X.push({issueId:$.id,issueKey:$.key,toStatus:G.toString,changelogId:Y.id})}return X.sort((Y,G)=>Number(Y.changelogId)-Number(G.changelogId))}function OD6($){return`Jira ${$.key}: ${$.summary}`}async function $20($,Z,Q){if(!Z.enabled)return"disabled";let X=Z.organizationId,Y=await $.storage.jiraIntegrations.getAutomation(X,Q.toStatus);if(!Y)return"no_rule";let G=new WG(Z.siteUrl,Z.email,Z.apiToken),J=await Bw0(G,Z.siteUrl,Q.issueId),W=await DD6($,Z,Q,J);if(!await $.storage.jiraIntegrations.claimTrigger(X,Q.issueId,Q.changelogId))return"duplicate";let F=await $.storage.taskBoard.update(W.id,X,{assigneeId:d$,assignedBy:Z.createdBy},Z.createdBy);try{await YW($,F,{instruction:Y.prompt??ND6,source:{kind:"jira",issueKey:J.key,title:OD6(J),body:`${Ow0(J)}
|
|
2988
2988
|
|